@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.
- package/dist/main/animation/awaitAllAnimations.js +28 -32
- package/dist/main/animation/awaitAllAnimations.js.map +1 -1
- package/dist/main/animation/content.js +156 -0
- package/dist/main/animation/content.js.map +1 -0
- package/dist/main/animation/controlsToPromise.js +6 -5
- package/dist/main/animation/controlsToPromise.js.map +1 -1
- package/dist/main/animation/getTransitionConfig.js +52 -51
- package/dist/main/animation/getTransitionConfig.js.map +1 -1
- package/dist/main/animation/index.d.ts +61 -1
- package/dist/main/animation/index.js +5 -5
- package/dist/main/focusTrap/index.d.ts +1 -1
- package/dist/main/focusTrap/index.js +10 -14
- package/dist/main/focusTrap/index.js.map +1 -1
- package/dist/main/hooks/index.d.ts +14 -9
- package/dist/main/hooks/index.js +5 -6
- package/dist/main/hooks/internal/getValueFromPath.js +9 -10
- package/dist/main/hooks/internal/getValueFromPath.js.map +1 -1
- package/dist/main/hooks/makePathContextHooks.js +58 -68
- package/dist/main/hooks/makePathContextHooks.js.map +1 -1
- package/dist/main/hooks/makePathDataArrayComponent.js +61 -67
- package/dist/main/hooks/makePathDataArrayComponent.js.map +1 -1
- package/dist/main/hooks/makePathDataArrayItemComponent.js +17 -21
- package/dist/main/hooks/makePathDataArrayItemComponent.js.map +1 -1
- package/dist/main/hooks/makePathDataComponent.js +31 -33
- package/dist/main/hooks/makePathDataComponent.js.map +1 -1
- package/dist/main/index.d.ts +304 -27
- package/dist/main/index.js +28 -7
- package/dist/main/promise/abortablePromise.js +10 -15
- package/dist/main/promise/abortablePromise.js.map +1 -1
- package/dist/main/promise/index.js +2 -3
- package/dist/main/utils/a11y.js +133 -0
- package/dist/main/utils/a11y.js.map +1 -0
- package/dist/main/utils/body-scroll-lock.js +40 -18
- package/dist/main/utils/body-scroll-lock.js.map +1 -1
- package/dist/main/utils/checkLoaded.js +4 -4
- package/dist/main/utils/checkLoaded.js.map +1 -1
- package/dist/main/utils/createRemoteContext.js +85 -0
- package/dist/main/utils/createRemoteContext.js.map +1 -0
- package/dist/main/utils/disclosure.js +52 -0
- package/dist/main/utils/disclosure.js.map +1 -0
- package/dist/main/utils/formatValue.js +14 -18
- package/dist/main/utils/formatValue.js.map +1 -1
- package/dist/main/utils/getContextFromProvider.js +15 -10
- package/dist/main/utils/getContextFromProvider.js.map +1 -1
- package/dist/main/utils/getTemplateContent.js +6 -7
- package/dist/main/utils/getTemplateContent.js.map +1 -1
- package/dist/main/utils/guarded-effect.js +72 -0
- package/dist/main/utils/guarded-effect.js.map +1 -0
- package/dist/main/utils/index.d.ts +237 -20
- package/dist/main/utils/index.js +15 -12
- package/dist/main/utils/invokeOnLoaded.js +13 -13
- package/dist/main/utils/invokeOnLoaded.js.map +1 -1
- package/dist/main/utils/isCustomElement.js +4 -3
- package/dist/main/utils/isCustomElement.js.map +1 -1
- package/dist/main/utils/nested-overlays.js +36 -0
- package/dist/main/utils/nested-overlays.js.map +1 -0
- package/dist/main/utils/solid-element.js +48 -88
- package/dist/main/utils/solid-element.js.map +1 -1
- package/dist/main/utils/toHyphenated.js +4 -3
- package/dist/main/utils/toHyphenated.js.map +1 -1
- package/package.json +16 -15
- package/dist/esm/animation/index.js +0 -97
- package/dist/esm/animation/index.js.map +0 -1
- package/dist/esm/focusTrap/index.js +0 -18
- package/dist/esm/focusTrap/index.js.map +0 -1
- package/dist/esm/hooks/index.js +0 -235
- package/dist/esm/hooks/index.js.map +0 -1
- package/dist/esm/index.js +0 -547
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/promise/index.js +0 -20
- package/dist/esm/promise/index.js.map +0 -1
- package/dist/esm/utils/index.js +0 -236
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/main/animation/index.js.map +0 -1
- package/dist/main/hooks/index.js.map +0 -1
- package/dist/main/hooks/internal/index.js +0 -3
- package/dist/main/hooks/internal/index.js.map +0 -1
- package/dist/main/hooks/internal/types.js +0 -3
- package/dist/main/hooks/internal/types.js.map +0 -1
- package/dist/main/index.js.map +0 -1
- package/dist/main/promise/index.js.map +0 -1
- package/dist/main/utils/createWithElementContext.js +0 -64
- package/dist/main/utils/createWithElementContext.js.map +0 -1
- 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": "
|
|
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
|
-
"
|
|
12
|
+
"default": "./dist/main/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./focusTrap": {
|
|
15
15
|
"types": "./dist/main/focusTrap/index.d.ts",
|
|
16
|
-
"
|
|
16
|
+
"default": "./dist/main/focusTrap/index.js"
|
|
17
17
|
},
|
|
18
18
|
"./promise": {
|
|
19
19
|
"types": "./dist/main/promise/index.d.ts",
|
|
20
|
-
"
|
|
20
|
+
"default": "./dist/main/promise/index.js"
|
|
21
21
|
},
|
|
22
22
|
"./animation": {
|
|
23
23
|
"types": "./dist/main/animation/index.d.ts",
|
|
24
|
-
"
|
|
24
|
+
"default": "./dist/main/animation/index.js"
|
|
25
25
|
},
|
|
26
26
|
"./utils": {
|
|
27
27
|
"types": "./dist/main/utils/index.d.ts",
|
|
28
|
-
"
|
|
28
|
+
"default": "./dist/main/utils/index.js"
|
|
29
29
|
},
|
|
30
30
|
"./hooks": {
|
|
31
31
|
"types": "./dist/main/hooks/index.d.ts",
|
|
32
|
-
"
|
|
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.
|
|
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.
|
|
46
|
-
"motion": "^12.
|
|
47
|
-
"solid-js": "
|
|
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
|
-
"
|
|
51
|
-
"
|
|
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": "
|
|
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":";AAEA,eAAsB,kBACpB,QACA,EAAA;AACA,EAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC9B,IAAA,QAAA,CAAS,IAAK,CAAA,MAAM,OAAQ,CAAA,IAAI,CAAC,CAAA;AAAA,GAClC,CAAA;AACH;;;ACNO,SAAS,mBACd,QACA,EAAA;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,CAAM,KAAA;AACjC,IAAA,MAAM,UAAiB,EAAC;AACxB,IAAA,IAAI,YAAY,QAAS,CAAA,MAAA;AACzB,IAAA,IAAI,cAAc,CAAG,EAAA;AACnB,MAAA,OAAA,CAAQ,EAAE,CAAA;AACV,MAAA;AAAA;AAGF,IAAS,SAAA,aAAA,CAAiB,OAAU,KAAe,EAAA;AACjD,MAAA,OAAA,CAAQ,KAAK,CAAI,GAAA,KAAA;AACjB,MAAa,SAAA,IAAA,CAAA;AACb,MAAA,IAAI,cAAc,CAAG,EAAA;AACnB,QAAA,OAAA,CAAQ,OAAO,CAAA;AAAA;AACjB;AAGF,IAAS,QAAA,CAAA,OAAA,CAAQ,CAAC,CAAA,EAAG,CAAM,KAAA;AACzB,MAAI,IAAA;AACF,QAAI,IAAA,CAAA,EAAG,UAAU,MAAQ,EAAA;AACvB,UAAA,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,SAChB,MAAA;AACL,UAAA,CAAA,CAAE,KAAK,MAAM;AACX,YAAA,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,WACtB,CAAA;AAAA;AACH,eACO,CAAG,EAAA;AACV,QAAA,CAAA,CAAE,KAAK,MAAM;AACX,UAAA,aAAA,CAAc,MAAM,CAAC,CAAA;AAAA,SACtB,CAAA;AAAA;AACH,KACD,CAAA;AAAA,GACF,CAAA;AACH;;;AC9BO,SAAS,oBAAoB,KAA4B,EAAA;AAC9D,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,MAAA,EAAQ,KAAM,CAAA,gBAAA,CAAiB,kBAAkB,CAAA;AAAA,IACjD,aAAA,EAAe,KAAM,CAAA,gBAAA,CAAiB,0BAA0B,CAAA;AAAA,IAChE,eAAA,EAAiB,KAAM,CAAA,gBAAA,CAAiB,4BAA4B,CAAA;AAAA,IACpE,QAAA,EAAU,KAAM,CAAA,gBAAA,CAAiB,oBAAoB,CAAA;AAAA,IACrD,OAAA,EAAS,KAAM,CAAA,gBAAA,CAAiB,mBAAmB,CAAA;AAAA,IACnD,KAAA,EAAO,KAAM,CAAA,gBAAA,CAAiB,iBAAiB,CAAA;AAAA,IAC/C,IAAA,EAAM,KAAM,CAAA,gBAAA,CAAiB,gBAAgB,CAAA;AAAA,IAC7C,OAAA,EAAS,KAAM,CAAA,gBAAA,CAAiB,mBAAmB,CAAA;AAAA,IACnD,IAAA,EAAM,KAAM,CAAA,gBAAA,CAAiB,gBAAgB,CAAA;AAAA,IAC7C,GAAA,EAAK,KAAM,CAAA,gBAAA,CAAiB,eAAe,CAAA;AAAA,IAC3C,GAAA,EAAK,KAAM,CAAA,gBAAA,CAAiB,eAAe,CAAA;AAAA,IAC3C,KAAA,EAAO,KAAM,CAAA,gBAAA,CAAiB,iBAAiB,CAAA;AAAA,IAC/C,MAAA,EAAQ,KAAM,CAAA,gBAAA,CAAiB,kBAAkB,CAAA;AAAA,IACjD,WAAA,EAAa,KAAM,CAAA,gBAAA,CAAiB,wBAAwB,CAAA;AAAA,IAC5D,UAAA,EAAY,KAAM,CAAA,gBAAA,CAAiB,uBAAuB,CAAA;AAAA,IAC1D,SAAA,EAAW,KAAM,CAAA,gBAAA,CAAiB,sBAAsB,CAAA;AAAA,IACxD,SAAA,EAAW,KAAM,CAAA,gBAAA,CAAiB,sBAAsB,CAAA;AAAA,IACxD,SAAA,EAAW,KAAM,CAAA,gBAAA,CAAiB,sBAAsB,CAAA;AAAA,IACxD,YAAA,EAAc,KAAM,CAAA,gBAAA,CAAiB,yBAAyB,CAAA;AAAA,IAC9D,KAAA,EAAO,KAAM,CAAA,gBAAA,CAAiB,iBAAiB,CAAA;AAAA,IAC/C,IAAA,EAAM,KAAM,CAAA,gBAAA,CAAiB,gBAAgB,CAAA;AAAA,IAC7C,QAAA,EAAU,KAAM,CAAA,gBAAA,CAAiB,oBAAoB,CAAA;AAAA,IACrD,cAAA,EAAgB,KAAM,CAAA,gBAAA,CAAiB,2BAA2B;AAAA,GACpE;AACA,EAAO,OAAA;AAAA,IACL,QAAQ,UAAW,CAAA,MAAA,GAAS,UAAW,CAAA,UAAA,CAAW,MAAM,CAAI,GAAA,MAAA;AAAA,IAC5D,eAAe,UAAW,CAAA,aAAA,GACtB,UAAW,CAAA,UAAA,CAAW,aAAa,CACnC,GAAA,MAAA;AAAA,IACJ,iBAAiB,UAAW,CAAA,eAAA,GACxB,UAAW,CAAA,UAAA,CAAW,eAAe,CACrC,GAAA,MAAA;AAAA,IACJ,UAAU,UAAW,CAAA,QAAA,GAAW,UAAW,CAAA,UAAA,CAAW,QAAQ,CAAI,GAAA,MAAA;AAAA,IAClE,SAAS,UAAW,CAAA,OAAA,GAAU,UAAW,CAAA,UAAA,CAAW,OAAO,CAAI,GAAA,MAAA;AAAA,IAC/D,OAAO,UAAW,CAAA,KAAA,GAAQ,UAAW,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,MAAA;AAAA,IACzD,IAAO,EAAA,UAAA,CAAW,IAAO,GAAA,UAAA,CAAW,IAAO,GAAA,MAAA;AAAA,IAC3C,SAAS,UAAW,CAAA,OAAA,GAAU,UAAW,CAAA,UAAA,CAAW,OAAO,CAAI,GAAA,MAAA;AAAA,IAC/D,MAAM,UAAW,CAAA,IAAA,GAAO,UAAW,CAAA,UAAA,CAAW,IAAI,CAAI,GAAA,MAAA;AAAA,IACtD,KAAK,UAAW,CAAA,GAAA,GAAM,UAAW,CAAA,UAAA,CAAW,GAAG,CAAI,GAAA,MAAA;AAAA,IACnD,KAAK,UAAW,CAAA,GAAA,GAAM,UAAW,CAAA,UAAA,CAAW,GAAG,CAAI,GAAA,MAAA;AAAA,IACnD,OAAO,UAAW,CAAA,KAAA,GAAQ,UAAW,CAAA,UAAA,CAAW,KAAK,CAAI,GAAA,MAAA;AAAA,IACzD,QAAQ,UAAW,CAAA,MAAA,GAAS,QAAS,CAAA,UAAA,CAAW,MAAM,CAAI,GAAA,MAAA;AAAA,IAC1D,aAAa,UAAW,CAAA,WAAA,GACpB,UAAW,CAAA,UAAA,CAAW,WAAW,CACjC,GAAA,MAAA;AAAA,IACJ,UAAa,EAAA,UAAA,CAAW,UACpB,GAAA,UAAA,CAAW,UACX,GAAA,MAAA;AAAA,IACJ,WAAW,UAAW,CAAA,SAAA,GAClB,UAAW,CAAA,UAAA,CAAW,SAAS,CAC/B,GAAA,MAAA;AAAA,IACJ,WAAW,UAAW,CAAA,SAAA,GAClB,UAAW,CAAA,UAAA,CAAW,SAAS,CAC/B,GAAA,MAAA;AAAA,IACJ,WAAW,UAAW,CAAA,SAAA,GAClB,UAAW,CAAA,UAAA,CAAW,SAAS,CAC/B,GAAA,MAAA;AAAA,IACJ,cAAc,UAAW,CAAA,YAAA,GACrB,UAAW,CAAA,UAAA,CAAW,YAAY,CAClC,GAAA,MAAA;AAAA,IACJ,IAAO,EAAA,UAAA,CAAW,IACd,GAAA,UAAA,CAAW,IACX,GAAA,MAAA;AAAA,IACJ,UAAU,UAAW,CAAA,QAAA,GAAW,UAAW,CAAA,UAAA,CAAW,QAAQ,CAAI,GAAA,MAAA;AAAA,IAClE,gBAAgB,UAAW,CAAA,cAAA,GACvB,UAAW,CAAA,UAAA,CAAW,cAAc,CACpC,GAAA;AAAA,GACN;AACF","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"]}
|
package/dist/esm/hooks/index.js
DELETED
|
@@ -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"]}
|