@anker-in/campaign-ui 0.5.3-beta.2 → 0.5.3-beta.3
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/cjs/components/credits/context/utils.js +1 -1
- package/dist/cjs/components/credits/context/utils.js.map +2 -2
- package/dist/esm/components/credits/context/utils.js +1 -1
- package/dist/esm/components/credits/context/utils.js.map +2 -2
- package/package.json +1 -1
- package/src/components/credits/context/utils.ts +2 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var $=Object.create;var f=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var n in r)f(e,n,{get:r[n],enumerable:!0})},m=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of P(r))!k.call(e,i)&&i!==n&&f(e,i,{get:()=>r[i],enumerable:!(t=I(r,i))||t.enumerable});return e};var C=(e,r,n)=>(n=e!=null?$(S(e)):{},m(r||!e||!e.__esModule?f(n,"default",{value:e,enumerable:!0}):n,e)),E=e=>m(f({},"__esModule",{value:!0}),e);var L={};x(L,{emailValidate:()=>V,extractVariantId:()=>z,formatPrice:()=>p,formatVariantPrice:()=>v,getAlpcPath:()=>F,languageTerritory:()=>a,numberFormat:()=>D});module.exports=E(L);var l=C(require("js-cookie")),s=require("./const");function F(e="",r){let n=!1;const t=l.default.get("alpcEU");return t===void 0||t===""?["de","eu-de","eu","eu-en","uk","fr","fra"].includes(e)&&(n=!0):Number(t)&&(n=!0),r?n?`${r}/api/multipass/alpc-eu`:`${r}/api/multipass/alpc`:n?"/api/multipass/alpc-eu":"/api/multipass/alpc"}function D(e=0,r){if(typeof Intl>"u")return e;const n=new Intl.NumberFormat(a(r||"")||r).format(e);return r&&["fr","eu-fr","fra"].includes(r)?n.replace(/[\u202f\u00a0]/g," "):n}const V=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),a=e=>({us:"en-us",uk:"en-gb",ca:"en-ca",au:"en-au",nz:"en-nz",eu:"en-eu",pl:"pl-pl",fr:"fr-fr","eu-fr":"fr-fr",fra:"fr-fr",de:"de-de",vn:"vi-vn",sg:"en-sg","ae-en":"en-ae",plus:"en-us",cl:"es-cl",es:"es-es",se:"en-se",dk:"en-dk",is:"en-is",no:"en-no",fi:"en-fi"})[e]||"";function p({amount:e,currencyCode:r,locale:n,maximumFractionDigits:t,minimumFractionDigits:i,removeTrailingZeros:o=!1}){let u=new Intl.NumberFormat(a(n)||n,{style:"currency",currency:r||"USD",minimumFractionDigits:t===0?0:i,maximumFractionDigits:t}).format(e);return["eu-de","eu-en","de","eu"].includes(n)&&(u=u?.toString()?.replace(/[\s]/g,"")),["fr","eu-fr","fra"].includes(n)&&(u=u?.toString()?.replace(/[\u202f\u00a0]/g," ")),o&&(u=u.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),u}function v({amount:e,baseAmount:r,currencyCode:n,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:c}){if(typeof Intl>"u")return{price:`${s.PRICE_SYMBOL[t]}${e}`,basePrice:`${s.PRICE_SYMBOL[t]}${r}`,discount:`${s.PRICE_SYMBOL[t]}${r-e||0}`};const u=r>e,d=new Intl.NumberFormat(a(t),{style:"percent"}),g=u?d.format((r-e)/r):null,b=p({amount:e,currencyCode:n,locale:t,removeTrailingZeros:c}),y=u?p({amount:r,currencyCode:n,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:c}):void 0;return{price:b,basePrice:y,discount:g}}function z(e){return e?(typeof e=="number"?e.toString():e).replace("gid://shopify/ProductVariant/",""):null}
|
|
1
|
+
"use strict";var $=Object.create;var f=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var n in r)f(e,n,{get:r[n],enumerable:!0})},m=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of P(r))!k.call(e,i)&&i!==n&&f(e,i,{get:()=>r[i],enumerable:!(t=I(r,i))||t.enumerable});return e};var C=(e,r,n)=>(n=e!=null?$(S(e)):{},m(r||!e||!e.__esModule?f(n,"default",{value:e,enumerable:!0}):n,e)),E=e=>m(f({},"__esModule",{value:!0}),e);var L={};x(L,{emailValidate:()=>V,extractVariantId:()=>z,formatPrice:()=>p,formatVariantPrice:()=>v,getAlpcPath:()=>F,languageTerritory:()=>a,numberFormat:()=>D});module.exports=E(L);var l=C(require("js-cookie")),s=require("./const");function F(e="",r){let n=!1;const t=l.default.get("alpcEU");return t===void 0||t===""?["de","eu-de","eu","eu-en","uk","fr","fra"].includes(e)&&(n=!0):Number(t)&&(n=!0),r?n?`${r}/api/multipass/alpc-eu`:`${r}/api/multipass/alpc`:n?"/api/multipass/alpc-eu":"/api/multipass/alpc"}function D(e=0,r){if(typeof Intl>"u")return e;const n=new Intl.NumberFormat(a(r||"")||r).format(e);return r&&["fr","eu-fr","fra"].includes(r)?n.replace(/[\u202f\u00a0]/g," "):n}const V=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),a=e=>({us:"en-us",uk:"en-gb",ca:"en-ca",au:"en-au",nz:"en-nz",eu:"en-eu","eu-en":"en-eu",pl:"pl-pl",fr:"fr-fr","eu-fr":"fr-fr",fra:"fr-fr",de:"de-de","eu-de":"de-de",vn:"vi-vn",sg:"en-sg","ae-en":"en-ae",plus:"en-us",cl:"es-cl",es:"es-es",se:"en-se",dk:"en-dk",is:"en-is",no:"en-no",fi:"en-fi"})[e]||"";function p({amount:e,currencyCode:r,locale:n,maximumFractionDigits:t,minimumFractionDigits:i,removeTrailingZeros:o=!1}){let u=new Intl.NumberFormat(a(n)||n,{style:"currency",currency:r||"USD",minimumFractionDigits:t===0?0:i,maximumFractionDigits:t}).format(e);return["eu-de","eu-en","de","eu"].includes(n)&&(u=u?.toString()?.replace(/[\s]/g,"")),["fr","eu-fr","fra"].includes(n)&&(u=u?.toString()?.replace(/[\u202f\u00a0]/g," ")),o&&(u=u.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),u}function v({amount:e,baseAmount:r,currencyCode:n,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:c}){if(typeof Intl>"u")return{price:`${s.PRICE_SYMBOL[t]}${e}`,basePrice:`${s.PRICE_SYMBOL[t]}${r}`,discount:`${s.PRICE_SYMBOL[t]}${r-e||0}`};const u=r>e,d=new Intl.NumberFormat(a(t),{style:"percent"}),g=u?d.format((r-e)/r):null,b=p({amount:e,currencyCode:n,locale:t,removeTrailingZeros:c}),y=u?p({amount:r,currencyCode:n,locale:t,maximumFractionDigits:i,minimumFractionDigits:o,removeTrailingZeros:c}):void 0;return{price:b,basePrice:y,discount:g}}function z(e){return e?(typeof e=="number"?e.toString():e).replace("gid://shopify/ProductVariant/",""):null}
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/credits/context/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import Cookies from 'js-cookie'\nimport { PRICE_SYMBOL } from './const'\n\nexport function getAlpcPath(locale = '', apiBaseUrl?: string) {\n let isEU = false\n const alpcEUCookie = Cookies.get('alpcEU')\n if (alpcEUCookie === undefined || alpcEUCookie === '') {\n if (['de', 'eu-de', 'eu', 'eu-en', 'uk', 'fr', 'fra'].includes(locale)) {\n isEU = true\n }\n } else {\n let alpcEU = Number(alpcEUCookie)\n if (alpcEU) {\n isEU = true\n }\n }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u7684 apiBaseUrl\uFF0C\u62FC\u63A5\u5BF9\u5E94\u7684\u8DEF\u5F84\n if (apiBaseUrl) {\n return isEU ? `${apiBaseUrl}/api/multipass/alpc-eu` : `${apiBaseUrl}/api/multipass/alpc`\n }\n\n if (isEU) {\n return '/api/multipass/alpc-eu'\n }\n\n return '/api/multipass/alpc'\n}\n\nexport function numberFormat(num: number = 0, locale?: string) {\n if (typeof Intl === 'undefined') {\n return num\n }\n\n const formatted = new Intl.NumberFormat(languageTerritory(locale || '') || locale).format(num)\n\n if (locale && ['fr', 'eu-fr', 'fra'].includes(locale)) {\n return formatted.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n return formatted\n}\n\nexport const emailValidate = (email: any) => {\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\n email\n )\n}\n\nexport const languageTerritory = (locale: string) =>\n // https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_territory_information.html\n ({\n us: 'en-us',\n uk: 'en-gb',\n ca: 'en-ca',\n au: 'en-au',\n nz: 'en-nz',\n eu: 'en-eu',\n pl: 'pl-pl',\n fr: 'fr-fr',\n 'eu-fr': 'fr-fr',\n fra: 'fr-fr',\n de: 'de-de',\n vn: 'vi-vn',\n sg: 'en-sg',\n 'ae-en': 'en-ae',\n plus: 'en-us',\n cl: 'es-cl',\n es: 'es-es',\n // Nordic countries\n se: 'en-se',\n dk: 'en-dk',\n is: 'en-is',\n no: 'en-no',\n fi: 'en-fi',\n })[locale] || ''\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const formatCurrency = new Intl.NumberFormat(languageTerritory(locale) || locale, {\n style: 'currency',\n currency: currencyCode || 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n\n let formattedValue = formatCurrency.format(amount)\n\n if (['eu-de', 'eu-en', 'de', 'eu'].includes(locale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s]/g, '')\n }\n\n if (['fr', 'eu-fr', 'fra'].includes(locale)) {\n // Intl \u8F93\u51FA\u7684\u5343\u4F4D\u5206\u9694\u7B26\u662F\u7A84\u4E0D\u6362\u884C\u7A7A\u683C(U+202F)/\u4E0D\u6362\u884C\u7A7A\u683C(U+00A0)\uFF0C\u7EDF\u4E00\u66FF\u6362\u4E3A\u666E\u901A\u7A7A\u683C\n formattedValue = formattedValue?.toString()?.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\n/**\n * \u63D0\u53D6 variant id\uFF0C\u53BB\u6389 gid://shopify/ProductVariant/ \u524D\u7F00\n */\nexport function extractVariantId(id: string | number | undefined): string | null {\n if (!id) return null\n const idStr = typeof id === 'number' ? id.toString() : id\n return idStr.replace('gid://shopify/ProductVariant/', '')\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import Cookies from 'js-cookie'\nimport { PRICE_SYMBOL } from './const'\n\nexport function getAlpcPath(locale = '', apiBaseUrl?: string) {\n let isEU = false\n const alpcEUCookie = Cookies.get('alpcEU')\n if (alpcEUCookie === undefined || alpcEUCookie === '') {\n if (['de', 'eu-de', 'eu', 'eu-en', 'uk', 'fr', 'fra'].includes(locale)) {\n isEU = true\n }\n } else {\n let alpcEU = Number(alpcEUCookie)\n if (alpcEU) {\n isEU = true\n }\n }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u7684 apiBaseUrl\uFF0C\u62FC\u63A5\u5BF9\u5E94\u7684\u8DEF\u5F84\n if (apiBaseUrl) {\n return isEU ? `${apiBaseUrl}/api/multipass/alpc-eu` : `${apiBaseUrl}/api/multipass/alpc`\n }\n\n if (isEU) {\n return '/api/multipass/alpc-eu'\n }\n\n return '/api/multipass/alpc'\n}\n\nexport function numberFormat(num: number = 0, locale?: string) {\n if (typeof Intl === 'undefined') {\n return num\n }\n\n const formatted = new Intl.NumberFormat(languageTerritory(locale || '') || locale).format(num)\n\n if (locale && ['fr', 'eu-fr', 'fra'].includes(locale)) {\n return formatted.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n return formatted\n}\n\nexport const emailValidate = (email: any) => {\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\n email\n )\n}\n\nexport const languageTerritory = (locale: string) =>\n // https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_territory_information.html\n ({\n us: 'en-us',\n uk: 'en-gb',\n ca: 'en-ca',\n au: 'en-au',\n nz: 'en-nz',\n eu: 'en-eu',\n 'eu-en': 'en-eu',\n pl: 'pl-pl',\n fr: 'fr-fr',\n 'eu-fr': 'fr-fr',\n fra: 'fr-fr',\n de: 'de-de',\n 'eu-de': 'de-de',\n vn: 'vi-vn',\n sg: 'en-sg',\n 'ae-en': 'en-ae',\n plus: 'en-us',\n cl: 'es-cl',\n es: 'es-es',\n // Nordic countries\n se: 'en-se',\n dk: 'en-dk',\n is: 'en-is',\n no: 'en-no',\n fi: 'en-fi',\n })[locale] || ''\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const formatCurrency = new Intl.NumberFormat(languageTerritory(locale) || locale, {\n style: 'currency',\n currency: currencyCode || 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n\n let formattedValue = formatCurrency.format(amount)\n\n if (['eu-de', 'eu-en', 'de', 'eu'].includes(locale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s]/g, '')\n }\n\n if (['fr', 'eu-fr', 'fra'].includes(locale)) {\n // Intl \u8F93\u51FA\u7684\u5343\u4F4D\u5206\u9694\u7B26\u662F\u7A84\u4E0D\u6362\u884C\u7A7A\u683C(U+202F)/\u4E0D\u6362\u884C\u7A7A\u683C(U+00A0)\uFF0C\u7EDF\u4E00\u66FF\u6362\u4E3A\u666E\u901A\u7A7A\u683C\n formattedValue = formattedValue?.toString()?.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\n/**\n * \u63D0\u53D6 variant id\uFF0C\u53BB\u6389 gid://shopify/ProductVariant/ \u524D\u7F00\n */\nexport function extractVariantId(id: string | number | undefined): string | null {\n if (!id) return null\n const idStr = typeof id === 'number' ? id.toString() : id\n return idStr.replace('gid://shopify/ProductVariant/', '')\n}\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,mBAAAE,EAAA,qBAAAC,EAAA,gBAAAC,EAAA,uBAAAC,EAAA,gBAAAC,EAAA,sBAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAT,GAAA,IAAAU,EAAoB,wBACpBC,EAA6B,mBAEtB,SAASL,EAAYM,EAAS,GAAIC,EAAqB,CAC5D,IAAIC,EAAO,GACX,MAAMC,EAAe,EAAAC,QAAQ,IAAI,QAAQ,EAazC,OAZID,IAAiB,QAAaA,IAAiB,GAC7C,CAAC,KAAM,QAAS,KAAM,QAAS,KAAM,KAAM,KAAK,EAAE,SAASH,CAAM,IACnEE,EAAO,IAGI,OAAOC,CAAY,IAE9BD,EAAO,IAKPD,EACKC,EAAO,GAAGD,CAAU,yBAA2B,GAAGA,CAAU,sBAGjEC,EACK,yBAGF,qBACT,CAEO,SAASN,EAAaS,EAAc,EAAGL,EAAiB,CAC7D,GAAI,OAAO,KAAS,IAClB,OAAOK,EAGT,MAAMC,EAAY,IAAI,KAAK,aAAaX,EAAkBK,GAAU,EAAE,GAAKA,CAAM,EAAE,OAAOK,CAAG,EAE7F,OAAIL,GAAU,CAAC,KAAM,QAAS,KAAK,EAAE,SAASA,CAAM,EAC3CM,EAAU,QAAQ,kBAAmB,GAAG,EAG1CA,CACT,CAEO,MAAMhB,EAAiBiB,GACrB,yJAAyJ,KAC9JA,CACF,EAGWZ,EAAqBK,IAE/B,CACC,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,QAAS,QACT,GAAI,QACJ,GAAI,QACJ,QAAS,QACT,IAAK,QACL,GAAI,QACJ,QAAS,QACT,GAAI,QACJ,GAAI,QACJ,QAAS,QACT,KAAM,QACN,GAAI,QACJ,GAAI,QAEJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,OACN,GAAGA,CAAM,GAAK,GAET,SAASR,EAAY,CAC1B,OAAAgB,EACA,aAAAC,EACA,OAAAT,EACA,sBAAAU,EACA,sBAAAC,EACA,oBAAAC,EAAsB,EACxB,EAOG,CAQD,IAAIC,EAPmB,IAAI,KAAK,aAAalB,EAAkBK,CAAM,GAAKA,EAAQ,CAChF,MAAO,WACP,SAAUS,GAAgB,MAC1B,sBAAuBC,IAA0B,EAAI,EAAIC,EACzD,sBAAAD,CACF,CAAC,EAEmC,OAAOF,CAAM,EAEjD,MAAI,CAAC,QAAS,QAAS,KAAM,IAAI,EAAE,SAASR,CAAM,IAChDa,EAAiBA,GAAgB,SAAS,GAAG,QAAQ,QAAS,EAAE,GAG9D,CAAC,KAAM,QAAS,KAAK,EAAE,SAASb,CAAM,IAExCa,EAAiBA,GAAgB,SAAS,GAAG,QAAQ,kBAAmB,GAAG,GAGzED,IAEFC,EAAiBA,EACd,QAAQ,oBAAqB,IAAI,EACjC,QAAQ,SAAU,EAAE,EACpB,QAAQ,oBAAqB,IAAI,EACjC,QAAQ,SAAU,EAAE,GAGlBA,CACT,CAEO,SAASpB,EAAmB,CACjC,OAAAe,EACA,WAAAM,EACA,aAAAL,EACA,OAAAT,EACA,sBAAAU,EACA,sBAAAC,EACA,oBAAAC,CACF,EAQG,CACD,GAAI,OAAO,KAAS,IAClB,MAAO,CACL,MAAO,GAAG,eAAaZ,CAAmC,CAAC,GAAGQ,CAAM,GACpE,UAAW,GAAG,eAAaR,CAAmC,CAAC,GAAGc,CAAU,GAC5E,SAAU,GAAG,eAAad,CAAmC,CAAC,GAAGc,EAAaN,GAAU,CAAC,EAC3F,EAGF,MAAMO,EAAcD,EAAaN,EAC3BQ,EAAiB,IAAI,KAAK,aAAarB,EAAkBK,CAAM,EAAG,CACtE,MAAO,SACT,CAAC,EACKiB,EAAWF,EAAcC,EAAe,QAAQF,EAAaN,GAAUM,CAAU,EAAI,KAErFI,EAAQ1B,EAAY,CAAE,OAAAgB,EAAQ,aAAAC,EAAc,OAAAT,EAAQ,oBAAAY,CAAoB,CAAC,EACzEO,EAAYJ,EACdvB,EAAY,CACV,OAAQsB,EACR,aAAAL,EACA,OAAAT,EACA,sBAAAU,EACA,sBAAAC,EACA,oBAAAC,CACF,CAAC,EACD,OAEJ,MAAO,CAAE,MAAAM,EAAO,UAAAC,EAAW,SAAAF,CAAS,CACtC,CAKO,SAAS1B,EAAiB6B,EAAgD,CAC/E,OAAKA,GACS,OAAOA,GAAO,SAAWA,EAAG,SAAS,EAAIA,GAC1C,QAAQ,gCAAiC,EAAE,EAFxC,IAGlB",
|
|
6
6
|
"names": ["utils_exports", "__export", "emailValidate", "extractVariantId", "formatPrice", "formatVariantPrice", "getAlpcPath", "languageTerritory", "numberFormat", "__toCommonJS", "import_js_cookie", "import_const", "locale", "apiBaseUrl", "isEU", "alpcEUCookie", "Cookies", "num", "formatted", "email", "amount", "currencyCode", "maximumFractionDigits", "minimumFractionDigits", "removeTrailingZeros", "formattedValue", "baseAmount", "hasDiscount", "formatDiscount", "discount", "price", "basePrice", "id"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import g from"js-cookie";import{PRICE_SYMBOL as a}from"./const";function $(e="",r){let n=!1;const t=g.get("alpcEU");return t===void 0||t===""?["de","eu-de","eu","eu-en","uk","fr","fra"].includes(e)&&(n=!0):Number(t)&&(n=!0),r?n?`${r}/api/multipass/alpc-eu`:`${r}/api/multipass/alpc`:n?"/api/multipass/alpc-eu":"/api/multipass/alpc"}function I(e=0,r){if(typeof Intl>"u")return e;const n=new Intl.NumberFormat(o(r||"")||r).format(e);return r&&["fr","eu-fr","fra"].includes(r)?n.replace(/[\u202f\u00a0]/g," "):n}const P=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),o=e=>({us:"en-us",uk:"en-gb",ca:"en-ca",au:"en-au",nz:"en-nz",eu:"en-eu",pl:"pl-pl",fr:"fr-fr","eu-fr":"fr-fr",fra:"fr-fr",de:"de-de",vn:"vi-vn",sg:"en-sg","ae-en":"en-ae",plus:"en-us",cl:"es-cl",es:"es-es",se:"en-se",dk:"en-dk",is:"en-is",no:"en-no",fi:"en-fi"})[e]||"";function c({amount:e,currencyCode:r,locale:n,maximumFractionDigits:t,minimumFractionDigits:u,removeTrailingZeros:f=!1}){let i=new Intl.NumberFormat(o(n)||n,{style:"currency",currency:r||"USD",minimumFractionDigits:t===0?0:u,maximumFractionDigits:t}).format(e);return["eu-de","eu-en","de","eu"].includes(n)&&(i=i?.toString()?.replace(/[\s]/g,"")),["fr","eu-fr","fra"].includes(n)&&(i=i?.toString()?.replace(/[\u202f\u00a0]/g," ")),f&&(i=i.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),i}function S({amount:e,baseAmount:r,currencyCode:n,locale:t,maximumFractionDigits:u,minimumFractionDigits:f,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${a[t]}${e}`,basePrice:`${a[t]}${r}`,discount:`${a[t]}${r-e||0}`};const i=r>e,p=new Intl.NumberFormat(o(t),{style:"percent"}),m=i?p.format((r-e)/r):null,l=c({amount:e,currencyCode:n,locale:t,removeTrailingZeros:s}),d=i?c({amount:r,currencyCode:n,locale:t,maximumFractionDigits:u,minimumFractionDigits:f,removeTrailingZeros:s}):void 0;return{price:l,basePrice:d,discount:m}}function k(e){return e?(typeof e=="number"?e.toString():e).replace("gid://shopify/ProductVariant/",""):null}export{P as emailValidate,k as extractVariantId,c as formatPrice,S as formatVariantPrice,$ as getAlpcPath,o as languageTerritory,I as numberFormat};
|
|
1
|
+
import g from"js-cookie";import{PRICE_SYMBOL as a}from"./const";function $(e="",r){let n=!1;const t=g.get("alpcEU");return t===void 0||t===""?["de","eu-de","eu","eu-en","uk","fr","fra"].includes(e)&&(n=!0):Number(t)&&(n=!0),r?n?`${r}/api/multipass/alpc-eu`:`${r}/api/multipass/alpc`:n?"/api/multipass/alpc-eu":"/api/multipass/alpc"}function I(e=0,r){if(typeof Intl>"u")return e;const n=new Intl.NumberFormat(o(r||"")||r).format(e);return r&&["fr","eu-fr","fra"].includes(r)?n.replace(/[\u202f\u00a0]/g," "):n}const P=e=>/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e),o=e=>({us:"en-us",uk:"en-gb",ca:"en-ca",au:"en-au",nz:"en-nz",eu:"en-eu","eu-en":"en-eu",pl:"pl-pl",fr:"fr-fr","eu-fr":"fr-fr",fra:"fr-fr",de:"de-de","eu-de":"de-de",vn:"vi-vn",sg:"en-sg","ae-en":"en-ae",plus:"en-us",cl:"es-cl",es:"es-es",se:"en-se",dk:"en-dk",is:"en-is",no:"en-no",fi:"en-fi"})[e]||"";function c({amount:e,currencyCode:r,locale:n,maximumFractionDigits:t,minimumFractionDigits:u,removeTrailingZeros:f=!1}){let i=new Intl.NumberFormat(o(n)||n,{style:"currency",currency:r||"USD",minimumFractionDigits:t===0?0:u,maximumFractionDigits:t}).format(e);return["eu-de","eu-en","de","eu"].includes(n)&&(i=i?.toString()?.replace(/[\s]/g,"")),["fr","eu-fr","fra"].includes(n)&&(i=i?.toString()?.replace(/[\u202f\u00a0]/g," ")),f&&(i=i.replace(/(\.\d*?[1-9])0+\b/,"$1").replace(/\.0+\b/,"").replace(/(\,\d*?[1-9])0+\b/,"$1").replace(/\,0+\b/,"")),i}function S({amount:e,baseAmount:r,currencyCode:n,locale:t,maximumFractionDigits:u,minimumFractionDigits:f,removeTrailingZeros:s}){if(typeof Intl>"u")return{price:`${a[t]}${e}`,basePrice:`${a[t]}${r}`,discount:`${a[t]}${r-e||0}`};const i=r>e,p=new Intl.NumberFormat(o(t),{style:"percent"}),m=i?p.format((r-e)/r):null,l=c({amount:e,currencyCode:n,locale:t,removeTrailingZeros:s}),d=i?c({amount:r,currencyCode:n,locale:t,maximumFractionDigits:u,minimumFractionDigits:f,removeTrailingZeros:s}):void 0;return{price:l,basePrice:d,discount:m}}function k(e){return e?(typeof e=="number"?e.toString():e).replace("gid://shopify/ProductVariant/",""):null}export{P as emailValidate,k as extractVariantId,c as formatPrice,S as formatVariantPrice,$ as getAlpcPath,o as languageTerritory,I as numberFormat};
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/components/credits/context/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import Cookies from 'js-cookie'\nimport { PRICE_SYMBOL } from './const'\n\nexport function getAlpcPath(locale = '', apiBaseUrl?: string) {\n let isEU = false\n const alpcEUCookie = Cookies.get('alpcEU')\n if (alpcEUCookie === undefined || alpcEUCookie === '') {\n if (['de', 'eu-de', 'eu', 'eu-en', 'uk', 'fr', 'fra'].includes(locale)) {\n isEU = true\n }\n } else {\n let alpcEU = Number(alpcEUCookie)\n if (alpcEU) {\n isEU = true\n }\n }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u7684 apiBaseUrl\uFF0C\u62FC\u63A5\u5BF9\u5E94\u7684\u8DEF\u5F84\n if (apiBaseUrl) {\n return isEU ? `${apiBaseUrl}/api/multipass/alpc-eu` : `${apiBaseUrl}/api/multipass/alpc`\n }\n\n if (isEU) {\n return '/api/multipass/alpc-eu'\n }\n\n return '/api/multipass/alpc'\n}\n\nexport function numberFormat(num: number = 0, locale?: string) {\n if (typeof Intl === 'undefined') {\n return num\n }\n\n const formatted = new Intl.NumberFormat(languageTerritory(locale || '') || locale).format(num)\n\n if (locale && ['fr', 'eu-fr', 'fra'].includes(locale)) {\n return formatted.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n return formatted\n}\n\nexport const emailValidate = (email: any) => {\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\n email\n )\n}\n\nexport const languageTerritory = (locale: string) =>\n // https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_territory_information.html\n ({\n us: 'en-us',\n uk: 'en-gb',\n ca: 'en-ca',\n au: 'en-au',\n nz: 'en-nz',\n eu: 'en-eu',\n pl: 'pl-pl',\n fr: 'fr-fr',\n 'eu-fr': 'fr-fr',\n fra: 'fr-fr',\n de: 'de-de',\n vn: 'vi-vn',\n sg: 'en-sg',\n 'ae-en': 'en-ae',\n plus: 'en-us',\n cl: 'es-cl',\n es: 'es-es',\n // Nordic countries\n se: 'en-se',\n dk: 'en-dk',\n is: 'en-is',\n no: 'en-no',\n fi: 'en-fi',\n })[locale] || ''\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const formatCurrency = new Intl.NumberFormat(languageTerritory(locale) || locale, {\n style: 'currency',\n currency: currencyCode || 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n\n let formattedValue = formatCurrency.format(amount)\n\n if (['eu-de', 'eu-en', 'de', 'eu'].includes(locale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s]/g, '')\n }\n\n if (['fr', 'eu-fr', 'fra'].includes(locale)) {\n // Intl \u8F93\u51FA\u7684\u5343\u4F4D\u5206\u9694\u7B26\u662F\u7A84\u4E0D\u6362\u884C\u7A7A\u683C(U+202F)/\u4E0D\u6362\u884C\u7A7A\u683C(U+00A0)\uFF0C\u7EDF\u4E00\u66FF\u6362\u4E3A\u666E\u901A\u7A7A\u683C\n formattedValue = formattedValue?.toString()?.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\n/**\n * \u63D0\u53D6 variant id\uFF0C\u53BB\u6389 gid://shopify/ProductVariant/ \u524D\u7F00\n */\nexport function extractVariantId(id: string | number | undefined): string | null {\n if (!id) return null\n const idStr = typeof id === 'number' ? id.toString() : id\n return idStr.replace('gid://shopify/ProductVariant/', '')\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import Cookies from 'js-cookie'\nimport { PRICE_SYMBOL } from './const'\n\nexport function getAlpcPath(locale = '', apiBaseUrl?: string) {\n let isEU = false\n const alpcEUCookie = Cookies.get('alpcEU')\n if (alpcEUCookie === undefined || alpcEUCookie === '') {\n if (['de', 'eu-de', 'eu', 'eu-en', 'uk', 'fr', 'fra'].includes(locale)) {\n isEU = true\n }\n } else {\n let alpcEU = Number(alpcEUCookie)\n if (alpcEU) {\n isEU = true\n }\n }\n\n // \u5982\u679C\u63D0\u4F9B\u4E86\u81EA\u5B9A\u4E49\u7684 apiBaseUrl\uFF0C\u62FC\u63A5\u5BF9\u5E94\u7684\u8DEF\u5F84\n if (apiBaseUrl) {\n return isEU ? `${apiBaseUrl}/api/multipass/alpc-eu` : `${apiBaseUrl}/api/multipass/alpc`\n }\n\n if (isEU) {\n return '/api/multipass/alpc-eu'\n }\n\n return '/api/multipass/alpc'\n}\n\nexport function numberFormat(num: number = 0, locale?: string) {\n if (typeof Intl === 'undefined') {\n return num\n }\n\n const formatted = new Intl.NumberFormat(languageTerritory(locale || '') || locale).format(num)\n\n if (locale && ['fr', 'eu-fr', 'fra'].includes(locale)) {\n return formatted.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n return formatted\n}\n\nexport const emailValidate = (email: any) => {\n return /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(\n email\n )\n}\n\nexport const languageTerritory = (locale: string) =>\n // https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_territory_information.html\n ({\n us: 'en-us',\n uk: 'en-gb',\n ca: 'en-ca',\n au: 'en-au',\n nz: 'en-nz',\n eu: 'en-eu',\n 'eu-en': 'en-eu',\n pl: 'pl-pl',\n fr: 'fr-fr',\n 'eu-fr': 'fr-fr',\n fra: 'fr-fr',\n de: 'de-de',\n 'eu-de': 'de-de',\n vn: 'vi-vn',\n sg: 'en-sg',\n 'ae-en': 'en-ae',\n plus: 'en-us',\n cl: 'es-cl',\n es: 'es-es',\n // Nordic countries\n se: 'en-se',\n dk: 'en-dk',\n is: 'en-is',\n no: 'en-no',\n fi: 'en-fi',\n })[locale] || ''\n\nexport function formatPrice({\n amount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros = false,\n}: {\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n const formatCurrency = new Intl.NumberFormat(languageTerritory(locale) || locale, {\n style: 'currency',\n currency: currencyCode || 'USD',\n minimumFractionDigits: maximumFractionDigits === 0 ? 0 : minimumFractionDigits,\n maximumFractionDigits,\n })\n\n let formattedValue = formatCurrency.format(amount)\n\n if (['eu-de', 'eu-en', 'de', 'eu'].includes(locale)) {\n formattedValue = formattedValue?.toString()?.replace(/[\\s]/g, '')\n }\n\n if (['fr', 'eu-fr', 'fra'].includes(locale)) {\n // Intl \u8F93\u51FA\u7684\u5343\u4F4D\u5206\u9694\u7B26\u662F\u7A84\u4E0D\u6362\u884C\u7A7A\u683C(U+202F)/\u4E0D\u6362\u884C\u7A7A\u683C(U+00A0)\uFF0C\u7EDF\u4E00\u66FF\u6362\u4E3A\u666E\u901A\u7A7A\u683C\n formattedValue = formattedValue?.toString()?.replace(/[\\u202f\\u00a0]/g, ' ')\n }\n\n if (removeTrailingZeros) {\n // Adjust the regex to match comma as decimal separator\n formattedValue = formattedValue\n .replace(/(\\.\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\.0+\\b/, '')\n .replace(/(\\,\\d*?[1-9])0+\\b/, '$1')\n .replace(/\\,0+\\b/, '')\n }\n\n return formattedValue\n}\n\nexport function formatVariantPrice({\n amount,\n baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n}: {\n baseAmount: number\n amount: number\n currencyCode: string\n locale: string\n maximumFractionDigits?: number\n minimumFractionDigits?: number\n removeTrailingZeros?: boolean\n}) {\n if (typeof Intl === 'undefined') {\n return {\n price: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${amount}`,\n basePrice: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount}`,\n discount: `${PRICE_SYMBOL[locale as keyof typeof PRICE_SYMBOL]}${baseAmount - amount || 0}`,\n }\n }\n\n const hasDiscount = baseAmount > amount\n const formatDiscount = new Intl.NumberFormat(languageTerritory(locale), {\n style: 'percent',\n })\n const discount = hasDiscount ? formatDiscount.format((baseAmount - amount) / baseAmount) : null\n\n const price = formatPrice({ amount, currencyCode, locale, removeTrailingZeros })\n const basePrice = hasDiscount\n ? formatPrice({\n amount: baseAmount,\n currencyCode,\n locale,\n maximumFractionDigits,\n minimumFractionDigits,\n removeTrailingZeros,\n })\n : undefined\n\n return { price, basePrice, discount }\n}\n\n/**\n * \u63D0\u53D6 variant id\uFF0C\u53BB\u6389 gid://shopify/ProductVariant/ \u524D\u7F00\n */\nexport function extractVariantId(id: string | number | undefined): string | null {\n if (!id) return null\n const idStr = typeof id === 'number' ? id.toString() : id\n return idStr.replace('gid://shopify/ProductVariant/', '')\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Cookies", "PRICE_SYMBOL", "getAlpcPath", "locale", "apiBaseUrl", "isEU", "alpcEUCookie", "numberFormat", "num", "formatted", "languageTerritory", "emailValidate", "email", "formatPrice", "amount", "currencyCode", "maximumFractionDigits", "minimumFractionDigits", "removeTrailingZeros", "formattedValue", "formatVariantPrice", "baseAmount", "hasDiscount", "formatDiscount", "discount", "price", "basePrice", "extractVariantId", "id"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -56,11 +56,13 @@ export const languageTerritory = (locale: string) =>
|
|
|
56
56
|
au: 'en-au',
|
|
57
57
|
nz: 'en-nz',
|
|
58
58
|
eu: 'en-eu',
|
|
59
|
+
'eu-en': 'en-eu',
|
|
59
60
|
pl: 'pl-pl',
|
|
60
61
|
fr: 'fr-fr',
|
|
61
62
|
'eu-fr': 'fr-fr',
|
|
62
63
|
fra: 'fr-fr',
|
|
63
64
|
de: 'de-de',
|
|
65
|
+
'eu-de': 'de-de',
|
|
64
66
|
vn: 'vi-vn',
|
|
65
67
|
sg: 'en-sg',
|
|
66
68
|
'ae-en': 'en-ae',
|