@brytdesigns/shopify-ajax-cart-components 1.3.0 → 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 (66) hide show
  1. package/dist/esm/index.js +33 -26
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/jsdelivr/components/cart-context.js +22 -0
  4. package/dist/jsdelivr/components/cart-context.js.map +1 -0
  5. package/dist/jsdelivr/components/cart-data-array-item.js +19 -0
  6. package/dist/jsdelivr/components/cart-data-array-item.js.map +1 -0
  7. package/dist/jsdelivr/components/cart-data-array.js +58 -0
  8. package/dist/jsdelivr/components/cart-data-array.js.map +1 -0
  9. package/dist/jsdelivr/components/cart-data-conditions.js +97 -0
  10. package/dist/jsdelivr/components/cart-data-conditions.js.map +1 -0
  11. package/dist/jsdelivr/components/cart-data-injection.js +89 -0
  12. package/dist/jsdelivr/components/cart-data-injection.js.map +1 -0
  13. package/dist/jsdelivr/components/cart-data-listener-status.js +35 -0
  14. package/dist/jsdelivr/components/cart-data-listener-status.js.map +1 -0
  15. package/dist/jsdelivr/components/cart-data-listener.js +163 -0
  16. package/dist/jsdelivr/components/cart-data-listener.js.map +1 -0
  17. package/dist/jsdelivr/components/cart-data.js +29 -0
  18. package/dist/jsdelivr/components/cart-data.js.map +1 -0
  19. package/dist/jsdelivr/components/cart-loading-state.js +39 -0
  20. package/dist/jsdelivr/components/cart-loading-state.js.map +1 -0
  21. package/dist/jsdelivr/components/index.js +11 -0
  22. package/dist/jsdelivr/components/index.js.map +1 -0
  23. package/dist/jsdelivr/hooks/index.js +7 -0
  24. package/dist/jsdelivr/hooks/index.js.map +1 -0
  25. package/dist/jsdelivr/hooks/useCartValue.js +23 -0
  26. package/dist/jsdelivr/hooks/useCartValue.js.map +1 -0
  27. package/dist/{main → jsdelivr}/hooks/useFormattedValue.js +5 -5
  28. package/dist/jsdelivr/hooks/useFormattedValue.js.map +1 -0
  29. package/dist/{main → jsdelivr}/hooks/useFullPropertyPath.js +3 -3
  30. package/dist/jsdelivr/hooks/useFullPropertyPath.js.map +1 -0
  31. package/dist/jsdelivr/hooks/useHybridCart.js +23 -0
  32. package/dist/jsdelivr/hooks/useHybridCart.js.map +1 -0
  33. package/dist/jsdelivr/hooks/useListenerStatus.js +33 -0
  34. package/dist/jsdelivr/hooks/useListenerStatus.js.map +1 -0
  35. package/dist/jsdelivr/index.js +72 -0
  36. package/dist/jsdelivr/index.js.map +1 -0
  37. package/dist/jsdelivr/utils/formatValue.js +22 -0
  38. package/dist/jsdelivr/utils/formatValue.js.map +1 -0
  39. package/dist/jsdelivr/utils/getTargetElement.js +13 -0
  40. package/dist/jsdelivr/utils/getTargetElement.js.map +1 -0
  41. package/dist/jsdelivr/utils/getTemplateContent.js +11 -0
  42. package/dist/jsdelivr/utils/getTemplateContent.js.map +1 -0
  43. package/dist/jsdelivr/utils/getValueFromPath.js +14 -0
  44. package/dist/jsdelivr/utils/getValueFromPath.js.map +1 -0
  45. package/dist/jsdelivr/utils/index.js +7 -0
  46. package/dist/jsdelivr/utils/index.js.map +1 -0
  47. package/dist/jsdelivr/utils/parseNestedObject.js +32 -0
  48. package/dist/jsdelivr/utils/parseNestedObject.js.map +1 -0
  49. package/dist/main/components/cart-data-array-injection.js +3 -4
  50. package/dist/main/components/cart-data-array-injection.js.map +1 -1
  51. package/dist/main/components/cart-data-array.js +2 -3
  52. package/dist/main/components/cart-data-array.js.map +1 -1
  53. package/dist/main/components/cart-data-conditions.js +2 -3
  54. package/dist/main/components/cart-data-conditions.js.map +1 -1
  55. package/dist/main/components/cart-data-injection.js +1 -3
  56. package/dist/main/components/cart-data-injection.js.map +1 -1
  57. package/dist/main/components/cart-data-listener.js +13 -14
  58. package/dist/main/components/cart-data-listener.js.map +1 -1
  59. package/dist/main/components/cart-data.js +1 -3
  60. package/dist/main/components/cart-data.js.map +1 -1
  61. package/dist/main/hooks/index.js +18 -2
  62. package/dist/main/hooks/index.js.map +1 -1
  63. package/dist/main/index.d.ts +1150 -317
  64. package/package.json +3 -3
  65. package/dist/main/hooks/useFormattedValue.js.map +0 -1
  66. package/dist/main/hooks/useFullPropertyPath.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useFullPropertyPath.ts"],"names":[],"mappings":";;;;AA0BA,SAAS,8BACP,OAC2B,EAAA;AAC3B,EAAA,OAAO,OAAQ,CAAA,IAAA;AACjB;AAEA,MAAM,uBAAA,GAA0B,cAAc,6BAA6B,CAAA;AAEpE,SAAS,8BAA+B,CAAA;AAAA,EAC7C,OAAA;AAAA,EACA;AACF,CAGgC,EAAA;AAC9B,EAAA,OAAO,OAAQ,CAAA,uBAAA,EAAyB,EAAE,IAAA,IAAQ,OAAO,CAAA;AAC3D;AAEO,SAAS,2BACd,OACA,EAAA;AACA,EAAO,OAAA,OAAA;AACT;AAEO,SAAS,oBAAoB,KAGjC,EAAA;AACD,EAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,uBAAyB,EAAA,KAAA,CAAM,OAAO,CAAA;AAC9D,EAAM,MAAA,QAAA,GAAW,2BAA2B,OAAO,CAAA;AACnD,EAAA,OAAO,WAAW,MAAM;AACtB,IAAA,IAAI,OAAO,QAAa,KAAA,UAAA,IAAc,OAAO,KAAA,CAAM,SAAS,UAAY,EAAA;AACtE,MAAA,OAAO,MAAM,IAAK,EAAA;AAAA,eAElB,OAAO,QAAA,KAAa,cACpB,OAAO,KAAA,CAAM,SAAS,UACtB,EAAA;AACA,MAAA,OAAO,QAAS,EAAA;AAAA,eAEhB,OAAO,QAAA,KAAa,cACpB,OAAO,KAAA,CAAM,SAAS,UACtB,EAAA;AACA,MAAA,OAAO,GAAG,QAAS,EAAC,CAAI,CAAA,EAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAAA;AAEtC,IAAO,OAAA,EAAA;AAAA,GACR,CAAA;AACH","file":"useFullPropertyPath.js","sourcesContent":["import type { Path } from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils\";\n\nimport HybridCart from \"/npm/@brytdesigns/shopify-hybrid-cart@0.1.29\";\nimport { createMemo, type Accessor } from \"/npm/solid-js@^1.9.5/+esm\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"/npm/component-register@^0.8.7/+esm\";\n\ntype HybridCartData = (typeof HybridCart)[\"data\"];\n\nexport type ValidHybridPath = Path<HybridCartData>;\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype FullPropertyPathContextType = ReturnType<\n typeof createFullPathPropertyContext\n>;\n\ntype Options = {\n path: Accessor<ValidHybridPath>;\n element: HTMLElement & ICustomElement;\n};\n\nfunction createFullPathPropertyContext(\n options: Options,\n): Accessor<ValidHybridPath> {\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<ValidHybridPath>;\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<ValidHybridPath>;\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 ValidHybridPath;\n }\n return \"\" as ValidHybridPath;\n });\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import HybridCart from '/npm/@brytdesigns/shopify-hybrid-cart@0.1.29';
2
+ import { createContext, provide, consume } from '/npm/component-register@^0.8.7/+esm';
3
+
4
+ const HybridCartContext = createContext(() => () => HybridCart.data);
5
+ const provideHybridCartContext = (element) => {
6
+ return provide(HybridCartContext, {}, element);
7
+ };
8
+ const useHybridCartContext = (context) => {
9
+ return context;
10
+ };
11
+ const useHybridCart = (element) => {
12
+ const context = consume(HybridCartContext, element);
13
+ if (!context) {
14
+ throw console.error(
15
+ "CartContext not found! Please ensure to wrap your custom element with hybrid-cart element."
16
+ );
17
+ }
18
+ return useHybridCartContext(context);
19
+ };
20
+
21
+ export { provideHybridCartContext, useHybridCart, useHybridCartContext };
22
+ //# sourceMappingURL=useHybridCart.js.map
23
+ //# sourceMappingURL=useHybridCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useHybridCart.ts"],"names":[],"mappings":";;;AAYA,MAAM,iBAAoB,GAAA,aAAA,CAAc,MAAM,MAAM,WAAW,IAAI,CAAA;AAEtD,MAAA,wBAAA,GAA2B,CACtC,OAC0B,KAAA;AAC1B,EAAA,OAAO,OAAQ,CAAA,iBAAA,EAAmB,EAAC,EAAG,OAAO,CAAA;AAC/C;AAEa,MAAA,oBAAA,GAAuB,CAAC,OAAmC,KAAA;AACtE,EAAO,OAAA,OAAA;AACT;AAEa,MAAA,aAAA,GAAgB,CAAC,OAA0C,KAAA;AACtE,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,iBAAA,EAAmB,OAAO,CAAA;AAElD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,OAAQ,CAAA,KAAA;AAAA,MACZ;AAAA,KACF;AAAA;AAGF,EAAA,OAAO,qBAAqB,OAAO,CAAA;AACrC","file":"useHybridCart.js","sourcesContent":["import HybridCart from \"/npm/@brytdesigns/shopify-hybrid-cart@0.1.29\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"/npm/component-register@^0.8.7/+esm\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype HybridCartContextType = () => (typeof HybridCart)[\"data\"];\n\nconst HybridCartContext = createContext(() => () => HybridCart.data);\n\nexport const provideHybridCartContext = (\n element: WalkableNode,\n): HybridCartContextType => {\n return provide(HybridCartContext, {}, element);\n};\n\nexport const useHybridCartContext = (context: HybridCartContextType) => {\n return context;\n};\n\nexport const useHybridCart = (element: HTMLElement & ICustomElement) => {\n const context = consume(HybridCartContext, element);\n\n if (!context) {\n throw console.error(\n \"CartContext not found! Please ensure to wrap your custom element with hybrid-cart element.\",\n );\n }\n\n return useHybridCartContext(context);\n};\n"]}
@@ -0,0 +1,33 @@
1
+ import { createContext, provide, consume } from '/npm/component-register@^0.8.7/+esm';
2
+ import { splitProps } from '/npm/solid-js@^1.9.5/+esm';
3
+
4
+ function createListenerStatusContext(options) {
5
+ const [privateProps, publicProps] = splitProps(options, ["element"]);
6
+ function setStatus(status) {
7
+ const currentStatus = privateProps.element.getAttribute("status");
8
+ if (currentStatus === status) return;
9
+ privateProps.element.setAttribute("status", status);
10
+ return status;
11
+ }
12
+ return [() => publicProps.status, setStatus];
13
+ }
14
+ const ListenerStatusContext = createContext(createListenerStatusContext);
15
+ const provideListenerStatusContext = (options) => {
16
+ return provide(ListenerStatusContext, options, options.element);
17
+ };
18
+ const useListenerStatusContext = (context) => {
19
+ return context;
20
+ };
21
+ const useListenerStatus = (element) => {
22
+ const context = consume(ListenerStatusContext, element);
23
+ if (!context) {
24
+ throw console.error(
25
+ "cart-data-listener context not found! Please ensure to wrap your custom element with cart-data-listener element."
26
+ );
27
+ }
28
+ return useListenerStatusContext(context);
29
+ };
30
+
31
+ export { provideListenerStatusContext, useListenerStatus, useListenerStatusContext };
32
+ //# sourceMappingURL=useListenerStatus.js.map
33
+ //# sourceMappingURL=useListenerStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/hooks/useListenerStatus.ts"],"names":[],"mappings":";;;AAkBA,SAAS,4BAA4B,OAAkB,EAAA;AACrD,EAAM,MAAA,CAAC,cAAc,WAAW,CAAA,GAAI,WAAW,OAAS,EAAA,CAAC,SAAS,CAAC,CAAA;AAEnE,EAAA,SAAS,UAAU,MAAgB,EAAA;AACjC,IAAA,MAAM,aAAgB,GAAA,YAAA,CAAa,OAAQ,CAAA,YAAA,CAAa,QAAQ,CAAA;AAChE,IAAA,IAAI,kBAAkB,MAAQ,EAAA;AAC9B,IAAa,YAAA,CAAA,OAAA,CAAQ,YAAa,CAAA,QAAA,EAAU,MAAM,CAAA;AAClD,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,OAAO,CAAC,MAAM,WAAY,CAAA,MAAA,EAAQ,SAAS,CAAA;AAC7C;AAEA,MAAM,qBAAA,GAAwB,cAAc,2BAA2B,CAAA;AAE1D,MAAA,4BAAA,GAA+B,CAAC,OAGZ,KAAA;AAC/B,EAAA,OAAO,OAAQ,CAAA,qBAAA,EAAuB,OAAS,EAAA,OAAA,CAAQ,OAAO,CAAA;AAChE;AAEa,MAAA,wBAAA,GAA2B,CACtC,OACG,KAAA;AACH,EAAO,OAAA,OAAA;AACT;AAEa,MAAA,iBAAA,GAAoB,CAAC,OAA0C,KAAA;AAC1E,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,qBAAA,EAAuB,OAAO,CAAA;AAEtD,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAA,MAAM,OAAQ,CAAA,KAAA;AAAA,MACZ;AAAA,KACF;AAAA;AAGF,EAAA,OAAO,yBAAyB,OAAO,CAAA;AACzC","file":"useListenerStatus.js","sourcesContent":["import {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"/npm/component-register@^0.8.7/+esm\";\nimport { splitProps } from \"/npm/solid-js@^1.9.5/+esm\";\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 \"cart-data-listener context not found! Please ensure to wrap your custom element with cart-data-listener element.\",\n );\n }\n\n return useListenerStatusContext(context);\n};\n"]}
@@ -0,0 +1,72 @@
1
+ import { customShadowlessElement, correctElementType } from '/npm/@brytdesigns/web-component-utils@0.1.7';
2
+ import { CartContext, CartDataArrayItem, CartDataArray, CartData, CartDataConditions, CartDataInjection, CartDataListener, CartDataListenerStatus, CartLoadingState } from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/components/index.js';
3
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js';
4
+
5
+ customShadowlessElement(
6
+ "cart-context",
7
+ { debug: false },
8
+ correctElementType(CartContext)
9
+ );
10
+ customShadowlessElement(
11
+ "cart-data-array-item",
12
+ //@ts-ignore
13
+ { itemIndex: "0" },
14
+ correctElementType(CartDataArrayItem)
15
+ );
16
+ customShadowlessElement(
17
+ "cart-data-array",
18
+ {
19
+ format: "",
20
+ arrayPath: "items"
21
+ },
22
+ correctElementType(CartDataArray)
23
+ );
24
+ customShadowlessElement(
25
+ "cart-data",
26
+ {
27
+ format: "",
28
+ propertyName: "item_count"
29
+ },
30
+ correctElementType(CartData)
31
+ );
32
+ customShadowlessElement(
33
+ "cart-data-conditions",
34
+ {},
35
+ correctElementType(CartDataConditions)
36
+ );
37
+ customShadowlessElement(
38
+ "cart-data-injection",
39
+ {
40
+ propertyName: "item_count",
41
+ attributeName: "data-item-count",
42
+ injectionType: "attribute",
43
+ target: "",
44
+ format: ""
45
+ },
46
+ correctElementType(CartDataInjection)
47
+ );
48
+ customShadowlessElement(
49
+ "cart-data-listener",
50
+ {
51
+ status: "default",
52
+ on: "submit",
53
+ method: "updateItem",
54
+ resetForm: true,
55
+ debounceDelay: 0,
56
+ resetStatusDelay: 0,
57
+ preventDefault: true
58
+ },
59
+ correctElementType(CartDataListener)
60
+ );
61
+ customShadowlessElement(
62
+ "cart-data-listener-status",
63
+ {},
64
+ correctElementType(CartDataListenerStatus)
65
+ );
66
+ customShadowlessElement(
67
+ "cart-loading-state",
68
+ { ignoredStates: [] },
69
+ correctElementType(CartLoadingState)
70
+ );
71
+ //# sourceMappingURL=index.js.map
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAiBA,uBAAA;AAAA,EACE,cAAA;AAAA,EACA,EAAE,OAAO,KAAM,EAAA;AAAA,EACf,mBAAmB,WAAW;AAChC,CAAA;AAEA,uBAAA;AAAA,EACE,sBAAA;AAAA;AAAA,EAEA,EAAE,WAAW,GAAI,EAAA;AAAA,EACjB,mBAAmB,iBAAiB;AACtC,CAAA;AAEA,uBAAA;AAAA,EACE,iBAAA;AAAA,EACA;AAAA,IACE,MAAQ,EAAA,EAAA;AAAA,IACR,SAAW,EAAA;AAAA,GACb;AAAA,EACA,mBAAmB,aAAa;AAClC,CAAA;AAEA,uBAAA;AAAA,EACE,WAAA;AAAA,EACA;AAAA,IACE,MAAQ,EAAA,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,mBAAmB,QAAQ;AAC7B,CAAA;AAEA,uBAAA;AAAA,EACE,sBAAA;AAAA,EACA,EAAC;AAAA,EACD,mBAAmB,kBAAkB;AACvC,CAAA;AAEA,uBAAA;AAAA,EACE,qBAAA;AAAA,EACA;AAAA,IACE,YAAc,EAAA,YAAA;AAAA,IACd,aAAe,EAAA,iBAAA;AAAA,IACf,aAAe,EAAA,WAAA;AAAA,IACf,MAAQ,EAAA,EAAA;AAAA,IACR,MAAQ,EAAA;AAAA,GACV;AAAA,EACA,mBAAmB,iBAAiB;AACtC,CAAA;AAEA,uBAAA;AAAA,EACE,oBAAA;AAAA,EACA;AAAA,IACE,MAAQ,EAAA,SAAA;AAAA,IACR,EAAI,EAAA,QAAA;AAAA,IACJ,MAAQ,EAAA,YAAA;AAAA,IACR,SAAW,EAAA,IAAA;AAAA,IACX,aAAe,EAAA,CAAA;AAAA,IACf,gBAAkB,EAAA,CAAA;AAAA,IAClB,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,mBAAmB,gBAAgB;AACrC,CAAA;AAEA,uBAAA;AAAA,EACE,2BAAA;AAAA,EACA,EAAC;AAAA,EACD,mBAAmB,sBAAsB;AAC3C,CAAA;AAEA,uBAAA;AAAA,EACE,oBAAA;AAAA,EACA,EAAE,aAAe,EAAA,EAAG,EAAA;AAAA,EACpB,mBAAmB,gBAAgB;AACrC,CAAA","file":"index.js","sourcesContent":["import {\n customShadowlessElement,\n correctElementType,\n} from \"/npm/@brytdesigns/web-component-utils@0.1.7\";\n\nimport {\n CartContext,\n CartData,\n CartDataArray,\n CartDataArrayItem,\n CartDataConditions,\n CartDataInjection,\n CartDataListener,\n CartDataListenerStatus,\n CartLoadingState,\n} from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/components/index.js\";\n\ncustomShadowlessElement(\n \"cart-context\",\n { debug: false },\n correctElementType(CartContext),\n);\n\ncustomShadowlessElement(\n \"cart-data-array-item\",\n //@ts-ignore\n { itemIndex: \"0\" },\n correctElementType(CartDataArrayItem),\n);\n\ncustomShadowlessElement(\n \"cart-data-array\",\n {\n format: \"\",\n arrayPath: \"items\",\n },\n correctElementType(CartDataArray),\n);\n\ncustomShadowlessElement(\n \"cart-data\",\n {\n format: \"\",\n propertyName: \"item_count\",\n },\n correctElementType(CartData),\n);\n\ncustomShadowlessElement(\n \"cart-data-conditions\",\n {},\n correctElementType(CartDataConditions),\n);\n\ncustomShadowlessElement(\n \"cart-data-injection\",\n {\n propertyName: \"item_count\",\n attributeName: \"data-item-count\",\n injectionType: \"attribute\",\n target: \"\",\n format: \"\",\n },\n correctElementType(CartDataInjection),\n);\n\ncustomShadowlessElement(\n \"cart-data-listener\",\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),\n);\n\ncustomShadowlessElement(\n \"cart-data-listener-status\",\n {},\n correctElementType(CartDataListenerStatus),\n);\n\ncustomShadowlessElement(\n \"cart-loading-state\",\n { ignoredStates: [] },\n correctElementType(CartLoadingState),\n);\n\nexport * from \"/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/hooks/index.js\";\n"]}
@@ -0,0 +1,22 @@
1
+ function formatValue(format, value) {
2
+ switch (format) {
3
+ case "currency":
4
+ if (typeof value === "number") return window.Shopify.formatMoney(value);
5
+ if (typeof value === "string")
6
+ return window.Shopify.formatMoney(parseFloat(value));
7
+ console.warn("formatValue: Unsupported value type for currency format.");
8
+ return window.Shopify.formatMoney(0);
9
+ case "number":
10
+ return Number(value);
11
+ case "boolean":
12
+ return typeof value === "string" ? value.toLowerCase() === "true" : Boolean(value);
13
+ case "invert_boolean":
14
+ return typeof value === "string" ? value.toLowerCase() === "false" : !Boolean(value);
15
+ default:
16
+ return value;
17
+ }
18
+ }
19
+
20
+ export { formatValue };
21
+ //# sourceMappingURL=formatValue.js.map
22
+ //# sourceMappingURL=formatValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/formatValue.ts"],"names":[],"mappings":"AAOO,SAAS,WAAA,CAAY,QAAgB,KAAgB,EAAA;AAC1D,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,UAAA;AACH,MAAA,IAAI,OAAO,KAAU,KAAA,QAAA,SAAiB,MAAO,CAAA,OAAA,CAAQ,YAAY,KAAK,CAAA;AACtE,MAAA,IAAI,OAAO,KAAU,KAAA,QAAA;AACnB,QAAA,OAAO,MAAO,CAAA,OAAA,CAAQ,WAAY,CAAA,UAAA,CAAW,KAAK,CAAC,CAAA;AACrD,MAAA,OAAA,CAAQ,KAAK,0DAA0D,CAAA;AACvE,MAAO,OAAA,MAAA,CAAO,OAAQ,CAAA,WAAA,CAAY,CAAC,CAAA;AAAA,IACrC,KAAK,QAAA;AACH,MAAA,OAAO,OAAO,KAAK,CAAA;AAAA,IACrB,KAAK,SAAA;AACH,MAAO,OAAA,OAAO,UAAU,QACpB,GAAA,KAAA,CAAM,aAAkB,KAAA,MAAA,GACxB,QAAQ,KAAK,CAAA;AAAA,IACnB,KAAK,gBAAA;AACH,MAAO,OAAA,OAAO,UAAU,QACpB,GAAA,KAAA,CAAM,aAAkB,KAAA,OAAA,GACxB,CAAC,OAAA,CAAQ,KAAK,CAAA;AAAA,IACpB;AACE,MAAO,OAAA,KAAA;AAAA;AAEb","file":"formatValue.js","sourcesContent":["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 typeof value === \"string\"\n ? value.toLowerCase() === \"true\"\n : Boolean(value);\n case \"invert_boolean\":\n return typeof value === \"string\"\n ? value.toLowerCase() === \"false\"\n : !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"]}
@@ -0,0 +1,13 @@
1
+ function getTargetElement(rootElement, target) {
2
+ if (!target) return rootElement;
3
+ const t = rootElement.querySelector(target);
4
+ if (!t) {
5
+ console.error(`target element not found: ${target}`);
6
+ return null;
7
+ }
8
+ return t;
9
+ }
10
+
11
+ export { getTargetElement };
12
+ //# sourceMappingURL=getTargetElement.js.map
13
+ //# sourceMappingURL=getTargetElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/getTargetElement.ts"],"names":[],"mappings":"AAAO,SAAS,gBAAA,CAAiB,aAA0B,MAAgB,EAAA;AACzE,EAAI,IAAA,CAAC,QAAe,OAAA,WAAA;AACpB,EAAM,MAAA,CAAA,GAAI,WAAY,CAAA,aAAA,CAAc,MAAM,CAAA;AAC1C,EAAA,IAAI,CAAC,CAAG,EAAA;AACN,IAAQ,OAAA,CAAA,KAAA,CAAM,CAA6B,0BAAA,EAAA,MAAM,CAAE,CAAA,CAAA;AACnD,IAAO,OAAA,IAAA;AAAA;AAET,EAAO,OAAA,CAAA;AACT","file":"getTargetElement.js","sourcesContent":["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"]}
@@ -0,0 +1,11 @@
1
+ function getTemplateContent(element, state) {
2
+ const tmpl = element.querySelector(
3
+ `template[${state}]`
4
+ );
5
+ if (!tmpl) return null;
6
+ return tmpl.content;
7
+ }
8
+
9
+ export { getTemplateContent };
10
+ //# sourceMappingURL=getTemplateContent.js.map
11
+ //# sourceMappingURL=getTemplateContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/getTemplateContent.ts"],"names":[],"mappings":"AAAO,SAAS,kBAAA,CAAmB,SAAsB,KAAe,EAAA;AACtE,EAAA,MAAM,OAAO,OAAQ,CAAA,aAAA;AAAA,IACnB,YAAY,KAAK,CAAA,CAAA;AAAA,GACnB;AACA,EAAI,IAAA,CAAC,MAAa,OAAA,IAAA;AAClB,EAAA,OAAO,IAAK,CAAA,OAAA;AACd","file":"getTemplateContent.js","sourcesContent":["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"]}
@@ -0,0 +1,14 @@
1
+ function getValueFromPath(obj, path) {
2
+ return path.split(".").reduce((acc, key) => {
3
+ if (acc === null || acc === void 0) return void 0;
4
+ const isArrayIndex = !isNaN(Number(key)) && key.trim() !== "";
5
+ if (Array.isArray(acc) && isArrayIndex) {
6
+ return acc[Number(key)];
7
+ }
8
+ return acc[key];
9
+ }, obj);
10
+ }
11
+
12
+ export { getValueFromPath };
13
+ //# sourceMappingURL=getValueFromPath.js.map
14
+ //# sourceMappingURL=getValueFromPath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/getValueFromPath.ts"],"names":[],"mappings":"AA+BO,SAAS,gBAAA,CACd,KACA,IACiB,EAAA;AACjB,EAAA,OAAO,KAAK,KAAM,CAAA,GAAG,EAAE,MAAY,CAAA,CAAC,KAAK,GAAQ,KAAA;AAC/C,IAAA,IAAI,GAAQ,KAAA,IAAA,IAAQ,GAAQ,KAAA,MAAA,EAAkB,OAAA,MAAA;AAG9C,IAAM,MAAA,YAAA,GAAe,CAAC,KAAM,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA,IAAK,GAAI,CAAA,IAAA,EAAW,KAAA,EAAA;AAC3D,IAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA,IAAK,YAAc,EAAA;AACtC,MAAO,OAAA,GAAA,CAAI,MAAO,CAAA,GAAG,CAAC,CAAA;AAAA;AAIxB,IAAA,OAAO,IAAI,GAAG,CAAA;AAAA,KACb,GAAG,CAAA;AACR","file":"getValueFromPath.js","sourcesContent":["// 🔥 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"]}
@@ -0,0 +1,7 @@
1
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/getValueFromPath.js';
2
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/formatValue.js';
3
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/getTemplateContent.js';
4
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/getTargetElement.js';
5
+ export * from '/npm/@brytdesigns/shopify-hybrid-cart-components@0.2.19/dist/jsdelivr/utils/parseNestedObject.js';
6
+ //# sourceMappingURL=index.js.map
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
@@ -0,0 +1,32 @@
1
+ function parseNestedObject(data) {
2
+ const result = {};
3
+ for (const key in data) {
4
+ const value = data[key];
5
+ const parts = key.match(/(\w+|\[\d+\])/g);
6
+ if (!parts) continue;
7
+ let current = result;
8
+ for (let i = 0; i < parts.length; i++) {
9
+ let part = parts[i];
10
+ let nextPart = parts[i + 1];
11
+ if (!part) continue;
12
+ if (part.startsWith("[")) {
13
+ part = parseInt(part.slice(1, -1), 10);
14
+ }
15
+ if (i === parts.length - 1) {
16
+ current[part] = value;
17
+ } else {
18
+ if (typeof parts[i + 1] === "number" || nextPart && nextPart.startsWith("[")) {
19
+ current[part] = current[part] || [];
20
+ } else {
21
+ current[part] = current[part] || {};
22
+ }
23
+ current = current[part];
24
+ }
25
+ }
26
+ }
27
+ return result;
28
+ }
29
+
30
+ export { parseNestedObject };
31
+ //# sourceMappingURL=parseNestedObject.js.map
32
+ //# sourceMappingURL=parseNestedObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/parseNestedObject.ts"],"names":[],"mappings":"AAAO,SAAS,kBACd,IACqB,EAAA;AACrB,EAAA,MAAM,SAA8B,EAAC;AAErC,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAM,MAAA,KAAA,GAAQ,KAAK,GAAG,CAAA;AACtB,IAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,gBAAgB,CAAA;AAExC,IAAA,IAAI,CAAC,KAAO,EAAA;AAEZ,IAAA,IAAI,OAAe,GAAA,MAAA;AACnB,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACrC,MAAI,IAAA,IAAA,GAAoC,MAAM,CAAC,CAAA;AAC/C,MAAI,IAAA,QAAA,GAAwC,KAAM,CAAA,CAAA,GAAI,CAAC,CAAA;AAEvD,MAAA,IAAI,CAAC,IAAM,EAAA;AAGX,MAAI,IAAA,IAAA,CAAK,UAAW,CAAA,GAAG,CAAG,EAAA;AACxB,QAAA,IAAA,GAAO,SAAS,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,GAAG,EAAE,CAAA;AAAA;AAGvC,MAAI,IAAA,CAAA,KAAM,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1B,QAAA,OAAA,CAAQ,IAAI,CAAI,GAAA,KAAA;AAAA,OACX,MAAA;AACL,QACE,IAAA,OAAO,KAAM,CAAA,CAAA,GAAI,CAAC,CAAA,KAAM,YACvB,QAAY,IAAA,QAAA,CAAS,UAAW,CAAA,GAAG,CACpC,EAAA;AACA,UAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAQ,CAAA,IAAI,KAAK,EAAC;AAAA,SAC7B,MAAA;AACL,UAAA,OAAA,CAAQ,IAAI,CAAA,GAAI,OAAQ,CAAA,IAAI,KAAK,EAAC;AAAA;AAEpC,QAAA,OAAA,GAAU,QAAQ,IAAI,CAAA;AAAA;AACxB;AACF;AAGF,EAAO,OAAA,MAAA;AACT","file":"parseNestedObject.js","sourcesContent":["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"]}
@@ -1,6 +1,6 @@
1
1
  import { getTemplateContent, getTargetElement } from '../utils/index.js';
2
2
  import { createMemo, mapArray, createEffect, on } from 'solid-js';
3
- import { useAjaxCart, useCartPath, provideCartPathContext, 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-injection";
@@ -11,7 +11,6 @@ const Component = (props, { element }) => {
11
11
  `${Name}: No template found with a property of 'item'.`
12
12
  );
13
13
  if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);
14
- const data = useAjaxCart(element);
15
14
  const mergedProps = {
16
15
  element,
17
16
  path: () => props.arrayPath
@@ -22,8 +21,8 @@ const Component = (props, { element }) => {
22
21
  path: fullPath
23
22
  });
24
23
  const value = useCartValue({
25
- data,
26
- path: fullPath
24
+ path: fullPath,
25
+ element
27
26
  });
28
27
  const arrayValue = createMemo(() => {
29
28
  const v = value();
@@ -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 CartPath,\n useCartPath,\n useCartValue,\n provideCartPathContext,\n useAjaxCart,\n} from \"../hooks/index.js\";\n\nimport { getTargetElement } from \"../utils/index.js\";\n\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n wrapInnerChild: boolean;\n target: string;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array-injection\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element }\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const data = useAjaxCart(element);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n data,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n const children = createMemo(\n mapArray(arrayValue, (_, idx) => {\n const fragment = itemTemplate.cloneNode(true);\n const container = fragment instanceof DocumentFragment ? fragment : null;\n if (props.wrapInnerChild && container) {\n const firstElement = container.firstElementChild;\n if (!firstElement) return null;\n const children = Array.from(firstElement.children);\n\n const wrapper = html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(children)}\n </cart-data-array-item>\n `;\n firstElement.replaceChildren(\n Array.isArray(wrapper) ? wrapper.at(0)! : wrapper\n );\n\n return firstElement;\n }\n })\n );\n\n createEffect(\n on(\n () => {\n const rootElement = element;\n return {\n target: getTargetElement(rootElement, props.target),\n children: children(),\n };\n },\n ({ children, target }) => {\n if (!target) return;\n const filteredChildren = children.filter(\n (v) => v !== null && v !== undefined\n );\n target.replaceChildren(...filteredChildren);\n }\n )\n );\n};\n"]}
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,6 +1,6 @@
1
1
  import { getTemplateContent } from '../utils/index.js';
2
2
  import { createMemo, Show, For } from 'solid-js';
3
- import { useAjaxCart, useCartPath, provideCartPathContext, 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";
@@ -11,7 +11,6 @@ const Component = (props, { element }) => {
11
11
  `${Name}: No template found with a property of 'item'.`
12
12
  );
13
13
  if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);
14
- const data = useAjaxCart(element);
15
14
  const mergedProps = {
16
15
  element,
17
16
  path: () => props.arrayPath
@@ -22,7 +21,7 @@ const Component = (props, { element }) => {
22
21
  path: fullPath
23
22
  });
24
23
  const value = useCartValue({
25
- data,
24
+ element,
26
25
  path: fullPath
27
26
  });
28
27
  const arrayValue = createMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-array.ts"],"names":[],"mappings":";;;;;AAoBO,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,EAAM,MAAA,IAAA,GAAO,YAAY,OAAO,CAAA;AAChC,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,IAAA;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 useAjaxCart,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataArrayProps = {\n arrayPath: CartPath;\n format?: Format;\n reverse?: boolean;\n};\n\nexport const Name = \"cart-data-array\";\n\nexport const Component: CorrectComponentType<CartDataArrayProps> = (\n props,\n { element }\n) => {\n const itemTemplate = getTemplateContent(element, \"item\");\n if (!itemTemplate)\n return console.warn(\n `${Name}: No template found with a property of 'item'.`\n );\n if (!props.arrayPath) return console.warn(`${Name}: No array path provided.`);\n const data = useAjaxCart(element);\n const mergedProps = {\n element,\n path: () => props.arrayPath,\n };\n const fullPath = useCartPath(mergedProps);\n provideCartPathContext({\n element,\n path: fullPath,\n });\n\n const value = useCartValue({\n data,\n path: fullPath,\n });\n\n const arrayValue = createMemo(() => {\n const v = value();\n\n if (!v) {\n console.warn(`${Name}: value is null or undefined at path ${fullPath()}`);\n return null;\n }\n\n if (!Array.isArray(v)) {\n console.warn(`${Name}: value is not an array at path ${fullPath()}`);\n return null;\n }\n\n if (props.reverse) {\n return v.toReversed();\n }\n\n return v;\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${Show} when=${() => arrayValue() && arrayValue()!.length > 0}>\n <${For} each=${arrayValue}>\n ${(_: any, idx: Accessor<number>) => html`\n <cart-data-array-item item-index=${() => `${idx()}`}>\n ${() => Array.from(itemTemplate.cloneNode(true).childNodes)}\n </cart-data-array-item>\n `}\n <//>\n <//>\n `;\n};\n"]}
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 { useAjaxCart, useCartPath, 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,11 +84,10 @@ const Component = (_, { element }) => {
84
84
  }
85
85
  })
86
86
  );
87
- const cart = useAjaxCart(element);
88
87
  const fullPath = useCartPath({ element });
89
88
  const data = useCartValue({
90
89
  path: fullPath,
91
- data: cart
90
+ element
92
91
  });
93
92
  element.replaceChildren(...[]);
94
93
  return html`
@@ -1 +1 @@
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, useAjaxCart } from \"../hooks/index.js\";\nimport { getValueFromPath, formatValue, type Format } from \"../utils/index.js\";\n\ntype CartDataConditionsProps = {};\n\ntype ConditionValue = {\n type: \"primitive\" | \"property\";\n name?: string;\n value?: string | number | boolean | null;\n property_name?: string;\n};\n\ntype Condition = {\n type:\n | \"typeof\"\n | \"includes\"\n | \"includes_property\"\n | \"equals\"\n | \"not_equals\"\n | \"starts_with\"\n | \"lt\"\n | \"lte\"\n | \"gt\"\n | \"gte\";\n format?: Format;\n invert?: boolean;\n valueA: ConditionValue;\n valueB: ConditionValue;\n};\n\nfunction getValue<T>(data: T, value: ConditionValue): any {\n if (typeof value === \"undefined\" || !data) return undefined;\n\n if (value.type === \"primitive\") {\n return value.value;\n }\n\n if (value.type === \"property\" && value.name) {\n //@ts-ignore\n return getValueFromPath<T>(data, value.name);\n }\n\n return null;\n}\n\nfunction invertResult(result: boolean, invert = false) {\n if (invert) return !result;\n return result;\n}\n\nfunction validateConditions<T>(conditions: Condition[], data: T) {\n if (!data) return false;\n const result = conditions.every((condition) => {\n let valueA = getValue(data, condition.valueA),\n valueB = getValue(data, condition.valueB),\n result = false;\n\n if (typeof valueA === \"undefined\" && typeof valueB === \"undefined\")\n return false;\n\n if (condition.type === \"typeof\") {\n result = typeof valueA === valueB;\n }\n\n if (condition.type === \"includes\") {\n result = formatValue(condition.format || \"\", valueA).includes(\n formatValue(condition.format || \"\", valueB)\n );\n }\n\n if (condition.type === \"includes_property\") {\n result = valueA.some(\n (v: any) => v[condition.valueA?.property_name || \"\"] === valueB\n );\n }\n\n if (condition.type === \"starts_with\") {\n result = formatValue(\"string\", valueA).startsWith(\n formatValue(condition.format || \"\", valueB)\n );\n }\n\n if (condition.type === \"equals\") {\n result =\n formatValue(condition.format || \"\", valueA) ===\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"not_equals\") {\n result =\n formatValue(condition.format || \"\", valueA) !==\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lt\") {\n result =\n formatValue(condition.format || \"\", valueA) <\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"lte\") {\n result =\n formatValue(condition.format || \"\", valueA) <=\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gt\") {\n result =\n formatValue(condition.format || \"\", valueA) >\n formatValue(condition.format || \"\", valueB);\n }\n\n if (condition.type === \"gte\") {\n result =\n formatValue(condition.format || \"\", valueA) >=\n formatValue(condition.format || \"\", valueB);\n }\n\n return invertResult(result, condition.invert);\n });\n\n return result;\n}\n\nexport const Name = \"cart-data-conditions\";\n\nexport const Component: CorrectComponentType<CartDataConditionsProps> = (\n _,\n { element }\n) => {\n const conditionTemplates = Array.from(element.children).filter(\n (child) => child.tagName === \"TEMPLATE\" && child.hasAttribute(\"conditions\")\n );\n if (!conditionTemplates.length)\n return console.error(\n `${Name}: no templates found with any conditions attribute!`\n );\n\n const allConditions = createMemo(() =>\n conditionTemplates.map((tmpl) => {\n const conditions = tmpl.getAttribute(\"conditions\");\n if (!conditions)\n console.warn(`${Name}: conditions attribute is required!`);\n\n try {\n return JSON.parse(conditions!);\n } catch (e) {\n return [];\n }\n })\n );\n\n const cart = useAjaxCart(element);\n const fullPath = useCartPath({ element });\n const data = useCartValue({\n path: fullPath,\n data: cart,\n });\n\n element.replaceChildren(...[]);\n\n return html`\n <${For} each=${() => conditionTemplates}>\n ${(tmpl: HTMLTemplateElement, idx: Accessor<number>) => {\n const conditions = allConditions()[idx()];\n return html`\n <${Show} when=${() => validateConditions(conditions, data())}>\n ${() => Array.from(tmpl.content.cloneNode(true).childNodes)}\n <//>\n `;\n }}\n <//>\n `;\n};\n"]}
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 { useAjaxCart, useCartPath, useCartFormattedValue } 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,12 +16,10 @@ const Component = (props, { element }) => {
16
16
  element,
17
17
  path: () => props.propertyName
18
18
  };
19
- const data = useAjaxCart(element);
20
19
  const fullPath = useCartPath(mergedProps);
21
20
  const value = useCartFormattedValue({
22
21
  element,
23
22
  path: fullPath,
24
- data,
25
23
  get format() {
26
24
  return props.format;
27
25
  }
@@ -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 CartPath,\n useCartFormattedValue,\n useCartPath,\n useAjaxCart,\n} from \"../hooks/index.js\";\nimport { type Format, getTargetElement } from \"../utils/index.js\";\nimport { createEffect, on, onCleanup } from \"solid-js\";\n\ntype CartDataInjectionProps = {\n propertyName: CartPath;\n format?: Format;\n target: string;\n attributeName: string;\n injectionType: \"attribute\" | \"property\" | \"template\";\n};\n\nconst VALID_INJECTION_TYPES = [\"attribute\", \"property\", \"template\"];\n\nexport const Name = \"cart-data-injection\";\n\nexport const Component: CorrectComponentType<CartDataInjectionProps> = (\n props,\n { element }\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No path attribute provided.`);\n if (!props.target) return console.warn(`${Name}: No target attribute found!`);\n if (!props.attributeName)\n return console.warn(`${Name}: No attribute-name attribute found!`);\n\n if (\n !props.injectionType ||\n (props.injectionType &&\n !VALID_INJECTION_TYPES.includes(props.injectionType))\n )\n return console.warn(`${Name}: Invalid injection-type attribute provided.`);\n\n const mergedProps = {\n element,\n path: () => props.propertyName,\n };\n const data = useAjaxCart(element);\n const fullPath = useCartPath(mergedProps);\n const value = useCartFormattedValue({\n element,\n path: fullPath,\n data,\n get format() {\n return props.format;\n },\n });\n\n createEffect(\n on(\n () => {\n return {\n target: getTargetElement(element, props.target),\n value: value(),\n attributeName: props.attributeName,\n injectionType: props.injectionType,\n propertyName: props.propertyName,\n };\n },\n ({ target, value, attributeName, injectionType, propertyName }) => {\n if (!target)\n return console.warn(\n `${Name}: Unable to find element with selector of: ${props.target}`\n );\n\n if (\n injectionType === \"attribute\" &&\n value !== null &&\n value !== undefined\n ) {\n target.setAttribute(attributeName, `${value}`);\n return;\n }\n\n if (\n injectionType === \"property\" &&\n value !== null &&\n value !== undefined\n ) {\n //@ts-ignore\n target[attributeName] = value;\n return;\n }\n\n if (\n injectionType === \"template\" &&\n value !== null &&\n value !== undefined\n ) {\n if (attributeName === \"style\") {\n //@ts-ignore\n const styleTmpl = target[attributeName].cssText;\n setTimeout(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl.replace(\n //@ts-ignore\n `{${propertyName}}`,\n value\n );\n });\n return onCleanup(() => {\n //@ts-ignore\n target[attributeName].cssText = styleTmpl;\n });\n }\n const tmpValue = target.getAttribute(attributeName);\n if (!tmpValue || !value)\n return console.warn(\n `${Name}: Unable to inject value into template`\n );\n setTimeout(() => {\n target.setAttribute(\n attributeName,\n\n tmpValue.replace(`{${propertyName}}`, `${value}`)\n );\n });\n return onCleanup(() => {\n target.setAttribute(attributeName, tmpValue);\n });\n }\n }\n )\n );\n};\n"]}
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"]}