@brytdesigns/shopify-ajax-cart-components 1.2.13 → 1.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/esm/index.js +7 -6
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/main/components/cart-data-array-injection.js +4 -3
  4. package/dist/main/components/cart-data-array-injection.js.map +1 -1
  5. package/dist/main/components/cart-data-array.js +4 -4
  6. package/dist/main/components/cart-data-array.js.map +1 -1
  7. package/package.json +2 -2
  8. package/dist/jsdelivr/components/cart-context.js +0 -22
  9. package/dist/jsdelivr/components/cart-context.js.map +0 -1
  10. package/dist/jsdelivr/components/cart-data-array-item.js +0 -19
  11. package/dist/jsdelivr/components/cart-data-array-item.js.map +0 -1
  12. package/dist/jsdelivr/components/cart-data-array.js +0 -58
  13. package/dist/jsdelivr/components/cart-data-array.js.map +0 -1
  14. package/dist/jsdelivr/components/cart-data-conditions.js +0 -97
  15. package/dist/jsdelivr/components/cart-data-conditions.js.map +0 -1
  16. package/dist/jsdelivr/components/cart-data-injection.js +0 -89
  17. package/dist/jsdelivr/components/cart-data-injection.js.map +0 -1
  18. package/dist/jsdelivr/components/cart-data-listener-status.js +0 -35
  19. package/dist/jsdelivr/components/cart-data-listener-status.js.map +0 -1
  20. package/dist/jsdelivr/components/cart-data-listener.js +0 -163
  21. package/dist/jsdelivr/components/cart-data-listener.js.map +0 -1
  22. package/dist/jsdelivr/components/cart-data.js +0 -29
  23. package/dist/jsdelivr/components/cart-data.js.map +0 -1
  24. package/dist/jsdelivr/components/cart-loading-state.js +0 -39
  25. package/dist/jsdelivr/components/cart-loading-state.js.map +0 -1
  26. package/dist/jsdelivr/components/index.js +0 -11
  27. package/dist/jsdelivr/components/index.js.map +0 -1
  28. package/dist/jsdelivr/hooks/index.js +0 -7
  29. package/dist/jsdelivr/hooks/index.js.map +0 -1
  30. package/dist/jsdelivr/hooks/useCartValue.js +0 -23
  31. package/dist/jsdelivr/hooks/useCartValue.js.map +0 -1
  32. package/dist/jsdelivr/hooks/useFormattedValue.js +0 -27
  33. package/dist/jsdelivr/hooks/useFormattedValue.js.map +0 -1
  34. package/dist/jsdelivr/hooks/useFullPropertyPath.js +0 -35
  35. package/dist/jsdelivr/hooks/useFullPropertyPath.js.map +0 -1
  36. package/dist/jsdelivr/hooks/useHybridCart.js +0 -23
  37. package/dist/jsdelivr/hooks/useHybridCart.js.map +0 -1
  38. package/dist/jsdelivr/hooks/useListenerStatus.js +0 -33
  39. package/dist/jsdelivr/hooks/useListenerStatus.js.map +0 -1
  40. package/dist/jsdelivr/index.js +0 -72
  41. package/dist/jsdelivr/index.js.map +0 -1
  42. package/dist/jsdelivr/utils/formatValue.js +0 -22
  43. package/dist/jsdelivr/utils/formatValue.js.map +0 -1
  44. package/dist/jsdelivr/utils/getTargetElement.js +0 -13
  45. package/dist/jsdelivr/utils/getTargetElement.js.map +0 -1
  46. package/dist/jsdelivr/utils/getTemplateContent.js +0 -11
  47. package/dist/jsdelivr/utils/getTemplateContent.js.map +0 -1
  48. package/dist/jsdelivr/utils/getValueFromPath.js +0 -14
  49. package/dist/jsdelivr/utils/getValueFromPath.js.map +0 -1
  50. package/dist/jsdelivr/utils/index.js +0 -7
  51. package/dist/jsdelivr/utils/index.js.map +0 -1
  52. package/dist/jsdelivr/utils/parseNestedObject.js +0 -32
  53. package/dist/jsdelivr/utils/parseNestedObject.js.map +0 -1
package/dist/esm/index.js CHANGED
@@ -3,6 +3,7 @@ import { splitProps, createEffect, on, createMemo, Show, For, mapArray, onCleanu
3
3
  import AjaxCart from '@brytdesigns/shopify-ajax-cart';
4
4
  import { createContext, provide, consume } from 'component-register';
5
5
  import html2 from 'solid-js/html';
6
+ import 'solid-js/store';
6
7
  import debounce from 'lodash.debounce';
7
8
 
8
9
  var __defProp = Object.defineProperty;
@@ -398,7 +399,7 @@ var Component4 = (props, { element }) => {
398
399
  element,
399
400
  path: fullPath
400
401
  });
401
- const arrayValue = () => {
402
+ const arrayValue = createMemo(() => {
402
403
  const v = value();
403
404
  if (!v) {
404
405
  console.warn(`${Name4}: value is null or undefined at path ${fullPath()}`);
@@ -409,10 +410,10 @@ var Component4 = (props, { element }) => {
409
410
  return null;
410
411
  }
411
412
  if (props.reverse) {
412
- return v.reverse();
413
+ return v.toReversed();
413
414
  }
414
415
  return v;
415
- };
416
+ });
416
417
  element.replaceChildren(...[]);
417
418
  return html2`
418
419
  <${Show} when=${() => arrayValue() && arrayValue().length > 0}>
@@ -454,7 +455,7 @@ var Component5 = (props, { element }) => {
454
455
  element,
455
456
  path: fullPath
456
457
  });
457
- const arrayValue = () => {
458
+ const arrayValue = createMemo(() => {
458
459
  const v = value();
459
460
  if (!v) {
460
461
  console.warn(`${Name5}: value is null or undefined at path ${fullPath()}`);
@@ -465,10 +466,10 @@ var Component5 = (props, { element }) => {
465
466
  return null;
466
467
  }
467
468
  if (props.reverse) {
468
- return v.reverse();
469
+ return v.toReversed();
469
470
  }
470
471
  return v;
471
- };
472
+ });
472
473
  const children = createMemo(
473
474
  mapArray(arrayValue, (_, idx) => {
474
475
  const fragment = itemTemplate.cloneNode(true);
@@ -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/useFullPropertyPath.ts","../../src/hooks/useCartValue.ts","../../src/hooks/useFormattedValue.ts","../../src/hooks/useListenerStatus.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":["cart","Component","Name","createContext","provide","consume","createMemo","html","result","Show","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 createEffect(\n on(\n () => {\n const c = cart();\n // This will listen to every change within the cart object.\n traverseObject(c);\n return {\n cart: c,\n debug: props.debug,\n };\n },\n ({ cart, debug }) => {\n if (!debug) return;\n console.log(`${Name}:updated!`, cart);\n },\n ),\n );\n};\n","import AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype AjaxCartContextType = () => (typeof AjaxCart)[\"data\"];\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 ValidAjaxPath,\n useFullPropertyPath,\n useFormattedValue,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: ValidAjaxPath;\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 = useFullPropertyPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useFormattedValue({\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 type { Path } from \"../utils\";\n\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype AjaxCartData = (typeof AjaxCart)[\"data\"];\n\nexport type ValidAjaxPath = Path<AjaxCartData>;\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype FullPropertyPathContextType = ReturnType<\n typeof createFullPathPropertyContext\n>;\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n element: HTMLElement & ICustomElement;\n};\n\nfunction createFullPathPropertyContext(\n options: Options,\n): Accessor<ValidAjaxPath> {\n return options.path;\n}\n\nconst FullPropertyPathContext = createContext(createFullPathPropertyContext);\n\nexport function provideFullPropertyPathContext({\n element,\n path,\n}: {\n element: WalkableNode;\n path: Accessor<ValidAjaxPath>;\n}): FullPropertyPathContextType {\n return provide(FullPropertyPathContext, { path }, element);\n}\n\nexport function useFullPropertyPathContext(\n context: FullPropertyPathContextType,\n) {\n return context;\n}\n\nexport function useFullPropertyPath(props: {\n element: HTMLElement & ICustomElement;\n path?: Accessor<ValidAjaxPath>;\n}) {\n const context = consume(FullPropertyPathContext, props.element);\n const basePath = useFullPropertyPathContext(context);\n return createMemo(() => {\n if (typeof basePath !== \"function\" && typeof props.path === \"function\") {\n return props.path();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path !== \"function\"\n ) {\n return basePath();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path === \"function\"\n ) {\n return `${basePath()}.${props.path()}` as ValidAjaxPath;\n }\n return \"\" as ValidAjaxPath;\n });\n}\n","import { type Accessor, createMemo } from \"solid-js\";\nimport { type ICustomElement } from \"component-register\";\n\nimport { type ValidAjaxPath } from \"./useFullPropertyPath.js\";\nimport { useAjaxCart } from \"./useAjaxCart.js\";\nimport { getValueFromPath } from \"../utils/index.js\";\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n element: HTMLElement & ICustomElement;\n};\n\nexport function useCartValue(options: Options) {\n const cart = useAjaxCart(options.element);\n\n const value = createMemo(() => {\n const c = cart();\n if (typeof options.path !== \"function\") return c;\n const path = options.path();\n if (!path) return c;\n const v = getValueFromPath(c, path);\n if (v === undefined || v === null) return null;\n return v;\n });\n\n return value;\n}\n","import { type Accessor, createMemo } from \"solid-js\";\nimport { type ICustomElement } from \"component-register\";\n\nimport { type ValidAjaxPath } from \"./useFullPropertyPath.js\";\nimport { formatValue, type Format } from \"../utils/index.js\";\nimport { useCartValue } from \"./useCartValue.js\";\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n format?: Format;\n element: HTMLElement & ICustomElement;\n};\n\nexport function useFormattedValue(options: Options) {\n const value = useCartValue({ path: options.path, element: options.element });\n\n const formattedValue = createMemo(() => {\n const v = value();\n if (v === null) return null;\n if (\n typeof v === \"string\" ||\n typeof v === \"number\" ||\n typeof v === \"boolean\"\n ) {\n return formatValue(options.format || \"\", v);\n }\n console.warn(\n options.element,\n `useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,\n v,\n );\n return null;\n });\n\n return formattedValue;\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 { 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 { useFullPropertyPath, 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 = useFullPropertyPath({ 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 } from \"solid-js\";\n\nimport {\n type ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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(`${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.reverse();\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 ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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(`${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.reverse();\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 ValidAjaxPath,\n provideFullPropertyPathContext,\n useFullPropertyPath,\n} from \"../hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: ValidAjaxPath;\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 const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n const fullPath = useFullPropertyPath(mergedProps);\n provideFullPropertyPathContext({\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 useFullPropertyPath,\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 = useFullPropertyPath({\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 ValidAjaxPath,\n useFormattedValue,\n useFullPropertyPath,\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: ValidAjaxPath;\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 = useFullPropertyPath(mergedProps);\n const value = useFormattedValue({\n path: fullPath,\n element,\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/useFullPropertyPath.ts","../../src/hooks/useCartValue.ts","../../src/hooks/useFormattedValue.ts","../../src/hooks/useListenerStatus.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":["cart","Component","Name","createContext","provide","consume","createMemo","html","result","Show","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 createEffect(\n on(\n () => {\n const c = cart();\n // This will listen to every change within the cart object.\n traverseObject(c);\n return {\n cart: c,\n debug: props.debug,\n };\n },\n ({ cart, debug }) => {\n if (!debug) return;\n console.log(`${Name}:updated!`, cart);\n },\n ),\n );\n};\n","import AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype AjaxCartContextType = () => (typeof AjaxCart)[\"data\"];\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 ValidAjaxPath,\n useFullPropertyPath,\n useFormattedValue,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: ValidAjaxPath;\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 = useFullPropertyPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useFormattedValue({\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 type { Path } from \"../utils\";\n\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype AjaxCartData = (typeof AjaxCart)[\"data\"];\n\nexport type ValidAjaxPath = Path<AjaxCartData>;\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype FullPropertyPathContextType = ReturnType<\n typeof createFullPathPropertyContext\n>;\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n element: HTMLElement & ICustomElement;\n};\n\nfunction createFullPathPropertyContext(\n options: Options,\n): Accessor<ValidAjaxPath> {\n return options.path;\n}\n\nconst FullPropertyPathContext = createContext(createFullPathPropertyContext);\n\nexport function provideFullPropertyPathContext({\n element,\n path,\n}: {\n element: WalkableNode;\n path: Accessor<ValidAjaxPath>;\n}): FullPropertyPathContextType {\n return provide(FullPropertyPathContext, { path }, element);\n}\n\nexport function useFullPropertyPathContext(\n context: FullPropertyPathContextType,\n) {\n return context;\n}\n\nexport function useFullPropertyPath(props: {\n element: HTMLElement & ICustomElement;\n path?: Accessor<ValidAjaxPath>;\n}) {\n const context = consume(FullPropertyPathContext, props.element);\n const basePath = useFullPropertyPathContext(context);\n return createMemo(() => {\n if (typeof basePath !== \"function\" && typeof props.path === \"function\") {\n return props.path();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path !== \"function\"\n ) {\n return basePath();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path === \"function\"\n ) {\n return `${basePath()}.${props.path()}` as ValidAjaxPath;\n }\n return \"\" as ValidAjaxPath;\n });\n}\n","import { type Accessor, createMemo } from \"solid-js\";\nimport { type ICustomElement } from \"component-register\";\n\nimport { type ValidAjaxPath } from \"./useFullPropertyPath.js\";\nimport { useAjaxCart } from \"./useAjaxCart.js\";\nimport { getValueFromPath } from \"../utils/index.js\";\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n element: HTMLElement & ICustomElement;\n};\n\nexport function useCartValue(options: Options) {\n const cart = useAjaxCart(options.element);\n\n const value = createMemo(() => {\n const c = cart();\n if (typeof options.path !== \"function\") return c;\n const path = options.path();\n if (!path) return c;\n const v = getValueFromPath(c, path);\n if (v === undefined || v === null) return null;\n return v;\n });\n\n return value;\n}\n","import { type Accessor, createMemo } from \"solid-js\";\nimport { type ICustomElement } from \"component-register\";\n\nimport { type ValidAjaxPath } from \"./useFullPropertyPath.js\";\nimport { formatValue, type Format } from \"../utils/index.js\";\nimport { useCartValue } from \"./useCartValue.js\";\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n format?: Format;\n element: HTMLElement & ICustomElement;\n};\n\nexport function useFormattedValue(options: Options) {\n const value = useCartValue({ path: options.path, element: options.element });\n\n const formattedValue = createMemo(() => {\n const v = value();\n if (v === null) return null;\n if (\n typeof v === \"string\" ||\n typeof v === \"number\" ||\n typeof v === \"boolean\"\n ) {\n return formatValue(options.format || \"\", v);\n }\n console.warn(\n options.element,\n `useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,\n v,\n );\n return null;\n });\n\n return formattedValue;\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 { 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 { useFullPropertyPath, 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 = useFullPropertyPath({ 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 ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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 = 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\";\nimport { produce } from \"solid-js/store\";\n\nimport {\n type ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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 = 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 ValidAjaxPath,\n provideFullPropertyPathContext,\n useFullPropertyPath,\n} from \"../hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: ValidAjaxPath;\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 const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n const fullPath = useFullPropertyPath(mergedProps);\n provideFullPropertyPathContext({\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 useFullPropertyPath,\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 = useFullPropertyPath({\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 ValidAjaxPath,\n useFormattedValue,\n useFullPropertyPath,\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: ValidAjaxPath;\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 = useFullPropertyPath(mergedProps);\n const value = useFormattedValue({\n path: fullPath,\n element,\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,5 +1,6 @@
1
1
  import { getTemplateContent, getTargetElement } from '../utils/index.js';
2
2
  import { createMemo, mapArray, createEffect, on } from 'solid-js';
3
+ import 'solid-js/store';
3
4
  import { useFullPropertyPath, provideFullPropertyPathContext, useCartValue } from '../hooks/index.js';
4
5
  import html from 'solid-js/html';
5
6
 
@@ -24,7 +25,7 @@ const Component = (props, { element }) => {
24
25
  element,
25
26
  path: fullPath
26
27
  });
27
- const arrayValue = () => {
28
+ const arrayValue = createMemo(() => {
28
29
  const v = value();
29
30
  if (!v) {
30
31
  console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);
@@ -35,10 +36,10 @@ const Component = (props, { element }) => {
35
36
  return null;
36
37
  }
37
38
  if (props.reverse) {
38
- return v.reverse();
39
+ return v.toReversed();
39
40
  }
40
41
  return v;
41
- };
42
+ });
42
43
  const children = createMemo(
43
44
  mapArray(arrayValue, (_, idx) => {
44
45
  const fragment = itemTemplate.cloneNode(true);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-array-injection.ts"],"names":["children"],"mappings":"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","file":"cart-data-array-injection.js","sourcesContent":["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 ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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(`${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.reverse();\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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-array-injection.ts"],"names":["children"],"mappings":"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","file":"cart-data-array-injection.js","sourcesContent":["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\";\nimport { produce } from \"solid-js/store\";\n\nimport {\n type ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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 = 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"]}
@@ -1,5 +1,5 @@
1
1
  import { getTemplateContent } from '../utils/index.js';
2
- import { Show, For } from 'solid-js';
2
+ import { createMemo, Show, For } from 'solid-js';
3
3
  import { useFullPropertyPath, provideFullPropertyPathContext, useCartValue } from '../hooks/index.js';
4
4
  import html from 'solid-js/html';
5
5
 
@@ -24,7 +24,7 @@ const Component = (props, { element }) => {
24
24
  element,
25
25
  path: fullPath
26
26
  });
27
- const arrayValue = () => {
27
+ const arrayValue = createMemo(() => {
28
28
  const v = value();
29
29
  if (!v) {
30
30
  console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);
@@ -35,10 +35,10 @@ const Component = (props, { element }) => {
35
35
  return null;
36
36
  }
37
37
  if (props.reverse) {
38
- return v.reverse();
38
+ return v.toReversed();
39
39
  }
40
40
  return v;
41
- };
41
+ });
42
42
  element.replaceChildren(...[]);
43
43
  return html`
44
44
  <${Show} when=${() => arrayValue() && arrayValue().length > 0}>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-array.ts"],"names":[],"mappings":";;;;;AAmBO,MAAM,IAAO,GAAA;AAEb,MAAM,SAAsD,GAAA,CACjE,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,GAAG,IAAI,CAAA,8CAAA;AAAA,KACT;AACF,EAAI,IAAA,CAAC,MAAM,SAAW,EAAA,OAAO,QAAQ,IAAK,CAAA,CAAA,EAAG,IAAI,CAA2B,yBAAA,CAAA,CAAA;AAC5E,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,MAAA,OAAA,CAAQ,KAAK,CAAG,EAAA,IAAI,CAAwC,qCAAA,EAAA,QAAA,EAAU,CAAE,CAAA,CAAA;AACxE,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACrB,MAAA,OAAA,CAAQ,KAAK,CAAG,EAAA,IAAI,CAAmC,gCAAA,EAAA,QAAA,EAAU,CAAE,CAAA,CAAA;AACnE,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,MAAM,OAAS,EAAA;AACjB,MAAA,OAAO,EAAE,OAAQ,EAAA;AAAA;AAGnB,IAAO,OAAA,CAAA;AAAA,GACT;AAEA,EAAQ,OAAA,CAAA,eAAA,CAAgB,GAAG,EAAE,CAAA;AAE7B,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 \"@brytdesigns/web-component-core/utils\";\nimport { getTemplateContent, type Format } from \"../utils/index.js\";\n\nimport { Show, For, type Accessor } from \"solid-js\";\n\nimport {\n type ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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(`${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.reverse();\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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-array.ts"],"names":[],"mappings":";;;;;AAmBO,MAAM,IAAO,GAAA;AAEb,MAAM,SAAsD,GAAA,CACjE,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,GAAG,IAAI,CAAA,8CAAA;AAAA,KACT;AACF,EAAI,IAAA,CAAC,MAAM,SAAW,EAAA,OAAO,QAAQ,IAAK,CAAA,CAAA,EAAG,IAAI,CAA2B,yBAAA,CAAA,CAAA;AAC5E,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,EAAM,MAAA,UAAA,GAAa,WAAW,MAAM;AAClC,IAAA,MAAM,IAAI,KAAM,EAAA;AAEhB,IAAA,IAAI,CAAC,CAAG,EAAA;AACN,MAAA,OAAA,CAAQ,KAAK,CAAG,EAAA,IAAI,CAAwC,qCAAA,EAAA,QAAA,EAAU,CAAE,CAAA,CAAA;AACxE,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACrB,MAAA,OAAA,CAAQ,KAAK,CAAG,EAAA,IAAI,CAAmC,gCAAA,EAAA,QAAA,EAAU,CAAE,CAAA,CAAA;AACnE,MAAO,OAAA,IAAA;AAAA;AAGT,IAAA,IAAI,MAAM,OAAS,EAAA;AACjB,MAAA,OAAO,EAAE,UAAW,EAAA;AAAA;AAGtB,IAAO,OAAA,CAAA;AAAA,GACR,CAAA;AAED,EAAQ,OAAA,CAAA,eAAA,CAAgB,GAAG,EAAE,CAAA;AAE7B,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 \"@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 ValidAjaxPath,\n useFullPropertyPath,\n useCartValue,\n provideFullPropertyPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: ValidAjaxPath;\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 = 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 = 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brytdesigns/shopify-ajax-cart-components",
3
- "version": "1.2.13",
3
+ "version": "1.2.15",
4
4
  "description": "Headless web components for the Ajax Cart Library",
5
5
  "main": "./dist/main/index.js",
6
6
  "types": "./dist/main/index.d.ts",
@@ -19,7 +19,7 @@
19
19
  "component-register": "^0.8.7",
20
20
  "lodash.debounce": "^4.0.8",
21
21
  "solid-js": "^1.9.7",
22
- "@brytdesigns/shopify-ajax-cart": "1.0.41",
22
+ "@brytdesigns/shopify-ajax-cart": "1.0.42",
23
23
  "@brytdesigns/web-component-core": "1.1.2"
24
24
  },
25
25
  "author": "Bryt Designs",
@@ -1,22 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,19 +0,0 @@
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
@@ -1 +0,0 @@
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"]}