@brytdesigns/shopify-ajax-cart-components 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jsdelivr/components/cart-context.js +22 -0
- package/dist/jsdelivr/components/cart-context.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-array-item.js +19 -0
- package/dist/jsdelivr/components/cart-data-array-item.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-array.js +58 -0
- package/dist/jsdelivr/components/cart-data-array.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-conditions.js +97 -0
- package/dist/jsdelivr/components/cart-data-conditions.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-injection.js +89 -0
- package/dist/jsdelivr/components/cart-data-injection.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-listener-status.js +35 -0
- package/dist/jsdelivr/components/cart-data-listener-status.js.map +1 -0
- package/dist/jsdelivr/components/cart-data-listener.js +163 -0
- package/dist/jsdelivr/components/cart-data-listener.js.map +1 -0
- package/dist/jsdelivr/components/cart-data.js +29 -0
- package/dist/jsdelivr/components/cart-data.js.map +1 -0
- package/dist/jsdelivr/components/cart-loading-state.js +39 -0
- package/dist/jsdelivr/components/cart-loading-state.js.map +1 -0
- package/dist/jsdelivr/components/index.js +11 -0
- package/dist/jsdelivr/components/index.js.map +1 -0
- package/dist/jsdelivr/hooks/index.js +7 -0
- package/dist/jsdelivr/hooks/index.js.map +1 -0
- package/dist/jsdelivr/hooks/useCartValue.js +23 -0
- package/dist/jsdelivr/hooks/useCartValue.js.map +1 -0
- package/dist/jsdelivr/hooks/useFormattedValue.js +27 -0
- package/dist/jsdelivr/hooks/useFormattedValue.js.map +1 -0
- package/dist/jsdelivr/hooks/useFullPropertyPath.js +35 -0
- package/dist/jsdelivr/hooks/useFullPropertyPath.js.map +1 -0
- package/dist/jsdelivr/hooks/useHybridCart.js +23 -0
- package/dist/jsdelivr/hooks/useHybridCart.js.map +1 -0
- package/dist/jsdelivr/hooks/useListenerStatus.js +33 -0
- package/dist/jsdelivr/hooks/useListenerStatus.js.map +1 -0
- package/dist/jsdelivr/index.js +72 -0
- package/dist/jsdelivr/index.js.map +1 -0
- package/dist/jsdelivr/utils/formatValue.js +22 -0
- package/dist/jsdelivr/utils/formatValue.js.map +1 -0
- package/dist/jsdelivr/utils/getTargetElement.js +13 -0
- package/dist/jsdelivr/utils/getTargetElement.js.map +1 -0
- package/dist/jsdelivr/utils/getTemplateContent.js +11 -0
- package/dist/jsdelivr/utils/getTemplateContent.js.map +1 -0
- package/dist/jsdelivr/utils/getValueFromPath.js +14 -0
- package/dist/jsdelivr/utils/getValueFromPath.js.map +1 -0
- package/dist/jsdelivr/utils/index.js +7 -0
- package/dist/jsdelivr/utils/index.js.map +1 -0
- package/dist/jsdelivr/utils/parseNestedObject.js +32 -0
- package/dist/jsdelivr/utils/parseNestedObject.js.map +1 -0
- package/dist/main/components/cart-context.js +22 -0
- package/dist/main/components/cart-context.js.map +1 -0
- package/dist/main/components/cart-data-array-item.js +19 -0
- package/dist/main/components/cart-data-array-item.js.map +1 -0
- package/dist/main/components/cart-data-array.js +59 -0
- package/dist/main/components/cart-data-array.js.map +1 -0
- package/dist/main/components/cart-data-conditions.js +98 -0
- package/dist/main/components/cart-data-conditions.js.map +1 -0
- package/dist/main/components/cart-data-injection.js +89 -0
- package/dist/main/components/cart-data-injection.js.map +1 -0
- package/dist/main/components/cart-data-listener-status.js +36 -0
- package/dist/main/components/cart-data-listener-status.js.map +1 -0
- package/dist/main/components/cart-data-listener.js +163 -0
- package/dist/main/components/cart-data-listener.js.map +1 -0
- package/dist/main/components/cart-data.js +29 -0
- package/dist/main/components/cart-data.js.map +1 -0
- package/dist/main/components/cart-loading-state.js +39 -0
- package/dist/main/components/cart-loading-state.js.map +1 -0
- package/dist/main/components/index.js +11 -0
- package/dist/main/components/index.js.map +1 -0
- package/dist/main/hooks/index.js +7 -0
- package/dist/main/hooks/index.js.map +1 -0
- package/dist/main/hooks/useAjaxCart.js +23 -0
- package/dist/main/hooks/useAjaxCart.js.map +1 -0
- package/dist/main/hooks/useCartValue.js +23 -0
- package/dist/main/hooks/useCartValue.js.map +1 -0
- package/dist/main/hooks/useFormattedValue.js +27 -0
- package/dist/main/hooks/useFormattedValue.js.map +1 -0
- package/dist/main/hooks/useFullPropertyPath.js +35 -0
- package/dist/main/hooks/useFullPropertyPath.js.map +1 -0
- package/dist/main/hooks/useListenerStatus.js +33 -0
- package/dist/main/hooks/useListenerStatus.js.map +1 -0
- package/dist/main/index.d.ts +14996 -0
- package/dist/main/index.js +72 -0
- package/dist/main/index.js.map +1 -0
- package/dist/main/utils/formatValue.js +22 -0
- package/dist/main/utils/formatValue.js.map +1 -0
- package/dist/main/utils/getTargetElement.js +13 -0
- package/dist/main/utils/getTargetElement.js.map +1 -0
- package/dist/main/utils/getTemplateContent.js +11 -0
- package/dist/main/utils/getTemplateContent.js.map +1 -0
- package/dist/main/utils/getValueFromPath.js +14 -0
- package/dist/main/utils/getValueFromPath.js.map +1 -0
- package/dist/main/utils/index.js +7 -0
- package/dist/main/utils/index.js.map +1 -0
- package/dist/main/utils/parseNestedObject.js +32 -0
- package/dist/main/utils/parseNestedObject.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createMemo } from 'solid-js';
|
|
2
|
+
import 'component-register';
|
|
3
|
+
import './useFullPropertyPath.js';
|
|
4
|
+
import { formatValue } from '../utils/index.js';
|
|
5
|
+
import { useCartValue } from './useCartValue.js';
|
|
6
|
+
|
|
7
|
+
function useFormattedValue(options) {
|
|
8
|
+
const value = useCartValue({ path: options.path, element: options.element });
|
|
9
|
+
const formattedValue = createMemo(() => {
|
|
10
|
+
const v = value();
|
|
11
|
+
if (v === null) return null;
|
|
12
|
+
if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") {
|
|
13
|
+
return formatValue(options.format || "", v);
|
|
14
|
+
}
|
|
15
|
+
console.warn(
|
|
16
|
+
options.element,
|
|
17
|
+
`useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,
|
|
18
|
+
v
|
|
19
|
+
);
|
|
20
|
+
return null;
|
|
21
|
+
});
|
|
22
|
+
return formattedValue;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { useFormattedValue };
|
|
26
|
+
//# sourceMappingURL=useFormattedValue.js.map
|
|
27
|
+
//# sourceMappingURL=useFormattedValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useFormattedValue.ts"],"names":[],"mappings":";;;;;;AAaO,SAAS,kBAAkB,OAAkB,EAAA;AAClD,EAAM,MAAA,KAAA,GAAQ,aAAa,EAAE,IAAA,EAAM,QAAQ,IAAM,EAAA,OAAA,EAAS,OAAQ,CAAA,OAAA,EAAS,CAAA;AAE3E,EAAM,MAAA,cAAA,GAAiB,WAAW,MAAM;AACtC,IAAA,MAAM,IAAI,KAAM,EAAA;AAChB,IAAI,IAAA,CAAA,KAAM,MAAa,OAAA,IAAA;AACvB,IACE,IAAA,OAAO,MAAM,QACb,IAAA,OAAO,MAAM,QACb,IAAA,OAAO,MAAM,SACb,EAAA;AACA,MAAA,OAAO,WAAY,CAAA,OAAA,CAAQ,MAAU,IAAA,EAAA,EAAI,CAAC,CAAA;AAAA;AAE5C,IAAQ,OAAA,CAAA,IAAA;AAAA,MACN,OAAQ,CAAA,OAAA;AAAA,MACR,CAAA,0FAAA,EAA6F,OAAO,CAAC,CAAA,CAAA,CAAA;AAAA,MACrG;AAAA,KACF;AACA,IAAO,OAAA,IAAA;AAAA,GACR,CAAA;AAED,EAAO,OAAA,cAAA;AACT","file":"useFormattedValue.js","sourcesContent":["import { type Accessor, createMemo } from \"solid-js\";\nimport { type ICustomElement } from \"component-register\";\n\nimport { type ValidAjaxPath } from \"./useFullPropertyPath.js\";\nimport { formatValue, type Format } from \"../utils/index.js\";\nimport { useCartValue } from \"./useCartValue.js\";\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n format?: Format;\n element: HTMLElement & ICustomElement;\n};\n\nexport function useFormattedValue(options: Options) {\n const value = useCartValue({ path: options.path, element: options.element });\n\n const formattedValue = createMemo(() => {\n const v = value();\n if (v === null) return null;\n if (\n typeof v === \"string\" ||\n typeof v === \"number\" ||\n typeof v === \"boolean\"\n ) {\n return formatValue(options.format || \"\", v);\n }\n console.warn(\n options.element,\n `useFormattedValue: Unsupported value type. Expected string, number, or boolean. Received: ${typeof v}.`,\n v,\n );\n return null;\n });\n\n return formattedValue;\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import '@brytdesigns/shopify-ajax-cart';
|
|
2
|
+
import { createMemo } from 'solid-js';
|
|
3
|
+
import { createContext, provide, consume } from 'component-register';
|
|
4
|
+
|
|
5
|
+
function createFullPathPropertyContext(options) {
|
|
6
|
+
return options.path;
|
|
7
|
+
}
|
|
8
|
+
const FullPropertyPathContext = createContext(createFullPathPropertyContext);
|
|
9
|
+
function provideFullPropertyPathContext({
|
|
10
|
+
element,
|
|
11
|
+
path
|
|
12
|
+
}) {
|
|
13
|
+
return provide(FullPropertyPathContext, { path }, element);
|
|
14
|
+
}
|
|
15
|
+
function useFullPropertyPathContext(context) {
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
function useFullPropertyPath(props) {
|
|
19
|
+
const context = consume(FullPropertyPathContext, props.element);
|
|
20
|
+
const basePath = useFullPropertyPathContext(context);
|
|
21
|
+
return createMemo(() => {
|
|
22
|
+
if (typeof basePath !== "function" && typeof props.path === "function") {
|
|
23
|
+
return props.path();
|
|
24
|
+
} else if (typeof basePath === "function" && typeof props.path !== "function") {
|
|
25
|
+
return basePath();
|
|
26
|
+
} else if (typeof basePath === "function" && typeof props.path === "function") {
|
|
27
|
+
return `${basePath()}.${props.path()}`;
|
|
28
|
+
}
|
|
29
|
+
return "";
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { provideFullPropertyPathContext, useFullPropertyPath, useFullPropertyPathContext };
|
|
34
|
+
//# sourceMappingURL=useFullPropertyPath.js.map
|
|
35
|
+
//# sourceMappingURL=useFullPropertyPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useFullPropertyPath.ts"],"names":[],"mappings":";;;;AA0BA,SAAS,8BACP,OACyB,EAAA;AACzB,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 \"../utils\";\n\nimport AjaxCart from \"@brytdesigns/shopify-ajax-cart\";\nimport { createMemo, type Accessor } from \"solid-js\";\nimport {\n createContext,\n consume,\n provide,\n type ICustomElement,\n} from \"component-register\";\n\ntype AjaxCartData = (typeof AjaxCart)[\"data\"];\n\nexport type ValidAjaxPath = Path<AjaxCartData>;\n\ntype WalkableNode = Parameters<typeof provide>[2];\n\ntype FullPropertyPathContextType = ReturnType<\n typeof createFullPathPropertyContext\n>;\n\ntype Options = {\n path: Accessor<ValidAjaxPath>;\n element: HTMLElement & ICustomElement;\n};\n\nfunction createFullPathPropertyContext(\n options: Options,\n): Accessor<ValidAjaxPath> {\n return options.path;\n}\n\nconst FullPropertyPathContext = createContext(createFullPathPropertyContext);\n\nexport function provideFullPropertyPathContext({\n element,\n path,\n}: {\n element: WalkableNode;\n path: Accessor<ValidAjaxPath>;\n}): FullPropertyPathContextType {\n return provide(FullPropertyPathContext, { path }, element);\n}\n\nexport function useFullPropertyPathContext(\n context: FullPropertyPathContextType,\n) {\n return context;\n}\n\nexport function useFullPropertyPath(props: {\n element: HTMLElement & ICustomElement;\n path?: Accessor<ValidAjaxPath>;\n}) {\n const context = consume(FullPropertyPathContext, props.element);\n const basePath = useFullPropertyPathContext(context);\n return createMemo(() => {\n if (typeof basePath !== \"function\" && typeof props.path === \"function\") {\n return props.path();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path !== \"function\"\n ) {\n return basePath();\n } else if (\n typeof basePath === \"function\" &&\n typeof props.path === \"function\"\n ) {\n return `${basePath()}.${props.path()}` as ValidAjaxPath;\n }\n return \"\" as ValidAjaxPath;\n });\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createContext, provide, consume } from 'component-register';
|
|
2
|
+
import { splitProps } from 'solid-js';
|
|
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
|
+
"CartListenerContext 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 \"component-register\";\nimport { splitProps } from \"solid-js\";\n\ntype WalkableNode = Parameters<typeof provide>[2];\nexport type Status = \"default\" | \"loading\" | \"success\" | \"error\";\n\ntype ListenerStatusContextType = ReturnType<typeof createListenerStatusContext>;\n\ntype Options = {\n element: HTMLElement & ICustomElement;\n status: Status;\n};\n\nfunction createListenerStatusContext(options: Options) {\n const [privateProps, publicProps] = splitProps(options, [\"element\"]);\n\n function setStatus(status: Status) {\n const currentStatus = privateProps.element.getAttribute(\"status\");\n if (currentStatus === status) return;\n privateProps.element.setAttribute(\"status\", status);\n return status;\n }\n\n return [() => publicProps.status, setStatus] as const;\n}\n\nconst ListenerStatusContext = createContext(createListenerStatusContext);\n\nexport const provideListenerStatusContext = (options: {\n element: WalkableNode;\n status: Status;\n}): ListenerStatusContextType => {\n return provide(ListenerStatusContext, options, options.element);\n};\n\nexport const useListenerStatusContext = (\n context: ListenerStatusContextType\n) => {\n return context;\n};\n\nexport const useListenerStatus = (element: HTMLElement & ICustomElement) => {\n const context = consume(ListenerStatusContext, element);\n\n if (!context) {\n throw console.error(\n \"CartListenerContext not found! Please ensure to wrap your custom element with cart-data-listener element.\"\n );\n }\n\n return useListenerStatusContext(context);\n};\n"]}
|