@sentecacommerce-theme/lib 0.12.66 → 0.12.67

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.
@@ -9,6 +9,10 @@ var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
+ var _sdk = require("@sentecacommerce/sdk");
13
+
14
+ exports.OfferDTOStatusEnum = _sdk.OfferDTOStatusEnum;
15
+
12
16
  var _utils = require("../../utils");
13
17
 
14
18
  var _usePrefetchProduct2 = require("../usePrefetchProduct");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["useLineItem","props","slug","onMouseEnter","onMouseLeave","onMouseDown","data","React","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","categories","category","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","maxQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n SearchResultDTO,\n ImageDTO,\n MoneyDTO,\n ReviewRatingStatisticsDTO,\n OfferDTO,\n ProductVariantLabelDTO,\n} from '@sentecacommerce/sdk'\n\nimport { getTranslatableField } from '../../utils'\nimport { usePrefetchProduct } from '../usePrefetchProduct'\n\nexport interface BaseProductType {\n name: string\n slug: string\n variantId: string\n offerId?: string\n offer?: OfferDTO\n collapseKey?: string\n sku: string\n images?: ImageDTO[]\n inventory: {\n hasAvailableQuantity: boolean\n availableQuantity: number\n maxQuantity?: number\n }\n onMouseEnter: (callback: () => void) => void\n onMouseLeave: () => void\n onMouseDown: (callback: () => void) => void\n}\n\nexport interface AttributeType {\n _id: string\n label: string\n extra?: any\n}\n\nexport interface AttributesType {\n count: number\n elements: AttributeType[]\n}\n\ninterface LineItemType extends BaseProductType {\n name: string\n brand?: {\n name: string\n slug: string\n }\n _id: string\n labels?: string[]\n price?: MoneyDTO\n discountedPrice?: MoneyDTO\n variantOptions: number\n variantsCount: number\n categories: {\n name: string\n slug: string\n }[]\n ratings: ReviewRatingStatisticsDTO\n getAttributeByKey: (key: string) => AttributesType\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useLineItem = (props: SearchResultDTO) => {\n const { onMouseEnter, onMouseLeave, onMouseDown } = usePrefetchProduct(\n getTranslatableField(props?.slug)\n )\n\n const data: LineItemType = React.useMemo(() => {\n const mappedAttributes = Object.keys(props?.attributes)?.reduce(\n (map, key) => {\n const current = props?.attributes[key]\n map[key] = {\n count: current?.length ?? 0,\n elements: current?.map((attribute: any) => {\n return {\n _id: attribute?.value,\n label: getTranslatableField(attribute?.label),\n extra: attribute?.extra,\n }\n }),\n }\n return map\n },\n {}\n )\n\n const customFields = props?.custom?.reduce(\n (map: { [key: string]: any }, current) => {\n if (Boolean(current.value) && current.value !== '0') {\n return { ...map, [current.field]: current.value }\n }\n return map\n },\n {}\n )\n\n return {\n _id: props?._id,\n name: getTranslatableField(props?.name),\n brand: {\n name: getTranslatableField(props?.brands?.[0]?.name),\n slug: getTranslatableField(props?.brands?.[0]?.slug),\n },\n slug: getTranslatableField(props?.slug),\n collapseKey: props?.collapseKey,\n variantId: props?.variantId,\n offerId: props?.offer?._id,\n offer: props?.offer,\n sku: props?.sku,\n images: props?.images || {},\n ratings: props?.reviewRatingStatistics,\n price: props?.offer?.originalPrice,\n discountedPrice: props?.offer?.discountedPrice,\n variantOptions: props?.variantOptions ?? 0,\n variantsCount: props?.variantsCount ?? 0,\n categories: props?.categories.map((category) => ({\n name: getTranslatableField(category.name),\n slug: getTranslatableField(category.slug),\n })),\n inventory: {\n hasAvailableQuantity: props?.inventorySnapshot?.canOrder ? true : false,\n availableQuantity: props?.inventorySnapshot?.canOrder\n ? props?.inventorySnapshot?.availableQuantity ?? 0\n : 0,\n maxQuantity: props?.offer?.maxQuantity,\n },\n labels: mapLabelData(props?.labels),\n getCustomFieldByKey: (key: string) => customFields?.[key],\n getAttributeByKey: (key: string) => mappedAttributes?.[key],\n onMouseEnter: (callback) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback) => () => onMouseDown(callback),\n }\n }, [props])\n\n return data\n}\n\nconst mapLabelData = (data?: ProductVariantLabelDTO[]) => {\n // Filter only labels that are currently active\n const now = new Date().getTime()\n const currentLabels = data?.filter((el) => {\n if (!el.validFrom || !el.validTo) {\n return el\n } else {\n return el.validFrom < now && el.validTo > now\n }\n })\n\n return currentLabels?.map((el) => el.key)\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["useLineItem","props","slug","onMouseEnter","onMouseLeave","onMouseDown","data","React","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","categories","category","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","maxQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n SearchResultDTO,\n ImageDTO,\n MoneyDTO,\n ReviewRatingStatisticsDTO,\n OfferDTO,\n OfferDTOStatusEnum,\n ProductVariantLabelDTO,\n} from '@sentecacommerce/sdk'\n\nimport { getTranslatableField } from '../../utils'\nimport { usePrefetchProduct } from '../usePrefetchProduct'\n\nexport { OfferDTOStatusEnum }\n\nexport interface BaseProductType {\n name: string\n slug: string\n variantId: string\n offerId?: string\n offer?: OfferDTO\n collapseKey?: string\n sku: string\n images?: ImageDTO[]\n inventory: {\n hasAvailableQuantity: boolean\n availableQuantity: number\n maxQuantity?: number\n }\n onMouseEnter: (callback: () => void) => void\n onMouseLeave: () => void\n onMouseDown: (callback: () => void) => void\n}\n\nexport interface AttributeType {\n _id: string\n label: string\n extra?: any\n}\n\nexport interface AttributesType {\n count: number\n elements: AttributeType[]\n}\n\ninterface LineItemType extends BaseProductType {\n name: string\n brand?: {\n name: string\n slug: string\n }\n _id: string\n labels?: string[]\n price?: MoneyDTO\n discountedPrice?: MoneyDTO\n variantOptions: number\n variantsCount: number\n categories: {\n name: string\n slug: string\n }[]\n ratings: ReviewRatingStatisticsDTO\n getAttributeByKey: (key: string) => AttributesType\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useLineItem = (props: SearchResultDTO) => {\n const { onMouseEnter, onMouseLeave, onMouseDown } = usePrefetchProduct(\n getTranslatableField(props?.slug)\n )\n\n const data: LineItemType = React.useMemo(() => {\n const mappedAttributes = Object.keys(props?.attributes)?.reduce(\n (map, key) => {\n const current = props?.attributes[key]\n map[key] = {\n count: current?.length ?? 0,\n elements: current?.map((attribute: any) => {\n return {\n _id: attribute?.value,\n label: getTranslatableField(attribute?.label),\n extra: attribute?.extra,\n }\n }),\n }\n return map\n },\n {}\n )\n\n const customFields = props?.custom?.reduce(\n (map: { [key: string]: any }, current) => {\n if (Boolean(current.value) && current.value !== '0') {\n return { ...map, [current.field]: current.value }\n }\n return map\n },\n {}\n )\n\n return {\n _id: props?._id,\n name: getTranslatableField(props?.name),\n brand: {\n name: getTranslatableField(props?.brands?.[0]?.name),\n slug: getTranslatableField(props?.brands?.[0]?.slug),\n },\n slug: getTranslatableField(props?.slug),\n collapseKey: props?.collapseKey,\n variantId: props?.variantId,\n offerId: props?.offer?._id,\n offer: props?.offer,\n sku: props?.sku,\n images: props?.images || {},\n ratings: props?.reviewRatingStatistics,\n price: props?.offer?.originalPrice,\n discountedPrice: props?.offer?.discountedPrice,\n variantOptions: props?.variantOptions ?? 0,\n variantsCount: props?.variantsCount ?? 0,\n categories: props?.categories.map((category) => ({\n name: getTranslatableField(category.name),\n slug: getTranslatableField(category.slug),\n })),\n inventory: {\n hasAvailableQuantity: props?.inventorySnapshot?.canOrder ? true : false,\n availableQuantity: props?.inventorySnapshot?.canOrder\n ? props?.inventorySnapshot?.availableQuantity ?? 0\n : 0,\n maxQuantity: props?.offer?.maxQuantity,\n },\n labels: mapLabelData(props?.labels),\n getCustomFieldByKey: (key: string) => customFields?.[key],\n getAttributeByKey: (key: string) => mappedAttributes?.[key],\n onMouseEnter: (callback) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback) => () => onMouseDown(callback),\n }\n }, [props])\n\n return data\n}\n\nconst mapLabelData = (data?: ProductVariantLabelDTO[]) => {\n // Filter only labels that are currently active\n const now = new Date().getTime()\n const currentLabels = data?.filter((el) => {\n if (!el.validFrom || !el.validTo) {\n return el\n } else {\n return el.validFrom < now && el.validTo > now\n }\n })\n\n return currentLabels?.map((el) => el.key)\n}\n"],"file":"index.js"}
@@ -1,7 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
+ import { OfferDTOStatusEnum } from '@sentecacommerce/sdk';
3
4
  import { getTranslatableField } from '../../utils';
4
5
  import { usePrefetchProduct } from '../usePrefetchProduct';
6
+ export { OfferDTOStatusEnum };
5
7
  export var useLineItem = props => {
6
8
  var {
7
9
  onMouseEnter: _onMouseEnter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["React","getTranslatableField","usePrefetchProduct","useLineItem","props","onMouseEnter","onMouseLeave","onMouseDown","slug","data","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","categories","category","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","maxQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n SearchResultDTO,\n ImageDTO,\n MoneyDTO,\n ReviewRatingStatisticsDTO,\n OfferDTO,\n ProductVariantLabelDTO,\n} from '@sentecacommerce/sdk'\n\nimport { getTranslatableField } from '../../utils'\nimport { usePrefetchProduct } from '../usePrefetchProduct'\n\nexport interface BaseProductType {\n name: string\n slug: string\n variantId: string\n offerId?: string\n offer?: OfferDTO\n collapseKey?: string\n sku: string\n images?: ImageDTO[]\n inventory: {\n hasAvailableQuantity: boolean\n availableQuantity: number\n maxQuantity?: number\n }\n onMouseEnter: (callback: () => void) => void\n onMouseLeave: () => void\n onMouseDown: (callback: () => void) => void\n}\n\nexport interface AttributeType {\n _id: string\n label: string\n extra?: any\n}\n\nexport interface AttributesType {\n count: number\n elements: AttributeType[]\n}\n\ninterface LineItemType extends BaseProductType {\n name: string\n brand?: {\n name: string\n slug: string\n }\n _id: string\n labels?: string[]\n price?: MoneyDTO\n discountedPrice?: MoneyDTO\n variantOptions: number\n variantsCount: number\n categories: {\n name: string\n slug: string\n }[]\n ratings: ReviewRatingStatisticsDTO\n getAttributeByKey: (key: string) => AttributesType\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useLineItem = (props: SearchResultDTO) => {\n const { onMouseEnter, onMouseLeave, onMouseDown } = usePrefetchProduct(\n getTranslatableField(props?.slug)\n )\n\n const data: LineItemType = React.useMemo(() => {\n const mappedAttributes = Object.keys(props?.attributes)?.reduce(\n (map, key) => {\n const current = props?.attributes[key]\n map[key] = {\n count: current?.length ?? 0,\n elements: current?.map((attribute: any) => {\n return {\n _id: attribute?.value,\n label: getTranslatableField(attribute?.label),\n extra: attribute?.extra,\n }\n }),\n }\n return map\n },\n {}\n )\n\n const customFields = props?.custom?.reduce(\n (map: { [key: string]: any }, current) => {\n if (Boolean(current.value) && current.value !== '0') {\n return { ...map, [current.field]: current.value }\n }\n return map\n },\n {}\n )\n\n return {\n _id: props?._id,\n name: getTranslatableField(props?.name),\n brand: {\n name: getTranslatableField(props?.brands?.[0]?.name),\n slug: getTranslatableField(props?.brands?.[0]?.slug),\n },\n slug: getTranslatableField(props?.slug),\n collapseKey: props?.collapseKey,\n variantId: props?.variantId,\n offerId: props?.offer?._id,\n offer: props?.offer,\n sku: props?.sku,\n images: props?.images || {},\n ratings: props?.reviewRatingStatistics,\n price: props?.offer?.originalPrice,\n discountedPrice: props?.offer?.discountedPrice,\n variantOptions: props?.variantOptions ?? 0,\n variantsCount: props?.variantsCount ?? 0,\n categories: props?.categories.map((category) => ({\n name: getTranslatableField(category.name),\n slug: getTranslatableField(category.slug),\n })),\n inventory: {\n hasAvailableQuantity: props?.inventorySnapshot?.canOrder ? true : false,\n availableQuantity: props?.inventorySnapshot?.canOrder\n ? props?.inventorySnapshot?.availableQuantity ?? 0\n : 0,\n maxQuantity: props?.offer?.maxQuantity,\n },\n labels: mapLabelData(props?.labels),\n getCustomFieldByKey: (key: string) => customFields?.[key],\n getAttributeByKey: (key: string) => mappedAttributes?.[key],\n onMouseEnter: (callback) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback) => () => onMouseDown(callback),\n }\n }, [props])\n\n return data\n}\n\nconst mapLabelData = (data?: ProductVariantLabelDTO[]) => {\n // Filter only labels that are currently active\n const now = new Date().getTime()\n const currentLabels = data?.filter((el) => {\n if (!el.validFrom || !el.validTo) {\n return el\n } else {\n return el.validFrom < now && el.validTo > now\n }\n })\n\n return currentLabels?.map((el) => el.key)\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/hooks/useLineItem/index.tsx"],"names":["React","OfferDTOStatusEnum","getTranslatableField","usePrefetchProduct","useLineItem","props","onMouseEnter","onMouseLeave","onMouseDown","slug","data","useMemo","mappedAttributes","Object","keys","attributes","reduce","map","key","current","count","length","elements","attribute","_id","value","label","extra","customFields","custom","Boolean","field","name","brand","brands","collapseKey","variantId","offerId","offer","sku","images","ratings","reviewRatingStatistics","price","originalPrice","discountedPrice","variantOptions","variantsCount","categories","category","inventory","hasAvailableQuantity","inventorySnapshot","canOrder","availableQuantity","maxQuantity","labels","mapLabelData","getCustomFieldByKey","getAttributeByKey","callback","now","Date","getTime","currentLabels","filter","el","validFrom","validTo"],"mappings":"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","sourcesContent":["import React from 'react'\nimport {\n SearchResultDTO,\n ImageDTO,\n MoneyDTO,\n ReviewRatingStatisticsDTO,\n OfferDTO,\n OfferDTOStatusEnum,\n ProductVariantLabelDTO,\n} from '@sentecacommerce/sdk'\n\nimport { getTranslatableField } from '../../utils'\nimport { usePrefetchProduct } from '../usePrefetchProduct'\n\nexport { OfferDTOStatusEnum }\n\nexport interface BaseProductType {\n name: string\n slug: string\n variantId: string\n offerId?: string\n offer?: OfferDTO\n collapseKey?: string\n sku: string\n images?: ImageDTO[]\n inventory: {\n hasAvailableQuantity: boolean\n availableQuantity: number\n maxQuantity?: number\n }\n onMouseEnter: (callback: () => void) => void\n onMouseLeave: () => void\n onMouseDown: (callback: () => void) => void\n}\n\nexport interface AttributeType {\n _id: string\n label: string\n extra?: any\n}\n\nexport interface AttributesType {\n count: number\n elements: AttributeType[]\n}\n\ninterface LineItemType extends BaseProductType {\n name: string\n brand?: {\n name: string\n slug: string\n }\n _id: string\n labels?: string[]\n price?: MoneyDTO\n discountedPrice?: MoneyDTO\n variantOptions: number\n variantsCount: number\n categories: {\n name: string\n slug: string\n }[]\n ratings: ReviewRatingStatisticsDTO\n getAttributeByKey: (key: string) => AttributesType\n getCustomFieldByKey: (key: string) => any\n}\n\nexport const useLineItem = (props: SearchResultDTO) => {\n const { onMouseEnter, onMouseLeave, onMouseDown } = usePrefetchProduct(\n getTranslatableField(props?.slug)\n )\n\n const data: LineItemType = React.useMemo(() => {\n const mappedAttributes = Object.keys(props?.attributes)?.reduce(\n (map, key) => {\n const current = props?.attributes[key]\n map[key] = {\n count: current?.length ?? 0,\n elements: current?.map((attribute: any) => {\n return {\n _id: attribute?.value,\n label: getTranslatableField(attribute?.label),\n extra: attribute?.extra,\n }\n }),\n }\n return map\n },\n {}\n )\n\n const customFields = props?.custom?.reduce(\n (map: { [key: string]: any }, current) => {\n if (Boolean(current.value) && current.value !== '0') {\n return { ...map, [current.field]: current.value }\n }\n return map\n },\n {}\n )\n\n return {\n _id: props?._id,\n name: getTranslatableField(props?.name),\n brand: {\n name: getTranslatableField(props?.brands?.[0]?.name),\n slug: getTranslatableField(props?.brands?.[0]?.slug),\n },\n slug: getTranslatableField(props?.slug),\n collapseKey: props?.collapseKey,\n variantId: props?.variantId,\n offerId: props?.offer?._id,\n offer: props?.offer,\n sku: props?.sku,\n images: props?.images || {},\n ratings: props?.reviewRatingStatistics,\n price: props?.offer?.originalPrice,\n discountedPrice: props?.offer?.discountedPrice,\n variantOptions: props?.variantOptions ?? 0,\n variantsCount: props?.variantsCount ?? 0,\n categories: props?.categories.map((category) => ({\n name: getTranslatableField(category.name),\n slug: getTranslatableField(category.slug),\n })),\n inventory: {\n hasAvailableQuantity: props?.inventorySnapshot?.canOrder ? true : false,\n availableQuantity: props?.inventorySnapshot?.canOrder\n ? props?.inventorySnapshot?.availableQuantity ?? 0\n : 0,\n maxQuantity: props?.offer?.maxQuantity,\n },\n labels: mapLabelData(props?.labels),\n getCustomFieldByKey: (key: string) => customFields?.[key],\n getAttributeByKey: (key: string) => mappedAttributes?.[key],\n onMouseEnter: (callback) => onMouseEnter(callback),\n onMouseLeave: () => onMouseLeave(),\n onMouseDown: (callback) => () => onMouseDown(callback),\n }\n }, [props])\n\n return data\n}\n\nconst mapLabelData = (data?: ProductVariantLabelDTO[]) => {\n // Filter only labels that are currently active\n const now = new Date().getTime()\n const currentLabels = data?.filter((el) => {\n if (!el.validFrom || !el.validTo) {\n return el\n } else {\n return el.validFrom < now && el.validTo > now\n }\n })\n\n return currentLabels?.map((el) => el.key)\n}\n"],"file":"index.js"}
@@ -1,4 +1,5 @@
1
- import { SearchResultDTO, ImageDTO, MoneyDTO, ReviewRatingStatisticsDTO, OfferDTO } from '@sentecacommerce/sdk';
1
+ import { SearchResultDTO, ImageDTO, MoneyDTO, ReviewRatingStatisticsDTO, OfferDTO, OfferDTOStatusEnum } from '@sentecacommerce/sdk';
2
+ export { OfferDTOStatusEnum };
2
3
  export interface BaseProductType {
3
4
  name: string;
4
5
  slug: string;
@@ -47,4 +48,3 @@ interface LineItemType extends BaseProductType {
47
48
  getCustomFieldByKey: (key: string) => any;
48
49
  }
49
50
  export declare const useLineItem: (props: SearchResultDTO) => LineItemType;
50
- export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentecacommerce-theme/lib",
3
3
  "sideEffects": false,
4
- "version": "0.12.66",
4
+ "version": "0.12.67",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -28,10 +28,10 @@
28
28
  "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
29
29
  "dev": "yarn build:esm --watch"
30
30
  },
31
- "gitHead": "c9b12340975d1b08822950a75838b94a6ffdc9f1",
31
+ "gitHead": "94c712f1b69e10e75c058eb6a5efdb8cf8462c4b",
32
32
  "dependencies": {
33
- "@sentecacommerce-theme/base": "^0.12.66",
34
- "@sentecacommerce/sdk": "2.0.139",
33
+ "@sentecacommerce-theme/base": "^0.12.67",
34
+ "@sentecacommerce/sdk": "2.0.142",
35
35
  "body-scroll-lock": "^3.1.5",
36
36
  "copy-to-clipboard": "^3.3.1",
37
37
  "embla-carousel": "^4.5.1",