@brytdesigns/web-component-core 1.1.6 → 3.0.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 (84) hide show
  1. package/dist/main/animation/awaitAllAnimations.js +28 -32
  2. package/dist/main/animation/awaitAllAnimations.js.map +1 -1
  3. package/dist/main/animation/content.js +156 -0
  4. package/dist/main/animation/content.js.map +1 -0
  5. package/dist/main/animation/controlsToPromise.js +6 -5
  6. package/dist/main/animation/controlsToPromise.js.map +1 -1
  7. package/dist/main/animation/getTransitionConfig.js +52 -51
  8. package/dist/main/animation/getTransitionConfig.js.map +1 -1
  9. package/dist/main/animation/index.d.ts +61 -1
  10. package/dist/main/animation/index.js +5 -5
  11. package/dist/main/focusTrap/index.d.ts +1 -1
  12. package/dist/main/focusTrap/index.js +10 -14
  13. package/dist/main/focusTrap/index.js.map +1 -1
  14. package/dist/main/hooks/index.d.ts +14 -9
  15. package/dist/main/hooks/index.js +5 -6
  16. package/dist/main/hooks/internal/getValueFromPath.js +9 -10
  17. package/dist/main/hooks/internal/getValueFromPath.js.map +1 -1
  18. package/dist/main/hooks/makePathContextHooks.js +58 -68
  19. package/dist/main/hooks/makePathContextHooks.js.map +1 -1
  20. package/dist/main/hooks/makePathDataArrayComponent.js +61 -67
  21. package/dist/main/hooks/makePathDataArrayComponent.js.map +1 -1
  22. package/dist/main/hooks/makePathDataArrayItemComponent.js +17 -21
  23. package/dist/main/hooks/makePathDataArrayItemComponent.js.map +1 -1
  24. package/dist/main/hooks/makePathDataComponent.js +31 -33
  25. package/dist/main/hooks/makePathDataComponent.js.map +1 -1
  26. package/dist/main/index.d.ts +304 -27
  27. package/dist/main/index.js +28 -7
  28. package/dist/main/promise/abortablePromise.js +10 -15
  29. package/dist/main/promise/abortablePromise.js.map +1 -1
  30. package/dist/main/promise/index.js +2 -3
  31. package/dist/main/utils/a11y.js +133 -0
  32. package/dist/main/utils/a11y.js.map +1 -0
  33. package/dist/main/utils/body-scroll-lock.js +40 -18
  34. package/dist/main/utils/body-scroll-lock.js.map +1 -1
  35. package/dist/main/utils/checkLoaded.js +4 -4
  36. package/dist/main/utils/checkLoaded.js.map +1 -1
  37. package/dist/main/utils/createRemoteContext.js +85 -0
  38. package/dist/main/utils/createRemoteContext.js.map +1 -0
  39. package/dist/main/utils/disclosure.js +52 -0
  40. package/dist/main/utils/disclosure.js.map +1 -0
  41. package/dist/main/utils/formatValue.js +14 -18
  42. package/dist/main/utils/formatValue.js.map +1 -1
  43. package/dist/main/utils/getContextFromProvider.js +15 -10
  44. package/dist/main/utils/getContextFromProvider.js.map +1 -1
  45. package/dist/main/utils/getTemplateContent.js +6 -7
  46. package/dist/main/utils/getTemplateContent.js.map +1 -1
  47. package/dist/main/utils/guarded-effect.js +72 -0
  48. package/dist/main/utils/guarded-effect.js.map +1 -0
  49. package/dist/main/utils/index.d.ts +237 -20
  50. package/dist/main/utils/index.js +15 -12
  51. package/dist/main/utils/invokeOnLoaded.js +13 -13
  52. package/dist/main/utils/invokeOnLoaded.js.map +1 -1
  53. package/dist/main/utils/isCustomElement.js +4 -3
  54. package/dist/main/utils/isCustomElement.js.map +1 -1
  55. package/dist/main/utils/nested-overlays.js +36 -0
  56. package/dist/main/utils/nested-overlays.js.map +1 -0
  57. package/dist/main/utils/solid-element.js +48 -88
  58. package/dist/main/utils/solid-element.js.map +1 -1
  59. package/dist/main/utils/toHyphenated.js +4 -3
  60. package/dist/main/utils/toHyphenated.js.map +1 -1
  61. package/package.json +16 -15
  62. package/dist/esm/animation/index.js +0 -97
  63. package/dist/esm/animation/index.js.map +0 -1
  64. package/dist/esm/focusTrap/index.js +0 -18
  65. package/dist/esm/focusTrap/index.js.map +0 -1
  66. package/dist/esm/hooks/index.js +0 -235
  67. package/dist/esm/hooks/index.js.map +0 -1
  68. package/dist/esm/index.js +0 -547
  69. package/dist/esm/index.js.map +0 -1
  70. package/dist/esm/promise/index.js +0 -20
  71. package/dist/esm/promise/index.js.map +0 -1
  72. package/dist/esm/utils/index.js +0 -236
  73. package/dist/esm/utils/index.js.map +0 -1
  74. package/dist/main/animation/index.js.map +0 -1
  75. package/dist/main/hooks/index.js.map +0 -1
  76. package/dist/main/hooks/internal/index.js +0 -3
  77. package/dist/main/hooks/internal/index.js.map +0 -1
  78. package/dist/main/hooks/internal/types.js +0 -3
  79. package/dist/main/hooks/internal/types.js.map +0 -1
  80. package/dist/main/index.js.map +0 -1
  81. package/dist/main/promise/index.js.map +0 -1
  82. package/dist/main/utils/createWithElementContext.js +0 -64
  83. package/dist/main/utils/createWithElementContext.js.map +0 -1
  84. package/dist/main/utils/index.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brytdesigns/web-component-core",
3
- "version": "1.1.6",
3
+ "version": "3.0.0",
4
4
  "description": "Web component core utilities for building solid based web components",
5
5
  "main": "./dist/main/index.js",
6
6
  "module": "./dist/main/index.js",
@@ -9,27 +9,27 @@
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/main/index.d.ts",
12
- "module": "./dist/main/index.js"
12
+ "default": "./dist/main/index.js"
13
13
  },
14
14
  "./focusTrap": {
15
15
  "types": "./dist/main/focusTrap/index.d.ts",
16
- "module": "./dist/main/focusTrap/index.js"
16
+ "default": "./dist/main/focusTrap/index.js"
17
17
  },
18
18
  "./promise": {
19
19
  "types": "./dist/main/promise/index.d.ts",
20
- "module": "./dist/main/promise/index.js"
20
+ "default": "./dist/main/promise/index.js"
21
21
  },
22
22
  "./animation": {
23
23
  "types": "./dist/main/animation/index.d.ts",
24
- "module": "./dist/main/animation/index.js"
24
+ "default": "./dist/main/animation/index.js"
25
25
  },
26
26
  "./utils": {
27
27
  "types": "./dist/main/utils/index.d.ts",
28
- "module": "./dist/main/utils/index.js"
28
+ "default": "./dist/main/utils/index.js"
29
29
  },
30
30
  "./hooks": {
31
31
  "types": "./dist/main/hooks/index.d.ts",
32
- "module": "./dist/main/hooks/index.js"
32
+ "default": "./dist/main/hooks/index.js"
33
33
  }
34
34
  },
35
35
  "files": [
@@ -39,20 +39,21 @@
39
39
  "author": "Bryt Designs",
40
40
  "license": "ISC",
41
41
  "dependencies": {
42
- "@solid-primitives/set": "^0.7.3",
42
+ "@solid-primitives/set": "^1.0.0-next.2",
43
+ "@solidjs/element": "2.0.0-rc.14",
44
+ "@solidjs/web": "2.0.0-rc.14",
43
45
  "body-scroll-lock-upgrade": "^1.1.0",
44
46
  "component-register": "0.8.7",
45
- "focus-trap": "^7.6.4",
46
- "motion": "^12.18.1",
47
- "solid-js": "^1.9.9"
47
+ "focus-trap": "^7.8.0",
48
+ "motion": "^12.43.0",
49
+ "solid-js": "2.0.0-rc.14"
48
50
  },
49
51
  "devDependencies": {
50
- "dts-bundle-generator": "^9.5.1",
51
- "tsup": "^8.4.0",
52
- "@repo/js-delivr-imports-plugin": "1.1.5"
52
+ "@repo/vite-config": "0.0.0",
53
+ "vite": "^8.2.2"
53
54
  },
54
55
  "scripts": {
55
- "build": "tsup --clean",
56
+ "build": "vite build",
56
57
  "typecheck": "tsc --noEmit"
57
58
  }
58
59
  }
@@ -1,97 +0,0 @@
1
- // src/animation/controlsToPromise.ts
2
- async function controlsToPromise(controls) {
3
- return new Promise((resolve) => {
4
- controls.then(() => resolve(null));
5
- });
6
- }
7
-
8
- // src/animation/awaitAllAnimations.ts
9
- function awaitAllAnimations(promises) {
10
- return new Promise((resolve, _) => {
11
- const results = [];
12
- let remaining = promises.length;
13
- if (remaining === 0) {
14
- resolve([]);
15
- return;
16
- }
17
- function updateResults(value, index) {
18
- results[index] = value;
19
- remaining -= 1;
20
- if (remaining === 0) {
21
- resolve(results);
22
- }
23
- }
24
- promises.forEach((p, i) => {
25
- try {
26
- if (p?.state === "idle") {
27
- updateResults(null, i);
28
- } else {
29
- p.then(() => {
30
- updateResults(null, i);
31
- });
32
- }
33
- } catch (e) {
34
- p.then(() => {
35
- updateResults(null, i);
36
- });
37
- }
38
- });
39
- });
40
- }
41
-
42
- // src/animation/getTransitionConfig.ts
43
- function getTransitionConfig(style) {
44
- const properties = {
45
- bounce: style.getPropertyValue("--motion--bounce"),
46
- bounceDamping: style.getPropertyValue("--motion--bounce-damping"),
47
- bounceStiffness: style.getPropertyValue("--motion--bounce-stiffness"),
48
- duration: style.getPropertyValue("--motion--duration"),
49
- damping: style.getPropertyValue("--motion--damping"),
50
- delay: style.getPropertyValue("--motion--delay"),
51
- ease: style.getPropertyValue("--motion--ease"),
52
- elapsed: style.getPropertyValue("--motion--elapsed"),
53
- mass: style.getPropertyValue("--motion--mass"),
54
- max: style.getPropertyValue("--motion--max"),
55
- min: style.getPropertyValue("--motion--min"),
56
- power: style.getPropertyValue("--motion--power"),
57
- repeat: style.getPropertyValue("--motion--repeat"),
58
- repeatDelay: style.getPropertyValue("--motion--repeat-delay"),
59
- repeatType: style.getPropertyValue("--motion--repeat-type"),
60
- restDelta: style.getPropertyValue("--motion--rest-delta"),
61
- restSpeed: style.getPropertyValue("--motion--rest-speed"),
62
- startTime: style.getPropertyValue("--motion--start-time"),
63
- timeConstant: style.getPropertyValue("--motion--time-constant"),
64
- times: style.getPropertyValue("--motion--times"),
65
- type: style.getPropertyValue("--motion--type"),
66
- velocity: style.getPropertyValue("--motion--velocity"),
67
- visualDuration: style.getPropertyValue("--motion--visual-duration")
68
- };
69
- return {
70
- bounce: properties.bounce ? parseFloat(properties.bounce) : void 0,
71
- bounceDamping: properties.bounceDamping ? parseFloat(properties.bounceDamping) : void 0,
72
- bounceStiffness: properties.bounceStiffness ? parseFloat(properties.bounceStiffness) : void 0,
73
- duration: properties.duration ? parseFloat(properties.duration) : void 0,
74
- damping: properties.damping ? parseFloat(properties.damping) : void 0,
75
- delay: properties.delay ? parseFloat(properties.delay) : void 0,
76
- ease: properties.ease ? properties.ease : void 0,
77
- elapsed: properties.elapsed ? parseFloat(properties.elapsed) : void 0,
78
- mass: properties.mass ? parseFloat(properties.mass) : void 0,
79
- max: properties.max ? parseFloat(properties.max) : void 0,
80
- min: properties.min ? parseFloat(properties.min) : void 0,
81
- power: properties.power ? parseFloat(properties.power) : void 0,
82
- repeat: properties.repeat ? parseInt(properties.repeat) : void 0,
83
- repeatDelay: properties.repeatDelay ? parseFloat(properties.repeatDelay) : void 0,
84
- repeatType: properties.repeatType ? properties.repeatType : void 0,
85
- restDelta: properties.restDelta ? parseFloat(properties.restDelta) : void 0,
86
- restSpeed: properties.restSpeed ? parseFloat(properties.restSpeed) : void 0,
87
- startTime: properties.startTime ? parseFloat(properties.startTime) : void 0,
88
- timeConstant: properties.timeConstant ? parseFloat(properties.timeConstant) : void 0,
89
- type: properties.type ? properties.type : void 0,
90
- velocity: properties.velocity ? parseFloat(properties.velocity) : void 0,
91
- visualDuration: properties.visualDuration ? parseFloat(properties.visualDuration) : void 0
92
- };
93
- }
94
-
95
- export { awaitAllAnimations, controlsToPromise, getTransitionConfig };
96
- //# sourceMappingURL=index.js.map
97
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/animation/controlsToPromise.ts","../../../src/animation/awaitAllAnimations.ts","../../../src/animation/getTransitionConfig.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { AnimationPlaybackControlsWithThen } from \"motion\";\n\nexport async function controlsToPromise(\n controls: AnimationPlaybackControlsWithThen,\n) {\n return new Promise((resolve) => {\n controls.then(() => resolve(null));\n });\n}\n","import type { AnimationPlaybackControlsWithThen } from \"motion\";\n\nexport function awaitAllAnimations(\n promises: AnimationPlaybackControlsWithThen[],\n) {\n return new Promise((resolve, _) => {\n const results: any[] = [];\n let remaining = promises.length;\n if (remaining === 0) {\n resolve([]); // zero‐length edge case\n return;\n }\n\n function updateResults<T>(value: T, index: number) {\n results[index] = value;\n remaining -= 1;\n if (remaining === 0) {\n resolve(results);\n }\n }\n\n promises.forEach((p, i) => {\n try {\n if (p?.state === \"idle\") {\n updateResults(null, i);\n } else {\n p.then(() => {\n updateResults(null, i);\n });\n }\n } catch (e) {\n p.then(() => {\n updateResults(null, i);\n });\n }\n });\n });\n}\n","import type {\n Easing,\n Transition,\n AnimationGeneratorType,\n RepeatType,\n} from \"motion\";\n\nexport function getTransitionConfig(style: CSSStyleDeclaration) {\n const properties = {\n bounce: style.getPropertyValue(\"--motion--bounce\"),\n bounceDamping: style.getPropertyValue(\"--motion--bounce-damping\"),\n bounceStiffness: style.getPropertyValue(\"--motion--bounce-stiffness\"),\n duration: style.getPropertyValue(\"--motion--duration\"),\n damping: style.getPropertyValue(\"--motion--damping\"),\n delay: style.getPropertyValue(\"--motion--delay\"),\n ease: style.getPropertyValue(\"--motion--ease\"),\n elapsed: style.getPropertyValue(\"--motion--elapsed\"),\n mass: style.getPropertyValue(\"--motion--mass\"),\n max: style.getPropertyValue(\"--motion--max\"),\n min: style.getPropertyValue(\"--motion--min\"),\n power: style.getPropertyValue(\"--motion--power\"),\n repeat: style.getPropertyValue(\"--motion--repeat\"),\n repeatDelay: style.getPropertyValue(\"--motion--repeat-delay\"),\n repeatType: style.getPropertyValue(\"--motion--repeat-type\"),\n restDelta: style.getPropertyValue(\"--motion--rest-delta\"),\n restSpeed: style.getPropertyValue(\"--motion--rest-speed\"),\n startTime: style.getPropertyValue(\"--motion--start-time\"),\n timeConstant: style.getPropertyValue(\"--motion--time-constant\"),\n times: style.getPropertyValue(\"--motion--times\"),\n type: style.getPropertyValue(\"--motion--type\"),\n velocity: style.getPropertyValue(\"--motion--velocity\"),\n visualDuration: style.getPropertyValue(\"--motion--visual-duration\"),\n };\n return {\n bounce: properties.bounce ? parseFloat(properties.bounce) : undefined,\n bounceDamping: properties.bounceDamping\n ? parseFloat(properties.bounceDamping)\n : undefined,\n bounceStiffness: properties.bounceStiffness\n ? parseFloat(properties.bounceStiffness)\n : undefined,\n duration: properties.duration ? parseFloat(properties.duration) : undefined,\n damping: properties.damping ? parseFloat(properties.damping) : undefined,\n delay: properties.delay ? parseFloat(properties.delay) : undefined,\n ease: (properties.ease ? properties.ease : undefined) as Easing,\n elapsed: properties.elapsed ? parseFloat(properties.elapsed) : undefined,\n mass: properties.mass ? parseFloat(properties.mass) : undefined,\n max: properties.max ? parseFloat(properties.max) : undefined,\n min: properties.min ? parseFloat(properties.min) : undefined,\n power: properties.power ? parseFloat(properties.power) : undefined,\n repeat: properties.repeat ? parseInt(properties.repeat) : undefined,\n repeatDelay: properties.repeatDelay\n ? parseFloat(properties.repeatDelay)\n : undefined,\n repeatType: (properties.repeatType\n ? properties.repeatType\n : undefined) as RepeatType,\n restDelta: properties.restDelta\n ? parseFloat(properties.restDelta)\n : undefined,\n restSpeed: properties.restSpeed\n ? parseFloat(properties.restSpeed)\n : undefined,\n startTime: properties.startTime\n ? parseFloat(properties.startTime)\n : undefined,\n timeConstant: properties.timeConstant\n ? parseFloat(properties.timeConstant)\n : undefined,\n type: (properties.type\n ? properties.type\n : undefined) as AnimationGeneratorType,\n velocity: properties.velocity ? parseFloat(properties.velocity) : undefined,\n visualDuration: properties.visualDuration\n ? parseFloat(properties.visualDuration)\n : undefined,\n } satisfies Transition;\n}\n"]}
@@ -1,18 +0,0 @@
1
- import { createFocusTrap as createFocusTrap$1 } from 'focus-trap';
2
- import { createMemo } from 'solid-js';
3
-
4
- // src/focusTrap/index.ts
5
- var trapStack = [];
6
- var createFocusTrap = (element, options) => createMemo(() => {
7
- const o = options?.() || {
8
- trapStack
9
- };
10
- if (!o.trapStack) {
11
- o.trapStack = trapStack;
12
- }
13
- return createFocusTrap$1(element, o);
14
- });
15
-
16
- export { createFocusTrap };
17
- //# sourceMappingURL=index.js.map
18
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/focusTrap/index.ts"],"names":["_createFocusTrap"],"mappings":";;;;AAOA,IAAM,YAA8B,EAAC;AAE9B,IAAM,eAAkB,GAAA,CAC7B,OACA,EAAA,OAAA,KAEA,WAAW,MAAM;AACf,EAAM,MAAA,CAAA,GAAI,WAAe,IAAA;AAAA,IACvB;AAAA,GACF;AACA,EAAI,IAAA,CAAC,EAAE,SAAW,EAAA;AAChB,IAAA,CAAA,CAAE,SAAY,GAAA,SAAA;AAAA;AAEhB,EAAO,OAAAA,iBAAA,CAAiB,SAAS,CAAC,CAAA;AACpC,CAAC","file":"index.js","sourcesContent":["import {\n createFocusTrap as _createFocusTrap,\n type Options,\n type FocusTrap,\n} from \"focus-trap\";\nimport { createMemo, type Accessor } from \"solid-js\";\n\nconst trapStack: Array<FocusTrap> = [];\n\nexport const createFocusTrap = (\n element: HTMLElement,\n options?: Accessor<Options>,\n) =>\n createMemo(() => {\n const o = options?.() || {\n trapStack,\n };\n if (!o.trapStack) {\n o.trapStack = trapStack;\n }\n return _createFocusTrap(element, o);\n });\n"]}
@@ -1,235 +0,0 @@
1
- import { createRoot, createEffect, Show, createMemo, For } from 'solid-js';
2
- import { createContext, provide, consume } from 'component-register';
3
- import 'solid-js/web';
4
- import { ReactiveSet } from '@solid-primitives/set';
5
- import { clearAllBodyScrollLocks } from 'body-scroll-lock-upgrade';
6
- import html2 from 'solid-js/html';
7
-
8
- // src/hooks/makePathContextHooks.ts
9
-
10
- // src/hooks/internal/getValueFromPath.ts
11
- function getValueFromPath(obj, path) {
12
- return path.split(".").reduce((acc, key) => {
13
- if (acc === null || acc === void 0) return void 0;
14
- const isArrayIndex = !isNaN(Number(key)) && key.trim() !== "";
15
- if (Array.isArray(acc) && isArrayIndex) {
16
- return acc[Number(key)];
17
- }
18
- return acc[key];
19
- }, obj);
20
- }
21
-
22
- // src/utils/formatValue.ts
23
- function formatValue(format, value) {
24
- switch (format) {
25
- case "currency":
26
- if (typeof value === "number") return window.Shopify.formatMoney(value);
27
- if (typeof value === "string")
28
- return window.Shopify.formatMoney(parseFloat(value));
29
- console.warn("formatValue: Unsupported value type for currency format.");
30
- return window.Shopify.formatMoney(0);
31
- case "number":
32
- return Number(value);
33
- case "boolean":
34
- return Boolean(value);
35
- case "invert_boolean":
36
- return !Boolean(value);
37
- default:
38
- return value;
39
- }
40
- }
41
-
42
- // src/utils/getTemplateContent.ts
43
- function getTemplateContent(element, state) {
44
- const tmpl = element.querySelector(
45
- `template[${state}]`
46
- );
47
- if (!tmpl) return null;
48
- return tmpl.content;
49
- }
50
- var activeElements = new ReactiveSet();
51
- createRoot(() => {
52
- createEffect(() => {
53
- if (activeElements.size === 0) {
54
- clearAllBodyScrollLocks();
55
- }
56
- });
57
- });
58
-
59
- // src/hooks/makePathContextHooks.ts
60
- var makeFullPropertyPathContext = () => {
61
- function createFullPathPropertyContext(options) {
62
- return options.path;
63
- }
64
- const Context = createContext(createFullPathPropertyContext);
65
- function provide$1({
66
- element,
67
- path
68
- }) {
69
- return provide(Context, { path }, element);
70
- }
71
- function useFullPropertyPathContext(context) {
72
- return context;
73
- }
74
- function usePath(props) {
75
- const context = consume(Context, props.element);
76
- const basePath = useFullPropertyPathContext(context);
77
- return createMemo(() => {
78
- if (typeof basePath !== "function" && typeof props.path === "function") {
79
- return props.path();
80
- } else if (typeof basePath === "function" && typeof props.path !== "function") {
81
- return basePath();
82
- } else if (typeof basePath === "function" && typeof props.path === "function") {
83
- return `${basePath()}.${props.path()}`;
84
- }
85
- return "";
86
- });
87
- }
88
- function usePathValue(options) {
89
- return createMemo(() => {
90
- const data = options.data();
91
- if (typeof options.path !== "function") return data;
92
- const path = options.path();
93
- if (!path) return data;
94
- const v = getValueFromPath(data, path);
95
- if (v === void 0 || v === null) return null;
96
- return v;
97
- });
98
- }
99
- function useFormattedValue(options) {
100
- const value = usePathValue({ path: options.path, data: options.data });
101
- const formattedValue = createMemo(() => {
102
- const v = value();
103
- if (v === null) return null;
104
- if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") {
105
- return formatValue(options.format || "", v);
106
- }
107
- console.warn(
108
- `useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,
109
- v
110
- );
111
- return null;
112
- });
113
- return formattedValue;
114
- }
115
- return {
116
- provide: provide$1,
117
- usePath,
118
- usePathValue,
119
- useFormattedValue
120
- };
121
- };
122
- var makePathDataComponent = ({
123
- useRootData,
124
- hooks,
125
- name
126
- }) => {
127
- const { usePath, useFormattedValue } = hooks;
128
- return (props, { element }) => {
129
- if (!props.propertyName)
130
- return console.warn(
131
- `${name}: No property-name attribute provided.`,
132
- element
133
- );
134
- const data = useRootData(element);
135
- const fullPath = usePath({
136
- element,
137
- path: () => props.propertyName
138
- });
139
- const formattedValue = useFormattedValue({
140
- get format() {
141
- return props.format;
142
- },
143
- path: fullPath,
144
- data
145
- });
146
- return html2`
147
- <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>
148
- `;
149
- };
150
- };
151
- var makePathDataArrayComponent = ({
152
- useRootData,
153
- hooks,
154
- name,
155
- arrayItemName
156
- }) => {
157
- const { usePath, provide, usePathValue } = hooks;
158
- return (props, { element }) => {
159
- const itemTemplate = getTemplateContent(element, "item");
160
- if (!itemTemplate)
161
- return console.warn(
162
- `${name}: No template found with a property of 'item'.`,
163
- element
164
- );
165
- if (!props.arrayPath)
166
- return console.warn(`${name}: No array path provided.`, element);
167
- const data = useRootData(element);
168
- const fullPath = usePath({
169
- element,
170
- path: () => props.arrayPath
171
- });
172
- provide({
173
- element,
174
- path: fullPath
175
- });
176
- const value = usePathValue({
177
- path: fullPath,
178
- data
179
- });
180
- const arrayValue = createMemo(() => {
181
- const v = value();
182
- if (!v) {
183
- console.warn(
184
- `${name}: value is null or undefined at path ${fullPath()}`,
185
- element
186
- );
187
- return null;
188
- }
189
- if (!Array.isArray(v)) {
190
- console.warn(
191
- `${name}: value is not an array at path ${fullPath()}`,
192
- element
193
- );
194
- return null;
195
- }
196
- return v;
197
- });
198
- element.replaceChildren(...[]);
199
- return html2`
200
- <${Show} when=${() => arrayValue() && arrayValue().length > 0}>
201
- <${For} each=${arrayValue}>
202
- ${(_, idx) => html2`
203
- <${arrayItemName} item-index=${() => `${idx()}`}>
204
- ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}
205
- </${arrayItemName}>
206
- `}
207
- <//>
208
- <//>
209
- `;
210
- };
211
- };
212
-
213
- // src/hooks/makePathDataArrayItemComponent.ts
214
- var makePathDataArrayItemComponent = ({
215
- hooks,
216
- name
217
- }) => {
218
- const { usePath, provide } = hooks;
219
- return (props, { element }) => {
220
- if (!props.itemIndex)
221
- return console.warn(`${name}: No path attribute provided.`);
222
- const fullPath = usePath({
223
- path: () => props.itemIndex,
224
- element
225
- });
226
- provide({
227
- element,
228
- path: fullPath
229
- });
230
- };
231
- };
232
-
233
- export { makeFullPropertyPathContext, makePathDataArrayComponent, makePathDataArrayItemComponent, makePathDataComponent };
234
- //# sourceMappingURL=index.js.map
235
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hooks/internal/getValueFromPath.ts","../../../src/utils/formatValue.ts","../../../src/utils/getTemplateContent.ts","../../../src/utils/body-scroll-lock.ts","../../../src/hooks/makePathContextHooks.ts","../../../src/hooks/makePathDataComponent.ts","../../../src/hooks/makePathDataArrayComponent.ts","../../../src/hooks/makePathDataArrayItemComponent.ts"],"names":["createRoot","createEffect","_clearAllBodyScrollLocks","provide","_provide","_consume","html","createMemo","Show"],"mappings":"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","file":"index.js","sourcesContent":["export type Path<T> = T extends readonly (infer U)[]\n ? `${number}` | `${number}.${Path<U>}` // Allows indexing into readonly arrays\n : T extends object\n ? {\n [K in keyof T & (string | number)]: T[K] extends object | any[]\n ? `${K}` | `${K}.${Path<T[K]>}`\n : `${K}`;\n }[keyof T & (string | number)]\n : never;\n\nexport type PathValue<\n T,\n P extends string,\n> = P extends `${infer Key}.${infer Rest}`\n ? Key extends keyof T\n ? PathValue<T[Key], Rest>\n : Key extends `${number}`\n ? T extends readonly (infer U)[]\n ? PathValue<U, Rest>\n : undefined\n : undefined\n : P extends keyof T\n ? T[P]\n : P extends `${number}`\n ? T extends readonly (infer U)[]\n ? U\n : undefined\n : undefined;\n\nexport function getValueFromPath<T, P extends Path<T>>(\n obj: T,\n path: P\n): PathValue<T, P> {\n return path.split(\".\").reduce<any>((acc, key) => {\n if (acc === null || acc === undefined) return undefined;\n\n const isArrayIndex = !isNaN(Number(key)) && key.trim() !== \"\";\n if (Array.isArray(acc) && isArrayIndex) {\n return acc[Number(key)];\n }\n\n return acc[key];\n }, obj) as PathValue<T, P>;\n}\n","export type Format =\n | \"currency\"\n | \"number\"\n | \"boolean\"\n | \"invert_boolean\"\n | string;\n\nexport function formatValue(format: Format, value: unknown) {\n switch (format) {\n case \"currency\":\n if (typeof value === \"number\") return window.Shopify.formatMoney(value);\n if (typeof value === \"string\")\n return window.Shopify.formatMoney(parseFloat(value));\n console.warn(\"formatValue: Unsupported value type for currency format.\");\n return window.Shopify.formatMoney(0);\n case \"number\":\n return Number(value);\n case \"boolean\":\n return Boolean(value);\n case \"invert_boolean\":\n return !Boolean(value);\n default:\n return value as any;\n }\n}\n\ndeclare global {\n interface Window {\n Shopify: {\n formatMoney(value: number, currency?: string): string;\n };\n }\n}\n","export function getTemplateContent(element: HTMLElement, state: string) {\n const tmpl = element.querySelector(\n `template[${state}]`,\n ) as HTMLTemplateElement;\n if (!tmpl) return null;\n return tmpl.content;\n}\n","import { ReactiveSet } from \"@solid-primitives/set\";\nimport type { ICustomElement } from \"component-register\";\nimport { createEffect, createRoot } from \"solid-js\";\nimport {\n enableBodyScroll as _enableBodyScroll,\n disableBodyScroll as _disableBodyScroll,\n clearAllBodyScrollLocks as _clearAllBodyScrollLocks,\n type BodyScrollOptions,\n} from \"body-scroll-lock-upgrade\";\n\nconst activeElements = new ReactiveSet<ICustomElement & HTMLElement>();\n\ncreateRoot(() => {\n createEffect(() => {\n if (activeElements.size === 0) {\n _clearAllBodyScrollLocks();\n }\n });\n});\n\nexport const disableBodyScroll = (\n element: ICustomElement & HTMLElement,\n options?: BodyScrollOptions,\n) => {\n _disableBodyScroll(element, options);\n activeElements.add(element);\n};\n\nexport const enableBodyScroll = (element: ICustomElement & HTMLElement) => {\n _enableBodyScroll(element);\n activeElements.delete(element);\n};\n","import type { Path, PathValue } from \"./internal\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport {\n createContext,\n consume as _consume,\n provide as _provide,\n type ICustomElement,\n} from \"component-register\";\n\nimport { getValueFromPath } from \"./internal/index.js\";\nimport { formatValue, type Format } from \"../utils/index.js\";\n\ntype WalkableNode = Parameters<typeof _provide>[2];\n\nexport type { Path, PathValue };\n\nexport const makeFullPropertyPathContext = <RootData = any>() => {\n type FullPropertyPathContextType = ReturnType<\n typeof createFullPathPropertyContext\n >;\n\n type Options = {\n path: Accessor<Path<RootData>>;\n element: HTMLElement & ICustomElement;\n };\n function createFullPathPropertyContext(\n options: Options,\n ): Accessor<Path<RootData>> {\n return options.path;\n }\n\n const Context = createContext(createFullPathPropertyContext);\n\n function provide({\n element,\n path,\n }: {\n element: WalkableNode;\n path: Accessor<Path<RootData>>;\n }): FullPropertyPathContextType {\n return _provide(Context, { path }, element);\n }\n\n function useFullPropertyPathContext(context: FullPropertyPathContextType) {\n return context;\n }\n\n function usePath(props: {\n element: HTMLElement & ICustomElement;\n path?: Accessor<Path<RootData>>;\n }): Accessor<Path<RootData>> {\n const context = _consume(Context, props.element);\n const basePath = useFullPropertyPathContext(context);\n return createMemo(() => {\n if (typeof basePath !== \"function\" && typeof props.path === \"function\") {\n return props.path();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path !== \"function\"\n ) {\n return basePath();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path === \"function\"\n ) {\n return `${basePath()}.${props.path()}`;\n }\n return \"\";\n }) as Accessor<Path<RootData>>;\n }\n\n type PathValueOptions<P extends Path<RootData>> = {\n path: Accessor<P>;\n data: Accessor<PathValue<RootData, P>>;\n };\n\n function usePathValue<P extends Path<RootData>>(\n options: PathValueOptions<P>,\n ): Accessor<PathValue<RootData, P>> {\n return createMemo(() => {\n const data = options.data();\n if (typeof options.path !== \"function\") return data;\n const path = options.path();\n if (!path) return data;\n const v = getValueFromPath(data, path as any);\n if (v === undefined || v === null) return null;\n return v;\n }) as Accessor<PathValue<RootData, P>>;\n }\n\n type FormmatedValueOptions<P extends Path<RootData>> = {\n path: Accessor<P>;\n format?: Format;\n data: Accessor<PathValue<RootData, P>>;\n };\n\n function useFormattedValue<P extends Path<RootData>>(\n options: FormmatedValueOptions<P>,\n ): Accessor<PathValue<RootData, P>> {\n const value = usePathValue({ path: options.path, data: options.data });\n\n const formattedValue = createMemo(() => {\n const v = value();\n if (v === null) return null;\n if (\n typeof v === \"string\" ||\n typeof v === \"number\" ||\n typeof v === \"boolean\"\n ) {\n return formatValue(options.format || \"\", v);\n }\n console.warn(\n `useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,\n v,\n );\n return null;\n });\n\n return formattedValue as Accessor<PathValue<RootData, P>>;\n }\n\n return {\n provide,\n usePath,\n usePathValue,\n useFormattedValue,\n };\n};\n","import type { BaseOptions } from \"./internal/types\";\nimport type { CorrectComponentType, Format } from \"../utils/index\";\nimport type { Path } from \"./internal\";\n\nimport html from \"solid-js/html\";\nimport { Show } from \"solid-js\";\n\nexport const makePathDataComponent = <RootData = any, Props = any>({\n useRootData,\n hooks,\n name,\n}: BaseOptions<RootData>): CorrectComponentType<\n { propertyName: Path<RootData>; format?: Format } & Props\n> => {\n const { usePath, useFormattedValue } = hooks;\n return (props, { element }) => {\n if (!props.propertyName)\n return console.warn(\n `${name}: No property-name attribute provided.`,\n element,\n );\n const data = useRootData(element);\n const fullPath = usePath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useFormattedValue({\n get format() {\n return props.format;\n },\n path: fullPath,\n data: data as any,\n });\n return html`\n <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>\n `;\n };\n};\n","import type { CorrectComponentType, Format } from \"../utils/index\";\nimport { type Path } from \"./makePathContextHooks\";\nimport type { BaseOptions } from \"./internal/types\";\n\nimport html from \"solid-js/html\";\nimport { Show, For, createMemo, type Accessor } from \"solid-js\";\nimport { getTemplateContent } from \"../utils/index.js\";\n\nexport const makePathDataArrayComponent = <RootData = any, Props = any>({\n useRootData,\n hooks,\n name,\n arrayItemName,\n}: BaseOptions<RootData> & { arrayItemName: string }): CorrectComponentType<\n {\n arrayPath: Path<RootData>;\n format?: Format;\n } & Props\n> => {\n const { usePath, provide, usePathValue } = hooks;\n return (props, { element }) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${name}: No template found with a property of 'item'.`,\n element,\n );\n if (!props.arrayPath)\n return console.warn(`${name}: No array path provided.`, element);\n\n const data = useRootData(element);\n\n const fullPath = usePath({\n element,\n path: () => props.arrayPath,\n });\n\n provide({\n element,\n path: fullPath,\n });\n\n const value = usePathValue({\n path: fullPath,\n data: data as any,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(\n `${name}: value is null or undefined at path ${fullPath()}`,\n element,\n );\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(\n `${name}: value is not an array at path ${fullPath()}`,\n element,\n );\n return null;\n }\n\n return v;\n });\n element.replaceChildren(...[]);\n\n return html`\n <${Show} when=${() => arrayValue() && arrayValue()!.length > 0}>\n <${For} each=${arrayValue}>\n ${(_: any, idx: Accessor<number>) => html`\n <${arrayItemName} item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </${arrayItemName}>\n `}\n <//>\n <//>\n `;\n };\n};\n","import type { CorrectComponentType } from \"../utils/index\";\nimport { type Path } from \"./makePathContextHooks\";\nimport type { BaseOptions } from \"./internal/types\";\n\nexport const makePathDataArrayItemComponent = <\n RootData = any,\n Props extends { itemIndex: Path<RootData> } = any,\n>({\n hooks,\n name,\n}: BaseOptions<RootData, Props>): CorrectComponentType<Props> => {\n const { usePath, provide } = hooks;\n return (props, { element }) => {\n if (!props.itemIndex)\n return console.warn(`${name}: No path attribute provided.`);\n\n const fullPath = usePath({\n path: () => props.itemIndex,\n element,\n });\n\n provide({\n element,\n path: fullPath,\n });\n };\n};\n"]}