@sprawlify/solid 0.0.14 → 0.0.16

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 (108) hide show
  1. package/dist/chunk-B5so6B0y.jsx +18 -0
  2. package/dist/chunk-B93cd-Dz.js +18 -0
  3. package/dist/collapsible-CX2tnXKq.js +131 -0
  4. package/dist/collapsible-sG-Rzvf2.jsx +119 -0
  5. package/dist/collection-BRr4O2_i.jsx +220 -0
  6. package/dist/collection-zj3lxnwW.js +220 -0
  7. package/dist/components/accordion/index.d.ts +69 -0
  8. package/dist/components/accordion/index.js +185 -0
  9. package/dist/components/accordion/index.jsx +159 -0
  10. package/dist/components/angle-slider/index.d.ts +74 -0
  11. package/dist/components/angle-slider/index.js +157 -0
  12. package/dist/components/angle-slider/index.jsx +146 -0
  13. package/dist/components/avatar/index.d.ts +49 -0
  14. package/dist/components/avatar/index.js +97 -0
  15. package/dist/components/avatar/index.jsx +90 -0
  16. package/dist/components/bottom-sheet/index.d.ts +80 -0
  17. package/dist/components/bottom-sheet/index.js +220 -0
  18. package/dist/components/bottom-sheet/index.jsx +179 -0
  19. package/dist/components/carousel/index.d.ts +98 -0
  20. package/dist/components/carousel/index.js +209 -0
  21. package/dist/components/carousel/index.jsx +194 -0
  22. package/dist/components/checkbox/index.d.ts +138 -0
  23. package/dist/components/checkbox/index.js +267 -0
  24. package/dist/components/checkbox/index.jsx +249 -0
  25. package/dist/components/client-only/index.d.ts +10 -0
  26. package/dist/components/client-only/index.js +24 -0
  27. package/dist/components/client-only/index.jsx +15 -0
  28. package/dist/components/clipboard/index.d.ts +72 -0
  29. package/dist/components/clipboard/index.js +151 -0
  30. package/dist/components/clipboard/index.jsx +134 -0
  31. package/dist/components/collapsible/index.d.ts +60 -0
  32. package/dist/components/collapsible/index.js +9 -0
  33. package/dist/components/collapsible/index.jsx +9 -0
  34. package/dist/components/collection/index.d.ts +3 -0
  35. package/dist/components/collection/index.js +4 -0
  36. package/dist/components/collection/index.jsx +4 -0
  37. package/dist/components/color-picker/index.d.ts +183 -0
  38. package/dist/components/color-picker/index.js +500 -0
  39. package/dist/components/color-picker/index.jsx +436 -0
  40. package/dist/components/combobox/index.d.ts +134 -0
  41. package/dist/components/combobox/index.js +357 -0
  42. package/dist/components/combobox/index.jsx +315 -0
  43. package/dist/components/date-picker/index.d.ts +165 -0
  44. package/dist/components/date-picker/index.js +476 -0
  45. package/dist/components/date-picker/index.jsx +415 -0
  46. package/dist/components/dialog/index.d.ts +80 -0
  47. package/dist/components/dialog/index.js +219 -0
  48. package/dist/components/dialog/index.jsx +173 -0
  49. package/dist/components/download-trigger/index.d.ts +25 -0
  50. package/dist/components/download-trigger/index.js +42 -0
  51. package/dist/components/download-trigger/index.jsx +38 -0
  52. package/dist/components/editable/index.d.ts +79 -0
  53. package/dist/components/editable/index.js +190 -0
  54. package/dist/components/editable/index.jsx +181 -0
  55. package/dist/components/field/index.d.ts +201 -0
  56. package/dist/components/field/index.js +10 -0
  57. package/dist/components/field/index.jsx +10 -0
  58. package/dist/components/fieldset/index.d.ts +109 -0
  59. package/dist/components/fieldset/index.js +9 -0
  60. package/dist/components/fieldset/index.jsx +9 -0
  61. package/dist/components/highlight/index.d.ts +15 -0
  62. package/dist/components/highlight/index.js +47 -0
  63. package/dist/components/highlight/index.jsx +31 -0
  64. package/dist/components/presence/index.d.ts +5 -0
  65. package/dist/components/presence/index.js +9 -0
  66. package/dist/components/presence/index.jsx +9 -0
  67. package/dist/components/select/index.d.ts +134 -0
  68. package/dist/components/select/index.js +363 -0
  69. package/dist/components/select/index.jsx +312 -0
  70. package/dist/compose-refs-BVVIB7xn.js +20 -0
  71. package/dist/compose-refs-icUeuyHm.jsx +20 -0
  72. package/dist/core-DbInRfhI.jsx +416 -0
  73. package/dist/core-oNB2jGcl.js +416 -0
  74. package/dist/create-split-props-B8A7_AF7.jsx +7 -0
  75. package/dist/create-split-props-pQu7jijw.js +7 -0
  76. package/dist/factory-4A25bngy.d.ts +14 -0
  77. package/dist/factory-Ch5jgk20.jsx +37 -0
  78. package/dist/factory-PGDAvOKb.js +43 -0
  79. package/dist/field-BRr9Zdes.jsx +260 -0
  80. package/dist/field-CoYiA2ek.js +288 -0
  81. package/dist/fieldset-B_LyllEa.jsx +169 -0
  82. package/dist/fieldset-BrJqMLEd.js +184 -0
  83. package/dist/index-C7N791Fc.d.ts +23 -0
  84. package/dist/index-GEfvAmRc.d.ts +76 -0
  85. package/dist/index-j2avJy7D.d.ts +38 -0
  86. package/dist/index-oc8gLl07.d.ts +38 -0
  87. package/dist/index.d.ts +5 -29
  88. package/dist/index.js +4 -511
  89. package/dist/index.jsx +4 -497
  90. package/dist/presence-Bmn43U_q.jsx +68 -0
  91. package/dist/presence-BpwBRlZW.js +81 -0
  92. package/dist/providers-Bo0OFe08.js +96 -0
  93. package/dist/providers-DFaRRd80.jsx +82 -0
  94. package/dist/render-strategy-BNECKEQk.d.ts +9 -0
  95. package/dist/render-strategy-CdJhRv3I.jsx +12 -0
  96. package/dist/render-strategy-DFlz7Uc4.js +12 -0
  97. package/dist/run-if-fn-A3VwXy-o.jsx +6 -0
  98. package/dist/run-if-fn-D5794CxE.js +6 -0
  99. package/dist/types-Dbw4va3W.d.ts +9 -0
  100. package/dist/utils/index.d.ts +1 -1
  101. package/dist/utils/index.js +2 -1
  102. package/dist/utils/index.jsx +2 -1
  103. package/dist/utils-DQi-Cen5.js +0 -0
  104. package/dist/utils-vSjszv0W.jsx +0 -0
  105. package/package.json +102 -2
  106. /package/dist/{utils-DSKoW7eB.jsx → create-context-C3rvZvkc.jsx} +0 -0
  107. /package/dist/{utils-GEMuT7an.js → create-context-GfQ_MylE.js} +0 -0
  108. /package/dist/{index-C_ThrXdH.d.ts → index-B6dBCfnB.d.ts} +0 -0
@@ -0,0 +1,18 @@
1
+ //#region rolldown:runtime
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (all, symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __export as t };
@@ -0,0 +1,18 @@
1
+ //#region rolldown:runtime
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (all, symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __export as t };
@@ -0,0 +1,131 @@
1
+ import { t as __export } from "./chunk-B93cd-Dz.js";
2
+ import { i as useMachine, n as normalizeProps, r as mergeProps$2 } from "./core-oNB2jGcl.js";
3
+ import { t as runIfFn } from "./run-if-fn-D5794CxE.js";
4
+ import { t as createContext$1 } from "./create-context-GfQ_MylE.js";
5
+ import { i as useLocaleContext, o as useEnvironmentContext } from "./providers-Bo0OFe08.js";
6
+ import { t as createSplitProps } from "./create-split-props-pQu7jijw.js";
7
+ import { n as splitRenderStrategyProps } from "./render-strategy-DFlz7Uc4.js";
8
+ import { t as sprawlify } from "./factory-PGDAvOKb.js";
9
+ import { Show, createEffect, createMemo, createSignal, createUniqueId } from "solid-js";
10
+ import { createComponent } from "solid-js/web";
11
+ import * as collapsible from "@sprawlify/primitives/machines/collapsible";
12
+ import { anatomy as collapsibleAnatomy } from "@sprawlify/primitives/machines/collapsible";
13
+
14
+ //#region src/components/collapsible/use-collapsible-context.ts
15
+ const [CollapsibleProvider, useCollapsibleContext] = createContext$1({
16
+ hookName: "useCollapsibleContext",
17
+ providerName: "<CollapsibleProvider />"
18
+ });
19
+
20
+ //#endregion
21
+ //#region src/components/collapsible/collapsible-content.tsx
22
+ const CollapsibleContent = (props) => {
23
+ const api = useCollapsibleContext();
24
+ const mergedProps = mergeProps$2(() => api().getContentProps(), props);
25
+ return createComponent(Show, {
26
+ get when() {
27
+ return !api().unmounted;
28
+ },
29
+ get children() {
30
+ return createComponent(sprawlify.div, mergedProps);
31
+ }
32
+ });
33
+ };
34
+
35
+ //#endregion
36
+ //#region src/components/collapsible/collapsible-context.tsx
37
+ const CollapsibleContext = (props) => props.children(useCollapsibleContext());
38
+
39
+ //#endregion
40
+ //#region src/components/collapsible/use-collapsible.ts
41
+ const useCollapsible = (props = {}) => {
42
+ const id = createUniqueId();
43
+ const locale = useLocaleContext();
44
+ const environment = useEnvironmentContext();
45
+ const [renderStrategyProps, collapsibleProps] = splitRenderStrategyProps(runIfFn(props));
46
+ const machineProps = createMemo(() => ({
47
+ id,
48
+ dir: locale().dir,
49
+ getRootNode: environment().getRootNode,
50
+ ...collapsibleProps
51
+ }));
52
+ const service = useMachine(collapsible.machine, machineProps);
53
+ const [wasVisible, setWasVisible] = createSignal(false);
54
+ createEffect(() => {
55
+ if (api().visible) setWasVisible(true);
56
+ });
57
+ const api = createMemo(() => collapsible.connect(service, normalizeProps));
58
+ return createMemo(() => ({
59
+ ...api(),
60
+ unmounted: !api().visible && !wasVisible() && renderStrategyProps.lazyMount || renderStrategyProps.unmountOnExit && !api().visible && wasVisible()
61
+ }));
62
+ };
63
+
64
+ //#endregion
65
+ //#region src/components/collapsible/collapsible-root.tsx
66
+ const CollapsibleRoot = (props) => {
67
+ const [useCollapsibleProps, localProps] = createSplitProps()(props, [
68
+ "collapsedHeight",
69
+ "collapsedWidth",
70
+ "defaultOpen",
71
+ "disabled",
72
+ "id",
73
+ "ids",
74
+ "lazyMount",
75
+ "onExitComplete",
76
+ "onOpenChange",
77
+ "open",
78
+ "unmountOnExit"
79
+ ]);
80
+ const api = useCollapsible(useCollapsibleProps);
81
+ const mergedProps = mergeProps$2(() => api().getRootProps(), localProps);
82
+ return createComponent(CollapsibleProvider, {
83
+ value: api,
84
+ get children() {
85
+ return createComponent(sprawlify.div, mergedProps);
86
+ }
87
+ });
88
+ };
89
+
90
+ //#endregion
91
+ //#region src/components/collapsible/collapsible-root-provider.tsx
92
+ const CollapsibleRootProvider = (props) => {
93
+ const [{ value: collapsible$1 }, localProps] = createSplitProps()(props, ["value"]);
94
+ const mergedProps = mergeProps$2(() => collapsible$1().getRootProps(), localProps);
95
+ return createComponent(CollapsibleProvider, {
96
+ value: collapsible$1,
97
+ get children() {
98
+ return createComponent(sprawlify.div, mergedProps);
99
+ }
100
+ });
101
+ };
102
+
103
+ //#endregion
104
+ //#region src/components/collapsible/collapsible-trigger.tsx
105
+ const CollapsibleTrigger = (props) => {
106
+ const api = useCollapsibleContext();
107
+ const mergedProps = mergeProps$2(() => api().getTriggerProps(), props);
108
+ return createComponent(sprawlify.button, mergedProps);
109
+ };
110
+
111
+ //#endregion
112
+ //#region src/components/collapsible/collapsible-indicator.tsx
113
+ const CollapsibleIndicator = (props) => {
114
+ const collapsible$1 = useCollapsibleContext();
115
+ const mergedProps = mergeProps$2(() => collapsible$1().getIndicatorProps(), props);
116
+ return createComponent(sprawlify.div, mergedProps);
117
+ };
118
+
119
+ //#endregion
120
+ //#region src/components/collapsible/collapsible.ts
121
+ var collapsible_exports = /* @__PURE__ */ __export({
122
+ Content: () => CollapsibleContent,
123
+ Context: () => CollapsibleContext,
124
+ Indicator: () => CollapsibleIndicator,
125
+ Root: () => CollapsibleRoot,
126
+ RootProvider: () => CollapsibleRootProvider,
127
+ Trigger: () => CollapsibleTrigger
128
+ });
129
+
130
+ //#endregion
131
+ export { CollapsibleRootProvider as a, CollapsibleContext as c, CollapsibleTrigger as i, CollapsibleContent as l, collapsibleAnatomy as n, CollapsibleRoot as o, CollapsibleIndicator as r, useCollapsible as s, collapsible_exports as t, useCollapsibleContext as u };
@@ -0,0 +1,119 @@
1
+ import { t as __export } from "./chunk-B5so6B0y.jsx";
2
+ import { i as useMachine, n as normalizeProps, r as mergeProps$1 } from "./core-DbInRfhI.jsx";
3
+ import { t as runIfFn } from "./run-if-fn-A3VwXy-o.jsx";
4
+ import { t as createContext$1 } from "./create-context-C3rvZvkc.jsx";
5
+ import { i as useLocaleContext, o as useEnvironmentContext } from "./providers-DFaRRd80.jsx";
6
+ import { t as createSplitProps } from "./create-split-props-B8A7_AF7.jsx";
7
+ import { n as splitRenderStrategyProps } from "./render-strategy-CdJhRv3I.jsx";
8
+ import { t as sprawlify } from "./factory-Ch5jgk20.jsx";
9
+ import { Show, createEffect, createMemo, createSignal, createUniqueId } from "solid-js";
10
+ import * as collapsible from "@sprawlify/primitives/machines/collapsible";
11
+ import { anatomy as collapsibleAnatomy } from "@sprawlify/primitives/machines/collapsible";
12
+
13
+ //#region src/components/collapsible/use-collapsible-context.ts
14
+ const [CollapsibleProvider, useCollapsibleContext] = createContext$1({
15
+ hookName: "useCollapsibleContext",
16
+ providerName: "<CollapsibleProvider />"
17
+ });
18
+
19
+ //#endregion
20
+ //#region src/components/collapsible/collapsible-content.tsx
21
+ const CollapsibleContent = (props) => {
22
+ const api = useCollapsibleContext();
23
+ const mergedProps = mergeProps$1(() => api().getContentProps(), props);
24
+ return <Show when={!api().unmounted}>
25
+ <sprawlify.div {...mergedProps} />
26
+ </Show>;
27
+ };
28
+
29
+ //#endregion
30
+ //#region src/components/collapsible/collapsible-context.tsx
31
+ const CollapsibleContext = (props) => props.children(useCollapsibleContext());
32
+
33
+ //#endregion
34
+ //#region src/components/collapsible/use-collapsible.ts
35
+ const useCollapsible = (props = {}) => {
36
+ const id = createUniqueId();
37
+ const locale = useLocaleContext();
38
+ const environment = useEnvironmentContext();
39
+ const [renderStrategyProps, collapsibleProps] = splitRenderStrategyProps(runIfFn(props));
40
+ const machineProps = createMemo(() => ({
41
+ id,
42
+ dir: locale().dir,
43
+ getRootNode: environment().getRootNode,
44
+ ...collapsibleProps
45
+ }));
46
+ const service = useMachine(collapsible.machine, machineProps);
47
+ const [wasVisible, setWasVisible] = createSignal(false);
48
+ createEffect(() => {
49
+ if (api().visible) setWasVisible(true);
50
+ });
51
+ const api = createMemo(() => collapsible.connect(service, normalizeProps));
52
+ return createMemo(() => ({
53
+ ...api(),
54
+ unmounted: !api().visible && !wasVisible() && renderStrategyProps.lazyMount || renderStrategyProps.unmountOnExit && !api().visible && wasVisible()
55
+ }));
56
+ };
57
+
58
+ //#endregion
59
+ //#region src/components/collapsible/collapsible-root.tsx
60
+ const CollapsibleRoot = (props) => {
61
+ const [useCollapsibleProps, localProps] = createSplitProps()(props, [
62
+ "collapsedHeight",
63
+ "collapsedWidth",
64
+ "defaultOpen",
65
+ "disabled",
66
+ "id",
67
+ "ids",
68
+ "lazyMount",
69
+ "onExitComplete",
70
+ "onOpenChange",
71
+ "open",
72
+ "unmountOnExit"
73
+ ]);
74
+ const api = useCollapsible(useCollapsibleProps);
75
+ const mergedProps = mergeProps$1(() => api().getRootProps(), localProps);
76
+ return <CollapsibleProvider value={api}>
77
+ <sprawlify.div {...mergedProps} />
78
+ </CollapsibleProvider>;
79
+ };
80
+
81
+ //#endregion
82
+ //#region src/components/collapsible/collapsible-root-provider.tsx
83
+ const CollapsibleRootProvider = (props) => {
84
+ const [{ value: collapsible$1 }, localProps] = createSplitProps()(props, ["value"]);
85
+ const mergedProps = mergeProps$1(() => collapsible$1().getRootProps(), localProps);
86
+ return <CollapsibleProvider value={collapsible$1}>
87
+ <sprawlify.div {...mergedProps} />
88
+ </CollapsibleProvider>;
89
+ };
90
+
91
+ //#endregion
92
+ //#region src/components/collapsible/collapsible-trigger.tsx
93
+ const CollapsibleTrigger = (props) => {
94
+ const api = useCollapsibleContext();
95
+ const mergedProps = mergeProps$1(() => api().getTriggerProps(), props);
96
+ return <sprawlify.button {...mergedProps} />;
97
+ };
98
+
99
+ //#endregion
100
+ //#region src/components/collapsible/collapsible-indicator.tsx
101
+ const CollapsibleIndicator = (props) => {
102
+ const collapsible$1 = useCollapsibleContext();
103
+ const mergedProps = mergeProps$1(() => collapsible$1().getIndicatorProps(), props);
104
+ return <sprawlify.div {...mergedProps} />;
105
+ };
106
+
107
+ //#endregion
108
+ //#region src/components/collapsible/collapsible.ts
109
+ var collapsible_exports = /* @__PURE__ */ __export({
110
+ Content: () => CollapsibleContent,
111
+ Context: () => CollapsibleContext,
112
+ Indicator: () => CollapsibleIndicator,
113
+ Root: () => CollapsibleRoot,
114
+ RootProvider: () => CollapsibleRootProvider,
115
+ Trigger: () => CollapsibleTrigger
116
+ });
117
+
118
+ //#endregion
119
+ export { CollapsibleRootProvider as a, CollapsibleContext as c, CollapsibleTrigger as i, CollapsibleContent as l, collapsibleAnatomy as n, CollapsibleRoot as o, CollapsibleIndicator as r, useCollapsible as s, collapsible_exports as t, useCollapsibleContext as u };
@@ -0,0 +1,220 @@
1
+ import { i as useMachine } from "./core-DbInRfhI.jsx";
2
+ import { t as runIfFn } from "./run-if-fn-A3VwXy-o.jsx";
3
+ import { createEffect, createMemo, createSignal, on, splitProps } from "solid-js";
4
+ import { GridCollection, ListCollection, Selection, TreeCollection, filePathToTree } from "@sprawlify/primitives/collection";
5
+ import * as asyncList from "@sprawlify/primitives/machines/async-list";
6
+
7
+ //#region src/components/collection/grid-collection.ts
8
+ const createGridCollection = (options) => new GridCollection(options);
9
+
10
+ //#endregion
11
+ //#region src/components/collection/list-collection.ts
12
+ const createListCollection = (options) => new ListCollection(options);
13
+
14
+ //#endregion
15
+ //#region src/components/collection/tree-collection.ts
16
+ const createTreeCollection = (options) => new TreeCollection(options);
17
+ const createFileTreeCollection = (paths) => filePathToTree(paths);
18
+
19
+ //#endregion
20
+ //#region src/components/collection/use-async-list.ts
21
+ const useAsyncList = (props) => {
22
+ const machineProps = createMemo(() => runIfFn(props));
23
+ const service = useMachine(asyncList.machine, machineProps);
24
+ return createMemo(() => asyncList.connect(service));
25
+ };
26
+
27
+ //#endregion
28
+ //#region src/components/collection/use-list-collection.ts
29
+ function useListCollection(props) {
30
+ const splittedProps = createMemo(() => {
31
+ return splitProps(typeof props === "function" ? props() : props, [
32
+ "initialItems",
33
+ "filter",
34
+ "limit"
35
+ ]);
36
+ });
37
+ const init = () => {
38
+ const [localProps] = splittedProps();
39
+ return localProps.initialItems;
40
+ };
41
+ const [items, setItemsImpl] = createSignal(init());
42
+ const [filterText, setFilterText] = createSignal("");
43
+ const setItems = (newItems) => {
44
+ setItemsImpl(newItems);
45
+ setFilterText("");
46
+ };
47
+ const create = (itemsToCreate) => {
48
+ const [, collectionOptions] = splittedProps();
49
+ return createListCollection({
50
+ ...collectionOptions,
51
+ items: itemsToCreate
52
+ });
53
+ };
54
+ return {
55
+ collection: createMemo(() => {
56
+ const [localProps, collectionOptions] = splittedProps();
57
+ const filter = localProps.filter;
58
+ let activeItems = items();
59
+ if (filterText() && filter) activeItems = create(items()).filter((itemString, _index, item) => filter(itemString, filterText(), item)).items;
60
+ const limitedItems = localProps.limit == null ? activeItems : activeItems.slice(0, localProps.limit);
61
+ return createListCollection({
62
+ ...collectionOptions,
63
+ items: limitedItems
64
+ });
65
+ }),
66
+ filter: (inputValue = "") => {
67
+ setFilterText(inputValue);
68
+ },
69
+ set: (newItems) => {
70
+ setItems(newItems);
71
+ },
72
+ reset: () => {
73
+ const [localProps] = splittedProps();
74
+ setItems(localProps.initialItems);
75
+ },
76
+ clear: () => {
77
+ setItems([]);
78
+ },
79
+ insert: (index, ...itemsToInsert) => {
80
+ const newItems = create(items()).insert(index, ...itemsToInsert).items;
81
+ setItems(newItems);
82
+ },
83
+ insertBefore: (value, ...itemsToInsert) => {
84
+ const newItems = create(items()).insertBefore(value, ...itemsToInsert).items;
85
+ setItems(newItems);
86
+ },
87
+ insertAfter: (value, ...itemsToInsert) => {
88
+ const newItems = create(items()).insertAfter(value, ...itemsToInsert).items;
89
+ setItems(newItems);
90
+ },
91
+ remove: (...itemOrValues) => {
92
+ const newItems = create(items()).remove(...itemOrValues).items;
93
+ setItems(newItems);
94
+ },
95
+ move: (value, to) => {
96
+ const newItems = create(items()).move(value, to).items;
97
+ setItems(newItems);
98
+ },
99
+ moveBefore: (value, ...values) => {
100
+ const newItems = create(items()).moveBefore(value, ...values).items;
101
+ setItems(newItems);
102
+ },
103
+ moveAfter: (value, ...values) => {
104
+ const newItems = create(items()).moveAfter(value, ...values).items;
105
+ setItems(newItems);
106
+ },
107
+ reorder: (from, to) => {
108
+ const newItems = create(items()).reorder(from, to).items;
109
+ setItems(newItems);
110
+ },
111
+ append: (...itemsToAppend) => {
112
+ const newItems = create(items()).append(...itemsToAppend).items;
113
+ setItems(newItems);
114
+ },
115
+ upsert: (value, item, mode = "append") => {
116
+ const newItems = create(items()).upsert(value, item, mode).items;
117
+ setItems(newItems);
118
+ },
119
+ prepend: (...itemsToPrepend) => {
120
+ const newItems = create(items()).prepend(...itemsToPrepend).items;
121
+ setItems(newItems);
122
+ },
123
+ update: (value, item) => {
124
+ const newItems = create(items()).update(value, item).items;
125
+ setItems(newItems);
126
+ }
127
+ };
128
+ }
129
+
130
+ //#endregion
131
+ //#region src/components/collection/use-list-selection.ts
132
+ function useListSelection(props) {
133
+ const splittedProps = createMemo(() => {
134
+ return splitProps(typeof props === "function" ? props() : props, [
135
+ "collection",
136
+ "selectionMode",
137
+ "deselectable",
138
+ "initialSelectedValues",
139
+ "resetOnCollectionChange"
140
+ ]);
141
+ });
142
+ const createSelection = (values = []) => {
143
+ const [localProps] = splittedProps();
144
+ const selection$1 = new Selection(values);
145
+ selection$1.selectionMode = localProps.selectionMode ?? "single";
146
+ selection$1.deselectable = localProps.deselectable ?? true;
147
+ return selection$1;
148
+ };
149
+ const init = () => {
150
+ const [localProps] = splittedProps();
151
+ return createSelection(localProps.initialSelectedValues ?? []);
152
+ };
153
+ const [selection, setSelection] = createSignal(init());
154
+ const watchDeps = () => {
155
+ const [{ collection, resetOnCollectionChange }] = splittedProps();
156
+ return [collection.getValues(), resetOnCollectionChange];
157
+ };
158
+ createEffect(on(watchDeps, ([, resetOnCollectionChange]) => {
159
+ if (resetOnCollectionChange) setSelection(createSelection());
160
+ }, { defer: true }));
161
+ return {
162
+ selectedValues: createMemo(() => Array.from(selection())),
163
+ isEmpty: createMemo(() => selection().isEmpty()),
164
+ firstSelectedValue: createMemo(() => {
165
+ const [localProps] = splittedProps();
166
+ return selection().firstSelectedValue(localProps.collection);
167
+ }),
168
+ lastSelectedValue: createMemo(() => {
169
+ const [localProps] = splittedProps();
170
+ return selection().lastSelectedValue(localProps.collection);
171
+ }),
172
+ isSelected: (value) => {
173
+ return selection().isSelected(value);
174
+ },
175
+ isAllSelected: () => {
176
+ const [localProps] = splittedProps();
177
+ const allValues = localProps.collection.getValues();
178
+ return allValues.length > 0 && allValues.every((value) => selection().isSelected(value));
179
+ },
180
+ isSomeSelected: () => {
181
+ const [localProps] = splittedProps();
182
+ return localProps.collection.getValues().some((value) => selection().isSelected(value));
183
+ },
184
+ canSelect: (value) => {
185
+ const [localProps] = splittedProps();
186
+ return selection().canSelect(localProps.collection, value);
187
+ },
188
+ select: (value, forceToggle) => {
189
+ const [localProps] = splittedProps();
190
+ setSelection(selection().select(localProps.collection, value, forceToggle));
191
+ },
192
+ deselect: (value) => {
193
+ setSelection(selection().deselect(value));
194
+ },
195
+ toggle: (value) => {
196
+ const [localProps] = splittedProps();
197
+ setSelection(selection().toggleSelection(localProps.collection, value));
198
+ },
199
+ replace: (value) => {
200
+ const [localProps] = splittedProps();
201
+ setSelection(selection().replaceSelection(localProps.collection, value));
202
+ },
203
+ extend: (anchorValue, targetValue) => {
204
+ const [localProps] = splittedProps();
205
+ setSelection(selection().extendSelection(localProps.collection, anchorValue, targetValue));
206
+ },
207
+ setSelectedValues: (values) => {
208
+ setSelection(selection().setSelection(values));
209
+ },
210
+ clear: () => {
211
+ setSelection(selection().clearSelection());
212
+ },
213
+ resetSelection: () => {
214
+ setSelection(createSelection());
215
+ }
216
+ };
217
+ }
218
+
219
+ //#endregion
220
+ export { createTreeCollection as a, createFileTreeCollection as i, useListCollection as n, createListCollection as o, useAsyncList as r, createGridCollection as s, useListSelection as t };