@e280/quay 0.0.0-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +117 -0
  3. package/package.json +57 -0
  4. package/s/cellar/cask.ts +18 -0
  5. package/s/cellar/cellar.test.ts +100 -0
  6. package/s/cellar/cellar.ts +53 -0
  7. package/s/cellar/forklift.ts +9 -0
  8. package/s/cellar/index.ts +7 -0
  9. package/s/cellar/memory-forklift.ts +29 -0
  10. package/s/cellar/opfs-forklift.ts +49 -0
  11. package/s/demo/main.bundle.ts +39 -0
  12. package/s/demo/main.css +126 -0
  13. package/s/dom/components/breadcrumb/component.ts +29 -0
  14. package/s/dom/components/browser/component.ts +75 -0
  15. package/s/dom/components/browser/style.css.ts +118 -0
  16. package/s/dom/components/dropzone/component.ts +33 -0
  17. package/s/dom/components/dropzone/style.css.ts +54 -0
  18. package/s/dom/components/filter/component.ts +44 -0
  19. package/s/dom/components/outliner/component.ts +16 -0
  20. package/s/dom/components/searchbar/component.ts +29 -0
  21. package/s/dom/components/sort/component.ts +48 -0
  22. package/s/dom/components.ts +15 -0
  23. package/s/dom/context.ts +5 -0
  24. package/s/dom/theme.css.ts +11 -0
  25. package/s/dom/utils/find-group-name.ts +12 -0
  26. package/s/dom/utils/find-local-group.ts +9 -0
  27. package/s/dom/views/tree/component.ts +64 -0
  28. package/s/dom/views/tree/style.css.ts +64 -0
  29. package/s/genius/folio.md +29 -0
  30. package/s/genius/parts/hy-tree.ts +142 -0
  31. package/s/genius/quay.md +13 -0
  32. package/s/genius/turbo.md +21 -0
  33. package/s/genius/twig.ts +34 -0
  34. package/s/index.html.ts +89 -0
  35. package/s/index.ts +14 -0
  36. package/s/logic/aspects/codex/codex.ts +46 -0
  37. package/s/logic/aspects/codex/example.ts +65 -0
  38. package/s/logic/aspects/codex/parts/clade.ts +28 -0
  39. package/s/logic/aspects/codex/parts/codex-item.ts +94 -0
  40. package/s/logic/aspects/codex/parts/hierarchy.ts +82 -0
  41. package/s/logic/aspects/codex/parts/taxonomy.ts +18 -0
  42. package/s/logic/aspects/codex/parts/types.ts +23 -0
  43. package/s/logic/aspects/codex/utils/generate-id.ts +7 -0
  44. package/s/logic/aspects/dropzone.ts +77 -0
  45. package/s/logic/aspects/tree-trail.ts +33 -0
  46. package/s/logic/brain.ts +22 -0
  47. package/s/logic/group.ts +104 -0
  48. package/s/logic/permissions.ts +34 -0
  49. package/s/logic/presets/media/group.ts +94 -0
  50. package/s/logic/presets/media/schema.ts +22 -0
  51. package/s/logic/presets/opfs/schema.ts +21 -0
  52. package/s/logic/presets/plain/group.ts +44 -0
  53. package/s/logic/presets/plain/schema.ts +15 -0
  54. package/s/logic/types.ts +33 -0
  55. package/s/tests.test.ts +8 -0
  56. package/x/cellar/cask.d.ts +8 -0
  57. package/x/cellar/cask.js +19 -0
  58. package/x/cellar/cask.js.map +1 -0
  59. package/x/cellar/cellar.d.ts +22 -0
  60. package/x/cellar/cellar.js +47 -0
  61. package/x/cellar/cellar.js.map +1 -0
  62. package/x/cellar/cellar.test.d.ts +11 -0
  63. package/x/cellar/cellar.test.js +79 -0
  64. package/x/cellar/cellar.test.js.map +1 -0
  65. package/x/cellar/forklift.d.ts +7 -0
  66. package/x/cellar/forklift.js +2 -0
  67. package/x/cellar/forklift.js.map +1 -0
  68. package/x/cellar/index.d.ts +5 -0
  69. package/x/cellar/index.js +6 -0
  70. package/x/cellar/index.js.map +1 -0
  71. package/x/cellar/memory-forklift.d.ts +9 -0
  72. package/x/cellar/memory-forklift.js +21 -0
  73. package/x/cellar/memory-forklift.js.map +1 -0
  74. package/x/cellar/opfs-forklift.d.ts +11 -0
  75. package/x/cellar/opfs-forklift.js +44 -0
  76. package/x/cellar/opfs-forklift.js.map +1 -0
  77. package/x/demo/main.bundle.d.ts +1 -0
  78. package/x/demo/main.bundle.js +30 -0
  79. package/x/demo/main.bundle.js.map +1 -0
  80. package/x/demo/main.bundle.min.js +471 -0
  81. package/x/demo/main.css +126 -0
  82. package/x/dom/components/breadcrumb/component.d.ts +1 -0
  83. package/x/dom/components/breadcrumb/component.js +21 -0
  84. package/x/dom/components/breadcrumb/component.js.map +1 -0
  85. package/x/dom/components/browser/component.d.ts +1 -0
  86. package/x/dom/components/browser/component.js +65 -0
  87. package/x/dom/components/browser/component.js.map +1 -0
  88. package/x/dom/components/browser/style.css.d.ts +2 -0
  89. package/x/dom/components/browser/style.css.js +117 -0
  90. package/x/dom/components/browser/style.css.js.map +1 -0
  91. package/x/dom/components/dropzone/component.d.ts +1 -0
  92. package/x/dom/components/dropzone/component.js +27 -0
  93. package/x/dom/components/dropzone/component.js.map +1 -0
  94. package/x/dom/components/dropzone/style.css.d.ts +2 -0
  95. package/x/dom/components/dropzone/style.css.js +53 -0
  96. package/x/dom/components/dropzone/style.css.js.map +1 -0
  97. package/x/dom/components/filter/component.d.ts +1 -0
  98. package/x/dom/components/filter/component.js +40 -0
  99. package/x/dom/components/filter/component.js.map +1 -0
  100. package/x/dom/components/outliner/component.d.ts +1 -0
  101. package/x/dom/components/outliner/component.js +13 -0
  102. package/x/dom/components/outliner/component.js.map +1 -0
  103. package/x/dom/components/searchbar/component.d.ts +1 -0
  104. package/x/dom/components/searchbar/component.js +24 -0
  105. package/x/dom/components/searchbar/component.js.map +1 -0
  106. package/x/dom/components/sort/component.d.ts +1 -0
  107. package/x/dom/components/sort/component.js +44 -0
  108. package/x/dom/components/sort/component.js.map +1 -0
  109. package/x/dom/components.d.ts +18 -0
  110. package/x/dom/components.js +13 -0
  111. package/x/dom/components.js.map +1 -0
  112. package/x/dom/context.d.ts +2 -0
  113. package/x/dom/context.js +3 -0
  114. package/x/dom/context.js.map +1 -0
  115. package/x/dom/theme.css.d.ts +2 -0
  116. package/x/dom/theme.css.js +11 -0
  117. package/x/dom/theme.css.js.map +1 -0
  118. package/x/dom/utils/find-group-name.d.ts +1 -0
  119. package/x/dom/utils/find-group-name.js +9 -0
  120. package/x/dom/utils/find-group-name.js.map +1 -0
  121. package/x/dom/utils/find-local-group.d.ts +1 -0
  122. package/x/dom/utils/find-local-group.js +7 -0
  123. package/x/dom/utils/find-local-group.js.map +1 -0
  124. package/x/dom/views/tree/component.d.ts +7 -0
  125. package/x/dom/views/tree/component.js +52 -0
  126. package/x/dom/views/tree/component.js.map +1 -0
  127. package/x/dom/views/tree/style.css.d.ts +2 -0
  128. package/x/dom/views/tree/style.css.js +63 -0
  129. package/x/dom/views/tree/style.css.js.map +1 -0
  130. package/x/genius/folio.md +29 -0
  131. package/x/genius/parts/hy-tree.d.ts +44 -0
  132. package/x/genius/parts/hy-tree.js +116 -0
  133. package/x/genius/parts/hy-tree.js.map +1 -0
  134. package/x/genius/quay.md +13 -0
  135. package/x/genius/turbo.md +21 -0
  136. package/x/genius/twig.d.ts +34 -0
  137. package/x/genius/twig.js +2 -0
  138. package/x/genius/twig.js.map +1 -0
  139. package/x/importmap.json +47 -0
  140. package/x/index.d.ts +11 -0
  141. package/x/index.html +170 -0
  142. package/x/index.html.d.ts +3 -0
  143. package/x/index.html.js +87 -0
  144. package/x/index.html.js.map +1 -0
  145. package/x/index.js +9 -0
  146. package/x/index.js.map +1 -0
  147. package/x/logic/aspects/codex/codex.d.ts +17 -0
  148. package/x/logic/aspects/codex/codex.js +39 -0
  149. package/x/logic/aspects/codex/codex.js.map +1 -0
  150. package/x/logic/aspects/codex/example.d.ts +13 -0
  151. package/x/logic/aspects/codex/example.js +42 -0
  152. package/x/logic/aspects/codex/example.js.map +1 -0
  153. package/x/logic/aspects/codex/parts/clade.d.ts +16 -0
  154. package/x/logic/aspects/codex/parts/clade.js +23 -0
  155. package/x/logic/aspects/codex/parts/clade.js.map +1 -0
  156. package/x/logic/aspects/codex/parts/codex-item.d.ts +33 -0
  157. package/x/logic/aspects/codex/parts/codex-item.js +74 -0
  158. package/x/logic/aspects/codex/parts/codex-item.js.map +1 -0
  159. package/x/logic/aspects/codex/parts/hierarchy.d.ts +23 -0
  160. package/x/logic/aspects/codex/parts/hierarchy.js +69 -0
  161. package/x/logic/aspects/codex/parts/hierarchy.js.map +1 -0
  162. package/x/logic/aspects/codex/parts/taxonomy.d.ts +7 -0
  163. package/x/logic/aspects/codex/parts/taxonomy.js +13 -0
  164. package/x/logic/aspects/codex/parts/taxonomy.js.map +1 -0
  165. package/x/logic/aspects/codex/parts/types.d.ts +22 -0
  166. package/x/logic/aspects/codex/parts/types.js +2 -0
  167. package/x/logic/aspects/codex/parts/types.js.map +1 -0
  168. package/x/logic/aspects/codex/utils/generate-id.d.ts +1 -0
  169. package/x/logic/aspects/codex/utils/generate-id.js +5 -0
  170. package/x/logic/aspects/codex/utils/generate-id.js.map +1 -0
  171. package/x/logic/aspects/dropzone.d.ts +16 -0
  172. package/x/logic/aspects/dropzone.js +60 -0
  173. package/x/logic/aspects/dropzone.js.map +1 -0
  174. package/x/logic/aspects/tree-trail.d.ts +8 -0
  175. package/x/logic/aspects/tree-trail.js +24 -0
  176. package/x/logic/aspects/tree-trail.js.map +1 -0
  177. package/x/logic/brain.d.ts +11 -0
  178. package/x/logic/brain.js +17 -0
  179. package/x/logic/brain.js.map +1 -0
  180. package/x/logic/group.d.ts +51 -0
  181. package/x/logic/group.js +79 -0
  182. package/x/logic/group.js.map +1 -0
  183. package/x/logic/permissions.d.ts +18 -0
  184. package/x/logic/permissions.js +26 -0
  185. package/x/logic/permissions.js.map +1 -0
  186. package/x/logic/presets/media/group.d.ts +7 -0
  187. package/x/logic/presets/media/group.js +75 -0
  188. package/x/logic/presets/media/group.js.map +1 -0
  189. package/x/logic/presets/media/schema.d.ts +18 -0
  190. package/x/logic/presets/media/schema.js +2 -0
  191. package/x/logic/presets/media/schema.js.map +1 -0
  192. package/x/logic/presets/opfs/schema.d.ts +18 -0
  193. package/x/logic/presets/opfs/schema.js +2 -0
  194. package/x/logic/presets/opfs/schema.js.map +1 -0
  195. package/x/logic/presets/plain/group.d.ts +7 -0
  196. package/x/logic/presets/plain/group.js +33 -0
  197. package/x/logic/presets/plain/group.js.map +1 -0
  198. package/x/logic/presets/plain/schema.d.ts +12 -0
  199. package/x/logic/presets/plain/schema.js +2 -0
  200. package/x/logic/presets/plain/schema.js.map +1 -0
  201. package/x/logic/types.d.ts +20 -0
  202. package/x/logic/types.js +11 -0
  203. package/x/logic/types.js.map +1 -0
  204. package/x/tests.test.d.ts +1 -0
  205. package/x/tests.test.js +6 -0
  206. package/x/tests.test.js.map +1 -0
@@ -0,0 +1,11 @@
1
+ import { css } from "@benev/slate";
2
+ export default css `@layer theme, view; @layer theme {
3
+
4
+ * {
5
+ margin: 0;
6
+ padding: 0;
7
+ box-sizing: border-box;
8
+ }
9
+
10
+ }`;
11
+ //# sourceMappingURL=theme.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.css.js","sourceRoot":"","sources":["../../s/dom/theme.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,cAAc,CAAA;AAChC,eAAe,GAAG,CAAA;;;;;;;;EAQhB,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function findGroupName(el: HTMLElement): string;
@@ -0,0 +1,9 @@
1
+ export function findGroupName(el) {
2
+ for (let current = el; current; current = current.parentElement) {
3
+ const group = current.getAttribute("group");
4
+ if (group)
5
+ return group;
6
+ }
7
+ return "default";
8
+ }
9
+ //# sourceMappingURL=find-group-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-group-name.js","sourceRoot":"","sources":["../../../s/dom/utils/find-group-name.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,EAAe;IAC5C,KACC,IAAI,OAAO,GAAuB,EAAE,EACpC,OAAO,EACP,OAAO,GAAG,OAAO,CAAC,aAAa,EAC9B,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,KAAK;YACR,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function findLocalGroup(element: HTMLElement): import("../../logic/group.js").Group<any>;
@@ -0,0 +1,7 @@
1
+ import { brain } from "../context.js";
2
+ import { findGroupName } from "./find-group-name.js";
3
+ export function findLocalGroup(element) {
4
+ const name = findGroupName(element);
5
+ return brain.getGroup(name);
6
+ }
7
+ //# sourceMappingURL=find-local-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-local-group.js","sourceRoot":"","sources":["../../../s/dom/utils/find-local-group.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACnC,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAA;AAElD,MAAM,UAAU,cAAc,CAAC,OAAoB;IAClD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACnC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TemplateResult } from "@benev/slate";
2
+ import { Group } from "../../../logic/group.js";
3
+ export declare const Tree: (props: [group: Group<any>], meta?: Partial<{
4
+ content: import("lit-html").TemplateResult;
5
+ auto_exportparts: boolean;
6
+ attrs: import("@benev/slate").ShadowAttrs;
7
+ }>) => import("lit-html/directive.js").DirectiveResult<any>;
@@ -0,0 +1,52 @@
1
+ import { html, shadowView } from "@benev/slate";
2
+ import styleCss from "./style.css.js";
3
+ import themeCss from "../../theme.css.js";
4
+ export const Tree = shadowView(use => (group) => {
5
+ use.styles(themeCss, styleCss);
6
+ const { config } = group;
7
+ const { dropzone, trail, config: { root } } = group;
8
+ use.mount(() => {
9
+ const dispose = group.on.upload.sub(() => use.rerender());
10
+ return () => dispose();
11
+ });
12
+ const renderFolderItem = (item) => html `
13
+ <input
14
+ @dragenter=${(e) => dropzone.dragenter(e, item)}
15
+ @dragleave=${dropzone.dragleave}
16
+ @dragover=${(e) => dropzone.dragover(e, item)}
17
+ @drop=${(e) => dropzone.drop(e, item)}
18
+ @click=${(e) => e.preventDefault()}
19
+ id="file-import"
20
+ class="file-import folder-hover"
21
+ >
22
+ <span class="folder" slot="expand-icon">${config.renderIcon(item, false)}</span>
23
+ <span class="folder" slot="collapse-icon">${config.renderIcon(item, true)}</span>
24
+ ${config.renderLabel(item)}
25
+ `;
26
+ const renderItem = (item) => html `
27
+ ${config.renderIcon(item, false)}
28
+ ${config.renderLabel(item)}
29
+ `;
30
+ const render = (item) => {
31
+ return html `
32
+ <sl-tree-item
33
+ draggable="true"
34
+ @dragstart=${(e) => dropzone.dragstart(e, item)}
35
+ @dragend=${dropzone.dragend}
36
+ @click=${(e) => trail.setTrail(e, item)}
37
+ data-type=${item.kind}
38
+ ?data-hover=${dropzone.hovering?.id === item.id}
39
+ >
40
+ ${item.kind === "folder"
41
+ ? renderFolderItem(item)
42
+ : renderItem(item)}
43
+ ${group.sort(item.children).map((item) => group.matches(item) ? render(item) : null)}
44
+ </sl-tree-item>
45
+ `;
46
+ };
47
+ return html `
48
+ <sl-tree selection=leaf>
49
+ ${render(root)}
50
+ </sl-tree>`;
51
+ });
52
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../s/dom/views/tree/component.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAiB,MAAM,cAAc,CAAA;AAE7D,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AACrC,OAAO,QAAQ,MAAM,oBAAoB,CAAA;AAKzC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;IACtD,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE9B,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAA;IACtB,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAC,IAAI,EAAC,EAAC,GAAG,KAAK,CAAA;IAE/C,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QACd,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACzD,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAA;;gBAEnC,CAAC,CAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC7C,QAAQ,CAAC,SAAS;eACnB,CAAC,CAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;WAChD,CAAC,CAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;YACvC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE;;;;4CAIA,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;8CAC5B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;IACvE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;EAC1B,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAA;IACzC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;IAC9B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;EAC1B,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,IAAe,EAAkB,EAAE;QAClD,OAAO,IAAI,CAAA;;;iBAGI,CAAC,CAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;eAC/C,QAAQ,CAAC,OAAO;aAClB,CAAC,CAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC;gBAClC,IAAI,CAAC,IAAI;kBACP,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;;MAE7C,IAAI,CAAC,IAAI,KAAK,QAAQ;YACvB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;MACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;GAErF,CAAA;IACF,CAAC,CAAA;IAED,OAAO,IAAI,CAAA;;KAEP,MAAM,CAAC,IAAI,CAAC;aACJ,CAAA;AACb,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@benev/slate").CSSResult;
2
+ export default _default;
@@ -0,0 +1,63 @@
1
+ import { css } from "@benev/slate";
2
+ export default css `
3
+
4
+ sl-tree-item::part(expand-button) {
5
+ rotate: none;
6
+ }
7
+
8
+ sl-tree-item::part(base) {
9
+ min-height: 30px;
10
+ justify-content: center;
11
+ }
12
+
13
+ sl-icon:is(.item) {
14
+ padding: 0.5em;
15
+ }
16
+
17
+ sl-tree-item:not([data-type=folder])::part(expand-button) {
18
+ display: none;
19
+ }
20
+
21
+ .file-import {
22
+ position: absolute;
23
+ opacity: 0;
24
+ left: 0;
25
+ width: 100%;
26
+ }
27
+
28
+ .folder-hover {
29
+ position: absolute;
30
+ width: 100%;
31
+ height: 100%;
32
+ left: 0;
33
+ bottom: 0;
34
+ }
35
+
36
+ sl-tree-item {
37
+ min-height: 30px;
38
+ transition: background 0.2s ease, border-radius 0.2s ease;
39
+
40
+ ::part(label) {
41
+ gap: 0.5em;
42
+ }
43
+
44
+ .folder {
45
+ display: flex;
46
+ justify-content: center;
47
+ align-items: center;
48
+ }
49
+
50
+ ::part(item--selected) {
51
+ background: rgba(0, 0, 0, 0.4);
52
+ min-height: 30px;
53
+ }
54
+
55
+ }
56
+
57
+ sl-tree-item[data-hover] {
58
+ border-radius: 5px;
59
+ background: rgba(0, 0, 0, 0.4);
60
+ }
61
+
62
+ `;
63
+ //# sourceMappingURL=style.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.css.js","sourceRoot":"","sources":["../../../../s/dom/views/tree/style.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,cAAc,CAAA;AAChC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DjB,CAAA"}
@@ -0,0 +1,29 @@
1
+
2
+ # ๐Ÿ—‚๏ธ Folio
3
+
4
+ A virtual filesystem for the web.
5
+
6
+ Folio provides primitives for building intuitive file browsing experiences on the web.
7
+ - Agnostic about where data is actually stored
8
+ - For local, best to use [Turbo](./turbo.md) as an OPFS turbocharger
9
+
10
+ > ๐Ÿคท **Why not just use OPFS?**
11
+ > OPFS doesn't have cross-browser support for efficient move or rename operations.
12
+ > Folio is like a souped-up extended opfs.
13
+
14
+ Folio stores two kinds of data:
15
+ - **Blob storage**
16
+ Stores the binary payloads for files.
17
+ Usually, blob storage will target *opfs* โ€” though localstorage, indexeddb, or cloud storage are options.
18
+ sha256 hashes are the identifiers, thus binary payloads are thus de-duplicated.
19
+ - **Index storage**
20
+ Stores metadata and directory hierarchy.
21
+ Usually, index storage will target *indexeddb* โ€” though localstorage or cloud storage are options.
22
+
23
+ <br/>
24
+
25
+ ---
26
+
27
+ > ### Wip: implementation plan
28
+ > - Folio implements the `Twig` interface
29
+
@@ -0,0 +1,44 @@
1
+ import { Kv } from "@e280/kv";
2
+ export type HyId = string;
3
+ export type HyItem = {
4
+ parent: HyId | null;
5
+ children: HyId[];
6
+ };
7
+ type HyRecord = [parent: HyId | null, children: HyId[]];
8
+ /**
9
+ * Async hierarchy of nestable items.
10
+ * - items can have multiple children.
11
+ * - items can only have one parent.
12
+ * - items can be orphans (bring your own concept of a "root").
13
+ */
14
+ export declare class HyTree {
15
+ private records;
16
+ constructor(records: Kv<HyRecord>);
17
+ has(id: HyId): Promise<boolean>;
18
+ get(id: HyId): Promise<HyItem | undefined>;
19
+ gets(...ids: HyId[]): Promise<(HyItem | undefined)[]>;
20
+ require(id: HyId): Promise<HyItem>;
21
+ requires(...ids: HyId[]): Promise<HyItem[]>;
22
+ /** establish an id as a root with no parents, but ready to accept children */
23
+ establishRoot(root: HyId): Promise<void>;
24
+ /** give a parent some children */
25
+ attach(parent: HyId, ...children: HyId[]): Promise<void>;
26
+ /** detach this id from its parent in the hierarchy */
27
+ detach(id: HyId): Promise<undefined>;
28
+ /** destroy all relations associated with this id, and all its descendants */
29
+ destroy(id: HyId): Promise<void>;
30
+ /** delete absolutely everything */
31
+ clear(): Promise<void>;
32
+ /** iterate over all root items */
33
+ roots(): AsyncGenerator<{
34
+ id: HyId;
35
+ item: HyItem;
36
+ }, void, unknown>;
37
+ /** iterate over this id and all its descendants */
38
+ crawl(id: HyId, predicate?: (id: HyId, path: HyId[]) => Promise<boolean>): AsyncGenerator<{
39
+ id: HyId;
40
+ item: HyItem;
41
+ path: HyId[];
42
+ }, void, unknown>;
43
+ }
44
+ export {};
@@ -0,0 +1,116 @@
1
+ import { collect } from "@e280/kv";
2
+ /**
3
+ * Async hierarchy of nestable items.
4
+ * - items can have multiple children.
5
+ * - items can only have one parent.
6
+ * - items can be orphans (bring your own concept of a "root").
7
+ */
8
+ export class HyTree {
9
+ records;
10
+ constructor(records) {
11
+ this.records = records;
12
+ }
13
+ async has(id) {
14
+ return this.records.has(id);
15
+ }
16
+ async get(id) {
17
+ const record = await this.records.get(id);
18
+ if (record) {
19
+ const [parent, children] = record;
20
+ return { parent, children };
21
+ }
22
+ }
23
+ async gets(...ids) {
24
+ const records = await this.records.gets(...ids);
25
+ return records.map(r => {
26
+ if (!r)
27
+ return undefined;
28
+ const [parent, children] = r;
29
+ return { parent, children };
30
+ });
31
+ }
32
+ async require(id) {
33
+ const record = await this.records.require(id);
34
+ const [parent, children] = record;
35
+ return { parent, children };
36
+ }
37
+ async requires(...ids) {
38
+ const records = await this.records.requires(...ids);
39
+ return records.map(([parent, children]) => ({ parent, children }));
40
+ }
41
+ /** establish an id as a root with no parents, but ready to accept children */
42
+ async establishRoot(root) {
43
+ return this.records.set(root, [null, []]);
44
+ }
45
+ /** give a parent some children */
46
+ async attach(parent, ...children) {
47
+ children = [...new Set(children)];
48
+ const parentItem = await this.require(parent);
49
+ const siblings = new Set(parentItem.children);
50
+ const childItems = await this.gets(...children);
51
+ const newcomers = [];
52
+ for (const [index, id] of children.entries()) {
53
+ const item = childItems.at(index);
54
+ // child already in tree
55
+ if (item && item.parent)
56
+ throw new Error(`child already has parent`);
57
+ // child not in tree yet, remember to save it
58
+ else
59
+ newcomers.push([id, [parent, []]]);
60
+ // add to siblings set
61
+ siblings.add(id);
62
+ }
63
+ // save all new children
64
+ await this.records.sets(...newcomers);
65
+ // save updated parent item
66
+ await this.records.set(parent, [parentItem.parent, [...siblings]]);
67
+ }
68
+ /** detach this id from its parent in the hierarchy */
69
+ async detach(id) {
70
+ const item = await this.get(id);
71
+ if (!item)
72
+ return undefined;
73
+ if (item.parent) {
74
+ const parentItem = await this.require(item.parent);
75
+ const siblings = new Set(parentItem.children);
76
+ siblings.delete(id);
77
+ // save the parent item with removed child
78
+ await this.records.set(item.parent, [parentItem.parent, [...siblings]]);
79
+ // save the child with null parent
80
+ await this.records.set(id, [null, item.children]);
81
+ }
82
+ }
83
+ /** destroy all relations associated with this id, and all its descendants */
84
+ async destroy(id) {
85
+ await this.detach(id);
86
+ const tree = await collect(this.crawl(id));
87
+ const ids = tree.map(({ id }) => id);
88
+ await this.records.del(...ids);
89
+ }
90
+ /** delete absolutely everything */
91
+ async clear() {
92
+ await this.records.clear();
93
+ }
94
+ /** iterate over all root items */
95
+ async *roots() {
96
+ for await (const [id, [parent, children]] of this.records.entries())
97
+ if (parent === null)
98
+ yield { id, item: { parent, children } };
99
+ }
100
+ /** iterate over this id and all its descendants */
101
+ async *crawl(id, predicate = async () => true) {
102
+ const todo = [[id, []]];
103
+ const seen = new Set();
104
+ while (todo.length) {
105
+ const [id, path] = todo.shift();
106
+ if (seen.has(id) || !await predicate(id, path))
107
+ continue;
108
+ seen.add(id);
109
+ const item = await this.require(id);
110
+ yield { id, item, path };
111
+ for (const childId of item.children)
112
+ todo.push([childId, [...path, id]]);
113
+ }
114
+ }
115
+ }
116
+ //# sourceMappingURL=hy-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hy-tree.js","sourceRoot":"","sources":["../../../s/genius/parts/hy-tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+
2
+ # ๐Ÿช Quay integration
3
+
4
+ ```ts
5
+ import {Quay, Opfs, OpfsSchema} from "@e280/quay"
6
+
7
+ const quay = new Quay()
8
+ const opfs = await Opfs.setup()
9
+ const group = quay.group<OpfsSchema>(opfs)
10
+
11
+ register(group.elements())
12
+ ```
13
+
@@ -0,0 +1,21 @@
1
+
2
+ # โšก Turbo
3
+
4
+ **Turbo** is a turbocharger for reading and writing files in [OPFS](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system).
5
+
6
+ It provides high-performance multithreaded low-level read/write access by automatically scheduling parallel tasks across a pool of web workers.
7
+
8
+ - ๐Ÿ“‚ **OPFS** โ€” files stay local on the user's device
9
+ - ๐Ÿงต **Multithreaded** โ€” goes fast with no ui jank
10
+ - โš™๏ธ **Low-level** โ€” streaming byte-level access
11
+ - ๐Ÿ”’ **Smart** โ€” prevents funky race conditions
12
+
13
+ <br/>
14
+
15
+ ---
16
+
17
+ > ### Wip: implementation plan
18
+ > - use comrade for worker pooling
19
+ > - workers use opfs createSyncAccessHandle, make TransformStream readable/writable pair, wire it to the file stream, transfer the other end to the main thread, voila, connected
20
+ > - we have to do some big-brain horseshit to schedule tasks in a way to maximize parallelism while respecting ongoing locks
21
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * ๐ŸŒฟ Async source for loading items into Quay.
3
+ * - crawlable and callable by the ui
4
+ * - the functions provided are available for the ui user
5
+ * - as we crawl, every item we see is cached for sync rendering
6
+ * - minimal so as to be compatible even with raw opfs
7
+ * - Opfs, Cellar, etc, will literally provide Twig implementations
8
+ */
9
+ export type Twig<T extends Twig = any> = {
10
+ readonly id: string;
11
+ name: string;
12
+ parent: T | null;
13
+ rename?: (name: string) => Promise<void>;
14
+ delete?: () => Promise<void>;
15
+ move?: (o: {
16
+ parent: T;
17
+ }) => Promise<void>;
18
+ copy?: (o: {
19
+ parent: T;
20
+ name: string;
21
+ }) => Promise<void>;
22
+ container?: {
23
+ create(o: CreationOptions): Promise<T>;
24
+ children(o?: ListingOptions): Promise<T[]>;
25
+ crawl(predicate: (item: T, ancestors: T[]) => Promise<boolean>): AsyncIterable<T>;
26
+ };
27
+ };
28
+ export type Lens<T extends Twig = any> = (item: T) => boolean;
29
+ export type WritingOptions = {};
30
+ export type ReadingOptions = {};
31
+ export type CreationOptions = {};
32
+ export type ListingOptions<T extends Twig = any> = {
33
+ lens?: Lens<T>;
34
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=twig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twig.js","sourceRoot":"","sources":["../../s/genius/twig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ {
2
+ "imports": {
3
+ "@benev/slate/": "/node_modules/@benev/slate/",
4
+ "@benev/slate": "/node_modules/@benev/slate/x/index.js",
5
+ "@e280/kv/": "/node_modules/@e280/kv/",
6
+ "@e280/kv": "/node_modules/@e280/kv/x/index.js",
7
+ "@e280/stz/": "/node_modules/@e280/stz/",
8
+ "@e280/stz": "/node_modules/@e280/stz/x/index.js",
9
+ "@lit-labs/ssr-dom-shim/": "/node_modules/@lit-labs/ssr-dom-shim/",
10
+ "@lit-labs/ssr-dom-shim": "/node_modules/@lit-labs/ssr-dom-shim/index.js",
11
+ "@lit/reactive-element/": "/node_modules/@lit/reactive-element/",
12
+ "@lit/reactive-element": "/node_modules/@lit/reactive-element/reactive-element.js",
13
+ "@types/trusted-types/": "/node_modules/@types/trusted-types/",
14
+ "abstract-level/": "/node_modules/abstract-level/",
15
+ "abstract-level": "/node_modules/abstract-level/index.js",
16
+ "base64-js/": "/node_modules/base64-js/",
17
+ "base64-js": "/node_modules/base64-js/index.js",
18
+ "browser-level/": "/node_modules/browser-level/",
19
+ "browser-level": "/node_modules/browser-level/index.js",
20
+ "buffer/": "/node_modules/buffer/",
21
+ "buffer": "/node_modules/buffer/index.js",
22
+ "classic-level/": "/node_modules/classic-level/",
23
+ "classic-level": "/node_modules/classic-level/index.js",
24
+ "ieee754/": "/node_modules/ieee754/",
25
+ "ieee754": "/node_modules/ieee754/index.js",
26
+ "is-buffer/": "/node_modules/is-buffer/",
27
+ "is-buffer": "/node_modules/is-buffer/index.js",
28
+ "level/": "/node_modules/level/",
29
+ "level": "/node_modules/level/index.js",
30
+ "level-supports/": "/node_modules/level-supports/",
31
+ "level-transcoder/": "/node_modules/level-transcoder/",
32
+ "level-transcoder": "/node_modules/level-transcoder/index.js",
33
+ "lit/": "/node_modules/lit/",
34
+ "lit": "/node_modules/lit/index.js",
35
+ "lit-element/": "/node_modules/lit-element/",
36
+ "lit-element": "/node_modules/lit-element/index.js",
37
+ "lit-html/": "/node_modules/lit-html/",
38
+ "lit-html": "/node_modules/lit-html/lit-html.js",
39
+ "maybe-combine-errors/": "/node_modules/maybe-combine-errors/",
40
+ "module-error/": "/node_modules/module-error/",
41
+ "napi-macros/": "/node_modules/napi-macros/",
42
+ "napi-macros": "/node_modules/napi-macros/index.js",
43
+ "node-gyp-build/": "/node_modules/node-gyp-build/",
44
+ "node-gyp-build": "/node_modules/node-gyp-build/index.js"
45
+ },
46
+ "scopes": {}
47
+ }
package/x/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export { register, css } from "@benev/slate";
2
+ export * from "./cellar/index.js";
3
+ export * from "./dom/components.js";
4
+ declare const Quay: {
5
+ permissions: {
6
+ all: import("./logic/permissions.js").Permission;
7
+ readOnly: import("./logic/permissions.js").Permission;
8
+ none: import("./logic/permissions.js").Permission;
9
+ };
10
+ };
11
+ export default Quay;