@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
@@ -1,6 +1,6 @@
1
1
  import { createEffect, on, onCleanup } from 'solid-js';
2
2
  import debounce from 'lodash.debounce';
3
- import { provideListenerStatusContext, useAjaxCart, useCartPath, 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,12 +12,11 @@ const Component = (props, { element }) => {
12
12
  return props.status;
13
13
  }
14
14
  });
15
- const cart = useAjaxCart(element);
16
15
  const path = useCartPath({
17
16
  element
18
17
  });
19
18
  const data = useCartValue({
20
- data: cart,
19
+ element,
21
20
  path
22
21
  });
23
22
  createEffect(
@@ -45,7 +44,7 @@ const Component = (props, { element }) => {
45
44
  if (!on2) return console.error(`${Name}: on property is required!`);
46
45
  let resetStatusId = null;
47
46
  function onEvent(e) {
48
- const cart2 = AjaxCart;
47
+ const cart = AjaxCart;
49
48
  if (preventDefault) e.preventDefault();
50
49
  async function handleStatus(promise) {
51
50
  setStatus("loading");
@@ -78,7 +77,7 @@ const Component = (props, { element }) => {
78
77
  );
79
78
  if (method === "replaceItem") {
80
79
  return handleStatus(
81
- cart2.replaceItem({
80
+ cart.replaceItem({
82
81
  key: formObj.key,
83
82
  id: formObj.id
84
83
  })
@@ -86,7 +85,7 @@ const Component = (props, { element }) => {
86
85
  }
87
86
  if (method === "updateItem") {
88
87
  return handleStatus(
89
- cart2.updateItem({
88
+ cart.updateItem({
90
89
  id: formObj.id,
91
90
  quantity: formObj?.quantity || void 0,
92
91
  properties: formObj?.properties || {},
@@ -95,30 +94,30 @@ const Component = (props, { element }) => {
95
94
  ).finally(reset2);
96
95
  }
97
96
  if (method === "removeItem") {
98
- return handleStatus(cart2.removeItem(formObj.key)).finally(reset2);
97
+ return handleStatus(cart.removeItem(formObj.key)).finally(reset2);
99
98
  }
100
99
  if (method === "addDiscount") {
101
- return handleStatus(cart2.addDiscount(formObj.code)).finally(
100
+ return handleStatus(cart.addDiscount(formObj.code)).finally(
102
101
  reset2
103
102
  );
104
103
  }
105
104
  if (method === "removeDiscount") {
106
- return handleStatus(cart2.removeDiscount(formObj.code)).finally(
105
+ return handleStatus(cart.removeDiscount(formObj.code)).finally(
107
106
  reset2
108
107
  );
109
108
  }
110
109
  if (method === "updateNote") {
111
- return handleStatus(cart2.updateNote(formObj.note)).finally(reset2);
110
+ return handleStatus(cart.updateNote(formObj.note)).finally(reset2);
112
111
  }
113
112
  return;
114
113
  }
115
114
  const input = e.target;
116
115
  if (method === "removeItem") {
117
- return handleStatus(cart2.removeItem(data2.key));
116
+ return handleStatus(cart.removeItem(data2.key));
118
117
  }
119
118
  if (method === "updateQuantity") {
120
119
  return handleStatus(
121
- cart2.updateItem({
120
+ cart.updateItem({
122
121
  id: data2.key,
123
122
  quantity: input.valueAsNumber
124
123
  })
@@ -126,14 +125,14 @@ const Component = (props, { element }) => {
126
125
  }
127
126
  if (method === "updateItemVariant") {
128
127
  return handleStatus(
129
- cart2.replaceItem({
128
+ cart.replaceItem({
130
129
  key: data2.key,
131
130
  id: input.value
132
131
  })
133
132
  );
134
133
  }
135
134
  if (method === "updateNote") {
136
- return handleStatus(cart2.updateNote(input.value));
135
+ return handleStatus(cart.updateNote(input.value));
137
136
  }
138
137
  }
139
138
  const handleEvent = debounce(onEvent, debounceDelay), controller = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data-listener.ts"],"names":["on","data","cart","reset"],"mappings":";;;;;;AAyBO,MAAM,IAAO,GAAA;AAEb,MAAM,SAAyD,GAAA,CACpE,KACA,EAAA,EAAE,SACC,KAAA;AACH,EAAA,MAAM,CAAC,CAAA,EAAG,SAAS,CAAA,GAAI,4BAA6B,CAAA;AAAA,IAClD,OAAA;AAAA,IACA,IAAI,MAAS,GAAA;AACX,MAAA,OAAO,KAAM,CAAA,MAAA;AAAA;AACf,GACD,CAAA;AAED,EAAM,MAAA,IAAA,GAAO,YAAY,OAAO,CAAA;AAEhC,EAAA,MAAM,OAAO,WAAY,CAAA;AAAA,IACvB;AAAA,GACD,CAAA;AACD,EAAA,MAAM,OAAO,YAAa,CAAA;AAAA,IACxB,IAAM,EAAA,IAAA;AAAA,IACN;AAAA,GACD,CAAA;AAID,EAAA,YAAA;AAAA,IACE,EAAA;AAAA,MACE,OAAO;AAAA,QACL,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,IAAI,KAAM,CAAA,EAAA;AAAA,QACV,gBAAgB,KAAM,CAAA,cAAA;AAAA,QACtB,MAAM,IAAK,EAAA;AAAA,QACX,eAAe,KAAM,CAAA,aAAA;AAAA,QACrB,WAAW,KAAM,CAAA,SAAA;AAAA,QACjB,kBAAkB,KAAM,CAAA;AAAA,OAC1B,CAAA;AAAA,MACA,CAAC;AAAA,QACC,MAAA;AAAA,QACA,EAAAA,EAAAA,GAAAA;AAAA,QACA,cAAA;AAAA,QACA,IAAAC,EAAAA,KAAAA;AAAA,QACA,aAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACI,KAAA;AACJ,QAAA,IAAI,CAAC,MAAA;AACH,UAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,CAAG,EAAA,IAAI,CAAgC,8BAAA,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACD,GAAI,EAAA,OAAO,QAAQ,KAAM,CAAA,CAAA,EAAG,IAAI,CAA4B,0BAAA,CAAA,CAAA;AAEjE,QAAA,IAAI,aAA+B,GAAA,IAAA;AAGnC,QAAA,SAAS,QAAQ,CAAU,EAAA;AACzB,UAAA,MAAME,KAAO,GAAA,QAAA;AAIb,UAAI,IAAA,cAAA,IAAkB,cAAe,EAAA;AAErC,UAAA,eAAe,aAAgB,OAAqB,EAAA;AAClD,YAAA,SAAA,CAAU,SAAS,CAAA;AACnB,YAAO,OAAA,OAAA,CACJ,IAAK,CAAA,CAACD,KAAS,KAAA;AACd,cAAA,SAAA,CAAU,SAAS,CAAA;AACnB,cAAOA,OAAAA,KAAAA;AAAA,aACR,CAAA,CACA,KAAM,CAAA,CAAC,KAAU,KAAA;AAChB,cAAA,SAAA,CAAU,OAAO,CAAA;AACjB,cAAO,OAAA,KAAA;AAAA,aACR,CACA,CAAA,OAAA,CAAQ,MAAM;AACb,cAAA,IAAI,mBAAmB,CAAG,EAAA;AAExB,gBAAA,aAAA,GAAgB,WAAW,MAAM;AAC/B,kBAAA,SAAA,CAAU,SAAS,CAAA;AACnB,kBAAgB,aAAA,GAAA,IAAA;AAAA,mBACf,gBAAgB,CAAA;AAAA,eACd,MAAA;AACL,gBAAA,SAAA,CAAU,SAAS,CAAA;AAAA;AACrB,aACD,CAAA;AAAA;AAGL,UAAA,IAAID,QAAO,QAAU,EAAA;AAQnB,YAAA,IAASG,SAAT,WAAiB;AACf,cAAI,IAAA,SAAA,OAAgB,KAAM,EAAA;AAAA,aAC5B;AATA,YAAA,MAAM,OAAO,CAAE,CAAA,MAAA;AACf,YAAM,MAAA,QAAA,GAAW,IAAI,QAAA,CAAS,IAAI,CAAA;AAClC,YAAA,MAAM,OAAU,GAAA,iBAAA;AAAA;AAAA,cAEd,MAAO,CAAA,WAAA,CAAY,QAAS,CAAA,OAAA,EAAS;AAAA,aACvC;AAMA,YAAA,IAAI,WAAW,aAAe,EAAA;AAC5B,cAAO,OAAA,YAAA;AAAA,gBACLD,MAAK,WAAY,CAAA;AAAA,kBACf,KAAK,OAAQ,CAAA,GAAA;AAAA,kBACb,IAAI,OAAQ,CAAA;AAAA,iBACb;AAAA,eACH,CAAE,QAAQC,MAAK,CAAA;AAAA;AAGjB,YAAA,IAAI,WAAW,YAAc,EAAA;AAC3B,cAAO,OAAA,YAAA;AAAA,gBACLD,MAAK,UAAW,CAAA;AAAA,kBACd,IAAI,OAAQ,CAAA,EAAA;AAAA,kBACZ,QAAA,EAAU,SAAS,QAAY,IAAA,MAAA;AAAA,kBAC/B,UAAA,EAAY,OAAS,EAAA,UAAA,IAAc,EAAC;AAAA,kBACpC,YAAA,EAAc,SAAS,YAAgB,IAAA;AAAA,iBACxC;AAAA,eACH,CAAE,QAAQC,MAAK,CAAA;AAAA;AAGjB,YAAA,IAAI,WAAW,YAAc,EAAA;AAC3B,cAAO,OAAA,YAAA,CAAaD,MAAK,UAAW,CAAA,OAAA,CAAQ,GAAG,CAAC,CAAA,CAAE,QAAQC,MAAK,CAAA;AAAA;AAGjE,YAAA,IAAI,WAAW,aAAe,EAAA;AAC5B,cAAA,OAAO,aAAaD,KAAK,CAAA,WAAA,CAAY,OAAQ,CAAA,IAAI,CAAC,CAAE,CAAA,OAAA;AAAA,gBAClDC;AAAA,eACF;AAAA;AAGF,YAAA,IAAI,WAAW,gBAAkB,EAAA;AAC/B,cAAA,OAAO,aAAaD,KAAK,CAAA,cAAA,CAAe,OAAQ,CAAA,IAAI,CAAC,CAAE,CAAA,OAAA;AAAA,gBACrDC;AAAA,eACF;AAAA;AAGF,YAAA,IAAI,WAAW,YAAc,EAAA;AAC3B,cAAO,OAAA,YAAA,CAAaD,MAAK,UAAW,CAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAE,QAAQC,MAAK,CAAA;AAAA;AAGlE,YAAA;AAAA;AAGF,UAAA,MAAM,QAAQ,CAAE,CAAA,MAAA;AAEhB,UAAA,IAAI,WAAW,YAAc,EAAA;AAC3B,YAAA,OAAO,YAAaD,CAAAA,KAAAA,CAAK,UAAWD,CAAAA,KAAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAG/C,UAAA,IAAI,WAAW,gBAAkB,EAAA;AAC/B,YAAO,OAAA,YAAA;AAAA,cACLC,MAAK,UAAW,CAAA;AAAA,gBACd,IAAID,KAAK,CAAA,GAAA;AAAA,gBACT,UAAU,KAAM,CAAA;AAAA,eACjB;AAAA,aACH;AAAA;AAGF,UAAA,IAAI,WAAW,mBAAqB,EAAA;AAClC,YAAO,OAAA,YAAA;AAAA,cACLC,MAAK,WAAY,CAAA;AAAA,gBACf,KAAKD,KAAK,CAAA,GAAA;AAAA,gBACV,IAAI,KAAM,CAAA;AAAA,eACX;AAAA,aACH;AAAA;AAGF,UAAA,IAAI,WAAW,YAAc,EAAA;AAC3B,YAAA,OAAO,YAAaC,CAAAA,KAAAA,CAAK,UAAW,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA;AAClD;AAEF,QAAA,MAAM,cAAc,QAAS,CAAA,OAAA,EAAS,aAAa,CACjD,EAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AAEnC,QAAQ,OAAA,CAAA,gBAAA;AAAA,UACNF,GAAAA;AAAA,UACA,CAAC,CAAM,KAAA;AACL,YAAI,IAAA,cAAA,IAAkB,cAAe,EAAA;AACrC,YAAA,WAAA,CAAY,CAAC,CAAA;AAAA,WACf;AAAA,UACA,EAAE,MAAQ,EAAA,UAAA,CAAW,MAAO;AAAA,SAC9B;AAEA,QAAA,OAAO,UAAU,MAAM;AACrB,UAAA,UAAA,CAAW,KAAM,EAAA;AACjB,UAAI,IAAA,aAAA,eAA4B,aAAa,CAAA;AAAA,SAC9C,CAAA;AAAA;AACH;AACF,GACF;AACF","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 useAjaxCart,\n useCartValue,\n useCartPath,\n} from \"../hooks/index.js\";\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { parseNestedObject } from \"../utils/index.js\";\n\ntype CartDataListenerProps = {\n status: Status;\n on: string;\n method: string;\n debounceDelay: number;\n resetForm: boolean;\n resetStatusDelay: number;\n preventDefault: boolean;\n};\n\nexport const Name = \"cart-data-listener\";\n\nexport const Component: CorrectComponentType<CartDataListenerProps> = (\n props,\n { element }\n) => {\n const [_, setStatus] = provideListenerStatusContext({\n element,\n get status() {\n return props.status;\n },\n });\n\n const cart = useAjaxCart(element);\n\n const path = useCartPath({\n element,\n });\n const data = useCartValue({\n data: cart,\n path,\n });\n\n // let currentEventId: string | null = null;\n\n createEffect(\n on(\n () => ({\n method: props.method,\n on: props.on,\n preventDefault: props.preventDefault,\n data: data() as any,\n debounceDelay: props.debounceDelay,\n resetForm: props.resetForm,\n resetStatusDelay: props.resetStatusDelay,\n }),\n ({\n method,\n on,\n preventDefault,\n data,\n debounceDelay,\n resetForm,\n resetStatusDelay,\n }) => {\n if (!method)\n return console.error(`${Name}: method property is required!`);\n if (!on) return console.error(`${Name}: on property is required!`);\n\n let resetStatusId: number | null = null;\n // tempEventId: string | null = null;\n\n function onEvent(e: Event) {\n const cart = AjaxCart;\n\n // (currentEventId = createUniqueId()), (tempEventId = currentEventId);\n\n if (preventDefault) e.preventDefault();\n\n async function handleStatus<T>(promise: Promise<T>) {\n setStatus(\"loading\");\n return promise\n .then((data) => {\n setStatus(\"success\");\n return data;\n })\n .catch((error) => {\n setStatus(\"error\");\n return error;\n })\n .finally(() => {\n if (resetStatusDelay > 0) {\n //@ts-ignore\n resetStatusId = setTimeout(() => {\n setStatus(\"default\");\n resetStatusId = null;\n }, resetStatusDelay);\n } else {\n setStatus(\"default\");\n }\n });\n }\n\n if (on === \"submit\") {\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n const formObj = parseNestedObject(\n //@ts-ignore\n Object.fromEntries(formData.entries())\n );\n\n function reset() {\n if (resetForm) form.reset();\n }\n\n if (method === \"replaceItem\") {\n return handleStatus(\n cart.replaceItem({\n key: formObj.key,\n id: formObj.id,\n })\n ).finally(reset);\n }\n\n if (method === \"updateItem\") {\n return handleStatus(\n cart.updateItem({\n id: formObj.id,\n quantity: formObj?.quantity || undefined,\n properties: formObj?.properties || {},\n selling_plan: formObj?.selling_plan || undefined,\n })\n ).finally(reset);\n }\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(formObj.key)).finally(reset);\n }\n\n if (method === \"addDiscount\") {\n return handleStatus(cart.addDiscount(formObj.code)).finally(\n reset\n );\n }\n\n if (method === \"removeDiscount\") {\n return handleStatus(cart.removeDiscount(formObj.code)).finally(\n reset\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(formObj.note)).finally(reset);\n }\n\n return;\n }\n\n const input = e.target as HTMLInputElement;\n\n if (method === \"removeItem\") {\n return handleStatus(cart.removeItem(data.key));\n }\n\n if (method === \"updateQuantity\") {\n return handleStatus(\n cart.updateItem({\n id: data.key,\n quantity: input.valueAsNumber,\n })\n );\n }\n\n if (method === \"updateItemVariant\") {\n return handleStatus(\n cart.replaceItem({\n key: data.key,\n id: input.value,\n })\n );\n }\n\n if (method === \"updateNote\") {\n return handleStatus(cart.updateNote(input.value));\n }\n }\n const handleEvent = debounce(onEvent, debounceDelay),\n controller = new AbortController();\n\n element.addEventListener(\n on,\n (e) => {\n if (preventDefault) e.preventDefault();\n handleEvent(e);\n },\n { signal: controller.signal }\n );\n\n return onCleanup(() => {\n controller.abort();\n if (resetStatusId) clearTimeout(resetStatusId);\n });\n }\n )\n );\n};\n"]}
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,19 +1,17 @@
1
1
  import '../utils/index.js';
2
2
  import { Show } from 'solid-js';
3
- import { useAjaxCart, useCartPath, useCartFormattedValue } 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 data = useAjaxCart(element);
11
10
  const fullPath = useCartPath({
12
11
  element,
13
12
  path: () => props.propertyName
14
13
  });
15
14
  const formattedValue = useCartFormattedValue({
16
- data,
17
15
  get format() {
18
16
  return props.format;
19
17
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/cart-data.ts"],"names":[],"mappings":";;;;;AAkBO,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,EAAM,MAAA,IAAA,GAAO,YAAY,OAAO,CAAA;AAChC,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,IAAA;AAAA,IACA,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 useAjaxCart,\n} from \"../hooks/index.js\";\nimport html from \"solid-js/html\";\n\ntype CartDataProps = {\n propertyName: CartPath;\n format?: Format;\n};\n\nexport const Name = \"cart-data\";\n\nexport const Component: CorrectComponentType<CartDataProps> = (\n props,\n { element }\n) => {\n if (!props.propertyName)\n return console.warn(`${Name}: No property-name attribute provided.`);\n const data = useAjaxCart(element);\n const fullPath = useCartPath({\n element,\n path: () => props.propertyName,\n });\n const formattedValue = useCartFormattedValue({\n data,\n get format() {\n return props.format;\n },\n path: fullPath,\n element,\n });\n\n return html`\n <${Show} when=${() => formattedValue() !== null}> ${formattedValue} <//>\n `;\n};\n"]}
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,11 +1,27 @@
1
1
  import { makeFullPropertyPathContext } from '@brytdesigns/web-component-core';
2
+ import { useAjaxCart } from './useAjaxCart.js';
2
3
  export * from './useAjaxCart.js';
3
4
  export * from './useListenerStatus.js';
4
5
 
5
6
  const hooks = makeFullPropertyPathContext();
6
- const useCartValue = hooks.usePathValue;
7
+ const useCartValue = (options) => {
8
+ const data = useAjaxCart(options.element);
9
+ return hooks.usePathValue({
10
+ ...options,
11
+ data
12
+ });
13
+ };
7
14
  const useCartPath = hooks.usePath;
8
- const useCartFormattedValue = hooks.useFormattedValue;
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
+ };
9
25
  const provideCartPathContext = hooks.provide;
10
26
 
11
27
  export { provideCartPathContext, useCartFormattedValue, useCartPath, useCartValue };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;AAOA,MAAM,QAAQ,2BAAsC,EAAA;AAI7C,MAAM,eAAe,KAAM,CAAA;AAC3B,MAAM,cAAc,KAAM,CAAA;AAC1B,MAAM,wBAAwB,KAAM,CAAA;AACpC,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\";\n\nconst hooks = makeFullPropertyPathContext<CartData>();\n\nexport type CartPath = Path<CartData>;\nexport type CartPathValue<Path extends CartPath> = PathValue<CartData, Path>;\nexport const useCartValue = hooks.usePathValue;\nexport const useCartPath = hooks.usePath;\nexport const useCartFormattedValue = hooks.useFormattedValue;\nexport const provideCartPathContext = hooks.provide;\n\nexport * from \"./useAjaxCart.js\";\nexport * from \"./useListenerStatus.js\";\n"]}
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"]}