@brytdesigns/web-component-core 1.1.7 → 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/dist/esm/utils/index.js
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { compose, register, noShadowDOM } from 'component-register';
|
|
2
|
-
import { createRoot, createEffect, onCleanup, on, createSignal } from 'solid-js';
|
|
3
|
-
import { insert } from 'solid-js/web';
|
|
4
|
-
import { ReactiveSet } from '@solid-primitives/set';
|
|
5
|
-
import { clearAllBodyScrollLocks, disableBodyScroll as disableBodyScroll$1, enableBodyScroll as enableBodyScroll$1 } from 'body-scroll-lock-upgrade';
|
|
6
|
-
|
|
7
|
-
// src/utils/toHyphenated.ts
|
|
8
|
-
function toHyphenated(str) {
|
|
9
|
-
return str.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
10
|
-
}
|
|
11
|
-
function createProps(raw) {
|
|
12
|
-
const keys = Object.keys(raw);
|
|
13
|
-
const props = {};
|
|
14
|
-
for (let i = 0; i < keys.length; i++) {
|
|
15
|
-
const key = keys[i];
|
|
16
|
-
if (typeof key === "undefined") continue;
|
|
17
|
-
const [get, set] = createSignal(Reflect.get(raw, key));
|
|
18
|
-
Object.defineProperty(props, key, {
|
|
19
|
-
get,
|
|
20
|
-
set(v) {
|
|
21
|
-
set(() => v);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
return props;
|
|
26
|
-
}
|
|
27
|
-
function lookupContext(el) {
|
|
28
|
-
if (el.assignedSlot && el.assignedSlot._$owner)
|
|
29
|
-
return el.assignedSlot._$owner;
|
|
30
|
-
let next = el.parentNode;
|
|
31
|
-
while (next && !next._$owner && !(next.assignedSlot && next.assignedSlot._$owner))
|
|
32
|
-
next = next.parentNode;
|
|
33
|
-
return next && next.assignedSlot ? next.assignedSlot._$owner : el._$owner;
|
|
34
|
-
}
|
|
35
|
-
function withSolid(ComponentType) {
|
|
36
|
-
return (rawProps, options) => {
|
|
37
|
-
const { element } = options;
|
|
38
|
-
return createRoot((dispose) => {
|
|
39
|
-
const props = createProps(rawProps);
|
|
40
|
-
element.addPropertyChangedCallback(
|
|
41
|
-
(key, val) => props[key] = val
|
|
42
|
-
);
|
|
43
|
-
element.addReleaseCallback(() => {
|
|
44
|
-
element.renderRoot.textContent = "";
|
|
45
|
-
dispose();
|
|
46
|
-
});
|
|
47
|
-
const comp = ComponentType(props, options);
|
|
48
|
-
return insert(element.renderRoot, comp);
|
|
49
|
-
}, lookupContext(element));
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
function withNoShadowDOM(Component = () => {
|
|
53
|
-
}) {
|
|
54
|
-
return (props, options) => {
|
|
55
|
-
noShadowDOM();
|
|
56
|
-
const comp = Component(props, options);
|
|
57
|
-
return comp;
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
function customElement(tagName, props, Component = () => {
|
|
61
|
-
}, ...rest) {
|
|
62
|
-
return compose(register(tagName, props), withSolid, ...rest)(Component);
|
|
63
|
-
}
|
|
64
|
-
function isConstructable(fn) {
|
|
65
|
-
if (typeof fn !== "function") return false;
|
|
66
|
-
try {
|
|
67
|
-
Reflect.construct(String, [], fn);
|
|
68
|
-
return true;
|
|
69
|
-
} catch {
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
function customShadowlessElement(tagName, props, Component = () => {
|
|
74
|
-
}, ...rest) {
|
|
75
|
-
return compose(
|
|
76
|
-
register(tagName, props),
|
|
77
|
-
withNoShadowDOM,
|
|
78
|
-
withSolid,
|
|
79
|
-
...rest
|
|
80
|
-
)((...args) => {
|
|
81
|
-
onCleanup(() => {
|
|
82
|
-
const [_, { element }] = args;
|
|
83
|
-
element.dispatchEvent(new CustomEvent("bryt-designs:element-destroyed"));
|
|
84
|
-
});
|
|
85
|
-
if (isConstructable(Component)) {
|
|
86
|
-
return new Component(...args);
|
|
87
|
-
}
|
|
88
|
-
return Component(...args);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
var correctElementType = (component) => {
|
|
92
|
-
return (props, options) => {
|
|
93
|
-
return component(props, options);
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// src/utils/isCustomElement.ts
|
|
98
|
-
function isCustomElement(element) {
|
|
99
|
-
return Reflect.has(element, "__initialized");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// src/utils/getContextFromProvider.ts
|
|
103
|
-
function getContextFromProvider(context, element) {
|
|
104
|
-
const ctxSymbol = Object.getOwnPropertySymbols(element).find(
|
|
105
|
-
(s) => s.description === "element-context"
|
|
106
|
-
);
|
|
107
|
-
if (!ctxSymbol) {
|
|
108
|
-
throw new Error("No context provider found for the provided element");
|
|
109
|
-
}
|
|
110
|
-
const contexts = element[ctxSymbol];
|
|
111
|
-
return contexts[context.id];
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// src/utils/checkLoaded.ts
|
|
115
|
-
function checkLoaded() {
|
|
116
|
-
return document.readyState === "complete" || //@ts-ignore
|
|
117
|
-
document.readyState === "loaded" || document.readyState === "interactive";
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// src/utils/invokeOnLoaded.ts
|
|
121
|
-
function invokeOnLoaded(fn, { signal }) {
|
|
122
|
-
if (checkLoaded()) {
|
|
123
|
-
const id = setTimeout(() => fn());
|
|
124
|
-
signal?.addEventListener("abort", () => clearTimeout(id), {
|
|
125
|
-
once: true
|
|
126
|
-
});
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
window.addEventListener("DOMContentLoaded", fn, { signal, once: true });
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
function createWithElementContext(context) {
|
|
133
|
-
return function(target, dependencies = () => null, cb) {
|
|
134
|
-
createEffect(
|
|
135
|
-
on(
|
|
136
|
-
() => {
|
|
137
|
-
const t = typeof target === "string" ? target : target();
|
|
138
|
-
return {
|
|
139
|
-
target: t,
|
|
140
|
-
dependencies: dependencies()
|
|
141
|
-
};
|
|
142
|
-
},
|
|
143
|
-
({ target: _target, dependencies: dependencies2 }) => {
|
|
144
|
-
const controller = new AbortController();
|
|
145
|
-
invokeOnLoaded(
|
|
146
|
-
() => {
|
|
147
|
-
let target2 = _target instanceof Element ? _target : null;
|
|
148
|
-
try {
|
|
149
|
-
if (typeof _target === "string")
|
|
150
|
-
target2 = document.querySelector(_target);
|
|
151
|
-
else if (typeof _target === "function") target2 = _target();
|
|
152
|
-
} catch (e) {
|
|
153
|
-
}
|
|
154
|
-
if (!target2 && typeof _target === "string")
|
|
155
|
-
return console.warn(`Target element not found!`, {
|
|
156
|
-
target: _target
|
|
157
|
-
});
|
|
158
|
-
else if (!target2)
|
|
159
|
-
return console.warn(`Target element not found!`);
|
|
160
|
-
target2.addEventListener(
|
|
161
|
-
"bryt-designs:element-destroyed",
|
|
162
|
-
() => {
|
|
163
|
-
controller.abort("Context element destroyed");
|
|
164
|
-
},
|
|
165
|
-
{ once: true }
|
|
166
|
-
);
|
|
167
|
-
createRoot((dispose) => {
|
|
168
|
-
const c = getContextFromProvider(context, target2);
|
|
169
|
-
const unsub = cb(c, dependencies2);
|
|
170
|
-
onCleanup(() => {
|
|
171
|
-
if (typeof unsub === "function") unsub();
|
|
172
|
-
});
|
|
173
|
-
controller.signal.addEventListener("abort", dispose, {
|
|
174
|
-
once: true
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
},
|
|
178
|
-
{ signal: controller.signal }
|
|
179
|
-
);
|
|
180
|
-
onCleanup(() => {
|
|
181
|
-
controller.abort("Dependencies changed!");
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
)
|
|
185
|
-
);
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// src/utils/formatValue.ts
|
|
190
|
-
function formatValue(format, value) {
|
|
191
|
-
switch (format) {
|
|
192
|
-
case "currency":
|
|
193
|
-
if (typeof value === "number") return window.Shopify.formatMoney(value);
|
|
194
|
-
if (typeof value === "string")
|
|
195
|
-
return window.Shopify.formatMoney(parseFloat(value));
|
|
196
|
-
console.warn("formatValue: Unsupported value type for currency format.");
|
|
197
|
-
return window.Shopify.formatMoney(0);
|
|
198
|
-
case "number":
|
|
199
|
-
return Number(value);
|
|
200
|
-
case "boolean":
|
|
201
|
-
return Boolean(value);
|
|
202
|
-
case "invert_boolean":
|
|
203
|
-
return !Boolean(value);
|
|
204
|
-
default:
|
|
205
|
-
return value;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
// src/utils/getTemplateContent.ts
|
|
210
|
-
function getTemplateContent(element, state) {
|
|
211
|
-
const tmpl = element.querySelector(
|
|
212
|
-
`template[${state}]`
|
|
213
|
-
);
|
|
214
|
-
if (!tmpl) return null;
|
|
215
|
-
return tmpl.content;
|
|
216
|
-
}
|
|
217
|
-
var activeElements = new ReactiveSet();
|
|
218
|
-
createRoot(() => {
|
|
219
|
-
createEffect(() => {
|
|
220
|
-
if (activeElements.size === 0) {
|
|
221
|
-
clearAllBodyScrollLocks();
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
var disableBodyScroll = (element, options) => {
|
|
226
|
-
disableBodyScroll$1(element, options);
|
|
227
|
-
activeElements.add(element);
|
|
228
|
-
};
|
|
229
|
-
var enableBodyScroll = (element) => {
|
|
230
|
-
enableBodyScroll$1(element);
|
|
231
|
-
activeElements.delete(element);
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
export { checkLoaded, correctElementType, createWithElementContext, customElement, customShadowlessElement, disableBodyScroll, enableBodyScroll, formatValue, getContextFromProvider, getTemplateContent, invokeOnLoaded, isCustomElement, toHyphenated };
|
|
235
|
-
//# sourceMappingURL=index.js.map
|
|
236
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/toHyphenated.ts","../../../src/utils/solid-element.ts","../../../src/utils/isCustomElement.ts","../../../src/utils/getContextFromProvider.ts","../../../src/utils/checkLoaded.ts","../../../src/utils/invokeOnLoaded.ts","../../../src/utils/createWithElementContext.ts","../../../src/utils/formatValue.ts","../../../src/utils/getTemplateContent.ts","../../../src/utils/body-scroll-lock.ts"],"names":["dependencies","target","createRoot","onCleanup","createEffect","_clearAllBodyScrollLocks","_disableBodyScroll","_enableBodyScroll"],"mappings":"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","file":"index.js","sourcesContent":["export function toHyphenated(str: string): string {\n return str\n .replace(/([A-Z])/g, \"-$1\") // Insert hyphen before uppercase letters\n .toLowerCase(); // Convert the entire string to lowercase\n}\n","import {\n register,\n type ComponentType as mComponentType,\n type ICustomElement,\n type FunctionComponent,\n type ComponentOptions,\n noShadowDOM,\n compose,\n} from \"component-register\";\nimport { createRoot, createSignal, onCleanup } from \"solid-js\";\nimport { insert } from \"solid-js/web\";\n\nexport type ComponentType<T> = mComponentType<T>;\n\ntype CorrectComponentOptions = { element: HTMLElement & ICustomElement };\n\nexport type CorrectComponentType<T> = (\n props: T,\n options: CorrectComponentOptions,\n) => unknown;\n\nfunction createProps<T extends object>(raw: T) {\n const keys = Object.keys(raw) as (keyof T)[];\n const props = {};\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (typeof key === \"undefined\") continue;\n const [get, set] = createSignal(Reflect.get(raw, key));\n Object.defineProperty(props, key, {\n get,\n set(v) {\n set(() => v);\n },\n });\n }\n return props as T;\n}\n\nfunction lookupContext(el: ICustomElement & { _$owner?: any }) {\n if (el.assignedSlot && el.assignedSlot._$owner)\n return el.assignedSlot._$owner;\n let next: Element & { _$owner?: any } = el.parentNode;\n while (\n next &&\n !next._$owner &&\n !(\n next.assignedSlot &&\n (next.assignedSlot as Element & { _$owner?: any })._$owner\n )\n )\n next = next.parentNode as Element;\n return next && next.assignedSlot\n ? (next.assignedSlot as Element & { _$owner?: any })._$owner\n : el._$owner;\n}\n\nfunction withSolid<T extends object>(\n ComponentType: ComponentType<T>,\n): ComponentType<T> {\n return (rawProps: T, options: ComponentOptions) => {\n const { element } = options as {\n element: ICustomElement & { _$owner?: any };\n };\n return createRoot((dispose: Function) => {\n const props = createProps<T>(rawProps);\n\n element.addPropertyChangedCallback(\n (key: string, val: any) => (props[key as keyof T] = val),\n );\n element.addReleaseCallback(() => {\n element.renderRoot.textContent = \"\";\n dispose();\n });\n\n const comp = (ComponentType as FunctionComponent<T>)(props as T, options);\n return insert(element.renderRoot, comp);\n }, lookupContext(element));\n };\n}\n\nfunction withNoShadowDOM<T extends object>(\n Component: ComponentType<T> = () => {},\n) {\n return (props: T, options: ComponentOptions) => {\n noShadowDOM();\n const comp = (Component as FunctionComponent<T>)(props, options);\n return comp;\n };\n}\n\nexport function customElement<T extends object>(\n tagName: string,\n props: T,\n Component: ComponentType<T> = () => {},\n ...rest: ((C: ComponentType<T>) => ComponentType<T>)[]\n) {\n return compose(register(tagName, props), withSolid, ...rest)(Component);\n}\n\nfunction isConstructable(fn: unknown): fn is new (...args: any[]) => any {\n if (typeof fn !== \"function\") return false;\n\n try {\n Reflect.construct(String, [], fn as Function);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function customShadowlessElement<T extends object>(\n tagName: string,\n props: T,\n Component: ComponentType<T> = () => {},\n ...rest: ((C: ComponentType<T>) => ComponentType<T>)[]\n) {\n return compose(\n register(tagName, props),\n withNoShadowDOM,\n withSolid,\n ...rest,\n )((...args) => {\n onCleanup(() => {\n const [_, { element }] = args;\n element.dispatchEvent(new CustomEvent(\"bryt-designs:element-destroyed\"));\n });\n if (isConstructable(Component)) {\n return new Component(...args);\n }\n return Component(...args);\n });\n}\n\nexport const correctElementType = <T>(\n component: CorrectComponentType<T>,\n): ComponentType<T> => {\n return (props: T, options) => {\n return component(props, options as CorrectComponentOptions);\n };\n};\n","import type { ICustomElement } from \"component-register\";\nexport function isCustomElement(\n element: any,\n): element is ICustomElement & HTMLElement {\n return Reflect.has(element, \"__initialized\");\n}\n","import type { createContext } from \"component-register\";\n\nexport function getContextFromProvider<T>(\n context: ReturnType<typeof createContext>,\n element: Element,\n) {\n const ctxSymbol = Object.getOwnPropertySymbols(element).find(\n (s) => s.description === \"element-context\",\n );\n if (!ctxSymbol) {\n throw new Error(\"No context provider found for the provided element\");\n }\n // @ts-ignore\n const contexts = element[ctxSymbol];\n return contexts[context.id] as T;\n}\n","export function checkLoaded() {\n return (\n document.readyState === \"complete\" ||\n //@ts-ignore\n document.readyState === \"loaded\" ||\n document.readyState === \"interactive\"\n );\n}\n","import { checkLoaded } from \"./checkLoaded.js\";\n\nexport function invokeOnLoaded(\n fn: () => void,\n { signal }: { signal?: AbortSignal },\n) {\n if (checkLoaded()) {\n const id = setTimeout(() => fn());\n signal?.addEventListener(\"abort\", () => clearTimeout(id), {\n once: true,\n });\n return;\n }\n window.addEventListener(\"DOMContentLoaded\", fn, { signal, once: true });\n return;\n}\n","import type { createContext } from \"component-register\";\nimport { getContextFromProvider } from \"./getContextFromProvider.js\";\nimport { invokeOnLoaded } from \"./invokeOnLoaded.js\";\nimport {\n type Accessor,\n createEffect,\n createRoot,\n on,\n onCleanup,\n} from \"solid-js\";\n\n/**\n * Creates a HOF to ensure that a given callback is invoked only after the context for the element is ready.\n * */\n\nexport function createWithElementContext<\n Context extends ReturnType<typeof createContext>,\n ContextState = null,\n>(context: Context) {\n return function <D extends any>(\n target: string | Accessor<string> | Accessor<() => Element>,\n dependencies: Accessor<D> = () => null as D,\n cb: (context: ContextState, dependencies: D) => void | (() => void),\n ) {\n createEffect(\n on(\n () => {\n const t = typeof target === \"string\" ? target : target();\n return {\n target: t,\n dependencies: dependencies(),\n };\n },\n ({ target: _target, dependencies }) => {\n const controller = new AbortController();\n invokeOnLoaded(\n () => {\n let target: Element | null =\n _target instanceof Element ? _target : null;\n try {\n if (typeof _target === \"string\")\n target = document.querySelector(_target);\n else if (typeof _target === \"function\") target = _target();\n } catch (e) {\n e;\n }\n if (!target && typeof _target === \"string\")\n return console.warn(`Target element not found!`, {\n target: _target,\n });\n else if (!target)\n return console.warn(`Target element not found!`);\n\n target.addEventListener(\n \"bryt-designs:element-destroyed\",\n () => {\n controller.abort(\"Context element destroyed\");\n },\n { once: true },\n );\n\n createRoot((dispose) => {\n const c = getContextFromProvider(context, target);\n\n const unsub = cb(c as ContextState, dependencies);\n\n onCleanup(() => {\n if (typeof unsub === \"function\") unsub();\n });\n\n controller.signal.addEventListener(\"abort\", dispose, {\n once: true,\n });\n });\n },\n { signal: controller.signal },\n );\n\n // abort controller when dependencies change\n onCleanup(() => {\n controller.abort(\"Dependencies changed!\");\n });\n },\n ),\n );\n };\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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
|
package/dist/main/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { getContextFromProvider } from './getContextFromProvider.js';
|
|
2
|
-
import { invokeOnLoaded } from './invokeOnLoaded.js';
|
|
3
|
-
import { createEffect, on, createRoot, onCleanup } from 'solid-js';
|
|
4
|
-
|
|
5
|
-
function createWithElementContext(context) {
|
|
6
|
-
return function(target, dependencies = () => null, cb) {
|
|
7
|
-
createEffect(
|
|
8
|
-
on(
|
|
9
|
-
() => {
|
|
10
|
-
const t = typeof target === "string" ? target : target();
|
|
11
|
-
return {
|
|
12
|
-
target: t,
|
|
13
|
-
dependencies: dependencies()
|
|
14
|
-
};
|
|
15
|
-
},
|
|
16
|
-
({ target: _target, dependencies: dependencies2 }) => {
|
|
17
|
-
const controller = new AbortController();
|
|
18
|
-
invokeOnLoaded(
|
|
19
|
-
() => {
|
|
20
|
-
let target2 = _target instanceof Element ? _target : null;
|
|
21
|
-
try {
|
|
22
|
-
if (typeof _target === "string")
|
|
23
|
-
target2 = document.querySelector(_target);
|
|
24
|
-
else if (typeof _target === "function") target2 = _target();
|
|
25
|
-
} catch (e) {
|
|
26
|
-
}
|
|
27
|
-
if (!target2 && typeof _target === "string")
|
|
28
|
-
return console.warn(`Target element not found!`, {
|
|
29
|
-
target: _target
|
|
30
|
-
});
|
|
31
|
-
else if (!target2)
|
|
32
|
-
return console.warn(`Target element not found!`);
|
|
33
|
-
target2.addEventListener(
|
|
34
|
-
"bryt-designs:element-destroyed",
|
|
35
|
-
() => {
|
|
36
|
-
controller.abort("Context element destroyed");
|
|
37
|
-
},
|
|
38
|
-
{ once: true }
|
|
39
|
-
);
|
|
40
|
-
createRoot((dispose) => {
|
|
41
|
-
const c = getContextFromProvider(context, target2);
|
|
42
|
-
const unsub = cb(c, dependencies2);
|
|
43
|
-
onCleanup(() => {
|
|
44
|
-
if (typeof unsub === "function") unsub();
|
|
45
|
-
});
|
|
46
|
-
controller.signal.addEventListener("abort", dispose, {
|
|
47
|
-
once: true
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
{ signal: controller.signal }
|
|
52
|
-
);
|
|
53
|
-
onCleanup(() => {
|
|
54
|
-
controller.abort("Dependencies changed!");
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
)
|
|
58
|
-
);
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export { createWithElementContext };
|
|
63
|
-
//# sourceMappingURL=createWithElementContext.js.map
|
|
64
|
-
//# sourceMappingURL=createWithElementContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/createWithElementContext.ts"],"names":["dependencies","target"],"mappings":";;;;AAeO,SAAS,yBAGd,OAAkB,EAAA;AAClB,EAAA,OAAO,SACL,MAAA,EACA,YAA4B,GAAA,MAAM,MAClC,EACA,EAAA;AACA,IAAA,YAAA;AAAA,MACE,EAAA;AAAA,QACE,MAAM;AACJ,UAAA,MAAM,CAAI,GAAA,OAAO,MAAW,KAAA,QAAA,GAAW,SAAS,MAAO,EAAA;AACvD,UAAO,OAAA;AAAA,YACL,MAAQ,EAAA,CAAA;AAAA,YACR,cAAc,YAAa;AAAA,WAC7B;AAAA,SACF;AAAA,QACA,CAAC,EAAE,MAAA,EAAQ,OAAS,EAAA,YAAA,EAAAA,eAAmB,KAAA;AACrC,UAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AACvC,UAAA,cAAA;AAAA,YACE,MAAM;AACJ,cAAIC,IAAAA,OAAAA,GACF,OAAmB,YAAA,OAAA,GAAU,OAAU,GAAA,IAAA;AACzC,cAAI,IAAA;AACF,gBAAA,IAAI,OAAO,OAAY,KAAA,QAAA;AACrB,kBAAAA,OAAAA,GAAS,QAAS,CAAA,aAAA,CAAc,OAAO,CAAA;AAAA,qBAAA,IAChC,OAAO,OAAA,KAAY,UAAY,EAAAA,UAAS,OAAQ,EAAA;AAAA,uBAClD,CAAG,EAAA;AACV;AAEF,cAAI,IAAA,CAACA,OAAU,IAAA,OAAO,OAAY,KAAA,QAAA;AAChC,gBAAO,OAAA,OAAA,CAAQ,KAAK,CAA6B,yBAAA,CAAA,EAAA;AAAA,kBAC/C,MAAQ,EAAA;AAAA,iBACT,CAAA;AAAA,mBAAA,IACM,CAACA,OAAAA;AACR,gBAAO,OAAA,OAAA,CAAQ,KAAK,CAA2B,yBAAA,CAAA,CAAA;AAEjD,cAAAA,OAAO,CAAA,gBAAA;AAAA,gBACL,gCAAA;AAAA,gBACA,MAAM;AACJ,kBAAA,UAAA,CAAW,MAAM,2BAA2B,CAAA;AAAA,iBAC9C;AAAA,gBACA,EAAE,MAAM,IAAK;AAAA,eACf;AAEA,cAAA,UAAA,CAAW,CAAC,OAAY,KAAA;AACtB,gBAAM,MAAA,CAAA,GAAI,sBAAuB,CAAA,OAAA,EAASA,OAAM,CAAA;AAEhD,gBAAM,MAAA,KAAA,GAAQ,EAAG,CAAA,CAAA,EAAmBD,aAAY,CAAA;AAEhD,gBAAA,SAAA,CAAU,MAAM;AACd,kBAAI,IAAA,OAAO,KAAU,KAAA,UAAA,EAAkB,KAAA,EAAA;AAAA,iBACxC,CAAA;AAED,gBAAW,UAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,OAAA,EAAS,OAAS,EAAA;AAAA,kBACnD,IAAM,EAAA;AAAA,iBACP,CAAA;AAAA,eACF,CAAA;AAAA,aACH;AAAA,YACA,EAAE,MAAQ,EAAA,UAAA,CAAW,MAAO;AAAA,WAC9B;AAGA,UAAA,SAAA,CAAU,MAAM;AACd,YAAA,UAAA,CAAW,MAAM,uBAAuB,CAAA;AAAA,WACzC,CAAA;AAAA;AACH;AACF,KACF;AAAA,GACF;AACF","file":"createWithElementContext.js","sourcesContent":["import type { createContext } from \"component-register\";\nimport { getContextFromProvider } from \"./getContextFromProvider.js\";\nimport { invokeOnLoaded } from \"./invokeOnLoaded.js\";\nimport {\n type Accessor,\n createEffect,\n createRoot,\n on,\n onCleanup,\n} from \"solid-js\";\n\n/**\n * Creates a HOF to ensure that a given callback is invoked only after the context for the element is ready.\n * */\n\nexport function createWithElementContext<\n Context extends ReturnType<typeof createContext>,\n ContextState = null,\n>(context: Context) {\n return function <D extends any>(\n target: string | Accessor<string> | Accessor<() => Element>,\n dependencies: Accessor<D> = () => null as D,\n cb: (context: ContextState, dependencies: D) => void | (() => void),\n ) {\n createEffect(\n on(\n () => {\n const t = typeof target === \"string\" ? target : target();\n return {\n target: t,\n dependencies: dependencies(),\n };\n },\n ({ target: _target, dependencies }) => {\n const controller = new AbortController();\n invokeOnLoaded(\n () => {\n let target: Element | null =\n _target instanceof Element ? _target : null;\n try {\n if (typeof _target === \"string\")\n target = document.querySelector(_target);\n else if (typeof _target === \"function\") target = _target();\n } catch (e) {\n e;\n }\n if (!target && typeof _target === \"string\")\n return console.warn(`Target element not found!`, {\n target: _target,\n });\n else if (!target)\n return console.warn(`Target element not found!`);\n\n target.addEventListener(\n \"bryt-designs:element-destroyed\",\n () => {\n controller.abort(\"Context element destroyed\");\n },\n { once: true },\n );\n\n createRoot((dispose) => {\n const c = getContextFromProvider(context, target);\n\n const unsub = cb(c as ContextState, dependencies);\n\n onCleanup(() => {\n if (typeof unsub === \"function\") unsub();\n });\n\n controller.signal.addEventListener(\"abort\", dispose, {\n once: true,\n });\n });\n },\n { signal: controller.signal },\n );\n\n // abort controller when dependencies change\n onCleanup(() => {\n controller.abort(\"Dependencies changed!\");\n });\n },\n ),\n );\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
|