@brytdesigns/shopify-ajax-cart-components 1.2.19 → 1.3.2

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 (29) hide show
  1. package/dist/esm/index.js +48 -93
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/main/components/cart-context.js +7 -17
  4. package/dist/main/components/cart-context.js.map +1 -1
  5. package/dist/main/components/cart-data-array-injection.js +5 -6
  6. package/dist/main/components/cart-data-array-injection.js.map +1 -1
  7. package/dist/main/components/cart-data-array-item.js +3 -3
  8. package/dist/main/components/cart-data-array-item.js.map +1 -1
  9. package/dist/main/components/cart-data-array.js +3 -3
  10. package/dist/main/components/cart-data-array.js.map +1 -1
  11. package/dist/main/components/cart-data-conditions.js +2 -2
  12. package/dist/main/components/cart-data-conditions.js.map +1 -1
  13. package/dist/main/components/cart-data-injection.js +6 -6
  14. package/dist/main/components/cart-data-injection.js.map +1 -1
  15. package/dist/main/components/cart-data-listener.js +2 -2
  16. package/dist/main/components/cart-data-listener.js.map +1 -1
  17. package/dist/main/components/cart-data.js +3 -3
  18. package/dist/main/components/cart-data.js.map +1 -1
  19. package/dist/main/hooks/index.js +25 -3
  20. package/dist/main/hooks/index.js.map +1 -1
  21. package/dist/main/hooks/useAjaxCart.js.map +1 -1
  22. package/dist/main/index.d.ts +1336 -9670
  23. package/package.json +4 -4
  24. package/dist/main/hooks/useCartValue.js +0 -23
  25. package/dist/main/hooks/useCartValue.js.map +0 -1
  26. package/dist/main/hooks/useFormattedValue.js +0 -27
  27. package/dist/main/hooks/useFormattedValue.js.map +0 -1
  28. package/dist/main/hooks/useFullPropertyPath.js +0 -35
  29. package/dist/main/hooks/useFullPropertyPath.js.map +0 -1
@@ -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\";\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
+ {"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 CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n wrapInnerChild: boolean;\n target: string;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array-injection\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element },\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`,\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n path: fullPath,\n element,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n const children = createMemo(\n mapArray(arrayValue, (_, idx) => {\n const fragment = itemTemplate.cloneNode(true);\n const container = fragment instanceof DocumentFragment ? fragment : null;\n if (props.wrapInnerChild && container) {\n const firstElement = container.firstElementChild;\n if (!firstElement) return null;\n const children = Array.from(firstElement.children);\n\n const wrapper = html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(children)}\n </cart-data-array-item>\n `;\n firstElement.replaceChildren(\n Array.isArray(wrapper) ? wrapper.at(0)! : wrapper,\n );\n\n return firstElement;\n }\n }),\n );\n\n createEffect(\n on(\n () => {\n const rootElement = element;\n return {\n target: getTargetElement(rootElement, props.target),\n children: children(),\n };\n },\n ({ children, target }) => {\n if (!target) return;\n const filteredChildren = children.filter(\n (v) => v !== null && v !== undefined,\n );\n target.replaceChildren(...filteredChildren);\n },\n ),\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { useFullPropertyPath, provideFullPropertyPathContext } from '../hooks/index.js';
1
+ import { useCartPath, provideCartPathContext } from '../hooks/index.js';
2
2
 
3
3
  const Name = "cart-data-array-item";
4
4
  const Component = (props, { element }) => {
@@ -8,8 +8,8 @@ const Component = (props, { element }) => {
8
8
  element,
9
9
  path: () => props.itemIndex
10
10
  };
11
- const fullPath = useFullPropertyPath(mergedProps);
12
- provideFullPropertyPathContext({
11
+ const fullPath = useCartPath(mergedProps);
12
+ provideCartPathContext({
13
13
  element,
14
14
  path: fullPath
15
15
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-array-item.ts"],"names":[],"mappings":";;AAYO,MAAM,IAAO,GAAA;AAEb,MAAM,SAA0D,GAAA,CACrE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,IAAI,CAAC,KAAM,CAAA,SAAA;AACT,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAA+B,6BAAA,CAAA,CAAA;AAE5D,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACpB;AAEA,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 \"@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\n const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n\n const fullPath = useFullPropertyPath(mergedProps);\n provideFullPropertyPathContext({\n element,\n path: fullPath,\n });\n};\n"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-array-item.ts"],"names":[],"mappings":";;AAYO,MAAM,IAAO,GAAA;AAEb,MAAM,SAA0D,GAAA,CACrE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,IAAI,CAAC,KAAM,CAAA,SAAA;AACT,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAA+B,6BAAA,CAAA,CAAA;AAE5D,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACpB;AAEA,EAAM,MAAA,QAAA,GAAW,YAAY,WAAW,CAAA;AACxC,EAAuB,sBAAA,CAAA;AAAA,IACrB,OAAA;AAAA,IACA,IAAM,EAAA;AAAA,GACP,CAAA;AACH","file":"cart-data-array-item.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n provideCartPathContext,\n useCartPath,\n} from \"../hooks/index.js\";\n\ntype CartDataArrayItemProps = {\n itemIndex: CartPath;\n};\n\nexport const Name = \"cart-data-array-item\";\n\nexport const Component: CorrectComponentType<CartDataArrayItemProps> = (\n props,\n { element }\n) => {\n if (!props.itemIndex)\n return console.warn(`${Name}: No path attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.itemIndex,\n };\n\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { getTemplateContent } from '../utils/index.js';
2
2
  import { createMemo, Show, For } from 'solid-js';
3
- import { useFullPropertyPath, provideFullPropertyPathContext, useCartValue } from '../hooks/index.js';
3
+ import { useCartPath, provideCartPathContext, useCartValue } from '../hooks/index.js';
4
4
  import html from 'solid-js/html';
5
5
 
6
6
  const Name = "cart-data-array";
@@ -15,8 +15,8 @@ const Component = (props, { element }) => {
15
15
  element,
16
16
  path: () => props.arrayPath
17
17
  };
18
- const fullPath = useFullPropertyPath(mergedProps);
19
- provideFullPropertyPathContext({
18
+ const fullPath = useCartPath(mergedProps);
19
+ provideCartPathContext({
20
20
  element,
21
21
  path: fullPath
22
22
  });
@@ -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,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"]}
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,YAAY,WAAW,CAAA;AACxC,EAAuB,sBAAA,CAAA;AAAA,IACrB,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 CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element },\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`,\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n element,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${Show} when=${() => arrayValue() && arrayValue()!.length > 0}>\n <${For} each=${arrayValue}>\n ${(_: any, idx: Accessor<number>) => html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </cart-data-array-item>\n `}\n <//>\n <//>\n `;\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { createMemo, For, Show } from 'solid-js';
2
2
  import html from 'solid-js/html';
3
- import { useFullPropertyPath, useCartValue } from '../hooks/index.js';
3
+ import { useCartPath, useCartValue } from '../hooks/index.js';
4
4
  import { formatValue, getValueFromPath } from '../utils/index.js';
5
5
 
6
6
  function getValue(data, value) {
@@ -84,7 +84,7 @@ const Component = (_, { element }) => {
84
84
  }
85
85
  })
86
86
  );
87
- const fullPath = useFullPropertyPath({ element });
87
+ const fullPath = useCartPath({ element });
88
88
  const data = useCartValue({
89
89
  path: fullPath,
90
90
  element
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-conditions.ts"],"names":["result"],"mappings":";;;;;AAmCA,SAAS,QAAA,CAAY,MAAS,KAA4B,EAAA;AACxD,EAAA,IAAI,OAAO,KAAA,KAAU,WAAe,IAAA,CAAC,MAAa,OAAA,MAAA;AAElD,EAAI,IAAA,KAAA,CAAM,SAAS,WAAa,EAAA;AAC9B,IAAA,OAAO,KAAM,CAAA,KAAA;AAAA;AAGf,EAAA,IAAI,KAAM,CAAA,IAAA,KAAS,UAAc,IAAA,KAAA,CAAM,IAAM,EAAA;AAE3C,IAAO,OAAA,gBAAA,CAAoB,IAAM,EAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AAG7C,EAAO,OAAA,IAAA;AACT;AAEA,SAAS,YAAA,CAAa,MAAiB,EAAA,MAAA,GAAS,KAAO,EAAA;AACrD,EAAI,IAAA,MAAA,SAAe,CAAC,MAAA;AACpB,EAAO,OAAA,MAAA;AACT;AAEA,SAAS,kBAAA,CAAsB,YAAyB,IAAS,EAAA;AAC/D,EAAI,IAAA,CAAC,MAAa,OAAA,KAAA;AAClB,EAAA,MAAM,MAAS,GAAA,UAAA,CAAW,KAAM,CAAA,CAAC,SAAc,KAAA;AAC7C,IAAA,IAAI,MAAS,GAAA,QAAA,CAAS,IAAM,EAAA,SAAA,CAAU,MAAM,CAAA,EAC1C,MAAS,GAAA,QAAA,CAAS,IAAM,EAAA,SAAA,CAAU,MAAM,CAAA,EACxCA,OAAS,GAAA,KAAA;AAEX,IAAA,IAAI,OAAO,MAAA,KAAW,WAAe,IAAA,OAAO,MAAW,KAAA,WAAA;AACrD,MAAO,OAAA,KAAA;AAET,IAAI,IAAA,SAAA,CAAU,SAAS,QAAU,EAAA;AAC/B,MAAAA,OAAAA,GAAS,OAAO,MAAW,KAAA,MAAA;AAAA;AAG7B,IAAI,IAAA,SAAA,CAAU,SAAS,UAAY,EAAA;AACjC,MAAAA,UAAS,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAE,CAAA,QAAA;AAAA,QACnD,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM;AAAA,OAC5C;AAAA;AAGF,IAAI,IAAA,SAAA,CAAU,SAAS,mBAAqB,EAAA;AAC1C,MAAAA,UAAS,MAAO,CAAA,IAAA;AAAA,QACd,CAAC,CAAW,KAAA,CAAA,CAAE,UAAU,MAAQ,EAAA,aAAA,IAAiB,EAAE,CAAM,KAAA;AAAA,OAC3D;AAAA;AAGF,IAAI,IAAA,SAAA,CAAU,SAAS,aAAe,EAAA;AACpC,MAAAA,OAAS,GAAA,WAAA,CAAY,QAAU,EAAA,MAAM,CAAE,CAAA,UAAA;AAAA,QACrC,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM;AAAA,OAC5C;AAAA;AAGF,IAAI,IAAA,SAAA,CAAU,SAAS,QAAU,EAAA;AAC/B,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,KAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAI,IAAA,SAAA,CAAU,SAAS,YAAc,EAAA;AACnC,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,KAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAI,IAAA,SAAA,CAAU,SAAS,IAAM,EAAA;AAC3B,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,GAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAI,IAAA,SAAA,CAAU,SAAS,KAAO,EAAA;AAC5B,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,IAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAI,IAAA,SAAA,CAAU,SAAS,IAAM,EAAA;AAC3B,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,GAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAI,IAAA,SAAA,CAAU,SAAS,KAAO,EAAA;AAC5B,MAAAA,OAAAA,GACE,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA,IAC1C,WAAY,CAAA,SAAA,CAAU,MAAU,IAAA,EAAA,EAAI,MAAM,CAAA;AAAA;AAG9C,IAAO,OAAA,YAAA,CAAaA,OAAQ,EAAA,SAAA,CAAU,MAAM,CAAA;AAAA,GAC7C,CAAA;AAED,EAAO,OAAA,MAAA;AACT;AAEO,MAAM,IAAO,GAAA;AAEb,MAAM,SAA2D,GAAA,CACtE,CACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,MAAM,kBAAqB,GAAA,KAAA,CAAM,IAAK,CAAA,OAAA,CAAQ,QAAQ,CAAE,CAAA,MAAA;AAAA,IACtD,CAAC,KAAU,KAAA,KAAA,CAAM,YAAY,UAAc,IAAA,KAAA,CAAM,aAAa,YAAY;AAAA,GAC5E;AACA,EAAA,IAAI,CAAC,kBAAmB,CAAA,MAAA;AACtB,IAAA,OAAO,OAAQ,CAAA,KAAA;AAAA,MACb,GAAG,IAAI,CAAA,mDAAA;AAAA,KACT;AAEF,EAAA,MAAM,aAAgB,GAAA,UAAA;AAAA,IAAW,MAC/B,kBAAA,CAAmB,GAAI,CAAA,CAAC,IAAS,KAAA;AAC/B,MAAM,MAAA,UAAA,GAAa,IAAK,CAAA,YAAA,CAAa,YAAY,CAAA;AACjD,MAAA,IAAI,CAAC,UAAA;AACH,QAAQ,OAAA,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAAqC,mCAAA,CAAA,CAAA;AAE3D,MAAI,IAAA;AACF,QAAO,OAAA,IAAA,CAAK,MAAM,UAAW,CAAA;AAAA,eACtB,CAAG,EAAA;AACV,QAAA,OAAO,EAAC;AAAA;AACV,KACD;AAAA,GACH;AAEA,EAAA,MAAM,QAAW,GAAA,mBAAA,CAAoB,EAAE,OAAA,EAAS,CAAA;AAChD,EAAA,MAAM,OAAO,YAAa,CAAA;AAAA,IACxB,IAAM,EAAA,QAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAQ,OAAA,CAAA,eAAA,CAAgB,GAAG,EAAE,CAAA;AAE7B,EAAO,OAAA,IAAA;AAAA,KACF,EAAA,GAAG,CAAS,MAAA,EAAA,MAAM,kBAAkB,CAAA;AAAA,MACnC,EAAA,CAAC,MAA2B,GAA0B,KAAA;AACtD,IAAA,MAAM,UAAa,GAAA,aAAA,EAAgB,CAAA,GAAA,EAAK,CAAA;AACxC,IAAO,OAAA,IAAA;AAAA,WAAA,EACF,IAAI,CAAS,MAAA,EAAA,MAAM,mBAAmB,UAAY,EAAA,IAAA,EAAM,CAAC,CAAA;AAAA,YACxD,EAAA,MAAM,MAAM,IAAK,CAAA,IAAA,CAAK,QAAQ,SAAU,CAAA,IAAI,CAAE,CAAA,UAAU,CAAC;AAAA;AAAA,QAAA,CAAA;AAAA,GAGhE;AAAA;AAAA,EAAA,CAAA;AAGP","file":"cart-data-conditions.js","sourcesContent":["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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-conditions.ts"],"names":["result"],"mappings":"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","file":"cart-data-conditions.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { Show, createMemo, For, type Accessor } from \"solid-js\";\nimport html from \"solid-js/html\";\n\nimport { useCartPath, useCartValue } from \"../hooks/index.js\";\nimport { getValueFromPath, formatValue, type Format } from \"../utils/index.js\";\n\ntype CartDataConditionsProps = {};\n\ntype ConditionValue = {\n type: \"primitive\" | \"property\";\n name?: string;\n value?: string | number | boolean | null;\n property_name?: string;\n};\n\ntype Condition = {\n type:\n | \"typeof\"\n | \"includes\"\n | \"includes_property\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"lt\"\n | \"lte\"\n | \"gt\"\n | \"gte\";\n format?: Format;\n invert?: boolean;\n valueA: ConditionValue;\n valueB: ConditionValue;\n};\n\nfunction getValue<T>(data: T, value: ConditionValue): any {\n if (typeof value === \"undefined\" || !data) return undefined;\n\n if (value.type === \"primitive\") {\n return value.value;\n }\n\n if (value.type === \"property\" && value.name) {\n //@ts-ignore\n return getValueFromPath<T>(data, value.name);\n }\n\n return null;\n}\n\nfunction invertResult(result: boolean, invert = false) {\n if (invert) return !result;\n return result;\n}\n\nfunction validateConditions<T>(conditions: Condition[], data: T) {\n if (!data) return false;\n const result = conditions.every((condition) => {\n let valueA = getValue(data, condition.valueA),\n valueB = getValue(data, condition.valueB),\n result = false;\n\n if (typeof valueA === \"undefined\" && typeof valueB === \"undefined\")\n return false;\n\n if (condition.type === \"typeof\") {\n result = typeof valueA === valueB;\n }\n\n if (condition.type === \"includes\") {\n result = formatValue(condition.format || \"\", valueA).includes(\n formatValue(condition.format || \"\", valueB),\n );\n }\n\n if (condition.type === \"includes_property\") {\n result = valueA.some(\n (v: any) => v[condition.valueA?.property_name || \"\"] === valueB,\n );\n }\n\n if (condition.type === \"starts_with\") {\n result = formatValue(\"string\", valueA).startsWith(\n formatValue(condition.format || \"\", valueB),\n );\n }\n\n if (condition.type === \"equals\") {\n result =\n formatValue(condition.format || \"\", valueA) ===\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"not_equals\") {\n result =\n formatValue(condition.format || \"\", valueA) !==\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lt\") {\n result =\n formatValue(condition.format || \"\", valueA) <\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lte\") {\n result =\n formatValue(condition.format || \"\", valueA) <=\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gt\") {\n result =\n formatValue(condition.format || \"\", valueA) >\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gte\") {\n result =\n formatValue(condition.format || \"\", valueA) >=\n formatValue(condition.format || \"\", valueB);\n }\n\n return invertResult(result, condition.invert);\n });\n\n return result;\n}\n\nexport const Name = \"cart-data-conditions\";\n\nexport const Component: CorrectComponentType<CartDataConditionsProps> = (\n _,\n { element },\n) => {\n const conditionTemplates = Array.from(element.children).filter(\n (child) => child.tagName === \"TEMPLATE\" && child.hasAttribute(\"conditions\"),\n );\n if (!conditionTemplates.length)\n return console.error(\n `${Name}: no templates found with any conditions attribute!`,\n );\n\n const allConditions = createMemo(() =>\n conditionTemplates.map((tmpl) => {\n const conditions = tmpl.getAttribute(\"conditions\");\n if (!conditions)\n console.warn(`${Name}: conditions attribute is required!`);\n\n try {\n return JSON.parse(conditions!);\n } catch (e) {\n return [];\n }\n }),\n );\n\n const fullPath = useCartPath({ element });\n const data = useCartValue({\n path: fullPath,\n element,\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${For} each=${() => conditionTemplates}>\n ${(tmpl: HTMLTemplateElement, idx: Accessor<number>) => {\n const conditions = allConditions()[idx()];\n return html`\n <${Show} when=${() => validateConditions(conditions, data())}>\n ${() => Array.from(tmpl.content.cloneNode(true).childNodes)}\n <//>\n `;\n }}\n <//>\n `;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { useFullPropertyPath, useFormattedValue } from '../hooks/index.js';
1
+ import { useCartPath, useCartFormattedValue } from '../hooks/index.js';
2
2
  import { getTargetElement } from '../utils/index.js';
3
3
  import { createEffect, on, onCleanup } from 'solid-js';
4
4
 
@@ -16,10 +16,10 @@ const Component = (props, { element }) => {
16
16
  element,
17
17
  path: () => props.propertyName
18
18
  };
19
- const fullPath = useFullPropertyPath(mergedProps);
20
- const value = useFormattedValue({
21
- path: fullPath,
19
+ const fullPath = useCartPath(mergedProps);
20
+ const value = useCartFormattedValue({
22
21
  element,
22
+ path: fullPath,
23
23
  get format() {
24
24
  return props.format;
25
25
  }
@@ -41,7 +41,7 @@ const Component = (props, { element }) => {
41
41
  `${Name}: Unable to find element with selector of: ${props.target}`
42
42
  );
43
43
  if (injectionType === "attribute" && value2 !== null && value2 !== void 0) {
44
- target.setAttribute(attributeName, value2);
44
+ target.setAttribute(attributeName, `${value2}`);
45
45
  return;
46
46
  }
47
47
  if (injectionType === "property" && value2 !== null && value2 !== void 0) {
@@ -70,7 +70,7 @@ const Component = (props, { element }) => {
70
70
  setTimeout(() => {
71
71
  target.setAttribute(
72
72
  attributeName,
73
- tmpValue.replace(`{${propertyName}}`, value2)
73
+ tmpValue.replace(`{${propertyName}}`, `${value2}`)
74
74
  );
75
75
  });
76
76
  return onCleanup(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-injection.ts"],"names":["value"],"mappings":"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","file":"cart-data-injection.js","sourcesContent":["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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-injection.ts"],"names":["value"],"mappings":"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","file":"cart-data-injection.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport {\n type CartPath,\n useCartFormattedValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport { type Format, getTargetElement } from \"../utils/index.js\";\nimport { createEffect, on, onCleanup } from \"solid-js\";\n\ntype CartDataInjectionProps = {\n propertyName: CartPath;\n format?: Format;\n target: string;\n attributeName: string;\n injectionType: \"attribute\" | \"property\" | \"template\";\n};\n\nconst VALID_INJECTION_TYPES = [\"attribute\", \"property\", \"template\"];\n\nexport const Name = \"cart-data-injection\";\n\nexport const Component: CorrectComponentType<CartDataInjectionProps> = (\n props,\n { element },\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No path attribute provided.`);\n if (!props.target) return console.warn(`${Name}: No target attribute found!`);\n if (!props.attributeName)\n return console.warn(`${Name}: No attribute-name attribute found!`);\n\n if (\n !props.injectionType ||\n (props.injectionType &&\n !VALID_INJECTION_TYPES.includes(props.injectionType))\n )\n return console.warn(`${Name}: Invalid injection-type attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.propertyName,\n };\n const fullPath = useCartPath(mergedProps);\n const value = useCartFormattedValue({\n element,\n path: fullPath,\n get format() {\n return props.format;\n },\n });\n\n createEffect(\n on(\n () => {\n return {\n target: getTargetElement(element, props.target),\n value: value(),\n attributeName: props.attributeName,\n injectionType: props.injectionType,\n propertyName: props.propertyName,\n };\n },\n ({ target, value, attributeName, injectionType, propertyName }) => {\n if (!target)\n return console.warn(\n `${Name}: Unable to find element with selector of: ${props.target}`,\n );\n\n if (\n injectionType === \"attribute\" &&\n value !== null &&\n value !== undefined\n ) {\n target.setAttribute(attributeName, `${value}`);\n return;\n }\n\n if (\n injectionType === \"property\" &&\n value !== null &&\n value !== undefined\n ) {\n //@ts-ignore\n target[attributeName] = value;\n return;\n }\n\n if (\n injectionType === \"template\" &&\n value !== null &&\n value !== undefined\n ) {\n if (attributeName === \"style\") {\n //@ts-ignore\n const styleTmpl = target[attributeName].cssText;\n setTimeout(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl.replace(\n //@ts-ignore\n `{${propertyName}}`,\n value,\n );\n });\n return onCleanup(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl;\n });\n }\n const tmpValue = target.getAttribute(attributeName);\n if (!tmpValue || !value)\n return console.warn(\n `${Name}: Unable to inject value into template`,\n );\n setTimeout(() => {\n target.setAttribute(\n attributeName,\n\n tmpValue.replace(`{${propertyName}}`, `${value}`),\n );\n });\n return onCleanup(() => {\n target.setAttribute(attributeName, tmpValue);\n });\n }\n },\n ),\n );\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { createEffect, on, onCleanup } from 'solid-js';
2
2
  import debounce from 'lodash.debounce';
3
- import { provideListenerStatusContext, useFullPropertyPath, useCartValue } from '../hooks/index.js';
3
+ import { provideListenerStatusContext, useCartPath, useCartValue } from '../hooks/index.js';
4
4
  import AjaxCart from '@brytdesigns/shopify-ajax-cart';
5
5
  import { parseNestedObject } from '../utils/index.js';
6
6
 
@@ -12,7 +12,7 @@ const Component = (props, { element }) => {
12
12
  return props.status;
13
13
  }
14
14
  });
15
- const path = useFullPropertyPath({
15
+ const path = useCartPath({
16
16
  element
17
17
  });
18
18
  const data = useCartValue({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-listener.ts"],"names":["on","data","reset"],"mappings":"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","file":"cart-data-listener.js","sourcesContent":["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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data-listener.ts"],"names":["on","data","reset"],"mappings":"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","file":"cart-data-listener.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\n\nimport { createEffect, on, onCleanup } from \"solid-js\";\nimport debounce from \"lodash.debounce\";\n\nimport {\n type Status,\n provideListenerStatusContext,\n useCartValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { parseNestedObject } from \"../utils/index.js\";\n\ntype CartDataListenerProps = {\n status: Status;\n on: string;\n method: string;\n debounceDelay: number;\n resetForm: boolean;\n resetStatusDelay: number;\n preventDefault: boolean;\n};\n\nexport const Name = \"cart-data-listener\";\n\nexport const Component: CorrectComponentType<CartDataListenerProps> = (\n props,\n { element },\n) => {\n const [_, setStatus] = provideListenerStatusContext({\n element,\n get status() {\n return props.status;\n },\n });\n\n const path = useCartPath({\n element,\n });\n const data = useCartValue({\n element,\n path,\n });\n\n // let currentEventId: string | null = null;\n\n createEffect(\n on(\n () => ({\n method: props.method,\n on: props.on,\n preventDefault: props.preventDefault,\n data: data() as any,\n debounceDelay: props.debounceDelay,\n resetForm: props.resetForm,\n resetStatusDelay: props.resetStatusDelay,\n }),\n ({\n method,\n on,\n preventDefault,\n data,\n debounceDelay,\n resetForm,\n resetStatusDelay,\n }) => {\n if (!method)\n return console.error(`${Name}: method property is required!`);\n if (!on) return console.error(`${Name}: on property is required!`);\n\n let resetStatusId: number | null = null;\n // tempEventId: string | null = null;\n\n function onEvent(e: Event) {\n const cart = AjaxCart;\n\n // (currentEventId = createUniqueId()), (tempEventId = currentEventId);\n\n if (preventDefault) e.preventDefault();\n\n async function handleStatus<T>(promise: Promise<T>) {\n setStatus(\"loading\");\n return promise\n .then((data) => {\n setStatus(\"success\");\n return data;\n })\n .catch((error) => {\n setStatus(\"error\");\n return error;\n })\n .finally(() => {\n if (resetStatusDelay > 0) {\n //@ts-ignore\n resetStatusId = setTimeout(() => {\n setStatus(\"default\");\n resetStatusId = null;\n }, resetStatusDelay);\n } else {\n setStatus(\"default\");\n }\n });\n }\n\n if (on === \"submit\") {\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n const formObj = parseNestedObject(\n //@ts-ignore\n Object.fromEntries(formData.entries()),\n );\n\n function reset() {\n if (resetForm) form.reset();\n }\n\n if (method === \"replaceItem\") {\n return handleStatus(\n cart.replaceItem({\n key: formObj.key,\n id: formObj.id,\n }),\n ).finally(reset);\n }\n\n if (method === \"updateItem\") {\n return handleStatus(\n cart.updateItem({\n id: formObj.id,\n quantity: formObj?.quantity || undefined,\n properties: formObj?.properties || {},\n selling_plan: formObj?.selling_plan || undefined,\n }),\n ).finally(reset);\n }\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(formObj.key)).finally(reset);\n }\n\n if (method === \"addDiscount\") {\n return handleStatus(cart.addDiscount(formObj.code)).finally(\n reset,\n );\n }\n\n if (method === \"removeDiscount\") {\n return handleStatus(cart.removeDiscount(formObj.code)).finally(\n reset,\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(formObj.note)).finally(reset);\n }\n\n return;\n }\n\n const input = e.target as HTMLInputElement;\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(data.key));\n }\n\n if (method === \"updateQuantity\") {\n return handleStatus(\n cart.updateItem({\n id: data.key,\n quantity: input.valueAsNumber,\n }),\n );\n }\n\n if (method === \"updateItemVariant\") {\n return handleStatus(\n cart.replaceItem({\n key: data.key,\n id: input.value,\n }),\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(input.value));\n }\n }\n const handleEvent = debounce(onEvent, debounceDelay),\n controller = new AbortController();\n\n element.addEventListener(\n on,\n (e) => {\n if (preventDefault) e.preventDefault();\n handleEvent(e);\n },\n { signal: controller.signal },\n );\n\n return onCleanup(() => {\n controller.abort();\n if (resetStatusId) clearTimeout(resetStatusId);\n });\n },\n ),\n );\n};\n"]}
@@ -1,17 +1,17 @@
1
1
  import '../utils/index.js';
2
2
  import { Show } from 'solid-js';
3
- import { useFullPropertyPath, useFormattedValue } from '../hooks/index.js';
3
+ import { useCartPath, useCartFormattedValue } from '../hooks/index.js';
4
4
  import html from 'solid-js/html';
5
5
 
6
6
  const Name = "cart-data";
7
7
  const Component = (props, { element }) => {
8
8
  if (!props.propertyName)
9
9
  return console.warn(`${Name}: No property-name attribute provided.`);
10
- const fullPath = useFullPropertyPath({
10
+ const fullPath = useCartPath({
11
11
  element,
12
12
  path: () => props.propertyName
13
13
  });
14
- const formattedValue = useFormattedValue({
14
+ const formattedValue = useCartFormattedValue({
15
15
  get format() {
16
16
  return props.format;
17
17
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data.ts"],"names":[],"mappings":";;;;;AAiBO,MAAM,IAAO,GAAA;AAEb,MAAM,SAAiD,GAAA,CAC5D,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,IAAI,CAAC,KAAM,CAAA,YAAA;AACT,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAAwC,sCAAA,CAAA,CAAA;AACrE,EAAA,MAAM,WAAW,mBAAoB,CAAA;AAAA,IACnC,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACnB,CAAA;AACD,EAAA,MAAM,iBAAiB,iBAAkB,CAAA;AAAA,IACvC,IAAI,MAAS,GAAA;AACX,MAAA,OAAO,KAAM,CAAA,MAAA;AAAA,KACf;AAAA,IACA,IAAM,EAAA,QAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AAAA,KAAA,EACF,IAAI,CAAS,MAAA,EAAA,MAAM,gBAAqB,KAAA,IAAI,KAAK,cAAc,CAAA;AAAA,EAAA,CAAA;AAEtE","file":"cart-data.js","sourcesContent":["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"]}
1
+ {"version":3,"sources":["../../../src/components/cart-data.ts"],"names":[],"mappings":";;;;;AAiBO,MAAM,IAAO,GAAA;AAEb,MAAM,SAAiD,GAAA,CAC5D,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,IAAI,CAAC,KAAM,CAAA,YAAA;AACT,IAAA,OAAO,OAAQ,CAAA,IAAA,CAAK,CAAG,EAAA,IAAI,CAAwC,sCAAA,CAAA,CAAA;AACrE,EAAA,MAAM,WAAW,WAAY,CAAA;AAAA,IAC3B,OAAA;AAAA,IACA,IAAA,EAAM,MAAM,KAAM,CAAA;AAAA,GACnB,CAAA;AACD,EAAA,MAAM,iBAAiB,qBAAsB,CAAA;AAAA,IAC3C,IAAI,MAAS,GAAA;AACX,MAAA,OAAO,KAAM,CAAA,MAAA;AAAA,KACf;AAAA,IACA,IAAM,EAAA,QAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AAAA,KAAA,EACF,IAAI,CAAS,MAAA,EAAA,MAAM,gBAAqB,KAAA,IAAI,KAAK,cAAc,CAAA;AAAA,EAAA,CAAA;AAEtE","file":"cart-data.js","sourcesContent":["import type { CorrectComponentType } from \"@brytdesigns/web-component-core/utils\";\nimport { type Format } from \"../utils/index.js\";\n\nimport { Show } from \"solid-js\";\n\nimport {\n type CartPath,\n useCartPath,\n useCartFormattedValue,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: CartPath;\n format?: Format;\n};\n\nexport const Name = \"cart-data\";\n\nexport const Component: CorrectComponentType<CartDataProps> = (\n props,\n { element },\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No property-name attribute provided.`);\n const fullPath = useCartPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useCartFormattedValue({\n get format() {\n return props.format;\n },\n path: fullPath,\n element,\n });\n\n return html`\n <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>\n `;\n};\n"]}
@@ -1,7 +1,29 @@
1
+ import { makeFullPropertyPathContext } from '@brytdesigns/web-component-core';
2
+ import { useAjaxCart } from './useAjaxCart.js';
1
3
  export * from './useAjaxCart.js';
2
- export * from './useFullPropertyPath.js';
3
- export * from './useCartValue.js';
4
- export * from './useFormattedValue.js';
5
4
  export * from './useListenerStatus.js';
5
+
6
+ const hooks = makeFullPropertyPathContext();
7
+ const useCartValue = (options) => {
8
+ const data = useAjaxCart(options.element);
9
+ return hooks.usePathValue({
10
+ ...options,
11
+ data
12
+ });
13
+ };
14
+ const useCartPath = hooks.usePath;
15
+ const useCartFormattedValue = (options) => {
16
+ const data = useAjaxCart(options.element);
17
+ return hooks.useFormattedValue({
18
+ data,
19
+ get format() {
20
+ return options.format;
21
+ },
22
+ path: options.path
23
+ });
24
+ };
25
+ const provideCartPathContext = hooks.provide;
26
+
27
+ export { provideCartPathContext, useCartFormattedValue, useCartPath, useCartValue };
6
28
  //# sourceMappingURL=index.js.map
7
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;AASA,MAAM,QAAQ,2BAAsC,EAAA;AAIvC,MAAA,YAAA,GAAe,CAC1B,OAGG,KAAA;AACH,EAAM,MAAA,IAAA,GAAO,WAAY,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxC,EAAA,OAAO,MAAM,YAAa,CAAA;AAAA,IACxB,GAAG,OAAA;AAAA,IACH;AAAA,GACD,CAAA;AACH;AACO,MAAM,cAAc,KAAM,CAAA;AACpB,MAAA,qBAAA,GAAwB,CACnC,OAGG,KAAA;AACH,EAAM,MAAA,IAAA,GAAO,WAAY,CAAA,OAAA,CAAQ,OAAO,CAAA;AACxC,EAAA,OAAO,MAAM,iBAAkB,CAAA;AAAA,IAC7B,IAAA;AAAA,IACA,IAAI,MAAS,GAAA;AACX,MAAA,OAAO,OAAQ,CAAA,MAAA;AAAA,KACjB;AAAA,IACA,MAAM,OAAQ,CAAA;AAAA,GACf,CAAA;AACH;AACO,MAAM,yBAAyB,KAAM,CAAA","file":"index.js","sourcesContent":["import type { CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport {\n makeFullPropertyPathContext,\n type Path,\n type PathValue,\n} from \"@brytdesigns/web-component-core\";\nimport type { ICustomElement } from \"component-register\";\nimport { useAjaxCart } from \"./useAjaxCart.js\";\n\nconst hooks = makeFullPropertyPathContext<CartData>();\n\nexport type CartPath = Path<CartData>;\nexport type CartPathValue<Path extends CartPath> = PathValue<CartData, Path>;\nexport const useCartValue = (\n options: Omit<Parameters<typeof hooks.usePathValue>[0], \"data\"> & {\n element: HTMLElement & ICustomElement;\n },\n) => {\n const data = useAjaxCart(options.element);\n return hooks.usePathValue({\n ...options,\n data,\n });\n};\nexport const useCartPath = hooks.usePath;\nexport const useCartFormattedValue = (\n options: Omit<Parameters<typeof hooks.useFormattedValue>[0], \"data\"> & {\n element: HTMLElement & ICustomElement;\n },\n) => {\n const data = useAjaxCart(options.element);\n return hooks.useFormattedValue({\n data,\n get format() {\n return options.format;\n },\n path: options.path,\n });\n};\nexport const provideCartPathContext = hooks.provide;\n\nexport * from \"./useAjaxCart.js\";\nexport * from \"./useListenerStatus.js\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useAjaxCart.ts"],"names":[],"mappings":";;;AAYA,MAAM,eAAkB,GAAA,aAAA,CAAc,MAAM,MAAM,SAAS,IAAI,CAAA;AAElD,MAAA,sBAAA,GAAyB,CACpC,OACwB,KAAA;AACxB,EAAA,OAAO,OAAQ,CAAA,eAAA,EAAiB,EAAC,EAAG,OAAO,CAAA;AAC7C;AAEa,MAAA,kBAAA,GAAqB,CAAC,OAAiC,KAAA;AAClE,EAAO,OAAA,OAAA;AACT;AAEa,MAAA,WAAA,GAAc,CAAC,OAA0C,KAAA;AACpE,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,eAAA,EAAiB,OAAO,CAAA;AAEhD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,OAAQ,CAAA,KAAA;AAAA,MACZ;AAAA,KACF;AAAA;AAGF,EAAA,OAAO,mBAAmB,OAAO,CAAA;AACnC","file":"useAjaxCart.js","sourcesContent":["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"]}
1
+ {"version":3,"sources":["../../../src/hooks/useAjaxCart.ts"],"names":[],"mappings":";;;AAaA,MAAM,eAAkB,GAAA,aAAA,CAAc,MAAM,MAAM,SAAS,IAAI,CAAA;AAElD,MAAA,sBAAA,GAAyB,CACpC,OACwB,KAAA;AACxB,EAAA,OAAO,OAAQ,CAAA,eAAA,EAAiB,EAAC,EAAG,OAAO,CAAA;AAC7C;AAEa,MAAA,kBAAA,GAAqB,CAAC,OAAiC,KAAA;AAClE,EAAO,OAAA,OAAA;AACT;AAEa,MAAA,WAAA,GAAc,CAAC,OAA0C,KAAA;AACpE,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,eAAA,EAAiB,OAAO,CAAA;AAEhD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,OAAQ,CAAA,KAAA;AAAA,MACZ;AAAA,KACF;AAAA;AAGF,EAAA,OAAO,mBAAmB,OAAO,CAAA;AACnC","file":"useAjaxCart.js","sourcesContent":["import AjaxCart, { type CartData } from \"@brytdesigns/shopify-ajax-cart\";\nimport type { PathValue } from \"@brytdesigns/web-component-core\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype AjaxCartContextType = () => PathValue<CartData, \"\">;\n\nconst AjaxCartContext = createContext(() => () => AjaxCart.data);\n\nexport const provideAjaxCartContext = (\n element: WalkableNode\n): AjaxCartContextType => {\n return provide(AjaxCartContext, {}, element);\n};\n\nexport const useAjaxCartContext = (context: AjaxCartContextType) => {\n return context;\n};\n\nexport const useAjaxCart = (element: HTMLElement & ICustomElement) => {\n const context = consume(AjaxCartContext, element);\n\n if (!context) {\n throw console.error(\n \"CartContext not found! Please ensure to wrap your custom element with cart-context element.\"\n );\n }\n\n return useAjaxCartContext(context);\n};\n"]}