Skip to content

Commit 40905f4

Browse files
committed
feat: stuff
1 parent 9e9ccb1 commit 40905f4

File tree

14 files changed

+829040
-3645
lines changed

14 files changed

+829040
-3645
lines changed

.gitignore

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
11
updater/target/
22
updater/confs/
33

4-
banana/
5-
6-
lua/pineapple/banana*

banana/pineapple/help.nml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div> help </div>

banana/pineapple/home.nml

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div id="themecont">
2+
<style>
3+
/* #themecont > div { */
4+
/* padding-left: 2ch; */
5+
/* } */
6+
/* #themecont { */
7+
/* width: 20%; */
8+
/* } */
9+
#themecont .themes {
10+
padding-left: 2ch;
11+
}
12+
#themecont {
13+
/* padding-left: 2ch; */
14+
}
15+
Preview {
16+
position: absolute;
17+
}
18+
</style>
19+
20+
<script src="pineapple.banana.home"> </script>
21+
</div>

banana/pineapple/index.nml

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<nml>
2+
<head>
3+
<style>
4+
#title {
5+
text-align: center;
6+
7+
}
8+
nml {
9+
top: 5%;
10+
left: 5%;
11+
width: 40%;
12+
height: 90%;
13+
}
14+
15+
#tabline > div {
16+
hl-bg: hl-extract(bg, CursorLine);
17+
padding: 1ch 0ch;
18+
width: 20ch;
19+
margin-right: 1ch;
20+
}
21+
#tabline > div.selected {
22+
hl-bg: hl-extract(bg, Visual);
23+
}
24+
25+
.keycode {
26+
hl-fg: hl-extract(fg, Operator);
27+
}
28+
#tabline {
29+
padding: 1ch 0ch;
30+
display: flex;
31+
}
32+
#dispcont {
33+
display: flex;
34+
}
35+
#cont {
36+
padding-left: 2ch;
37+
38+
}
39+
</style>
40+
</head>
41+
<body>
42+
<template import="pineapple/preview"></template>
43+
<div id="title">
44+
~~ Pineapple ~~
45+
</div>
46+
<div id="tabline">
47+
<div remap="H" class="selected" page="home"> Home </div>
48+
<div remap="I" page="installed"> Installed </div>
49+
<div remap="?" page="help"> Help </div>
50+
</div>
51+
<div id="topline"></div>
52+
<div id="cont">
53+
</div>
54+
<script src="banana.helpers.qtoclose"></script>
55+
<script src="pineapple.banana"></script>
56+
</body>
57+
</nml>

banana/pineapple/installed.nml

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<div> Installed </div>

banana/pineapple/preview.nml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<div>
2+
<template name="Preview">
3+
<div id="background">
4+
5+
</div>
6+
<script src="pineapple.banana.preview"></script>
7+
</template>
8+
</div>

lua/pineapple/banana/home.lua

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
local data = require("pineapple.dataManager")
2+
---@param document Banana.Instance
3+
return function(document)
4+
local els = data.getCleanData()
5+
local cont = document:getScriptParams().selfNode
6+
if cont == nil then
7+
error("idk")
8+
end
9+
for _, v in ipairs(els) do
10+
local div = document:createElement("div")
11+
local nameNode = document:createElement("div")
12+
nameNode:appendTextNode(v.name)
13+
14+
div:appendChild(nameNode)
15+
local hidden = true
16+
local first = true
17+
local items
18+
nameNode:attachRemap("n", "<CR>", { "line-hover" }, function()
19+
if first then
20+
items = document:createElement("div")
21+
items:addClass("themes")
22+
for i, t in ipairs(v.vimColorSchemes) do
23+
local theme = document:createElement("div")
24+
theme:setTextContent(t.name)
25+
theme:attachRemap("n", "<CR>", { "line-hover" }, function()
26+
local previews = document:getElementsByTag("Preview")
27+
for _, preview in ipairs(previews) do
28+
preview:remove()
29+
end
30+
31+
local preview = document:createElement("Preview")
32+
preview:setData("colorscheme", v)
33+
preview:setData("themeid", i)
34+
local c = vim.api.nvim_win_get_cursor(0)
35+
preview:setStyleValue("left", "30%")
36+
preview:setStyleValue("top", c[1] .. "ch")
37+
cont:appendChild(preview)
38+
-- previewCont:setStyleValue("padding-top", (c[1] - cont:_boundTop() - 3) .. "ch")
39+
end)
40+
items:appendChild(theme)
41+
end
42+
items:setStyleValue("display", "none")
43+
div:appendChild(items)
44+
first = false
45+
end
46+
hidden = not hidden
47+
if hidden then
48+
items:setStyleValue("display", "none")
49+
else
50+
items:setStyleValue("display", "initial")
51+
end
52+
end, {})
53+
cont:appendChild(div)
54+
end
55+
end

lua/pineapple/banana/init.lua

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
local _ = require("banana")
2+
---@param document Banana.Instance
3+
return function(document)
4+
local topline = document:getElementById("topline")
5+
local linestr = string.rep("-", topline:getWidth())
6+
topline:setTextContent(linestr)
7+
8+
local remapels = document:querySelectorAll("#tabline > div")
9+
for _, v in ipairs(remapels) do
10+
local child = document:createElement("span")
11+
child:addClass("keycode")
12+
child:setTextContent(" (" .. v:getAttribute("remap") .. ")")
13+
v:appendChild(child)
14+
end
15+
16+
17+
local cont = document:getElementById("cont")
18+
local tablines = document:querySelectorAll("#tabline > div")
19+
20+
for _, v in ipairs(tablines) do
21+
document:body():attachRemap("n", v:getAttribute("remap") or "A", {}, function()
22+
document:loadNmlTo("pineapple/" .. v:getAttribute("page"), cont, true, true)
23+
local els = document:getElementsByClassName("selected")
24+
for _, el in ipairs(els) do
25+
el:removeClass("selected")
26+
end
27+
v:addClass("selected")
28+
end, {})
29+
end
30+
31+
document:loadNmlTo("pineapple/home", cont, true, true)
32+
end

lua/pineapple/banana/preview.lua

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
local _ = require("banana")
2+
local code = require("pineapple.example-code")
3+
---@param document Banana.Instance
4+
return function(document)
5+
local cont = document:getElementById("background")
6+
local self = document:getPrimaryNode()
7+
---@type PineappleDataElement?
8+
local colorscheme = self:getData("colorscheme")
9+
---@type number?
10+
local themeid = self:getData("themeid")
11+
if colorscheme == nil or themeid == nil then
12+
print("Missing colorscheme or themid")
13+
return
14+
end
15+
for _, line in ipairs(code) do
16+
local l = document:createElement("div")
17+
for _, token in ipairs(line) do
18+
local tok = document:createElement("span")
19+
tok:setTextContent(token[1])
20+
local bg = colorscheme.vimColorSchemes[themeid].data.dark[token[2]]
21+
if bg == nil then
22+
bg = colorscheme.vimColorSchemes[themeid].data.dark["NormalBg"] or "#ffffff"
23+
end
24+
tok:setStyleValue("hl-bg", bg)
25+
local fg = colorscheme.vimColorSchemes[themeid].data.dark[token[4]] or
26+
colorscheme.vimColorSchemes[themeid].data.dark[token[3]]
27+
if fg == nil then
28+
fg = colorscheme.vimColorSchemes[themeid].data.dark["NormalFg"] or "#ffffff"
29+
end
30+
tok:setStyleValue("hl-fg", fg)
31+
l:appendChild(tok)
32+
end
33+
cont:appendChild(l)
34+
end
35+
end

0 commit comments

Comments
 (0)