@bccampus/ui-components 0.4.2 → 0.5.0

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 (165) hide show
  1. package/dist/_chunks/CompositeDataItem.js +204 -0
  2. package/dist/_chunks/createLucideIcon.js +103 -0
  3. package/dist/_chunks/index.js +125 -0
  4. package/dist/_chunks/index2.js +44 -0
  5. package/dist/_chunks/index3.js +533 -0
  6. package/dist/{utils-CRiPKpXj.js → _chunks/utils.js} +754 -526
  7. package/dist/components/index.d.ts +16 -0
  8. package/dist/components/index.js +84 -0
  9. package/dist/components/ui/banner.d.ts +10 -0
  10. package/dist/components/ui/banner.js +45 -0
  11. package/dist/components/ui/button.d.ts +11 -0
  12. package/dist/{button.js → components/ui/button.js} +11 -10
  13. package/dist/components/ui/card.d.ts +27 -0
  14. package/dist/components/ui/card.js +109 -0
  15. package/dist/components/ui/composite/CompositeData.d.ts +20 -0
  16. package/dist/components/ui/composite/CompositeData.js +89 -0
  17. package/dist/components/ui/composite/CompositeDataItem.d.ts +28 -0
  18. package/dist/components/ui/composite/CompositeDataItem.js +5 -0
  19. package/dist/components/ui/composite/FocusProvider/AbstractFocusProvider.d.ts +41 -0
  20. package/dist/components/ui/composite/FocusProvider/AbstractFocusProvider.js +35 -0
  21. package/dist/components/ui/composite/FocusProvider/ListboxFocusProvider.d.ts +16 -0
  22. package/dist/components/ui/composite/FocusProvider/ListboxFocusProvider.js +67 -0
  23. package/dist/components/ui/composite/FocusProvider/index.d.ts +2 -0
  24. package/dist/components/ui/composite/FocusProvider/index.js +6 -0
  25. package/dist/components/ui/composite/SelectionProvider/AbstractSelectionProvider.d.ts +23 -0
  26. package/dist/components/ui/composite/SelectionProvider/AbstractSelectionProvider.js +20 -0
  27. package/dist/components/ui/composite/SelectionProvider/MultipleSelectionProvider.d.ts +9 -0
  28. package/dist/components/ui/composite/SelectionProvider/MultipleSelectionProvider.js +20 -0
  29. package/dist/components/ui/composite/SelectionProvider/SingleSelectionProvider.d.ts +9 -0
  30. package/dist/components/ui/composite/SelectionProvider/SingleSelectionProvider.js +25 -0
  31. package/dist/components/ui/composite/SelectionProvider/index.d.ts +3 -0
  32. package/dist/components/ui/composite/SelectionProvider/index.js +8 -0
  33. package/dist/components/ui/composite/composite-component-item.d.ts +2 -0
  34. package/dist/components/ui/composite/composite-component-item.js +74 -0
  35. package/dist/components/ui/composite/composite-component.d.ts +2 -0
  36. package/dist/components/ui/composite/composite-component.js +66 -0
  37. package/dist/components/ui/composite/index.d.ts +7 -0
  38. package/dist/components/ui/composite/index.js +22 -0
  39. package/dist/components/ui/composite/listbox.d.ts +2 -0
  40. package/dist/components/ui/composite/listbox.js +58 -0
  41. package/dist/components/ui/composite/types.d.ts +82 -0
  42. package/dist/components/ui/composite/types.js +1 -0
  43. package/dist/components/ui/horizontal-list.d.ts +10 -0
  44. package/dist/components/ui/horizontal-list.js +82 -0
  45. package/dist/components/ui/icon-generator/generate-tiles.d.ts +4 -0
  46. package/dist/components/ui/icon-generator/generate-tiles.js +223 -0
  47. package/dist/components/ui/icon-generator/icon-generator.d.ts +3 -0
  48. package/dist/components/ui/icon-generator/icon-generator.js +82 -0
  49. package/dist/components/ui/icon-generator/index.d.ts +4 -0
  50. package/dist/components/ui/icon-generator/index.js +11 -0
  51. package/dist/components/ui/icon-generator/masked-image-generator.d.ts +3 -0
  52. package/dist/components/ui/icon-generator/masked-image-generator.js +31 -0
  53. package/dist/{masked-image-generator.d.ts → components/ui/icon-generator/types.d.ts} +48 -58
  54. package/dist/components/ui/icon-generator/types.js +30 -0
  55. package/dist/components/ui/input.d.ts +3 -0
  56. package/dist/{input.js → components/ui/input.js} +8 -8
  57. package/dist/components/ui/navigation-menu.d.ts +16 -0
  58. package/dist/components/ui/navigation-menu.js +1041 -0
  59. package/dist/components/ui/overlay.d.ts +7 -0
  60. package/dist/{overlay.js → components/ui/overlay.js} +7 -7
  61. package/dist/components/ui/page-header.d.ts +5 -0
  62. package/dist/{page-header.js → components/ui/page-header.js} +189 -181
  63. package/dist/components/ui/page-section.d.ts +8 -0
  64. package/dist/{page-section.js → components/ui/page-section.js} +7 -7
  65. package/dist/components/ui/page.d.ts +3 -0
  66. package/dist/components/ui/page.js +8 -0
  67. package/dist/components/ui/popover.d.ts +7 -0
  68. package/dist/components/ui/popover.js +3532 -0
  69. package/dist/components/ui/search-input.d.ts +3 -0
  70. package/dist/components/ui/search-input.js +24 -0
  71. package/dist/components/ui/tag.d.ts +10 -0
  72. package/dist/{tag.js → components/ui/tag.js} +10 -9
  73. package/dist/components/ui/typography/caption.d.ts +8 -0
  74. package/dist/components/ui/typography/caption.js +28 -0
  75. package/dist/components/ui/typography/index.d.ts +1 -0
  76. package/dist/components/ui/typography/index.js +5 -0
  77. package/dist/hooks/index.d.ts +3 -0
  78. package/dist/hooks/index.js +9 -0
  79. package/dist/hooks/use-effect-after-mount.d.ts +2 -0
  80. package/dist/hooks/use-effect-after-mount.js +24 -0
  81. package/dist/hooks/use-id.d.ts +1 -0
  82. package/dist/hooks/use-id.js +7 -0
  83. package/dist/hooks/use-keyboard-event.d.ts +59 -0
  84. package/dist/hooks/use-keyboard-event.js +52 -0
  85. package/dist/lib/index.d.ts +3 -0
  86. package/dist/lib/index.js +16 -0
  87. package/dist/lib/object.d.ts +5 -0
  88. package/dist/lib/object.js +38 -0
  89. package/dist/lib/set-operations.d.ts +5 -0
  90. package/dist/lib/set-operations.js +51 -0
  91. package/dist/{utils.d.ts → lib/utils.d.ts} +2 -5
  92. package/dist/lib/utils.js +4 -0
  93. package/package.json +9 -76
  94. package/src/components/index.ts +17 -0
  95. package/src/components/ui/composite/FocusProvider/index.ts +2 -0
  96. package/src/components/ui/composite/SelectionProvider/MultipleSelectionProvider.ts +1 -1
  97. package/src/components/ui/composite/SelectionProvider/index.ts +3 -0
  98. package/src/components/ui/composite/index.ts +5 -5
  99. package/src/components/ui/icon-generator/index.ts +2 -0
  100. package/src/components/ui/typography/index.ts +1 -0
  101. package/src/hooks/index.ts +3 -0
  102. package/src/index.ts +3 -0
  103. package/src/lib/index.ts +3 -0
  104. package/tsconfig.lib.json +44 -0
  105. package/vite.config.ts +28 -31
  106. package/dist/AbstractFocusProvider-CxvlcEki.js +0 -29
  107. package/dist/AbstractSelectionProvider-BtaROstC.js +0 -30
  108. package/dist/CompositeDataItem-DuHOHCWy.js +0 -158
  109. package/dist/ListboxFocusProvider.d.ts +0 -149
  110. package/dist/ListboxFocusProvider.js +0 -53
  111. package/dist/MultipleSelectionProvider.d.ts +0 -141
  112. package/dist/MultipleSelectionProvider.js +0 -19
  113. package/dist/SingleSelectionProvider.d.ts +0 -141
  114. package/dist/SingleSelectionProvider.js +0 -23
  115. package/dist/banner.d.ts +0 -16
  116. package/dist/banner.js +0 -42
  117. package/dist/button.d.ts +0 -17
  118. package/dist/caption.d.ts +0 -13
  119. package/dist/caption.js +0 -27
  120. package/dist/card.d.ts +0 -46
  121. package/dist/card.js +0 -108
  122. package/dist/composite-component-DSUbd1XS.js +0 -122
  123. package/dist/composite.d.ts +0 -208
  124. package/dist/composite.js +0 -82
  125. package/dist/createLucideIcon-CzehbSja.js +0 -94
  126. package/dist/generate-tiles-DuagGD1d.js +0 -244
  127. package/dist/generate-tiles.d.ts +0 -43
  128. package/dist/generate-tiles.js +0 -7
  129. package/dist/horizontal-list.d.ts +0 -16
  130. package/dist/horizontal-list.js +0 -77
  131. package/dist/icon-generator-tuhuqdpL.js +0 -76
  132. package/dist/icon-generator.d.ts +0 -58
  133. package/dist/icon-generator.js +0 -6
  134. package/dist/index-CQhYMnjT.js +0 -34
  135. package/dist/index-U7DVCmS_.js +0 -76
  136. package/dist/input.d.ts +0 -7
  137. package/dist/listbox.d.ts +0 -171
  138. package/dist/listbox.js +0 -76
  139. package/dist/masked-image-generator.js +0 -29
  140. package/dist/navigation-menu.d.ts +0 -27
  141. package/dist/navigation-menu.js +0 -1139
  142. package/dist/overlay.d.ts +0 -13
  143. package/dist/page-header.d.ts +0 -9
  144. package/dist/page-section.d.ts +0 -14
  145. package/dist/page.d.ts +0 -7
  146. package/dist/page.js +0 -8
  147. package/dist/search-input.d.ts +0 -7
  148. package/dist/search-input.js +0 -23
  149. package/dist/tag.d.ts +0 -16
  150. package/dist/ui-components.d.ts +0 -215
  151. package/dist/ui-components.js +0 -54
  152. package/dist/utils.js +0 -4
  153. package/src/assets/icons/icon_01.svg +0 -6
  154. package/src/assets/icons/icon_02.svg +0 -6
  155. package/src/assets/icons/icon_03.svg +0 -6
  156. package/src/assets/icons/icon_04.svg +0 -6
  157. package/src/assets/icons/icon_05.svg +0 -4
  158. package/src/assets/icons/icon_06.svg +0 -4
  159. package/src/assets/images/image_01.jpg +0 -0
  160. package/src/assets/images/image_02.jpg +0 -0
  161. package/src/assets/images/image_03.webp +0 -0
  162. package/src/assets/images/image_04.png +0 -0
  163. package/src/assets/images/image_05.jpg +0 -0
  164. package/src/assets/images/image_06.jpg +0 -0
  165. package/src/components/ui/index.ts +0 -15
@@ -0,0 +1,44 @@
1
+ {
2
+ "include": [
3
+ "src/components",
4
+ "src/hooks",
5
+ "src/lib",
6
+ ],
7
+ "compilerOptions": {
8
+ "outDir": "dist/src",
9
+ "baseUrl": ".",
10
+ "module": "ESNext",
11
+ "target": "ESNext",
12
+ "lib": [
13
+ "DOM",
14
+ "ESNext"
15
+ ],
16
+ "strict": true,
17
+ "esModuleInterop": true,
18
+ "jsx": "preserve",
19
+ "skipLibCheck": true,
20
+ "moduleResolution": "node",
21
+ "resolveJsonModule": true,
22
+ "noUnusedLocals": true,
23
+ "strictNullChecks": true,
24
+ "allowJs": true,
25
+ "allowImportingTsExtensions": true,
26
+ "forceConsistentCasingInFileNames": true,
27
+ "types": [
28
+ "react",
29
+ "react-dom",
30
+ "node",
31
+ "class-variance-authority"
32
+ ],
33
+ "paths": {
34
+ "@/*": [
35
+ "./src/*"
36
+ ],
37
+ }
38
+ },
39
+ "exclude": [
40
+ "dist",
41
+ "distStories",
42
+ "node_modules",
43
+ ]
44
+ }
package/vite.config.ts CHANGED
@@ -1,49 +1,43 @@
1
- import path from "path"
2
- import { fileURLToPath } from "url"
1
+ import path from "node:path"
2
+ import { fileURLToPath } from "node:url"
3
3
  import tailwindcss from "@tailwindcss/vite"
4
4
  import { defineConfig } from 'vite'
5
5
  import react from '@vitejs/plugin-react-swc'
6
+ import { glob } from 'glob'
6
7
  import dts from 'vite-plugin-dts'
7
8
 
8
9
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
10
 
10
- // https://vite.dev/config/
11
+ const createEntries = () => {
12
+ const entries = new Map<string, string>();
13
+
14
+ for (const file of glob.sync('src/{components,hooks,lib}/**/*.{ts,tsx}')) {
15
+ const fileName = file.split('/').at(-1)?.split('.')[0].replace(/^src[/\\]/, "");
16
+
17
+ if (!fileName) {
18
+ continue;
19
+ }
20
+
21
+ entries.set(fileName, fileURLToPath(new URL(file, import.meta.url)));
22
+ }
23
+
24
+ return Object.fromEntries(entries);
25
+ }
26
+
11
27
  export default defineConfig({
12
- plugins: [react(), tailwindcss(), dts({ rollupTypes: true, tsconfigPath: './tsconfig.app.json' })],
28
+ plugins: [react(), tailwindcss(), dts({ tsconfigPath: './tsconfig.lib.json' })],
13
29
  resolve: {
14
30
  alias: {
15
31
  "@": path.resolve(__dirname, "./src"),
16
32
  },
17
33
  },
18
34
  build: {
35
+ minify: false,
36
+ copyPublicDir: false,
19
37
  lib: {
20
- formats: ['es'],
21
- entry: {
22
- 'ui-components': path.resolve(__dirname, 'src/components/ui/index.ts'),
23
- 'composite': path.resolve(__dirname, 'src/components/ui/composite/index.ts'),
24
- 'listbox': path.resolve(__dirname, 'src/components/ui/composite/listbox.tsx'),
25
- 'SingleSelectionProvider': path.resolve(__dirname, 'src/components/ui/composite/SelectionProvider/SingleSelectionProvider.ts'),
26
- 'MultipleSelectionProvider': path.resolve(__dirname, 'src/components/ui/composite/SelectionProvider/MultipleSelectionProvider.ts'),
27
- 'ListboxFocusProvider': path.resolve(__dirname, 'src/components/ui/composite/FocusProvider/ListboxFocusProvider.ts'),
28
- 'icon-generator': path.resolve(__dirname, 'src/components/ui/icon-generator/index.ts'),
29
- 'generate-tiles': path.resolve(__dirname, 'src/components/ui/icon-generator/generate-tiles.tsx'),
30
- 'masked-image-generator': path.resolve(__dirname, 'src/components/ui/icon-generator/masked-image-generator.tsx'),
31
- 'caption': path.resolve(__dirname, 'src/components/ui/typography/caption.tsx'),
32
- 'banner': path.resolve(__dirname, 'src/components/ui/banner.tsx'),
33
- 'button': path.resolve(__dirname, 'src/components/ui/button.tsx'),
34
- 'horizontal-list': path.resolve(__dirname, 'src/components/ui/horizontal-list.tsx'),
35
- 'input': path.resolve(__dirname, 'src/components/ui/input.tsx'),
36
- 'navigation-menu': path.resolve(__dirname, 'src/components/ui/navigation-menu.tsx'),
37
- 'overlay': path.resolve(__dirname, 'src/components/ui/overlay.tsx'),
38
- 'page-header': path.resolve(__dirname, 'src/components/ui/page-header.tsx'),
39
- 'page-section': path.resolve(__dirname, 'src/components/ui/page-section.tsx'),
40
- 'page': path.resolve(__dirname, 'src/components/ui/page.tsx'),
41
- 'card': path.resolve(__dirname, 'src/components/ui/card.tsx'),
42
- 'search-input': path.resolve(__dirname, 'src/components/ui/search-input.tsx'),
43
- 'tag': path.resolve(__dirname, 'src/components/ui/tag.tsx'),
44
- 'utils': path.resolve(__dirname, 'src/lib/utils.ts'),
45
- },
38
+ entry: createEntries(),
46
39
  name: 'ui-components',
40
+ formats: ['es'],
47
41
  },
48
42
  rollupOptions: {
49
43
  external: [
@@ -53,7 +47,10 @@ export default defineConfig({
53
47
  'tailwindcss',
54
48
  'tw-animate-css'
55
49
  ],
56
-
50
+ output: {
51
+ assetFileNames: '[name][extname]',
52
+ chunkFileNames: '_chunks/[name].js'
53
+ },
57
54
  },
58
55
  },
59
56
  })
@@ -1,29 +0,0 @@
1
- import { a as o, C as i } from "./CompositeDataItem-DuHOHCWy.js";
2
- class f {
3
- data;
4
- dataOptions;
5
- firstFocusableItem;
6
- lastFocusableItem;
7
- focusedItem = o(null);
8
- init(t, s) {
9
- this.data = t, this.dataOptions = s;
10
- const [e, a] = this.setFocusPointers();
11
- this.firstFocusableItem = e, this.firstFocusableItem && (this.firstFocusableItem.state.setKey("focused", !0), this.focusedItem.set(this.firstFocusableItem)), this.lastFocusableItem = a;
12
- }
13
- isFocusable(t) {
14
- return !t.state.get().disabled;
15
- }
16
- focus(t) {
17
- const s = t instanceof i ? t : this.data.lookup.get(t);
18
- if (s) {
19
- if (this.focusedItem.get()) {
20
- if (s.key === this.focusedItem.get()?.key) return;
21
- this.focusedItem.get().state.setKey("focused", !1);
22
- }
23
- s.state.setKey("focused", !0), this.focusedItem.set(s);
24
- }
25
- }
26
- }
27
- export {
28
- f as A
29
- };
@@ -1,30 +0,0 @@
1
- import { a, C as n } from "./CompositeDataItem-DuHOHCWy.js";
2
- function c(o, e) {
3
- const t = new Set(o);
4
- for (const s of e)
5
- t.add(s);
6
- return t;
7
- }
8
- function d(o, e) {
9
- const t = new Set(o);
10
- for (const s of e)
11
- t.delete(s);
12
- return t;
13
- }
14
- class f {
15
- data;
16
- dataOptions;
17
- selectedKeys = a(/* @__PURE__ */ new Set());
18
- init(e, t) {
19
- this.data = e, this.dataOptions = t, this.dataOptions.selectedKeys.forEach((s) => this.select(s));
20
- }
21
- toggleSelect(e, t = !1) {
22
- const s = e ? e instanceof n ? e : this.data.lookup.get(e) : this.data.focusProvider.focusedItem.get();
23
- s && (s.state.get().selected ? this.deselect(s, t) : this.select(s, t));
24
- }
25
- }
26
- export {
27
- f as A,
28
- d,
29
- c as u
30
- };
@@ -1,158 +0,0 @@
1
- let p = Symbol("clean"), n = [], r = 0;
2
- const c = 4;
3
- let y = (a) => {
4
- let t = [], e = {
5
- get() {
6
- return e.lc || e.listen(() => {
7
- })(), e.value;
8
- },
9
- lc: 0,
10
- listen(s) {
11
- return e.lc = t.push(s), () => {
12
- for (let i = r + c; i < n.length; )
13
- n[i] === s ? n.splice(i, c) : i += c;
14
- let l = t.indexOf(s);
15
- ~l && (t.splice(l, 1), --e.lc || e.off());
16
- };
17
- },
18
- notify(s, l) {
19
- let i = !n.length;
20
- for (let h of t)
21
- n.push(h, e.value, s, l);
22
- if (i) {
23
- for (r = 0; r < n.length; r += c)
24
- n[r](
25
- n[r + 1],
26
- n[r + 2],
27
- n[r + 3]
28
- );
29
- n.length = 0;
30
- }
31
- },
32
- /* It will be called on last listener unsubscribing.
33
- We will redefine it in onMount and onStop. */
34
- off() {
35
- },
36
- set(s) {
37
- let l = e.value;
38
- l !== s && (e.value = s, e.notify(l));
39
- },
40
- subscribe(s) {
41
- let l = e.listen(s);
42
- return s(e.value), l;
43
- },
44
- value: a
45
- };
46
- return process.env.NODE_ENV !== "production" && (e[p] = () => {
47
- t = [], e.lc = 0, e.off();
48
- }), e;
49
- }, o = (a = {}) => {
50
- let t = y(a);
51
- return t.setKey = function(e, s) {
52
- let l = t.value;
53
- typeof s > "u" && e in t.value ? (t.value = { ...t.value }, delete t.value[e], t.notify(l, e)) : t.value[e] !== s && (t.value = {
54
- ...t.value,
55
- [e]: s
56
- }, t.notify(l, e));
57
- }, t;
58
- };
59
- const m = (a, t) => {
60
- const e = { ...a };
61
- return t.forEach((s) => {
62
- const l = s.split("."), i = l.pop();
63
- if (i) {
64
- const h = l.reduce((d, f) => d && f in d ? d[f] : void 0, e);
65
- h && i in h && delete h[i];
66
- }
67
- }), e;
68
- };
69
- class u {
70
- #e;
71
- parent = null;
72
- children;
73
- level;
74
- data;
75
- state;
76
- pointers;
77
- childrenProp;
78
- constructor(t, e, s) {
79
- this.#e = e.getItemKey(t), this.data = o(m(t, [e.itemChildrenProp])), this.state = o({
80
- focused: !1,
81
- selected: !1,
82
- disabled: !1,
83
- ...e.initialState
84
- }), this.pointers = {}, this.parent = s, this.level = s ? s.level + 1 : 0, this.childrenProp = e.itemChildrenProp;
85
- const l = e.getItemChildren(t);
86
- l && (this.children = l.map((i) => new u(i, e, this)));
87
- }
88
- get key() {
89
- return this.#e;
90
- }
91
- *[Symbol.iterator]() {
92
- if (this.key !== "ALL" && (yield this), this.children)
93
- for (const t of this.children)
94
- for (const e of t) yield e;
95
- }
96
- toJSON() {
97
- const t = { ...this.data.get() };
98
- if (this.children) {
99
- t[this.childrenProp] = [];
100
- for (const e of this.children)
101
- t[this.childrenProp].push(e.toJSON());
102
- }
103
- return t;
104
- }
105
- descendants() {
106
- if (!this.children) return [];
107
- const t = [];
108
- return this.children.forEach(
109
- (e) => {
110
- t.push(e);
111
- const s = e.descendants();
112
- s && t.push(...s);
113
- }
114
- ), t;
115
- }
116
- ancestors() {
117
- const t = [];
118
- let e = this.parent;
119
- for (; e; )
120
- t.push(e), e = e.parent;
121
- return t;
122
- }
123
- toggleSelect(t = !1) {
124
- this.state.get().selected ? this.deselect(t) : this.select(t);
125
- }
126
- select(t = !1) {
127
- if (this.state.setKey("selected", !0), t && this.children) {
128
- const e = this.children.map((s) => s.select(!0)).flat();
129
- return [this.key, ...e];
130
- }
131
- return [this.key];
132
- }
133
- deselect(t = !1) {
134
- if (this.state.setKey("selected", !1), t && this.children) {
135
- const e = this.children.map((s) => s.deselect(!0)).flat();
136
- return [this.key, ...e];
137
- }
138
- return [this.key];
139
- }
140
- disable(t = !1) {
141
- if (this.state.setKey("disabled", !0), t && this.children) {
142
- const e = this.children.map((s) => s.disable(!0)).flat();
143
- return [this.key, ...e];
144
- }
145
- return [this.key];
146
- }
147
- enable(t = !1) {
148
- if (this.state.setKey("disabled", !1), t && this.children) {
149
- const e = this.children.map((s) => s.enable(!0)).flat();
150
- return [this.key, ...e];
151
- }
152
- return [this.key];
153
- }
154
- }
155
- export {
156
- u as C,
157
- y as a
158
- };
@@ -1,149 +0,0 @@
1
- import { PreinitializedMapStore } from 'nanostores';
2
- import { PreinitializedWritableAtom } from 'nanostores';
3
-
4
- declare abstract class AbstractFocusProvider<T extends object> implements FocusProvider {
5
- protected data: CompositeData<T>;
6
- protected dataOptions: CompositeDataOptions<T>;
7
- firstFocusableItem: CompositeDataItem<T> | null;
8
- lastFocusableItem: CompositeDataItem<T> | null;
9
- focusedItem: PreinitializedWritableAtom<CompositeDataItem<T> | null>;
10
- init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
11
- isFocusable(itemAtom: CompositeDataItem<T>): boolean;
12
- focus(itemKey: CompositeItemKey): void;
13
- focus(item: CompositeDataItem<T>): void;
14
- abstract setFocusPointers(): readonly [first: CompositeDataItem<T> | null, last: CompositeDataItem<T> | null];
15
- abstract focusUp(): void;
16
- abstract focusDown(): void;
17
- abstract focusLeft(): void;
18
- abstract focusRight(): void;
19
- abstract focusPageUp(): void;
20
- abstract focesPageDown(): void;
21
- abstract focusToFirst(): void;
22
- abstract focusToLast(): void;
23
- abstract focusToFirstInRow(): void;
24
- abstract focusToLastInRow(): void;
25
- abstract focusToTypeAheadMatch(): void;
26
- }
27
-
28
- declare abstract class AbstractSelectionProvider<T extends object> {
29
- protected data: CompositeData<T>;
30
- protected dataOptions: CompositeDataOptions<T>;
31
- selectedKeys: PreinitializedWritableAtom<Set<CompositeItemKey>>;
32
- init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
33
- abstract select(itemKey?: CompositeItemKey, recursive?: boolean): void;
34
- abstract select(item: CompositeDataItem<T>, recursive?: boolean): void;
35
- abstract select(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
36
- abstract deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
37
- abstract deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
38
- abstract deselect(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
39
- toggleSelect(itemKey?: CompositeItemKey, recursive?: boolean): void;
40
- toggleSelect(item: CompositeDataItem<T>, recursive?: boolean): void;
41
- }
42
-
43
- declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
44
- #private;
45
- lookup: Map<CompositeItemKey, CompositeDataItem<T>>;
46
- focusProvider: AbstractFocusProvider<T>;
47
- selectionProvider?: AbstractSelectionProvider<T>;
48
- disabledKeys: Set<CompositeItemKey>;
49
- root: CompositeDataItem<T>;
50
- constructor(items: T[], providerOptions: CompositeProviderOptions<T>, options?: CompositeOptions);
51
- [Symbol.iterator](): Iterator<CompositeDataItem<T>>;
52
- toJSON(): T[];
53
- init(items: T[]): void;
54
- item(key: CompositeItemKey): CompositeDataItem<T> | undefined;
55
- descendants(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
56
- ancestors(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
57
- updateItem(key: CompositeItemKey, data: Partial<T> | ((item: T) => Partial<T>)): void;
58
- }
59
-
60
- declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
61
- #private;
62
- parent: CompositeDataItem<T> | null;
63
- children?: CompositeDataItem<T>[];
64
- level: number;
65
- data: PreinitializedMapStore<T>;
66
- state: PreinitializedMapStore<CompositeDataItemState>;
67
- pointers: {
68
- left?: CompositeItemKey;
69
- right?: CompositeItemKey;
70
- up?: CompositeItemKey;
71
- down?: CompositeItemKey;
72
- };
73
- childrenProp: string;
74
- constructor(item: T, options: CompositeDataItemOptions<T>, parent: CompositeDataItem<T> | null);
75
- get key(): CompositeItemKey;
76
- [Symbol.iterator](): Iterator<CompositeDataItem<T>>;
77
- toJSON(): T;
78
- descendants(): CompositeDataItem<T>[];
79
- ancestors(): CompositeDataItem<T>[];
80
- toggleSelect(recursive?: boolean): void;
81
- select(recursive?: boolean): CompositeItemKey[];
82
- deselect(recursive?: boolean): CompositeItemKey[];
83
- disable(recursive?: boolean): CompositeItemKey[];
84
- enable(recursive?: boolean): CompositeItemKey[];
85
- }
86
-
87
- declare type CompositeDataItemOptions<T> = CompositeDataPropGetters<T> & {
88
- initialState?: CompositeDataItemState;
89
- itemChildrenProp: string;
90
- };
91
-
92
- declare interface CompositeDataItemState {
93
- focused: boolean;
94
- selected: boolean;
95
- disabled: boolean;
96
- }
97
-
98
- declare type CompositeDataOptions<T> = Required<CompositeOptions> & CompositeDataPropGetters<T>;
99
-
100
- declare interface CompositeDataPropGetters<T> {
101
- getItemKey: (item: T) => CompositeItemKey;
102
- getItemChildren: (item: T) => T[] | undefined;
103
- }
104
-
105
- declare type CompositeItemKey = string | number;
106
-
107
- declare interface CompositeOptions {
108
- disabledKeys?: CompositeItemKey[];
109
- selectedKeys?: CompositeItemKey[];
110
- itemKeyProp?: string;
111
- itemChildrenProp?: string;
112
- }
113
-
114
- declare interface CompositeProviderOptions<T extends object> {
115
- focusProvider: AbstractFocusProvider<T>;
116
- selectionProvider?: AbstractSelectionProvider<T>;
117
- }
118
-
119
- declare interface FocusProvider {
120
- focus(itemKey: CompositeItemKey): void;
121
- focusUp(): void;
122
- focusDown(): void;
123
- focusLeft(): void;
124
- focusRight(): void;
125
- focusPageUp(): void;
126
- focesPageDown(): void;
127
- focusToFirst(): void;
128
- focusToLast(): void;
129
- focusToFirstInRow(): void;
130
- focusToLastInRow(): void;
131
- focusToTypeAheadMatch(): void;
132
- }
133
-
134
- export declare class ListboxFocusProvider<T extends object> extends AbstractFocusProvider<T> {
135
- setFocusPointers(): readonly [CompositeDataItem<T> | null, CompositeDataItem<T> | null];
136
- focusUp(): void;
137
- focusDown(): void;
138
- focusLeft(): void;
139
- focusRight(): void;
140
- focusPageUp(): void;
141
- focesPageDown(): void;
142
- focusToFirst(): void;
143
- focusToLast(): void;
144
- focusToFirstInRow(): void;
145
- focusToLastInRow(): void;
146
- focusToTypeAheadMatch(): void;
147
- }
148
-
149
- export { }
@@ -1,53 +0,0 @@
1
- import { A as h } from "./AbstractFocusProvider-CxvlcEki.js";
2
- class l extends h {
3
- setFocusPointers() {
4
- let i = null, n = null;
5
- const t = [...this.data.lookup];
6
- for (let e = 0; e < t.length; e++) {
7
- const [r, s] = t[e];
8
- if (this.isFocusable(s) && (i || (i = s), n = s, e < t.length - 1)) {
9
- let o = e === t.length - 1 ? 0 : e + 1;
10
- for (; o < t.length && !this.isFocusable(t[o][1]); )
11
- o = (o + 1) % t.length;
12
- s.pointers.down = t[o][0], t[o][1].pointers.up = r;
13
- }
14
- }
15
- return [i, n];
16
- }
17
- focusUp() {
18
- this.focusedItem.get()?.pointers.up && this.focus(this.focusedItem.get().pointers.up);
19
- }
20
- focusDown() {
21
- this.focusedItem.get()?.pointers.down && this.focus(this.focusedItem.get().pointers.down);
22
- }
23
- focusLeft() {
24
- throw new Error("Method not implemented.");
25
- }
26
- focusRight() {
27
- throw new Error("Method not implemented.");
28
- }
29
- focusPageUp() {
30
- throw new Error("Method not implemented.");
31
- }
32
- focesPageDown() {
33
- throw new Error("Method not implemented.");
34
- }
35
- focusToFirst() {
36
- this.firstFocusableItem && this.focus(this.firstFocusableItem);
37
- }
38
- focusToLast() {
39
- this.lastFocusableItem && this.focus(this.lastFocusableItem);
40
- }
41
- focusToFirstInRow() {
42
- throw new Error("Method not implemented.");
43
- }
44
- focusToLastInRow() {
45
- throw new Error("Method not implemented.");
46
- }
47
- focusToTypeAheadMatch() {
48
- throw new Error("Method not implemented.");
49
- }
50
- }
51
- export {
52
- l as ListboxFocusProvider
53
- };
@@ -1,141 +0,0 @@
1
- import { PreinitializedMapStore } from 'nanostores';
2
- import { PreinitializedWritableAtom } from 'nanostores';
3
-
4
- declare abstract class AbstractFocusProvider<T extends object> implements FocusProvider {
5
- protected data: CompositeData<T>;
6
- protected dataOptions: CompositeDataOptions<T>;
7
- firstFocusableItem: CompositeDataItem<T> | null;
8
- lastFocusableItem: CompositeDataItem<T> | null;
9
- focusedItem: PreinitializedWritableAtom<CompositeDataItem<T> | null>;
10
- init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
11
- isFocusable(itemAtom: CompositeDataItem<T>): boolean;
12
- focus(itemKey: CompositeItemKey): void;
13
- focus(item: CompositeDataItem<T>): void;
14
- abstract setFocusPointers(): readonly [first: CompositeDataItem<T> | null, last: CompositeDataItem<T> | null];
15
- abstract focusUp(): void;
16
- abstract focusDown(): void;
17
- abstract focusLeft(): void;
18
- abstract focusRight(): void;
19
- abstract focusPageUp(): void;
20
- abstract focesPageDown(): void;
21
- abstract focusToFirst(): void;
22
- abstract focusToLast(): void;
23
- abstract focusToFirstInRow(): void;
24
- abstract focusToLastInRow(): void;
25
- abstract focusToTypeAheadMatch(): void;
26
- }
27
-
28
- declare abstract class AbstractSelectionProvider<T extends object> {
29
- protected data: CompositeData<T>;
30
- protected dataOptions: CompositeDataOptions<T>;
31
- selectedKeys: PreinitializedWritableAtom<Set<CompositeItemKey>>;
32
- init(data: CompositeData<T>, dataOptions: CompositeDataOptions<T>): void;
33
- abstract select(itemKey?: CompositeItemKey, recursive?: boolean): void;
34
- abstract select(item: CompositeDataItem<T>, recursive?: boolean): void;
35
- abstract select(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
36
- abstract deselect(itemKey?: CompositeItemKey, recursive?: boolean): void;
37
- abstract deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
38
- abstract deselect(item?: CompositeDataItem<T> | CompositeItemKey, recursive?: boolean): void;
39
- toggleSelect(itemKey?: CompositeItemKey, recursive?: boolean): void;
40
- toggleSelect(item: CompositeDataItem<T>, recursive?: boolean): void;
41
- }
42
-
43
- declare class CompositeData<T extends object> implements Iterable<CompositeDataItem<T>> {
44
- #private;
45
- lookup: Map<CompositeItemKey, CompositeDataItem<T>>;
46
- focusProvider: AbstractFocusProvider<T>;
47
- selectionProvider?: AbstractSelectionProvider<T>;
48
- disabledKeys: Set<CompositeItemKey>;
49
- root: CompositeDataItem<T>;
50
- constructor(items: T[], providerOptions: CompositeProviderOptions<T>, options?: CompositeOptions);
51
- [Symbol.iterator](): Iterator<CompositeDataItem<T>>;
52
- toJSON(): T[];
53
- init(items: T[]): void;
54
- item(key: CompositeItemKey): CompositeDataItem<T> | undefined;
55
- descendants(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
56
- ancestors(itemKey: CompositeItemKey): CompositeDataItem<T>[] | undefined;
57
- updateItem(key: CompositeItemKey, data: Partial<T> | ((item: T) => Partial<T>)): void;
58
- }
59
-
60
- declare class CompositeDataItem<T extends object> implements Iterable<CompositeDataItem<T>> {
61
- #private;
62
- parent: CompositeDataItem<T> | null;
63
- children?: CompositeDataItem<T>[];
64
- level: number;
65
- data: PreinitializedMapStore<T>;
66
- state: PreinitializedMapStore<CompositeDataItemState>;
67
- pointers: {
68
- left?: CompositeItemKey;
69
- right?: CompositeItemKey;
70
- up?: CompositeItemKey;
71
- down?: CompositeItemKey;
72
- };
73
- childrenProp: string;
74
- constructor(item: T, options: CompositeDataItemOptions<T>, parent: CompositeDataItem<T> | null);
75
- get key(): CompositeItemKey;
76
- [Symbol.iterator](): Iterator<CompositeDataItem<T>>;
77
- toJSON(): T;
78
- descendants(): CompositeDataItem<T>[];
79
- ancestors(): CompositeDataItem<T>[];
80
- toggleSelect(recursive?: boolean): void;
81
- select(recursive?: boolean): CompositeItemKey[];
82
- deselect(recursive?: boolean): CompositeItemKey[];
83
- disable(recursive?: boolean): CompositeItemKey[];
84
- enable(recursive?: boolean): CompositeItemKey[];
85
- }
86
-
87
- declare type CompositeDataItemOptions<T> = CompositeDataPropGetters<T> & {
88
- initialState?: CompositeDataItemState;
89
- itemChildrenProp: string;
90
- };
91
-
92
- declare interface CompositeDataItemState {
93
- focused: boolean;
94
- selected: boolean;
95
- disabled: boolean;
96
- }
97
-
98
- declare type CompositeDataOptions<T> = Required<CompositeOptions> & CompositeDataPropGetters<T>;
99
-
100
- declare interface CompositeDataPropGetters<T> {
101
- getItemKey: (item: T) => CompositeItemKey;
102
- getItemChildren: (item: T) => T[] | undefined;
103
- }
104
-
105
- declare type CompositeItemKey = string | number;
106
-
107
- declare interface CompositeOptions {
108
- disabledKeys?: CompositeItemKey[];
109
- selectedKeys?: CompositeItemKey[];
110
- itemKeyProp?: string;
111
- itemChildrenProp?: string;
112
- }
113
-
114
- declare interface CompositeProviderOptions<T extends object> {
115
- focusProvider: AbstractFocusProvider<T>;
116
- selectionProvider?: AbstractSelectionProvider<T>;
117
- }
118
-
119
- declare interface FocusProvider {
120
- focus(itemKey: CompositeItemKey): void;
121
- focusUp(): void;
122
- focusDown(): void;
123
- focusLeft(): void;
124
- focusRight(): void;
125
- focusPageUp(): void;
126
- focesPageDown(): void;
127
- focusToFirst(): void;
128
- focusToLast(): void;
129
- focusToFirstInRow(): void;
130
- focusToLastInRow(): void;
131
- focusToTypeAheadMatch(): void;
132
- }
133
-
134
- export declare class SingleSelectionProvider<T extends object> extends AbstractSelectionProvider<T> {
135
- select(itemKey: CompositeItemKey, recursive?: boolean): void;
136
- select(item: CompositeDataItem<T>, recursive?: boolean): void;
137
- deselect(itemKey: CompositeItemKey, recursive?: boolean): void;
138
- deselect(item: CompositeDataItem<T>, recursive?: boolean): void;
139
- }
140
-
141
- export { }