@brytdesigns/shopify-ajax-cart-components 1.3.0 → 1.3.3
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/esm/index.js +33 -26
- package/dist/esm/index.js.map +1 -1
- package/dist/jsdelivr/components/cart-context.js +22 -0
- package/dist/jsdelivr/components/cart-context.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-array-item.js +19 -0
- package/dist/jsdelivr/components/cart-data-array-item.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-array.js +58 -0
- package/dist/jsdelivr/components/cart-data-array.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-conditions.js +97 -0
- package/dist/jsdelivr/components/cart-data-conditions.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-injection.js +89 -0
- package/dist/jsdelivr/components/cart-data-injection.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-listener-status.js +35 -0
- package/dist/jsdelivr/components/cart-data-listener-status.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-listener.js +163 -0
- package/dist/jsdelivr/components/cart-data-listener.js.map +1 -0
- package/dist/jsdelivr/components/cart-data.js +29 -0
- package/dist/jsdelivr/components/cart-data.js.map +1 -0
- package/dist/jsdelivr/components/cart-loading-state.js +39 -0
- package/dist/jsdelivr/components/cart-loading-state.js.map +1 -0
- package/dist/jsdelivr/components/index.js +11 -0
- package/dist/jsdelivr/components/index.js.map +1 -0
- package/dist/jsdelivr/hooks/index.js +7 -0
- package/dist/jsdelivr/hooks/index.js.map +1 -0
- package/dist/jsdelivr/hooks/useCartValue.js +23 -0
- package/dist/jsdelivr/hooks/useCartValue.js.map +1 -0
- package/dist/{main → jsdelivr}/hooks/useFormattedValue.js +5 -5
- package/dist/jsdelivr/hooks/useFormattedValue.js.map +1 -0
- package/dist/{main → jsdelivr}/hooks/useFullPropertyPath.js +3 -3
- package/dist/jsdelivr/hooks/useFullPropertyPath.js.map +1 -0
- package/dist/jsdelivr/hooks/useHybridCart.js +23 -0
- package/dist/jsdelivr/hooks/useHybridCart.js.map +1 -0
- package/dist/jsdelivr/hooks/useListenerStatus.js +33 -0
- package/dist/jsdelivr/hooks/useListenerStatus.js.map +1 -0
- package/dist/jsdelivr/index.js +72 -0
- package/dist/jsdelivr/index.js.map +1 -0
- package/dist/jsdelivr/utils/formatValue.js +22 -0
- package/dist/jsdelivr/utils/formatValue.js.map +1 -0
- package/dist/jsdelivr/utils/getTargetElement.js +13 -0
- package/dist/jsdelivr/utils/getTargetElement.js.map +1 -0
- package/dist/jsdelivr/utils/getTemplateContent.js +11 -0
- package/dist/jsdelivr/utils/getTemplateContent.js.map +1 -0
- package/dist/jsdelivr/utils/getValueFromPath.js +14 -0
- package/dist/jsdelivr/utils/getValueFromPath.js.map +1 -0
- package/dist/jsdelivr/utils/index.js +7 -0
- package/dist/jsdelivr/utils/index.js.map +1 -0
- package/dist/jsdelivr/utils/parseNestedObject.js +32 -0
- package/dist/jsdelivr/utils/parseNestedObject.js.map +1 -0
- package/dist/main/components/cart-data-array-injection.js +3 -4
- package/dist/main/components/cart-data-array-injection.js.map +1 -1
- package/dist/main/components/cart-data-array.js +2 -3
- package/dist/main/components/cart-data-array.js.map +1 -1
- package/dist/main/components/cart-data-conditions.js +2 -3
- package/dist/main/components/cart-data-conditions.js.map +1 -1
- package/dist/main/components/cart-data-injection.js +1 -3
- package/dist/main/components/cart-data-injection.js.map +1 -1
- package/dist/main/components/cart-data-listener.js +13 -14
- package/dist/main/components/cart-data-listener.js.map +1 -1
- package/dist/main/components/cart-data.js +1 -3
- package/dist/main/components/cart-data.js.map +1 -1
- package/dist/main/hooks/index.js +18 -2
- package/dist/main/hooks/index.js.map +1 -1
- package/dist/main/index.d.ts +1150 -317
- package/package.json +3 -3
- package/dist/main/hooks/useFormattedValue.js.map +0 -1
- package/dist/main/hooks/useFullPropertyPath.js.map +0 -1
package/dist/esm/index.js
CHANGED
|
@@ -181,21 +181,34 @@ var withListenerElementStatus = createWithElementContext(ListenerStatusContext);
|
|
|
181
181
|
|
|
182
182
|
// src/hooks/index.ts
|
|
183
183
|
var hooks = makeFullPropertyPathContext();
|
|
184
|
-
var useCartValue =
|
|
184
|
+
var useCartValue = (options) => {
|
|
185
|
+
const data = useAjaxCart(options.element);
|
|
186
|
+
return hooks.usePathValue({
|
|
187
|
+
...options,
|
|
188
|
+
data
|
|
189
|
+
});
|
|
190
|
+
};
|
|
185
191
|
var useCartPath = hooks.usePath;
|
|
186
|
-
var useCartFormattedValue =
|
|
192
|
+
var useCartFormattedValue = (options) => {
|
|
193
|
+
const data = useAjaxCart(options.element);
|
|
194
|
+
return hooks.useFormattedValue({
|
|
195
|
+
data,
|
|
196
|
+
get format() {
|
|
197
|
+
return options.format;
|
|
198
|
+
},
|
|
199
|
+
path: options.path
|
|
200
|
+
});
|
|
201
|
+
};
|
|
187
202
|
var provideCartPathContext = hooks.provide;
|
|
188
203
|
var Name2 = "cart-data";
|
|
189
204
|
var Component2 = (props, { element }) => {
|
|
190
205
|
if (!props.propertyName)
|
|
191
206
|
return console.warn(`${Name2}: No property-name attribute provided.`);
|
|
192
|
-
const data = useAjaxCart(element);
|
|
193
207
|
const fullPath = useCartPath({
|
|
194
208
|
element,
|
|
195
209
|
path: () => props.propertyName
|
|
196
210
|
});
|
|
197
211
|
const formattedValue = useCartFormattedValue({
|
|
198
|
-
data,
|
|
199
212
|
get format() {
|
|
200
213
|
return props.format;
|
|
201
214
|
},
|
|
@@ -294,11 +307,10 @@ var Component3 = (_, { element }) => {
|
|
|
294
307
|
}
|
|
295
308
|
})
|
|
296
309
|
);
|
|
297
|
-
const cart = useAjaxCart(element);
|
|
298
310
|
const fullPath = useCartPath({ element });
|
|
299
311
|
const data = useCartValue({
|
|
300
312
|
path: fullPath,
|
|
301
|
-
|
|
313
|
+
element
|
|
302
314
|
});
|
|
303
315
|
element.replaceChildren(...[]);
|
|
304
316
|
return html2`
|
|
@@ -329,7 +341,6 @@ var Component4 = (props, { element }) => {
|
|
|
329
341
|
`${Name4}: No template found with a property of 'item'.`
|
|
330
342
|
);
|
|
331
343
|
if (!props.arrayPath) return console.warn(`${Name4}: No array path provided.`);
|
|
332
|
-
const data = useAjaxCart(element);
|
|
333
344
|
const mergedProps = {
|
|
334
345
|
element,
|
|
335
346
|
path: () => props.arrayPath
|
|
@@ -340,7 +351,7 @@ var Component4 = (props, { element }) => {
|
|
|
340
351
|
path: fullPath
|
|
341
352
|
});
|
|
342
353
|
const value = useCartValue({
|
|
343
|
-
|
|
354
|
+
element,
|
|
344
355
|
path: fullPath
|
|
345
356
|
});
|
|
346
357
|
const arrayValue = createMemo(() => {
|
|
@@ -386,7 +397,6 @@ var Component5 = (props, { element }) => {
|
|
|
386
397
|
`${Name5}: No template found with a property of 'item'.`
|
|
387
398
|
);
|
|
388
399
|
if (!props.arrayPath) return console.warn(`${Name5}: No array path provided.`);
|
|
389
|
-
const data = useAjaxCart(element);
|
|
390
400
|
const mergedProps = {
|
|
391
401
|
element,
|
|
392
402
|
path: () => props.arrayPath
|
|
@@ -397,8 +407,8 @@ var Component5 = (props, { element }) => {
|
|
|
397
407
|
path: fullPath
|
|
398
408
|
});
|
|
399
409
|
const value = useCartValue({
|
|
400
|
-
|
|
401
|
-
|
|
410
|
+
path: fullPath,
|
|
411
|
+
element
|
|
402
412
|
});
|
|
403
413
|
const arrayValue = createMemo(() => {
|
|
404
414
|
const v = value();
|
|
@@ -490,12 +500,11 @@ var Component7 = (props, { element }) => {
|
|
|
490
500
|
return props.status;
|
|
491
501
|
}
|
|
492
502
|
});
|
|
493
|
-
const cart = useAjaxCart(element);
|
|
494
503
|
const path = useCartPath({
|
|
495
504
|
element
|
|
496
505
|
});
|
|
497
506
|
const data = useCartValue({
|
|
498
|
-
|
|
507
|
+
element,
|
|
499
508
|
path
|
|
500
509
|
});
|
|
501
510
|
createEffect(
|
|
@@ -523,7 +532,7 @@ var Component7 = (props, { element }) => {
|
|
|
523
532
|
if (!on5) return console.error(`${Name7}: on property is required!`);
|
|
524
533
|
let resetStatusId = null;
|
|
525
534
|
function onEvent(e) {
|
|
526
|
-
const
|
|
535
|
+
const cart = AjaxCart;
|
|
527
536
|
if (preventDefault) e.preventDefault();
|
|
528
537
|
async function handleStatus(promise) {
|
|
529
538
|
setStatus("loading");
|
|
@@ -556,7 +565,7 @@ var Component7 = (props, { element }) => {
|
|
|
556
565
|
);
|
|
557
566
|
if (method === "replaceItem") {
|
|
558
567
|
return handleStatus(
|
|
559
|
-
|
|
568
|
+
cart.replaceItem({
|
|
560
569
|
key: formObj.key,
|
|
561
570
|
id: formObj.id
|
|
562
571
|
})
|
|
@@ -564,7 +573,7 @@ var Component7 = (props, { element }) => {
|
|
|
564
573
|
}
|
|
565
574
|
if (method === "updateItem") {
|
|
566
575
|
return handleStatus(
|
|
567
|
-
|
|
576
|
+
cart.updateItem({
|
|
568
577
|
id: formObj.id,
|
|
569
578
|
quantity: formObj?.quantity || void 0,
|
|
570
579
|
properties: formObj?.properties || {},
|
|
@@ -573,30 +582,30 @@ var Component7 = (props, { element }) => {
|
|
|
573
582
|
).finally(reset2);
|
|
574
583
|
}
|
|
575
584
|
if (method === "removeItem") {
|
|
576
|
-
return handleStatus(
|
|
585
|
+
return handleStatus(cart.removeItem(formObj.key)).finally(reset2);
|
|
577
586
|
}
|
|
578
587
|
if (method === "addDiscount") {
|
|
579
|
-
return handleStatus(
|
|
588
|
+
return handleStatus(cart.addDiscount(formObj.code)).finally(
|
|
580
589
|
reset2
|
|
581
590
|
);
|
|
582
591
|
}
|
|
583
592
|
if (method === "removeDiscount") {
|
|
584
|
-
return handleStatus(
|
|
593
|
+
return handleStatus(cart.removeDiscount(formObj.code)).finally(
|
|
585
594
|
reset2
|
|
586
595
|
);
|
|
587
596
|
}
|
|
588
597
|
if (method === "updateNote") {
|
|
589
|
-
return handleStatus(
|
|
598
|
+
return handleStatus(cart.updateNote(formObj.note)).finally(reset2);
|
|
590
599
|
}
|
|
591
600
|
return;
|
|
592
601
|
}
|
|
593
602
|
const input = e.target;
|
|
594
603
|
if (method === "removeItem") {
|
|
595
|
-
return handleStatus(
|
|
604
|
+
return handleStatus(cart.removeItem(data2.key));
|
|
596
605
|
}
|
|
597
606
|
if (method === "updateQuantity") {
|
|
598
607
|
return handleStatus(
|
|
599
|
-
|
|
608
|
+
cart.updateItem({
|
|
600
609
|
id: data2.key,
|
|
601
610
|
quantity: input.valueAsNumber
|
|
602
611
|
})
|
|
@@ -604,14 +613,14 @@ var Component7 = (props, { element }) => {
|
|
|
604
613
|
}
|
|
605
614
|
if (method === "updateItemVariant") {
|
|
606
615
|
return handleStatus(
|
|
607
|
-
|
|
616
|
+
cart.replaceItem({
|
|
608
617
|
key: data2.key,
|
|
609
618
|
id: input.value
|
|
610
619
|
})
|
|
611
620
|
);
|
|
612
621
|
}
|
|
613
622
|
if (method === "updateNote") {
|
|
614
|
-
return handleStatus(
|
|
623
|
+
return handleStatus(cart.updateNote(input.value));
|
|
615
624
|
}
|
|
616
625
|
}
|
|
617
626
|
const handleEvent = debounce(onEvent, debounceDelay), controller = new AbortController();
|
|
@@ -685,12 +694,10 @@ var Component9 = (props, { element }) => {
|
|
|
685
694
|
element,
|
|
686
695
|
path: () => props.propertyName
|
|
687
696
|
};
|
|
688
|
-
const data = useAjaxCart(element);
|
|
689
697
|
const fullPath = useCartPath(mergedProps);
|
|
690
698
|
const value = useCartFormattedValue({
|
|
691
699
|
element,
|
|
692
700
|
path: fullPath,
|
|
693
|
-
data,
|
|
694
701
|
get format() {
|
|
695
702
|
return props.format;
|
|
696
703
|
}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/cart-context.ts","../../src/hooks/useAjaxCart.ts","../../src/utils/getValueFromPath.ts","../../src/utils/formatValue.ts","../../src/utils/getTemplateContent.ts","../../src/utils/getTargetElement.ts","../../src/utils/parseNestedObject.ts","../../src/utils/traverseObject.ts","../../src/components/cart-data.ts","../../src/hooks/useListenerStatus.ts","../../src/hooks/index.ts","../../src/components/cart-data-conditions.ts","../../src/components/cart-data-array.ts","../../src/components/cart-data-array-injection.ts","../../src/components/cart-data-array-item.ts","../../src/components/cart-data-listener.ts","../../src/components/cart-data-listener-status.ts","../../src/components/cart-data-injection.ts","../../src/components/cart-loading-state.ts","../../src/index.ts"],"names":["Component","Name","createContext","provide","consume","html","result","Show","createMemo","For","children","createEffect","on","data","cart","AjaxCart","reset","value","onCleanup"],"mappings":"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","file":"index.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on } from \"solid-js\";\nimport { provideAjaxCartContext } from \"../hooks/useAjaxCart.js\";\nimport { traverseObject } from \"../utils/index.js\";\n\ntype CartContextProps = {\n debug?: boolean;\n};\n\nexport const Name = \"cart-context\";\n\nexport const Component: CorrectComponentType<CartContextProps> = (\n props,\n { element }\n) => {\n const cart = provideAjaxCartContext(element);\n\n createEffect(() => {\n if (!props.debug) return;\n const c = cart();\n // This will listen to every change within the cart object.\n traverseObject(c);\n console.log(`${Name}:updated!`, c);\n });\n};\n","import AjaxCart, { type CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport type { PathValue } from \"@brytdesigns/web-component-core\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype AjaxCartContextType = () => PathValue<CartData, \"\">;\n\nconst AjaxCartContext = createContext(() => () => AjaxCart.data);\n\nexport const provideAjaxCartContext = (\n element: WalkableNode\n): AjaxCartContextType => {\n return provide(AjaxCartContext, {}, element);\n};\n\nexport const useAjaxCartContext = (context: AjaxCartContextType) => {\n return context;\n};\n\nexport const useAjaxCart = (element: HTMLElement & ICustomElement) => {\n const context = consume(AjaxCartContext, element);\n\n if (!context) {\n throw console.error(\n \"CartContext not found! Please ensure to wrap your custom element with cart-context element.\"\n );\n }\n\n return useAjaxCartContext(context);\n};\n","// 🔥 Recursively Constructs All Possible Paths for an Object or Array\nexport 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\n// 🔥 Correctly Extracts the Value at the Given Path\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 // 🔥 Convert numeric keys for proper array indexing\n const isArrayIndex = !isNaN(Number(key)) && key.trim() !== \"\";\n if (Array.isArray(acc) && isArrayIndex) {\n return acc[Number(key)];\n }\n\n // Normal object property access\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","export function getTargetElement(rootElement: HTMLElement, target: string) {\n if (!target) return rootElement;\n const t = rootElement.querySelector(target);\n if (!t) {\n console.error(`target element not found: ${target}`);\n return null;\n }\n return t;\n}\n","export function parseNestedObject<T extends Record<string, any>>(\n data: T,\n): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const key in data) {\n const value = data[key];\n const parts = key.match(/(\\w+|\\[\\d+\\])/g);\n\n if (!parts) continue;\n\n let current: any = result;\n for (let i = 0; i < parts.length; i++) {\n let part: string | number | undefined = parts[i];\n let nextPart: string | number | undefined = parts[i + 1];\n\n if (!part) continue;\n\n // Convert array-like keys to numbers\n if (part.startsWith(\"[\")) {\n part = parseInt(part.slice(1, -1), 10);\n }\n\n if (i === parts.length - 1) {\n current[part] = value;\n } else {\n if (\n typeof parts[i + 1] === \"number\" ||\n (nextPart && nextPart.startsWith(\"[\"))\n ) {\n current[part] = current[part] || [];\n } else {\n current[part] = current[part] || {};\n }\n current = current[part];\n }\n }\n }\n\n return result;\n}\n","type TraverseCallback = (key: string, value: any, path: string[]) => void;\n\nexport function traverseObject(\n obj: any,\n callback?: TraverseCallback,\n path: string[] = [],\n) {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, callback, [...path, index.toString()]);\n });\n } else {\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n const currentPath = [...path, key];\n if (callback) callback(key, value, currentPath);\n traverseObject(value, callback, currentPath);\n }\n }\n}\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { type Format } from \"../utils/index.js\";\n\nimport { Show } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartFormattedValue,\n useAjaxCart,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: CartPath;\n format?: Format;\n};\n\nexport const Name = \"cart-data\";\n\nexport const Component: CorrectComponentType<CartDataProps> = (\n props,\n { element }\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No property-name attribute provided.`);\n const data = useAjaxCart(element);\n const fullPath = useCartPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useCartFormattedValue({\n data,\n get format() {\n return props.format;\n },\n path: fullPath,\n element,\n });\n\n return html`\n <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>\n `;\n};\n","import {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\nimport { splitProps } from \"solid-js\";\nimport { createWithElementContext } from \"@brytdesigns/web-component-core/utils\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\nexport type Status = \"default\" | \"loading\" | \"success\" | \"error\";\n\ntype ListenerStatusContextType = ReturnType<typeof createListenerStatusContext>;\n\ntype Options = {\n element: HTMLElement & ICustomElement;\n status: Status;\n};\n\nfunction createListenerStatusContext(options: Options) {\n const [privateProps, publicProps] = splitProps(options, [\"element\"]);\n\n function setStatus(status: Status) {\n const currentStatus = privateProps.element.getAttribute(\"status\");\n if (currentStatus === status) return;\n privateProps.element.setAttribute(\"status\", status);\n return status;\n }\n\n return [() => publicProps.status, setStatus] as const;\n}\n\nconst ListenerStatusContext = createContext(createListenerStatusContext);\n\nexport const provideListenerStatusContext = (options: {\n element: WalkableNode;\n status: Status;\n}): ListenerStatusContextType => {\n return provide(ListenerStatusContext, options, options.element);\n};\n\nexport const useListenerStatusContext = (\n context: ListenerStatusContextType,\n) => {\n return context;\n};\n\nexport const useListenerStatus = (element: HTMLElement & ICustomElement) => {\n const context = consume(ListenerStatusContext, element);\n\n if (!context) {\n throw console.error(\n \"CartListenerContext not found! Please ensure to wrap your custom element with cart-data-listener element.\",\n );\n }\n\n return useListenerStatusContext(context);\n};\n\nexport const withListenerElementStatus = createWithElementContext<\n typeof ListenerStatusContext,\n ListenerStatusContextType\n>(ListenerStatusContext);\n","import type { CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport {\n makeFullPropertyPathContext,\n type Path,\n type PathValue,\n} from \"@brytdesigns/web-component-core\";\n\nconst hooks = makeFullPropertyPathContext<CartData>();\n\nexport type CartPath = Path<CartData>;\nexport type CartPathValue<Path extends CartPath> = PathValue<CartData, Path>;\nexport const useCartValue = hooks.usePathValue;\nexport const useCartPath = hooks.usePath;\nexport const useCartFormattedValue = hooks.useFormattedValue;\nexport const provideCartPathContext = hooks.provide;\n\nexport * from \"./useAjaxCart.js\";\nexport * from \"./useListenerStatus.js\";\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { Show, createMemo, For, type Accessor } from \"solid-js\";\nimport html from \"solid-js/html\";\n\nimport { useCartPath, useCartValue, useAjaxCart } from \"../hooks/index.js\";\nimport { getValueFromPath, formatValue, type Format } from \"../utils/index.js\";\n\ntype CartDataConditionsProps = {};\n\ntype ConditionValue = {\n type: \"primitive\" | \"property\";\n name?: string;\n value?: string | number | boolean | null;\n property_name?: string;\n};\n\ntype Condition = {\n type:\n | \"typeof\"\n | \"includes\"\n | \"includes_property\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"lt\"\n | \"lte\"\n | \"gt\"\n | \"gte\";\n format?: Format;\n invert?: boolean;\n valueA: ConditionValue;\n valueB: ConditionValue;\n};\n\nfunction getValue<T>(data: T, value: ConditionValue): any {\n if (typeof value === \"undefined\" || !data) return undefined;\n\n if (value.type === \"primitive\") {\n return value.value;\n }\n\n if (value.type === \"property\" && value.name) {\n //@ts-ignore\n return getValueFromPath<T>(data, value.name);\n }\n\n return null;\n}\n\nfunction invertResult(result: boolean, invert = false) {\n if (invert) return !result;\n return result;\n}\n\nfunction validateConditions<T>(conditions: Condition[], data: T) {\n if (!data) return false;\n const result = conditions.every((condition) => {\n let valueA = getValue(data, condition.valueA),\n valueB = getValue(data, condition.valueB),\n result = false;\n\n if (typeof valueA === \"undefined\" && typeof valueB === \"undefined\")\n return false;\n\n if (condition.type === \"typeof\") {\n result = typeof valueA === valueB;\n }\n\n if (condition.type === \"includes\") {\n result = formatValue(condition.format || \"\", valueA).includes(\n formatValue(condition.format || \"\", valueB)\n );\n }\n\n if (condition.type === \"includes_property\") {\n result = valueA.some(\n (v: any) => v[condition.valueA?.property_name || \"\"] === valueB\n );\n }\n\n if (condition.type === \"starts_with\") {\n result = formatValue(\"string\", valueA).startsWith(\n formatValue(condition.format || \"\", valueB)\n );\n }\n\n if (condition.type === \"equals\") {\n result =\n formatValue(condition.format || \"\", valueA) ===\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"not_equals\") {\n result =\n formatValue(condition.format || \"\", valueA) !==\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lt\") {\n result =\n formatValue(condition.format || \"\", valueA) <\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lte\") {\n result =\n formatValue(condition.format || \"\", valueA) <=\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gt\") {\n result =\n formatValue(condition.format || \"\", valueA) >\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gte\") {\n result =\n formatValue(condition.format || \"\", valueA) >=\n formatValue(condition.format || \"\", valueB);\n }\n\n return invertResult(result, condition.invert);\n });\n\n return result;\n}\n\nexport const Name = \"cart-data-conditions\";\n\nexport const Component: CorrectComponentType<CartDataConditionsProps> = (\n _,\n { element }\n) => {\n const conditionTemplates = Array.from(element.children).filter(\n (child) => child.tagName === \"TEMPLATE\" && child.hasAttribute(\"conditions\")\n );\n if (!conditionTemplates.length)\n return console.error(\n `${Name}: no templates found with any conditions attribute!`\n );\n\n const allConditions = createMemo(() =>\n conditionTemplates.map((tmpl) => {\n const conditions = tmpl.getAttribute(\"conditions\");\n if (!conditions)\n console.warn(`${Name}: conditions attribute is required!`);\n\n try {\n return JSON.parse(conditions!);\n } catch (e) {\n return [];\n }\n })\n );\n\n const cart = useAjaxCart(element);\n const fullPath = useCartPath({ element });\n const data = useCartValue({\n path: fullPath,\n data: cart,\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${For} each=${() => conditionTemplates}>\n ${(tmpl: HTMLTemplateElement, idx: Accessor<number>) => {\n const conditions = allConditions()[idx()];\n return html`\n <${Show} when=${() => validateConditions(conditions, data())}>\n ${() => Array.from(tmpl.content.cloneNode(true).childNodes)}\n <//>\n `;\n }}\n <//>\n `;\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { getTemplateContent, type Format } from \"../utils/index.js\";\n\nimport { Show, For, type Accessor, createMemo } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n useAjaxCart,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element }\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const data = useAjaxCart(element);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n data,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\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 <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </cart-data-array-item>\n `}\n <//>\n <//>\n `;\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { getTemplateContent, type Format } from \"../utils/index.js\";\n\nimport { createEffect, on, createMemo, mapArray } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n useAjaxCart,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n wrapInnerChild: boolean;\n target: string;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array-injection\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element }\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const data = useAjaxCart(element);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n data,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n const children = createMemo(\n mapArray(arrayValue, (_, idx) => {\n const fragment = itemTemplate.cloneNode(true);\n const container = fragment instanceof DocumentFragment ? fragment : null;\n if (props.wrapInnerChild && container) {\n const firstElement = container.firstElementChild;\n if (!firstElement) return null;\n const children = Array.from(firstElement.children);\n\n const wrapper = html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(children)}\n </cart-data-array-item>\n `;\n firstElement.replaceChildren(\n Array.isArray(wrapper) ? wrapper.at(0)! : wrapper\n );\n\n return firstElement;\n }\n })\n );\n\n createEffect(\n on(\n () => {\n const rootElement = element;\n return {\n target: getTargetElement(rootElement, props.target),\n children: children(),\n };\n },\n ({ children, target }) => {\n if (!target) return;\n const filteredChildren = children.filter(\n (v) => v !== null && v !== undefined\n );\n target.replaceChildren(...filteredChildren);\n }\n )\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n provideCartPathContext,\n useCartPath,\n} from \"../hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: CartPath;\n};\n\nexport const Name = \"cart-data-array-item\";\n\nexport const Component: CorrectComponentType<CartDataArrayItemProps> = (\n props,\n { element }\n) => {\n if (!props.itemIndex)\n return console.warn(`${Name}: No path attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup } from \"solid-js\";\nimport debounce from \"lodash.debounce\";\n\nimport {\n type Status,\n provideListenerStatusContext,\n useAjaxCart,\n useCartValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { parseNestedObject } from \"../utils/index.js\";\n\ntype CartDataListenerProps = {\n status: Status;\n on: string;\n method: string;\n debounceDelay: number;\n resetForm: boolean;\n resetStatusDelay: number;\n preventDefault: boolean;\n};\n\nexport const Name = \"cart-data-listener\";\n\nexport const Component: CorrectComponentType<CartDataListenerProps> = (\n props,\n { element }\n) => {\n const [_, setStatus] = provideListenerStatusContext({\n element,\n get status() {\n return props.status;\n },\n });\n\n const cart = useAjaxCart(element);\n\n const path = useCartPath({\n element,\n });\n const data = useCartValue({\n data: cart,\n path,\n });\n\n // let currentEventId: string | null = null;\n\n createEffect(\n on(\n () => ({\n method: props.method,\n on: props.on,\n preventDefault: props.preventDefault,\n data: data() as any,\n debounceDelay: props.debounceDelay,\n resetForm: props.resetForm,\n resetStatusDelay: props.resetStatusDelay,\n }),\n ({\n method,\n on,\n preventDefault,\n data,\n debounceDelay,\n resetForm,\n resetStatusDelay,\n }) => {\n if (!method)\n return console.error(`${Name}: method property is required!`);\n if (!on) return console.error(`${Name}: on property is required!`);\n\n let resetStatusId: number | null = null;\n // tempEventId: string | null = null;\n\n function onEvent(e: Event) {\n const cart = AjaxCart;\n\n // (currentEventId = createUniqueId()), (tempEventId = currentEventId);\n\n if (preventDefault) e.preventDefault();\n\n async function handleStatus<T>(promise: Promise<T>) {\n setStatus(\"loading\");\n return promise\n .then((data) => {\n setStatus(\"success\");\n return data;\n })\n .catch((error) => {\n setStatus(\"error\");\n return error;\n })\n .finally(() => {\n if (resetStatusDelay > 0) {\n //@ts-ignore\n resetStatusId = setTimeout(() => {\n setStatus(\"default\");\n resetStatusId = null;\n }, resetStatusDelay);\n } else {\n setStatus(\"default\");\n }\n });\n }\n\n if (on === \"submit\") {\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n const formObj = parseNestedObject(\n //@ts-ignore\n Object.fromEntries(formData.entries())\n );\n\n function reset() {\n if (resetForm) form.reset();\n }\n\n if (method === \"replaceItem\") {\n return handleStatus(\n cart.replaceItem({\n key: formObj.key,\n id: formObj.id,\n })\n ).finally(reset);\n }\n\n if (method === \"updateItem\") {\n return handleStatus(\n cart.updateItem({\n id: formObj.id,\n quantity: formObj?.quantity || undefined,\n properties: formObj?.properties || {},\n selling_plan: formObj?.selling_plan || undefined,\n })\n ).finally(reset);\n }\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(formObj.key)).finally(reset);\n }\n\n if (method === \"addDiscount\") {\n return handleStatus(cart.addDiscount(formObj.code)).finally(\n reset\n );\n }\n\n if (method === \"removeDiscount\") {\n return handleStatus(cart.removeDiscount(formObj.code)).finally(\n reset\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(formObj.note)).finally(reset);\n }\n\n return;\n }\n\n const input = e.target as HTMLInputElement;\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(data.key));\n }\n\n if (method === \"updateQuantity\") {\n return handleStatus(\n cart.updateItem({\n id: data.key,\n quantity: input.valueAsNumber,\n })\n );\n }\n\n if (method === \"updateItemVariant\") {\n return handleStatus(\n cart.replaceItem({\n key: data.key,\n id: input.value,\n })\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(input.value));\n }\n }\n const handleEvent = debounce(onEvent, debounceDelay),\n controller = new AbortController();\n\n element.addEventListener(\n on,\n (e) => {\n if (preventDefault) e.preventDefault();\n handleEvent(e);\n },\n { signal: controller.signal }\n );\n\n return onCleanup(() => {\n controller.abort();\n if (resetStatusId) clearTimeout(resetStatusId);\n });\n }\n )\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createMemo } from \"solid-js\";\n\nimport { type Status, useListenerStatus } from \"../hooks/index.js\";\nimport { getTemplateContent } from \"../utils/index.js\";\n\nexport const Name = \"cart-data-listener-status\";\n\nexport const Component: CorrectComponentType<{}> = (_, { element }) => {\n const [status] = useListenerStatus(element);\n if (!status) return console.error(`${Name}: no listener context provided!`);\n\n const templates = {\n default: getTemplateContent(element, \"default\"),\n loading: getTemplateContent(element, \"loading\"),\n success: getTemplateContent(element, \"success\"),\n error: getTemplateContent(element, \"error\"),\n };\n\n let previousState: Status | null = null;\n\n const currentStatus = () => {\n const s = status();\n if (!templates[s]) return previousState;\n previousState = s;\n return s;\n };\n\n element.replaceChildren(...[]);\n\n return createMemo(() => {\n const state = currentStatus();\n if (!state) return null;\n const template = templates[state];\n if (!template) return null;\n return Array.from(template.cloneNode(true).childNodes);\n });\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n useCartFormattedValue,\n useCartPath,\n useAjaxCart,\n} from \"../hooks/index.js\";\nimport { type Format, getTargetElement } from \"../utils/index.js\";\nimport { createEffect, on, onCleanup } from \"solid-js\";\n\ntype CartDataInjectionProps = {\n propertyName: CartPath;\n format?: Format;\n target: string;\n attributeName: string;\n injectionType: \"attribute\" | \"property\" | \"template\";\n};\n\nconst VALID_INJECTION_TYPES = [\"attribute\", \"property\", \"template\"];\n\nexport const Name = \"cart-data-injection\";\n\nexport const Component: CorrectComponentType<CartDataInjectionProps> = (\n props,\n { element }\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No path attribute provided.`);\n if (!props.target) return console.warn(`${Name}: No target attribute found!`);\n if (!props.attributeName)\n return console.warn(`${Name}: No attribute-name attribute found!`);\n\n if (\n !props.injectionType ||\n (props.injectionType &&\n !VALID_INJECTION_TYPES.includes(props.injectionType))\n )\n return console.warn(`${Name}: Invalid injection-type attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.propertyName,\n };\n const data = useAjaxCart(element);\n const fullPath = useCartPath(mergedProps);\n const value = useCartFormattedValue({\n element,\n path: fullPath,\n data,\n get format() {\n return props.format;\n },\n });\n\n createEffect(\n on(\n () => {\n return {\n target: getTargetElement(element, props.target),\n value: value(),\n attributeName: props.attributeName,\n injectionType: props.injectionType,\n propertyName: props.propertyName,\n };\n },\n ({ target, value, attributeName, injectionType, propertyName }) => {\n if (!target)\n return console.warn(\n `${Name}: Unable to find element with selector of: ${props.target}`\n );\n\n if (\n injectionType === \"attribute\" &&\n value !== null &&\n value !== undefined\n ) {\n target.setAttribute(attributeName, `${value}`);\n return;\n }\n\n if (\n injectionType === \"property\" &&\n value !== null &&\n value !== undefined\n ) {\n //@ts-ignore\n target[attributeName] = value;\n return;\n }\n\n if (\n injectionType === \"template\" &&\n value !== null &&\n value !== undefined\n ) {\n if (attributeName === \"style\") {\n //@ts-ignore\n const styleTmpl = target[attributeName].cssText;\n setTimeout(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl.replace(\n //@ts-ignore\n `{${propertyName}}`,\n value\n );\n });\n return onCleanup(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl;\n });\n }\n const tmpValue = target.getAttribute(attributeName);\n if (!tmpValue || !value)\n return console.warn(\n `${Name}: Unable to inject value into template`\n );\n setTimeout(() => {\n target.setAttribute(\n attributeName,\n\n tmpValue.replace(`{${propertyName}}`, `${value}`)\n );\n });\n return onCleanup(() => {\n target.setAttribute(attributeName, tmpValue);\n });\n }\n }\n )\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { Show, createMemo } from \"solid-js\";\n\nimport { getTemplateContent } from \"../utils/index.js\";\nimport html from \"solid-js/html\";\n\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\n\ntype Status = (typeof AjaxCart)[\"status\"];\n\ntype CartLoadingStateProps = {\n ignoredStates: Array<Status>;\n};\n\nexport const Name = \"cart-loading-state\";\n\nexport const Component: CorrectComponentType<CartLoadingStateProps> = (\n props,\n { element },\n) => {\n const cart = AjaxCart;\n\n const templates = {\n pending: getTemplateContent(element, \"pending\"),\n error: getTemplateContent(element, \"error\"),\n success: getTemplateContent(element, \"success\"),\n };\n\n let previousState: Status | null = null;\n\n const cartState = createMemo(() => {\n const state = cart?.status;\n if (!templates[state] || props.ignoredStates.includes(state))\n return previousState;\n previousState = state;\n return state;\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${Show} when=${() => cart}>\n ${() => {\n const state = cartState();\n if (!state) return null;\n if (!templates[state]) return null;\n const children = Array.from(\n templates[state].cloneNode(true).childNodes,\n );\n return children;\n }}\n <//>\n `;\n};\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n CartContext,\n CartData,\n CartDataArray,\n CartDataArrayInjection,\n CartDataArrayItem,\n CartDataConditions,\n CartDataInjection,\n CartDataListener,\n CartDataListenerStatus,\n CartLoadingState,\n} from \"./components/index.js\";\n\ncustomShadowlessElement(\n CartContext.Name,\n { debug: false },\n correctElementType(CartContext.Component),\n);\n\ncustomShadowlessElement(\n CartDataArrayItem.Name,\n //@ts-ignore\n { itemIndex: \"0\" },\n correctElementType(CartDataArrayItem.Component),\n);\n\ncustomShadowlessElement(\n CartDataArray.Name,\n {\n format: \"\",\n arrayPath: \"items\",\n reverse: false,\n },\n correctElementType(CartDataArray.Component),\n);\n\ncustomShadowlessElement(\n CartDataArrayInjection.Name,\n {\n format: \"\",\n arrayPath: \"items\",\n target: \"\",\n wrapInnerChild: true,\n reverse: false,\n },\n correctElementType(CartDataArrayInjection.Component),\n);\n\ncustomShadowlessElement(\n CartData.Name,\n {\n format: \"\",\n propertyName: \"item_count\",\n },\n correctElementType(CartData.Component),\n);\n\ncustomShadowlessElement(\n CartDataConditions.Name,\n {},\n correctElementType(CartDataConditions.Component),\n);\n\ncustomShadowlessElement(\n CartDataInjection.Name,\n {\n propertyName: \"item_count\",\n attributeName: \"data-item-count\",\n injectionType: \"attribute\",\n target: \"\",\n format: \"\",\n },\n correctElementType(CartDataInjection.Component),\n);\n\ncustomShadowlessElement(\n CartDataListener.Name,\n {\n status: \"default\",\n on: \"submit\",\n method: \"updateItem\",\n resetForm: true,\n debounceDelay: 0,\n resetStatusDelay: 0,\n preventDefault: true,\n },\n correctElementType(CartDataListener.Component),\n);\n\ncustomShadowlessElement(\n CartDataListenerStatus.Name,\n {},\n correctElementType(CartDataListenerStatus.Component),\n);\n\ncustomShadowlessElement(\n CartLoadingState.Name,\n { ignoredStates: [] },\n correctElementType(CartLoadingState.Component),\n);\n\nexport * from \"./hooks/index.js\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/cart-context.ts","../../src/hooks/useAjaxCart.ts","../../src/utils/getValueFromPath.ts","../../src/utils/formatValue.ts","../../src/utils/getTemplateContent.ts","../../src/utils/getTargetElement.ts","../../src/utils/parseNestedObject.ts","../../src/utils/traverseObject.ts","../../src/components/cart-data.ts","../../src/hooks/useListenerStatus.ts","../../src/hooks/index.ts","../../src/components/cart-data-conditions.ts","../../src/components/cart-data-array.ts","../../src/components/cart-data-array-injection.ts","../../src/components/cart-data-array-item.ts","../../src/components/cart-data-listener.ts","../../src/components/cart-data-listener-status.ts","../../src/components/cart-data-injection.ts","../../src/components/cart-loading-state.ts","../../src/index.ts"],"names":["Component","Name","createContext","provide","consume","html","result","Show","createMemo","For","children","createEffect","on","data","AjaxCart","reset","value","onCleanup"],"mappings":"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","file":"index.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on } from \"solid-js\";\nimport { provideAjaxCartContext } from \"../hooks/useAjaxCart.js\";\nimport { traverseObject } from \"../utils/index.js\";\n\ntype CartContextProps = {\n debug?: boolean;\n};\n\nexport const Name = \"cart-context\";\n\nexport const Component: CorrectComponentType<CartContextProps> = (\n props,\n { element }\n) => {\n const cart = provideAjaxCartContext(element);\n\n createEffect(() => {\n if (!props.debug) return;\n const c = cart();\n // This will listen to every change within the cart object.\n traverseObject(c);\n console.log(`${Name}:updated!`, c);\n });\n};\n","import AjaxCart, { type CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport type { PathValue } from \"@brytdesigns/web-component-core\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype AjaxCartContextType = () => PathValue<CartData, \"\">;\n\nconst AjaxCartContext = createContext(() => () => AjaxCart.data);\n\nexport const provideAjaxCartContext = (\n element: WalkableNode\n): AjaxCartContextType => {\n return provide(AjaxCartContext, {}, element);\n};\n\nexport const useAjaxCartContext = (context: AjaxCartContextType) => {\n return context;\n};\n\nexport const useAjaxCart = (element: HTMLElement & ICustomElement) => {\n const context = consume(AjaxCartContext, element);\n\n if (!context) {\n throw console.error(\n \"CartContext not found! Please ensure to wrap your custom element with cart-context element.\"\n );\n }\n\n return useAjaxCartContext(context);\n};\n","// 🔥 Recursively Constructs All Possible Paths for an Object or Array\nexport 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\n// 🔥 Correctly Extracts the Value at the Given Path\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 // 🔥 Convert numeric keys for proper array indexing\n const isArrayIndex = !isNaN(Number(key)) && key.trim() !== \"\";\n if (Array.isArray(acc) && isArrayIndex) {\n return acc[Number(key)];\n }\n\n // Normal object property access\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","export function getTargetElement(rootElement: HTMLElement, target: string) {\n if (!target) return rootElement;\n const t = rootElement.querySelector(target);\n if (!t) {\n console.error(`target element not found: ${target}`);\n return null;\n }\n return t;\n}\n","export function parseNestedObject<T extends Record<string, any>>(\n data: T,\n): Record<string, any> {\n const result: Record<string, any> = {};\n\n for (const key in data) {\n const value = data[key];\n const parts = key.match(/(\\w+|\\[\\d+\\])/g);\n\n if (!parts) continue;\n\n let current: any = result;\n for (let i = 0; i < parts.length; i++) {\n let part: string | number | undefined = parts[i];\n let nextPart: string | number | undefined = parts[i + 1];\n\n if (!part) continue;\n\n // Convert array-like keys to numbers\n if (part.startsWith(\"[\")) {\n part = parseInt(part.slice(1, -1), 10);\n }\n\n if (i === parts.length - 1) {\n current[part] = value;\n } else {\n if (\n typeof parts[i + 1] === \"number\" ||\n (nextPart && nextPart.startsWith(\"[\"))\n ) {\n current[part] = current[part] || [];\n } else {\n current[part] = current[part] || {};\n }\n current = current[part];\n }\n }\n }\n\n return result;\n}\n","type TraverseCallback = (key: string, value: any, path: string[]) => void;\n\nexport function traverseObject(\n obj: any,\n callback?: TraverseCallback,\n path: string[] = [],\n) {\n if (typeof obj !== \"object\" || obj === null) return;\n\n if (Array.isArray(obj)) {\n obj.forEach((item, index) => {\n traverseObject(item, callback, [...path, index.toString()]);\n });\n } else {\n for (const key of Object.keys(obj)) {\n const value = obj[key];\n const currentPath = [...path, key];\n if (callback) callback(key, value, currentPath);\n traverseObject(value, callback, currentPath);\n }\n }\n}\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { type Format } from \"../utils/index.js\";\n\nimport { Show } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartFormattedValue,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: CartPath;\n format?: Format;\n};\n\nexport const Name = \"cart-data\";\n\nexport const Component: CorrectComponentType<CartDataProps> = (\n props,\n { element },\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No property-name attribute provided.`);\n const fullPath = useCartPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useCartFormattedValue({\n get format() {\n return props.format;\n },\n path: fullPath,\n element,\n });\n\n return html`\n <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>\n `;\n};\n","import {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\nimport { splitProps } from \"solid-js\";\nimport { createWithElementContext } from \"@brytdesigns/web-component-core/utils\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\nexport type Status = \"default\" | \"loading\" | \"success\" | \"error\";\n\ntype ListenerStatusContextType = ReturnType<typeof createListenerStatusContext>;\n\ntype Options = {\n element: HTMLElement & ICustomElement;\n status: Status;\n};\n\nfunction createListenerStatusContext(options: Options) {\n const [privateProps, publicProps] = splitProps(options, [\"element\"]);\n\n function setStatus(status: Status) {\n const currentStatus = privateProps.element.getAttribute(\"status\");\n if (currentStatus === status) return;\n privateProps.element.setAttribute(\"status\", status);\n return status;\n }\n\n return [() => publicProps.status, setStatus] as const;\n}\n\nconst ListenerStatusContext = createContext(createListenerStatusContext);\n\nexport const provideListenerStatusContext = (options: {\n element: WalkableNode;\n status: Status;\n}): ListenerStatusContextType => {\n return provide(ListenerStatusContext, options, options.element);\n};\n\nexport const useListenerStatusContext = (\n context: ListenerStatusContextType,\n) => {\n return context;\n};\n\nexport const useListenerStatus = (element: HTMLElement & ICustomElement) => {\n const context = consume(ListenerStatusContext, element);\n\n if (!context) {\n throw console.error(\n \"CartListenerContext not found! Please ensure to wrap your custom element with cart-data-listener element.\",\n );\n }\n\n return useListenerStatusContext(context);\n};\n\nexport const withListenerElementStatus = createWithElementContext<\n typeof ListenerStatusContext,\n ListenerStatusContextType\n>(ListenerStatusContext);\n","import type { CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport {\n makeFullPropertyPathContext,\n type Path,\n type PathValue,\n} from \"@brytdesigns/web-component-core\";\nimport type { ICustomElement } from \"component-register\";\nimport { useAjaxCart } from \"./useAjaxCart.js\";\n\nconst hooks = makeFullPropertyPathContext<CartData>();\n\nexport type CartPath = Path<CartData>;\nexport type CartPathValue<Path extends CartPath> = PathValue<CartData, Path>;\nexport const useCartValue = (\n options: Omit<Parameters<typeof hooks.usePathValue>[0], \"data\"> & {\n element: HTMLElement & ICustomElement;\n },\n) => {\n const data = useAjaxCart(options.element);\n return hooks.usePathValue({\n ...options,\n data,\n });\n};\nexport const useCartPath = hooks.usePath;\nexport const useCartFormattedValue = (\n options: Omit<Parameters<typeof hooks.useFormattedValue>[0], \"data\"> & {\n element: HTMLElement & ICustomElement;\n },\n) => {\n const data = useAjaxCart(options.element);\n return hooks.useFormattedValue({\n data,\n get format() {\n return options.format;\n },\n path: options.path,\n });\n};\nexport const provideCartPathContext = hooks.provide;\n\nexport * from \"./useAjaxCart.js\";\nexport * from \"./useListenerStatus.js\";\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { Show, createMemo, For, type Accessor } from \"solid-js\";\nimport html from \"solid-js/html\";\n\nimport { useCartPath, useCartValue } from \"../hooks/index.js\";\nimport { getValueFromPath, formatValue, type Format } from \"../utils/index.js\";\n\ntype CartDataConditionsProps = {};\n\ntype ConditionValue = {\n type: \"primitive\" | \"property\";\n name?: string;\n value?: string | number | boolean | null;\n property_name?: string;\n};\n\ntype Condition = {\n type:\n | \"typeof\"\n | \"includes\"\n | \"includes_property\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"lt\"\n | \"lte\"\n | \"gt\"\n | \"gte\";\n format?: Format;\n invert?: boolean;\n valueA: ConditionValue;\n valueB: ConditionValue;\n};\n\nfunction getValue<T>(data: T, value: ConditionValue): any {\n if (typeof value === \"undefined\" || !data) return undefined;\n\n if (value.type === \"primitive\") {\n return value.value;\n }\n\n if (value.type === \"property\" && value.name) {\n //@ts-ignore\n return getValueFromPath<T>(data, value.name);\n }\n\n return null;\n}\n\nfunction invertResult(result: boolean, invert = false) {\n if (invert) return !result;\n return result;\n}\n\nfunction validateConditions<T>(conditions: Condition[], data: T) {\n if (!data) return false;\n const result = conditions.every((condition) => {\n let valueA = getValue(data, condition.valueA),\n valueB = getValue(data, condition.valueB),\n result = false;\n\n if (typeof valueA === \"undefined\" && typeof valueB === \"undefined\")\n return false;\n\n if (condition.type === \"typeof\") {\n result = typeof valueA === valueB;\n }\n\n if (condition.type === \"includes\") {\n result = formatValue(condition.format || \"\", valueA).includes(\n formatValue(condition.format || \"\", valueB),\n );\n }\n\n if (condition.type === \"includes_property\") {\n result = valueA.some(\n (v: any) => v[condition.valueA?.property_name || \"\"] === valueB,\n );\n }\n\n if (condition.type === \"starts_with\") {\n result = formatValue(\"string\", valueA).startsWith(\n formatValue(condition.format || \"\", valueB),\n );\n }\n\n if (condition.type === \"equals\") {\n result =\n formatValue(condition.format || \"\", valueA) ===\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"not_equals\") {\n result =\n formatValue(condition.format || \"\", valueA) !==\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lt\") {\n result =\n formatValue(condition.format || \"\", valueA) <\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lte\") {\n result =\n formatValue(condition.format || \"\", valueA) <=\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gt\") {\n result =\n formatValue(condition.format || \"\", valueA) >\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gte\") {\n result =\n formatValue(condition.format || \"\", valueA) >=\n formatValue(condition.format || \"\", valueB);\n }\n\n return invertResult(result, condition.invert);\n });\n\n return result;\n}\n\nexport const Name = \"cart-data-conditions\";\n\nexport const Component: CorrectComponentType<CartDataConditionsProps> = (\n _,\n { element },\n) => {\n const conditionTemplates = Array.from(element.children).filter(\n (child) => child.tagName === \"TEMPLATE\" && child.hasAttribute(\"conditions\"),\n );\n if (!conditionTemplates.length)\n return console.error(\n `${Name}: no templates found with any conditions attribute!`,\n );\n\n const allConditions = createMemo(() =>\n conditionTemplates.map((tmpl) => {\n const conditions = tmpl.getAttribute(\"conditions\");\n if (!conditions)\n console.warn(`${Name}: conditions attribute is required!`);\n\n try {\n return JSON.parse(conditions!);\n } catch (e) {\n return [];\n }\n }),\n );\n\n const fullPath = useCartPath({ element });\n const data = useCartValue({\n path: fullPath,\n element,\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${For} each=${() => conditionTemplates}>\n ${(tmpl: HTMLTemplateElement, idx: Accessor<number>) => {\n const conditions = allConditions()[idx()];\n return html`\n <${Show} when=${() => validateConditions(conditions, data())}>\n ${() => Array.from(tmpl.content.cloneNode(true).childNodes)}\n <//>\n `;\n }}\n <//>\n `;\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { getTemplateContent, type Format } from \"../utils/index.js\";\n\nimport { Show, For, type Accessor, createMemo } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element },\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`,\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n element,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\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 <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </cart-data-array-item>\n `}\n <//>\n <//>\n `;\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { getTemplateContent, type Format } from \"../utils/index.js\";\n\nimport { createEffect, on, createMemo, mapArray } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n wrapInnerChild: boolean;\n target: string;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array-injection\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element },\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`,\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n path: fullPath,\n element,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n const children = createMemo(\n mapArray(arrayValue, (_, idx) => {\n const fragment = itemTemplate.cloneNode(true);\n const container = fragment instanceof DocumentFragment ? fragment : null;\n if (props.wrapInnerChild && container) {\n const firstElement = container.firstElementChild;\n if (!firstElement) return null;\n const children = Array.from(firstElement.children);\n\n const wrapper = html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(children)}\n </cart-data-array-item>\n `;\n firstElement.replaceChildren(\n Array.isArray(wrapper) ? wrapper.at(0)! : wrapper,\n );\n\n return firstElement;\n }\n }),\n );\n\n createEffect(\n on(\n () => {\n const rootElement = element;\n return {\n target: getTargetElement(rootElement, props.target),\n children: children(),\n };\n },\n ({ children, target }) => {\n if (!target) return;\n const filteredChildren = children.filter(\n (v) => v !== null && v !== undefined,\n );\n target.replaceChildren(...filteredChildren);\n },\n ),\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n provideCartPathContext,\n useCartPath,\n} from \"../hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: CartPath;\n};\n\nexport const Name = \"cart-data-array-item\";\n\nexport const Component: CorrectComponentType<CartDataArrayItemProps> = (\n props,\n { element }\n) => {\n if (!props.itemIndex)\n return console.warn(`${Name}: No path attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup } from \"solid-js\";\nimport debounce from \"lodash.debounce\";\n\nimport {\n type Status,\n provideListenerStatusContext,\n useCartValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { parseNestedObject } from \"../utils/index.js\";\n\ntype CartDataListenerProps = {\n status: Status;\n on: string;\n method: string;\n debounceDelay: number;\n resetForm: boolean;\n resetStatusDelay: number;\n preventDefault: boolean;\n};\n\nexport const Name = \"cart-data-listener\";\n\nexport const Component: CorrectComponentType<CartDataListenerProps> = (\n props,\n { element },\n) => {\n const [_, setStatus] = provideListenerStatusContext({\n element,\n get status() {\n return props.status;\n },\n });\n\n const path = useCartPath({\n element,\n });\n const data = useCartValue({\n element,\n path,\n });\n\n // let currentEventId: string | null = null;\n\n createEffect(\n on(\n () => ({\n method: props.method,\n on: props.on,\n preventDefault: props.preventDefault,\n data: data() as any,\n debounceDelay: props.debounceDelay,\n resetForm: props.resetForm,\n resetStatusDelay: props.resetStatusDelay,\n }),\n ({\n method,\n on,\n preventDefault,\n data,\n debounceDelay,\n resetForm,\n resetStatusDelay,\n }) => {\n if (!method)\n return console.error(`${Name}: method property is required!`);\n if (!on) return console.error(`${Name}: on property is required!`);\n\n let resetStatusId: number | null = null;\n // tempEventId: string | null = null;\n\n function onEvent(e: Event) {\n const cart = AjaxCart;\n\n // (currentEventId = createUniqueId()), (tempEventId = currentEventId);\n\n if (preventDefault) e.preventDefault();\n\n async function handleStatus<T>(promise: Promise<T>) {\n setStatus(\"loading\");\n return promise\n .then((data) => {\n setStatus(\"success\");\n return data;\n })\n .catch((error) => {\n setStatus(\"error\");\n return error;\n })\n .finally(() => {\n if (resetStatusDelay > 0) {\n //@ts-ignore\n resetStatusId = setTimeout(() => {\n setStatus(\"default\");\n resetStatusId = null;\n }, resetStatusDelay);\n } else {\n setStatus(\"default\");\n }\n });\n }\n\n if (on === \"submit\") {\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n const formObj = parseNestedObject(\n //@ts-ignore\n Object.fromEntries(formData.entries()),\n );\n\n function reset() {\n if (resetForm) form.reset();\n }\n\n if (method === \"replaceItem\") {\n return handleStatus(\n cart.replaceItem({\n key: formObj.key,\n id: formObj.id,\n }),\n ).finally(reset);\n }\n\n if (method === \"updateItem\") {\n return handleStatus(\n cart.updateItem({\n id: formObj.id,\n quantity: formObj?.quantity || undefined,\n properties: formObj?.properties || {},\n selling_plan: formObj?.selling_plan || undefined,\n }),\n ).finally(reset);\n }\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(formObj.key)).finally(reset);\n }\n\n if (method === \"addDiscount\") {\n return handleStatus(cart.addDiscount(formObj.code)).finally(\n reset,\n );\n }\n\n if (method === \"removeDiscount\") {\n return handleStatus(cart.removeDiscount(formObj.code)).finally(\n reset,\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(formObj.note)).finally(reset);\n }\n\n return;\n }\n\n const input = e.target as HTMLInputElement;\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(data.key));\n }\n\n if (method === \"updateQuantity\") {\n return handleStatus(\n cart.updateItem({\n id: data.key,\n quantity: input.valueAsNumber,\n }),\n );\n }\n\n if (method === \"updateItemVariant\") {\n return handleStatus(\n cart.replaceItem({\n key: data.key,\n id: input.value,\n }),\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(input.value));\n }\n }\n const handleEvent = debounce(onEvent, debounceDelay),\n controller = new AbortController();\n\n element.addEventListener(\n on,\n (e) => {\n if (preventDefault) e.preventDefault();\n handleEvent(e);\n },\n { signal: controller.signal },\n );\n\n return onCleanup(() => {\n controller.abort();\n if (resetStatusId) clearTimeout(resetStatusId);\n });\n },\n ),\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createMemo } from \"solid-js\";\n\nimport { type Status, useListenerStatus } from \"../hooks/index.js\";\nimport { getTemplateContent } from \"../utils/index.js\";\n\nexport const Name = \"cart-data-listener-status\";\n\nexport const Component: CorrectComponentType<{}> = (_, { element }) => {\n const [status] = useListenerStatus(element);\n if (!status) return console.error(`${Name}: no listener context provided!`);\n\n const templates = {\n default: getTemplateContent(element, \"default\"),\n loading: getTemplateContent(element, \"loading\"),\n success: getTemplateContent(element, \"success\"),\n error: getTemplateContent(element, \"error\"),\n };\n\n let previousState: Status | null = null;\n\n const currentStatus = () => {\n const s = status();\n if (!templates[s]) return previousState;\n previousState = s;\n return s;\n };\n\n element.replaceChildren(...[]);\n\n return createMemo(() => {\n const state = currentStatus();\n if (!state) return null;\n const template = templates[state];\n if (!template) return null;\n return Array.from(template.cloneNode(true).childNodes);\n });\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n useCartFormattedValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport { type Format, getTargetElement } from \"../utils/index.js\";\nimport { createEffect, on, onCleanup } from \"solid-js\";\n\ntype CartDataInjectionProps = {\n propertyName: CartPath;\n format?: Format;\n target: string;\n attributeName: string;\n injectionType: \"attribute\" | \"property\" | \"template\";\n};\n\nconst VALID_INJECTION_TYPES = [\"attribute\", \"property\", \"template\"];\n\nexport const Name = \"cart-data-injection\";\n\nexport const Component: CorrectComponentType<CartDataInjectionProps> = (\n props,\n { element },\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No path attribute provided.`);\n if (!props.target) return console.warn(`${Name}: No target attribute found!`);\n if (!props.attributeName)\n return console.warn(`${Name}: No attribute-name attribute found!`);\n\n if (\n !props.injectionType ||\n (props.injectionType &&\n !VALID_INJECTION_TYPES.includes(props.injectionType))\n )\n return console.warn(`${Name}: Invalid injection-type attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.propertyName,\n };\n const fullPath = useCartPath(mergedProps);\n const value = useCartFormattedValue({\n element,\n path: fullPath,\n get format() {\n return props.format;\n },\n });\n\n createEffect(\n on(\n () => {\n return {\n target: getTargetElement(element, props.target),\n value: value(),\n attributeName: props.attributeName,\n injectionType: props.injectionType,\n propertyName: props.propertyName,\n };\n },\n ({ target, value, attributeName, injectionType, propertyName }) => {\n if (!target)\n return console.warn(\n `${Name}: Unable to find element with selector of: ${props.target}`,\n );\n\n if (\n injectionType === \"attribute\" &&\n value !== null &&\n value !== undefined\n ) {\n target.setAttribute(attributeName, `${value}`);\n return;\n }\n\n if (\n injectionType === \"property\" &&\n value !== null &&\n value !== undefined\n ) {\n //@ts-ignore\n target[attributeName] = value;\n return;\n }\n\n if (\n injectionType === \"template\" &&\n value !== null &&\n value !== undefined\n ) {\n if (attributeName === \"style\") {\n //@ts-ignore\n const styleTmpl = target[attributeName].cssText;\n setTimeout(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl.replace(\n //@ts-ignore\n `{${propertyName}}`,\n value,\n );\n });\n return onCleanup(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl;\n });\n }\n const tmpValue = target.getAttribute(attributeName);\n if (!tmpValue || !value)\n return console.warn(\n `${Name}: Unable to inject value into template`,\n );\n setTimeout(() => {\n target.setAttribute(\n attributeName,\n\n tmpValue.replace(`{${propertyName}}`, `${value}`),\n );\n });\n return onCleanup(() => {\n target.setAttribute(attributeName, tmpValue);\n });\n }\n },\n ),\n );\n};\n","import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { Show, createMemo } from \"solid-js\";\n\nimport { getTemplateContent } from \"../utils/index.js\";\nimport html from \"solid-js/html\";\n\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\n\ntype Status = (typeof AjaxCart)[\"status\"];\n\ntype CartLoadingStateProps = {\n ignoredStates: Array<Status>;\n};\n\nexport const Name = \"cart-loading-state\";\n\nexport const Component: CorrectComponentType<CartLoadingStateProps> = (\n props,\n { element },\n) => {\n const cart = AjaxCart;\n\n const templates = {\n pending: getTemplateContent(element, \"pending\"),\n error: getTemplateContent(element, \"error\"),\n success: getTemplateContent(element, \"success\"),\n };\n\n let previousState: Status | null = null;\n\n const cartState = createMemo(() => {\n const state = cart?.status;\n if (!templates[state] || props.ignoredStates.includes(state))\n return previousState;\n previousState = state;\n return state;\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${Show} when=${() => cart}>\n ${() => {\n const state = cartState();\n if (!state) return null;\n if (!templates[state]) return null;\n const children = Array.from(\n templates[state].cloneNode(true).childNodes,\n );\n return children;\n }}\n <//>\n `;\n};\n","import {\n customShadowlessElement,\n correctElementType,\n} from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n CartContext,\n CartData,\n CartDataArray,\n CartDataArrayInjection,\n CartDataArrayItem,\n CartDataConditions,\n CartDataInjection,\n CartDataListener,\n CartDataListenerStatus,\n CartLoadingState,\n} from \"./components/index.js\";\n\ncustomShadowlessElement(\n CartContext.Name,\n { debug: false },\n correctElementType(CartContext.Component),\n);\n\ncustomShadowlessElement(\n CartDataArrayItem.Name,\n //@ts-ignore\n { itemIndex: \"0\" },\n correctElementType(CartDataArrayItem.Component),\n);\n\ncustomShadowlessElement(\n CartDataArray.Name,\n {\n format: \"\",\n arrayPath: \"items\",\n reverse: false,\n },\n correctElementType(CartDataArray.Component),\n);\n\ncustomShadowlessElement(\n CartDataArrayInjection.Name,\n {\n format: \"\",\n arrayPath: \"items\",\n target: \"\",\n wrapInnerChild: true,\n reverse: false,\n },\n correctElementType(CartDataArrayInjection.Component),\n);\n\ncustomShadowlessElement(\n CartData.Name,\n {\n format: \"\",\n propertyName: \"item_count\",\n },\n correctElementType(CartData.Component),\n);\n\ncustomShadowlessElement(\n CartDataConditions.Name,\n {},\n correctElementType(CartDataConditions.Component),\n);\n\ncustomShadowlessElement(\n CartDataInjection.Name,\n {\n propertyName: \"item_count\",\n attributeName: \"data-item-count\",\n injectionType: \"attribute\",\n target: \"\",\n format: \"\",\n },\n correctElementType(CartDataInjection.Component),\n);\n\ncustomShadowlessElement(\n CartDataListener.Name,\n {\n status: \"default\",\n on: \"submit\",\n method: \"updateItem\",\n resetForm: true,\n debounceDelay: 0,\n resetStatusDelay: 0,\n preventDefault: true,\n },\n correctElementType(CartDataListener.Component),\n);\n\ncustomShadowlessElement(\n CartDataListenerStatus.Name,\n {},\n correctElementType(CartDataListenerStatus.Component),\n);\n\ncustomShadowlessElement(\n CartLoadingState.Name,\n { ignoredStates: [] },\n correctElementType(CartLoadingState.Component),\n);\n\nexport * from \"./hooks/index.js\";\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { createEffect, on } from '/npm/solid-js@^1.9.5/+esm';
|
|
2
|
+
import { provideHybridCartContext } from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/useHybridCart.js';
|
|
3
|
+
|
|
4
|
+
const CartContext = (props, { element }) => {
|
|
5
|
+
const cart = provideHybridCartContext(element);
|
|
6
|
+
createEffect(
|
|
7
|
+
on(
|
|
8
|
+
() => ({
|
|
9
|
+
cart: cart(),
|
|
10
|
+
debug: props.debug
|
|
11
|
+
}),
|
|
12
|
+
({ cart: cart2, debug }) => {
|
|
13
|
+
if (!debug) return;
|
|
14
|
+
console.log("Cart updated:", cart2);
|
|
15
|
+
}
|
|
16
|
+
)
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { CartContext };
|
|
21
|
+
//# sourceMappingURL=cart-context.js.map
|
|
22
|
+
//# sourceMappingURL=cart-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/cart-context.ts"],"names":["cart"],"mappings":";;;AASO,MAAM,WAAsD,GAAA,CACjE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAM,MAAA,IAAA,GAAO,yBAAyB,OAAO,CAAA;AAC7C,EAAA,YAAA;AAAA,IACE,EAAA;AAAA,MACE,OAAO;AAAA,QACL,MAAM,IAAK,EAAA;AAAA,QACX,OAAO,KAAM,CAAA;AAAA,OACf,CAAA;AAAA,MACA,CAAC,EAAE,IAAAA,EAAAA,KAAAA,EAAM,OAAY,KAAA;AACnB,QAAA,IAAI,CAAC,KAAO,EAAA;AACZ,QAAQ,OAAA,CAAA,GAAA,CAAI,iBAAiBA,KAAI,CAAA;AAAA;AACnC;AACF,GACF;AACF","file":"cart-context.js","sourcesContent":["import type { CorrectComponentType } from \"/npm/@brytdesigns/web-component-utils@0.1.7\";\n\nimport { createEffect, on } from \"/npm/solid-js@^1.9.5/+esm\";\nimport { provideHybridCartContext } from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/useHybridCart.js\";\n\ntype CartContextProps = {\n debug?: boolean;\n};\n\nexport const CartContext: CorrectComponentType<CartContextProps> = (\n props,\n { element },\n) => {\n const cart = provideHybridCartContext(element);\n createEffect(\n on(\n () => ({\n cart: cart(),\n debug: props.debug,\n }),\n ({ cart, debug }) => {\n if (!debug) return;\n console.log(\"Cart updated:\", cart);\n },\n ),\n );\n};\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useFullPropertyPath, provideFullPropertyPathContext } from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js';
|
|
2
|
+
|
|
3
|
+
const CartDataArrayItem = (props, { element }) => {
|
|
4
|
+
if (!props.itemIndex)
|
|
5
|
+
return console.warn("cart-data-array-item: No path attribute provided.");
|
|
6
|
+
const mergedProps = {
|
|
7
|
+
element,
|
|
8
|
+
path: () => props.itemIndex
|
|
9
|
+
};
|
|
10
|
+
const fullPath = useFullPropertyPath(mergedProps);
|
|
11
|
+
provideFullPropertyPathContext({
|
|
12
|
+
element,
|
|
13
|
+
path: fullPath
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { CartDataArrayItem };
|
|
18
|
+
//# sourceMappingURL=cart-data-array-item.js.map
|
|
19
|
+
//# sourceMappingURL=cart-data-array-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/cart-data-array-item.ts"],"names":[],"mappings":";;AAYO,MAAM,iBAAkE,GAAA,CAC7E,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,IAAI,CAAC,KAAM,CAAA,SAAA;AACT,IAAO,OAAA,OAAA,CAAQ,KAAK,mDAAmD,CAAA;AACzE,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACpB;AACA,EAAM,MAAA,QAAA,GAAW,oBAAoB,WAAW,CAAA;AAChD,EAA+B,8BAAA,CAAA;AAAA,IAC7B,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,GACP,CAAA;AACH","file":"cart-data-array-item.js","sourcesContent":["import type { CorrectComponentType } from \"/npm/@brytdesigns/web-component-utils@0.1.7\";\n\nimport {\n type ValidHybridPath,\n provideFullPropertyPathContext,\n useFullPropertyPath,\n} from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: ValidHybridPath;\n};\n\nexport const CartDataArrayItem: CorrectComponentType<CartDataArrayItemProps> = (\n props,\n { element },\n) => {\n if (!props.itemIndex)\n return console.warn(\"cart-data-array-item: No path attribute provided.\");\n const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n const fullPath = useFullPropertyPath(mergedProps);\n provideFullPropertyPathContext({\n element,\n path: fullPath,\n });\n};\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { getTemplateContent } from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/index.js';
|
|
2
|
+
import { Show, For } from '/npm/solid-js@^1.9.5/+esm';
|
|
3
|
+
import { useFullPropertyPath, provideFullPropertyPathContext, useCartValue } from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js';
|
|
4
|
+
import html from '/npm/solid-js@^1.9.5/html/+esm';
|
|
5
|
+
|
|
6
|
+
const CartDataArray = (props, { element }) => {
|
|
7
|
+
const itemTemplate = getTemplateContent(element, "item");
|
|
8
|
+
if (!itemTemplate)
|
|
9
|
+
return console.warn(
|
|
10
|
+
"cart-data-array: No template found with a property of 'item'."
|
|
11
|
+
);
|
|
12
|
+
if (!props.arrayPath)
|
|
13
|
+
return console.warn("cart-data-array: No array path provided.");
|
|
14
|
+
const mergedProps = {
|
|
15
|
+
element,
|
|
16
|
+
path: () => props.arrayPath
|
|
17
|
+
};
|
|
18
|
+
const fullPath = useFullPropertyPath(mergedProps);
|
|
19
|
+
provideFullPropertyPathContext({
|
|
20
|
+
element,
|
|
21
|
+
path: fullPath
|
|
22
|
+
});
|
|
23
|
+
const value = useCartValue({
|
|
24
|
+
element,
|
|
25
|
+
path: fullPath
|
|
26
|
+
});
|
|
27
|
+
const arrayValue = () => {
|
|
28
|
+
const v = value();
|
|
29
|
+
if (!v) {
|
|
30
|
+
console.warn(
|
|
31
|
+
`cart-data-array: value is null or undefined at path ${fullPath()}`
|
|
32
|
+
);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (!Array.isArray(v)) {
|
|
36
|
+
console.warn(
|
|
37
|
+
`cart-data-array: value is not an array at path ${fullPath()}`
|
|
38
|
+
);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return v;
|
|
42
|
+
};
|
|
43
|
+
return html`
|
|
44
|
+
<${Show} when=${() => arrayValue() && arrayValue().length > 0}>
|
|
45
|
+
<${For} each=${arrayValue}>
|
|
46
|
+
${(_, idx) => html`
|
|
47
|
+
<cart-data-array-item item-index=${() => `${idx()}`}>
|
|
48
|
+
${() => Array.from(itemTemplate.cloneNode(true).childNodes)}
|
|
49
|
+
</cart-data-array-item>
|
|
50
|
+
`}
|
|
51
|
+
<//>
|
|
52
|
+
<//>
|
|
53
|
+
`;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { CartDataArray };
|
|
57
|
+
//# sourceMappingURL=cart-data-array.js.map
|
|
58
|
+
//# sourceMappingURL=cart-data-array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/cart-data-array.ts"],"names":[],"mappings":";;;;;AAkBO,MAAM,aAA0D,GAAA,CACrE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAM,MAAA,YAAA,GAAe,kBAAmB,CAAA,OAAA,EAAS,MAAM,CAAA;AACvD,EAAA,IAAI,CAAC,YAAA;AACH,IAAA,OAAO,OAAQ,CAAA,IAAA;AAAA,MACb;AAAA,KACF;AACF,EAAA,IAAI,CAAC,KAAM,CAAA,SAAA;AACT,IAAO,OAAA,OAAA,CAAQ,KAAK,0CAA0C,CAAA;AAChE,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACpB;AACA,EAAM,MAAA,QAAA,GAAW,oBAAoB,WAAW,CAAA;AAChD,EAA+B,8BAAA,CAAA;AAAA,IAC7B,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,MAAM,QAAQ,YAAa,CAAA;AAAA,IACzB,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,GACP,CAAA;AAED,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,IAAI,KAAM,EAAA;AAEhB,IAAA,IAAI,CAAC,CAAG,EAAA;AACN,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,CAAA,oDAAA,EAAuD,UAAU,CAAA;AAAA,OACnE;AACA,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACrB,MAAQ,OAAA,CAAA,IAAA;AAAA,QACN,CAAA,+CAAA,EAAkD,UAAU,CAAA;AAAA,OAC9D;AACA,MAAO,OAAA,IAAA;AAAA;AAGT,IAAO,OAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,IAAA;AAAA,KACF,EAAA,IAAI,SAAS,MAAM,UAAA,MAAgB,UAAW,EAAA,CAAG,SAAS,CAAC,CAAA;AAAA,OACzD,EAAA,GAAG,SAAS,UAAU,CAAA;AAAA,QACrB,EAAA,CAAC,GAAQ,GAA0B,KAAA,IAAA;AAAA,2CAAA,EACA,MAAM,CAAA,EAAG,GAAI,EAAC,CAAE,CAAA,CAAA;AAAA,YAC/C,EAAA,MAAM,MAAM,IAAK,CAAA,YAAA,CAAa,UAAU,IAAI,CAAA,CAAE,UAAU,CAAC;AAAA;AAAA,QAE9D,CAAA;AAAA;AAAA;AAAA,EAAA,CAAA;AAIT","file":"cart-data-array.js","sourcesContent":["import type { CorrectComponentType } from \"/npm/@brytdesigns/web-component-utils@0.1.7\";\nimport { getTemplateContent, type Format } from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/index.js\";\n\nimport { Show, For, type Accessor } from \"/npm/solid-js@^1.9.5/+esm\";\n\nimport {\n type ValidHybridPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js\";\nimport html from \"/npm/solid-js@^1.9.5/html/+esm\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidHybridPath;\n format?: Format;\n};\n\nexport const CartDataArray: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element },\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n \"cart-data-array: No template found with a property of 'item'.\",\n );\n if (!props.arrayPath)\n return console.warn(\"cart-data-array: No array path provided.\");\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useFullPropertyPath(mergedProps);\n provideFullPropertyPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n element,\n path: fullPath,\n });\n\n const arrayValue = () => {\n const v = value();\n\n if (!v) {\n console.warn(\n `cart-data-array: value is null or undefined at path ${fullPath()}`,\n );\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(\n `cart-data-array: value is not an array at path ${fullPath()}`,\n );\n return null;\n }\n\n return v;\n };\n\n return html`\n <${Show} when=${() => arrayValue() && arrayValue()!.length > 0}>\n <${For} each=${arrayValue}>\n ${(_: any, idx: Accessor<number>) => html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </cart-data-array-item>\n `}\n <//>\n <//>\n `;\n};\n"]}
|