{"version":3,"file":"dutycast-js-sdk.min.js","sources":["../src/constant.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../node_modules/filter-obj/index.js","../node_modules/query-string/index.js","../src/utils/lodash.js","../node_modules/cssfilter/lib/default.js","../node_modules/cssfilter/lib/util.js","../node_modules/cssfilter/lib/parser.js","../node_modules/cssfilter/lib/css.js","../node_modules/cssfilter/lib/index.js","../node_modules/xss/lib/util.js","../node_modules/xss/lib/default.js","../node_modules/xss/lib/parser.js","../node_modules/xss/lib/xss.js","../node_modules/xss/lib/index.js","../src/utils/url.js","../node_modules/classnames/index.js","../src/assets/images/icons/cart.svg","../src/assets/images/icons/bag.svg","../src/assets/images/icons/setting.svg","../src/assets/images/icons/close.svg","../src/assets/images/icons/emptyCart.jpg","../src/utils/currency.js","../src/utils/country.js","../src/models/Address.js","../src/models/Fee.js","../src/models/MetaProduct.js","../src/utils/constant.js","../src/models/OrderAction.js","../src/models/Product.js","../src/models/Paging.js","../src/models/SearchFacet.js","../src/models/SearchProduct.js","../src/utils/cookie.js","../src/models/SettingConfig.js","../src/models/Search.js","../src/models/Order.js","../src/models/ReceiptSource.js","../src/utils/endPoint.js","../node_modules/crypt/crypt.js","../node_modules/charenc/charenc.js","../node_modules/is-buffer/index.js","../node_modules/md5/md5.js","../src/libs/mark.js","../src/utils/string.js","../src/environments/index.js","../src/utils/api.js","../src/utils/event.js","../src/components/DComponent.js","../src/utils/utils.js","../src/components/InputField/index.js","../src/assets/images/icons/arrow_down.svg","../src/components/SelectBox/index.js","../src/components/CartPopup/index.js","../src/components/Cart/index.js","../src/assets/images/icons/Arrow_Right_Orange.svg","../src/assets/images/icons/prevArrow_orange.svg","../src/assets/images/icons/nextArrow_orange.svg","../src/assets/images/icons/Arrow_Right_To_White.svg","../src/assets/images/search/bowTie.svg","../src/models/PriceTag.js","../src/models/ProductVariant.js","../src/assets/images/icons/line-throught.svg","../src/components/DimensionItem/index.js","../src/components/SearchProductItem/index.js","../src/assets/images/icons/PriceLowest.svg","../src/components/LowestTag/index.js","../src/assets/images/icons/sub.svg","../src/assets/images/icons/plus.svg","../src/components/QuantityInput/index.js","../src/assets/images/icons/Arrow_Left_Orange.svg","../src/components/SliderImage/index.js","../src/utils/log.js","../src/components/DetailProduct/index.js","../src/assets/images/icons/search.svg","../src/utils/autocomplete.js","../src/components/SearchInput/index.js","../src/assets/images/icons/filter.svg","../src/components/CheckBox/index.js","../src/components/FilterItem/index.js","../src/assets/images/icons/removeFilter.svg","../src/components/FilterTags/index.js","../src/components/PagingBox/index.js","../src/components/SearchResult/index.js","../src/services/api.js","../src/assets/images/tracking/IconTotal.svg","../src/assets/images/tracking/coupon.svg","../src/components/TrackingOrder/components/BillingSummary/index.js","../src/components/TrackingOrder/components/OrderInformation/index.js","../src/components/TrackingOrder/components/ProductInfoItem/index.js","../src/components/TrackingOrder/components/StatusProgress/index.js","../src/components/TrackingOrder/components/OrderItem/index.js","../src/components/TrackingOrder/components/OrderDetail/index.js","../src/components/TrackingOrder/components/OrderEmpty/index.js","../src/assets/images/tracking/search.svg","../src/components/TrackingOrder/components/SearchForm/index.js","../src/components/TrackingOrder/index.js","../src/utils/globalWrapper.js","../src/utils/element.js","../src/components/DCElement.js","../src/DC.js","../src/libs/i18n/i18n.js","../src/libs/i18n/i18n.messagestore.js","../src/libs/i18n/i18n.language.js","../src/libs/i18n/i18n.fallbacks.js","../src/libs/i18n/i18n.parser.js","../src/libs/i18n/i18n.emitter.js","../src/libs/i18n/i18n.emitter.bidi.js","../src/utils/site.js","../src/components/Demo/index.js","../src/assets/addNew.svg","../src/assets/add_cart_en.png","../src/services/cart.js","../src/utils/cart.js","../src/utils/language.js","../src/services/search.js","../src/index.js"],"sourcesContent":["export const COOKIE_KEYS = {\n TF: \"_tf\",\n TFID: \"_tfid\",\n UTM: \"dutm\",\n USER_ID: \"duid\",\n GID: \"_gid\",\n GA: \"_ga\",\n FOEID: \"_foeid\",\n SHORT_LINK: \"dsl\",\n SHIPPING_COUNTRY: \"dc_si\",\n SHIPPING_COUNTRIES: \"dc_sis\",\n SHIPPING_CITY: \"dc_si_ci\",\n SHIPPING_POSTALCODE: \"dc_si_pc\",\n BILLING_COUNTRY: \"dc_bi\",\n CURRENCY: \"dc_cur\",\n CURRENCIES: \"dc_curs\",\n IP_COUNTRY: \"dc_ip_country\",\n SHOW_FAST_CHECKOUT: \"dc_sfc\",\n LOCALE: \"dc_hl\",\n UID: \"dc_sdk_uid\",\n SE_CONFIG: \"dc_se_config\",\n}\n\nexport const END_POINT = {\n CREATE_ORDER: `/v1/orders`,\n SUBSCRIBE: `/v1/subscribe`,\n CHECKOUT: `/v1/checkout`,\n ESTIMATE_PRICE: `/v1/estimate_price`,\n GET_CONFIG: `/v1/config`,\n UPDTAE_ORDER: `/v1/update`,\n TRACKING_ORDER: `/v1/orders/{{OrderNo}}/track`,\n}\n\nexport const ROOT = {\n CHECKOUT: \"/checkout/\",\n}\n\nexport const SITE_TYPE = {\n NORMAL: undefined,\n SHOPIFY: \"shopify\",\n}\n\nexport const CONFIG_KEYS = {\n ADD_TO_CART_ELEMENTS: \"no_result_add_to_cart_elements\",\n FAST_CHECKOUT_ELEMENTS: \"no_result_fast_checkout_elements\",\n BADGE_ELEMENTS: \"no_result_badge_elements\",\n CHECKOUT_ELEMENTS: \"no_result_checkout_elements\",\n QUANTITY_INPUT_ELEMENTS: \"no_result_quantity_input_elements\",\n SEARCH_RESULT_WRAPPER_ELEMENTS: \"no_result_search_result_wrapper_elements\",\n SEARCH_INPUT_ELEMENTS: \"no_result_search_input_elements\",\n DISABLE_ADD_TO_CART_ANIMATION: \"no_result_disable_add_to_cart_animation\",\n OFF_EVENTS: \"no_result_off_events\",\n HIDE_ELEMENTS: \"no_result_hide_elements\",\n}\n\nexport const SHADOW_3D = \"1px 1px 0px #999, 2px 2px 0px #999, 3px 3px 0px #999, 4px 4px 0px #999, 5px 5px 0px #999, 6px 6px 0px #999\";\n\nexport const API_KEY_QUERY_STRING_KEY = \"key\";","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n","export function getOr(defaultValue, path) {\n return function (obj) {\n if (!obj || Object.keys(obj).length === 0 || path === undefined || path === null) {\n return defaultValue;\n }\n\n if (path === \"\") {\n return obj;\n }\n\n const keys = Array.isArray(path) ? path : path.split('.').map(key => (key.includes('[') ? key.split('[').map(k => k.replace(']', '')) : key));\n\n return keys.reduce((result, key) => {\n if (Array.isArray(key)) {\n // Handle array indexing\n const index = parseInt(key[1], 10);\n return result && result[key[0]] && result[key[0]][index] !== undefined ? result[key[0]][index] : defaultValue;\n }\n return result && result[key] !== undefined ? result[key] : defaultValue;\n }, obj);\n }\n}\n\nexport function cloneDeep(obj) {\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n const arrCopy = [];\n for (const item of obj) {\n arrCopy.push(cloneDeep(item));\n }\n return arrCopy;\n }\n\n const objCopy = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n objCopy[key] = cloneDeep(obj[key]);\n }\n }\n\n return objCopy;\n}\n\nexport function debounce(func, wait, immediate) {\n var timeout;\n\n let debounced = function () {\n var context = this;\n var args = arguments;\n\n var later = function () {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n\n if (immediate && !timeout) {\n func.apply(context, args);\n }\n };\n\n debounced.cancel = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return debounced;\n}","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nfunction getDefaultWhiteList () {\n // 白名单值说明:\n // true: 允许该属性\n // Function: function (val) { } 返回true表示允许该属性,其他值均表示不允许\n // RegExp: regexp.test(val) 返回true表示允许该属性,其他值均表示不允许\n // 除上面列出的值外均表示不允许\n var whiteList = {};\n\n whiteList['align-content'] = false; // default: auto\n whiteList['align-items'] = false; // default: auto\n whiteList['align-self'] = false; // default: auto\n whiteList['alignment-adjust'] = false; // default: auto\n whiteList['alignment-baseline'] = false; // default: baseline\n whiteList['all'] = false; // default: depending on individual properties\n whiteList['anchor-point'] = false; // default: none\n whiteList['animation'] = false; // default: depending on individual properties\n whiteList['animation-delay'] = false; // default: 0\n whiteList['animation-direction'] = false; // default: normal\n whiteList['animation-duration'] = false; // default: 0\n whiteList['animation-fill-mode'] = false; // default: none\n whiteList['animation-iteration-count'] = false; // default: 1\n whiteList['animation-name'] = false; // default: none\n whiteList['animation-play-state'] = false; // default: running\n whiteList['animation-timing-function'] = false; // default: ease\n whiteList['azimuth'] = false; // default: center\n whiteList['backface-visibility'] = false; // default: visible\n whiteList['background'] = true; // default: depending on individual properties\n whiteList['background-attachment'] = true; // default: scroll\n whiteList['background-clip'] = true; // default: border-box\n whiteList['background-color'] = true; // default: transparent\n whiteList['background-image'] = true; // default: none\n whiteList['background-origin'] = true; // default: padding-box\n whiteList['background-position'] = true; // default: 0% 0%\n whiteList['background-repeat'] = true; // default: repeat\n whiteList['background-size'] = true; // default: auto\n whiteList['baseline-shift'] = false; // default: baseline\n whiteList['binding'] = false; // default: none\n whiteList['bleed'] = false; // default: 6pt\n whiteList['bookmark-label'] = false; // default: content()\n whiteList['bookmark-level'] = false; // default: none\n whiteList['bookmark-state'] = false; // default: open\n whiteList['border'] = true; // default: depending on individual properties\n whiteList['border-bottom'] = true; // default: depending on individual properties\n whiteList['border-bottom-color'] = true; // default: current color\n whiteList['border-bottom-left-radius'] = true; // default: 0\n whiteList['border-bottom-right-radius'] = true; // default: 0\n whiteList['border-bottom-style'] = true; // default: none\n whiteList['border-bottom-width'] = true; // default: medium\n whiteList['border-collapse'] = true; // default: separate\n whiteList['border-color'] = true; // default: depending on individual properties\n whiteList['border-image'] = true; // default: none\n whiteList['border-image-outset'] = true; // default: 0\n whiteList['border-image-repeat'] = true; // default: stretch\n whiteList['border-image-slice'] = true; // default: 100%\n whiteList['border-image-source'] = true; // default: none\n whiteList['border-image-width'] = true; // default: 1\n whiteList['border-left'] = true; // default: depending on individual properties\n whiteList['border-left-color'] = true; // default: current color\n whiteList['border-left-style'] = true; // default: none\n whiteList['border-left-width'] = true; // default: medium\n whiteList['border-radius'] = true; // default: 0\n whiteList['border-right'] = true; // default: depending on individual properties\n whiteList['border-right-color'] = true; // default: current color\n whiteList['border-right-style'] = true; // default: none\n whiteList['border-right-width'] = true; // default: medium\n whiteList['border-spacing'] = true; // default: 0\n whiteList['border-style'] = true; // default: depending on individual properties\n whiteList['border-top'] = true; // default: depending on individual properties\n whiteList['border-top-color'] = true; // default: current color\n whiteList['border-top-left-radius'] = true; // default: 0\n whiteList['border-top-right-radius'] = true; // default: 0\n whiteList['border-top-style'] = true; // default: none\n whiteList['border-top-width'] = true; // default: medium\n whiteList['border-width'] = true; // default: depending on individual properties\n whiteList['bottom'] = false; // default: auto\n whiteList['box-decoration-break'] = true; // default: slice\n whiteList['box-shadow'] = true; // default: none\n whiteList['box-sizing'] = true; // default: content-box\n whiteList['box-snap'] = true; // default: none\n whiteList['box-suppress'] = true; // default: show\n whiteList['break-after'] = true; // default: auto\n whiteList['break-before'] = true; // default: auto\n whiteList['break-inside'] = true; // default: auto\n whiteList['caption-side'] = false; // default: top\n whiteList['chains'] = false; // default: none\n whiteList['clear'] = true; // default: none\n whiteList['clip'] = false; // default: auto\n whiteList['clip-path'] = false; // default: none\n whiteList['clip-rule'] = false; // default: nonzero\n whiteList['color'] = true; // default: implementation dependent\n whiteList['color-interpolation-filters'] = true; // default: auto\n whiteList['column-count'] = false; // default: auto\n whiteList['column-fill'] = false; // default: balance\n whiteList['column-gap'] = false; // default: normal\n whiteList['column-rule'] = false; // default: depending on individual properties\n whiteList['column-rule-color'] = false; // default: current color\n whiteList['column-rule-style'] = false; // default: medium\n whiteList['column-rule-width'] = false; // default: medium\n whiteList['column-span'] = false; // default: none\n whiteList['column-width'] = false; // default: auto\n whiteList['columns'] = false; // default: depending on individual properties\n whiteList['contain'] = false; // default: none\n whiteList['content'] = false; // default: normal\n whiteList['counter-increment'] = false; // default: none\n whiteList['counter-reset'] = false; // default: none\n whiteList['counter-set'] = false; // default: none\n whiteList['crop'] = false; // default: auto\n whiteList['cue'] = false; // default: depending on individual properties\n whiteList['cue-after'] = false; // default: none\n whiteList['cue-before'] = false; // default: none\n whiteList['cursor'] = false; // default: auto\n whiteList['direction'] = false; // default: ltr\n whiteList['display'] = true; // default: depending on individual properties\n whiteList['display-inside'] = true; // default: auto\n whiteList['display-list'] = true; // default: none\n whiteList['display-outside'] = true; // default: inline-level\n whiteList['dominant-baseline'] = false; // default: auto\n whiteList['elevation'] = false; // default: level\n whiteList['empty-cells'] = false; // default: show\n whiteList['filter'] = false; // default: none\n whiteList['flex'] = false; // default: depending on individual properties\n whiteList['flex-basis'] = false; // default: auto\n whiteList['flex-direction'] = false; // default: row\n whiteList['flex-flow'] = false; // default: depending on individual properties\n whiteList['flex-grow'] = false; // default: 0\n whiteList['flex-shrink'] = false; // default: 1\n whiteList['flex-wrap'] = false; // default: nowrap\n whiteList['float'] = false; // default: none\n whiteList['float-offset'] = false; // default: 0 0\n whiteList['flood-color'] = false; // default: black\n whiteList['flood-opacity'] = false; // default: 1\n whiteList['flow-from'] = false; // default: none\n whiteList['flow-into'] = false; // default: none\n whiteList['font'] = true; // default: depending on individual properties\n whiteList['font-family'] = true; // default: implementation dependent\n whiteList['font-feature-settings'] = true; // default: normal\n whiteList['font-kerning'] = true; // default: auto\n whiteList['font-language-override'] = true; // default: normal\n whiteList['font-size'] = true; // default: medium\n whiteList['font-size-adjust'] = true; // default: none\n whiteList['font-stretch'] = true; // default: normal\n whiteList['font-style'] = true; // default: normal\n whiteList['font-synthesis'] = true; // default: weight style\n whiteList['font-variant'] = true; // default: normal\n whiteList['font-variant-alternates'] = true; // default: normal\n whiteList['font-variant-caps'] = true; // default: normal\n whiteList['font-variant-east-asian'] = true; // default: normal\n whiteList['font-variant-ligatures'] = true; // default: normal\n whiteList['font-variant-numeric'] = true; // default: normal\n whiteList['font-variant-position'] = true; // default: normal\n whiteList['font-weight'] = true; // default: normal\n whiteList['grid'] = false; // default: depending on individual properties\n whiteList['grid-area'] = false; // default: depending on individual properties\n whiteList['grid-auto-columns'] = false; // default: auto\n whiteList['grid-auto-flow'] = false; // default: none\n whiteList['grid-auto-rows'] = false; // default: auto\n whiteList['grid-column'] = false; // default: depending on individual properties\n whiteList['grid-column-end'] = false; // default: auto\n whiteList['grid-column-start'] = false; // default: auto\n whiteList['grid-row'] = false; // default: depending on individual properties\n whiteList['grid-row-end'] = false; // default: auto\n whiteList['grid-row-start'] = false; // default: auto\n whiteList['grid-template'] = false; // default: depending on individual properties\n whiteList['grid-template-areas'] = false; // default: none\n whiteList['grid-template-columns'] = false; // default: none\n whiteList['grid-template-rows'] = false; // default: none\n whiteList['hanging-punctuation'] = false; // default: none\n whiteList['height'] = true; // default: auto\n whiteList['hyphens'] = false; // default: manual\n whiteList['icon'] = false; // default: auto\n whiteList['image-orientation'] = false; // default: auto\n whiteList['image-resolution'] = false; // default: normal\n whiteList['ime-mode'] = false; // default: auto\n whiteList['initial-letters'] = false; // default: normal\n whiteList['inline-box-align'] = false; // default: last\n whiteList['justify-content'] = false; // default: auto\n whiteList['justify-items'] = false; // default: auto\n whiteList['justify-self'] = false; // default: auto\n whiteList['left'] = false; // default: auto\n whiteList['letter-spacing'] = true; // default: normal\n whiteList['lighting-color'] = true; // default: white\n whiteList['line-box-contain'] = false; // default: block inline replaced\n whiteList['line-break'] = false; // default: auto\n whiteList['line-grid'] = false; // default: match-parent\n whiteList['line-height'] = false; // default: normal\n whiteList['line-snap'] = false; // default: none\n whiteList['line-stacking'] = false; // default: depending on individual properties\n whiteList['line-stacking-ruby'] = false; // default: exclude-ruby\n whiteList['line-stacking-shift'] = false; // default: consider-shifts\n whiteList['line-stacking-strategy'] = false; // default: inline-line-height\n whiteList['list-style'] = true; // default: depending on individual properties\n whiteList['list-style-image'] = true; // default: none\n whiteList['list-style-position'] = true; // default: outside\n whiteList['list-style-type'] = true; // default: disc\n whiteList['margin'] = true; // default: depending on individual properties\n whiteList['margin-bottom'] = true; // default: 0\n whiteList['margin-left'] = true; // default: 0\n whiteList['margin-right'] = true; // default: 0\n whiteList['margin-top'] = true; // default: 0\n whiteList['marker-offset'] = false; // default: auto\n whiteList['marker-side'] = false; // default: list-item\n whiteList['marks'] = false; // default: none\n whiteList['mask'] = false; // default: border-box\n whiteList['mask-box'] = false; // default: see individual properties\n whiteList['mask-box-outset'] = false; // default: 0\n whiteList['mask-box-repeat'] = false; // default: stretch\n whiteList['mask-box-slice'] = false; // default: 0 fill\n whiteList['mask-box-source'] = false; // default: none\n whiteList['mask-box-width'] = false; // default: auto\n whiteList['mask-clip'] = false; // default: border-box\n whiteList['mask-image'] = false; // default: none\n whiteList['mask-origin'] = false; // default: border-box\n whiteList['mask-position'] = false; // default: center\n whiteList['mask-repeat'] = false; // default: no-repeat\n whiteList['mask-size'] = false; // default: border-box\n whiteList['mask-source-type'] = false; // default: auto\n whiteList['mask-type'] = false; // default: luminance\n whiteList['max-height'] = true; // default: none\n whiteList['max-lines'] = false; // default: none\n whiteList['max-width'] = true; // default: none\n whiteList['min-height'] = true; // default: 0\n whiteList['min-width'] = true; // default: 0\n whiteList['move-to'] = false; // default: normal\n whiteList['nav-down'] = false; // default: auto\n whiteList['nav-index'] = false; // default: auto\n whiteList['nav-left'] = false; // default: auto\n whiteList['nav-right'] = false; // default: auto\n whiteList['nav-up'] = false; // default: auto\n whiteList['object-fit'] = false; // default: fill\n whiteList['object-position'] = false; // default: 50% 50%\n whiteList['opacity'] = false; // default: 1\n whiteList['order'] = false; // default: 0\n whiteList['orphans'] = false; // default: 2\n whiteList['outline'] = false; // default: depending on individual properties\n whiteList['outline-color'] = false; // default: invert\n whiteList['outline-offset'] = false; // default: 0\n whiteList['outline-style'] = false; // default: none\n whiteList['outline-width'] = false; // default: medium\n whiteList['overflow'] = false; // default: depending on individual properties\n whiteList['overflow-wrap'] = false; // default: normal\n whiteList['overflow-x'] = false; // default: visible\n whiteList['overflow-y'] = false; // default: visible\n whiteList['padding'] = true; // default: depending on individual properties\n whiteList['padding-bottom'] = true; // default: 0\n whiteList['padding-left'] = true; // default: 0\n whiteList['padding-right'] = true; // default: 0\n whiteList['padding-top'] = true; // default: 0\n whiteList['page'] = false; // default: auto\n whiteList['page-break-after'] = false; // default: auto\n whiteList['page-break-before'] = false; // default: auto\n whiteList['page-break-inside'] = false; // default: auto\n whiteList['page-policy'] = false; // default: start\n whiteList['pause'] = false; // default: implementation dependent\n whiteList['pause-after'] = false; // default: implementation dependent\n whiteList['pause-before'] = false; // default: implementation dependent\n whiteList['perspective'] = false; // default: none\n whiteList['perspective-origin'] = false; // default: 50% 50%\n whiteList['pitch'] = false; // default: medium\n whiteList['pitch-range'] = false; // default: 50\n whiteList['play-during'] = false; // default: auto\n whiteList['position'] = false; // default: static\n whiteList['presentation-level'] = false; // default: 0\n whiteList['quotes'] = false; // default: text\n whiteList['region-fragment'] = false; // default: auto\n whiteList['resize'] = false; // default: none\n whiteList['rest'] = false; // default: depending on individual properties\n whiteList['rest-after'] = false; // default: none\n whiteList['rest-before'] = false; // default: none\n whiteList['richness'] = false; // default: 50\n whiteList['right'] = false; // default: auto\n whiteList['rotation'] = false; // default: 0\n whiteList['rotation-point'] = false; // default: 50% 50%\n whiteList['ruby-align'] = false; // default: auto\n whiteList['ruby-merge'] = false; // default: separate\n whiteList['ruby-position'] = false; // default: before\n whiteList['shape-image-threshold'] = false; // default: 0.0\n whiteList['shape-outside'] = false; // default: none\n whiteList['shape-margin'] = false; // default: 0\n whiteList['size'] = false; // default: auto\n whiteList['speak'] = false; // default: auto\n whiteList['speak-as'] = false; // default: normal\n whiteList['speak-header'] = false; // default: once\n whiteList['speak-numeral'] = false; // default: continuous\n whiteList['speak-punctuation'] = false; // default: none\n whiteList['speech-rate'] = false; // default: medium\n whiteList['stress'] = false; // default: 50\n whiteList['string-set'] = false; // default: none\n whiteList['tab-size'] = false; // default: 8\n whiteList['table-layout'] = false; // default: auto\n whiteList['text-align'] = true; // default: start\n whiteList['text-align-last'] = true; // default: auto\n whiteList['text-combine-upright'] = true; // default: none\n whiteList['text-decoration'] = true; // default: none\n whiteList['text-decoration-color'] = true; // default: currentColor\n whiteList['text-decoration-line'] = true; // default: none\n whiteList['text-decoration-skip'] = true; // default: objects\n whiteList['text-decoration-style'] = true; // default: solid\n whiteList['text-emphasis'] = true; // default: depending on individual properties\n whiteList['text-emphasis-color'] = true; // default: currentColor\n whiteList['text-emphasis-position'] = true; // default: over right\n whiteList['text-emphasis-style'] = true; // default: none\n whiteList['text-height'] = true; // default: auto\n whiteList['text-indent'] = true; // default: 0\n whiteList['text-justify'] = true; // default: auto\n whiteList['text-orientation'] = true; // default: mixed\n whiteList['text-overflow'] = true; // default: clip\n whiteList['text-shadow'] = true; // default: none\n whiteList['text-space-collapse'] = true; // default: collapse\n whiteList['text-transform'] = true; // default: none\n whiteList['text-underline-position'] = true; // default: auto\n whiteList['text-wrap'] = true; // default: normal\n whiteList['top'] = false; // default: auto\n whiteList['transform'] = false; // default: none\n whiteList['transform-origin'] = false; // default: 50% 50% 0\n whiteList['transform-style'] = false; // default: flat\n whiteList['transition'] = false; // default: depending on individual properties\n whiteList['transition-delay'] = false; // default: 0s\n whiteList['transition-duration'] = false; // default: 0s\n whiteList['transition-property'] = false; // default: all\n whiteList['transition-timing-function'] = false; // default: ease\n whiteList['unicode-bidi'] = false; // default: normal\n whiteList['vertical-align'] = false; // default: baseline\n whiteList['visibility'] = false; // default: visible\n whiteList['voice-balance'] = false; // default: center\n whiteList['voice-duration'] = false; // default: auto\n whiteList['voice-family'] = false; // default: implementation dependent\n whiteList['voice-pitch'] = false; // default: medium\n whiteList['voice-range'] = false; // default: medium\n whiteList['voice-rate'] = false; // default: normal\n whiteList['voice-stress'] = false; // default: normal\n whiteList['voice-volume'] = false; // default: medium\n whiteList['volume'] = false; // default: medium\n whiteList['white-space'] = false; // default: normal\n whiteList['widows'] = false; // default: 2\n whiteList['width'] = true; // default: auto\n whiteList['will-change'] = false; // default: auto\n whiteList['word-break'] = true; // default: normal\n whiteList['word-spacing'] = true; // default: normal\n whiteList['word-wrap'] = true; // default: normal\n whiteList['wrap-flow'] = false; // default: auto\n whiteList['wrap-through'] = false; // default: wrap\n whiteList['writing-mode'] = false; // default: horizontal-tb\n whiteList['z-index'] = false; // default: auto\n\n return whiteList;\n}\n\n\n/**\n * 匹配到白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onAttr (name, value, options) {\n // do nothing\n}\n\n/**\n * 匹配到不在白名单上的一个属性时\n *\n * @param {String} name\n * @param {String} value\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreAttr (name, value, options) {\n // do nothing\n}\n\nvar REGEXP_URL_JAVASCRIPT = /javascript\\s*\\:/img;\n\n/**\n * 过滤属性值\n *\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction safeAttrValue(name, value) {\n if (REGEXP_URL_JAVASCRIPT.test(value)) return '';\n return value;\n}\n\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onAttr = onAttr;\nexports.onIgnoreAttr = onIgnoreAttr;\nexports.safeAttrValue = safeAttrValue;\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, '');\n },\n trimRight: function (str) {\n if (String.prototype.trimRight) {\n return str.trimRight();\n }\n return str.replace(/(\\s*$)/g, '');\n }\n};\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar _ = require('./util');\n\n\n/**\n * 解析style\n *\n * @param {String} css\n * @param {Function} onAttr 处理属性的函数\n * 参数格式: function (sourcePosition, position, name, value, source)\n * @return {String}\n */\nfunction parseStyle (css, onAttr) {\n css = _.trimRight(css);\n if (css[css.length - 1] !== ';') css += ';';\n var cssLength = css.length;\n var isParenthesisOpen = false;\n var lastPos = 0;\n var i = 0;\n var retCSS = '';\n\n function addNewAttr () {\n // 如果没有正常的闭合圆括号,则直接忽略当前属性\n if (!isParenthesisOpen) {\n var source = _.trim(css.slice(lastPos, i));\n var j = source.indexOf(':');\n if (j !== -1) {\n var name = _.trim(source.slice(0, j));\n var value = _.trim(source.slice(j + 1));\n // 必须有属性名称\n if (name) {\n var ret = onAttr(lastPos, retCSS.length, name, value, source);\n if (ret) retCSS += ret + '; ';\n }\n }\n }\n lastPos = i + 1;\n }\n\n for (; i < cssLength; i++) {\n var c = css[i];\n if (c === '/' && css[i + 1] === '*') {\n // 备注开始\n var j = css.indexOf('*/', i + 2);\n // 如果没有正常的备注结束,则后面的部分全部跳过\n if (j === -1) break;\n // 直接将当前位置调到备注结尾,并且初始化状态\n i = j + 1;\n lastPos = i + 1;\n isParenthesisOpen = false;\n } else if (c === '(') {\n isParenthesisOpen = true;\n } else if (c === ')') {\n isParenthesisOpen = false;\n } else if (c === ';') {\n if (isParenthesisOpen) {\n // 在圆括号里面,忽略\n } else {\n addNewAttr();\n }\n } else if (c === '\\n') {\n addNewAttr();\n }\n }\n\n return _.trim(retCSS);\n}\n\nmodule.exports = parseStyle;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar parseStyle = require('./parser');\nvar _ = require('./util');\n\n\n/**\n * 返回值是否为空\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull (obj) {\n return (obj === undefined || obj === null);\n}\n\n/**\n * 浅拷贝对象\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\n/**\n * 创建CSS过滤器\n *\n * @param {Object} options\n * - {Object} whiteList\n * - {Function} onAttr\n * - {Function} onIgnoreAttr\n * - {Function} safeAttrValue\n */\nfunction FilterCSS (options) {\n options = shallowCopyObject(options || {});\n options.whiteList = options.whiteList || DEFAULT.whiteList;\n options.onAttr = options.onAttr || DEFAULT.onAttr;\n options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT.onIgnoreAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n this.options = options;\n}\n\nFilterCSS.prototype.process = function (css) {\n // 兼容各种奇葩输入\n css = css || '';\n css = css.toString();\n if (!css) return '';\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onAttr = options.onAttr;\n var onIgnoreAttr = options.onIgnoreAttr;\n var safeAttrValue = options.safeAttrValue;\n\n var retCSS = parseStyle(css, function (sourcePosition, position, name, value, source) {\n\n var check = whiteList[name];\n var isWhite = false;\n if (check === true) isWhite = check;\n else if (typeof check === 'function') isWhite = check(value);\n else if (check instanceof RegExp) isWhite = check.test(value);\n if (isWhite !== true) isWhite = false;\n\n // 如果过滤后 value 为空则直接忽略\n value = safeAttrValue(name, value);\n if (!value) return;\n\n var opts = {\n position: position,\n sourcePosition: sourcePosition,\n source: source,\n isWhite: isWhite\n };\n\n if (isWhite) {\n\n var ret = onAttr(name, value, opts);\n if (isNull(ret)) {\n return name + ':' + value;\n } else {\n return ret;\n }\n\n } else {\n\n var ret = onIgnoreAttr(name, value, opts);\n if (!isNull(ret)) {\n return ret;\n }\n\n }\n });\n\n return retCSS;\n};\n\n\nmodule.exports = FilterCSS;\n","/**\n * cssfilter\n *\n * @author 老雷\n */\n\nvar DEFAULT = require('./default');\nvar FilterCSS = require('./css');\n\n\n/**\n * XSS过滤\n *\n * @param {String} css 要过滤的CSS代码\n * @param {Object} options 选项:whiteList, onAttr, onIgnoreAttr\n * @return {String}\n */\nfunction filterCSS (html, options) {\n var xss = new FilterCSS(options);\n return xss.process(html);\n}\n\n\n// 输出\nexports = module.exports = filterCSS;\nexports.FilterCSS = FilterCSS;\nfor (var i in DEFAULT) exports[i] = DEFAULT[i];\n\n// 在浏览器端使用\nif (typeof window !== 'undefined') {\n window.filterCSS = module.exports;\n}\n","module.exports = {\n indexOf: function (arr, item) {\n var i, j;\n if (Array.prototype.indexOf) {\n return arr.indexOf(item);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n if (arr[i] === item) {\n return i;\n }\n }\n return -1;\n },\n forEach: function (arr, fn, scope) {\n var i, j;\n if (Array.prototype.forEach) {\n return arr.forEach(fn, scope);\n }\n for (i = 0, j = arr.length; i < j; i++) {\n fn.call(scope, arr[i], i, arr);\n }\n },\n trim: function (str) {\n if (String.prototype.trim) {\n return str.trim();\n }\n return str.replace(/(^\\s*)|(\\s*$)/g, \"\");\n },\n spaceIndex: function (str) {\n var reg = /\\s|\\n|\\t/;\n var match = reg.exec(str);\n return match ? match.index : -1;\n },\n};\n","/**\n * default settings\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar getDefaultCSSWhiteList = require(\"cssfilter\").getDefaultWhiteList;\nvar _ = require(\"./util\");\n\nfunction getDefaultWhiteList() {\n return {\n a: [\"target\", \"href\", \"title\"],\n abbr: [\"title\"],\n address: [],\n area: [\"shape\", \"coords\", \"href\", \"alt\"],\n article: [],\n aside: [],\n audio: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"preload\",\n \"src\",\n ],\n b: [],\n bdi: [\"dir\"],\n bdo: [\"dir\"],\n big: [],\n blockquote: [\"cite\"],\n br: [],\n caption: [],\n center: [],\n cite: [],\n code: [],\n col: [\"align\", \"valign\", \"span\", \"width\"],\n colgroup: [\"align\", \"valign\", \"span\", \"width\"],\n dd: [],\n del: [\"datetime\"],\n details: [\"open\"],\n div: [],\n dl: [],\n dt: [],\n em: [],\n figcaption: [],\n figure: [],\n font: [\"color\", \"size\", \"face\"],\n footer: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n header: [],\n hr: [],\n i: [],\n img: [\"src\", \"alt\", \"title\", \"width\", \"height\"],\n ins: [\"datetime\"],\n li: [],\n mark: [],\n nav: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n section: [],\n small: [],\n span: [],\n sub: [],\n summary: [],\n sup: [],\n strong: [],\n strike: [],\n table: [\"width\", \"border\", \"align\", \"valign\"],\n tbody: [\"align\", \"valign\"],\n td: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n tfoot: [\"align\", \"valign\"],\n th: [\"width\", \"rowspan\", \"colspan\", \"align\", \"valign\"],\n thead: [\"align\", \"valign\"],\n tr: [\"rowspan\", \"align\", \"valign\"],\n tt: [],\n u: [],\n ul: [],\n video: [\n \"autoplay\",\n \"controls\",\n \"crossorigin\",\n \"loop\",\n \"muted\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"src\",\n \"height\",\n \"width\",\n ],\n };\n}\n\nvar defaultCSSFilter = new FilterCSS();\n\n/**\n * default onTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onIgnoreTag function\n *\n * @param {String} tag\n * @param {String} html\n * @param {Object} options\n * @return {String}\n */\nfunction onIgnoreTag(tag, html, options) {\n // do nothing\n}\n\n/**\n * default onTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default onIgnoreTagAttr function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @return {String}\n */\nfunction onIgnoreTagAttr(tag, name, value) {\n // do nothing\n}\n\n/**\n * default escapeHtml function\n *\n * @param {String} html\n */\nfunction escapeHtml(html) {\n return html.replace(REGEXP_LT, \"<\").replace(REGEXP_GT, \">\");\n}\n\n/**\n * default safeAttrValue function\n *\n * @param {String} tag\n * @param {String} name\n * @param {String} value\n * @param {Object} cssFilter\n * @return {String}\n */\nfunction safeAttrValue(tag, name, value, cssFilter) {\n // unescape attribute value firstly\n value = friendlyAttrValue(value);\n\n if (name === \"href\" || name === \"src\") {\n // filter `href` and `src` attribute\n // only allow the value that starts with `http://` | `https://` | `mailto:` | `/` | `#`\n value = _.trim(value);\n if (value === \"#\") return \"#\";\n if (\n !(\n value.substr(0, 7) === \"http://\" ||\n value.substr(0, 8) === \"https://\" ||\n value.substr(0, 7) === \"mailto:\" ||\n value.substr(0, 4) === \"tel:\" ||\n value.substr(0, 11) === \"data:image/\" ||\n value.substr(0, 6) === \"ftp://\" ||\n value.substr(0, 2) === \"./\" ||\n value.substr(0, 3) === \"../\" ||\n value[0] === \"#\" ||\n value[0] === \"/\"\n )\n ) {\n return \"\";\n }\n } else if (name === \"background\") {\n // filter `background` attribute (maybe no use)\n // `javascript:`\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n } else if (name === \"style\") {\n // `expression()`\n REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) {\n return \"\";\n }\n // `url()`\n REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {\n REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;\n if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) {\n return \"\";\n }\n }\n if (cssFilter !== false) {\n cssFilter = cssFilter || defaultCSSFilter;\n value = cssFilter.process(value);\n }\n }\n\n // escape `<>\"` before returns\n value = escapeAttrValue(value);\n return value;\n}\n\n// RegExp list\nvar REGEXP_LT = //g;\nvar REGEXP_QUOTE = /\"/g;\nvar REGEXP_QUOTE_2 = /"/g;\nvar REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;\nvar REGEXP_ATTR_VALUE_COLON = /:?/gim;\nvar REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_3 = /\\/\\*|\\*\\//gm;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_4 =\n /((j\\s*a\\s*v\\s*a|v\\s*b|l\\s*i\\s*v\\s*e)\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t\\s*|m\\s*o\\s*c\\s*h\\s*a):/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_5 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:/gi;\n// var REGEXP_DEFAULT_ON_TAG_ATTR_6 = /^[\\s\"'`]*(d\\s*a\\s*t\\s*a\\s*)\\:\\s*image\\//gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_7 =\n /e\\s*x\\s*p\\s*r\\s*e\\s*s\\s*s\\s*i\\s*o\\s*n\\s*\\(.*/gi;\nvar REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\\s*r\\s*l\\s*\\(.*/gi;\n\n/**\n * escape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction escapeQuote(str) {\n return str.replace(REGEXP_QUOTE, \""\");\n}\n\n/**\n * unescape double quote\n *\n * @param {String} str\n * @return {String} str\n */\nfunction unescapeQuote(str) {\n return str.replace(REGEXP_QUOTE_2, '\"');\n}\n\n/**\n * escape html entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeHtmlEntities(str) {\n return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str, code) {\n return code[0] === \"x\" || code[0] === \"X\"\n ? String.fromCharCode(parseInt(code.substr(1), 16))\n : String.fromCharCode(parseInt(code, 10));\n });\n}\n\n/**\n * escape html5 new danger entities\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeDangerHtml5Entities(str) {\n return str\n .replace(REGEXP_ATTR_VALUE_COLON, \":\")\n .replace(REGEXP_ATTR_VALUE_NEWLINE, \" \");\n}\n\n/**\n * clear nonprintable characters\n *\n * @param {String} str\n * @return {String}\n */\nfunction clearNonPrintableCharacter(str) {\n var str2 = \"\";\n for (var i = 0, len = str.length; i < len; i++) {\n str2 += str.charCodeAt(i) < 32 ? \" \" : str.charAt(i);\n }\n return _.trim(str2);\n}\n\n/**\n * get friendly attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction friendlyAttrValue(str) {\n str = unescapeQuote(str);\n str = escapeHtmlEntities(str);\n str = escapeDangerHtml5Entities(str);\n str = clearNonPrintableCharacter(str);\n return str;\n}\n\n/**\n * unescape attribute value\n *\n * @param {String} str\n * @return {String}\n */\nfunction escapeAttrValue(str) {\n str = escapeQuote(str);\n str = escapeHtml(str);\n return str;\n}\n\n/**\n * `onIgnoreTag` function for removing all the tags that are not in whitelist\n */\nfunction onIgnoreTagStripAll() {\n return \"\";\n}\n\n/**\n * remove tag body\n * specify a `tags` list, if the tag is not in the `tags` list then process by the specify function (optional)\n *\n * @param {array} tags\n * @param {function} next\n */\nfunction StripTagBody(tags, next) {\n if (typeof next !== \"function\") {\n next = function () {};\n }\n\n var isRemoveAllTag = !Array.isArray(tags);\n function isRemoveTag(tag) {\n if (isRemoveAllTag) return true;\n return _.indexOf(tags, tag) !== -1;\n }\n\n var removeList = [];\n var posStart = false;\n\n return {\n onIgnoreTag: function (tag, html, options) {\n if (isRemoveTag(tag)) {\n if (options.isClosing) {\n var ret = \"[/removed]\";\n var end = options.position + ret.length;\n removeList.push([\n posStart !== false ? posStart : options.position,\n end,\n ]);\n posStart = false;\n return ret;\n } else {\n if (!posStart) {\n posStart = options.position;\n }\n return \"[removed]\";\n }\n } else {\n return next(tag, html, options);\n }\n },\n remove: function (html) {\n var rethtml = \"\";\n var lastPos = 0;\n _.forEach(removeList, function (pos) {\n rethtml += html.slice(lastPos, pos[0]);\n lastPos = pos[1];\n });\n rethtml += html.slice(lastPos);\n return rethtml;\n },\n };\n}\n\n/**\n * remove html comments\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripCommentTag(html) {\n var retHtml = \"\";\n var lastPos = 0;\n while (lastPos < html.length) {\n var i = html.indexOf(\"\", i);\n if (j === -1) {\n break;\n }\n lastPos = j + 3;\n }\n return retHtml;\n}\n\n/**\n * remove invisible characters\n *\n * @param {String} html\n * @return {String}\n */\nfunction stripBlankChar(html) {\n var chars = html.split(\"\");\n chars = chars.filter(function (char) {\n var c = char.charCodeAt(0);\n if (c === 127) return false;\n if (c <= 31) {\n if (c === 10 || c === 13) return true;\n return false;\n }\n return true;\n });\n return chars.join(\"\");\n}\n\nexports.whiteList = getDefaultWhiteList();\nexports.getDefaultWhiteList = getDefaultWhiteList;\nexports.onTag = onTag;\nexports.onIgnoreTag = onIgnoreTag;\nexports.onTagAttr = onTagAttr;\nexports.onIgnoreTagAttr = onIgnoreTagAttr;\nexports.safeAttrValue = safeAttrValue;\nexports.escapeHtml = escapeHtml;\nexports.escapeQuote = escapeQuote;\nexports.unescapeQuote = unescapeQuote;\nexports.escapeHtmlEntities = escapeHtmlEntities;\nexports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;\nexports.clearNonPrintableCharacter = clearNonPrintableCharacter;\nexports.friendlyAttrValue = friendlyAttrValue;\nexports.escapeAttrValue = escapeAttrValue;\nexports.onIgnoreTagStripAll = onIgnoreTagStripAll;\nexports.StripTagBody = StripTagBody;\nexports.stripCommentTag = stripCommentTag;\nexports.stripBlankChar = stripBlankChar;\nexports.cssFilter = defaultCSSFilter;\nexports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;\n","/**\n * Simple HTML Parser\n *\n * @author Zongmin Lei\n */\n\nvar _ = require(\"./util\");\n\n/**\n * get tag name\n *\n * @param {String} html e.g. ''\n * @return {String}\n */\nfunction getTagName(html) {\n var i = _.spaceIndex(html);\n var tagName;\n if (i === -1) {\n tagName = html.slice(1, -1);\n } else {\n tagName = html.slice(1, i + 1);\n }\n tagName = _.trim(tagName).toLowerCase();\n if (tagName.slice(0, 1) === \"/\") tagName = tagName.slice(1);\n if (tagName.slice(-1) === \"/\") tagName = tagName.slice(0, -1);\n return tagName;\n}\n\n/**\n * is close tag?\n *\n * @param {String} html 如:''\n * @return {Boolean}\n */\nfunction isClosing(html) {\n return html.slice(0, 2) === \"\" || currentPos === len - 1) {\n rethtml += escapeHtml(html.slice(lastPos, tagStart));\n currentHtml = html.slice(tagStart, currentPos + 1);\n currentTagName = getTagName(currentHtml);\n rethtml += onTag(\n tagStart,\n rethtml.length,\n currentTagName,\n currentHtml,\n isClosing(currentHtml)\n );\n lastPos = currentPos + 1;\n tagStart = false;\n continue;\n }\n if (c === '\"' || c === \"'\") {\n var i = 1;\n var ic = html.charAt(currentPos - i);\n\n while (ic.trim() === \"\" || ic === \"=\") {\n if (ic === \"=\") {\n quoteStart = c;\n continue chariterator;\n }\n ic = html.charAt(currentPos - ++i);\n }\n }\n } else {\n if (c === quoteStart) {\n quoteStart = false;\n continue;\n }\n }\n }\n }\n if (lastPos < len) {\n rethtml += escapeHtml(html.substr(lastPos));\n }\n\n return rethtml;\n}\n\nvar REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\\\_:.-]/gim;\n\n/**\n * parse input attributes and returns processed attributes\n *\n * @param {String} html e.g. `href=\"#\" target=\"_blank\"`\n * @param {Function} onAttr e.g. `function (name, value)`\n * @return {String}\n */\nfunction parseAttr(html, onAttr) {\n \"use strict\";\n\n var lastPos = 0;\n var lastMarkPos = 0;\n var retAttrs = [];\n var tmpName = false;\n var len = html.length;\n\n function addAttr(name, value) {\n name = _.trim(name);\n name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, \"\").toLowerCase();\n if (name.length < 1) return;\n var ret = onAttr(name, value || \"\");\n if (ret) retAttrs.push(ret);\n }\n\n // 逐个分析字符\n for (var i = 0; i < len; i++) {\n var c = html.charAt(i);\n var v, j;\n if (tmpName === false && c === \"=\") {\n tmpName = html.slice(lastPos, i);\n lastPos = i + 1;\n lastMarkPos = html.charAt(lastPos) === '\"' || html.charAt(lastPos) === \"'\" ? lastPos : findNextQuotationMark(html, i + 1);\n continue;\n }\n if (tmpName !== false) {\n if (\n i === lastMarkPos\n ) {\n j = html.indexOf(c, i + 1);\n if (j === -1) {\n break;\n } else {\n v = _.trim(html.slice(lastMarkPos + 1, j));\n addAttr(tmpName, v);\n tmpName = false;\n i = j;\n lastPos = i + 1;\n continue;\n }\n }\n }\n if (/\\s|\\n|\\t/.test(c)) {\n html = html.replace(/\\s|\\n|\\t/g, \" \");\n if (tmpName === false) {\n j = findNextEqual(html, i);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n addAttr(v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n i = j - 1;\n continue;\n }\n } else {\n j = findBeforeEqual(html, i - 1);\n if (j === -1) {\n v = _.trim(html.slice(lastPos, i));\n v = stripQuoteWrap(v);\n addAttr(tmpName, v);\n tmpName = false;\n lastPos = i + 1;\n continue;\n } else {\n continue;\n }\n }\n }\n }\n\n if (lastPos < html.length) {\n if (tmpName === false) {\n addAttr(html.slice(lastPos));\n } else {\n addAttr(tmpName, stripQuoteWrap(_.trim(html.slice(lastPos))));\n }\n }\n\n return _.trim(retAttrs.join(\" \"));\n}\n\nfunction findNextEqual(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction findNextQuotationMark(str, i) {\n for (; i < str.length; i++) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"'\" || c === '\"') return i;\n return -1;\n }\n}\n\nfunction findBeforeEqual(str, i) {\n for (; i > 0; i--) {\n var c = str[i];\n if (c === \" \") continue;\n if (c === \"=\") return i;\n return -1;\n }\n}\n\nfunction isQuoteWrapString(text) {\n if (\n (text[0] === '\"' && text[text.length - 1] === '\"') ||\n (text[0] === \"'\" && text[text.length - 1] === \"'\")\n ) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction stripQuoteWrap(text) {\n if (isQuoteWrapString(text)) {\n return text.substr(1, text.length - 2);\n } else {\n return text;\n }\n}\n\nexports.parseTag = parseTag;\nexports.parseAttr = parseAttr;\n","/**\n * filter xss\n *\n * @author Zongmin Lei\n */\n\nvar FilterCSS = require(\"cssfilter\").FilterCSS;\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar parseTag = parser.parseTag;\nvar parseAttr = parser.parseAttr;\nvar _ = require(\"./util\");\n\n/**\n * returns `true` if the input value is `undefined` or `null`\n *\n * @param {Object} obj\n * @return {Boolean}\n */\nfunction isNull(obj) {\n return obj === undefined || obj === null;\n}\n\n/**\n * get attributes for a tag\n *\n * @param {String} html\n * @return {Object}\n * - {String} html\n * - {Boolean} closing\n */\nfunction getAttrs(html) {\n var i = _.spaceIndex(html);\n if (i === -1) {\n return {\n html: \"\",\n closing: html[html.length - 2] === \"/\",\n };\n }\n html = _.trim(html.slice(i + 1, -1));\n var isClosing = html[html.length - 1] === \"/\";\n if (isClosing) html = _.trim(html.slice(0, -1));\n return {\n html: html,\n closing: isClosing,\n };\n}\n\n/**\n * shallow copy\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction shallowCopyObject(obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n return ret;\n}\n\nfunction keysToLowerCase(obj) {\n var ret = {};\n for (var i in obj) {\n if (Array.isArray(obj[i])) {\n ret[i.toLowerCase()] = obj[i].map(function (item) {\n return item.toLowerCase();\n });\n } else {\n ret[i.toLowerCase()] = obj[i];\n }\n }\n return ret;\n}\n\n/**\n * FilterXSS class\n *\n * @param {Object} options\n * whiteList (or allowList), onTag, onTagAttr, onIgnoreTag,\n * onIgnoreTagAttr, safeAttrValue, escapeHtml\n * stripIgnoreTagBody, allowCommentTag, stripBlankChar\n * css{whiteList, onAttr, onIgnoreAttr} `css=false` means don't use `cssfilter`\n */\nfunction FilterXSS(options) {\n options = shallowCopyObject(options || {});\n\n if (options.stripIgnoreTag) {\n if (options.onIgnoreTag) {\n console.error(\n 'Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time'\n );\n }\n options.onIgnoreTag = DEFAULT.onIgnoreTagStripAll;\n }\n if (options.whiteList || options.allowList) {\n options.whiteList = keysToLowerCase(options.whiteList || options.allowList);\n } else {\n options.whiteList = DEFAULT.whiteList;\n }\n\n options.onTag = options.onTag || DEFAULT.onTag;\n options.onTagAttr = options.onTagAttr || DEFAULT.onTagAttr;\n options.onIgnoreTag = options.onIgnoreTag || DEFAULT.onIgnoreTag;\n options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT.onIgnoreTagAttr;\n options.safeAttrValue = options.safeAttrValue || DEFAULT.safeAttrValue;\n options.escapeHtml = options.escapeHtml || DEFAULT.escapeHtml;\n this.options = options;\n\n if (options.css === false) {\n this.cssFilter = false;\n } else {\n options.css = options.css || {};\n this.cssFilter = new FilterCSS(options.css);\n }\n}\n\n/**\n * start process and returns result\n *\n * @param {String} html\n * @return {String}\n */\nFilterXSS.prototype.process = function (html) {\n // compatible with the input\n html = html || \"\";\n html = html.toString();\n if (!html) return \"\";\n\n var me = this;\n var options = me.options;\n var whiteList = options.whiteList;\n var onTag = options.onTag;\n var onIgnoreTag = options.onIgnoreTag;\n var onTagAttr = options.onTagAttr;\n var onIgnoreTagAttr = options.onIgnoreTagAttr;\n var safeAttrValue = options.safeAttrValue;\n var escapeHtml = options.escapeHtml;\n var cssFilter = me.cssFilter;\n\n // remove invisible characters\n if (options.stripBlankChar) {\n html = DEFAULT.stripBlankChar(html);\n }\n\n // remove html comments\n if (!options.allowCommentTag) {\n html = DEFAULT.stripCommentTag(html);\n }\n\n // if enable stripIgnoreTagBody\n var stripIgnoreTagBody = false;\n if (options.stripIgnoreTagBody) {\n stripIgnoreTagBody = DEFAULT.StripTagBody(\n options.stripIgnoreTagBody,\n onIgnoreTag\n );\n onIgnoreTag = stripIgnoreTagBody.onIgnoreTag;\n }\n\n var retHtml = parseTag(\n html,\n function (sourcePosition, position, tag, html, isClosing) {\n var info = {\n sourcePosition: sourcePosition,\n position: position,\n isClosing: isClosing,\n isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag),\n };\n\n // call `onTag()`\n var ret = onTag(tag, html, info);\n if (!isNull(ret)) return ret;\n\n if (info.isWhite) {\n if (info.isClosing) {\n return \"\";\n }\n\n var attrs = getAttrs(html);\n var whiteAttrList = whiteList[tag];\n var attrsHtml = parseAttr(attrs.html, function (name, value) {\n // call `onTagAttr()`\n var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;\n var ret = onTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n\n if (isWhiteAttr) {\n // call `safeAttrValue()`\n value = safeAttrValue(tag, name, value, cssFilter);\n if (value) {\n return name + '=\"' + value + '\"';\n } else {\n return name;\n }\n } else {\n // call `onIgnoreTagAttr()`\n ret = onIgnoreTagAttr(tag, name, value, isWhiteAttr);\n if (!isNull(ret)) return ret;\n return;\n }\n });\n\n // build new tag html\n html = \"<\" + tag;\n if (attrsHtml) html += \" \" + attrsHtml;\n if (attrs.closing) html += \" /\";\n html += \">\";\n return html;\n } else {\n // call `onIgnoreTag()`\n ret = onIgnoreTag(tag, html, info);\n if (!isNull(ret)) return ret;\n return escapeHtml(html);\n }\n },\n escapeHtml\n );\n\n // if enable stripIgnoreTagBody\n if (stripIgnoreTagBody) {\n retHtml = stripIgnoreTagBody.remove(retHtml);\n }\n\n return retHtml;\n};\n\nmodule.exports = FilterXSS;\n","/**\n * xss\n *\n * @author Zongmin Lei\n */\n\nvar DEFAULT = require(\"./default\");\nvar parser = require(\"./parser\");\nvar FilterXSS = require(\"./xss\");\n\n/**\n * filter xss function\n *\n * @param {String} html\n * @param {Object} options { whiteList, onTag, onTagAttr, onIgnoreTag, onIgnoreTagAttr, safeAttrValue, escapeHtml }\n * @return {String}\n */\nfunction filterXSS(html, options) {\n var xss = new FilterXSS(options);\n return xss.process(html);\n}\n\nexports = module.exports = filterXSS;\nexports.filterXSS = filterXSS;\nexports.FilterXSS = FilterXSS;\n\n(function () {\n for (var i in DEFAULT) {\n exports[i] = DEFAULT[i];\n }\n for (var j in parser) {\n exports[j] = parser[j];\n }\n})();\n\n// using `xss` on the browser, output `filterXSS` to the globals\nif (typeof window !== \"undefined\") {\n window.filterXSS = module.exports;\n}\n\n// using `xss` on the WebWorker, output `filterXSS` to the globals\nfunction isWorkerEnv() {\n return (\n typeof self !== \"undefined\" &&\n typeof DedicatedWorkerGlobalScope !== \"undefined\" &&\n self instanceof DedicatedWorkerGlobalScope\n );\n}\nif (isWorkerEnv()) {\n self.filterXSS = module.exports;\n}\n","import { getOr } from \"./lodash\";\nimport xss from \"xss\";\n\nconst queryString = require('query-string');\n\nexport function historyPushState(newurl, isReplace = false) {\n if (window.location.pathname + window.location.search !== newurl) {\n if (window.history.pushState) {\n if (isReplace && window.history.replaceState) {\n window.history.replaceState({ path: newurl }, '', newurl);\n } else {\n window.history.pushState({ path: newurl }, '', newurl);\n }\n } else {\n window.location.href = newurl;\n }\n }\n}\n\nexport function replaceScript(text = \"\") {\n if (Array.isArray(text)) {\n for (let index = 0; index < text.length; index++) {\n const element = text[index];\n text[index] = replaceScript(element);\n }\n return text;\n }\n if (!text || typeof text !== \"string\") return \"\";\n return xss(text, { stripIgnoreTag: true });\n}\n\nexport function getParamUrl(name, source = window.location.search) {\n const data = queryString.parse(source);\n for (const [key, value] of Object.entries(data)) {\n data[key] = replaceScript(value);\n }\n return name ? getOr(undefined, name)(data) : data;\n}\n\n\nexport const changeQueryString = (key, value, url) => {\n if (!url) url = window.location.href;\n if (url.indexOf(\"http\") === -1) {\n url = window.location.origin + url;\n }\n if ('URL' in window) {\n const result = new URL(url);\n if (typeof value !== 'undefined' && value !== null) {\n result.searchParams.set(key, value);\n } else {\n result.searchParams.delete(key);\n }\n return result.href;\n } else {\n var re = new RegExp(\"([?&])\" + key + \"=.*?(&|#|$)(.*)\", \"gi\"),\n hash;\n\n if (re.test(url)) {\n if (typeof value !== 'undefined' && value !== null) {\n return url.replace(re, '$1' + key + \"=\" + value + '$2$3');\n }\n else {\n hash = url.split('#');\n url = hash[0].replace(re, '$1$3').replace(/(&|\\?)$/, '');\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\n url += '#' + hash[1];\n }\n return url;\n }\n }\n else {\n if (typeof value !== 'undefined' && value !== null) {\n var separator = url.indexOf('?') !== -1 ? '&' : '?';\n hash = url.split('#');\n url = hash[0] + separator + key + '=' + value;\n if (typeof hash[1] !== 'undefined' && hash[1] !== null) {\n url += '#' + hash[1];\n }\n return url;\n }\n else {\n return url;\n }\n }\n }\n}\n\nexport function changeQuery(obj = {}, url, isReplace = true) {\n if (!url) url = window.location.href;\n Object.keys(obj).forEach(key => {\n url = changeQueryString(key, obj[key], url);\n })\n historyPushState(url, isReplace);\n}","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","export default import.meta.ROLLUP_FILE_URL_beb99813;","export default import.meta.ROLLUP_FILE_URL_ed50ae27;","export default import.meta.ROLLUP_FILE_URL_b45e6de6;","export default import.meta.ROLLUP_FILE_URL_aaabd9ba;","export default import.meta.ROLLUP_FILE_URL_b831c9bf;","const CURRENCY = require(\"./currency.json\");\n\nexport const CURRENCY_ATTRIBUTE = {\n DC_SYMBOL: \"dc_symbol\",\n CODE: \"code\",\n PRECISION: \"precision\"\n}\n\n/** @returns {{ dc_symbol, code, decimals, precision }} */\nexport function getCurrencyItem({ source, by = CURRENCY_ATTRIBUTE.CODE, attribute, defaultValue = {} } = {}) {\n if (!source || typeof source !== \"string\") {\n return getValueByField(defaultValue, attribute);\n }\n\n source = source.toUpperCase();\n\n let result = getCurItemByField(source, by, by !== CURRENCY_ATTRIBUTE.CODE);\n\n if (!result) result = defaultValue;\n\n return getValueByField(result, attribute);\n}\n\nexport function getCurItemByField(source, field, runAll = true) {\n if (field === CURRENCY_ATTRIBUTE.CODE) {\n return CURRENCY[source] || {};\n }\n // Get currency item other code field\n let result = [];\n\n const arr = Object.keys(CURRENCY);\n for (let i = 0; i < arr.length; i++) {\n const key = arr[i];\n if (source.includes(CURRENCY[key][field])) {\n if (!runAll) {\n return CURRENCY[key];\n }\n result.push(CURRENCY[key]);\n }\n }\n if (result.length === 1) {\n return result[0];\n }\n\n return {};\n}\n\n\nfunction getValueByField(result, field) {\n return field ? (result[field] || \"\") : result;\n}\n\nexport function getPriceText(price = 0, currency, locales) {\n let currencyItem = getCurrencyItem({ source: currency }) || {};\n let symbol = currencyItem.dc_symbol || \"\", precision = currencyItem.precision !== undefined ? currencyItem.precision : 2;\n let zeroNum = precision ? Number(0).toFixed(precision) : 0;\n\n if (isEmptyNumber(price)) return genPriceText(zeroNum, symbol);\n\n try {\n const formatter = new Intl.NumberFormat(locales || 'en-US', {\n currency: currency || 'VND',\n minimumFractionDigits: precision,\n });\n if (typeof price === \"string\") {\n if (Number.isNaN(price * 1)) {\n price = priceParse(price);\n } else {\n price = price * 1;\n }\n }\n const result = formatter.format(price);\n return genPriceText(result.indexOf(\"NaN\") !== -1 ? zeroNum : result, symbol);\n } catch (error) {\n console.error(error);\n return genPriceText(zeroNum, symbol);\n }\n}\n\nexport function isEmptyNumber(num) {\n return !num || num === \"null\" || num === \"undefined\" || num === \"0\" || Number.isNaN(num) || num * 1 === 0 || (typeof (num) !== \"number\" && typeof (num) !== \"string\");\n}\n\nfunction genPriceText(price = 0, symbol = \"\") {\n return `${symbol}${price}`;\n}\n\nexport function stringToPrice(string) {\n let data = (string + \"\").replace(/ /g, '').toLowerCase();\n\n data = priceSplitPrice(data);\n\n data = priceParse(data);\n\n return data;\n}\n\nexport const priceSplitPrice = (source = \"\") => {\n if (typeof source !== \"string\") {\n return \"\";\n }\n const arr = source.match(/[\\d,.]+/g);\n if (arr && arr.length > 0) {\n return arr[arr.length - 1];\n }\n\n return \"\";\n}\n\nexport const priceParse = (source = \"\") => {\n if (!source) return 0;\n if (typeof source === \"number\") return source;\n const countDot = (source.match(/\\./g) || []).length;\n if (countDot > 1) {\n source = source.replace(/\\./g, '').replace(/,/g, '.');\n return +source || 0;\n }\n source = source.replace(/,/g, '');\n return +source || 0;\n}\n\nexport function getSymbolCurrency(source) {\n return getCurrencyItem({ source: source, attribute: CURRENCY_ATTRIBUTE.DC_SYMBOL });\n}\n\nexport function convertCurrencyNoSymbol(source, currency, locales) {\n try {\n const formatter = new Intl.NumberFormat(locales || 'en-US', {\n currency: currency || 'VND',\n });\n const result = formatter.format(source);\n return result.indexOf(\"NaN\") !== -1 ? \"\" : result;\n } catch (error) {\n console.error(error)\n return \"\";\n }\n}\n\nexport function convertCurrencyList(list, currentCur) {\n let result = [], sortedList = [];\n if (Array.isArray(list) && list.length > 0) {\n if (currentCur) {\n sortedList[0] = currentCur;\n list.forEach(element => {\n if (element !== currentCur) sortedList.push(element);\n });\n } else {\n sortedList = list;\n }\n result = sortedList.map(item => {\n let symbol = getSymbolCurrency(item);\n return {\n value: (item || \"\").toUpperCase(),\n label: `${symbol ? symbol + \" - \" : \"\"}` + item\n }\n })\n }\n return result;\n}\n\nexport function formatDate(input) {\n const date = new Date(input);\n const options = { year: 'numeric', month: '2-digit', day: '2-digit' };\n const formattedDate2 = new Intl.DateTimeFormat('en-GB', options).format(date);\n return formattedDate2;\n}\n\nexport function formatTime(input) {\n const date = new Date(input);\n const options = {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false // Use 24-hour format\n };\n\n const formatter = new Intl.DateTimeFormat('en-US', options);\n return formatter.format(date);\n}","import Countries from \"./countries.json\";\n\nconst COUNTRY_EMPTY = { \"iso2\": \"\", \"name\": \"\", \"name_vi\": \"\", \"lang\": \"\", \"currency_code\": \"\" };\nexport function getCountry(countryCode = \"\") {\n return Countries.data.find(country => country.iso2 === countryCode) || COUNTRY_EMPTY;\n}\n\nexport function getCurrencyCodeByCountry(countryCode = \"\") {\n if (!countryCode) return \"\";\n let country = getCountry(countryCode);\n return country.currency_code || \"\";\n}\n\nexport function getNamesCountry() {\n let result = {};\n Countries.data.forEach((country => {\n result[country.iso2] = {\n \"name\": country.name,\n \"name_vi\": country.name_vi\n }\n }));\n return result;\n}\n\n/**\n * @returns {{ value: String, label: String, label_vi: String }}\n */\nexport function convertShippingList(list, currentShip) {\n let result = [], sortedList = [];\n if (Array.isArray(list) && list.length > 0) {\n if (currentShip) {\n sortedList[0] = currentShip;\n list.forEach(element => {\n if (element !== currentShip) sortedList.push(element);\n });\n } else {\n sortedList = list;\n }\n let tempList = [];\n sortedList.forEach(item => {\n let ship = (item || \"\").toUpperCase();\n let country = Countries.data.find(country => country.iso2 === ship);\n if (country?.name) {\n tempList.push({\n value: ship,\n label: country?.name || \"\",\n label_vi: country?.name_vi || \"\",\n })\n }\n })\n result = tempList;\n }\n return result;\n}","import { getCountry } from \"../utils/country\";\n\nexport class Address {\n constructor(id, uid, firstName, lastName, phoneNumber, email, address, addressOption, city, state, country, zipCode, ward, addressType) {\n this.id = id;\n this.uid = uid;\n this.firstName = firstName;\n this.lastName = lastName;\n this.phoneNumber = phoneNumber;\n this.email = email;\n this.address = address;\n this.addressOption = addressOption;\n this.city = city;\n this.state = state;\n this.country = country;\n this.zipCode = zipCode;\n this.ward = ward;\n this.addressType = addressType;\n }\n\n static fromApiObject(input) {\n let result = new Address();\n if (input && typeof (input) === \"object\") {\n result = new Address(\n input.id,\n input.uid,\n input.first_name,\n input.last_name,\n input.phone,\n input.email,\n input.address_1,\n input.address_2,\n input.province || input.city || \"\",\n input.state,\n input.country,\n input.postal_code,\n input.ward,\n input.address_type,\n );\n }\n\n return result;\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Address.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Address.fromApiObject(input)];\n }\n\n return [];\n }\n\n getAdressFull() {\n const country = this.country;\n let countryLabel = \"\";\n if (country) {\n countryLabel = getCountry(country)[\"name\"];\n }\n\n return `${this.address || \"\"}${this.addressOption ? \", \" + this.addressOption : \"\"}${this.ward ? \" \" + this.ward : \"\"}${this.state ? \", \" + this.state : \"\"}${this.city ? \", \" + this.city : \"\"}${this.zipCode ? \", \" + this.zipCode : \"\"}${countryLabel ? \", \" + countryLabel : \"\"}`\n }\n\n static TYPE = {\n SHIPPING_INFO: \"shipping_info\",\n BILLING_INFO: \"billing_info\",\n }\n}","import DC from \"../DC\";\n\nexport class Fee {\n constructor(\n key,\n amount,\n currency,\n title,\n type,\n description\n ) {\n this.key = key;\n this.amount = amount;\n this.currency = currency;\n this.title = title;\n this.type = type;\n this.description = description;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Fee(\n input.key,\n +input.amount,\n input.cur,\n input.title,\n input.fee_type,\n input.description\n )\n }\n\n return new Fee();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Fee.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Fee.fromApiObject(input)];\n }\n\n return [];\n }\n static mergeFee(fees) {\n var result = fees.filter(item => item.key !== Fee.FEE_LIST_ID.FEE)\n var dutycastFee = fees.find(item => item.key === Fee.FEE_LIST_ID.FEE);\n result.forEach(element => {\n if (element.key === Fee.FEE_LIST_ID.SHIPPING_COST) {\n if (dutycastFee) {\n element.amount += dutycastFee.amount;\n }\n }\n element.description = element.description || (this.FEE_LIST_LABEL[element.key] ? DC.i18n(this.FEE_LIST_LABEL[element.key]) : \"\");\n });\n return result;\n }\n\n static FEE_LIST_ID = {\n PRODUCTS: \"products\",\n SHIPPING_COST: 'shipping_cost',\n TAX: 'duties_and_taxes_fee',\n FEE: 'dutycast_fee',\n OFFER: 'dutycast_offer',\n VIP: 'vip_checkout',\n SMART: 'smart_payment',\n PROMOTION_FEE_SHIPPING: 'promotion_free_shipping',\n OTHER_FEE: \"other_fee\",\n }\n\n static FEE_LIST_LABEL = {\n [this.FEE_LIST_ID.PRODUCTS]: \"checkout_noteProduct\",\n [this.FEE_LIST_ID.SHIPPING_COST]: 'checkout_noteShipping',\n [this.FEE_LIST_ID.TAX]: 'checkout_noteTax',\n [this.FEE_LIST_ID.OTHER_FEE]: \"checkout_noteOtherFee\",\n }\n}","export class MetaProduct {\n constructor(title, image, color, size, currentUrl, originPrice, originPriceCur) {\n this.title = title;\n this.image = image;\n this.color = color;\n this.size = size;\n this.currentUrl = currentUrl;\n this.originPrice = originPrice;\n this.originPriceCur = originPriceCur;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new MetaProduct(\n input[META_PRODUCT_ATTRIBUTE.TITLE],\n input[META_PRODUCT_ATTRIBUTE.IMAGE],\n input[META_PRODUCT_ATTRIBUTE.COLOR],\n input[META_PRODUCT_ATTRIBUTE.SIZE],\n input[META_PRODUCT_ATTRIBUTE.CURRENT_URL],\n input[META_PRODUCT_ATTRIBUTE.ORIGIN_PRICE],\n input[META_PRODUCT_ATTRIBUTE.ORIGIN_PRICE_CUR],\n )\n }\n\n return new MetaProduct();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => MetaProduct.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [MetaProduct.fromApiObject(input)];\n }\n\n return [];\n }\n static genParamsMeta(meta) {\n var result = {};\n if (meta.title) {\n result[META_PRODUCT_ATTRIBUTE.TITLE] = meta.title;\n }\n if (meta.image) {\n result[META_PRODUCT_ATTRIBUTE.IMAGE] = meta.image;\n }\n if (meta.color) {\n result[META_PRODUCT_ATTRIBUTE.COLOR] = meta.color;\n }\n if (meta.size) {\n result[META_PRODUCT_ATTRIBUTE.SIZE] = meta.size;\n }\n return result;\n }\n}\n\nexport const META_PRODUCT_ATTRIBUTE = {\n TITLE: 'title',\n IMAGE: 'image',\n COLOR: 'color',\n SIZE: 'size',\n CURRENT_URL: 'current_url',\n ORIGIN_PRICE: 'origin_unit_price',\n ORIGIN_PRICE_CUR: 'origin_unit_price_cur',\n}","\nexport const STATUS_ORDER = {\n CREATE: \"create\",\n CONFIRM_PAYMENT: \"confirm_payment\",\n RECEIVE_PAYMENT: \"receive_payment\",\n PROCESS_PURCHASE: \"complete_purchase\",\n ARRIVED_AT_US_WAREHOUSE: \"received_at_origin_warehouse\",\n ARRIVED_AT_VN_WAREHOUSE: \"received_at_destination_warehouse\",\n SHIPPING_IN_VN: \"shipping_in_vietnam\",\n ORDER_COMPLETED: \"order_completed\",\n CANCEL: \"cancel\"\n}\n\nexport const STATUS_ORDER_LIST = [\n {\n id: STATUS_ORDER.CANCEL,\n index: 70,\n status: \"cancel\",\n statusOf: \"trackingOrder_user\",\n },\n {\n id: STATUS_ORDER.ORDER_COMPLETED,\n index: 60,\n status: \"completed\",\n statusOf: \"trackingOrder_dutycast\",\n },\n {\n id: STATUS_ORDER.ARRIVED_AT_VN_WAREHOUSE,\n index: 50,\n status: \"vn-warehouse\",\n statusOf: \"trackingOrder_merchant\",\n },\n {\n id: STATUS_ORDER.ARRIVED_AT_US_WAREHOUSE,\n index: 40,\n status: \"us-warehouse\",\n statusOf: \"trackingOrder_merchant\",\n },\n {\n id: STATUS_ORDER.PROCESS_PURCHASE,\n index: 30,\n status: \"complete-purchase\",\n statusOf: \"trackingOrder_dutycast\",\n },\n {\n id: STATUS_ORDER.RECEIVE_PAYMENT,\n index: 20,\n status: \"receive-payment\",\n statusOf: \"trackingOrder_user\",\n },\n {\n id: STATUS_ORDER.CONFIRM_PAYMENT,\n index: 15,\n status: \"confirm-payment\",\n statusOf: \"trackingOrder_user\",\n },\n {\n id: STATUS_ORDER.CREATE,\n index: 10,\n status: \"create\",\n statusOf: \"trackingOrder_user\",\n }\n]\n\nexport const PAYMENT_ID = {\n ATM: \"atm\",\n CARD: \"card\",\n TRANSFER: \"transfer\",\n COD: \"cod\",\n RECEIVE: \"receivable\",\n QR: \"qr\",\n PROMOTION: \"promotion\",\n}\n\nexport const PAYMENT_PROVIDER = {\n MOMO: 'momo',\n ZALOPAY: 'zalopay',\n STRIPE: 'stripe',\n ACB: 'acb',\n FUNDIIN: 'fundiin',\n APPOTA: 'appota',\n ONEPAY: 'onepay',\n KLARNA: 'klarna',\n GOOGLE: 'google',\n APPLE: 'apple',\n PAYPAL: 'paypal',\n STRIPE_GOOGLE: \"stripe_google\",\n STRIPE_APPLE: \"stripe_apple\",\n}\n\nexport const PAYMENT_METHOD = [\n {\n paymentMethod: PAYMENT_ID.ATM,\n paymentProvider: PAYMENT_PROVIDER.APPOTA,\n label: \"checkout_atmCard\",\n },\n {\n paymentMethod: PAYMENT_ID.CARD,\n paymentProvider: PAYMENT_PROVIDER.APPOTA,\n label: \"checkout_creditPayment\",\n },\n {\n paymentMethod: PAYMENT_ID.ATM,\n paymentProvider: PAYMENT_PROVIDER.ONEPAY,\n label: \"checkout_atmCard\",\n },\n {\n paymentMethod: PAYMENT_ID.CARD,\n paymentProvider: PAYMENT_PROVIDER.ONEPAY,\n label: \"checkout_creditPayment\",\n },\n {\n paymentMethod: PAYMENT_ID.PROMOTION,\n paymentProvider: PAYMENT_PROVIDER.ONEPAY,\n label: \"checkout_paymentPromotion\",\n },\n {\n paymentMethod: PAYMENT_ID.QR,\n paymentProvider: PAYMENT_PROVIDER.ONEPAY,\n label: \"checkout_eWallet\",\n },\n {\n paymentMethod: PAYMENT_ID.CARD,\n paymentProvider: PAYMENT_PROVIDER.STRIPE,\n label: \"checkout_creditPayment\",\n },\n {\n paymentMethod: PAYMENT_ID.TRANSFER,\n paymentProvider: PAYMENT_PROVIDER.ACB,\n label: \"checkout_payBank\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.FUNDIIN,\n label: \"checkout_fundiin\",\n },\n {\n paymentMethod: PAYMENT_ID.COD,\n label: \"checkout_cod\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.KLARNA,\n label: \"checkout_klarna\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.GOOGLE,\n label: \"checkout_google\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.APPLE,\n label: \"checkout_apple\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.PAYPAL,\n label: \"checkout_paypal\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.STRIPE_GOOGLE,\n label: \"checkout_google\",\n },\n {\n paymentMethod: PAYMENT_ID.RECEIVE,\n paymentProvider: PAYMENT_PROVIDER.STRIPE_APPLE,\n label: \"checkout_apple\",\n },\n]","import { STATUS_ORDER } from \"../utils/constant\";\nimport { STATUS_ORDER_LIST } from \"../utils/constant\";\nimport { cloneDeep } from \"../utils/lodash\";\n\nexport class OrderAction {\n constructor(\n action,\n createdAt,\n estimatedAt,\n title,\n meta,\n ) {\n this.action = action;\n this.createdAt = createdAt;\n this.estimatedAt = estimatedAt;\n this.title = title;\n this.meta = meta;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new OrderAction(\n input.action,\n input.created_at,\n input.estimated_at,\n input.title,\n MetaTracking.fromApiArray(input)\n )\n }\n\n return new OrderAction();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => OrderAction.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [OrderAction.fromApiObject(input)];\n }\n\n return [];\n }\n\n static getCurrentStatus(statusList = []) {\n if (!statusList.length) {\n return {};\n }\n let result = {};\n let indexCur;\n let list = cloneDeep(statusList).reverse();\n\n for (let index = 0; index < list.length; index++) {\n const item = list[index];\n if (item.createdAt && !result.action) {\n let element = STATUS_ORDER_LIST.find(i => i.id === item.action);\n if (element) {\n indexCur = statusList.findIndex(i => i.action === item.action);\n result = item;\n break;\n }\n }\n }\n\n return {\n indexCur: indexCur || 0,\n action: STATUS_ORDER.CREATE,\n ...result\n };\n }\n}\n\nexport class MetaTracking {\n constructor(\n statusText,\n createdAt,\n cancelReason\n ) {\n this.statusText = statusText;\n this.createdAt = createdAt;\n this.cancelReason = cancelReason;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new MetaTracking(\n input.status_text,\n input.created_at,\n input.cancel_reason\n )\n }\n\n return new MetaTracking();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => MetaTracking.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [MetaTracking.fromApiObject(input)];\n }\n\n return [];\n }\n}","import { stringToPrice } from \"../utils/currency\";\nimport { getParamUrl } from \"../utils/url\";\nimport { MetaProduct } from \"./MetaProduct\";\nimport { OrderAction } from \"./OrderAction\";\n\nexport class Product {\n constructor(id, siteId, siteUrl, siteName, siteLogo, sku, meta, currentCurrency, price, quantity, storeDomain, currentUrl, category, screenshot, shippingCurrency, shippingCost, sitePrice, sitePriceCur, type, pid, isLowestPrice, audits) {\n this.id = id;\n this.siteId = siteId;\n this.siteUrl = siteUrl;\n this.siteName = siteName;\n this.siteLogo = siteLogo;\n this.sku = sku;\n /** @type {MetaProduct} */\n this.meta = meta;\n this.currentCurrency = currentCurrency;\n this.price = price;\n this.quantity = quantity;\n this.storeDomain = storeDomain;\n this.currentUrl = currentUrl;\n this.category = category;\n this.screenshot = screenshot;\n this.shippingCurrency = shippingCurrency;\n this.shippingCost = shippingCost;\n this.sitePrice = sitePrice;\n this.sitePriceCur = sitePriceCur;\n this.type = type;\n this.pid = pid;\n this.isLowestPrice = isLowestPrice;\n /** @type {[OrderAction]} */\n this.audits = audits;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Product(\n input[PRODUCT_ATTRIBUTE.ID],\n input[PRODUCT_ATTRIBUTE.SITE_ID],\n getUrlHost(input[PRODUCT_ATTRIBUTE.META], input[PRODUCT_ATTRIBUTE.SITE_ID]),\n getUrlHost(input[PRODUCT_ATTRIBUTE.META], input[PRODUCT_ATTRIBUTE.SITE_ID]),\n input[PRODUCT_ATTRIBUTE.SITE_LOGO],\n input[PRODUCT_ATTRIBUTE.SKU],\n MetaProduct.fromApiObject(input[PRODUCT_ATTRIBUTE.META]),\n input[PRODUCT_ATTRIBUTE.CURRENCY],\n stringToPrice(input[PRODUCT_ATTRIBUTE.PRICE]),\n stringToPrice(input[PRODUCT_ATTRIBUTE.QUANTITY]) || 1,\n input[PRODUCT_ATTRIBUTE.DOMAIN],\n input[PRODUCT_ATTRIBUTE.CURRENT_URL],\n input[PRODUCT_ATTRIBUTE.CATEGORY],\n input[PRODUCT_ATTRIBUTE.SCREENSHOT],\n input[PRODUCT_ATTRIBUTE.SHIPPING_CURRENCY],\n input[PRODUCT_ATTRIBUTE.SHIPPING_COST],\n input[PRODUCT_ATTRIBUTE.SITE_PRICE],\n input[PRODUCT_ATTRIBUTE.SITE_PRICE_CUR],\n input[PRODUCT_ATTRIBUTE.TYPE],\n input[PRODUCT_ATTRIBUTE.PID],\n input[PRODUCT_ATTRIBUTE.IS_LOWEST_PRICE],\n OrderAction.fromApiArray(input[PRODUCT_ATTRIBUTE.AUDITS]),\n )\n }\n\n return new Product();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Product.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Product.fromApiObject(input)];\n }\n\n return [];\n }\n\n /** @param {[Product]} products */\n static getParamPriceTags(products = []) {\n let paramsPeriods = getParamUrl(\"periods\");\n let paramsPeriodUnit = getParamUrl(\"period_unit\");\n let periods = (paramsPeriods || \"30,60,90\" || \"\");\n let params = {\n \"period_unit\": paramsPeriodUnit || \"hours\",\n \"periods\": periods ? periods.split(\",\") : undefined,\n \"p\": []\n }\n\n for (let index = 0; index < products.length; index++) {\n const element = products[index];\n if (!element.isRFQ()) {\n params.p.push({\n \"id\": element.pid || element.id,\n \"cp\": element.sitePrice,\n \"cur\": element.sitePriceCur,\n })\n }\n }\n\n return params;\n }\n\n /** @param {[Product]} products */\n static hasProductSelected(products = []) {\n for (let index = 0; index < products.length; index++) {\n const element = products[index];\n if (element.canSelected()) {\n return true;\n }\n }\n return false;\n }\n\n canSelected() {\n return this.type === Product.TYPE_PRODUCT.NORMAL.id || this.type === Product.TYPE_PRODUCT.QUOTED.id;\n }\n\n isRFQ() {\n return this.type === \"rfq\";\n }\n\n getNoteType(type) {\n if (this.notes && this.notes.length === 0) {\n return false;\n }\n let result = false;\n this.notes.forEach(element => {\n if (element.type === type) {\n result = element;\n return true;\n }\n });\n return result;\n }\n\n static TYPE_PRODUCT = {\n RFQ: {\n id: 'rfq',\n class: 'cart_rfq'\n },\n NORMAL: {\n id: 'normal',\n class: 'cart'\n },\n UNSELECT: {\n id: 'unselect',\n class: 'cart'\n },\n QUOTED: {\n id: 'quoted',\n class: 'cart'\n }\n }\n\n static TYPE_NOTES = {\n OOS: 'oos',\n MAX_QUANTITY: 'max_quantity',\n LOCATION: 'location',\n }\n}\n\nfunction getUrlHost(meta, defaultValue) {\n if (meta && meta[PRODUCT_ATTRIBUTE.CURRENT_URL]) {\n try {\n var url = new URL(meta[PRODUCT_ATTRIBUTE.CURRENT_URL])\n return (url.host || \"\").replace('www.', '');\n } catch (_) { }\n }\n return defaultValue;\n}\n\nexport const PRODUCT_ATTRIBUTE = {\n ID: 'id',\n SITE_ID: \"site_id\",\n SITE_URL: \"site_id\",\n SITE_NAME: \"site_id\",\n SITE_LOGO: \"site_logo\",\n SKU: \"sku\",\n META: 'meta',\n CURRENCY: \"cur\",\n PRICE: \"unit_price\",\n QUANTITY: \"quantity\",\n DOMAIN: \"domain\",\n CURRENT_URL: \"current_url\",\n SCREENSHOT: \"screenshot\",\n DETAIL_URL: \"detail_url\",\n CATEGORY: \"category\",\n SHIPPING_CURRENCY: \"shipping_cur\",\n SHIPPING_COST: \"shipping_cost\",\n SITE_PRICE: \"site_price\",\n SITE_PRICE_CUR: \"site_price_cur\",\n TYPE: \"type\",\n NOTES: 'notes',\n PID: 'pid',\n IS_LOWEST_PRICE: 'is_lowest_price',\n AUDITS: 'trackers',\n}","export class Paging {\n constructor(currentPage, nextPage, prevPage, totalCount, totalPages, perPage) {\n this.currentPage = currentPage;\n this.nextPage = nextPage;\n this.prevPage = prevPage;\n this.totalCount = totalCount;\n this.totalPages = totalPages;\n this.perPage = perPage;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Paging(input.current_page, input.next_page, input.prev_page, input.total_count, input.total_pages, input.per_page)\n }\n\n return new Paging();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Paging.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Paging.fromApiObject(input)];\n }\n\n return [];\n }\n\n static fromRaw(currentPage, total, maxItemInPage) {\n const totalPages = Math.ceil(total / maxItemInPage);\n const nextPage = currentPage + 1 < totalPages ? currentPage + 1 : totalPages;\n const prevPage = currentPage > 1 ? currentPage - 1 : 1;\n return new Paging(currentPage, nextPage, prevPage, total, totalPages)\n }\n}","import DC from \"../DC\";\n\nexport class SearchFacet {\n constructor(\n key,\n title,\n values,\n ) {\n this.key = key;\n this.title = title;\n /** @type {[SearchFacetsValues]}*/\n this.values = values;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new SearchFacet(\n input.key,\n getTitle(input.key),\n SearchFacetsValues.fromApiArray(input.values),\n )\n }\n\n return new SearchFacet();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => SearchFacet.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [SearchFacet.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class SearchFacetsValues {\n constructor(\n count,\n filter,\n value,\n checked\n ) {\n this.count = count;\n this.filter = filter;\n this.value = value;\n this.checked = checked;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new SearchFacetsValues(\n input.count,\n input.filter,\n input.value,\n input.checked\n )\n }\n\n return new SearchFacetsValues();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => SearchFacetsValues.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [SearchFacetsValues.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nfunction getTitle(title) {\n let result = title;\n try {\n result = DC.i18n(\"searchProduct_\" + title);\n } catch (error) {\n result = \"\";\n }\n return result\n}\n","import { getOr } from \"../utils/lodash\";\n\nexport class SearchProduct {\n constructor(\n id,\n sku,\n checkoutPrice,\n checkoutCur,\n unitPrice,\n unitCur,\n site,\n meta,\n pid,\n detailUrl,\n slug,\n quantity,\n displayAmount\n ) {\n this.id = id;\n this.sku = sku;\n this.checkoutPrice = checkoutPrice;\n this.checkoutCur = checkoutCur;\n this.unitPrice = unitPrice;\n this.unitCur = unitCur;\n /** @type {MetaSearchSite}*/\n this.site = site;\n /** @type {MetaSearchProduct}*/\n this.meta = meta;\n this.pid = pid;\n this.detailUrl = detailUrl;\n this.slug = slug;\n this.quantity = quantity;\n this.displayAmount = displayAmount;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n let unitPrice = 0, cur = \"\";\n if (typeof (input.unit_price) === \"object\") {\n unitPrice = getOr(\"\", \"unit_price.amount\")(input);\n cur = getOr(\"\", \"unit_price.cur\")(input);\n } else {\n unitPrice = input.unit_price;\n cur = input.cur;\n }\n return new SearchProduct(\n input.id,\n input.sku,\n getOr(\"\", \"checkout.amount\")(input),\n getOr(\"\", \"checkout.cur\")(input),\n unitPrice,\n cur,\n MetaSearchSite.fromApiObject(input.site),\n MetaSearchProduct.fromApiObject(input.meta),\n input.pid,\n input.detail_url,\n input.slug,\n input.quantity,\n input.display_amount,\n )\n }\n\n return new SearchProduct();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => SearchProduct.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [SearchProduct.fromApiObject(input)];\n }\n\n return [];\n }\n\n getPId() {\n return this.pid || this.id;\n }\n\n genAddToCartParams() {\n const site_id = this.site?.id;\n const product_provider_id = this.getPId();\n const quantity = this.quantity || 1;\n\n return {\n site_id,\n product_provider_id,\n quantity,\n meta: {\n image: this.getImage()\n }\n }\n }\n\n getImage() {\n return this.meta.image || getOr(\"\", \"meta.images[0].large\")(this);\n }\n}\n\nexport class MetaSearchProduct {\n constructor(\n title,\n image,\n images,\n color,\n size,\n currentUrl,\n t,\n updatedAt,\n description,\n category,\n categories,\n ) {\n this.title = title;\n this.image = image;\n /** @type {[MetaSearchImages]}*/\n this.images = images;\n this.color = color;\n this.size = size;\n this.currentUrl = currentUrl;\n this.t = t;\n this.updatedAt = updatedAt;\n this.description = description;\n this.category = category;\n this.categories = categories;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new MetaSearchProduct(\n input.origin_title,\n input.image,\n MetaSearchImages.fromApiArray(input.images),\n input.color,\n input.size,\n input.current_url,\n input.t,\n input.unit_price_updated_at,\n input.description,\n input.category,\n input.categories,\n )\n }\n\n return new MetaSearchProduct();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => MetaSearchProduct.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [MetaSearchProduct.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class MetaSearchSite {\n constructor(\n id,\n domain,\n name,\n logo,\n country,\n currency\n ) {\n this.id = id;\n this.domain = domain;\n this.name = name;\n this.logo = logo;\n this.country = country;\n this.currency = currency;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new MetaSearchSite(\n input.id,\n input.domain,\n input.name,\n input.logo,\n input.country,\n input.currency,\n )\n }\n\n return new MetaSearchSite();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => MetaSearchSite.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [MetaSearchSite.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class MetaSearchImages {\n constructor(\n highRes,\n large,\n thumb,\n ) {\n this.highRes = highRes;\n this.large = large;\n this.thumb = thumb;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new MetaSearchImages(\n input.high_res,\n input.large,\n input.thumb,\n )\n }\n\n return new MetaSearchImages();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => MetaSearchImages.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [MetaSearchImages.fromApiObject(input)];\n }\n\n return [];\n }\n}","export function getCookie(name) {\n var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n if (match) return match[2];\n}\n\nexport function setCookie(key, value, expiry = 3600 * 24, path) {\n var expires = new Date();\n expires.setTime(expires.getTime() + (expiry * 1000));\n document.cookie = key + '=' + value + ';expires=' + expires.toUTCString() + (path ? \"; path=\" + path : \"\");\n}","import { COOKIE_KEYS } from \"../constant\";\nimport { setCookie, getCookie } from \"../utils/cookie\";\n\nexport class SettingConfig {\n constructor(\n locale,\n ipCountry,\n shippingCountry,\n currency,\n billingCountry,\n shippingTo,\n currencies,\n ) {\n this.locale = locale;\n this.ipCountry = ipCountry;\n this.shippingCountry = shippingCountry;\n this.currency = currency;\n this.billingCountry = billingCountry;\n this.shippingTo = shippingTo;\n this.currencies = currencies;\n }\n\n /** @returns {SettingConfig}*/\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new SettingConfig(\n input[this.ATTRIBUTES.LOCALE],\n input[this.ATTRIBUTES.IP_COUNTRY],\n input[this.ATTRIBUTES.SHIPPING_COUNTRY],\n input[this.ATTRIBUTES.CURRENCY],\n input[this.ATTRIBUTES.BILLING_COUNTRY],\n input[this.ATTRIBUTES.SHIPPING_TO],\n input[this.ATTRIBUTES.CURRENCIES],\n )\n }\n\n return new SettingConfig();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => SettingConfig.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [SettingConfig.fromApiObject(input)];\n }\n\n return [];\n }\n\n static convertConfigs(configs = \"\") {\n if (!configs) return;\n\n let settings = configs.split(\",\");\n let result = new SettingConfig(\n settings[this.CONFIG_INDEX.LOCALE],\n settings[this.CONFIG_INDEX.IP_COUNTRY],\n settings[this.CONFIG_INDEX.SHIPPING_COUNTRY],\n settings[this.CONFIG_INDEX.CURRENCY],\n settings[this.CONFIG_INDEX.BILLING_COUNTRY],\n )\n\n result.locale && this.setLocale(result.locale);\n result.ipCountry && this.setIpCountry(result.ipCountry);\n result.shippingCountry && this.setShipping(result.shippingCountry);\n result.currency && this.setCurrency(result.currency);\n result.billingCountry && this.setBilling(result.billingCountry);\n\n return result;\n }\n\n static getConfigsFromCookie() {\n return new SettingConfig(\n this.getLocale(),\n this.getIpCountry(),\n this.getShipping(),\n this.getCurrency(),\n this.getBilling(),\n )\n }\n\n isValid() {\n return this.locale && this.ipCountry && this.shippingCountry && this.currency;\n }\n\n saveConfigs() {\n if (this.locale && this.locale !== SettingConfig.getLocale()) SettingConfig.setLocale(this.locale);\n if (this.ipCountry && this.ipCountry !== SettingConfig.getIpCountry()) SettingConfig.setIpCountry(this.ipCountry);\n if (this.shippingCountry && this.shippingCountry !== SettingConfig.getShipping()) SettingConfig.setShipping(this.shippingCountry);\n if (this.currency && this.currency !== SettingConfig.getCurrency()) SettingConfig.setCurrency(this.currency);\n if (this.billingCountry && this.billingCountry !== SettingConfig.getBilling()) SettingConfig.setBilling(this.billingCountry);\n\n if (this.shippingTo) SettingConfig.setShippingCountries(this.shippingTo);\n if (this.currencies) SettingConfig.setCurrencies(this.currencies);\n }\n\n static getLocale() {\n return getCookie(COOKIE_KEYS.LOCALE);\n }\n\n static setLocale(locale) {\n setCookie(COOKIE_KEYS.LOCALE, locale);\n }\n\n static getIpCountry() {\n return getCookie(COOKIE_KEYS.IP_COUNTRY);\n }\n\n static setIpCountry(ipCountry) {\n setCookie(COOKIE_KEYS.IP_COUNTRY, ipCountry);\n }\n\n static getShipping() {\n return getCookie(COOKIE_KEYS.SHIPPING_COUNTRY);\n }\n\n static setShipping(country) {\n setCookie(COOKIE_KEYS.SHIPPING_COUNTRY, country);\n }\n\n static getShippingCity() {\n return getCookie(COOKIE_KEYS.SHIPPING_CITY);\n }\n\n static setShippingCity(city) {\n setCookie(COOKIE_KEYS.SHIPPING_CITY, city);\n }\n\n static getShippingPostalCode() {\n return getCookie(COOKIE_KEYS.SHIPPING_POSTALCODE);\n }\n\n static setShippingPostalCode(postalCode) {\n setCookie(COOKIE_KEYS.SHIPPING_POSTALCODE, postalCode);\n }\n\n static getShippingCountries() {\n return getCookie(COOKIE_KEYS.SHIPPING_COUNTRIES);\n }\n\n static setShippingCountries(countries) {\n setCookie(COOKIE_KEYS.SHIPPING_COUNTRIES, countries);\n }\n\n static getBilling() {\n return getCookie(COOKIE_KEYS.BILLING_COUNTRY);\n }\n\n static setBilling(country) {\n setCookie(COOKIE_KEYS.BILLING_COUNTRY, country);\n }\n\n static getCurrency() {\n return getCookie(COOKIE_KEYS.CURRENCY);\n }\n\n static setCurrency(currency) {\n setCookie(COOKIE_KEYS.CURRENCY, currency);\n }\n\n static getCurrencies() {\n return getCookie(COOKIE_KEYS.CURRENCIES);\n }\n\n static setCurrencies(currencies) {\n setCookie(COOKIE_KEYS.CURRENCIES, currencies);\n }\n\n static getSeConfig() {\n try {\n return JSON.parse(getCookie(COOKIE_KEYS.SE_CONFIG));\n } catch (error) {\n this.setSeConfig(undefined);\n return undefined\n }\n }\n\n static setSeConfig(config) {\n setCookie(COOKIE_KEYS.SE_CONFIG, JSON.stringify(config));\n }\n\n static ATTRIBUTES = {\n LOCALE: \"locale\",\n IP_COUNTRY: \"ip_country\",\n SHIPPING_COUNTRY: \"shipping_country\",\n BILLING_COUNTRY: \"billing_country\",\n CURRENCY: \"currency\",\n SHIPPING_TO: \"shipping_to\",\n CURRENCIES: \"currencies\",\n }\n\n static CONFIG_INDEX = {\n LOCALE: 0,\n IP_COUNTRY: 1,\n SHIPPING_COUNTRY: 2,\n CURRENCY: 3,\n BILLING_COUNTRY: 4,\n }\n}","import { getCountry } from \"../utils/country\";\nimport { Paging } from \"./Paging\";\nimport { SearchFacet } from \"./SearchFacet\";\nimport { SearchProduct } from \"./SearchProduct\";\nimport { SettingConfig } from \"./SettingConfig\";\n\nexport class Search {\n constructor(\n products,\n paging,\n facets,\n filters,\n metaTitle,\n metaDescription,\n displayAmount\n ) {\n /** @type {[SearchProduct]}*/\n this.products = products;\n /** @type {Paging}*/\n this.paging = paging;\n /** @type {[SearchFacet]}*/\n this.facets = facets;\n this.filters = filters;\n this.metaTitle = metaTitle;\n this.metaDescription = metaDescription;\n this.displayAmount = displayAmount;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Search(\n SearchProduct.fromApiArray(input.data),\n Paging.fromApiObject(input.paging),\n SearchFacet.fromApiArray(input.facets),\n input.filters,\n input.meta_title,\n input.meta_description,\n input.display_amount\n )\n }\n\n return new Search();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Search.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Search.fromApiObject(input)];\n }\n\n return [];\n }\n\n /**\n * \n * @param {*} dt \n * @param {*} perPage \n * @returns {{ p, pp, fl, t, f, bst, soas }}\n */\n static genDefaultParams(dt, perPage) {\n return {\n \"p\": 1,\n \"pp\": perPage,\n \"fl\": 0,\n \"dt\": [dt],\n \"t\": {},\n \"f\": {},\n }\n }\n\n static genLangParams() {\n let langague = [];\n\n let lang = SettingConfig.getLocale() || \"en\";\n if (lang === \"vi\") {\n langague.push(lang);\n } else {\n let country = getCountry(SettingConfig.getIpCountry());\n if (country?.lang && !langague.includes(country.lang)) {\n langague.push(country.lang);\n }\n }\n if (!langague.includes(\"en\")) {\n langague.push(\"en\");\n }\n\n return langague;\n }\n\n static genTermParams(termSearch = \"\") {\n let params = {};\n\n if (termSearch) {\n let lang = SettingConfig.getLocale() || \"en\";\n if (lang === \"vi\") {\n params[lang] = [termSearch];\n } else {\n let country = getCountry(SettingConfig.getIpCountry());\n if (country?.lang && !params[country.lang]) {\n params[country.lang] = [termSearch];\n }\n\n let shipCountry = getCountry(SettingConfig.getShipping());\n if (shipCountry?.lang && !params[shipCountry.lang]) {\n params[shipCountry.lang] = [termSearch];\n }\n }\n if (!params[\"en\"]) {\n params[\"en\"] = [termSearch];\n }\n }\n\n return params;\n }\n\n static TERM = \"dc_k\";\n static PID = \"dc_pid\";\n static FILTER_COUNTRY = \"dc_fc\";\n static FILTER_SITE = \"dc_fs\";\n static FILTER_CATEGORY = \"dc_fd\";\n static DC_PAGE = \"dc_page\";\n static DC_SOURCE = \"dc_source\";\n static FILTER = \"filter\"\n static SOURCE = {\n AUTOCOMPLETE: \"autocomplete\",\n SEARCH_INPUT: \"search_input\",\n SEARCH_FILTER: \"search_filter\",\n SEARCH_RESULT: \"search_result\",\n RECOMMEND: \"recommend\",\n HOME_FEATURED: \"home_featured\",\n AVAILABLE_STORE: \"available_store\",\n }\n static TYPE = {\n FACET: \"facet\",\n SEARCH: \"search\",\n TRANSLATE: \"translate\"\n }\n\n static SEARCH_TYPE = {\n PRODUCT: \"product\",\n SITE: \"site\",\n CATEGORY: \"category\",\n }\n\n static INTER_SHIP = \"international_shipping\";\n static PAY_AMOUNT = \"pay_amount\";\n\n static AMOUNT_MAPPING = {\n [this.INTER_SHIP]: \"internationalShipping\",\n [this.PAY_AMOUNT]: \"payAmount\"\n }\n\n static CURRENCY_MAPPING = {\n [this.INTER_SHIP]: \"internationalShippingCur\",\n [this.PAY_AMOUNT]: \"payCurrency\"\n }\n\n static isInterShipping(displayAmount) {\n return displayAmount === this.INTER_SHIP;\n }\n}\n\nexport class SearchFilter {\n constructor(\n id,\n name,\n parentId\n ) {\n this.id = id;\n this.name = name;\n this.parentId = parentId;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new SearchFilter(\n input.id,\n input.name,\n input.parent_id,\n )\n }\n\n return new SearchFilter();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => SearchFilter.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [SearchFilter.fromApiObject(input)];\n }\n\n return [];\n }\n}","import { stringToPrice } from \"../utils/currency\";\nimport { getOr } from \"../utils/lodash\";\nimport { Address } from \"./Address\";\nimport { Fee } from \"./Fee\";\nimport { Product } from \"./Product\";\nimport { Search } from \"./Search\";\n\nexport class Order {\n constructor(code, details, payAmount, payCurrency, internationalShipping, internationalShippingCur, intermediateCheckoutUrl, orderNo, billingAddress, shippingAddress, fees, payments) {\n this.code = code;\n /** @type {[Product]}*/\n this.details = details;\n this.payAmount = payAmount;\n this.payCurrency = payCurrency;\n this.internationalShipping = internationalShipping;\n this.internationalShippingCur = internationalShippingCur;\n this.intermediateCheckoutUrl = intermediateCheckoutUrl;\n this.orderNo = orderNo;\n /** @type {Address}*/\n this.billingAddress = billingAddress;\n /** @type {Address}*/\n this.shippingAddress = shippingAddress;\n this.fees = fees;\n this.payments = payments;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n let details = Product.fromApiArray(input.details);\n return new Order(\n input.code,\n details,\n stringToPrice(input[Search.PAY_AMOUNT]),\n input.pay_cur,\n stringToPrice(input[Search.INTER_SHIP]),\n input.pay_cur,\n input.intermediate_checkout_url,\n input.order_no,\n Address.fromApiObject({\n ...input.billing_address,\n id: getOr(input.billing_address?.id, \"id\")(input.user_billing_address),\n address_type: getOr(input.billing_address?.address_type, \"address_type\")(input.user_billing_address)\n }),\n Address.fromApiObject({\n ...input.shipping_address,\n id: getOr(input.shipping_address?.id, \"id\")(input.user_shipping_address),\n address_type: getOr(input.shipping_address?.address_type, \"address_type\")(input.user_shipping_address)\n }),\n Fee.mergeFee(Fee.fromApiArray(input.fees)),\n input.payments,\n )\n }\n\n return new Order();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Order.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Order.fromApiObject(input)];\n }\n\n return [];\n }\n\n /**\n * @returns { {total, stores} }\n */\n getTotalItem() {\n let total = 0, stores = [];\n this.details.forEach(function (element) {\n total += element.quantity * 1;\n\n if (!stores.includes(element.siteId)) {\n stores.push(element.siteId);\n }\n });\n return {\n total: total,\n stores: stores\n }\n }\n\n static genParamsOrder(params) {\n var result = {};\n if (params.code) {\n result[ORDER_PARAMS.CODE] = params.code;\n }\n if (params.note) {\n result[ORDER_PARAMS.NOTE] = params.note;\n }\n return result;\n }\n\n static ORDER_NO = \"dc_order_no\";\n}\n\nexport const ORDER_PARAMS = {\n CODE: 'code',\n BILLING_ADDRESS: 'billing_address',\n SHIPPING_ADDRESS: 'shipping_address',\n SOURCE: 'source',\n UID: 'uid',\n PAYMENTS: 'payments',\n DETAILS: 'details',\n NOTE: 'note',\n}\n","export class ReceiptSource {\n constructor(\n code,\n url,\n logoUrl,\n headerConfig,\n bodyConfig,\n btnCheckoutConfig,\n ) {\n this.code = code;\n this.url = url;\n this.logoUrl = logoUrl;\n /** @type {ThemeConfig} */\n this.headerConfig = headerConfig;\n /** @type {ThemeConfig} */\n this.bodyConfig = bodyConfig;\n /** @type {ThemeConfig} */\n this.btnCheckoutConfig = btnCheckoutConfig;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new ReceiptSource(\n input.code,\n input.url,\n input.logo_url,\n ThemeConfig.fromApiObject(input.config?.header),\n ThemeConfig.fromApiObject(input.config?.body),\n ThemeConfig.fromApiObject(input.config?.checkout_button),\n )\n }\n\n return new ReceiptSource();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => ReceiptSource.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [ReceiptSource.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class ThemeConfig {\n constructor(\n style,\n textStyle,\n imageStyle,\n text\n ) {\n this.style = style;\n this.textStyle = textStyle;\n this.imageStyle = imageStyle;\n this.text = text;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new ThemeConfig(\n input.style,\n input.text_style,\n input.image_style,\n input.text\n )\n }\n\n return new ThemeConfig();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => ThemeConfig.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [ThemeConfig.fromApiObject(input)];\n }\n\n return [];\n }\n}","import queryString from \"query-string\";\n\nexport function genEndPointGetParam(endPoint = \"\", param = null) {\n const result = (!!endPoint && typeof (endPoint) === \"string\" ? endPoint : \"/\");\n return result + solveUrlParams(param);\n}\n\nexport function solveUrlParams(params, getRaw = false) {\n let result = \"\";\n result = getRaw ? queryString.stringify(params) : \"?\" + queryString.stringify(params);\n if (result === \"?\") {\n result = \"\";\n }\n return result;\n}","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n","/*!***************************************************\n* mark.js v8.11.1\n* https://markjs.io/\n* Copyright (c) 2014–2018, Julian Kühnel\n* Released under the MIT license https://git.io/vwTVl\n*****************************************************/\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.Mark=t()}(this,function(){\"use strict\";var e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},n=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=i,this.iframesTimeout=o}return n(e,[{key:\"getContexts\",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:\"string\"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach(function(t){var n=e.filter(function(e){return e.contains(t)}).length>0;-1!==e.indexOf(t)||n||e.push(t)}),e}},{key:\"getIframeContents\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var i=e.contentWindow;if(r=i.document,!i||!r)throw new Error(\"iframe inaccessible\")}catch(e){n()}r&&t(r)}},{key:\"isIframeBlank\",value:function(e){var t=e.getAttribute(\"src\").trim();return\"about:blank\"===e.contentWindow.location.href&&\"about:blank\"!==t&&t}},{key:\"observeIframeLoad\",value:function(e,t,n){var r=this,i=!1,o=null,a=function a(){if(!i){i=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener(\"load\",a),r.getIframeContents(e,t,n))}catch(e){n()}}};e.addEventListener(\"load\",a),o=setTimeout(a,this.iframesTimeout)}},{key:\"onIframeReady\",value:function(e,t,n){try{\"complete\"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(e){n()}}},{key:\"waitForIframes\",value:function(e,t){var n=this,r=0;this.forEachIframe(e,function(){return!0},function(e){r++,n.waitForIframes(e.querySelector(\"html\"),function(){--r||t()})},function(e){e||t()})}},{key:\"forEachIframe\",value:function(t,n,r){var i=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=t.querySelectorAll(\"iframe\"),s=a.length,c=0;a=Array.prototype.slice.call(a);var u=function(){--s<=0&&o(c)};s||u(),a.forEach(function(t){e.matches(t,i.exclude)?u():i.onIframeReady(t,function(e){n(t)&&(c++,r(e)),u()},u)})}},{key:\"createIterator\",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:\"createInstanceOnIframe\",value:function(t){return new e(t.querySelector(\"html\"),this.iframes)}},{key:\"compareNodeIframe\",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:\"getIteratorNode\",value:function(e){var t=e.previousNode();return{prevNode:t,node:null===t?e.nextNode():e.nextNode()&&e.nextNode()}}},{key:\"checkIframeFilter\",value:function(e,t,n,r){var i=!1,o=!1;return r.forEach(function(e,t){e.val===n&&(i=t,o=e.handled)}),this.compareNodeIframe(e,t,n)?(!1!==i||o?!1===i||o||(r[i].handled=!0):r.push({val:n,handled:!0}),!0):(!1===i&&r.push({val:n,handled:!1}),!1)}},{key:\"handleOpenIframes\",value:function(e,t,n,r){var i=this;e.forEach(function(e){e.handled||i.getIframeContents(e.val,function(e){i.createInstanceOnIframe(e).forEachNode(t,n,r)})})}},{key:\"iterateThroughNodes\",value:function(e,t,n,r,i){for(var o,a=this,s=this.createIterator(t,e,r),c=[],u=[],l=void 0,h=void 0;void 0,o=a.getIteratorNode(s),h=o.prevNode,l=o.node;)this.iframes&&this.forEachIframe(t,function(e){return a.checkIframeFilter(l,h,e,c)},function(t){a.createInstanceOnIframe(t).forEachNode(e,function(e){return u.push(e)},r)}),u.push(l);u.forEach(function(e){n(e)}),this.iframes&&this.handleOpenIframes(c,e,n,r),i()}},{key:\"forEachNode\",value:function(e,t,n){var r=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),a=o.length;a||i(),o.forEach(function(o){var s=function(){r.iterateThroughNodes(e,o,t,n,function(){--a<=0&&i()})};r.iframes?r.waitForIframes(o,s):s()})}}],[{key:\"matches\",value:function(e,t){var n=\"string\"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var i=!1;return n.every(function(t){return!r.call(e,t)||(i=!0,!1)}),i}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf(\"MSIE\")>-1||n.indexOf(\"Trident\")>-1)&&(this.ie=!0)}return n(o,[{key:\"log\",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"debug\",r=this.opt.log;this.opt.debug&&\"object\"===(void 0===r?\"undefined\":e(r))&&\"function\"==typeof r[n]&&r[n](\"mark.js: \"+t)}},{key:\"escapeStr\",value:function(e){return e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")}},{key:\"createRegExp\",value:function(e){return\"disabled\"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),\"disabled\"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:\"createSynonymsRegExp\",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?\"\":\"i\",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?\"\\0\":\"\";for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],a=\"disabled\"!==this.opt.wildcards?this.setupWildcardsRegExp(i):this.escapeStr(i),s=\"disabled\"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);\"\"!==a&&\"\"!==s&&(e=e.replace(new RegExp(\"(\"+this.escapeStr(a)+\"|\"+this.escapeStr(s)+\")\",\"gm\"+n),r+\"(\"+this.processSynomyms(a)+\"|\"+this.processSynomyms(s)+\")\"+r))}return e}},{key:\"processSynomyms\",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:\"setupWildcardsRegExp\",value:function(e){return(e=e.replace(/(?:\\\\)*\\?/g,function(e){return\"\\\\\"===e.charAt(0)?\"?\":\"\u0001\"})).replace(/(?:\\\\)*\\*/g,function(e){return\"\\\\\"===e.charAt(0)?\"*\":\"\u0002\"})}},{key:\"createWildcardsRegExp\",value:function(e){var t=\"withSpaces\"===this.opt.wildcards;return e.replace(/\\u0001/g,t?\"[\\\\S\\\\s]?\":\"\\\\S?\").replace(/\\u0002/g,t?\"[\\\\S\\\\s]*?\":\"\\\\S*\")}},{key:\"setupIgnoreJoinersRegExp\",value:function(e){return e.replace(/[^(|)\\\\]/g,function(e,t,n){var r=n.charAt(t+1);return/[(|)\\\\]/.test(r)||\"\"===r?e:e+\"\\0\"})}},{key:\"createJoinersRegExp\",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(\"\"))),this.opt.ignoreJoiners&&t.push(\"\\\\u00ad\\\\u200b\\\\u200c\\\\u200d\"),t.length?e.split(/\\u0000+/).join(\"[\"+t.join(\"\")+\"]*\"):e}},{key:\"createDiacriticsRegExp\",value:function(e){var t=this.opt.caseSensitive?\"\":\"i\",n=this.opt.caseSensitive?[\"aàáảãạăằắẳẵặâầấẩẫậäåāą\",\"AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ\",\"cçćč\",\"CÇĆČ\",\"dđď\",\"DĐĎ\",\"eèéẻẽẹêềếểễệëěēę\",\"EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ\",\"iìíỉĩịîïī\",\"IÌÍỈĨỊÎÏĪ\",\"lł\",\"LŁ\",\"nñňń\",\"NÑŇŃ\",\"oòóỏõọôồốổỗộơởỡớờợöøō\",\"OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ\",\"rř\",\"RŘ\",\"sšśșş\",\"SŠŚȘŞ\",\"tťțţ\",\"TŤȚŢ\",\"uùúủũụưừứửữựûüůū\",\"UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ\",\"yýỳỷỹỵÿ\",\"YÝỲỶỸỴŸ\",\"zžżź\",\"ZŽŻŹ\"]:[\"aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ\",\"cçćčCÇĆČ\",\"dđďDĐĎ\",\"eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ\",\"iìíỉĩịîïīIÌÍỈĨỊÎÏĪ\",\"lłLŁ\",\"nñňńNÑŇŃ\",\"oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ\",\"rřRŘ\",\"sšśșşSŠŚȘŞ\",\"tťțţTŤȚŢ\",\"uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ\",\"yýỳỷỹỵÿYÝỲỶỸỴŸ\",\"zžżźZŽŻŹ\"],r=[];return e.split(\"\").forEach(function(i){n.every(function(n){if(-1!==n.indexOf(i)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp(\"[\"+n+\"]\",\"gm\"+t),\"[\"+n+\"]\"),r.push(n)}return!0})}),e}},{key:\"createMergedBlanksRegExp\",value:function(e){return e.replace(/[\\s]+/gim,\"[\\\\s]+\")}},{key:\"createAccuracyRegExp\",value:function(e){var t=this,n=this.opt.accuracy,r=\"string\"==typeof n?n:n.value,i=\"\";switch((\"string\"==typeof n?[]:n.limiters).forEach(function(e){i+=\"|\"+t.escapeStr(e)}),r){case\"partially\":default:return\"()(\"+e+\")\";case\"complementary\":return\"()([^\"+(i=\"\\\\s\"+(i||this.escapeStr(\"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~¡¿\")))+\"]*\"+e+\"[^\"+i+\"]*)\";case\"exactly\":return\"(^|\\\\s\"+i+\")(\"+e+\")(?=$|\\\\s\"+i+\")\"}}},{key:\"getSeparatedKeywords\",value:function(e){var t=this,n=[];return e.forEach(function(e){t.opt.separateWordSearch?e.split(\" \").forEach(function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)}):e.trim()&&-1===n.indexOf(e)&&n.push(e)}),{keywords:n.sort(function(e,t){return t.length-e.length}),length:n.length}}},{key:\"isNumeric\",value:function(e){return Number(parseFloat(e))==e}},{key:\"checkRanges\",value:function(e){var t=this;if(!Array.isArray(e)||\"[object Object]\"!==Object.prototype.toString.call(e[0]))return this.log(\"markRanges() will only accept an array of objects\"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort(function(e,t){return e.start-t.start}).forEach(function(e){var i=t.callNoMatchOnInvalidRanges(e,r),o=i.start,a=i.end;i.valid&&(e.start=o,e.length=a-o,n.push(e),r=a)}),n}},{key:\"callNoMatchOnInvalidRanges\",value:function(e,t){var n=void 0,r=void 0,i=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?i=!0:(this.log(\"Ignoring invalid or overlapping range: \"+JSON.stringify(e)),this.opt.noMatch(e))):(this.log(\"Ignoring invalid range: \"+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:i}}},{key:\"checkWhitespaceRanges\",value:function(e,t,n){var r=void 0,i=!0,o=n.length,a=t-o,s=parseInt(e.start,10)-a;return(r=(s=s>o?o:s)+parseInt(e.length,10))>o&&(r=o,this.log(\"End range automatically set to the max value of \"+o)),s<0||r-s<0||s>o||r>o?(i=!1,this.log(\"Invalid range: \"+JSON.stringify(e)),this.opt.noMatch(e)):\"\"===n.substring(s,r).replace(/\\s+/g,\"\")&&(i=!1,this.log(\"Skipping whitespace only range: \"+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:i}}},{key:\"getTextNodes\",value:function(e){var t=this,n=\"\",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})},function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){e({value:n,nodes:r})})}},{key:\"matchesExclude\",value:function(e){return i.matches(e,this.opt.exclude.concat([\"script\",\"style\",\"title\",\"head\",\"html\"]))}},{key:\"wrapRangeInTextNode\",value:function(e,t,n){var r=this.opt.element?this.opt.element:\"mark\",i=e.splitText(t),o=i.splitText(n-t),a=document.createElement(r);return a.setAttribute(\"data-markjs\",\"true\"),this.opt.className&&a.setAttribute(\"class\",this.opt.className),a.textContent=i.textContent,i.parentNode.replaceChild(a,i),o}},{key:\"wrapRangeInMappedTextNode\",value:function(e,t,n,r,i){var o=this;e.nodes.every(function(a,s){var c=e.nodes[s+1];if(void 0===c||c.start>t){if(!r(a.node))return!1;var u=t-a.start,l=(n>a.end?a.end:n)-a.start,h=e.value.substr(0,a.start),f=e.value.substr(l+a.start);if(a.node=o.wrapRangeInTextNode(a.node,u,l),e.value=h+f,e.nodes.forEach(function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=l),e.nodes[n].end-=l)}),n-=l,i(a.node.previousSibling,a.start),!(n>a.end))return!1;t=a.end}return!0})}},{key:\"wrapMatches\",value:function(e,t,n,r,i){var o=this,a=0===t?0:t+1;this.getTextNodes(function(t){t.nodes.forEach(function(t){t=t.node;for(var i=void 0;null!==(i=e.exec(t.textContent))&&\"\"!==i[a];)if(n(i[a],t)){var s=i.index;if(0!==a)for(var c=1;c [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');\n\nexport function reverse(s) {\n return [...s].reverse().join(\"\");\n}\n\nexport function genCKS(uid, code) {\n return md5(reverse(uid + code + \"\")).slice(0, 10);\n}\n\nexport function replaceVariable(source = \"\", variable = {}) {\n let result = source;\n for (const [key, value] of Object.entries(variable)) {\n result = result.replaceAll(`{{${key}}}`, value);\n }\n return result;\n}\n\n/**\n * @param {[HTMLDivElement]} elements \n */\nexport function addHighlightText(elements, keyword) {\n if (!elements?.length || keyword === \"\") return;\n const c = { \"à\": \"a\", \"á\": \"a\", \"ã\": \"a\", \"ả\": \"a\", \"ạ\": \"a\", \"ă\": \"a\", \"ằ\": \"a\", \"ắ\": \"a\", \"ẳ\": \"a\", \"ẵ\": \"a\", \"ặ\": \"a\", \"â\": \"a\", \"ầ\": \"a\", \"ấ\": \"a\", \"ẩ\": \"a\", \"ẫ\": \"a\", \"ậ\": \"a\", \"è\": \"e\", \"é\": \"e\", \"ẻ\": \"e\", \"ẽ\": \"e\", \"ẹ\": \"e\", \"ê\": \"e\", \"ề\": \"e\", \"ế\": \"e\", \"ể\": \"e\", \"ễ\": \"e\", \"ệ\": \"e\", \"đ\": \"d\", \"ù\": \"u\", \"ú\": \"u\", \"ủ\": \"u\", \"ũ\": \"u\", \"ụ\": \"u\", \"ư\": \"u\", \"ừ\": \"u\", \"ứ\": \"u\", \"ử\": \"u\", \"ữ\": \"u\", \"ự\": \"u\", \"ò\": \"o\", \"ó\": \"o\", \"ỏ\": \"o\", \"õ\": \"o\", \"ọ\": \"o\", \"ô\": \"o\", \"ồ\": \"o\", \"ố\": \"o\", \"ổ\": \"o\", \"ỗ\": \"o\", \"ộ\": \"o\", \"ơ\": \"o\", \"ờ\": \"o\", \"ớ\": \"o\", \"ở\": \"o\", \"ỡ\": \"o\", \"ợ\": \"o\", \"ì\": \"i\", \"í\": \"i\", \"ỉ\": \"i\", \"ĩ\": \"i\", \"ị\": \"i\", \"ä\": \"a\", \"ë\": \"e\", \"ï\": \"i\", \"î\": \"i\", \"ö\": \"o\", \"ü\": \"u\", \"û\": \"u\", \"ñ\": \"n\", \"ç\": \"c\", \"ý\": \"y\", \"ỳ\": \"y\", \"ỹ\": \"y\", \"ỵ\": \"y\", \"ỷ\": \"y\" }\n let instance = new Mark(elements);\n if (instance?.mark) {\n instance.mark(keyword,\n {\n \"separateWordSearch\": true,\n \"diacritics\": true,\n \"synonyms\": c,\n \"element\": \"span\",\n \"className\": \"highlight-text\"\n }\n );\n }\n}\n\nexport function addSlashes(str) {\n return (str ?? \"\").replace(/&/g, '&') /* This MUST be the 1st replacement. */\n .replace(/'/g, ''') /* The 4 other predefined entities, required. */\n .replace(/\"/g, '"')\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(//g, '>').replace(/\\u0000/g, '\\\\0');\n}\n\nexport function removeAccents(str) {\n var AccentsMap = [\n \"aàảãáạăằẳẵắặâầẩẫấậ\",\n \"AÀẢÃÁẠĂẰẲẴẮẶÂẦẨẪẤẬ\",\n \"dđ\", \"DĐ\",\n \"eèẻẽéẹêềểễếệ\",\n \"EÈẺẼÉẸÊỀỂỄẾỆ\",\n \"iìỉĩíị\",\n \"IÌỈĨÍỊ\",\n \"oòỏõóọôồổỗốộơờởỡớợ\",\n \"OÒỎÕÓỌÔỒỔỖỐỘƠỜỞỠỚỢ\",\n \"uùủũúụưừửữứự\",\n \"UÙỦŨÚỤƯỪỬỮỨỰ\",\n \"yỳỷỹýỵ\",\n \"YỲỶỸÝỴ\" \n ];\n for (var i=0; i {\n const utm = getCookie(COOKIE_KEYS.UTM);\n if (getOr(undefined, \"uid\")(utm) !== undefined) {\n delete utm.uid;\n }\n const utmParam = getParamUrl(undefined, utm);\n return genEndPointGetParam(url, { ...utmParam, ...params });\n}\n\nexport const genHeaderApi = async (ref, ignoreUid = false, isFormData = false, noCache = false) => {\n const tf = getCookie(COOKIE_KEYS.TF);\n const tfid = getCookie(COOKIE_KEYS.TFID);\n const foeid = getCookie(COOKIE_KEYS.FOEID);\n const uuid = getCookie(COOKIE_KEYS.GA) ?? \"\";\n const gid = getCookie(COOKIE_KEYS.GID) ?? \"\";\n const utm = getCookie(COOKIE_KEYS.UTM);\n const user_id = getCookie(COOKIE_KEYS.USER_ID);\n\n const locale = SettingConfig.getLocale();\n const currency = SettingConfig.getCurrency();\n const billing = SettingConfig.getBilling();\n const shipping = SettingConfig.getShipping();\n const ipCountry = SettingConfig.getIpCountry();\n const apiKey = DC.API_KEY;\n const externalId = DC.EXTERNAL_ID;\n\n const result = {\n \"App-Platform\": \"dutycast-js-sdk\",\n \"App-Version\": process.env.VERSION,\n \"App-Local-Timestamp\": Date.now(),\n \"App-Locale\": locale || navigator.language,\n \"App-referrer\": document?.referrer,\n \"App-Sdk-Req-Id\": requestId,\n }\n\n if (apiKey) {\n result[\"App-Se\"] = apiKey;\n }\n\n if (!ignoreUid) {\n result[\"App-Uid\"] = await getUid(false);\n }\n\n if (ref) {\n result[\"App-Ref\"] = ref;\n }\n\n if (tf) {\n result[\"App-tf\"] = tf;\n }\n\n if (tfid) {\n result[\"App-tfid\"] = tfid;\n }\n\n if (foeid) {\n result[\"App-Req-Id\"] = foeid;\n }\n\n if (uuid) {\n result[\"App-Uuid\"] = uuid;\n }\n\n if (gid) {\n result[\"App-Gid\"] = gid;\n }\n\n if (utm) {\n result[\"App-utm\"] = utm;\n }\n\n if (user_id) {\n result[\"App-id\"] = user_id;\n }\n\n if (ipCountry) {\n result['App-Country'] = ipCountry;\n }\n\n if (currency) {\n result[\"App-Currency\"] = currency;\n }\n\n if (billing) {\n result[\"App-Billing-Country\"] = billing;\n }\n\n if (shipping) {\n result[\"App-Shipping-Country\"] = shipping;\n }\n\n if (externalId) {\n result[\"App-External-User-Id\"] = externalId;\n }\n\n if (!isFormData) {\n result[\"Content-Type\"] = \"application/json\";\n }\n\n if (noCache) {\n result['cache-control'] = 'no-cache';\n result['pragma'] = 'no-cache';\n }\n return result;\n}\n\nexport async function callApi(url, {\n params = {},\n body,\n method = \"GET\",\n ref,\n onSuccess,\n onError,\n headers = {},\n noHeader = false,\n ignoreUid = false,\n isFormData = false,\n noCache = false,\n} = {}) {\n let requestHeaders = await genHeaderApi(ref, ignoreUid, isFormData, noCache);\n requestHeaders = { ...requestHeaders, ...headers };\n const parseUrl = queryString.parseUrl(url);\n const shippingCity = SettingConfig.getShippingCity();\n const shippingpostalCode = SettingConfig.getShippingPostalCode();\n if (shippingCity) {\n params = { ...params, city: shippingCity };\n }\n if (shippingpostalCode) {\n params = { ...params, postal_code: shippingpostalCode };\n }\n const requestUrl = await genUrl(parseUrl.url, { ...parseUrl.query, ...params });\n\n\n return fetch(requestUrl, {\n method: method,\n body: JSON.stringify(body),\n headers: noHeader ? {} : requestHeaders,\n })\n .then(response => {\n // Chuyển đổi phản hồi sang đối tượng JSON\n return response.json();\n })\n .then(res => {\n // // Kiểm tra xem yêu cầu có thành công hay không\n if (res?.error_code) {\n throw new Error(res.message || res.error_code);\n }\n // Xử lý dữ liệu thành công\n typeof onSuccess === \"function\" && onSuccess(res);\n })\n .catch(error => {\n // Xử lý lỗi\n typeof onError === \"function\" && onError(error);\n });\n\n // return axios({\n // method: method,\n // url: requestUrl,\n // data: body,\n // headers: noHeader ? {} : requestHeaders,\n // })\n // .then(res => {\n // typeof onSuccess === \"function\" && onSuccess(res?.data);\n // })\n // .catch(error => {\n // typeof onError === \"function\" && onError(error?.response?.data);\n // });\n}\n\n\nexport async function subscribeApi(onSuccess, onError) {\n const headers = {};\n try {\n const uid = getCookie(COOKIE_KEYS.UID);\n if (uid && uid !== \"undefined\" && uid !== \"null\") {\n headers[\"App-Uid\"] = uid;\n }\n } catch (error) {\n console.error(error);\n }\n\n return callApi(Env.API_SERVER_URL + END_POINT.SUBSCRIBE, {\n method: \"POST\",\n onSuccess,\n onError,\n ignoreUid: true,\n headers: headers,\n });\n}\n\nexport function apiEstimateProductPriceMultiple(params, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/estimate_price/multiple\", {\n method: \"POST\",\n body: {\n ...params,\n his: {\n // p: LocalStorage.getLastProducts(),\n // s: LocalStorage.getLastStores(),\n // c: LocalStorage.getLastCategories(),\n },\n },\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\n\nexport function apiGetProductSearch(params, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/search\",\n {\n method: \"POST\",\n body: {\n ...params,\n his: {\n // p: LocalStorage.getLastProducts(),\n // s: LocalStorage.getLastStores(),\n // c: LocalStorage.getLastCategories(),\n },\n },\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\nexport function apiSearchAutoComplete(params, onSuccess, onError) {\n return callApi(\n Env.API_SEARCH_SERVER_URL + \"/v5/autocomplete\",\n {\n method: \"POST\",\n body: params,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\n\nexport function apiGetProductDetail(id, params, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/products/\" + id,\n {\n method: \"GET\",\n params: params,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\nexport function apiGetProductVariants(id, params, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/products/\" + id + \"/variants\",\n {\n method: \"GET\",\n params: params,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\nexport function apiEstimateProductPrice(params, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/estimate_price/\",\n {\n method: \"POST\",\n body: params,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\n\nexport function apiGetPriceTags(params, onSuccess, onError, apiTime) {\n return callApi(\n Env.API_SERVER_URL + \"/v1/price_tags\",\n {\n method: \"POST\",\n body: params,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\nexport function apiGetIpConfig(onSuccess, onError) {\n const headers = genHeaderApi();\n return callApi(\n Env.API_SERVER_URL + \"/v1/ipconfig\",\n {\n method: \"GET\",\n headers: headers,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}\n\n\nexport function apiGetInfoLogictics(params, onSuccess, onError) {\n const headers = genHeaderApi();\n return callApi(\n Env.API_SERVER_URL + \"/v1/se/config\",\n {\n method: \"GET\",\n params: params,\n headers: headers,\n onSuccess: onSuccess,\n onError: onError\n }\n );\n}","export const EVENTS = {\n CHANGE_SETTING: \"changeSetting\",\n RESIZE_SCREEN: \"resizeScreen\",\n};\n\nexport function listenEvent(jobId, cb = () => { }) {\n try {\n if (!document.events) document.events = {};\n let callback = function (e) {\n typeof (cb) === \"function\" && cb(e.detail);\n }\n document.events[jobId] = callback;\n document.addEventListener(jobId, callback);\n } catch (error) {\n\n }\n};\n\nexport function callEvent(jobId, details) {\n try {\n document.dispatchEvent(new CustomEvent(jobId, { \"detail\": details }));\n } catch (error) {\n\n }\n};\n\nexport function removeEvent(jobId) {\n try {\n let events = document.events;\n if (events && typeof events === \"object\" && Object.keys(events).length) {\n Object.keys(events).forEach(key => {\n if (jobId === key) {\n document.removeEventListener(jobId, events[key]);\n }\n });\n }\n } catch (error) {\n }\n};\n\nexport function triggerEvent(element, eventName, eventData) {\n const event = new Event(eventName, { bubbles: true, cancelable: true });\n\n // Optionally, attach additional data to the event\n if (eventData) {\n Object.assign(event, eventData);\n }\n\n // Dispatch the event on the element\n element.dispatchEvent(event);\n}\n\nexport function onClickOutside(ele, cb) {\n document.addEventListener('click', event => {\n if (!ele.contains(event.target)) cb();\n });\n};","import DC from \"../DC\";\nimport { appendStyleTo } from \"../utils/element\";\nimport { EVENTS, listenEvent } from \"../utils/event\";\nimport { replaceVariable } from \"../utils/string\";\nimport { genUUID } from \"../utils/utils\";\nimport { DCElement } from \"./DCElement\";\n\n/**\n * Root class for Dutycast compoment loader.\n * @example\n * \n * import htmlString from \"./index.html\";\n * import styleString from './style.scss';\n * \n * export default class NewCompoment extends DComponent {\n * constructor({\n * parent,\n * id,\n * customParam,\n * } = {}) {\n * super(arguments[0], parent, id, {\n * class: \"NewCompoment\",\n * }, false, false);\n * this.customParam = customParam;\n * this.render();\n * }\n * \n * loadStyle() {\n * const styleString;\n * this.appendStyle(style)\n * }\n * \n * loadHtml() {\n * return htmlString;\n * }\n * \n * after() {\n * }\n * }\n */\nexport class DComponent {\n /**\n * Creates an instance of DComponent.\n * @param {{}} [arg={}]\n * @param {any} [parent]\n * @param {string} [id=genUUID()]\n * @param {{}} [variables={}]\n * @param {boolean} [htmlBeforeStyle=false]\n * @param {boolean} [isResponsiveAttr=false]\n * @memberof DComponent\n */\n constructor(\n arg = {},\n parent = \"body\",\n id = genUUID(),\n variables = {},\n htmlBeforeStyle = false,\n isResponsiveAttr = false,\n ) {\n this.id = id;\n this.parent = this.getParent(parent);\n this.variables = variables;\n this.htmlBeforeStyle = htmlBeforeStyle;\n this.arg = arg;\n this.isResponsiveAttr = isResponsiveAttr;\n }\n\n render() {\n this.before(this.arg);\n if (this.htmlBeforeStyle) {\n this.genElement(this.arg);\n this.parentAppend(this.arg);\n this.afterElement(this.arg);\n }\n\n this.loadStyle();\n\n if (!this.htmlBeforeStyle) {\n this.genElement(this.arg);\n this.parentAppend(this.arg);\n this.afterElement(this.arg);\n }\n this.after(this.arg);\n this.element.i18n();\n if (this.isResponsiveAttr) {\n this.resizeScreen(DC.CONFIG_RESPONSIVE_MODE);\n listenEvent(EVENTS.RESIZE_SCREEN, (data) => this.resizeScreen(data));\n };\n this.element.DComponent = this;\n }\n\n getParent(parent) {\n if (!parent) {\n return DCElement(\"body\");\n }\n\n return DCElement(parent);\n }\n\n resizeScreen(attributes = \"\") {\n if (!this.element) return;\n if (attributes.includes(\"dc-mini-desktop\")) {\n this.element.attr(\"dc-mini-desktop\", \"\")\n } else {\n this.element.removeAttr(\"dc-mini-desktop\")\n }\n if (attributes.includes(\"dc-tablet\")) {\n this.element.attr(\"dc-tablet\", \"\")\n } else {\n this.element.removeAttr(\"dc-tablet\")\n }\n if (attributes.includes(\"dc-mobile\")) {\n this.element.attr(\"dc-mobile\", \"\")\n } else {\n this.element.removeAttr(\"dc-mobile\")\n }\n }\n\n /**\n * Function load style file (Require overwrite).\n *\n * @example\n * loadStyle() {\n * const style = styleString;\n * this.appendStyle(style)\n * }\n * \n */\n loadStyle() {\n\n }\n\n /**\n * Function append style to body.\n *\n * @memberof DComponent\n */\n appendStyle(style, id, parent) {\n appendStyleTo(style, id, parent);\n }\n\n /**\n * Function load html file (Require overwrite).\n * \n * @example\n * loadHtml() {\n * return htmlString;\n * }\n * \n */\n loadHtml() {\n // return htmlString;\n }\n\n /**\n * Function will be call before append element.\n *\n * @memberof DComponent\n */\n before() {\n // do any before append element\n }\n\n /**\n * Function will be call after append element.\n *\n * @memberof DComponent\n */\n afterElement() {\n // do any after append element\n }\n\n /**\n * Function will be call after load style.\n *\n * @memberof DComponent\n */\n after() {\n // do any after load style\n }\n\n /**\n * Function define how to generate element.\n *\n * @memberof DComponent\n * \n * @default\n * genElement() {\n * this.element = DCElement(replaceVariable(this.loadHtml(), {\n * id: this.id,\n * ...this.variables\n * }));\n * }\n * \n */\n genElement() {\n try {\n this.element = DCElement(replaceVariable(this.loadHtml(), {\n id: this.id,\n ...this.variables\n }));\n } catch (error) {\n console.error({ error })\n }\n }\n\n /**\n * Function define how append element to parent.\n * (.append, .prepent, .after, .before ...)\n *\n * @memberof DComponent\n * \n * @default\n * parentAppend() {\n * this.parent.append(this.element);\n * }\n * \n */\n parentAppend() {\n this.parent.append(this.element);\n }\n\n /**\n * Function will be call update append element.\n *\n * @memberof DComponent\n */\n update() {\n // this.element.i18n();\n // do any update append element\n }\n\n /**\n * Function will be call destroy append element.\n *\n * @memberof DComponent\n */\n destroy() {\n this.element.remove();\n // do any destroy append element\n }\n}","import { DCElement } from \"../components/DCElement\";\n\nexport function genUUID(length = 8) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() *\n charactersLength));\n }\n return result;\n}\n\nexport function isMobile(el) {\n if (el) {\n return typeof el.outerWidth === \"function\" ? (el.outerWidth() > 0 && el.outerWidth() <= 768) : (el.clientWidth > 0 && el.clientWidth <= 768);\n }\n return window.outerWidth > 0 && window.outerWidth <= 768;\n}\n\nexport function isTablet(el) {\n if (el) {\n return typeof el.outerWidth === \"function\" ? el.outerWidth() <= 1023 : el.clientWidth <= 1023;\n }\n return window.outerWidth <= 1023;\n}\n\nexport function isMiniDesktop(el) {\n if (el) {\n return typeof el.outerWidth === \"function\" ? el.outerWidth() <= 1199 : el.clientWidth <= 1199;\n }\n return window.outerWidth <= 1199;\n}\n\nexport function scrollTo(selector, distance = 10) {\n const offsetTop = DCElement(selector).offsetTop() - distance;\n window.scrollTo({ top: offsetTop, left: 0, behavior: \"smooth\" })\n\n}\n\nexport function genQueryFromArray(arr) {\n if (Array.isArray(arr)) {\n let result = \"\";\n for (let i = 0; i < arr.length; i++) {\n result += arr[i] + \",\";\n }\n return result.replace(/,\\s*$/, \"\");\n } else {\n return arr;\n }\n}\n\nexport function defer(condition, method, relay = 50) {\n if (condition()) {\n method();\n } else {\n setTimeout(function () { defer(condition, method, relay) }, relay);\n }\n}\n\nexport const isPlainObject = function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n\n proto = Object.getPrototypeOf(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = ({}).hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && ({}).hasOwnProperty.toString.call(Ctor) === ({}).hasOwnProperty.toString.call(Object);\n};\n\nexport const extend = function () {\n var options, name, src, copy, copyIsArray, clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && typeof target !== \"function\") {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n\n for (; i < length; i++) {\n\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) ||\n (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n};\n\n\nexport function isVietNamCountry(code) {\n return code === \"VN\";\n}\n\nexport function setStyleElement(el, style) {\n if (!el || !el.length || !style) return;\n el.attr(\"style\", (el.attr(\"style\") || \"\") + style);\n}\n","import classNames from \"classnames\";\n// import { validate, validateEmail, validateURL } from \"../../utils/validate\";\nimport { DComponent } from \"../DComponent\";\nimport { DCElement } from \"../DCElement\";\nimport DC from \"../../DC\";\n\nexport default class InputField extends DComponent {\n constructor({\n wrapper,\n parent,\n id,\n label = \"\",\n type = \"\",\n name = \"\",\n defaultValue = \"\",\n maxlength = 250,\n invalid = \"\",\n tabIndex = \"\",\n placeholder = \"\",\n isRequired = false,\n className = \"\",\n onKeyup = () => { },\n onChange = () => { },\n inline = false,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"InputField\", className, {\n \"is-required\": isRequired,\n \"inline\": inline,\n }),\n type: type,\n label: label,\n name: name,\n tabIndex: tabIndex,\n invalid: invalid,\n maxlength: maxlength,\n placeholder: placeholder,\n });\n this.wrapper = wrapper;\n this.type = type;\n this.name = name;\n this.defaultValue = defaultValue;\n this.placeholder = placeholder;\n this.isRequired = isRequired;\n this.onKeyup = onKeyup;\n this.onChange = onChange;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"InputField\", this.wrapper);\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n DCElement(\"input\", this.element).on(\"keyup\", (e) => {\n // let type = e.target.type;\n // switch (type) {\n // case InputField.TYPE.EMAIL:\n // validate({ selector: e.target, validator: validateEmail, showInvalid: this.isRequired })\n // break;\n // case InputField.TYPE.URL:\n // validate({ selector: e.target, validator: validateURL, showInvalid: this.isRequired })\n // break;\n // default:\n // validate({ selector: e.target, showInvalid: this.isRequired })\n // break;\n // }\n typeof this.onKeyup == \"function\" && this.onKeyup(this.getValue());\n\n })\n DCElement(\"input\", this.element).on(\"change\", (e) => {\n let value = this.getValue();\n typeof this.onChange == \"function\" && this.onChange(value);\n value ? this.element.addClass(\"has-value\") : this.element.removeClass(\"has-value\");\n });\n\n this.defaultValue && this.setValue(this.defaultValue);\n }\n\n getValue() {\n return DCElement(\"input\", this.element).val();\n }\n\n setValue(value) {\n value ? this.element.addClass(\"has-value\") : this.element.removeClass(\"has-value\");\n DCElement(\"input\", this.element).val(value);\n }\n\n setLabel(label, placeholder, invalid) {\n DCElement(\".label span\", this.element).attr(\"data-i18n\", \"[html\" + label);\n DCElement(\".label span\", this.element).text(DC.i18n(label));\n if (placeholder) {\n DCElement(\"input\", this.element).attr(\"data-i18n\", \"[placeholder]\" + placeholder);\n DCElement(\"input\", this.element).attr(\"placeholder\", DC.i18n(placeholder));\n }\n if (invalid) {\n DCElement(\".invalid-feedback\", this.element).attr(\"data-i18n\", \"[html\" + invalid);\n DCElement(\".invalid-feedback\", this.element).text(DC.i18n(invalid));\n }\n }\n\n clearInput() {\n DCElement(\"input\", this.element).removeClass(\"is-invalid\");\n DCElement(\"input\", this.element).val(\"\");\n }\n\n focus() {\n DCElement(\"input\", this.element).focus();\n }\n\n // isValidate(isShowValid = true, isFocus = true) {\n // switch (this.type) {\n // case InputField.TYPE.EMAIL:\n // if (!this.isRequired && !this.getValue()) return true;\n // return validate({ selector: DCElement(\"input\", this.element), validator: validateEmail, showInvalid: isShowValid, isFocus: isFocus })\n\n // case InputField.TYPE.URL:\n // if (!this.isRequired && !this.getValue()) return true;\n // return validate({ selector: DCElement(\"input\", this.element), validator: validateURL, showInvalid: isShowValid, isFocus: isFocus })\n // default:\n // if (!this.isRequired) return true;\n // return validate({ selector: DCElement(\"input\", this.element), showInvalid: isShowValid, isFocus: isFocus })\n // }\n // }\n\n static TYPE = {\n EMAIL: \"email\",\n TEL: \"tel\",\n URL: \"url\",\n }\n}","export default import.meta.ROLLUP_FILE_URL_52eecc49;","\nimport DC from \"../../DC\";\nimport { onClickOutside } from \"../../utils/event\";\nimport { removeAccents } from \"../../utils/string\";\nimport { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\n\nconst classNames = require('classnames');\nexport default class SelectBox extends DComponent {\n constructor({\n wrapper,\n parent,\n id,\n type,\n label = \"\",\n labelText = \"\",\n tabIndex = \"\",\n placeholder = \"\",\n options = [],\n hideFeedback = true,\n defaultValue,\n onChange = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"SelectBox\", {\n \"hide-feedback\": hideFeedback,\n }),\n label: label || \"\",\n labelText: labelText,\n tabIndex: tabIndex,\n placeholder: placeholder || DC.i18n(\"common_select\"),\n arrowDown: require(\"../../assets/images/icons/arrow_down.svg\").default,\n }, false, true);\n this.wrapper = wrapper;\n this.type = type;\n this.options = options;\n this.onChange = onChange;\n this.defaultValue = defaultValue;\n this.selectedValue = \"\";\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"SelectBox\", this.wrapper);\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.fillData(this.options);\n\n const selected = DCElement(\".dc-selected\", this.element);\n const searchBox = DCElement(\".dc-search-box input\", this.element);\n\n selected.addEventListener(\"click\", (e) => {\n e.stopPropagation();\n if (!this.options.length) return;\n let isAcitve = this.element.hasClass(\"active\");\n this.element.removeClass(\"active\");\n this.element.toggleClass(\"active\", !isAcitve);\n\n searchBox.val(\"\");\n this.filterList(\"\");\n });\n\n searchBox.addEventListener(\"keyup\", (e) => {\n this.filterList(e.target.value);\n });\n\n if (this.defaultValue) this.setValue(this.defaultValue);\n\n // Using\n onClickOutside(this.element[0], () => this.hide());\n }\n\n filterList(searchTerm) {\n searchTerm = removeAccents(searchTerm.toLowerCase());\n const optionsList = DCElement(\".dc-option\", this.element);\n optionsList.elements.forEach(option => {\n let label = removeAccents(option.firstElementChild.nextElementSibling.innerText.toLowerCase());\n option.style.display = label.includes(searchTerm) ? \"flex\" : \"none\";\n });\n };\n\n fillData(data = []) {\n const container = DCElement(\".dc-options-container\", this.element)\n container.html(\"\");\n this.element.toggleClass(\"hide-search\", data.length <= 5);\n if (data.length) {\n data.forEach(element => {\n container.append(`\n
\n ${element?.image ? `\"\"` : \"\"}\n \n \n
\n `)\n });\n const optionsList = DCElement(\".dc-option\", this.element);\n optionsList.removeEventListener(\"click\", this.changeOptions);\n optionsList.addEventListener(\"click\", this.changeOptions);\n }\n }\n\n changeOptions = (e) => {\n let input = DCElement(e.target).closest(\".dc-option\").find(\"input\");\n if (input.attr(\"id\")) {\n this.setValue(input.attr(\"id\"), true);\n }\n this.element.removeClass(\"active\");\n }\n\n setValue(value, isTrigger = false) {\n if (value === this.selectedValue) return;\n this.selectedValue = value;\n DCElement(\".dc-option input\", this.element).removeClass(\"active\");\n const option = DCElement(`input[id=\"${value}\"]`, this.element);\n if (option.length) {\n option.addClass(\"active\");\n const selectedEl = DCElement(\".dc-selected .dc-value\", this.element);\n let img = option.attr(\"image\"), label = option.attr(\"label\") || option.attr(\"id\");\n let htmlValue = img ? `\"\" ${label}` : label;\n selectedEl.html(htmlValue);\n }\n\n isTrigger && typeof this.onChange === \"function\" && this.onChange(value);\n }\n\n getValue() {\n return this.selectedValue;\n }\n\n getLabel() {\n let curItem = this.options.find(item => item.value === this.getValue());\n return curItem?.label || \"\";\n }\n\n hide() {\n this.element.toggleClass(\"active\", false);\n }\n}","\nimport DC from \"../../DC\";\nimport { Order } from \"../../models/Order\";\n// eslint-disable-next-line no-unused-vars\nimport { Product } from \"../../models/Product\";\nimport { ReceiptSource } from \"../../models/ReceiptSource\";\nimport { SettingConfig } from \"../../models/SettingConfig\";\nimport { apiGetInfoLogictics } from \"../../utils/api\";\nimport { convertShippingList, getCurrencyCodeByCountry } from \"../../utils/country\";\nimport { convertCurrencyList, getPriceText } from \"../../utils/currency\";\nimport { ResultWrapper } from \"../../utils/globalWrapper\";\nimport { isVietNamCountry, setStyleElement } from \"../../utils/utils\";\nimport { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\nimport InputField from \"../InputField\";\nimport SelectBox from \"../SelectBox\";\n\nconst classNames = require('classnames');\nconst TAB = {\n CART: \"dc-cart\",\n SETTING: \"dc-setting\",\n CLOSE: \"dc-close\"\n}\nexport default class CartPopup extends DComponent {\n constructor({\n parent,\n id,\n order = new Order(),\n onUpdate = () => { },\n onChangeSetting = () => { },\n tab = TAB.CART,\n configSE = ResultWrapper.configSE,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"CartPopup\", {\n loading: true\n }),\n tab: tab,\n cartIcon: require(\"../../assets/images/icons/bag.svg\").default,\n settingIcon: require(\"../../assets/images/icons/setting.svg\").default,\n closeIcon: require(\"../../assets/images/icons/close.svg\").default,\n emptyCart: require(\"../../assets/images/icons/emptyCart.jpg\").default,\n logo_url: configSE?.logoUrl,\n style_header: configSE?.headerConfig?.style ? `style=\"${configSE.headerConfig.style}\"` : \"\",\n logo_class: !configSE?.logoUrl ? \" hide\" : \"\",\n });\n this.order = order;\n this.onUpdate = onUpdate;\n this.tab = tab;\n /**@type {SelectBox} */\n this.selectCountry = undefined;\n /**@type {SelectBox} */\n this.selectCurrency = undefined;\n /**@type {SelectBox} */\n this.selectCity = undefined;\n /**@type {InputField} */\n this.inputCity = undefined;\n /**@type {InputField} */\n this.postalCode = undefined;\n this.onChangeSetting = onChangeSetting;\n this.configSE = configSE;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"CartPopup\", this.parent);\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.genLoading();\n this.updateData(this.order);\n if (this.configSE) {\n this.setUpHeaderCart(this.configSE);\n } else {\n apiGetInfoLogictics({}, (data) => {\n let config = ReceiptSource.fromApiObject(data?.data);\n this.setUpHeaderCart(config);\n })\n }\n this.setUpSource();\n this.setUpEvent();\n }\n\n genLoading() {\n const listLoading = DCElement(\".dc-cart-box .dc-list-data.loading\", this.element);\n for (let index = 0; index < 2; index++) {\n listLoading.append(`\n
\n
\n
\n
\n
title
\n
\n
: color
\n
: size
\n
\n
\n
: id
\n
\n
\n
\n
\n
total
\n
\n
\n
\n
\n `)\n }\n }\n\n /** @param {ReceiptSource} config */\n setUpHeaderCart(config) {\n if (config?.logoUrl) {\n let { logoUrl, url, headerConfig } = config;\n const logoLogictics = DCElement(\".dc-logo-logictics\", this.element);\n logoLogictics.removeClass(\"hide\");\n logoLogictics.find(\"img\").attr(\"src\", logoUrl).css(\"content\", `url(${logoUrl})`);\n logoLogictics.find(\"img\").addClass(\"logo-receipt\").css(\"content\", `url(${logoUrl})`);\n logoLogictics.attr(\"href\", url);\n setStyleElement(DCElement(\".dc-header-cart\", this.element), headerConfig.style);\n let nodes = document.getElementsByClassName(\"dc-header-cart\");\n if (nodes.length) {\n nodes = nodes[0].childNodes;\n this.setColorNodes({ nodes, textStyle: headerConfig.textStyle, imageStyle: headerConfig.imageStyle });\n }\n } else {\n DCElement(\".dc-logo-logictics\", this.element).addClass(\"hide\");\n }\n }\n\n setUpSource() {\n let shippingCode = SettingConfig.getShipping();\n this.selectCountry = new SelectBox({\n wrapper: ResultWrapper.wrapper,\n parent: DCElement(\".select-country\", this.element),\n label: \"select_country\",\n type: \"country\",\n placeholder: DC.i18n(\"select_country\"),\n defaultValue: shippingCode,\n options: this.getOptionShipping(SettingConfig.getShippingCountries(), shippingCode),\n onChange: (value) => {\n let tempCurrency = getCurrencyCodeByCountry(value) || \"USD\";\n this.selectCurrency.setValue(tempCurrency);\n this.setActiveField(value);\n }\n })\n this.selectCurrency = new SelectBox({\n wrapper: ResultWrapper.wrapper,\n parent: DCElement(\".select-currency\", this.element),\n label: \"select_currency\",\n type: \"currency\",\n placeholder: DC.i18n(\"select_currency\"),\n defaultValue: SettingConfig.getCurrency(),\n options: this.getOptionCurrency(SettingConfig.getCurrencies(), SettingConfig.getCurrency())\n })\n let listCityVN = require(\"../../utils/vn-country.json\");\n let defaultCity = listCityVN.find(item => item.label === SettingConfig.getShippingCity());\n let isVN = isVietNamCountry(shippingCode);\n this.selectCity = new SelectBox({\n wrapper: ResultWrapper.wrapper,\n parent: DCElement(\".select-city\", this.element),\n label: \"select_city\",\n type: \"city\",\n defaultValue: isVN ? defaultCity?.value : \"\",\n options: listCityVN,\n })\n this.inputCity = new InputField({\n wrapper: ResultWrapper.wrapper,\n parent: DCElement(\".input-city\", this.element),\n label: \"input_city\",\n placeholder: DC.i18n(\"input_city\"),\n defaultValue: isVN ? \"\" : SettingConfig.getShippingCity(),\n })\n this.postalCode = new InputField({\n wrapper: ResultWrapper.wrapper,\n parent: DCElement(\".input-postalCode\", this.element),\n label: \"input_postalCode\",\n placeholder: DC.i18n(\"input_postalCode\"),\n defaultValue: SettingConfig.getShippingPostalCode(),\n })\n this.setActiveField(shippingCode);\n\n DCElement(\".btn-save\", this.element).on(\"click\", () => {\n this.onSave();\n typeof this.onChangeSetting === \"function\" && this.onChangeSetting();\n })\n }\n\n setColorNodes({ nodes, textStyle, imageStyle }) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].childNodes.length === 0) {\n if (nodes[i].nodeName.toLowerCase() === '#text' && nodes[i].nodeName.toLowerCase() !== 'img') {\n nodes[i].parentNode.style.cssText = (nodes[i].parentNode.style.cssText || \"\") + textStyle;\n continue;\n }\n if (nodes[i].nodeName.toLowerCase() === 'img') {\n nodes[i].style.cssText = (nodes[i].style.cssText || \"\") + imageStyle;\n continue;\n }\n } else {\n this.setColorNodes({ nodes: nodes[i].childNodes, textStyle, imageStyle });\n }\n }\n }\n\n setActiveField(shippingCode) {\n let isVN = isVietNamCountry(shippingCode);\n DCElement(\".select-city\", this.element).toggleClass(\"hide\", !isVN);\n DCElement(\".input-city\", this.element).toggleClass(\"hide\", isVN);\n DCElement(\".input-postalCode\", this.element).toggleClass(\"hide\", isVN);\n }\n\n getOptionShipping(shippingList, shipping) {\n if (!shippingList) return [];\n shippingList = shippingList.split(\",\");\n return convertShippingList(shippingList, shipping);\n }\n\n getOptionCurrency(currencyList, currency) {\n if (!currencyList) return [];\n currencyList = currencyList.split(\",\");\n return convertCurrencyList(currencyList, currency);\n }\n\n onSave() {\n let shipping = this.selectCountry.getValue();\n let currency = this.selectCurrency.getValue();\n let isVN = isVietNamCountry(shipping);\n let city = isVN ? this.selectCity.getLabel() : this.inputCity.getValue();\n let postalCode = isVN ? \"\" : this.postalCode.getValue();\n SettingConfig.setShipping(shipping);\n SettingConfig.setCurrency(currency);\n SettingConfig.setShippingCity(city);\n SettingConfig.setShippingPostalCode(postalCode);\n this.hide();\n }\n\n setUpEvent() {\n this.parent.css(\"position\", \"relative\");\n document.addEventListener('click', event => {\n let ele = this.element[0], parent = this.parent[0];\n if (!ele.contains(event.target) && !parent.contains(event.target)) {\n this.hide()\n };\n });\n\n DCElement(\".dc-menu img\", this.element).on(\"click\", (e) => {\n let id = e.target.id;\n switch (id) {\n case TAB.CLOSE:\n this.hide();\n break;\n default:\n this.onChangeTab(id);\n break;\n }\n })\n }\n\n onChangeTab(id) {\n this.tab = id;\n this.element.attr(\"tab\", id);\n }\n\n updateData(data) {\n this.fillData(data);\n this.element.i18n();\n }\n\n /**\n * @param {Order} order \n */\n fillData(order) {\n this.order = order;\n const listProduct = DCElement(\".dc-cart-box .dc-list-data.data\", this.element);\n listProduct.html(\"\");\n DCElement(\".dc-total\", this.element).html(\"\");\n const details = Order.fromApiObject(order).details;\n this.element.toggleClass(\"empty\", !details.length);\n if (!details.length) {\n return;\n }\n\n let total = 0, stores = 0;\n for (let index = 0; index < details.length; index++) {\n const product = details[index];\n const selectorSite = `.SiteItem[id='${product.siteId}'] .products`;\n const siteItem = listProduct.find(selectorSite);\n total += product.quantity;\n if (siteItem.length) {\n siteItem.append(this.genProductItem(product));\n } else {\n stores += 1;\n listProduct.append(this.genSiteItem(product));\n listProduct.find(selectorSite).append(this.genProductItem(product));\n }\n }\n\n DCElement(\".dc-total\", this.element).html(DC.i18n(\"checkout_total\", total, stores))\n\n DCElement(\".btn-remove\", this.element).on(\"click\", (e) => {\n e.stopPropagation();\n const id = e.target.id;\n let product = this.order.details.find(item => item.pid === id || item.id === id);\n if (product) {\n product.quantity = 0;\n typeof this.onUpdate === \"function\" && this.onUpdate(this.order.code, product);\n }\n })\n }\n\n /**\n * @param {Product} product \n */\n genSiteItem(product) {\n const { siteLogo, siteName, siteUrl, siteId } = product;\n return `\n
\n \n
\n
\n `\n }\n\n /**\n * @param {Product} product \n */\n genProductItem(product) {\n const { id, pid, meta, quantity, price, currentCurrency } = product;\n const { color, size, title, image } = meta || {};\n const className = \"\" + (!color ? \" no-color\" : \"\") + (!size ? \" no-size\" : \"\") + (product.type === \"rfq\" ? \" is-rfq\" : \"\");\n\n return `\n
\n
\n
\n
x ${quantity}
\n
\n
\n
\n
\n ${title || \"\"}\n
\n
\n
: ${color || \"\"}
\n
: ${size || \"\"}
\n
\n
\n
: ${pid || id}
\n
\n
\n
\n
\n
${getPriceText(price, currentCurrency)}
\n
\n
\n
\n
\n `\n }\n\n isShow() {\n return this.element.hasClass(\"active\");\n }\n isLoading(isLoading = false) {\n this.element.toggleClass(\"loading\", isLoading);\n }\n\n show() {\n this.selectCountry.setValue(SettingConfig.getShipping());\n this.selectCurrency.setValue(SettingConfig.getCurrency())\n this.element.addClass(\"active\");\n }\n\n hide() {\n this.onChangeTab(TAB.CART);\n this.element.removeClass(\"active\");\n }\n\n hasData() {\n return this.order.details?.length;\n }\n}","import DC from \"../../DC\";\nimport CartPopup from \"../CartPopup\";\nimport { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\n\nconst classNames = require('classnames');\nexport default class Cart extends DComponent {\n constructor({\n parent,\n id,\n onUpdate,\n onChangeSetting,\n cartElement,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"Cart\"),\n });\n this.onUpdate = onUpdate;\n this.onChangeSetting = onChangeSetting;\n /**@type {CartPopup} */\n this.popupCart = undefined;\n this.cartElement = cartElement;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"Cart\", this.parent);\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n if (DCElement(this.cartElement).length && DCElement(this.cartElement).find('[dc-badge]').length) {\n DCElement(this.cartElement).attr(\"dc-checkout\", \"\").attr(\"dc-popup\", \"\");\n } else {\n this.element.addClass(\"default\");\n this.element.append(`\n
\n
\n \n
\n
\n
\n
\n `)\n }\n this.showBadge();\n }\n\n showBadge() {\n DC.showBadge();\n }\n\n updateDataPopup(data) {\n this.popupCart.updateData(data);\n }\n\n\n async showPopup(event, parent) {\n if (!this.popupCart) {\n this.popupCart = new CartPopup({\n parent: DCElement(parent),\n onUpdate: this.onUpdate,\n onChangeSetting: this.onChangeSetting,\n })\n }\n if (this.popupCart.element[0].contains(event.target)) {\n return;\n }\n if (this.popupCart.isShow()) {\n this.popupCart.hide();\n } else {\n !this.popupCart.hasData() && this.popupCart.isLoading(true);\n this.popupCart.show();\n let cart = await DC.getCart();\n this.popupCart.updateData(cart?.data || {})\n this.popupCart.isLoading(false);\n }\n }\n}","export default import.meta.ROLLUP_FILE_URL_8e59671c;","export default import.meta.ROLLUP_FILE_URL_8378a15b;","export default import.meta.ROLLUP_FILE_URL_0e285d60;","export default import.meta.ROLLUP_FILE_URL_60acbc9c;","export default import.meta.ROLLUP_FILE_URL_fcf8e000;","import DC from \"../DC\";\n\nexport class PriceTag {\n constructor(\n id,\n cp,\n cur,\n t,\n tags,\n ) {\n this.id = id;\n this.cp = cp;\n this.cur = cur;\n this.t = t;\n this.tags = tags;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new PriceTag(\n input.id,\n input.cp,\n input.cur,\n input.icon_url,\n Tag.fromApiArray(input.tags),\n )\n }\n\n return new PriceTag();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => PriceTag.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [PriceTag.fromApiObject(input)];\n }\n\n return [];\n }\n\n /** @param {[Tag]} tags */\n static getLabelLowest(tags = []) {\n if (!tags?.length) return \"\";\n let result = \"\";\n\n for (let index = 0; index < tags.length; index++) {\n const tag = tags[index];\n result = tag.getLabel();\n }\n return result;\n }\n}\n\nexport class Tag {\n constructor(\n period,\n periodUnit,\n price,\n tag,\n ) {\n this.period = period;\n this.periodUnit = periodUnit;\n this.price = price;\n this.tag = tag;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Tag(\n input.period,\n input.period_unit,\n input.price,\n input.tag,\n )\n }\n\n return new Tag();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Tag.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Tag.fromApiObject(input)];\n }\n\n return [];\n }\n\n /**\n * @param {[Tag]} tags \n * @returns {boolean}\n */\n static hasLowestTag(tags = []) {\n if (!tags.length) return;\n let result = false;\n for (let index = 0; index < tags.length; index++) {\n const element = tags[index];\n if (element.tag === this.TAG_TYPE.LOWEST) {\n result = true;\n return result;\n }\n }\n return result;\n }\n\n getLabel() {\n const PERIOD_UNIT = {\n \"hours\": \"common_hours\",\n \"minutes\": \"common_minutes\",\n \"seconds\": \"common_seconds\",\n \"days\": \"common_days\",\n }\n return this.period ? DC.i18n(\"checkout_lowestPriceLast\", this.period, DC.i18n(PERIOD_UNIT[this.periodUnit] || \"common_days\")) : DC.i18n(\"checkout_lowestPriceAll\");\n }\n\n static TAG_TYPE = {\n LOWEST: \"lowest\",\n }\n}","export class ProductVariant {\n constructor(\n dimensions,\n dimensionKeys,\n variants,\n ) {\n /** @type {[Dimension]}*/\n this.dimensions = dimensions;\n this.dimensionKeys = dimensionKeys;\n /** @type {[Variant]}*/\n this.variants = variants;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new ProductVariant(\n Dimension.fromApiArray(input.data),\n input.reordered_dimensions,\n Variant.fromApiArray(input.variants),\n )\n }\n\n return new ProductVariant();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => ProductVariant.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [ProductVariant.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class Dimension {\n constructor(\n dimensionCode,\n label,\n /** @type {[DimensionValue]}*/\n values,\n displayType,\n ) {\n this.dimensionCode = dimensionCode;\n this.label = label;\n this.values = values;\n this.displayType = displayType;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Dimension(\n input.dimension_code,\n input.label,\n DimensionValue.fromApiArray(input.values),\n input.display_type,\n )\n }\n\n return new Dimension();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Dimension.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Dimension.fromApiObject(input)];\n }\n\n return [];\n }\n\n static TYPE = {\n DROPDOWN: \"dropdown\",\n TAB: \"tab\",\n }\n}\n\nexport class DimensionValue {\n constructor(\n items,\n label,\n ) {\n /** @type {[DimensionValueItem]}*/\n this.items = items;\n this.label = label;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new DimensionValue(\n DimensionValueItem.fromApiArray(input.items),\n input.label,\n )\n }\n\n return new DimensionValue();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => DimensionValue.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [DimensionValue.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class DimensionValueItem {\n constructor(\n image,\n label,\n value,\n color,\n ) {\n this.image = image;\n this.label = label;\n this.value = value;\n this.color = color;\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new DimensionValueItem(\n input.image,\n input.label,\n input.value,\n input.color,\n )\n }\n\n return new DimensionValueItem();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => DimensionValueItem.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [DimensionValueItem.fromApiObject(input)];\n }\n\n return [];\n }\n}\n\nexport class Variant {\n constructor(\n currency,\n productId,\n siteId,\n sku,\n unitPrice,\n dimensions,\n url,\n isAvailable,\n ) {\n this.currency = currency;\n this.productId = productId;\n this.siteId = siteId;\n this.sku = sku;\n this.unitPrice = unitPrice;\n this.dimensions = dimensions;\n this.url = url;\n this.isAvailable = isAvailable;\n\n }\n\n static fromApiObject(input) {\n if (input && typeof (input) === \"object\") {\n return new Variant(\n input.cur,\n input.product_id,\n input.site_id,\n input.sku,\n input.unit_price,\n input.dimensions,\n input.url,\n input.is_available,\n )\n }\n\n return new Variant();\n }\n\n static fromApiArray(input) {\n if (input && Array.isArray(input)) {\n return input.map(item => Variant.fromApiObject(item));\n }\n\n if (input && typeof (input) === \"object\") {\n return [Variant.fromApiObject(input)];\n }\n\n return [];\n }\n}","export default import.meta.ROLLUP_FILE_URL_fdf7dee7;","import { Dimension } from '../../models/ProductVariant';\nimport { replaceVariable } from '../../utils/string';\nimport { DCElement } from '../DCElement';\nimport { DComponent } from '../DComponent';\nimport SelectBox from '../SelectBox';\n\n\nconst classNames = require('classnames');\nclass DimensionItem extends DComponent {\n constructor({\n parent,\n id,\n currentValue,\n dimension = new Dimension(),\n onClick = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"DimensionItem\"),\n value: dimension.dimensionCode,\n arrowDown: require(\"../../assets/images/icons/arrow_down.svg\").default,\n }, true);\n this.currentValue = currentValue;\n /** @type {Dimension} */\n this.dimension = dimension;\n this.onClick = onClick;\n /** @type {SelectBox} */\n this.selectBox = undefined;\n this.currentTab = 0;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"DimensionItem\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.fillData();\n this.setUpEvent();\n }\n\n fillData() {\n if (this.dimension.displayType === Dimension.TYPE.TAB) {\n DCElement(\".collapse\", this.element).append(`\n
\n
\n
\n
\n `)\n }\n this.dimension.values.forEach((element, index) => {\n if (element.items.length) {\n let htmlItems = \"\", curItem = \"\";\n\n switch (this.dimension.displayType) {\n case Dimension.TYPE.DROPDOWN:\n let labelText = element.label || this.dimension.label || this.dimension.dimensionCode;\n this.selectBox = new SelectBox({\n parent: DCElement(\".dimension-select\", this.element),\n type: this.dimension.dimensionCode,\n labelText: labelText,\n placeholder: \"Select \" + labelText + \"...\",\n options: element.items,\n onChange: (value) => {\n typeof (this.onClick) === \"function\" && this.onClick(this.dimension?.dimensionCode, value);\n },\n })\n this.element.addClass(\"is-select\");\n\n break;\n case Dimension.TYPE.TAB:\n DCElement(\".collapse .tab\", this.element).append(`\n \n `);\n let dLabel = this.dimension.label ? (this.dimension.label + \" (\" + element.label) + \")\" : (element.label || \"\");\n element.items.forEach(item => {\n if (this.currentValue === item.value) curItem = item;\n htmlItems += `\n
\n ${item.image ?\n `
\"\"\"\"/
` :\n item.color ? `
` :\n `
${item.label}
`\n }\n
\n `\n })\n let idActive = DCElement(\".collapse .tab .tablinks\", this.element).attr(\"d-id\");\n DCElement(\".collapse .tabcontent\", this.element).append(replaceVariable(require(\"./item.html\").default, {\n label: dLabel ? dLabel + \":\" : \"\",\n classLabel: !(element.label || this.dimension.label) ? \" hide\" : \"\",\n value: curItem?.label || \"\",\n values: htmlItems,\n id: element.label || \"\",\n class: idActive && idActive === element.label ? \"active\" : \"\",\n }))\n DCElement(\".collapse .tab .tablinks\", this.element).on(\"click\", (e) => {\n let id = DCElement(e.target).attr(\"d-id\");\n DCElement(`.collapse .tab .tablinks`, this.element).removeClass(\"active\");\n DCElement(`.collapse .tab .tablinks[d-id='${id}']`, this.element).addClass(\"active\");\n DCElement(`.collapse .tabcontent .dimension-item`, this.element).removeClass(\"active\");\n DCElement(`.collapse .tabcontent .dimension-item#${id}`, this.element).addClass(\"active\");\n })\n if (curItem) this.setCurrentDimension(dLabel, curItem.label, curItem.image);\n this.element.addClass(\"is-tab\");\n\n break;\n default:\n element.items.forEach(item => {\n if (this.currentValue === item.value) curItem = item;\n htmlItems += `\n
\n ${item.image ?\n `
\"\"\"\"/
` :\n item.color ? `
` :\n `
${item.label}
`\n }\n
\n `\n })\n DCElement(\".collapse\", this.element).append(replaceVariable(require(\"./item.html\").default, {\n label: (element.label || this.dimension.label) ? (element.label || this.dimension.label) + \":\" : \"\",\n classLabel: !(element.label || this.dimension.label) ? \" hide\" : \"\",\n value: curItem?.label || \"\",\n values: htmlItems,\n id: element.label || \"\",\n }))\n if (curItem) this.setCurrentDimension(element.label || this.dimension.label, curItem.label, curItem.image);\n break;\n }\n }\n });\n\n const dimensionItem = DCElement(\".dimension-values .item\", this.element);\n dimensionItem.on(\"click\", (e) => {\n dimensionItem.removeClass(\"active\");\n let item = DCElement(e.currentTarget);\n item.closest(\".dimension-item\").find(\".value\").text(\"\");\n item.addClass(\"active\");\n typeof (this.onClick) === \"function\" && this.onClick(this.dimension?.dimensionCode, item.attr(\"d-value\"))\n })\n\n dimensionItem.addEventListener(\"mouseover\", (e) => {\n const el = DCElement(e.currentTarget);\n const label = el.attr(\"title\") || \"\";\n el.closest(\".dimension-item\").find(\".value\").text(label);\n })\n\n DCElement(\".dimension-values\", this.element).addEventListener(\"mouseleave\", (e) => {\n const el = DCElement(e.currentTarget);\n const label = el.find(\".item.active\").attr(\"title\") || \"\";\n el.closest(\".dimension-item\").find(\".value\").text(label);\n })\n }\n\n setUpEvent() {\n DCElement(\".dimension-head .arrow-down\", this.element).addEventListener(\"click\", (e) => {\n const head = DCElement(e.currentTarget).parent();\n let value = head.find(\".dimension-summary .value\").text();\n if (value) {\n const id = head.attr(\"data-target\");\n const expanded = head.attr(\"aria-expanded\");\n const isExpanded = expanded === \"true\";\n head.attr(\"aria-expanded\", !isExpanded);\n head.toggleClass(\"collapsed\", !isExpanded);\n DCElement(id, this.element).toggleClass(\"show\", isExpanded);\n }\n })\n }\n\n setCurrentDimension(label, value, image) {\n const dimensionLabel = DCElement(\".dimension-head .label\", this.element);\n if (label) {\n dimensionLabel.text(label + \":\").removeClass(\"hide\");\n } else {\n dimensionLabel.addClass(\"hide\");\n }\n DCElement(\".dimension-head .value\", this.element).text(value);\n const dimensionImage = DCElement(\".dimension-head .image-value\", this.element);\n if (image) {\n dimensionImage.attr(\"src\", image).removeClass(\"hide\");\n } else {\n dimensionImage.addClass(\"hide\");\n }\n }\n\n\n setActiveDimensions(activeDim) {\n if (activeDim.selectedDimension) {\n this.currentValue = activeDim.selectedDimension[this.dimension.dimensionCode];\n DCElement(\".item\", this.element).removeClass(\"active\");\n Object.keys(activeDim.selectedDimension).forEach(key => {\n if (key === this.dimension.dimensionCode) {\n let valueActive = DCElement(`.item[d-code='${key}-${activeDim.selectedDimension[key]}']`, this.element);\n if (valueActive.length) {\n let title = valueActive.attr(\"title\");\n valueActive.addClass(\"active\");\n valueActive.closest(\".dimension-item\").find(\".value\").text(title);\n this.setCurrentDimension(valueActive.attr(\"d-label\"), title, valueActive.find(\".image-main\").attr(\"src\"));\n }\n if (this.selectBox) {\n this.selectBox.setValue(this.currentValue);\n }\n }\n });\n }\n\n this.dimension.values.forEach(value => {\n value.items.forEach(item => {\n let dimensionItem = DCElement(`.item[d-code='${this.dimension.dimensionCode}-${item.value}']`, this.element);\n dimensionItem.length && dimensionItem.removeClass(\"available\");\n if (this.selectBox) {\n this.selectBox.element.find(`.option[data-value='${item.value}']`).addClass(\"not-available\");\n }\n if (activeDim[this.dimension.dimensionCode] && activeDim[this.dimension.dimensionCode][item.value]) {\n dimensionItem.length && dimensionItem.addClass(\"available\");\n if (this.selectBox) {\n this.selectBox.element.find(`.option[data-value='${item.value}']`).removeClass(\"not-available\");\n }\n }\n });\n });\n }\n}\n\nexport default DimensionItem;","import classNames from \"classnames\";\nimport { DComponent } from \"../DComponent\";\nimport { Search } from \"../../models/Search\";\nimport { SearchProduct } from \"../../models/SearchProduct\";\n\nimport { getPriceText } from \"../../utils/currency\";\nimport Env from \"../../environments\";\nimport DC from \"../../DC\";\nimport { DCElement } from \"../DCElement\";\nimport { SettingConfig } from \"../../models/SettingConfig\";\n\n\nclass SearchProductItem extends DComponent {\n constructor({\n parent,\n id,\n product = new SearchProduct(),\n source = Search.SOURCE.ORGANIC,\n onClick = () => { },\n displayAmount,\n } = {}) {\n let checkoutPrice = product.checkoutPrice && product.checkoutCur ? getPriceText(product.checkoutPrice, product.checkoutCur) : \"\";\n let unitPrice = product.unitPrice && product.unitCur ? getPriceText(product.unitPrice, product.unitCur) : \"\";\n super(arguments[0], parent, id, {\n class: classNames(\"SearchProductItem\"),\n name: product.meta?.title || \"\",\n image: optimizeImage(product.meta?.image),\n storeUrl: product.site?.domain ? \"https://www.google.com/s2/favicons?sz=32&domain=\" + product.site?.domain : \"\",\n storeName: product.site?.name || \"\",\n displayAmount: Search.isInterShipping(displayAmount) ? \"productDetail_internationalShipping\" : \"productDetail_checkoutPrice\",\n price: checkoutPrice || DC.i18n(\"productDetail_priceUpdating\"),\n sitePrice: unitPrice,\n dataUnitPrice: product.unitPrice,\n classSitePrice: product.unitPrice && product.unitCur ? \"\" : \" hide\",\n }, false, true);\n this.product = product;\n this.source = source;\n this.onClick = onClick;\n this.displayAmount = displayAmount;\n this.render();\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n DCElement(\".product-link\", this.element).addEventListener(\"click\", (e) => {\n e.preventDefault();\n typeof this.onClick === \"function\" && this.onClick(this.product.getPId())\n })\n }\n\n getId() {\n return this.product.pid || this.product.id;\n }\n\n getUnitPrice() {\n return DCElement(\".site-price .price\", this.element).attr(\"data-price\");\n }\n\n setUnitPrice(price, currency, isCheck = false) {\n if (isCheck && this.getUnitPrice()) {\n return;\n }\n DCElement(\".site-price .price\", this.element).html(price && currency ? getPriceText(price, currency) : \"\");\n DCElement(\".site-price\", this.element).toggleClass(\"hide\", !(price && currency));\n }\n\n getCheckoutPrice() {\n return DCElement(\".my-price .price\", this.element).attr(\"data-price\");\n }\n\n setProductPrice(price, currency, isCheck = false) {\n let hasPrice = this.getCheckoutPrice();\n if (isCheck && hasPrice) {\n return;\n }\n\n DCElement(\".my-price .price\", this.element).html(price && currency ? getPriceText(price, currency) : DC.i18n(\"productDetail_priceUpdating\"));\n }\n}\n\n\nfunction optimizeImage(image = \"\") {\n if (!image) return SettingConfig.getLocale() === \"vi\" ? \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_vi.jpg\" : \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_en.jpg\";\n\n if (image.includes(Env.IMGFOE_URL)) {\n image = `${image}${image.indexOf('?') !== -1 ? '&' : '?'}max-w=600`\n }\n\n return CSS.escape(image);\n}\n\nexport default SearchProductItem;","export default import.meta.ROLLUP_FILE_URL_b11a86cb;","import DC from '../../DC';\nimport { Tag } from '../../models/PriceTag';\nimport { DCElement } from '../DCElement';\nimport { DComponent } from '../DComponent';\n\nconst classNames = require('classnames');\nexport default class LowestTag extends DComponent {\n constructor({\n parent,\n id,\n tags = [],\n position = \"bottom\"\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"LowestTag\", position),\n PriceLowest: require(\"../../assets/images/icons/PriceLowest.svg\").default,\n }, true, true);\n this.tags = tags;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"LowestTag\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.setPriceTags(this.tags);\n }\n\n /**\n * @param {[Tag]} tags \n * @returns \n */\n setPriceTags(tags = []) {\n if (!tags.length) return;\n let curTag;\n for (let index = 0; index < tags.length; index++) {\n const tag = tags[index];\n if (tag.tag === Tag.TAG_TYPE.LOWEST) {\n curTag = tag;\n }\n }\n\n DCElement(\".tag-value\", this.element).attr(\"data-i18n\", curTag && curTag.period ? \"checkout_lowestPrice\" : \"checkout_lowestPriceAllTime\");\n DCElement(\".tag-value\", this.element).text(curTag && curTag.period ? DC.i18n(\"checkout_lowestPrice\") : DC.i18n(\"checkout_lowestPriceAllTime\"));\n DCElement(\".tooltip-lowest span\", this.element).text(curTag ? curTag.getLabel() : \"\");\n }\n}","export default import.meta.ROLLUP_FILE_URL_e171a65f;","export default import.meta.ROLLUP_FILE_URL_ce36306f;","import { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\n\nconst classNames = require('classnames');\nclass QuantityInput extends DComponent {\n constructor({\n id,\n parent,\n hide,\n inputWrapper,\n maxQuantity = 9999,\n onChange = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"QuantityInput\", {\n \"hide\": !!hide\n }),\n subBtnBG: require(\"../../assets/images/icons/sub.svg\").default,\n plusBtnBG: require(\"../../assets/images/icons/plus.svg\").default,\n }, false, true);\n this.inputWrapper = inputWrapper;\n this.maxQuantity = maxQuantity;\n this.onChange = onChange;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"QuantityInput\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.setEvent();\n }\n\n setEvent() {\n DCElement(\".sub-btn\", this.element).on(\"click\", () => {\n let quantity = this.getQuantity();\n if (quantity > 1) {\n this.setQuantity(quantity - 1);\n }\n });\n DCElement(\".plus-btn\", this.element).on(\"click\", () => {\n let quantity = this.getQuantity();\n if (quantity < this.maxQuantity) {\n this.setQuantity(quantity + 1);\n }\n });\n DCElement(\"input[name=quantity]\", this.element).on(\"input\", (e) => {\n let input = DCElement(e.currentTarget);\n let quantity = input.val().slice(0, 4);\n let isNotValid = !quantity || quantity * 1 === 0 || input.val() > this.maxQuantity;\n input.parent().toggleClass(\"error\", isNotValid);\n });\n DCElement(\"input[name=quantity]\", this.element).on(\"focusout\", (e) => {\n let input = DCElement(e.currentTarget);\n let quantity = input.val().slice(0, 4);\n const value = input.attr(\"value\");\n if (!quantity || quantity * 1 === 0 || input.val() > this.maxQuantity) {\n input.parent().removeClass(\"error\");\n this.setQuantity(value);\n }\n });\n }\n\n getQuantity() {\n return DCElement(\"input[name=quantity]\", this.element).val() * 1;\n }\n\n setQuantity(value) {\n const input = DCElement(\"input[name=quantity]\", this.element);\n input.val(value).attr(\"value\", value).trigger('change');\n typeof this.onChange === \"function\" && this.onChange(value);\n }\n}\n\nexport default QuantityInput;","export default import.meta.ROLLUP_FILE_URL_2d4a6f0f;","import classNames from \"classnames\";\nimport { DComponent } from \"../DComponent\";\nimport { defer } from \"../../utils/utils\";\nimport { DCElement } from \"../DCElement\";\n\nlet isFirst = true;\n\nclass SliderImage extends DComponent {\n constructor({\n parent,\n id,\n data = [],\n carouselDisplaying = 5,\n slidesToScroll = 1,\n autoplay = false,\n autoplaySpeed = 4000,\n onChange = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"SliderImage\"),\n nextArrow: require(\"../../assets/images/icons/Arrow_Right_Orange.svg\").default,\n prevArrow: require(\"../../assets/images/icons/Arrow_Left_Orange.svg\").default,\n });\n this.data = data;\n this.carouselDisplaying = carouselDisplaying;\n this.slidesToScroll = slidesToScroll;\n this.autoplay = autoplay;\n this.autoplaySpeed = autoplaySpeed;\n this.onChange = onChange;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"SliderImage\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.changeData(this.data, true);\n }\n changeData(data = []) {\n if (!data.length) {\n this.element.addClass(\"hide\");\n return;\n }\n let carouselContent = DCElement('.carousel-content', this.element);\n carouselContent.html(\"\");\n for (let index = 0; index < data.length; index++) {\n const element = data[index];\n carouselContent.append(`\n
\n \"slide-image\"\n
\n `)\n }\n this.element.removeClass(\"hide\");\n let hasSlider = this.data.length > this.carouselDisplaying;\n DCElement(\".carousel\", this.element).toggleClass(\"slider\", hasSlider);\n this.setUpSlider(hasSlider);\n }\n\n onNext() {\n DCElement('.nav-right', this.element).trigger(\"click\");\n }\n\n onPrevious() {\n DCElement('.nav-left', this.element).trigger(\"click\");\n }\n\n onGotoSlider(toIndex) {\n var slides = DCElement('.slide', this.element);\n slides.forEach(el => {\n let index = el.dataset[\"index\"];\n // eslint-disable-next-line\n if (index == toIndex) {\n el.click();\n }\n })\n }\n\n setUpSlider(hasSlider = true) {\n const { carouselDisplaying, onChange, element } = this;\n\n var carouselContent = DCElement('.SliderImage .carousel-content', element)[0];\n var carousel = DCElement('.SliderImage .carousel', element)[0];\n var slides = DCElement('.SliderImage .slide', element).elements;\n var arrayOfSlides = Array.prototype.slice.call(slides);\n var slideActive = '0';\n\n setScreenSize();\n var lengthOfSlide;\n\n slides.forEach(el => {\n el.removeEventListener(\"click\", onChangeSlide);\n el.addEventListener(\"click\", onChangeSlide);\n })\n\n function addClone() {\n var carouselContent = DCElement('.SliderImage .carousel-content', element)[0];\n var lastSlide = carouselContent.lastElementChild.cloneNode(true);\n lastSlide.style.left = (-lengthOfSlide) + \"px\";\n lastSlide.classList.add(\"clone\");\n lastSlide.addEventListener(\"click\", onChangeSlide);\n carouselContent.insertBefore(lastSlide, carouselContent.firstChild);\n }\n\n function removeClone() {\n var firstSlide = carouselContent.firstElementChild;\n firstSlide.parentNode.removeChild(firstSlide);\n }\n\n function moveSlidesRight() {\n var slides = DCElement('.SliderImage .slide', element).elements;\n var slidesArray = Array.prototype.slice.call(slides);\n var width = 0;\n\n slidesArray.forEach(function (el, i) {\n el.style.left = width + \"px\";\n width += lengthOfSlide;\n });\n addClone();\n }\n\n hasSlider && moveSlidesRight();\n\n function moveSlidesLeft() {\n var slides = DCElement('.SliderImage .slide', element).elements;\n var slidesArray = Array.prototype.slice.call(slides);\n slidesArray = slidesArray.reverse();\n var maxWidth = (slidesArray.length - 1) * lengthOfSlide;\n\n slidesArray.forEach(function (el, i) {\n maxWidth -= lengthOfSlide;\n el.style.left = maxWidth + \"px\";\n });\n }\n\n window.addEventListener(\"resize\", setScreenSize);\n\n function setScreenSize() {\n getScreenSize();\n }\n\n function getScreenSize() {\n var slides = DCElement('.SliderImage .slide', element).elements;\n var slidesArray = Array.prototype.slice.call(slides);\n lengthOfSlide = (carousel.offsetWidth / carouselDisplaying);\n var initialWidth = -lengthOfSlide;\n slidesArray.forEach(function (el) {\n el.style.width = lengthOfSlide + \"px\";\n el.style.left = initialWidth + \"px\";\n initialWidth += lengthOfSlide;\n });\n }\n\n var moving = true;\n function moveRight() {\n if (moving) {\n DCElement(\".SliderImage .carousel\", element).removeClass(\"no-transition\");\n moving = false;\n var lastSlide = carouselContent.lastElementChild;\n lastSlide.parentNode.removeChild(lastSlide);\n carouselContent.insertBefore(lastSlide, carouselContent.firstChild);\n removeClone();\n var firstSlide = carouselContent.firstElementChild;\n firstSlide.addEventListener('transitionend', activateAgain);\n moveSlidesRight();\n setActiveSlide(undefined, 1);\n }\n }\n\n function activateAgain() {\n var firstSlide = carouselContent.firstElementChild;\n moving = true;\n firstSlide.removeEventListener('transitionend', activateAgain);\n }\n\n window.moveLeft = moveLeft;\n\n function moveLeft() {\n if (moving) {\n DCElement(\".SliderImage .carousel\", element).removeClass(\"no-transition\");\n moving = false;\n removeClone();\n var firstSlide = carouselContent.firstElementChild;\n firstSlide.addEventListener('transitionend', replaceToEnd);\n moveSlidesLeft();\n setActiveSlide(undefined, 1);\n }\n }\n\n function replaceToEnd() {\n var firstSlide = carouselContent.firstElementChild;\n firstSlide.parentNode.removeChild(firstSlide);\n carouselContent.appendChild(firstSlide);\n firstSlide.style.left = ((arrayOfSlides.length - 1) * lengthOfSlide) + \"px\";\n addClone();\n moving = true;\n firstSlide.removeEventListener('transitionend', replaceToEnd);\n }\n\n function onChangeSlide(e) {\n e.preventDefault();\n let index = e.currentTarget.dataset[\"index\"];\n if (index === slideActive) return;\n setActiveSlide(index);\n hasSlider && loopSlider();\n }\n\n function loopSlider() {\n if (moving) {\n DCElement(\".SliderImage .carousel\", element).addClass(\"no-transition\");\n moving = false;\n removeClone();\n // var firstSlide = carouselContent.firstElementChild;\n // firstSlide.addEventListener('transitionend', replaceToEnd);\n moveSlidesLeft();\n replaceToEnd();\n\n defer(() => moving === true, () => {\n if (carouselContent.children[1].dataset[\"index\"] !== slideActive) {\n loopSlider();\n }\n }, 0);\n }\n }\n\n function setActiveSlide(curSlide, curIndex) {\n var slides = DCElement('.SliderImage .slide', element).elements;\n var slidesArray = Array.prototype.slice.call(slides);\n let curId = '0';\n slidesArray.forEach(function (el, i) {\n let index = el.dataset[\"index\"];\n if ((curIndex !== undefined && parseInt(curIndex) === i) || (curIndex === undefined && index === curSlide)) {\n curId = index;\n el.classList.add(\"slide-active\");\n } else {\n el.classList.remove(\"slide-active\");\n }\n });\n slideActive = curId;\n typeof onChange === \"function\" && onChange(curId * 1);\n }\n\n if (hasSlider && isFirst) {\n var rightNav = DCElement('.SliderImage .nav-right', element);\n rightNav.addEventListener('click', moveLeft);\n\n var leftNav = DCElement('.SliderImage .nav-left', element);\n leftNav.addEventListener('click', moveRight);\n\n isFirst = false;\n }\n }\n}\n\nexport default SliderImage;","export const devLog = (...args) => {\n if (process.env.NODE_ENV !== 'production') {\n console.log(Date.now(), ...args);\n }\n}\n","import Env from \"../../environments\";\nimport { Order } from \"../../models/Order\";\nimport { PriceTag } from \"../../models/PriceTag\";\nimport { Product } from \"../../models/Product\";\nimport { ProductVariant } from \"../../models/ProductVariant\";\nimport { SearchProduct } from \"../../models/SearchProduct\";\nimport { apiEstimateProductPrice, apiEstimateProductPriceMultiple, apiGetPriceTags, apiGetProductDetail, apiGetProductSearch, apiGetProductVariants } from \"../../utils/api\";\nimport { getPriceText } from \"../../utils/currency\";\nimport { addSlashes } from \"../../utils/string\";\nimport { scrollTo } from \"../../utils/utils\";\nimport { DComponent } from \"../DComponent\";\nimport DimensionItem from \"../DimensionItem\";\nimport { Search } from \"../../models/Search\";\nimport SearchProductItem from \"../SearchProductItem\";\nimport LowestTag from \"../LowestTag\";\nimport { changeQuery, changeQueryString, getParamUrl } from \"../../utils/url\";\nimport { delegate } from \"../../utils/element\";\nimport DC from \"../../DC\";\nimport QuantityInput from \"../QuantityInput\";\nimport SliderImage from \"../SliderImage\";\nimport { SettingConfig } from \"../../models/SettingConfig\";\nimport { DCElement } from \"../DCElement\";\nimport { devLog } from \"../../utils/log\";\nimport { ResultWrapper } from \"../../utils/globalWrapper\";\nimport { setCookie } from \"../../utils/cookie\";\n\nconst classNames = require('classnames');\nclass DetailProduct extends DComponent {\n constructor({\n id,\n parent,\n wrapper,\n productId,\n onAfter = () => { },\n onlyShowProduct = false,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"DetailProduct\", {\n \"hide\": !productId,\n \"onlyShowProduct\": onlyShowProduct\n }),\n Arrow_Right_Orange: require(\"../../assets/images/icons/Arrow_Right_Orange.svg\").default,\n prevArrow_orange: require(\"../../assets/images/icons/prevArrow_orange.svg\").default,\n nextArrow_orange: require(\"../../assets/images/icons/nextArrow_orange.svg\").default,\n Arrow_Right_To_White: require(\"../../assets/images/icons/Arrow_Right_To_White.svg\").default,\n arrowDown: require(\"../../assets/images/icons/arrow_down.svg\").default,\n searchLoading: genSearchItemLoading(),\n }, false, true);\n this.wrapper = wrapper;\n this.page = 1;\n this.curDimension = {};\n /** @type {SearchProduct} */\n this.productSearch = {};\n /** @type {SearchProduct} */\n this.productDetail = {};\n /** @type {SearchProduct} */\n this.productOrigin = {};\n /** @type {[SearchProductItem]} */\n this.listProductItems = [];\n /** @type {LowestTag} */\n this.lowestTag = {};\n this.dimensionItems = {};\n this.estimateTimeout = null;\n this.isFirst = true;\n this.currentImageIndex = 0;\n this.productId = productId;\n /** @type {QuantityInput} */\n this.quantityInput = undefined;\n /** @type {SliderImage} */\n this.sliderImage = undefined;\n this.displayAmount = Search.PAY_AMOUNT;\n this.onAfter = onAfter;\n this.onlyShowProduct = onlyShowProduct;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"DetailProduct\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.initData();\n this.initEvent();\n DCElement(\"#google_translate_element\", this.element)\n // setTimeout(() => {\n // this.googleTranslateElementInit();\n // }, 2000);\n }\n\n googleTranslateElementInit() {\n // eslint-disable-next-line no-undef\n setCookie('googtrans', '/no/hi', 1);\n // eslint-disable-next-line no-undef\n new google.translate.TranslateElement({ pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, \"google_translate_element\");\n };\n\n initData() {\n this.lowestTag = new LowestTag({\n parent: DCElement(\".unit-price .lowest-price\", this.element),\n position: \"left\"\n })\n this.productId && this.getData(this.productId);\n }\n\n initEvent() {\n this.scrollSetup();\n this.setUpImageThumbnailEvent();\n this.setUpNavigatorSlider();\n DCElement(\".section-no-result .btn-black\", this.element).on(\"click\", (e) => {\n window.history.back();\n })\n DCElement(\".section.section-recommend .view-more-rc .btn-view-more\", this.element).on(\"click\", () => {\n this.getProductRecommend(this.productSearch, true);\n })\n\n DCElement(\".btn.buy-now\", this.element).on(\"click\", (e) => {\n this.handleAddToCart(true);\n })\n\n DCElement(\".btn.add-cart\", this.element).on(\"click\", () => {\n this.handleAddToCart();\n })\n\n this.setUpAddCart();\n }\n\n handleAddToCart = async (isFastCheckout) => {\n try {\n let productData = this.productDetail.genAddToCartParams();\n let quantity = this.quantityInput.getQuantity();\n productData.quantity = this.quantityInput.getQuantity(quantity || 1);\n await DC.addToCart(productData, isFastCheckout);\n } catch (error) {\n devLog(error);\n }\n }\n\n setUpAddCart() {\n this.quantityInput = new QuantityInput({\n parent: DCElement(\".quantity\", this.element),\n })\n }\n\n onChangeId(id, isChangeQuery = true) {\n this.productId = id;\n DCElement(\".section-content\", this.element).addClass(\"loading\");\n this.resetData();\n scrollTo(this.wrapper);\n !this.onlyShowProduct && isChangeQuery && changeQuery({\n [Search.PID]: id,\n [Search.TERM]: undefined,\n [Search.FILTER_COUNTRY]: undefined,\n [Search.FILTER_SITE]: undefined,\n [Search.DC_PAGE]: undefined,\n [Search.DC_SOURCE]: undefined,\n [Order.ORDER_NO]: undefined,\n }, undefined, false);\n this.getData(id);\n }\n\n /** @param {SearchProduct} product */\n setProductData(product) {\n DC.setDataCheckout(product.genAddToCartParams());\n }\n\n resetData() {\n this.listProductItems = [];\n this.curDimension = {};\n this.productSearch = {};\n this.productDetail = {};\n this.productOrigin = {};\n this.listProductItems = [];\n this.dimensionItems = {};\n clearTimeout(this.estimateTimeout);\n this.isFirst = true;\n this.currentImageIndex = 0;\n this.quantityInput?.setQuantity(1);\n this.element.removeClass(\"no-result\");\n DCElement(\".section.section-recommend .search-rc-data\", this.element).html(\"\");\n DCElement(\".product-attributes\", this.element).html(\"\");\n }\n\n setDisplayAmount(displayAmount) {\n if (Object.keys(Search.AMOUNT_MAPPING).includes(displayAmount)) {\n this.displayAmount = displayAmount;\n DCElement(\".product-details .price .price-label\", this.element).text(DC.i18n(Search.isInterShipping(displayAmount) ? \"productDetail_internationalShipping\" : \"productDetail_checkoutPrice\"));\n DCElement(\".product-details .price .price-label\", this.element).attr(\"data-i18n\", Search.isInterShipping(displayAmount) ? \"productDetail_internationalShipping\" : \"productDetail_checkoutPrice\");\n }\n }\n\n getData(id, par = {}, productVariant) {\n let params = par;\n if (!productVariant) {\n params = {\n ...params,\n \"dc_medium\": \"product_detail\",\n \"dc_content\": id,\n }\n }\n if (this.isFirst) this.startLoading();\n\n apiGetProductDetail(id, params, (data) => {\n if (data?.data) {\n let product = SearchProduct.fromApiObject(data.data);\n this.setDisplayAmount(data.display_amount);\n this.productDetail = product;\n this.setProductData(product);\n this.fillData(product, productVariant);\n if (!productVariant) {\n this.productOrigin = product;\n this.getProductVariants(product.pid || id);\n } else {\n !this.onlyShowProduct && changeQuery({ [Search.PID]: product.getPId() }, undefined, false);\n // product.getPId() && LocalStorage.addLastProduct(product.getPId());\n }\n this.estimatePrice(productVariant, product);\n if (this.isFirst) {\n this.getSearchProduct(product.pid || this.productId);\n this.isFirst = false;\n }\n DCElement(\".section-content\", this.element).removeClass(\"loading\");\n } else {\n this.element.addClass(\"no-result\");\n }\n typeof this.onAfter === \"function\" && this.onAfter();\n }, (error) => {\n if (!productVariant) {\n this.element.addClass(\"no-result\");\n } else {\n this.fillData(this.productDetail, productVariant);\n }\n typeof this.onAfter === \"function\" && this.onAfter();\n })\n }\n\n /** @param {SearchProduct} product */\n fillData(product = {}, isChangeDimension = false) {\n const { meta, site } = product;\n const { color, size, title, description, categories } = meta;\n const { name, domain } = site;\n\n this.fillImageData(product, isChangeDimension);\n\n if (!isChangeDimension) {\n const productInfo = DCElement(\".section-content .product-info .product-infomation\", this.element);\n const productDetails = DCElement(\".section-content .product-info .product-infomation .product-details\", this.element);\n const productDescription = DCElement(\".section-content .product-description\", this.element);\n const productBreadcrumb = DCElement(\".section-breadcrumb .d-breadcrumb\", this.element);\n\n productInfo.find(\".site-name\").text(name);\n productInfo.find(\".site-logo\").attr(\"src\", `https://www.google.com/s2/favicons?sz=32&domain=${domain}`);\n productInfo.find(\".product-name\").text(title);\n let urlHome = changeQueryString(Search.PID, undefined);\n productBreadcrumb.find(\"li.product-list a\").attr(\"href\", urlHome);\n productBreadcrumb.find(\"li.title .breadcrumb-item\").text(title);\n productBreadcrumb.find(\"li.title\").toggleClass(\"hide\", !title);\n if (categories?.length) {\n let fcategory = categories[0];\n productBreadcrumb.find(\"li.category .breadcrumb-item\").text(fcategory.name);\n let urlCategory = changeQueryString(Search.PID, undefined);\n urlCategory = changeQueryString(Search.FILTER_CATEGORY, fcategory.id, urlCategory);\n productBreadcrumb.find(\"li.category a\").attr(\"href\", urlCategory);\n }\n productBreadcrumb.find(\"li.category\").toggleClass(\"hide\", !categories?.length);\n\n productDetails.find(\".color .value\").html(color).parent().toggleClass(\"hide\", !color);\n productDetails.find(\".size .value\").html(size).parent().toggleClass(\"hide\", !size);\n\n if (description && typeof description === \"string\") {\n const descriptionText = this.formatDescription(description);\n productDescription.find(\".content-description .value\").html(descriptionText);\n productDescription.toggleClass(\"hide\", !descriptionText);\n } else {\n productDescription.addClass(\"hide\");\n }\n }\n\n this.setProductPrice(product.checkoutPrice, product.checkoutCur);\n this.setUnitPrice(product.unitPrice, product.unitCur);\n }\n\n /** @param {SearchProduct} product */\n fillImageData(product, isChangeDimension) {\n const { meta } = product;\n const { images, image } = meta;\n\n if (images && images.length && images[0].large) {\n this.setUpSliderImage(images, isChangeDimension);\n } else {\n if (!isChangeDimension) {\n const defaultImage = image || (SettingConfig.getLocale() === \"vi\" ? \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_vi.jpg\" : \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_en.jpg\");\n const backgroundImage = `url(${this.optimizeImage(defaultImage, 960)})`;\n const productImage = DCElement(\".section-content .product-info .product-image\", this.element);\n\n productImage.find(\".product-summary-image .image\").css('background-image', backgroundImage);\n }\n }\n }\n\n formatDescription(description) {\n let showMoreRegex = /(]*>)*(Show more)*/gi;\n let hrefRegex = /(]*href=\")[^\"]*(\"[^>]*>)/gi;\n let scriptRegex = /)<[^<]*)*<\\/script>/gi;\n return description.replace(scriptRegex, \"\").replace(showMoreRegex, \"\").replace(hrefRegex, \"\");\n }\n\n setUpSliderImage(images = []) {\n this.currentImageIndex = 0;\n const productInfo = DCElement(\".section-content .product-info .product-image\", this.element);\n\n productInfo.find(\".product-thumbnail .flex-box\").html(\"\");\n\n let htmlImages = \"\", imgSummary = \"\", optimizeImg, listImg = [];\n images.forEach((element, index) => {\n optimizeImg = this.optimizeImage(addSlashes(element.thumb || element.large), 112, false);\n htmlImages += `\n
\n \"thumb-image\"\n
\n `\n if (!imgSummary) imgSummary = element.large;\n listImg.push({ image: optimizeImg });\n });\n\n productInfo.find(\".product-summary-image .image\").css('background-image', `url(${this.optimizeImage(imgSummary, 960)})`);\n productInfo.find(\".product-summary-image .div-image\").toggleClass(\"has-slider\", images.length > 5);\n productInfo.find(\".product-thumbnail.desktop .flex-box\").html(htmlImages);\n\n if (!this.sliderImage) {\n this.sliderImage = new SliderImage({\n parent: DCElement(\".product-thumbnail.mobile\", this.element),\n data: listImg,\n onChange: (id) => {\n let image = images[id].large || images[id].thumb;\n DCElement(\".section-content .product-info .product-image .product-summary-image .image\", this.element).css('background-image', `url(${this.optimizeImage(image, 960)})`);\n }\n })\n } else {\n this.sliderImage.changeData(listImg);\n }\n\n productInfo.find(\".product-thumbnail.desktop .item-thumbnail\").on(\"mouseenter\", (e) => {\n this.setCurrentImage(DCElement(e.currentTarget));\n })\n }\n\n optimizeImage(image = \"\", width = \"auto\", isEscape = true) {\n if (!image) return image;\n\n if (image.includes(Env.DUTY_CAST_IMGFOE_URL)) {\n image = `${image}${image.indexOf('?') !== -1 ? '&' : '?'}max-w=${width}`\n }\n\n return isEscape ? CSS.escape(image) : image;\n }\n\n setUpNavigatorSlider() {\n const productImage = DCElement(\".section-content .product-info .product-image .product-summary-image\", this.element);\n productImage.find(\".icon-slider.previous\").on(\"click\", (e) => {\n this.sliderImage?.onPrevious();\n });\n\n productImage.find(\".icon-slider.next\").on(\"click\", (e) => {\n this.sliderImage?.onNext();\n });\n }\n\n setUpImageThumbnailEvent() {\n const productThumbnail = DCElement(\".section-content .product-info .product-image .product-thumbnail.desktop\", this.element);\n delegate(productThumbnail, \"click\", \".item-thumbnail\", (e) => {\n this.setCurrentImage(DCElement(e.dtarget));\n this.currentImageIndex = DCElement(e.dtarget).attr(\"index\");\n })\n\n productThumbnail.on(\"mouseleave\", (e) => {\n let currentImage = productThumbnail.find(`.item-thumbnail[index=\"${this.currentImageIndex}\"]`);\n this.setCurrentImage(currentImage);\n })\n\n DCElement(\".section-content .product-info .product-infomation .see-details .bow-tie\", this.element).attr('src', require(\"../../assets/images/search/bowTie.svg\").default);\n }\n\n setCurrentImage(element) {\n const productImage = DCElement(\".section-content .product-info .product-image\", this.element);\n productImage.find(\".product-summary-image .image\").css('background-image', `url(${this.optimizeImage(element.attr(\"image\"), 960)})`);\n productImage.find(\".product-thumbnail.desktop .item-thumbnail\").removeClass(\"active\");\n element.addClass(\"active\");\n }\n\n setUnitPrice(price, currency) {\n const unitPrice = DCElement(\".section-content .product-info .product-infomation .unit-price\", this.element);\n if (price && currency) {\n unitPrice.find(\".value\").html(getPriceText(price, currency));\n unitPrice.removeClass(\"hide\");\n } else {\n unitPrice.addClass(\"hide\");\n }\n }\n\n setProductPrice(price, currency) {\n const productInfo = DCElement(\".section-content .product-info .product-infomation\", this.element);\n const priceDetails = productInfo.find(\".product-details .price\");\n const priceValue = productInfo.find(\".product-details .price .value\");\n const seeDetails = productInfo.find(\".see-details\");\n const addToCartBuyNow = DCElement(\".action-AddToCart-BuyNow\", this.element);\n\n priceDetails.removeClass(\"hide\");\n seeDetails.addClass(\"has-price\");\n\n const text = getPriceText(price, currency);\n priceValue.html(price && currency ? text : DC.i18n(\"productDetail_priceUpdating\"));\n priceValue.attr(\"data-i18n\", price && currency ? \"\" : \"productDetail_priceUpdating\");\n\n seeDetails.toggleClass(\"updating\", !(price && currency));\n addToCartBuyNow.toggleClass(\"hide\", !(price && currency));\n }\n\n /** \n * @param {Variant} productVariant\n * @param {SearchProduct} product\n * */\n estimatePrice(productVariant, product) {\n let maxCount = parseInt(Env.DUTY_CAST_MAX_ESTIMATE_PRICE_TIME) || 30000, delay = parseInt(Env.DUTY_CAST_ESTIMATE_PRICE_DELAY) || 3000;\n\n const handleEstimateRetry = () => {\n this.estimateTimeout = setTimeout(() => {\n loop();\n }, delay);\n };\n\n /** @param {Order} order */\n const handleSuccess = (order) => {\n if (order.details.length) {\n const payAmount = order[Search.AMOUNT_MAPPING[this.displayAmount]];\n const payCurrency = order[Search.CURRENCY_MAPPING[this.displayAmount]];\n if ((payAmount && payCurrency)) {\n const { sitePrice, sitePriceCur, meta } = order.details[0];\n this.setProductPrice(payAmount, payCurrency);\n this.setUnitPrice(sitePrice && sitePriceCur ? sitePrice : this.productOrigin.unitPrice, sitePrice && sitePriceCur ? sitePriceCur : this.productOrigin.unitCur);\n if (!product?.meta?.images?.length && !product?.meta?.image) {\n meta?.image && this.fillImageData(order.details[0]);\n }\n // this.getPriceTags(order);\n DCElement(\".action-AddToCart-BuyNow .buy-now\", this.element).removeClass(\"hide\");\n } else {\n handleEstimateRetry();\n }\n }\n }\n\n const loop = (count = 0) => {\n count += delay;\n if (count < maxCount) {\n let params = productVariant ? this.genParamsEstimate(productVariant.sku, productVariant.siteId, productVariant.url) : this.genParamsEstimate(product.sku, product.site?.id, product.meta?.currentUrl);\n apiEstimateProductPrice(params, (data) => {\n if (data?.data) {\n const order = Order.fromApiObject(data.data);\n handleSuccess(order);\n }\n })\n }\n }\n loop();\n }\n\n /** @param {Order} order */\n getPriceTags(order = {}) {\n if (!order.details?.length) return;\n let params = Product.getParamPriceTags(order.details);\n apiGetPriceTags(params,\n (data) => {\n let priceTags = PriceTag.fromApiArray(data.data);\n this.setLowestPrice(priceTags);\n },\n () => {\n this.setLowestPrice([]);\n }\n )\n }\n\n setLowestPrice(priceTags = []) {\n if (!priceTags.length) return;\n let temp = priceTags[0];\n this.showLowestPriceTags((temp?.tags || []).length > 0);\n DCElement(\".section-content .product-info .product-infomation .unit-price\", this.element).toggleClass(\"is-lowest-price\", temp?.tags?.length);\n temp?.tags && this.lowestTag.setPriceTags(temp.tags);\n }\n\n genParamsEstimate(sku, siteId, currentUrl) {\n let params = {\n \"details\": []\n };\n if (sku && siteId) {\n let query = {\n \"sku\": sku,\n \"site_id\": siteId,\n \"product_provider_id\": getParamUrl(Search.PID) || this.productDetail.getPId()\n }\n if (currentUrl) {\n query[\"meta\"] = {\n \"current_url\": currentUrl\n }\n }\n params.details.push(query)\n }\n return params;\n }\n\n getProductVariants(pId) {\n apiGetProductVariants(pId, {},\n (data) => {\n if (data) {\n let productVariant = ProductVariant.fromApiObject(data);\n if (productVariant?.dimensions?.length && productVariant?.variants?.length) {\n productVariant.dimensionKeys.forEach(element => {\n this.curDimension[element] = \"\";\n });\n this.fillDataVariant(productVariant);\n }\n // this.productDetail.getPId() && LocalStorage.addLastProduct(this.productDetail.getPId());\n }\n }\n )\n }\n\n /** @param {ProductVariant} productVariant */\n fillDataVariant(productVariant) {\n let defaultVariant = this.getCurrentVariant(productVariant.variants, this.productDetail.sku);\n let sortedDimensions = [];\n for (let i = 0; i < productVariant.dimensionKeys.length; i++) {\n const dimensionKey = productVariant.dimensionKeys[i];\n for (let j = 0; j < productVariant.dimensions.length; j++) {\n const element = productVariant.dimensions[j];\n if (element.dimensionCode === dimensionKey) {\n sortedDimensions.push(element);\n }\n }\n }\n\n sortedDimensions.forEach(element => {\n let curValue = defaultVariant?.dimensions && Object.keys(defaultVariant.dimensions).length && defaultVariant.dimensions[element.dimensionCode];\n if (this.curDimension[element.dimensionCode] !== undefined) {\n this.curDimension[element.dimensionCode] = curValue || \"\";\n }\n if (element.values.length) {\n this.dimensionItems[element.dimensionCode] = new DimensionItem({\n parent: DCElement(\".product-attributes\", this.element),\n dimension: element,\n currentValue: curValue,\n onClick: (dimensionCode, dimensionValue) => {\n clearTimeout(this.estimateTimeout);\n if (this.curDimension[dimensionCode] !== undefined) {\n this.curDimension[dimensionCode] = dimensionValue;\n }\n this.setActiveDimensions(productVariant.variants, dimensionCode);\n let temp = this.getCurrentVariant(productVariant.variants, undefined, this.curDimension);\n if (temp && temp.sku && temp.siteId && temp.url) {\n this.getData(temp.productId || 0, {\n sku: temp.sku,\n site_id: temp.siteId,\n }, temp);\n } else {\n this.fillData(this.productDetail, true);\n }\n }\n })\n }\n });\n\n this.setActiveDimensions(productVariant.variants, sortedDimensions[0].dimensionCode);\n }\n\n /** @param {[Variant]} variants */\n setActiveDimensions(variants, selectedDimensionCode) {\n let activeDim = this.activeDimensions(variants, { selectedDimension: this.curDimension, selectedDimensionCode: selectedDimensionCode });\n Object.keys(this.dimensionItems).forEach(key => {\n this.dimensionItems[key].setActiveDimensions(activeDim);\n });\n Object.keys(activeDim.selectedDimension).forEach(key => {\n this.curDimension[key] = activeDim.selectedDimension[key];\n });\n }\n\n /** @param {[Variant]} variants */\n activeDimensions(variants, activeDim) {\n if (!activeDim.selectedDimensionCode) {\n return activeDim;\n }\n\n let selectedDimension = activeDim.selectedDimension;\n if (!selectedDimension) {\n selectedDimension = variants[0].dimensions;\n }\n const dimensionKeys = Object.keys(selectedDimension);\n dimensionKeys.forEach(key => {\n if (!activeDim[key]) {\n activeDim[key] = {};\n }\n });\n\n let isMatch = false;\n let activedVariants = this.activeVariants(variants, activeDim.selectedDimensionCode, selectedDimension[activeDim.selectedDimensionCode]);\n activedVariants.forEach(element => {\n dimensionKeys.forEach(k => {\n activeDim[k][element.dimensions[k]] = true;\n });\n if (this.isMatchDimension(element.dimensions, selectedDimension)) {\n isMatch = true;\n }\n });\n\n let reassignSelectedDimension = false;\n for (let index = 0; index < variants.length; index++) {\n const element = variants[index];\n if (!isMatch && !reassignSelectedDimension && element.dimensions[activeDim.selectedDimensionCode] === selectedDimension[activeDim.selectedDimensionCode] && element.isAvailable) {\n activeDim.selectedDimension = element.dimensions;\n reassignSelectedDimension = true;\n }\n\n let selectedDimensionMatch = true;\n dimensionKeys.forEach(k => {\n if (k !== activeDim.selectedDimensionCode && !activeDim[k][element.dimensions[k]]) {\n selectedDimensionMatch = false;\n }\n });\n if (selectedDimensionMatch) {\n activeDim[activeDim.selectedDimensionCode][element.dimensions[activeDim.selectedDimensionCode]] = true;\n }\n // element.productId && LocalStorage.removeLastProduct(element.productId);\n }\n\n return activeDim;\n }\n\n /** @param {[Variant]} variants */\n activeVariants(variants, selectedDimensionCode, selectedDimensionValue) {\n let result = [];\n variants.forEach(element => {\n if (element.dimensions && Object.keys(element.dimensions).length && element.dimensions[selectedDimensionCode] === selectedDimensionValue && element.isAvailable) {\n result.push(element);\n }\n });\n return result;\n }\n\n /**\n * @param {[Variant]} variants \n * @returns {Variant}\n */\n getCurrentVariant(variants, sku, curDimension = {}) {\n let len = variants.length, defaultVar = {};\n for (let index = 0; index < len; index++) {\n const element = variants[index];\n if (!Object.keys(defaultVar).length && Object.keys(element.dimensions).length) {\n defaultVar = element;\n }\n if (this.isMatchVariant(element, sku, curDimension)) {\n return element;\n }\n }\n if (0 < len) {\n return defaultVar;\n }\n return {};\n }\n\n /** @param {Variant} compareVariant */\n isMatchVariant(compareVariant, sku, curDimension) {\n if (!Object.keys(compareVariant.dimensions).length) {\n return false;\n }\n if (sku && compareVariant.sku === sku) {\n return true;\n }\n\n if (this.isMatchDimension(compareVariant.dimensions, curDimension)) {\n return true;\n }\n\n return false;\n }\n\n /** @param {Variant} compareDimension */\n isMatchDimension(compareDimension, curDimension) {\n let keys = Object.keys(compareDimension);\n if (!compareDimension || keys.length === 0) {\n return false;\n }\n if (!curDimension || Object.keys(curDimension).length === 0) {\n return false;\n }\n\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index];\n if (String(compareDimension[key]) !== String(curDimension[key])) {\n return false;\n }\n }\n return true;\n }\n\n getSearchProduct(productId) {\n let params = {\n ...this.genParamsSearch(),\n \"pp\": 1,\n \"f\": {\n \"id\": [productId]\n },\n \"dc_medium\": \"product_detail\",\n \"dc_content\": productId,\n };\n const sectionRecommend = DCElement(\".section.section-recommend\", this.element);\n apiGetProductSearch(params, (data) => {\n if (data?.data?.length) {\n let product = SearchProduct.fromApiObject(data.data[0]);\n this.productSearch = product;\n if (product?.meta?.t) {\n this.getProductRecommend(product);\n } else {\n this.stopLoading();\n sectionRecommend.addClass(\"hide\");\n }\n } else {\n this.stopLoading();\n sectionRecommend.addClass(\"hide\");\n }\n }, (error) => {\n this.stopLoading();\n sectionRecommend.addClass(\"hide\");\n })\n }\n\n /** @param {SearchProduct} product */\n getProductRecommend(product, isLoadmore = false) {\n if (isLoadmore) {\n this.page += 1;\n }\n let params = {\n ...this.genParamsSearch(),\n \"p\": this.page,\n \"pp\": this.getDefaultPerPage(),\n \"t\": product.meta.t,\n \"f\": {\n \"id_neq\": [product?.getPId()]\n },\n \"dc_medium\": \"product_recommend\",\n \"dc_content\": product?.getPId(),\n };\n if (isLoadmore) this.startLoading();\n const sectionRecommend = DCElement(\".section.section-recommend\", this.element);\n apiGetProductSearch(params, (data) => {\n let searchData = Search.fromApiObject(data);\n\n if (searchData.products.length) {\n this.fillDataSearch(searchData);\n this.estimateProductPrice(this.genParamsEstimateMultiple(searchData.products));\n this.stopLoading();\n sectionRecommend.removeClass(\"hide\");\n } else {\n this.stopLoading();\n sectionRecommend.addClass(\"hide\");\n }\n },\n (error) => {\n this.stopLoading();\n sectionRecommend.addClass(\"hide\");\n }\n )\n }\n\n estimateProductPrice(params) {\n let ids = params.pids;\n apiEstimateProductPriceMultiple(params.params,\n (data) => {\n if (data?.data) {\n let orders = Order.fromApiArray(data.data);\n if ((orders.length)) {\n for (let index = 0; index < ids.length; index++) {\n const productId = ids[index];\n const order = orders[index];\n let product = this.listProductItems.find(item => item.getId() === productId);\n if (product) {\n product.element.attr(\"estimated\", true);\n const payAmount = order[Search.AMOUNT_MAPPING[this.displayAmount]];\n const payCurrency = order[Search.CURRENCY_MAPPING[this.displayAmount]];\n product.setProductPrice(payAmount, payCurrency);\n let sitePrice = order.details[0] ? order.details[0].sitePrice : 0;\n let sitePriceCur = order.details[0] ? order.details[0].sitePriceCur : \"\";\n product.setUnitPrice(sitePrice, sitePriceCur);\n }\n }\n }\n }\n }\n )\n }\n\n /** @param {Search} searchData */\n fillDataSearch(searchData) {\n const sectionRecommend = DCElement(\".section.section-recommend\", this.element);\n searchData.products.forEach(element => {\n this.listProductItems.push(new SearchProductItem({\n parent: DCElement(\".section.section-recommend .search-rc-data\", this.element),\n product: element,\n source: Search.SOURCE.RECOMMEND,\n onClick: (id) => this.onChangeId(id),\n displayAmount: searchData.displayAmount,\n }))\n });\n let count = searchData.paging?.currentPage * this.getDefaultPerPage(), total = searchData.paging?.totalCount;\n let products = count < total ? count : total;\n\n const viewMore = sectionRecommend.find(\".view-more-rc\");\n if (searchData.paging?.currentPage < searchData.paging?.totalPages) {\n viewMore.find(\".view-more-rc .value\").html(`(${total - products})`);\n viewMore.removeClass(\"hide\");\n } else {\n viewMore.addClass(\"hide\");\n }\n }\n\n genParamsSearch() {\n return Search.genDefaultParams(\"product\", this.getDefaultPerPage());\n }\n\n /**\n * \n * @param {[SearchProduct]} products \n * @returns \n */\n genParamsEstimateMultiple(products = []) {\n let params = {\n \"details\": []\n };\n let listPro = []\n products.forEach(product => {\n let query = {\n \"site_id\": product?.site?.id || \"\",\n \"product_provider_id\": product.getPId()\n }\n params.details.push(query);\n listPro.push(product.getPId());\n });\n\n return {\n params: params,\n pids: listPro\n }\n }\n\n startLoading() {\n const sectionRecommend = DCElement(\".section.section-recommend\", this.element);\n sectionRecommend.addClass(\"loadmore\");\n }\n\n stopLoading() {\n const sectionRecommend = DCElement(\".section.section-recommend\", this.element);\n sectionRecommend.removeClass(\"loadmore\");\n sectionRecommend.removeClass(\"loading\");\n }\n\n scrollSetup() {\n if (DCElement('.product-image', this.element).height() > 0) {\n DCElement('.product-info', this.element).css(\"min-height\", DCElement('.product-image', this.element).height() + \"px\");\n }\n\n const handleScroll = () => {\n const productInfo = DCElement('.product-info', this.element);\n const productImage = productInfo.find(\".product-image\");\n\n if (this.parentWidth() > 1023) {\n const top = window.scrollY, distanceTop = ResultWrapper.wrapper.offsetTop();;\n const image = DCElement('.product-image .image', this.element);\n\n if (productInfo.height() > image.height() + 100) {\n if (top >= distanceTop + 50) {\n if (top - distanceTop <= productInfo.offsetHeight() - image.height() - 12) {\n productImage.css(\"width\", `${productInfo.find(\".product-infomation\").outerWidth() - 12}px`);\n productInfo.addClass(\"sticky\").removeClass(\"absolute\");\n } else {\n productInfo.addClass(\"absolute\");\n }\n } else {\n productImage.css(\"width\", `${productInfo.find(\".product-infomation\").outerWidth() - 12}px`);\n productInfo.removeClass(\"sticky\", \"absolute\")\n }\n } else {\n productInfo.removeClass(\"sticky\", \"absolute\")\n }\n } else {\n productImage.css(\"width\", \"100%\");\n productInfo.removeClass(\"sticky\", \"absolute\")\n }\n };\n const handleResize = () => {\n const productInfo = DCElement('.product-info', this.element);\n const productImage = productInfo.find(\".product-image\");\n\n if (this.parentWidth() > 1023) {\n productImage.css(\"width\", `${productInfo.find(\".product-infomation\").outerWidth() - 12}px`);\n } else {\n productImage.css(\"width\", \"100%\");\n productInfo.removeClass(\"sticky\", \"absolute\")\n }\n\n productInfo.css(\"min-height\", productInfo.height() + \"px\");\n };\n\n window.addEventListener(\"scroll\", () => handleScroll());\n window.addEventListener(\"resize\", () => handleResize());\n }\n\n show() {\n this.element.removeClass(\"hide\");\n }\n\n hide() {\n this.element.addClass(\"hide\");\n }\n\n parentWidth() {\n return DCElement(this.wrapper).outerWidth();\n }\n\n getDefaultPerPage() {\n let parentW = this.parentWidth();\n // return parentW < 1199 && parentW > 1023 ? 6 : parentW < 1023 ? 8 : 4;\n return parentW > 1023 ? 4 : parentW > 768 ? 6 : 8;\n }\n}\n\nfunction genSearchItemLoading(length = 4) {\n let parentW = DCElement(ResultWrapper.wrapper).outerWidth();\n length = 1023 > parentW && parentW > 768 ? 3 : 4;\n let result = \"\";\n for (let index = 0; index < length; index++) {\n result += `\n
\n
\n
\n `\n }\n return result;\n}\n\nexport default DetailProduct;","export default import.meta.ROLLUP_FILE_URL_c9293802;","/**\n* @typedef {\n* ({ input, delay, appendTo, classes, source, select }: {\n* input: string | HTMLElement;\n* delay?: number | undefined;\n* appendTo?: string | HTMLElement | undefined;\n* classes?: string | undefined;\n* source?: ((request: any, response: any) => Promise) | undefined;\n* select?: ((event: any, ui: any) => void) | undefined;\n* }) => Autocomplete\n* } Constructor\n*/\n\nimport classNames from \"classnames\";\nimport { createElementFromHTML, delegate, getElement } from \"./element\";\nimport { debounce } from \"./lodash\";\n\n\nexport class Autocomplete {\n getData;\n oldValue = \"\";\n data = [];\n index = 0;\n\n constructor({\n input,\n delay = 300,\n appendTo = \"body\",\n classes = \"dc-autocomplete-box\",\n source = async (request, response) => {\n },\n select = (event, ui) => {\n }\n }) {\n this.input = input;\n this.delay = delay;\n this.appendTo = appendTo;\n this.classes = classes;\n this.source = source;\n this.select = select;\n this.getData = debounce(this._getData, this.delay);\n\n if (!input) {\n return;\n }\n\n this.element = getElement(this.input);\n\n this.parent = getElement(this.appendTo) ?? document.body;\n\n if (!this.element) {\n return;\n }\n\n this.box = createElementFromHTML(`
    `);\n this.box.style.setProperty(\"display\", \"none\");\n this.parent.append(this.box);\n this.index = 0;\n\n this.element.addEventListener(\"keyup\", (e) => {\n if ([\"ArrowUp\", \"ArrowDown\"].includes(e.code)) {\n this.getData?.cancel();\n this.index = this.index + (e.code === \"ArrowDown\" ? 1 : -1);\n this.index = this.index <= 0 ? this.data.length : this.index > this.data.length ? 1 : this.index;\n const childList = this.box.querySelectorAll(\".ui-menu-item\");\n for (let i = 0, len = childList.length; i < len; i++) {\n childList[i].classList.toggle(\"ui-state-active\", i + 1 === this.index);\n }\n if (this.data.length) {\n this.element.value = this.data[this.index - 1].value;\n this.show();\n }\n this.oldValue = this.element.value;\n return;\n }\n if (this.element.value && this.oldValue !== this.element.value) {\n this.getData();\n }\n if (!this.element.value) {\n this.hide();\n }\n this.oldValue = this.element.value;\n });\n\n this.element.addEventListener(\"focusout\", (e) => {\n var t = e.relatedTarget;\n let hide = true;\n while (t && t !== e.target) {\n if (t.matches && t.matches(\"li.ui-menu-item\")) {\n hide = false;\n }\n t = t.parentNode;\n }\n hide && this.hide();\n });\n\n delegate(this.box, \"mousedown\", \"li.ui-menu-item\", (e) => {\n typeof e.preventDefault == \"function\" && e.preventDefault();\n this.index = +e.target.getAttribute(\"index\");\n this.element.value = this.data[this.index - 1].value;\n this.oldValue = this.element.value;\n this.select(e, { item: this.data[this.index - 1] });\n this.hide();\n });\n }\n\n _getData() {\n if (typeof this.source === \"function\") {\n this.source(this.element.value, (data) => {\n this.setData(data);\n });\n }\n if (Array.isArray(this.source)) {\n this.setData(this.source.filter(e => typeof e === \"object\" ? (e?.value || \"\").includes(this.element.value) : e.includes(this.element.value)));\n }\n }\n\n setData(data) {\n this.index = 0;\n if (!Array.isArray(data) || data.length === 0) {\n this.hide();\n } else {\n this.data = data.map(e => {\n if (typeof e === \"object\") {\n return { value: e.value, label: e.label || e.value };\n }\n return {\n value: e, label: e\n };\n });\n\n let html = \"\";\n for (let i = 0; i < this.data.length; i++) {\n if (this.data[i] && this.data[i].value) {\n html += `
  • ${this.data[i].label}
  • `;\n }\n }\n if (html) {\n this.box.innerHTML = html;\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n updatePosition() {\n const rect = this.element.getBoundingClientRect();\n this.box.style.setProperty(\"top\", `${rect.top + rect.height + 8}px`);\n this.box.style.setProperty(\"left\", `${rect.left}px`);\n this.box.style.setProperty(\"width\", `${rect.width}px`);\n this.box.style.setProperty(\"min-width\", `${rect.width}px`);\n }\n\n hide() {\n this.getData?.cancel();\n this.box.style.setProperty(\"display\", \"none\");\n }\n\n show() {\n this.updatePosition();\n this.box.style.setProperty(\"display\", \"block\");\n }\n\n /**\n * @type {Constructor}\n */\n static init() { return new Autocomplete(...arguments) };\n}","\nimport Env from \"../../environments\";\nimport { Search } from \"../../models/Search\";\nimport { apiSearchAutoComplete } from \"../../utils/api\";\nimport { Autocomplete } from \"../../utils/autocomplete\";\nimport { addHighlightText } from \"../../utils/string\";\nimport { getParamUrl } from \"../../utils/url\";\nimport { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\n\nconst classNames = require('classnames');\nclass SearchInput extends DComponent {\n constructor({\n id,\n parent,\n inputWrapper,\n onChange = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"SearchInput\"),\n }, false, true);\n /**@type {DCElement} */\n this.inputWrapper = inputWrapper;\n this.onChange = onChange;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"SearchInput\", this.parent);\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n parentAppend() {\n const inputHtml = `\"\"`;\n if (this.inputWrapper.length) {\n if (this.inputWrapper[0].tagName.toLowerCase() !== \"input\") {\n this.element.html(inputHtml);\n this.inputWrapper.append(this.element);\n this.inputWrapper = DCElement(\".dc-search-input\", this.element);\n } else {\n this.inputWrapper.before(this.element[0]);\n }\n } else {\n this.element.html(inputHtml);\n this.parent.prepend(this.element[0]);\n this.inputWrapper = DCElement(\".dc-search-input\", this.element);\n }\n }\n\n after() {\n this.setEvent();\n }\n\n setEvent() {\n DCElement(\".icon-search\", this.element).addEventListener(\"click\", (e) => {\n typeof this.onChange === \"function\" && this.onChange(this.getInputValue());\n })\n\n this.inputWrapper.addEventListener(\"change\", (e) => {\n let value = e.currentTarget.value;\n typeof this.onChange === \"function\" && this.onChange(value);\n })\n\n this.inputWrapper.addEventListener(\"keydown\", (e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n document.activeElement.blur();\n let value = e.currentTarget.value;\n typeof this.onChange === \"function\" && this.onChange(value);\n }\n });\n\n this.setInputValue(getParamUrl(Search.TERM) || \"\");\n\n // element.autocomplete({\n // delay: 300,\n // appendTo: this.element,\n // classes: {\n // \"ui-autocomplete\": \"dc-autocomplete-box\"\n // },\n // source: async (request, response) => {\n // let data = await this.eventAutoComplete();\n // response(data);\n // let value = this.getInputValue();\n // this.element.toggleClass(\"has-value\", value);\n // addHighlightText(DCElement(\".dc-autocomplete-box .ui-menu-item\", this.element), value);\n // },\n // select: (event, ui) => {\n // ui?.item?.value && typeof this.onChange === \"function\" && this.onChange(ui.item.value);\n // }\n // });\n if (this.inputWrapper.length) {\n Autocomplete.init({\n input: this.inputWrapper[0],\n delay: 300,\n appendTo: this.element,\n classes: {\n \"dc-autocomplete-box\": true,\n },\n source: async (request, response) => {\n let data = await this.eventAutoComplete();\n response(data);\n let value = this.getInputValue();\n this.element.toggleClass(\"has-value\", value);\n addHighlightText(DCElement(\".dc-autocomplete-box .ui-menu-item .ui-menu-item-wrapper\", this.element).elements, value);\n },\n select: (event, ui) => {\n ui?.item?.value && typeof this.onChange === \"function\" && this.onChange(ui.item.value);\n }\n });\n }\n }\n\n async eventAutoComplete() {\n let data = await this.getAutoComplete(this.genParamsAutoComplete());\n // data = data.map(e => { return { value: e, label: e + \" 123\" } });\n return data;\n }\n\n getAutoComplete(params) {\n return new Promise((resolve, reject) => {\n apiSearchAutoComplete({ ...params, dc_source: Search.SOURCE.SEARCH_INPUT }, (data) => {\n const result = data?.data?.length ? data.data.slice(0, 10) : [];\n resolve(result);\n }, (_) => {\n resolve([]);\n });\n });\n }\n\n\n genParamsAutoComplete() {\n let params = {\n \"p\": 1,\n \"pp\": 10,\n \"i\": Env.SEARCH_AUTOCOMPLETE_INDEX,\n \"l\": Search.genLangParams(),\n \"t\": this.getInputValue() || \"\"\n };\n\n return params;\n }\n\n getInputValue() {\n return this.inputWrapper.val();\n }\n\n setInputValue(value) {\n return this.inputWrapper.val(value);\n }\n\n onSearch() {\n typeof this.onChange === \"function\" && this.onChange(this.getInputValue());\n }\n}\n\nexport default SearchInput;","export default import.meta.ROLLUP_FILE_URL_da7a1226;","import classNames from \"classnames\";\nimport { DComponent } from \"../DComponent\";\nimport { DCElement } from \"../DCElement\";\n\n\nexport default class CheckBox extends DComponent {\n constructor({\n parent,\n id,\n label,\n labelI18n = \"\",\n type,\n key = \"\",\n tabIndex = \"\",\n checked = true,\n disabled = false,\n isRequired = false,\n className = \"\",\n onChange = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"CheckBox\", {\n \"is-disabled\": disabled,\n }, className),\n label: label,\n labelI18n: labelI18n ? \"[html]\" + labelI18n : \"\",\n name: key,\n tabIndex: tabIndex,\n checked: checked ? \"checked\" : \"\",\n });\n this.type = type;\n this.key = key;\n this.isRequired = isRequired;\n this.onChange = onChange;\n this.className = className;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"CheckBox\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.isRequired && DCElement(\".require\", this.element).removeClass(\"hide\");\n DCElement(\"input\", this.element).addEventListener(\"change\", (e) => {\n typeof this.onChange === \"function\" && this.onChange(this.getValue());\n })\n }\n\n getType() {\n return this.type;\n }\n\n getKey() {\n return this.key;\n }\n\n getLabel() {\n return DCElement(\".label\", this.element).text();\n }\n\n setLabel(value) {\n DCElement(\".label\", this.element).text(value);\n }\n\n getValue() {\n return DCElement(\"input\", this.element).is(\":checked\");\n }\n\n setValue(value) {\n DCElement(\"input\", this.element).prop(\":checked\", value);\n }\n\n clearInput() {\n DCElement(\"input\", this.element).val(\"\");\n }\n}","import classNames from \"classnames\";\nimport CheckBox from \"../CheckBox\";\nimport { DComponent } from \"../DComponent\";\n// eslint-disable-next-line no-unused-vars\nimport { SearchFacetsValues } from \"../../models/SearchFacet\";\nimport { SettingConfig } from \"../../models/SettingConfig\";\nimport { getOr } from \"../../utils/lodash\";\nimport { DCElement } from \"../DCElement\";\n\nconst DEFAULT_LOADMORE = 10;\n\nclass FilterItem extends DComponent {\n constructor({\n parent,\n id,\n type,\n title,\n names = [],\n namesCountry = {},\n items = [],\n onChange = () => { },\n defaultPage = DEFAULT_LOADMORE\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"FilterItem\"),\n title: title,\n arrowDown: require(\"../../assets/images/icons/arrow_down.svg\").default,\n });\n this.names = names;\n this.namesCountry = namesCountry;\n this.title = title;\n this.type = type;\n /** @type {[SearchFacetsValues]} */\n this.items = items;\n /** @type {[CheckBox]} */\n this.listFilter = [];\n this.onChange = onChange;\n this.defaultPage = defaultPage;\n this.render();\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n let locale = SettingConfig.getLocale();\n this.items.forEach((element, index) => {\n if (element.value && element.filter) {\n this.listFilter.push(new CheckBox({\n parent: DCElement(\".filter-value\", this.element),\n label: this.getLabel(element, true, locale),\n key: element.value,\n type: this.type,\n checked: element.checked || false,\n onChange: (value) => this.onChange(value, this.type, element.value),\n className: index > this.defaultPage - 1 ? \"hide\" : \"\"\n }))\n }\n });\n\n let hasMore = this.listFilter.length > this.defaultPage;\n if (hasMore) this.setViewMoreFilter();\n this.displayViewMore(hasMore);\n\n DCElement(\".view-more-filter .btn-view-more\", this.element).addEventListener(\"click\", (e) => {\n let count = 0;\n let hideList = this.listFilter.filter(e => e.element.hasClass(\"hide\"));\n let classList = getOr(undefined, \"target.parentNode.classList\")(e);\n if (hideList.length) {\n hideList.forEach((item, index) => {\n if (count === this.defaultPage) {\n return;\n } else {\n item.element.removeClass(\"hide\");\n count += 1;\n if (index === hideList.length - 1) {\n classList?.add(\"hide\");\n }\n }\n });\n this.setViewMoreFilter();\n } else {\n classList?.add(\"hide\");\n }\n })\n }\n\n setViewMoreFilter() {\n let more = this.listFilter.filter(e => e.element.hasClass(\"hide\")).length\n DCElement(\".view-more-filter .value\", this.element).html(more > 0 ? \" (\" + more + \")\" : \"\");\n }\n\n\n /** @param {SearchFacetsValues} item */\n getLabel(item, hasCount = true, lang = \"en\") {\n let name = \"\";\n let countryCode = (item.value || \"\").toUpperCase();\n if (this.type === \"country\" && this.namesCountry[countryCode]) {\n name = lang === \"vi\" ? this.namesCountry[countryCode][\"name_vi\"] : this.namesCountry[countryCode][\"name\"]\n }\n if (!name) {\n let filterName = this.names[item.filter];\n name = getOr(filterName, \"name\")(filterName) || item.value;\n }\n return `${name}${item.count && hasCount ? \" (\" + item.count + \") \" : \"\"}`\n }\n\n resetChecked() {\n if (this.listFilter.length) {\n for (let index = 0; index < this.listFilter.length; index++) {\n const element = this.listFilter[index];\n element.setValue(false);\n }\n }\n }\n\n resetCount() {\n if (this.listFilter.length) {\n for (let index = 0; index < this.listFilter.length; index++) {\n const element = this.listFilter[index];\n let regex = new RegExp(/(.*) \\(\\d+\\)/, \"g\");\n let label = regex.exec(element.getLabel());\n if (label && label.length && label[1]) {\n element.setLabel(label[1]);\n }\n }\n }\n }\n\n hasChecked() {\n if (this.listFilter.length) {\n for (let index = 0; index < this.listFilter.length; index++) {\n const element = this.listFilter[index];\n if (element.getValue()) {\n return true;\n }\n }\n }\n return false;\n }\n\n /** @param {[SearchFacetsValues]} values */\n updateLabel(values) {\n let locale = SettingConfig.getLocale();\n values.forEach(element => {\n let item = this.listFilter.find(item => item.getKey() === element.value);\n if (item) {\n item.setLabel(this.getLabel(element, true, locale));\n }\n });\n }\n\n displayViewMore(isShow = false) {\n DCElement(\".view-more-filter\", this.element).toggleClass(\"hide\", !isShow);\n }\n}\n\nexport default FilterItem;","export default import.meta.ROLLUP_FILE_URL_a21e653a;","import classNames from \"classnames\";\n// eslint-disable-next-line no-unused-vars\nimport CheckBox from \"../CheckBox\";\nimport { DComponent } from \"../DComponent\";\nimport { replaceVariable } from \"../../utils/string\";\nimport DC from \"../../DC\";\nimport { DCElement } from \"../DCElement\";\n\nclass FilterTags extends DComponent {\n constructor({\n parent,\n id,\n tags,\n onRemove = () => { }\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"FilterTags\"),\n }, false, true);\n this.tags = tags;\n this.onRemove = onRemove;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"FilterTags\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.element.on(\"click\", (e) => {\n if (e.target.classList.contains('remove-filter')) {\n e.preventDefault();\n let tag = e.target.closest(\".FilterTag\");\n this.removeFilterTag(tag);\n let type = tag.getAttribute(\"type\"), key = tag.getAttribute(\"key\");\n typeof this.onRemove == \"function\" && this.onRemove(type, key);\n }\n })\n }\n\n /**\n * @param {CheckBox} tag \n */\n addFilterTag(tag, title = \"\",) {\n this.element.append(replaceVariable(require(\"./item.html\").default, {\n key: tag.getKey(),\n type: tag.getType(),\n label: tag.getLabel(),\n class: \"FilterTag\",\n title: DC.i18n(\"searchProduct_removeThis\", title),\n removeIcon: require(\"../../assets/images/icons/removeFilter.svg\").default,\n }));\n }\n\n hasFilterTag() {\n return DCElement(\".FilterTag\", this.element).length;\n }\n\n getFilterTag(type, key) {\n return DCElement(`.FilterTag[type=\"${type}\"][key=\"${key}\"]`, this.element);\n }\n\n removeFilterTag(tag) {\n tag.remove();\n }\n\n setCount(tag, label) {\n tag.find(\".filter-name\").text(label);\n }\n\n reset() {\n this.element.html(\"\");\n }\n\n resetCount() {\n DCElement(\".filter-name\", this.element).each(function (i, obj) {\n let regex = new RegExp(/(.*) \\(\\d+\\)/, \"g\");\n let label = regex.exec(obj.textContent);\n if (label && label.length && label[1]) {\n obj.textContent = label[1];\n }\n })\n }\n\n hide() {\n this.element.addClass(\"hide\");\n }\n\n show() {\n this.element.removeClass(\"hide\");\n }\n}\n\nexport default FilterTags;","\nimport { Paging } from \"../../models/Paging\";\nimport { replaceVariable } from \"../../utils/string\";\nimport { DCElement } from \"../DCElement\";\nimport { DComponent } from \"../DComponent\";\n\nconst classNames = require('classnames');\nclass PagingBox extends DComponent {\n constructor({\n id,\n parent,\n paging = Paging.fromApiObject({}),\n onChangePage = () => { },\n } = {}) {\n super(arguments[0], parent, id, { class: classNames(\"PagingBox\") }, false, true);\n this.paging = paging;\n this.onChange = onChangePage;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"PagingBox\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n genElement() {\n this.element = DCElement(replaceVariable(this.loadHtml(), {\n id: this.id,\n ...this.variables,\n nums: getNumBox(this.paging),\n class: classNames({\n \"PagingBox\": true,\n \"p-hide\": !this.paging.totalPages || this.paging.totalPages <= 1,\n \"can-back\": this.paging.currentPage > 1,\n \"can-next\": this.paging.currentPage < this.paging.totalPages,\n }),\n }));;\n }\n\n after() {\n this.setUpClick();\n }\n\n change(paging = Paging.fromApiObject({})) {\n this.paging = paging;\n let pagingEl = DCElement(this.element);\n pagingEl.remove();\n this.genElement({\n paging: paging,\n });\n this.parentAppend();\n pagingEl.prop(\"DComponent\", this);\n this.setUpClick();\n }\n\n setUpClick() {\n DCElement(\".nums .item\", this.element).addEventListener(\"click\", (e) => {\n const page = +e.target.textContent;\n if (page !== this.paging.currentPage) {\n DCElement(\".nums .item\", this.element).removeClass(\"active\");\n e.target.classList.add(\"active\");\n this.onChange(page);\n }\n });\n DCElement(\".next\", this.element).addEventListener(\"click\", (e) => {\n if (this.paging.currentPage < this.paging.totalPages) {\n this.onChange(this.paging.currentPage + 1);\n }\n });\n DCElement(\".back\", this.element).addEventListener(\"click\", (e) => {\n if (this.paging.currentPage > 1) {\n this.onChange(this.paging.currentPage - 1);\n }\n });\n }\n}\n\nfunction getNumBox(paging = Paging.fromApiObject({})) {\n const current = (paging.currentPage ?? 0);\n const max = (paging.totalPages ?? 0);\n let start = current - 2;\n let end = current + 2;\n\n if (start < 1) {\n end = end + 1 - start;\n start = 1;\n }\n\n if (end > max) {\n start = start + max - end;\n end = max;\n }\n\n start = start < 1 ? 1 : start;\n end = end > max ? max : end;\n\n let result = \"\";\n for (let i = start; i <= end; i++) {\n const active = i === current ? \" active\" : \"\";\n result += `
    ${i}
    `;\n }\n return result;\n}\n\nexport default PagingBox;","import classNames from \"classnames\";\nimport { DComponent } from \"../DComponent\";\nimport { cloneDeep, getOr } from \"../../utils/lodash\";\nimport { changeQuery, getParamUrl } from \"../../utils/url\";\nimport { apiEstimateProductPriceMultiple, apiGetProductSearch } from \"../../utils/api\";\nimport SearchProductItem from \"../SearchProductItem\";\nimport { genQueryFromArray, isMiniDesktop, isMobile, scrollTo } from \"../../utils/utils\";\nimport { Search } from \"../../models/Search\";\nimport { SearchFacet } from \"../../models/SearchFacet\";\nimport FilterItem from \"../FilterItem\";\nimport FilterTags from \"../FilterTags\";\nimport { Order } from \"../../models/Order\";\nimport { getNamesCountry } from \"../../utils/country\";\nimport PagingBox from '../PagingBox';\nimport Env from \"../../environments\";\nimport DC from \"../../DC\";\nimport { DCElement } from \"../DCElement\";\nimport { ResultWrapper } from \"../../utils/globalWrapper\";\nimport DetailProduct from \"../DetailProduct\";\n\nconst DEFAULT_PER_PAGE_SEARCH = 32, DEFAULT_ESTIMATE_PRICE = 8;\nconst FILTER_KEY = {\n CURRENCY: \"currency\",\n COUNTRY: \"country\",\n SITE: \"site\",\n CATEGORY_PARENT: \"category_parent\",\n CATEGORY: \"category\",\n}\nconst FILTER_LIST = [\n {\n id: FILTER_KEY.CATEGORY_PARENT,\n defaultPage: 20,\n param: FILTER_KEY.CATEGORY,\n },\n {\n id: FILTER_KEY.CURRENCY,\n hide: true,\n param: FILTER_KEY.CURRENCY,\n },\n {\n id: FILTER_KEY.COUNTRY,\n defaultPage: 5,\n param: FILTER_KEY.COUNTRY,\n },\n {\n id: FILTER_KEY.SITE,\n defaultPage: 25,\n param: FILTER_KEY.SITE,\n }\n]\nconst listNameCountry = getNamesCountry();\n\nexport default class SearchResult extends DComponent {\n constructor({\n parent,\n wrapper,\n id,\n onClick = () => { },\n onAfter = () => { },\n hide,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"SearchResult\", {\n \"hide\": hide,\n }),\n noImage: \"https://cdn.dutycast.com/dutycast/static/media/sdk/NoResultProduct.jpg\",\n searchingImage: \"https://cdn.dutycast.com/dutycast/static/media/sdk/ProductLookingFor.jpg\",\n iconFilter: require(\"../../assets/images/icons/filter.svg\").default,\n arrowDown: require(\"../../assets/images/icons/arrow_down.svg\").default,\n filterLoading: genFilterItemLoading(),\n searchLoading: genSearchItemLoading(),\n }, true, true);\n this.wrapper = wrapper;\n /** @type {FilterTags}*/\n this.filterTag = {};\n /** @type {[FilterItem]}*/\n this.filterList = [];\n this.listChecked = {};\n this.listCheckedOld = {};\n this.page = 1;\n /** @type {PagingBox} */\n this.tablePaging = {};\n /** @type {[SearchProductItem]} */\n this.listProductItems = [];\n this.isFirst = true;\n this.isCheckFilter = false;\n this.curTotalFilter = 0;\n this.termSearch = \"\";\n this.translateTimeout = null;\n this.curSearchParams = {};\n this.listProductNotYetEstimate = [];\n this.currentPosition = 1;\n this.onClick = onClick;\n this.displayAmount = Search.PAY_AMOUNT;\n this.onAfter = onAfter;\n this.detailProduct = undefined;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"SearchResult\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.initEvent();\n this.initData();\n }\n\n initEvent() {\n this.filterTag = new FilterTags({\n parent: DCElement(\".search-box .head-box .filter-tag-box\", this.element),\n onRemove: (type, key) => {\n this.setFilterBadge(this.curTotalFilter - 1);\n this.setListChecked(false, type, key);\n this.forceHideFilter(type, key, true)\n this.listCheckedOld = cloneDeep(this.listChecked);\n this.page = 1;\n this.changeQueryUrl(Search.SOURCE.SEARCH_FILTER);\n this.getProductSearch();\n }\n });\n this.tablePaging = new PagingBox({\n parent: DCElement(\".section-search .paging-box .box\", this.element),\n onChangePage: (page) => {\n scrollTo(this.wrapper);\n this.startLoading(false);\n this.page = page;\n this.changeQueryUrl(Search.SOURCE.SEARCH_RESULT)\n this.getProductSearch(true);\n }\n });\n this.filterEvent();\n this.setUpScroll();\n }\n\n initData() {\n this.setUpFilterParams();\n this.getProductSearch();\n }\n\n setUpScroll() {\n window.addEventListener(\"scroll\", (e) => {\n const top = window.scrollY, distanceTop = ResultWrapper.wrapper.offsetTop();\n let rowSection = this.isMobileMode() ? 2 : isMiniDesktop(this.wrapper) ? 3 : 4;\n let productHeight = DCElement(\".search-data .SearchProductItem\", this.element).height();\n let totalRowInSection = Math.round(DEFAULT_ESTIMATE_PRICE / rowSection);\n if (top + distanceTop - 50 >= (this.currentPosition - 1) * totalRowInSection * productHeight && this.listProductNotYetEstimate.length) {\n this.currentPosition += 1;\n let listProduct = this.listProductNotYetEstimate.splice(0, DEFAULT_ESTIMATE_PRICE);\n this.estimateProductPrice(this.genParamsEstimate(listProduct));\n }\n });\n }\n\n getProductSearch(isMore = false) {\n let searchParams = this.curSearchParams = this.genParamsSearch(), hasFilter = this.hasFilterParams();\n // this.hideSpinnerTranslate();\n\n this.reStateInit();\n this.showSearching(false);\n this.setKeyWordSearch(this.termSearch);\n this.startLoading((!isMore && !this.isCheckFilter) || (!this.isMobileMode() && this.isFirst));\n this.translateTimeout && clearTimeout(this.translateTimeout);\n\n apiGetProductSearch(searchParams,\n (data) => {\n let searchData = Search.fromApiObject(data), productLength = searchData.products.length;\n if (Object.keys(Search.AMOUNT_MAPPING).includes(searchData.displayAmount)) this.displayAmount = searchData.displayAmount;\n this.listProductNotYetEstimate = searchData.products;\n this.tablePaging.change(searchData.paging);\n if (productLength) {\n if (!isMore || (!this.isMobileMode() && this.isFirst) || (this.isMobileMode() && hasFilter)) {\n this.getFacetsSearch(searchParams);\n }\n this.fillDataSearch(searchData);\n this.stopLoading();\n this.currentPosition = 1;\n let paramsEstimate = this.genParamsEstimate(searchData.products.splice(0, DEFAULT_ESTIMATE_PRICE));\n this.estimateProductPrice(paramsEstimate);\n } else {\n this.emptyProduct();\n this.resetCountFilter();\n this.stopLoading();\n }\n\n if (this.isFirst) {\n this.showSearching(!productLength);\n this.isFirst = false;\n this.translateTimeout = setTimeout(() => {\n this.getProductTranslate(searchParams, !productLength);\n }, 1500);\n }\n typeof this.onAfter === \"function\" && this.onAfter();\n },\n (error) => {\n this.emptyProduct();\n this.stopLoading();\n typeof this.onAfter === \"function\" && this.onAfter();\n }\n )\n }\n\n estimateProductPrice(params) {\n let ids = params.pids;\n apiEstimateProductPriceMultiple(params.params,\n (data) => {\n if (data?.data) {\n let orders = Order.fromApiArray(data.data);\n if ((orders.length)) {\n for (let index = 0; index < ids.length; index++) {\n const productId = ids[index];\n const order = orders[index];\n let product = this.listProductItems.find(item => item.getId() === productId);\n if (product) {\n // product.element.attr(\"estimated\", true);\n const payAmount = order[Search.AMOUNT_MAPPING[this.displayAmount]];\n const payCurrency = order[Search.CURRENCY_MAPPING[this.displayAmount]];\n product.setProductPrice(payAmount, payCurrency);\n let sitePrice = order.details[0] ? order.details[0].sitePrice : 0;\n let sitePriceCur = order.details[0] ? order.details[0].sitePriceCur : \"\";\n product.setUnitPrice(sitePrice, sitePriceCur);\n }\n }\n }\n }\n }\n )\n }\n\n reStateInit() {\n const sectionSearch = DCElement(\".section-search\", this.element);\n sectionSearch.removeClass(\"show-detail\");\n sectionSearch.find(\".search-box .search-data\").html(\"\");\n sectionSearch.attr(\"type\", \"\");\n sectionSearch.find(\".filter-box\").removeClass(\"hide\");\n sectionSearch.find(\".filter-box-mobile\").removeClass(\"hide\");\n }\n\n showSearching(isShow = true) {\n DCElement(\".section.section-search .search-box .head-box\", this.element).toggleClass(\"hide\", isShow);\n DCElement(\".section-empty\", this.element).toggleClass(\"searching\", isShow);\n DCElement(\".dot-loading\", this.element).toggleClass(\"hide\", !isShow);\n }\n\n getProductTranslate(params, isLoopTranslate = false) {\n // let translateParams = this.addParams(params, {\n // t: {\n // ...params[\"t\"],\n // ...this.getParamsTranslate()\n // }\n // });\n // if (isLoopTranslate) this.curSearchParams = translateParams;\n // let paramsTranslate = {\n // ...translateParams,\n // ...this.getParamsSource(true)\n // }\n let maxCount = Env.SEARCH_TRANSLATE_TIMEOUT ? parseInt(Env.SEARCH_TRANSLATE_TIMEOUT) : 30000,\n timeout = Env.SEARCH_TRANSLATE_DELAY ? parseInt(Env.SEARCH_TRANSLATE_DELAY) : 3000, count = 0;\n const loopTranslate = () => {\n count += timeout;\n if (count <= maxCount) {\n apiGetProductSearch(params,\n (data) => {\n let searchData = Search.fromApiObject(data);\n this.tablePaging.change(searchData.paging);\n if (searchData.products.length) {\n this.getFacetsSearch(params);\n this.fillDataSearch(searchData);\n clearTimeout(this.translateTimeout);\n this.showSearching(false);\n } else {\n this.translateTimeout = setTimeout(() => {\n loopTranslate();\n }, timeout);\n }\n },\n (error) => {\n clearTimeout(this.translateTimeout);\n this.showSearching(false);\n this.emptyProduct();\n }\n )\n } else {\n clearTimeout(this.translateTimeout);\n this.showSearching(false);\n this.emptyProduct();\n }\n }\n if (isLoopTranslate) {\n loopTranslate();\n } else {\n this.showSearching(false);\n params.pp = 0;\n apiGetProductSearch(params);\n }\n // this.hideSpinnerTranslate();\n }\n\n // hideSpinnerTranslate() {\n // const DEFAULT_TRANSLATE_SELECTOR = \"div[id^=goog-gt-] ~ div>div>svg\";\n // let spinnerTranslate = DCElements(Env.SEARCH_TRANSLATE_SELECTOR || DEFAULT_TRANSLATE_SELECTOR);\n // if (spinnerTranslate.length) {\n // spinnerTranslate.parent().parent().css(\"display\", \"none\");\n // }\n // }\n\n resetCountFilter() {\n let hasChecked = false;\n this.filterList.forEach((item) => {\n item.resetCount();\n if (item.hasChecked()) {\n hasChecked = true;\n item.resetCount();\n } else {\n item.element.addClass(\"hide\");\n }\n })\n this.filterList = this.filterList.filter(item => item.hasChecked());\n this.setFilterBadge(this.filterList.length);\n if (!hasChecked) DCElement(\".section.section-search\", this.element).attr(\"type\", \"empty\");\n this.filterTag.resetCount();\n }\n\n genParamsEstimate(products = []) {\n let params = {\n \"details\": []\n };\n let listPro = []\n products.forEach(product => {\n let query = {\n \"site_id\": product?.site?.id || \"\",\n \"product_provider_id\": product.getPId()\n }\n params.details.push(query);\n listPro.push(product.getPId());\n });\n\n return {\n params: params,\n pids: listPro\n }\n }\n\n genParamsSearch() {\n let params = Search.genDefaultParams(Search.SEARCH_TYPE.PRODUCT, DEFAULT_PER_PAGE_SEARCH);\n\n params.p = this.page;\n\n if (this.termSearch) {\n params.t = Search.genTermParams(this.termSearch);\n }\n params.f = this.getParamsFilter(this.listChecked);\n\n return {\n ...params,\n ...this.getParamsSource()\n };\n }\n\n // getParamsTranslate() {\n // let result = {};\n // let translate = DCElement(\".search-text.translate\", this.element).text();\n // if (translate) {\n // result[\"en\"] = [translate];\n // }\n // return result;\n // }\n\n getParamsFilter(listFilter) {\n let result = {};\n if (Object.keys(listFilter).length) {\n Object.keys(listFilter).forEach(key => {\n if (listFilter[key]?.length) {\n let filter = FILTER_LIST.find(i => i.id === key);\n result[filter?.param || key] = listFilter[key];\n }\n });\n }\n // result[FILTER_KEY.COUNTRY] = [\"de\"];\n return result;\n }\n\n getParamsSource(isTranslate = false) {\n let source = isTranslate ? Search.SOURCE.SEARCH_RESULT : getParamUrl(Search.DC_SOURCE);\n let medium = isTranslate ? Search.TYPE.TRANSLATE : Search.TYPE.SEARCH;\n return {\n dc_source: source,\n dc_medium: medium,\n }\n }\n\n addParams(curParams = {}, newParams = {}) {\n return {\n ...curParams, ...newParams, ...this.getParamsSource()\n }\n }\n\n hasFilterParams(params) {\n if (getParamUrl(Search.FILTER_COUNTRY) || getParamUrl(Search.FILTER_SITE)) return true;\n return false;\n }\n\n /** @param {Search} searchData */\n fillDataSearch(searchData) {\n const sectionSearch = DCElement(\".section.section-search\", this.element);\n const searchBox = sectionSearch.find(\".search-box\");\n\n this.listProductItems = [];\n if (searchData.products.length === 1 && searchData.paging?.totalPages === 1 && !this.hasFilterParams()) {\n DCElement(\".section.section-search\", this.element).addClass(\"show-detail\");\n if (!this.detailProduct) {\n this.detailProduct = new DetailProduct({\n wrapper: this.element,\n parent: DCElement(\".section.section-search .search-box .custom-detail\", this.element),\n productId: searchData.products[0].id,\n onlyShowProduct: true,\n })\n } else {\n this.detailProduct.onChangeId(searchData.products[0].id);\n }\n } else {\n DCElement(\".section.section-search\", this.element).removeClass(\"show-detail\");\n searchData.products.forEach(element => {\n this.listProductItems.push(new SearchProductItem({\n parent: DCElement(\".section.section-search .search-box .search-data\", this.element),\n product: element,\n source: Search.SOURCE.SEARCH_RESULT,\n onClick: (id) => this.onClick(id),\n displayAmount: this.displayAmount\n }))\n });\n }\n let count = searchData.paging?.currentPage * DEFAULT_PER_PAGE_SEARCH, total = searchData.paging?.totalCount;\n let products = count < total ? count : total;\n\n const viewMore = searchBox.find(\".view-more\");\n const pagingBox = searchBox.find(\".paging-box\");\n\n if (searchData.paging?.currentPage < searchData.paging?.totalPages) {\n viewMore.find(\".value\").html(`(${total - products})`);\n viewMore.removeClass(\"hide\");\n } else {\n viewMore.addClass(\"hide\");\n }\n pagingBox.toggleClass(\"hide\", searchData.paging?.totalPages < 2);\n sectionSearch.attr(\"type\", \"fill\");\n searchBox.find(\".result-found\").html(this.termSearch ? DC.i18n(\"searchProduct_productsFound\", `${count < total ? \"1-\" : \"\"}${products}`, total + \"\", this.termSearch) : \"\")\n }\n\n emptyProduct() {\n const sectionSearch = DCElement(\".section.section-search\", this.element);\n sectionSearch.attr(\"type\", !this.filterList.length ? \"empty\" : \"notfound\");\n sectionSearch.find(\".search-box .result-found\").html(DC.i18n(\"searchProduct_noProductsFound\", this.termSearch));\n sectionSearch.find(\".view-more\").addClass(\"hide\");\n sectionSearch.find(\".paging-box\").addClass(\"hide\");\n }\n\n isNotData() {\n const sectionSearch = DCElement(\".section.section-search\", this.element);\n return sectionSearch.attr(\"type\") === \"notfound\" || sectionSearch.attr(\"type\") === \"empty\";\n }\n\n getFacetsSearch(params, isFilter) {\n let paramsFacets = {\n ...params,\n fl: 100,\n p: 0,\n pp: 0,\n dc_source: Search.SOURCE.SEARCH_RESULT,\n dc_medium: Search.TYPE.FACET\n }\n apiGetProductSearch(paramsFacets,\n (data) => {\n let facets = SearchFacet.fromApiArray(data.facets);\n let hasFilter = isFilter !== undefined ? isFilter : this.hasFilterParams();\n let isResetTag = (this.isCheckFilter && !this.isMobileMode()) || (this.isMobileMode() && hasFilter);\n this.fillDataFacets(facets, data.filters, isResetTag);\n },\n (error) => {\n DCElement(\".section-search .filter-box\", this.element).addClass(\"hide\");\n DCElement(\".section-search .filter-box-mobile\", this.element).addClass(\"hide\");\n }\n )\n }\n\n /** @param {[SearchFacet]} facets */\n fillDataFacets(facets = [], filters = [], isResetTag = true) {\n if (facets.length > 0) {\n let totalCount = 0;\n this.resetFilter(false, isResetTag);\n facets.forEach(element => {\n let item = FILTER_LIST.find(item => item.id === element.key);\n if (item && !item.hide) {\n element.values.forEach(item => {\n if (this.listChecked[element.key]?.includes(item.value)) {\n item.checked = true;\n totalCount += 1;\n }\n });\n this.filterList.push(new FilterItem({\n parent: DCElement(\".filter-box .list-filter\", this.element),\n defaultPage: item?.defaultPage,\n type: element.key,\n title: element.title,\n names: filters,\n namesCountry: listNameCountry,\n items: element.values,\n onChange: (value, type, key) => {\n this.isCheckFilter = true;\n this.setFilterBadge(value ? this.curTotalFilter + 1 : this.curTotalFilter - 1);\n this.setListChecked(value, type, key);\n this.forceHideFilter(type, key);\n this.page = 1;\n if (!this.isMobileMode()) {\n this.listCheckedOld = cloneDeep(this.listChecked);\n this.setUpFilterTag();\n this.changeQueryUrl(Search.SOURCE.SEARCH_FILTER)\n this.getProductSearch();\n } else {\n if (!this.isNotData()) {\n this.getFacetsSearch(this.genParamsSearch(), false);\n }\n }\n }\n }))\n }\n });\n this.setUpFilterTag();\n this.setFilterBadge(totalCount);\n } else {\n this.resetFilter();\n }\n }\n\n setListChecked(value, typeFilter, keyFilter) {\n if (value) {\n if (this.listChecked[typeFilter]?.length) {\n if (!this.listChecked[typeFilter].includes(keyFilter)) {\n this.listChecked[typeFilter].push(keyFilter);\n }\n } else {\n this.listChecked[typeFilter] = [keyFilter];\n }\n } else {\n if (this.listChecked[typeFilter]?.length) this.listChecked[typeFilter] = this.listChecked[typeFilter].filter(e => e !== keyFilter);\n }\n\n let hasFilter = false, keys = Object.keys(this.listChecked);\n\n for (let index = 0; index < keys.length; index++) {\n const key = keys[index];\n if (this.listChecked[key].length) {\n hasFilter = true;\n break;\n }\n }\n\n DCElement(\".search-box .head-box\", this.element).toggleClass(\"no-filter\", !hasFilter);\n }\n\n forceHideFilter(type, key, isRemove = false) {\n for (let index = 0; index < this.filterList.length; index++) {\n const element = this.filterList[index];\n if (element.type === type) {\n element.listFilter.forEach(item => {\n if (item.getKey() === key) {\n if (isRemove) {\n element.listFilter.length > 1 ? item.element.addClass(\"hide\") : item.setValue(false);\n }\n } else {\n !item.getValue() && item.element.addClass(\"hide\");\n }\n })\n element.displayViewMore(false);\n break;\n }\n }\n }\n\n setUpFilterTag() {\n if (this.filterList.length) {\n this.filterList.forEach(element => {\n element.listFilter.forEach(item => {\n let tag = this.filterTag.getFilterTag(item.getType(), item.getKey())\n if (tag.length) {\n if (!item.getValue()) {\n this.filterTag.removeFilterTag(tag);\n } else {\n this.filterTag.setCount(tag, item.getLabel());\n }\n } else if (item.getValue()) {\n this.filterTag.addFilterTag(item, element.title);\n }\n });\n });\n this.filterTag.show();\n DCElement(\".search-box .head-box\", this.element).toggleClass(\"no-filter\", !this.filterTag.hasFilterTag());\n } else {\n this.filterTag.hide();\n }\n }\n\n setFilterBadge(totalFilter) {\n this.curTotalFilter = totalFilter;\n DCElement(\".section-search .filter-box .reset-filter .value\", this.element).html(totalFilter > 0 ? ` (${totalFilter})` : \"\");\n DCElement(\".section-search .filter-box-mobile .badge\", this.element).html(totalFilter > 0 ? totalFilter : \"\");\n }\n\n resetFilter(isReset = true, isResetTag = true) {\n if (isReset) {\n this.listChecked = {};\n this.setFilterBadge(0);\n }\n this.filterList = [];\n DCElement(\".section-search .filter-box .list-filter\", this.element).html(\"\");\n if (isResetTag) this.filterTag.reset();\n }\n\n filterEvent() {\n const filterBox = DCElement(\".section-search .filter-box\", this.element);\n DCElement(\".section-search .filter-box-mobile\", this.element).on(\"click\", () => {\n filterBox.addClass(\"active\");\n if (!this.filterList.length) {\n this.getFacetsSearch(this.curSearchParams, false);\n }\n })\n filterBox.find(\".close-filter\").on(\"click\", () => {\n this.listChecked = cloneDeep(this.listCheckedOld);\n if (!this.isNotData()) {\n let totalFilter = 0;\n Object.keys(this.listChecked).forEach(key => {\n totalFilter += this.listChecked[key]?.length || 0;\n })\n this.setFilterBadge(totalFilter);\n if (this.isCheckFilter) {\n this.isCheckFilter = false;\n this.getFacetsSearch(this.curSearchParams, false);\n }\n }\n filterBox.removeClass(\"active\");\n })\n\n filterBox.find(\".reset-filter\").on(\"click\", () => {\n let hasFilter = Object.keys(this.listChecked).length;\n let hasFilterOld = Object.keys(this.listCheckedOld).length;\n this.listChecked = {};\n this.setFilterBadge(0);\n this.page = 1;\n if (hasFilterOld) this.changeQueryUrl(Search.SOURCE.SEARCH_FILTER);\n if (this.filterList.length) {\n this.filterList.forEach(element => element.resetChecked());\n if (hasFilterOld) this.getProductSearch();\n if (hasFilter) this.getFacetsSearch(this.curSearchParams, hasFilterOld);\n }\n this.listCheckedOld = {};\n this.isCheckFilter = false;\n if (this.isMobileMode()) {\n filterBox.removeClass(\"active\");\n }\n })\n\n filterBox.find(\".apply-filter\").on(\"click\", () => {\n let totalFilter = 0;\n this.filterList.forEach((element) => {\n element.listFilter.forEach(item => {\n this.setListChecked(item.getValue(), item.getType(), item.getKey());\n if (item.getValue()) totalFilter += 1;\n })\n });\n this.setFilterBadge(totalFilter);\n\n if (this.isCheckFilter) {\n this.isCheckFilter = false;\n this.listCheckedOld = cloneDeep(this.listChecked);\n this.page = 1;\n this.changeQueryUrl(Search.SOURCE.SEARCH_FILTER);\n this.getProductSearch();\n this.setUpFilterTag();\n }\n filterBox.removeClass(\"active\");\n })\n }\n\n setKeyWordSearch(term) {\n DCElement(\".search-text.translate\", this.element).text(term);\n const searchBox = DCElement(\".section-search .search-box\", this.element);\n searchBox.find(\".search-key\").text(term);\n searchBox.find(\".result-found\").toggleClass(\"show\", !!term);\n searchBox.find(\".head-box\").toggleClass(\"no-term\", !term);\n }\n\n\n startLoading(isLoadingFilter = true) {\n DCElement(\".section-search .search-box .search-loading\", this.element).removeClass(\"hide\");\n if (isLoadingFilter) {\n DCElement(\".filter-box .list-filter-loading\", this.element).removeClass(\"hide\");\n }\n }\n\n stopLoading() {\n DCElement(\".section-search .head-box\", this.element).removeClass(\"loading\");\n DCElement(\".section-search .search-box .search-loading\", this.element).addClass(\"hide\");\n DCElement(\".filter-box .list-filter-loading\", this.element).addClass(\"hide\");\n }\n\n setUpFilterParams() {\n const urlParam = getParamUrl() || {};\n\n this.termSearch = urlParam[Search.TERM] || \"\";\n\n if (urlParam && urlParam[Search.FILTER_COUNTRY]) {\n this.listChecked[FILTER_KEY.COUNTRY] = urlParam[Search.FILTER_COUNTRY].split(\",\");\n } else {\n delete this.listChecked[FILTER_KEY.COUNTRY];\n }\n\n if (urlParam && urlParam[Search.FILTER_SITE]) {\n this.listChecked[FILTER_KEY.SITE] = urlParam[Search.FILTER_SITE].split(\",\");\n } else {\n delete this.listChecked[FILTER_KEY.SITE];\n }\n\n if (urlParam && urlParam[Search.FILTER_CATEGORY]) {\n this.listChecked[FILTER_KEY.CATEGORY_PARENT] = urlParam[Search.FILTER_CATEGORY].split(\",\");\n } else {\n delete this.listChecked[FILTER_KEY.CATEGORY_PARENT];\n }\n\n this.page = urlParam[Search.DC_PAGE] || 1;\n\n this.isCheckFilter = this.listChecked[FILTER_KEY.COUNTRY] || this.listChecked[FILTER_KEY.SITE] || this.listChecked[FILTER_KEY.CATEGORY_PARENT];\n\n this.listCheckedOld = cloneDeep(this.listChecked);\n }\n\n changeQueryUrl(source) {\n let fcategory = getOr(\"\", FILTER_KEY.CATEGORY_PARENT)(this.listChecked);\n let fcountry = getOr(\"\", FILTER_KEY.COUNTRY)(this.listChecked);\n let fsite = getOr(\"\", FILTER_KEY.SITE)(this.listChecked);\n const query = {\n [Search.TERM]: this.termSearch || undefined,\n [Search.FILTER_CATEGORY]: fcategory && fcategory.length ? genQueryFromArray(fcategory) : undefined,\n [Search.FILTER_COUNTRY]: fcountry && fcountry.length ? genQueryFromArray(fcountry) : undefined,\n [Search.FILTER_SITE]: fsite && fsite.length ? genQueryFromArray(fsite) : undefined,\n [Search.DC_PAGE]: this.page && this.page !== 1 ? this.page : undefined,\n [Search.DC_SOURCE]: undefined,\n [Search.PID]: undefined,\n [Order.ORDER_NO]: undefined,\n };\n\n changeQuery(query, undefined, false);\n }\n\n changeTermSearch(term, isChangeQuery = true) {\n this.termSearch = term;\n this.page = 1;\n this.isFirst = true;\n this.isCheckFilter = false;\n isChangeQuery && this.changeQueryUrl(Search.SOURCE.SEARCH_INPUT);\n }\n\n show() {\n this.element.removeClass(\"hide\");\n }\n\n hide() {\n this.element.addClass(\"hide\");\n this.translateTimeout && clearTimeout(this.translateTimeout);\n }\n\n isMobileMode() {\n return isMobile(this.wrapper);\n }\n}\n\n\nfunction genSearchItemLoading(length = 32) {\n let result = \"\";\n for (let index = 0; index < length; index++) {\n result += `\n
    \n
    \n
    \n `\n }\n return result;\n}\n\nfunction genFilterItemLoading(length = 16) {\n let result = \"\";\n for (let index = 0; index < length; index++) {\n result += `\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n }\n return result;\n}","import { END_POINT, SITE_TYPE } from \"../constant\";\nimport Env from \"../environments\";\nimport { callApi } from \"../utils/api\";\n\nexport async function createOrderApi(data, onSuccess, onError) {\n return callApi(Env.API_SERVER_URL + END_POINT.CREATE_ORDER, {\n method: \"POST\",\n body: data,\n onSuccess,\n onError,\n });\n}\n\nexport async function checkoutApi(data, onSuccess, onError) {\n return callApi(\n Env.API_SERVER_URL + END_POINT.CHECKOUT,\n {\n method: \"POST\",\n body: data,\n onSuccess,\n onError,\n }\n );\n}\n\nexport async function getConfigApi(origin, siteType = SITE_TYPE.NORMAL, onSuccess, onError) {\n return callApi(Env.API_SERVER_URL + END_POINT.GET_CONFIG, {\n params: { site_type: siteType },\n onSuccess,\n onError,\n ref: origin,\n });\n}\n\nexport async function updateOrderApi(data, onSuccess, onError) {\n return callApi(Env.API_SERVER_URL + END_POINT.UPDTAE_ORDER, {\n method: \"POST\",\n body: data,\n onSuccess,\n onError,\n });\n}\n\nexport function apiTrackingOrder(orderNo, onSuccess, onError) {\n return callApi(Env.API_SERVER_URL + END_POINT.TRACKING_ORDER.replace(\"{{OrderNo}}\", orderNo), {\n method: \"POST\",\n onSuccess,\n onError,\n });\n}","export default import.meta.ROLLUP_FILE_URL_aaa688a9;","export default import.meta.ROLLUP_FILE_URL_29c093d5;","import DC from '../../../../DC';\nimport { Fee } from '../../../../models/Fee';\nimport { Order } from '../../../../models/Order';\nimport { getPriceText, stringToPrice } from '../../../../utils/currency';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\n\nconst classNames = require('classnames');\nexport default class BillingSummary extends DComponent {\n constructor({\n parent,\n id,\n orderData = new Order(),\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"BillingSummary\"),\n IconTotal: require(\"../../../../assets/images/tracking/IconTotal.svg\").default,\n }, true, true);\n /**@type {Order} */\n this.orderData = orderData;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"BillingSummary\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n if (this.orderData?.orderNo) {\n this.fillTotalBox(this.orderData);\n }\n }\n\n /** @param {Order} orderData */\n fillTotalBox(orderData) {\n DCElement(\".total-box .item-cart\", this.element).html(\"\");\n DCElement(\".total-box .fee-box\", this.element).html(\"\");\n\n if (orderData.fees?.length > 1) {\n let totalItems = orderData.getTotalItem();\n orderData.fees.forEach((element) => {\n if (element.amount !== 0) {\n let htmlFee = this.genHtmlFee(element, totalItems);\n DCElement(\".total-box .fee-box\", this.element).append(htmlFee);\n }\n });\n DCElement(\".total-items\", this.element).html(DC.i18n(\"checkout_totalItem\", totalItems.total));\n } else {\n DCElement(\".total-items\", this.element).html(\"\");\n }\n DCElement(\".total-box\", this.element).toggleClass(\"nofee\", !orderData.fees?.length);\n DCElement(\".cart-total .item.total .value\", this.element).html(this.genHtmlTotal(orderData));\n }\n\n genHtmlFee(fee, totalItems) {\n let total = totalItems.total;\n\n let amount = stringToPrice(fee.amount);\n return (\n `\n
    \n
    \n ${fee.title || \"\"}\n ${['coupon'].includes(fee.key) ? `\"coupon\"` : \"\"}\n
    \n \"info\"\n
    \n ${fee.description}\n
    \n
    \n ${fee.key === Fee.FEE_LIST_ID.PRODUCTS ? `${DC.i18n(\"checkout_totalItem\", total)}` : \"\"}\n
    \n
    \n ${fee.amount < 0 ? \"-\" : \"\"}\n ${getPriceText(amount, fee.currency)}\n
    \n
    \n `\n )\n }\n\n genHtmlTotal(orderData) {\n return getPriceText(orderData.payAmount, orderData.payCurrency)\n }\n}","import DC from \"../../../../DC\";\nimport { Order } from \"../../../../models/Order\";\nimport { PAYMENT_METHOD } from \"../../../../utils/constant\";\nimport { formatDate, getPriceText } from \"../../../../utils/currency\";\nimport { DCElement } from \"../../../DCElement\";\nimport { DComponent } from \"../../../DComponent\";\nimport BillingSummary from \"../BillingSummary\";\n\nconst classNames = require('classnames');\nclass OrderInformation extends DComponent {\n constructor({\n parent,\n id,\n orderData = new Order(),\n hideOrderNo = false,\n } = {}) {\n\n super(arguments[0], parent, id, {\n class: classNames(\"OrderInformation\", \"is-collapse\", {\n \"hide-orderno\": hideOrderNo,\n }),\n }, true, true);\n this.orderData = orderData;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"OrderInformation\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n // this.setUpCopy();\n this.fillData(this.orderData);\n }\n\n /** \n * @param {Order} orderData \n * */\n fillData(orderData) {\n DCElement(\".section-title.order-no .value\", this.element).text(orderData.orderNo);\n DCElement(\".payment-detail\", this.element).html(\"\");\n\n new BillingSummary({\n parent: DCElement(\".payment-detail\", this.element),\n orderData: orderData,\n });\n\n this.fillShippingInfo(orderData);\n\n setTimeout(() => {\n this.setCollapse();\n }, 500);\n }\n\n /**\n * @param {Order} orderData \n */\n fillShippingInfo(orderData) {\n let shipping = orderData.shippingAddress;\n if (shipping.firstName) {\n DCElement(\".box-sumary .shipping-info .first-name .value\", this.element).text(shipping.firstName);\n DCElement(\".box-sumary .shipping-info .phone .value\", this.element).text(shipping.phoneNumber);\n DCElement(\".box-sumary .shipping-info .email .value\", this.element).text(shipping.email);\n DCElement(\".box-sumary .shipping-info .address .value\", this.element).text(shipping.getAdressFull());\n }\n DCElement(\".box-sumary.payment-info.shipping\", this.element).toggleClass(\"hide\", !shipping.firstName);\n\n if (orderData.payAmount) {\n DCElement(\".box-sumary .billing-info .amountPaid .value\", this.element).html(this.genHtmlTotal(orderData));\n if (orderData.payments && orderData.payments.length > 0) {\n orderData.payments.forEach(element => {\n if (element.paymentMethod) {\n let payItem = PAYMENT_METHOD.find(item => item.paymentMethod === element.paymentMethod && (item?.paymentProvider || element.paymentProvider) === element.paymentProvider);\n\n if (payItem) {\n DCElement(`.box-sumary .billing-info .paymentPaid .value`, this.element).html(this.genHtmlPaymentMethod(payItem))\n }\n DCElement(\".box-sumary .billing-info .paymentPaid\", this.element).toggleClass(\"hide\", !payItem);\n }\n if (element.paymentDate) {\n DCElement(\".box-sumary .billing-info .datePaid .value\", this.element).html(formatDate(element.paymentDate * 1000));\n }\n DCElement(\".box-sumary .billing-info .datePaid\", this.element).toggleClass(\"hide\", !element.paymentDate);\n });\n }\n }\n\n DCElement(\".box-sumary.payment-info.payment\", this.element).toggleClass(\"hide\", !orderData.payAmount);\n }\n\n genHtmlTotal(orderData) {\n return getPriceText(orderData.payAmount, orderData.payCurrency);\n }\n\n genHtmlPaymentMethod(element) {\n return `${DC.i18n(element.label)}`\n }\n\n setCollapse() {\n DCElement(\".box-sumary .content\", this.element).each((index, obj) => {\n DCElement(obj).attr(\"data-height\", DCElement(obj).height());\n DCElement(obj).css(\"height\", DCElement(obj).height())\n })\n\n DCElement(\".box-sumary .item.head\", this.element).off(\"click\", this.onCollapse);\n DCElement(\".box-sumary .item.head\", this.element).on(\"click\", (e) => this.onCollapse(e));\n }\n\n onCollapse(e) {\n let element = DCElement(e.currentTarget);\n let wrapper = element.parent().parent();\n let content = wrapper.find(\".content\");\n if (wrapper.hasClass('open')) {\n wrapper.removeClass('open');\n content.css(\"height\", 0);\n element.addClass(\"collapsed\");\n } else {\n wrapper.addClass('open');\n content.css(\"height\", content.attr(\"data-height\"));\n element.removeClass(\"collapsed\");\n }\n }\n}\n\nexport default OrderInformation;","import { Product } from '../../../../models/Product';\nimport { SettingConfig } from '../../../../models/SettingConfig';\nimport { getPriceText } from '../../../../utils/currency';\nimport { getOr } from '../../../../utils/lodash';\nimport { isMobile } from '../../../../utils/utils';\nimport { DComponent } from '../../../DComponent';\n\nconst TYPE_DISPLAY = {\n NORMAL: 0,\n POPUP: 1\n}\n\nconst classNames = require('classnames');\nexport default class ProductInfoItem extends DComponent {\n constructor({\n parent,\n id,\n productItem = new Product(),\n type = TYPE_DISPLAY.NORMAL,\n isPrivateInfo = false,\n hideHead = false\n } = {}) {\n let originPriceText = productItem.meta?.originPrice && productItem.sitePriceCur && productItem.meta?.originPrice > productItem.sitePrice ? getPriceText(productItem.meta.originPrice, productItem.sitePriceCur) : \"\";\n super(arguments[0], parent, id, {\n class: classNames(\"ProductInfoItem\", {\n \"is-rfq\": productItem.type === Product.TYPE_PRODUCT.RFQ.id,\n \"no-color\": !isPrivateInfo && !getOr(\"\", \"meta.color\")(productItem),\n \"no-size\": !isPrivateInfo && !getOr(\"\", \"meta.size\")(productItem),\n \"popup\": type === TYPE_DISPLAY.POPUP,\n \"hide-head\": hideHead,\n \"has-origin-price\": originPriceText,\n }),\n quantity: isPrivateInfo ? \"--\" : productItem.quantity,\n title: isPrivateInfo ? \"\" : getOr(\"\", \"meta.title\")(productItem),\n titleI18n: isPrivateInfo ? \"productItem_productNameDefault\" : \"\",\n image: isPrivateInfo ? \"https://cdn.dutycast.com/dutycast/static/media/sdk/product_default.jpg\" : (getOr(\"\", \"meta.image\")(productItem) || (SettingConfig.getLocale() === \"vi\" ? \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_vi.jpg\" : \"https://cdn.dutycast.com/dutycast/static/media/sdk/img_default_en.jpg\")),\n color: isPrivateInfo ? \"--\" : getOr(\"\", \"meta.color\")(productItem),\n size: isPrivateInfo ? \"--\" : getOr(\"\", \"meta.size\")(productItem),\n productUrl: isPrivateInfo ? \"\" : getOr(\"\", \"meta.currentUrl\")(productItem) || productItem.siteUrl,\n sitePrice: isPrivateInfo ? \"--\" : getPriceText(productItem.sitePrice, productItem.sitePriceCur),\n currentPrice: isPrivateInfo ? \"--\" : getPriceText(productItem.price, productItem.currentCurrency),\n siteLogo: productItem.siteLogo || `https://www.google.com/s2/favicons?domain=${productItem.siteUrl}`,\n siteName: productItem.siteName,\n classPurchased: !productItem.siteLogo && !productItem.siteName ? \"hide\" : \"\",\n originPrice: isPrivateInfo ? \"--\" : originPriceText,\n }, true, true);\n this.productItem = productItem;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"ProductInfoItem\");\n }\n\n loadHtml() {\n return isMobile() ? require(\"./itemMobile.html\").default : require(\"./index.html\").default;\n }\n}","import DC from '../../../../DC';\nimport { OrderAction } from '../../../../models/OrderAction';\nimport { Product } from '../../../../models/Product';\nimport { SettingConfig } from '../../../../models/SettingConfig';\nimport { STATUS_ORDER, STATUS_ORDER_LIST } from '../../../../utils/constant';\nimport { formatDate, formatTime } from '../../../../utils/currency';\nimport { getOr } from '../../../../utils/lodash';\nimport { replaceVariable } from '../../../../utils/string';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\n\nconst classNames = require('classnames');\nexport default class StatusProgress extends DComponent {\n constructor({\n parent,\n id,\n orderNo,\n statusList = [],\n isCompact,\n productItem = new Product(),\n } = {}) {\n let isCancelOrder = statusList.findIndex(item => item.action === STATUS_ORDER.CANCEL) > -1;\n super(arguments[0], parent, id, {\n class: classNames(\"StatusProgress\", {\n \"is-compact\": isCompact,\n \"is-cancel\": isCancelOrder\n }),\n Arrow_Right_Orange: require(\"../../../../assets/images/icons/Arrow_Right_Orange.svg\").default,\n }, true, true);\n this.isCancelOrder = isCancelOrder;\n this.orderNo = orderNo;\n /** @type {[OrderAction]} */\n this.statusList = statusList;\n this.isCompact = isCompact;\n this.productItem = productItem;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"StatusProgress\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.fillData();\n }\n\n fillData() {\n let curStatus = OrderAction.getCurrentStatus(this.statusList);\n if (this.isCancelOrder) {\n let reason = getOr(\"\", \"meta[0].cancelReason\")(curStatus);\n let createdAt = getOr(\"\", \"meta[0].createdAt\")(curStatus);\n let htmlReason = `\n ${createdAt ?\n `
    \n \n ${formatDate(createdAt * 1000)}\n ${formatTime(createdAt * 1000)}\n
    \n ` : ``}\n ${reason ?\n `
    \n \n ${reason === \"user cancel\" ? DC.i18n(\"trackingOrder_cancelReason_byUser\") : reason}\n
    ` : ``}\n `\n DCElement('.status-list.list', this.element).html(htmlReason);\n } else {\n let htmlItem = ``;\n let indCompact = getIdxListCompact(this.statusList, curStatus);\n this.statusList.forEach((item, index) => {\n htmlItem += genHtmlStatus(index, item, curStatus.indexCur, this.isCompact && !indCompact.includes(item.action));\n })\n DCElement('.status-list.list', this.element).html(htmlItem);\n }\n\n DCElement(\".lastest-update .value\", this.element).text(curStatus.title || curStatus.action);\n }\n}\n\nfunction genHtmlStatus(index, item, indexCur, isHide) {\n let htmlResult = \"\";\n let element = STATUS_ORDER_LIST.find(i => i.id === item.action);\n if (element) {\n let date = (item.estimatedAt || item.createdAt) ? formatDate((item.estimatedAt ? item.estimatedAt : item.createdAt) * 1000) : \"\";\n htmlResult = replaceVariable(require(\"./item.html\").default, {\n class: `${index === indexCur ? \"current\" : (index < indexCur ? \"active\" : \"deactive\")}${isHide ? \" hide\" : \"\"}`,\n title: item.title || item.action,\n status: element.status,\n date: date || \"\",\n label: !item.createdAt && item.estimatedAt ? DC.i18n(\"trackingOrder_estimatedDate\") : \"\",\n })\n }\n return htmlResult;\n}\n\nfunction getIdxListCompact(statusList = [], curStatus) {\n let result = [];\n let listData = statusList;\n\n let index = listData.findIndex(item => item.action === curStatus.action);\n if (index === 0) {\n result.push(curStatus.action, listData[index + 1].action, listData[index + 2].action)\n } else if (index === listData.length - 1) {\n result.push(listData[index - 2].action, listData[index - 1].action, curStatus.action)\n } else {\n result.push(listData[index + 1].action, curStatus.action, listData[index - 1].action)\n }\n return result;\n}","import { Order } from '../../../../models/Order';\nimport { convertCurrencyNoSymbol, formatDate, formatTime, getSymbolCurrency } from '../../../../utils/currency';\nimport { getOr } from '../../../../utils/lodash';\nimport { replaceVariable } from '../../../../utils/string';\nimport { changeQueryString } from '../../../../utils/url';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\nimport ProductInfoItem from '../ProductInfoItem';\nimport StatusProgress from '../StatusProgress';\n\nconst classNames = require('classnames');\nexport default class OrderItem extends DComponent {\n constructor({\n parent,\n id,\n orderData = new Order(),\n isCollapseItem = false,\n isGuestUser = false,\n hideHead = false,\n smallMode = false,\n isCompact = false,\n showPaymentButton = false,\n } = {}) {\n let date = getOr(\"\", \"payments[0].updated_at\")(orderData);\n super(arguments[0], parent, id, {\n class: classNames(\"OrderItem\", {\n \"small-mode\": smallMode,\n \"guest-user\": isGuestUser\n }),\n notice: !isGuestUser ? \"hide\" : \"\",\n classHead: hideHead ? \"hide\" : \"\",\n orderNo: orderData.orderNo,\n items: getItems(orderData),\n classPayment: !date ? \"hide\" : \"\",\n paymentDate: date ? formatDate(date * 1000) : \"\",\n paymentTime: date ? formatTime(date * 1000) : \"\",\n totalPaid: orderData.payAmount !== undefined ? `${getSymbolCurrency(orderData.payCurrency)}${(isGuestUser ? \"--\" : convertCurrencyNoSymbol(orderData.payAmount.toFixed(2), orderData.payCurrency))}` : \"\",\n }, true, true);\n this.hideHead = hideHead;\n this.orderData = orderData;\n this.isCollapseItem = isCollapseItem;\n this.isGuestUser = isGuestUser;\n this.isCompact = isCompact;\n this.showPaymentButton = showPaymentButton;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"OrderItem\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.fillOrderData();\n\n DCElement(\".collapse-item\", this.element).on(\"click\", (e) => {\n DCElement(e.currentTarget).parent().attr(\"data-type\", e.currentTarget.id)\n DCElement(\".order-box .order-row.is-collapse\", this.element).toggleClass(\"hide\")\n });\n }\n\n setOrderData(order) {\n this.orderData = order;\n this.fillOrderData();\n }\n\n fillOrderData() {\n if (this.orderData.details && this.orderData.details.length) {\n this.orderData.details.forEach((item, index) => {\n let isHideItem = false;\n if (index > 0 && this.orderData.details.length > 1 && this.isCollapseItem) {\n isHideItem = true;\n DCElement(`.see-more-item`, this.element).removeClass(\"hide\");\n }\n DCElement(\".order-box\", this.element).append(\n this.genHtmlOrderItem({\n id: item.id,\n class: isHideItem && index > 0 ? \" is-collapse hide\" : \"\"\n })\n )\n new ProductInfoItem({\n parent: DCElement(`.order-box .order-row[data-id='${item.id}'] .product-item`, this.element),\n productItem: item,\n isPrivateInfo: this.isGuestUser\n })\n if (item.audits && item.audits.length) {\n new StatusProgress({\n parent: DCElement(`.order-box .order-row[data-id='${item.id}'] .status-progress`, this.element),\n orderNo: this.orderData.orderNo,\n productItem: item,\n statusList: item.audits,\n isCompact: this.isCompact,\n })\n }\n })\n\n if (!this.hideHead && !this.isGuestUser && this.showPaymentButton) {\n if (this.orderData.intermediateCheckoutUrl) {\n DCElement(\".payment-link\", this.element).html(`\n
    \n \n \n `);\n DCElement(\".payment-link\", this.element).removeClass(\"hide\");\n } else {\n DCElement(\".payment-link\", this.element).addClass(\"hide\");\n }\n }\n }\n }\n\n genHtmlOrderItem(params) {\n return replaceVariable(require(\"./item.html\").default, {\n ...params\n })\n }\n}\n\n/** @param {Order} orderData */\nfunction getItems(orderData) {\n if (orderData?.skuCount) {\n return orderData.skuCount;\n }\n let details = getOr([], \"details\")(orderData);\n // let result = 0;\n // if (details.length) {\n // details.forEach(element => {\n // result += element.quantity\n // });\n // }\n return details.length;\n}","import { Order } from '../../../../models/Order';\nimport { isMobile } from '../../../../utils/utils';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\nimport OrderInformation from '../OrderInformation';\nimport OrderItem from '../OrderItem';\n\nconst classNames = require('classnames');\nclass OrderDetail extends DComponent {\n constructor({\n parent,\n id,\n order = new Order(),\n } = {}) {\n\n super(arguments[0], parent, id, {\n class: classNames(\"OrderDetail\"),\n }, true, true);\n this.order = order;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"OrderDetail\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n new OrderItem({\n parent: DCElement(\".order-item-list\", this.element),\n orderData: this.order,\n hideHead: true,\n smallMode: true,\n isCompact: isMobile(),\n showPaymentButton: true,\n })\n new OrderInformation({\n parent: DCElement(\".billing-summary .order-information\", this.element),\n orderData: this.order,\n hideOrderNo: true,\n })\n }\n}\n\nexport default OrderDetail;","import DC from '../../../../DC';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\n\nconst classNames = require('classnames');\nexport default class OrderEmpty extends DComponent {\n constructor({\n parent,\n id,\n orderNo,\n status,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"OrderEmpty\"),\n BG_empty: \"https://cdn.dutycast.com/dutycast/static/media/sdk/BG_empty.jpg\",\n }, true);\n this.orderNo = orderNo;\n this.status = status;\n this.render();\n }\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"OrderEmpty\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n if (this.orderNo) {\n this.setOrderNo(this.orderNo);\n }\n }\n\n setOrderNo(orderNo) {\n this.orderNo = orderNo;\n DCElement(\".track-progress .search-no\", this.element).text(orderNo ? DC.i18n(\"trackingOrder_forOrderId\", this.orderNo) : \"\");\n }\n\n setStatus(status) {\n this.status = status;\n DCElement(\".track-progress .filter-no\", this.element).text(status ? DC.i18n(\"trackingOrder_withStatus\", this.status) : \"\");\n }\n}","export default import.meta.ROLLUP_FILE_URL_113307f2;","import { replaceScript } from '../../../../utils/url';\nimport { DCElement } from '../../../DCElement';\nimport { DComponent } from '../../../DComponent';\n\nconst classNames = require('classnames');\nexport default class SearchForm extends DComponent {\n constructor({\n parent,\n id,\n onInput,\n onChange,\n onSearch,\n placeholderText,\n placeholderI18n,\n buttonText,\n buttonI18n,\n defaultValue = \"\",\n onFocus = () => { },\n onBlur = () => { },\n onClear = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"SearchForm\"),\n search: require(\"../../../../assets/images/tracking/search.svg\").default,\n }, true, true);\n this.onInput = onInput;\n this.onChange = onChange;\n this.onSearch = onSearch;\n this.placeholderText = placeholderText;\n this.placeholderI18n = placeholderI18n;\n this.buttonText = buttonText;\n this.buttonI18n = buttonI18n;\n this.defaultValue = defaultValue;\n this.onFocus = onFocus;\n this.onBlur = onBlur;\n this.onClear = onClear;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"SearchForm\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n if (this.placeholderI18n) {\n DCElement(\"input\", this.element).attr(\"data-i18n\", `[placeholder]${this.placeholderI18n}`);\n }\n if (this.placeholderText) {\n DCElement(\"input\", this.element).attr(\"placeholder\", this.placeholderText);\n }\n if (this.buttonText) {\n DCElement(\"button\", this.element).html(this.buttonText);\n }\n if (this.buttonI18n) {\n DCElement(\"button\", this.element).attr(\"data-i18n\", this.buttonI18n);\n }\n if (this.defaultValue) {\n DCElement(\"input\", this.element).val(this.defaultValue);\n }\n\n DCElement('input', this.element).focus((e) => {\n typeof this.onFocus == \"function\" && this.onFocus();\n this.element.addClass('focus');\n });\n\n DCElement(\"input\", this.element).on(\"input\", () => {\n typeof this.onInput == \"function\" && this.onInput(this.getValue());\n });\n\n DCElement(\"input\", this.element).on(\"change\", () => {\n typeof this.onChange == \"function\" && this.onChange(this.getValue());\n if (this.getValue()) DCElement('input', this.element).blur();\n });\n\n DCElement(\"input\", this.element).on(\"keydown\", (e) => {\n if (e.key === 'Enter' || e.keyCode === 13) {\n this.search(this.getValue());\n }\n });\n\n DCElement(\".prefix\", this.element).on(\"click\", () => {\n this.isFocus() ? this.search(this.getValue()) : this.focus();\n });\n\n DCElement(\".btn-search\", this.element).on(\"click\", () => {\n this.search(this.getValue());\n });\n\n DCElement(\".clear\", this.element).on(\"touchend click\", (e) => {\n e.preventDefault();\n this.setValue(\"\", true);\n typeof this.onClear == \"function\" && this.onClear(this.getValue());\n this.focus();\n });\n }\n\n search(keyword) {\n this.blur();\n if (typeof this.onSearch == \"function\") {\n this.onSearch(keyword);\n }\n }\n\n getValue() {\n return replaceScript((DCElement(\"input\", this.element).val() || \"\")).trim();\n }\n\n setValue(value, trigger = false) {\n DCElement(\"input\", this.element).val(value);\n trigger && DCElement(\"input\", this.element).trigger(\"change\");\n }\n\n isFocus() {\n return this.parent.parent().hasClass(\"focus\") || this.element.hasClass(\"focus\");\n }\n\n blur() {\n this.element.removeClass(\"focus\");\n typeof this.onBlur == \"function\" && this.onBlur();\n setTimeout(() => {\n document.activeElement.blur();\n }, 0);\n }\n\n focus() {\n DCElement(\"input\", this.element).focus();\n }\n}","import { Order } from '../../models/Order';\nimport { apiTrackingOrder } from '../../services/api';\nimport { DCElement } from '../DCElement';\nimport { DComponent } from '../DComponent';\nimport OrderDetail from './components/OrderDetail';\nimport OrderEmpty from './components/OrderEmpty';\nimport SearchForm from './components/SearchForm';\n\nconst classNames = require('classnames');\nexport default class TrackingOrder extends DComponent {\n constructor({\n parent,\n id,\n orderNo,\n onAfter = () => { },\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"TrackingOrder\"),\n BG_init: \"https://cdn.dutycast.com/dutycast/static/media/sdk/BG_init.jpg\",\n }, true, true);\n this.orderNo = orderNo;\n this.searchForm = undefined\n this.orderEmpty = undefined;\n this.onAfter = onAfter;\n this.render();\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"TrackingOrder\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n after() {\n this.orderEmpty = new OrderEmpty({\n parent: DCElement(\".tracking-empty .border-box\", this.element),\n orderNo: this.orderNo\n });\n this.searchForm = new SearchForm({\n parent: DCElement(\".tracking-search .search-box\", this.element),\n placeholderI18n: \"trackingOrder_youOrderId\",\n noCheckValue: false,\n onChange: (val) => this.onSearch(val),\n onSearch: (val) => this.onSearch(val),\n defaultValue: this.orderNo\n });\n typeof this.onAfter === \"function\" && this.onAfter();\n }\n\n onSearch(id) {\n let orderId = id || this.searchForm.getValue();\n this.orderEmpty.setOrderNo(orderId);\n // sectionLoading.show();\n DCElement(\".tracking-tracking .order-detail\", this.element).html(\"\");\n if (orderId) {\n this.getProductDetail(orderId);\n } else {\n this.element.attr(\"mode\", \"init\")\n }\n }\n\n getProductDetail(orderNo) {\n apiTrackingOrder(orderNo,\n (data) => {\n if (data && data.data && data.data.details && data.data.details.length) {\n let order = Order.fromApiObject(data.data);\n DCElement(\".tracking-tracking .order-details\", this.element).html(\"\");\n new OrderDetail({\n parent: DCElement(\".tracking-tracking .order-details\", this.element),\n order: order,\n })\n DCElement(this.element).attr(\"mode\", \"tracking\");\n } else {\n console.log(\"emoty\")\n this.element.attr(\"mode\", \"empty\");\n }\n }, (error) => {\n console.log(error)\n this.element.attr(\"mode\", \"empty\")\n }\n )\n }\n\n show() {\n this.element.removeClass(\"hide\");\n }\n\n hide() {\n this.element.addClass(\"hide\");\n }\n}","/* eslint-disable no-unused-vars */\nimport Cart from \"../components/Cart\";\nimport DetailProduct from \"../components/DetailProduct\";\nimport SearchInput from \"../components/SearchInput\";\nimport SearchResult from \"../components/SearchResult\";\nimport TrackingOrder from \"../components/TrackingOrder\";\n\nexport class ResultWrapper {\n static _pid;\n static _wrapper;\n static _rootParent;\n static _configSE;\n\n /** @type {SearchResult} */\n static _search;\n static get search() {\n return ResultWrapper._search;\n }\n static set search(value) {\n ResultWrapper._search = value;\n }\n /** @type {DetailProduct} */\n static _detail;\n static get detail() {\n return ResultWrapper._detail;\n }\n static set detail(value) {\n ResultWrapper._detail = value;\n }\n\n /** @type {TrackingOrder} */\n static _tracking;\n static get tracking() {\n return ResultWrapper._tracking;\n }\n static set tracking(value) {\n ResultWrapper._tracking = value;\n }\n\n static get pid() {\n return ResultWrapper._pid;\n }\n static set pid(value) {\n ResultWrapper._pid = value;\n }\n static get wrapper() {\n return ResultWrapper._wrapper;\n }\n static set wrapper(value) {\n ResultWrapper._wrapper = value;\n }\n\n static get rootParent() {\n if (!ResultWrapper._rootParent) {\n ResultWrapper._rootParent = ResultWrapper.wrapper;\n }\n return ResultWrapper._rootParent;\n }\n static set rootParent(value) {\n ResultWrapper._rootParent = value;\n }\n\n static get configSE() {\n return ResultWrapper._configSE;\n }\n static set configSE(value) {\n ResultWrapper._configSE = value;\n }\n\n /** @type {SearchInput} */\n static searchInput;\n /** @type {Cart} */\n static cart;\n}","import { ResultWrapper } from \"./globalWrapper\";\nimport { getOr } from \"./lodash\";\nimport { devLog } from \"./log\";\n\n/** use 'event.dtarget' to select current sel */\nexport function delegate(el, evt, sel, handler) {\n el.addEventListener(evt, function (event) {\n var t = event.target;\n while (t && t !== this) {\n if (t.matches(sel)) {\n event.dtarget = t;\n handler.call(t, event);\n }\n t = t.parentNode;\n }\n });\n}\n\nexport function createElementFromHTML(htmlString, multiple = false) {\n var div = document.createElement('div');\n div.innerHTML = htmlString.trim();\n return multiple ? div.childNodes : div.firstChild;\n}\n\nexport const getElement = (query, parent) => {\n return getHtmlElement(getElements(query, parent));\n}\n\nexport const getElements = (query, parent) => {\n try {\n if (!query) {\n return [];\n }\n\n if (parent && typeof query === \"string\") {\n const elements = getElements(query);\n const parentElement = getElements(parent);\n let result = [];\n parentElement.forEach((e) => {\n if (e?.contentDocument?.querySelectorAll || e?.shadowRoot?.querySelectorAll || e.querySelectorAll) {\n result = [...result, ...(e?.contentDocument || e?.shadowRoot || e).querySelectorAll(query)];\n } else {\n if (elements.indexOf(e) !== -1) {\n result.push(e);\n }\n }\n });\n return result;\n }\n\n if (typeof query === \"string\") {\n return Array.from(document.querySelectorAll(query));\n }\n\n const arr = Array.from(query);\n if (arr.length) {\n return arr;\n }\n\n if (getOr(undefined, \"length\")(query) !== undefined) {\n return arr;\n }\n\n return [query];\n } catch (error) {\n devLog(error);\n return [];\n }\n}\n\nexport const getHtmlElement = (source) => {\n if (!source) {\n return;\n }\n\n let element = source;\n if (Array.isArray(source) || source[\"jquery\"] || source instanceof NodeList) {\n element = source[0];\n }\n return element;\n}\n\nexport const appendStyleTo = (style, id, parent = ResultWrapper.rootParent) => {\n if (!parent.find(\"#style_\" + id).length) {\n const e = document.createElement(\"style\");\n e.textContent = style;\n e.id = \"style_\" + id;\n parent.append(e);\n }\n}\n\nexport function isHidden(el) {\n const style = window.getComputedStyle(el);\n const position = el.getBoundingClientRect();\n return (style.display === 'none' || (position.bottom === 0 && position.top === 0 && position.left === 0 && position.right === 0 && position.width === 0 && position.height === 0))\n}\n\nexport function isObviousHtml(input) {\n return input[0] === \"<\" &&\n input[input.length - 1] === \">\" &&\n input.length >= 3;\n}","import { createElementFromHTML, getElements, isObviousHtml } from \"../utils/element\";\nimport { triggerEvent } from \"../utils/event\";\n\n/**\n * constructor of DCElement\n * @param {string | DCElement | HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement} selector \n * @param {string | DCElement | HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement} parent \n * @returns {DCElement}\n */\nvar DCElement = function (selector, parent) {\n if (selector?.elements) return selector;\n\n return new init(selector, parent);\n};\n\nDCElement.fn = DCElement.prototype = {\n constructor: DCElement,\n /**@type {HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement} */\n \"0\": undefined,\n /**@type {[HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement]} */\n elements: [],\n length: 0,\n isEmpty: function () {\n let empty = !this.length;\n if (empty) this.elements = [];\n return empty;\n },\n i18n: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].i18n();\n }\n return this;\n },\n on: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].addEventListener(...arguments);\n }\n return this;\n },\n off: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].removeEventListener(...arguments);\n }\n return this;\n },\n addEventListener: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].addEventListener(...arguments);\n }\n return this;\n },\n removeEventListener: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].removeEventListener(...arguments);\n }\n return this;\n },\n addClass: function () {\n if (this.isEmpty()) return;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].classList.add(...arguments);\n }\n return this;\n },\n removeClass: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].classList.remove(...arguments);\n }\n return this;\n },\n toggleClass: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].classList.toggle(...arguments);\n }\n return this;\n },\n hasClass(className) {\n if (this.isEmpty()) return false;\n return this.elements[0].classList.contains(className);\n },\n containsClass(className) {\n if (this.isEmpty()) return false;\n return this.elements[0].classList.contains(className);\n },\n text: function () {\n if (this.isEmpty()) return arguments.length ? new DCElement() : \"\";\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].textContent = arguments[0];\n }\n } else {\n return this.elements[0].textContent;\n }\n return this;\n },\n innerText: function () {\n if (this.isEmpty()) return;\n return this.elements[0].innerText;\n },\n val: function () {\n if (this.isEmpty()) return arguments.length ? new DCElement() : \"\";\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].value = arguments[0];\n }\n } else {\n return this.elements[0].value;\n }\n return this;\n },\n is: /** @param {\":checked\" | \":disabled\"} selector */ function (selector) {\n if (this.isEmpty()) return;\n switch (selector) {\n case \":checked\":\n return this.elements[0].checked;\n\n case \":disabled\":\n return this.elements[0].disabled;\n default:\n break;\n }\n },\n prop: /** @param {\":checked\" | \":disabled\"} selector */ function (selector, value) {\n if (this.isEmpty()) return this;\n switch (selector) {\n case \":checked\":\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].checked = value;\n }\n break;\n\n case \":disabled\":\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].disabled = value;\n }\n break;\n\n default:\n break;\n }\n return this;\n },\n attr: function (attributeName) {\n if (this.isEmpty()) return arguments.length > 1 ? new DCElement() : undefined;\n if (arguments.length > 1) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].setAttribute(attributeName, arguments[1]);\n }\n } else {\n return this.elements[0].getAttribute(attributeName);\n }\n return this;\n },\n removeAttr: function (attributeName) {\n if (this.isEmpty()) return this;\n if (attributeName) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].removeAttribute(attributeName, arguments[1]);\n }\n }\n return this;\n },\n css: function (property, newStyle) {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].style[property] = newStyle;\n }\n return this;\n },\n trigger: function (eventName, eventData) {\n if (this.isEmpty()) return this;\n triggerEvent(this.elements[0], eventName, eventData);\n return this;\n },\n convertElToNode: function (el) {\n if (!el) return \"\";\n\n if (typeof el === \"string\") {\n return createElementFromHTML(el);\n }\n\n if (el?.length) {\n return el[0];\n }\n\n return el;\n },\n convertElToHTML: function (el) {\n if (!el) return \"\";\n\n if (typeof el === \"string\") {\n return el;\n }\n if (el?.length) {\n return el[0].innerHTML;\n }\n return el.innerHTML;\n },\n html: function () {\n if (this.isEmpty()) return this;\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].innerHTML = arguments[0];\n }\n } else {\n return this.elements[0].innerHTML;\n }\n return this;\n },\n append: function () {\n if (this.isEmpty()) return this;\n if (arguments.length > 0) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].append(this.convertElToNode(arguments[0]));\n }\n }\n return this;\n },\n appendChild: function () {\n if (this.isEmpty()) return this;\n if (arguments.length > 0) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].appendChild(this.convertElToNode(arguments[0]));\n }\n }\n return this;\n },\n prepend: function () {\n if (this.isEmpty()) return this;\n if (arguments.length > 0) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].prepend(this.convertElToNode(arguments[0]));\n }\n }\n return this;\n },\n after: function () {\n if (this.isEmpty()) return this;\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].after(arguments[0]);\n }\n } else {\n return this.elements[0].after();\n }\n return this;\n },\n before: function () {\n if (this.isEmpty()) return this;\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].before(arguments[0]);\n }\n } else {\n return this.elements[0].before();\n }\n return this;\n },\n insertAdjacentHTML: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].insertAdjacentHTML(...arguments);\n }\n return this;\n },\n remove: function () {\n if (this.isEmpty()) return this;\n for (let index = 0; index < this.elements.length; index++) {\n this.elements[index].remove();\n }\n return this;\n },\n find: function (selector) {\n if (this.isEmpty()) return new DCElement();\n for (let index = 0; index < this.length; index++) {\n const element = this.elements[index];\n const e = element.querySelectorAll(selector);\n if (e.length) {\n return new DCElement(e);\n }\n }\n return new DCElement();\n },\n each: function () {\n if (this.isEmpty()) return this;\n if (arguments.length) {\n for (let index = 0; index < this.elements.length; index++) {\n typeof arguments[0] === \"function\" && arguments[0](index, this.elements[index])\n }\n }\n return this;\n },\n focus: function () {\n if (this.isEmpty()) return this;\n this.elements[0].focus();\n return this;\n },\n blur: function () {\n if (this.isEmpty()) return this;\n this.elements[0].blur();\n return this;\n },\n parent: function () {\n if (this.isEmpty()) return this;\n return DCElement(this.elements[0].parentElement);\n },\n outerWidth: function () {\n if (this.isEmpty()) return 0;\n return this.elements[0].clientWidth;\n },\n height: function () {\n if (this.isEmpty()) return 0;\n return this.elements[0].clientHeight;\n },\n offsetHeight: function () {\n if (this.isEmpty()) return 0;\n return this.elements[0].offsetHeight;\n },\n offsetTop: function () {\n if (this.isEmpty()) return 0;\n return this.elements[0].getBoundingClientRect().top + window.scrollY;\n },\n scrollTop: function () {\n if (this.isEmpty()) return 0;\n return this.elements[0].scrollTop;\n },\n attachShadow: function () {\n if (this.isEmpty()) return this;\n return this.elements[0].attachShadow(...arguments);\n },\n closest: function () {\n if (this.isEmpty()) return this;\n return DCElement(this.elements[0].closest(...arguments));\n }\n}\n\n/**\n * init funciton of DCElement\n * @param {string | DCElement | HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement} selector \n * @param {string | DCElement | HTMLElement | HTMLDivElement | HTMLInputElement | HTMLFormElement} parent \n * @returns {DCElement}\n */\nvar init = function (selector, parent) {\n if (!selector) {\n this.length = 0;\n this.elements = [];\n return this;\n }\n\n if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n this.elements = [selector];\n return this;\n }\n\n if (isObviousHtml(selector)) {\n const elHtml = createElementFromHTML(selector);\n this[0] = elHtml;\n this.length = 1;\n this.elements = [elHtml];\n return this;\n }\n\n const el = getElements(selector, parent);\n this[0] = el?.length ? el[0] : el;\n this.length = el.length;\n this.elements = el;\n return this;\n};\n\ninit.prototype = DCElement.fn;\n\nexport { DCElement };","import { API_KEY_QUERY_STRING_KEY } from \"./constant\";\nimport { getParamUrl } from \"./utils/url\";\nimport { extend } from \"./utils/utils\";\n\n/**\n * @type {{\n * CONFIG_SETTINGS: string\n * getProduct: (config?: {}) => {}[]\n * validateSite: (config?: {}) => boolean\n * addToCart: (data: any, fastCheckout: any) => Promise\n * getCheckoutLink: (ids?: any[]) => Promise\n * getCart: () => Promise<{}>\n * getBadge: () => Promise\n * clearCart: () => Promise\n * setCheckoutElements: (value: any) => void\n * setBadgeElements: (value: any) => void\n * showBadge: (source: any) => Promise\n * setAddToCartElements: (value: any) => void\n * setFastCheckoutElements: (value: any) => void\n * setSiteID: (value: any) => void\n * setDisableAddToCartAnimation: (value: any) => void\n * setHideElements: (value: any) => void\n * hideElements: () => void\n * setOffEvents: (value: any) => void\n * offEvents: () => void\n * setDataCheckout: (data: any) => void\n * showPopupCart: (event: any, parent: Node) => void\n * setExternalUserId: (value: any) => void\n * extend: (...args: any[]) => any\n * }}\n */\nconst DC = {\n ...(window?.DC ?? {}),\n API_KEY: getApiKey(),\n SITE_ID: \"{{SITE_ID}}\",\n BADGE_ELEMENTS: \"{{BADGE_ELEMENTS}}\",\n CHECKOUT_ELEMENTS: \"{{CHECKOUT_ELEMENTS}}\",\n ADD_TO_CART_ELEMENTS: \"{{ADD_TO_CART_ELEMENTS}}\",\n CART_ELEMENTS: \"{{CART_ELEMENTS}}\",\n FAST_CHECKOUT_ELEMENTS: \"{{FAST_CHECKOUT_ELEMENTS}}\",\n QUANTITY_INPUT_ELEMENTS: \"{{QUANTITY_INPUT_ELEMENTS}}\",\n SEARCH_RESULT_WRAPPER_ELEMENTS: \"{{SEARCH_RESULT_WRAPPER_ELEMENTS}}\",\n SEARCH_INPUT_ELEMENTS: \"{{SEARCH_INPUT_ELEMENTS}}\",\n DISABLE_ADD_TO_CART_ANIMATION: \"{{DISABLE_ADD_TO_CART_ANIMATION}}\",\n CONFIG_SETTINGS: \"{{CONFIG_SETTINGS}}\",\n EXTERNAL_ID: \"{{EXTERNAL_ID}}\",\n CUSTOM_BADGE_ELEMENTS: \"\",\n CUSTOM_CHECKOUT_ELEMENTS: \"\",\n CUSTOM_ADD_TO_CART_ELEMENTS: \"\",\n CUSTOM_FAST_CHECKOUT_ELEMENTS: \"\",\n CUSTOM_QUANTITY_INPUT_ELEMENTS: \"\",\n CUSTOM_OFF_EVENT: \"\",\n CUSTOM_HIDE_ELEMENTS: \"\",\n CONFIG_ADD_TO_CART_ELEMENTS: \"\",\n CONFIG_BADGE_ELEMENTS: \"\",\n CONFIG_CHECKOUT_ELEMENTS: \"\",\n CONFIG_QUANTITY_INPUT_ELEMENTS: \"\",\n CONFIG_OFF_EVENTS: \"\",\n CONFIG_HIDE_ELEMENTS: \"\",\n CONFIG_RESPONSIVE_MODE: \"\",\n extend: extend,\n}\n\nfunction getApiKey() {\n const key = process.env.NODE_ENV === 'production' ? \"\" : getParamUrl(API_KEY_QUERY_STRING_KEY);\n return key || \"{{API_KEY}}\";\n}\n\nexport default DC;","/*!\n * jQuery Internationalization library\n *\n * Copyright (C) 2012 Santhosh Thottingal\n *\n * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do\n * anything special to choose one license or the other and you don't have to\n * notify anyone which license you are using. You are free to use\n * UniversalLanguageSelector in commercial projects as long as the copyright\n * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\tvar I18N,\n\t\tslice = Array.prototype.slice;\n\t/**\n\t * @constructor\n\t * @param {Object} options\n\t */\n\tI18N = function (options) {\n\t\t// Load defaults\n\t\tthis.options = $.extend( {}, I18N.defaults, options );\n\n\t\tthis.parser = this.options.parser;\n\t\tthis.locale = this.options.locale;\n\t\tthis.messageStore = this.options.messageStore;\n\t\tthis.languages = {};\n\t};\n\n\tI18N.prototype = {\n\t\t/**\n\t\t * Localize a given messageKey to a locale.\n\t\t * @param {string} messageKey\n\t\t * @return {string} Localized message\n\t\t */\n\t\tlocalize: function (messageKey) {\n\t\t\tvar localeParts, localePartIndex, locale, fallbackIndex,\n\t\t\t\ttryingLocale, message;\n\n\t\t\tlocale = this.locale;\n\t\t\tfallbackIndex = 0;\n\n\t\t\twhile (locale) {\n\t\t\t\t// Iterate through locales starting at most-specific until\n\t\t\t\t// localization is found. As in fi-Latn-FI, fi-Latn and fi.\n\t\t\t\tlocaleParts = locale.split('-');\n\t\t\t\tlocalePartIndex = localeParts.length;\n\n\t\t\t\tdo {\n\t\t\t\t\ttryingLocale = localeParts.slice(0, localePartIndex).join('-');\n\t\t\t\t\tmessage = this.messageStore.get(tryingLocale, messageKey);\n\n\t\t\t\t\tif (message) {\n\t\t\t\t\t\treturn message;\n\t\t\t\t\t}\n\n\t\t\t\t\tlocalePartIndex--;\n\t\t\t\t} while (localePartIndex);\n\n\t\t\t\tif (locale === this.options.fallbackLocale) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlocale = ($.i18n.fallbacks[this.locale] &&\n\t\t\t\t\t$.i18n.fallbacks[this.locale][fallbackIndex]) ||\n\t\t\t\t\tthis.options.fallbackLocale;\n\t\t\t\t$.i18n.log('Trying fallback locale for ' + this.locale + ': ' + locale + ' (' + messageKey + ')');\n\n\t\t\t\tfallbackIndex++;\n\t\t\t}\n\n\t\t\t// key not found\n\t\t\treturn '';\n\t\t},\n\n\t\t/*\n\t\t * Destroy the i18n instance.\n\t\t */\n\t\tdestroy: function () {\n\t\t\tdocument.DCI18n = undefined;\n\t\t},\n\n\t\t/**\n\t\t * General message loading API This can take a URL string for\n\t\t * the json formatted messages. Example:\n\t\t * load('path/to/all_localizations.json');\n\t\t *\n\t\t * To load a localization file for a locale:\n\t\t * \n\t\t * load('path/to/de-messages.json', 'de' );\n\t\t * \n\t\t *\n\t\t * To load a localization file from a directory:\n\t\t * \n\t\t * load('path/to/i18n/directory', 'de' );\n\t\t * \n\t\t * The above method has the advantage of fallback resolution.\n\t\t * ie, it will automatically load the fallback locales for de.\n\t\t * For most usecases, this is the recommended method.\n\t\t * It is optional to have trailing slash at end.\n\t\t *\n\t\t * A data object containing message key- message translation mappings\n\t\t * can also be passed. Example:\n\t\t * \n\t\t * load( { 'hello' : 'Hello' }, optionalLocale );\n\t\t * \n\t\t *\n\t\t * A source map containing key-value pair of languagename and locations\n\t\t * can also be passed. Example:\n\t\t * \n\t\t * load( {\n\t\t * bn: 'i18n/bn.json',\n\t\t * he: 'i18n/he.json',\n\t\t * en: 'i18n/en.json'\n\t\t * } )\n\t\t * \n\t\t *\n\t\t * If the data argument is null/undefined/false,\n\t\t * all cached messages for the i18n instance will get reset.\n\t\t *\n\t\t * @param {string|Object} source\n\t\t * @param {string} locale Language tag\n\t\t * @return {jQuery.Promise}\n\t\t */\n\t\tload: function (source, locale) {\n\t\t\tvar fallbackLocales, locIndex, fallbackLocale, sourceMap = {};\n\t\t\tif (!source && !locale) {\n\t\t\t\tsource = 'i18n/' + $.i18n().locale + '.json';\n\t\t\t\tlocale = $.i18n().locale;\n\t\t\t}\n\t\t\tif (typeof source === 'string' &&\n\t\t\t\t// source extension should be json, but can have query params after that.\n\t\t\t\tsource.split('?')[0].split('.').pop() !== 'json'\n\t\t\t) {\n\t\t\t\t// Load specified locale then check for fallbacks when directory is\n\t\t\t\t// specified in load()\n\t\t\t\tsourceMap[locale] = source + '/' + locale + '.json';\n\t\t\t\tfallbackLocales = ($.i18n.fallbacks[locale] || [])\n\t\t\t\t\t.concat(this.options.fallbackLocale);\n\t\t\t\tfor (locIndex = 0; locIndex < fallbackLocales.length; locIndex++) {\n\t\t\t\t\tfallbackLocale = fallbackLocales[locIndex];\n\t\t\t\t\tsourceMap[fallbackLocale] = source + '/' + fallbackLocale + '.json';\n\t\t\t\t}\n\t\t\t\treturn this.load(sourceMap);\n\t\t\t} else {\n\t\t\t\treturn this.messageStore.load(source, locale);\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Does parameter and magic word substitution.\n\t\t *\n\t\t * @param {string} key Message key\n\t\t * @param {Array} parameters Message parameters\n\t\t * @return {string}\n\t\t */\n\t\tparse: function (key, parameters) {\n\t\t\tvar message = this.localize(key);\n\t\t\t// FIXME: This changes the state of the I18N object,\n\t\t\t// should probably not change the 'this.parser' but just\n\t\t\t// pass it to the parser.\n\t\t\tthis.parser.language = $.i18n.languages[$.i18n().locale] || $.i18n.languages['default'];\n\t\t\tif (message === '') {\n\t\t\t\tmessage = key;\n\t\t\t}\n\t\t\treturn this.parser.parse(message, parameters);\n\t\t}\n\t};\n\n\t/**\n\t * Process a message from the DCI18n.i18n instance\n\t * for the current document, stored in jQuery.data(document).\n\t *\n\t * @param {string} key Key of the message.\n\t * @param {string} param1 [param...] Variadic list of parameters for {key}.\n\t * @return {string|$.i18n} Parsed message, or if no key was given\n\t * the instance of $.i18n is returned.\n\t */\n\t$.i18n = function (key, param1) {\n\t\tvar parameters,\n\t\t\ti18n = document.DCI18n,\n\t\t\toptions = typeof key === 'object' && key;\n\n\t\t// If the locale option for this call is different then the setup so far,\n\t\t// update it automatically. This doesn't just change the context for this\n\t\t// call but for all future call as well.\n\t\t// If there is no i18n setup yet, don't do this. It will be taken care of\n\t\t// by the `new I18N` construction below.\n\t\t// NOTE: It should only change language for this one call.\n\t\t// Then cache instances of I18N somewhere.\n\t\tif (options && options.locale && i18n && i18n.locale !== options.locale) {\n\t\t\ti18n.locale = options.locale;\n\t\t}\n\n\t\tif (!i18n) {\n\t\t\ti18n = new I18N(options);\n\t\t\tdocument.DCI18n = i18n;\n\t\t}\n\n\t\tif (typeof key === 'string') {\n\t\t\tif (param1 !== undefined) {\n\t\t\t\tparameters = slice.call(arguments, 1);\n\t\t\t} else {\n\t\t\t\tparameters = [];\n\t\t\t}\n\n\t\t\treturn i18n.parse(key, parameters);\n\t\t} else {\n\t\t\t// FIXME: remove this feature/bug.\n\t\t\treturn i18n;\n\t\t}\n\t};\n\n\tElement.prototype.i18n = function () {\n\t\tvar i18n = document.DCI18n;\n\n\t\tif (!i18n) {\n\t\t\ti18n = new I18N();\n\t\t\tdocument.DCI18n = i18n;\n\t\t}\n\n\t\tvar messageKey = this.dataset.i18n,\n\t\t\tlBracket, rBracket, type, key;\n\n\t\tif (messageKey) {\n\t\t\tlBracket = messageKey.indexOf('[');\n\t\t\trBracket = messageKey.indexOf(']');\n\t\t\tif (lBracket !== -1 && rBracket !== -1 && lBracket < rBracket) {\n\t\t\t\ttype = messageKey.slice(lBracket + 1, rBracket);\n\t\t\t\tkey = messageKey.slice(rBracket + 1);\n\t\t\t\tif (type === 'html') {\n\t\t\t\t\tthis.innerHTML = i18n.parse(key);\n\t\t\t\t} else {\n\t\t\t\t\tthis.setAttribute(type, i18n.parse(key));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.textContent = i18n.parse(messageKey);\n\t\t\t}\n\t\t} else {\n\t\t\tvar elements = this.querySelectorAll('[data-i18n]');\n\t\t\tfor (let i = 0; i < elements.length; ++i) {\n\t\t\t\telements[i].i18n();\n\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getDefaultLocale() {\n\t\tvar locale = document.querySelector(\"html\").getAttribute(\"lang\");\n\t\tif (!locale) {\n\t\t\tlocale = navigator.language || navigator.userLanguage || '';\n\t\t}\n\t\treturn locale;\n\t}\n\n\t$.i18n.languages = {};\n\t$.i18n.messageStore = $.i18n.messageStore || {};\n\t$.i18n.parser = {\n\t\t// The default parser only handles variable substitution\n\t\tparse: function (message, parameters) {\n\t\t\treturn message.replace(/\\$(\\d+)/g, function (str, match) {\n\t\t\t\tvar index = parseInt(match, 10) - 1;\n\t\t\t\treturn parameters[index] !== undefined ? parameters[index] : '$' + match;\n\t\t\t});\n\t\t},\n\t\temitter: {}\n\t};\n\t$.i18n.fallbacks = {};\n\t$.i18n.debug = false;\n\t$.i18n.log = function ( /* arguments */) {\n\t\tif (window.console && $.i18n.debug) {\n\t\t\twindow.console.log.apply(window.console, arguments);\n\t\t}\n\t};\n\t/* Static members */\n\tI18N.defaults = {\n\t\tlocale: getDefaultLocale(),\n\t\tfallbackLocale: 'en',\n\t\tparser: $.i18n.parser,\n\t\tmessageStore: $.i18n.messageStore\n\t};\n\n\t// Expose constructor\n\t$.i18n.constructor = I18N;\n}(DC));\n","/*!\n * jQuery Internationalization library - Message Store\n *\n * Copyright (C) 2012 Santhosh Thottingal\n *\n * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do anything special to\n * choose one license or the other and you don't have to notify anyone which license you are using.\n * You are free to use UniversalLanguageSelector in commercial projects as long as the copyright\n * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\tvar MessageStore = function () {\n\t\tthis.messages = {};\n\t\tthis.sources = {};\n\t};\n\n\tfunction jsonMessageLoader(url) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tfetch(url)\n\t\t\t\t.then(response => response.json())\n\t\t\t\t.then(response => resolve(response))\n\t\t\t\t.catch(function (exception) {\n\t\t\t\t\t$.i18n.log('Error in loading messages from ' + url + ' Exception: ' + exception);\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * See https://github.com/wikimedia/jquery.i18n/wiki/Specification#wiki-Message_File_Loading\n\t */\n\tMessageStore.prototype = {\n\n\t\t/**\n\t\t * General message loading API This can take a URL string for\n\t\t * the json formatted messages.\n\t\t * load('path/to/all_localizations.json');\n\t\t *\n\t\t * This can also load a localization file for a locale \n\t\t * load( 'path/to/de-messages.json', 'de' );\n\t\t * \n\t\t * A data object containing message key- message translation mappings\n\t\t * can also be passed Eg:\n\t\t * \n\t\t * load( { 'hello' : 'Hello' }, optionalLocale );\n\t\t * If the data argument is\n\t\t * null/undefined/false,\n\t\t * all cached messages for the i18n instance will get reset.\n\t\t *\n\t\t * @param {string|Object} source\n\t\t * @param {string} locale Language tag\n\t\t * @return {jQuery.Promise}\n\t\t */\n\t\tload: function (source, locale) {\n\t\t\tvar key = null,\n\t\t\t\tdeferreds = [],\n\t\t\t\tmessageStore = this;\n\n\t\t\tif (typeof source === 'string') {\n\t\t\t\t// This is a URL to the messages file.\n\t\t\t\t$.i18n.log('Loading messages from: ' + source);\n\t\t\t\treturn jsonMessageLoader(source)\n\t\t\t\t\t.then(function (localization) {\n\t\t\t\t\t\treturn messageStore.load(localization, locale);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (locale) {\n\t\t\t\t// source is an key-value pair of messages for given locale\n\t\t\t\tmessageStore.set(locale, source);\n\n\t\t\t\treturn new Promise((resolve, reject) => resolve());\n\t\t\t} else {\n\t\t\t\t// source is a key-value pair of locales and their source\n\t\t\t\tfor (key in source) {\n\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\t\t\t\tlocale = key;\n\t\t\t\t\t\t// No {locale} given, assume data is a group of languages,\n\t\t\t\t\t\t// call this function again for each language.\n\t\t\t\t\t\tdeferreds.push(messageStore.load(source[key], locale));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn Promise.all(deferreds);\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Set messages to the given locale.\n\t\t * If locale exists, add messages to the locale.\n\t\t *\n\t\t * @param {string} locale\n\t\t * @param {Object} messages\n\t\t */\n\t\tset: function (locale, messages) {\n\t\t\tif (!this.messages[locale]) {\n\t\t\t\tthis.messages[locale] = messages;\n\t\t\t} else {\n\t\t\t\tthis.messages[locale] = $.extend(this.messages[locale], messages);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t *\n\t\t * @param {string} locale\n\t\t * @param {string} messageKey\n\t\t * @return {boolean}\n\t\t */\n\t\tget: function (locale, messageKey) {\n\t\t\treturn this.messages[locale] && this.messages[locale][messageKey];\n\t\t}\n\t};\n\n\t$.extend($.i18n.messageStore, new MessageStore());\n}(DC));\n","const { default: DC } = require(\"../../DC\");\n\n/* global pluralRuleParser */\n(function ($) {\n\n\t// jscs:disable\n\tvar language = {\n\t\t// CLDR plural rules generated using\n\t\t// libs/CLDRPluralRuleParser/tools/PluralXML2JSON.html\n\t\tpluralRules: {\n\t\t\tak: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tam: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tar: {\n\t\t\t\tzero: 'n = 0',\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2',\n\t\t\t\tfew: 'n % 100 = 3..10',\n\t\t\t\tmany: 'n % 100 = 11..99'\n\t\t\t},\n\t\t\tars: {\n\t\t\t\tzero: 'n = 0',\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2',\n\t\t\t\tfew: 'n % 100 = 3..10',\n\t\t\t\tmany: 'n % 100 = 11..99'\n\t\t\t},\n\t\t\tas: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tbe: {\n\t\t\t\tone: 'n % 10 = 1 and n % 100 != 11',\n\t\t\t\tfew: 'n % 10 = 2..4 and n % 100 != 12..14',\n\t\t\t\tmany: 'n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14'\n\t\t\t},\n\t\t\tbh: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tbn: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tbr: {\n\t\t\t\tone: 'n % 10 = 1 and n % 100 != 11,71,91',\n\t\t\t\ttwo: 'n % 10 = 2 and n % 100 != 12,72,92',\n\t\t\t\tfew: 'n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99',\n\t\t\t\tmany: 'n != 0 and n % 1000000 = 0'\n\t\t\t},\n\t\t\tbs: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'\n\t\t\t},\n\t\t\tcs: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\tfew: 'i = 2..4 and v = 0',\n\t\t\t\tmany: 'v != 0'\n\t\t\t},\n\t\t\tcy: {\n\t\t\t\tzero: 'n = 0',\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2',\n\t\t\t\tfew: 'n = 3',\n\t\t\t\tmany: 'n = 6'\n\t\t\t},\n\t\t\tda: {\n\t\t\t\tone: 'n = 1 or t != 0 and i = 0,1'\n\t\t\t},\n\t\t\tdsb: {\n\t\t\t\tone: 'v = 0 and i % 100 = 1 or f % 100 = 1',\n\t\t\t\ttwo: 'v = 0 and i % 100 = 2 or f % 100 = 2',\n\t\t\t\tfew: 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'\n\t\t\t},\n\t\t\tfa: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tff: {\n\t\t\t\tone: 'i = 0,1'\n\t\t\t},\n\t\t\tfil: {\n\t\t\t\tone: 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'\n\t\t\t},\n\t\t\tfr: {\n\t\t\t\tone: 'i = 0,1'\n\t\t\t},\n\t\t\tga: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2',\n\t\t\t\tfew: 'n = 3..6',\n\t\t\t\tmany: 'n = 7..10'\n\t\t\t},\n\t\t\tgd: {\n\t\t\t\tone: 'n = 1,11',\n\t\t\t\ttwo: 'n = 2,12',\n\t\t\t\tfew: 'n = 3..10,13..19'\n\t\t\t},\n\t\t\tgu: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tguw: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tgv: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1',\n\t\t\t\ttwo: 'v = 0 and i % 10 = 2',\n\t\t\t\tfew: 'v = 0 and i % 100 = 0,20,40,60,80',\n\t\t\t\tmany: 'v != 0'\n\t\t\t},\n\t\t\the: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\ttwo: 'i = 2 and v = 0',\n\t\t\t\tmany: 'v = 0 and n != 0..10 and n % 10 = 0'\n\t\t\t},\n\t\t\thi: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\thr: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'\n\t\t\t},\n\t\t\thsb: {\n\t\t\t\tone: 'v = 0 and i % 100 = 1 or f % 100 = 1',\n\t\t\t\ttwo: 'v = 0 and i % 100 = 2 or f % 100 = 2',\n\t\t\t\tfew: 'v = 0 and i % 100 = 3..4 or f % 100 = 3..4'\n\t\t\t},\n\t\t\thy: {\n\t\t\t\tone: 'i = 0,1'\n\t\t\t},\n\t\t\tis: {\n\t\t\t\tone: 't = 0 and i % 10 = 1 and i % 100 != 11 or t != 0'\n\t\t\t},\n\t\t\tiu: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tiw: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\ttwo: 'i = 2 and v = 0',\n\t\t\t\tmany: 'v = 0 and n != 0..10 and n % 10 = 0'\n\t\t\t},\n\t\t\tkab: {\n\t\t\t\tone: 'i = 0,1'\n\t\t\t},\n\t\t\tkn: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tkw: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tlag: {\n\t\t\t\tzero: 'n = 0',\n\t\t\t\tone: 'i = 0,1 and n != 0'\n\t\t\t},\n\t\t\tln: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tlt: {\n\t\t\t\tone: 'n % 10 = 1 and n % 100 != 11..19',\n\t\t\t\tfew: 'n % 10 = 2..9 and n % 100 != 11..19',\n\t\t\t\tmany: 'f != 0'\n\t\t\t},\n\t\t\tlv: {\n\t\t\t\tzero: 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',\n\t\t\t\tone: 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'\n\t\t\t},\n\t\t\tmg: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tmk: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 or f % 10 = 1'\n\t\t\t},\n\t\t\tmo: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\tfew: 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'\n\t\t\t},\n\t\t\tmr: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t},\n\t\t\tmt: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\tfew: 'n = 0 or n % 100 = 2..10',\n\t\t\t\tmany: 'n % 100 = 11..19'\n\t\t\t},\n\t\t\tnaq: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tnso: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tpa: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tpl: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',\n\t\t\t\tmany: 'v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14'\n\t\t\t},\n\t\t\tprg: {\n\t\t\t\tzero: 'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19',\n\t\t\t\tone: 'n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1'\n\t\t\t},\n\t\t\tpt: {\n\t\t\t\tone: 'i = 0..1'\n\t\t\t},\n\t\t\tro: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\tfew: 'v != 0 or n = 0 or n != 1 and n % 100 = 1..19'\n\t\t\t},\n\t\t\tru: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',\n\t\t\t\tmany: 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'\n\t\t\t},\n\t\t\tse: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsh: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'\n\t\t\t},\n\t\t\tshi: {\n\t\t\t\tone: 'i = 0 or n = 1',\n\t\t\t\tfew: 'n = 2..10'\n\t\t\t},\n\t\t\tsi: {\n\t\t\t\tone: 'n = 0,1 or i = 0 and f = 1'\n\t\t\t},\n\t\t\tsk: {\n\t\t\t\tone: 'i = 1 and v = 0',\n\t\t\t\tfew: 'i = 2..4 and v = 0',\n\t\t\t\tmany: 'v != 0'\n\t\t\t},\n\t\t\tsl: {\n\t\t\t\tone: 'v = 0 and i % 100 = 1',\n\t\t\t\ttwo: 'v = 0 and i % 100 = 2',\n\t\t\t\tfew: 'v = 0 and i % 100 = 3..4 or v != 0'\n\t\t\t},\n\t\t\tsma: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsmi: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsmj: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsmn: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsms: {\n\t\t\t\tone: 'n = 1',\n\t\t\t\ttwo: 'n = 2'\n\t\t\t},\n\t\t\tsr: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14'\n\t\t\t},\n\t\t\tti: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\ttl: {\n\t\t\t\tone: 'v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9'\n\t\t\t},\n\t\t\ttzm: {\n\t\t\t\tone: 'n = 0..1 or n = 11..99'\n\t\t\t},\n\t\t\tuk: {\n\t\t\t\tone: 'v = 0 and i % 10 = 1 and i % 100 != 11',\n\t\t\t\tfew: 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14',\n\t\t\t\tmany: 'v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14'\n\t\t\t},\n\t\t\twa: {\n\t\t\t\tone: 'n = 0..1'\n\t\t\t},\n\t\t\tzu: {\n\t\t\t\tone: 'i = 0 or n = 1'\n\t\t\t}\n\t\t},\n\t\t// jscs:enable\n\n\t\t/**\n\t\t * Plural form transformations, needed for some languages.\n\t\t *\n\t\t * @param {integer} count\n\t\t * Non-localized quantifier\n\t\t * @param {Array} forms\n\t\t * List of plural forms\n\t\t * @return {string} Correct form for quantifier in this language\n\t\t */\n\t\tconvertPlural: function (count, forms) {\n\t\t\tvar pluralRules,\n\t\t\t\tpluralFormIndex,\n\t\t\t\tindex,\n\t\t\t\texplicitPluralPattern = /\\d+=/i,\n\t\t\t\tformCount,\n\t\t\t\tform;\n\n\t\t\tif (!forms || forms.length === 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\t// Handle for Explicit 0= & 1= values\n\t\t\tfor (index = 0; index < forms.length; index++) {\n\t\t\t\tform = forms[index];\n\t\t\t\tif (explicitPluralPattern.test(form)) {\n\t\t\t\t\tformCount = parseInt(form.slice(0, form.indexOf('=')), 10);\n\t\t\t\t\tif (formCount === count) {\n\t\t\t\t\t\treturn (form.slice(form.indexOf('=') + 1));\n\t\t\t\t\t}\n\t\t\t\t\tforms[index] = undefined;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tforms = forms.map(function (form) {\n\t\t\t\tif (form !== undefined) {\n\t\t\t\t\treturn form;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t});\n\n\t\t\tpluralRules = this.pluralRules[$.i18n().locale];\n\n\t\t\tif (!pluralRules) {\n\t\t\t\t// default fallback.\n\t\t\t\treturn (count === 1) ? forms[0] : forms[1];\n\t\t\t}\n\n\t\t\tpluralFormIndex = this.getPluralForm(count, pluralRules);\n\t\t\tpluralFormIndex = Math.min(pluralFormIndex, forms.length - 1);\n\n\t\t\treturn forms[pluralFormIndex];\n\t\t},\n\n\t\t/**\n\t\t * For the number, get the plural for index\n\t\t *\n\t\t * @param {integer} number\n\t\t * @param {Object} pluralRules\n\t\t * @return {integer} plural form index\n\t\t */\n\t\tgetPluralForm: function (number, pluralRules) {\n\t\t\tvar i,\n\t\t\t\tpluralForms = ['zero', 'one', 'two', 'few', 'many', 'other'],\n\t\t\t\tpluralFormIndex = 0;\n\n\t\t\tfor (i = 0; i < pluralForms.length; i++) {\n\t\t\t\tif (pluralRules[pluralForms[i]]) {\n\t\t\t\t\tif (pluralRuleParser(pluralRules[pluralForms[i]], number)) {\n\t\t\t\t\t\treturn pluralFormIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\tpluralFormIndex++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn pluralFormIndex;\n\t\t},\n\n\t\t/**\n\t\t * Converts a number using digitTransformTable.\n\t\t *\n\t\t * @param {number} num Value to be converted\n\t\t * @param {boolean} integer Convert the return value to an integer\n\t\t * @return {string} The number converted into a String.\n\t\t */\n\t\tconvertNumber: function (num, integer) {\n\t\t\tvar tmp, item, i,\n\t\t\t\ttransformTable, numberString, convertedNumber;\n\n\t\t\t// Set the target Transform table:\n\t\t\ttransformTable = this.digitTransformTable($.i18n().locale);\n\t\t\tnumberString = String(num);\n\t\t\tconvertedNumber = '';\n\n\t\t\tif (!transformTable) {\n\t\t\t\treturn num;\n\t\t\t}\n\n\t\t\t// Check if the restore to Latin number flag is set:\n\t\t\tif (integer) {\n\t\t\t\tif (parseFloat(num, 10) === num) {\n\t\t\t\t\treturn num;\n\t\t\t\t}\n\n\t\t\t\ttmp = [];\n\n\t\t\t\tfor (item in transformTable) {\n\t\t\t\t\ttmp[transformTable[item]] = item;\n\t\t\t\t}\n\n\t\t\t\ttransformTable = tmp;\n\t\t\t}\n\n\t\t\tfor (i = 0; i < numberString.length; i++) {\n\t\t\t\tif (transformTable[numberString[i]]) {\n\t\t\t\t\tconvertedNumber += transformTable[numberString[i]];\n\t\t\t\t} else {\n\t\t\t\t\tconvertedNumber += numberString[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn integer ? parseFloat(convertedNumber, 10) : convertedNumber;\n\t\t},\n\n\t\t/**\n\t\t * Grammatical transformations, needed for inflected languages.\n\t\t * Invoked by putting {{grammar:form|word}} in a message.\n\t\t * Override this method for languages that need special grammar rules\n\t\t * applied dynamically.\n\t\t *\n\t\t * @param {string} word\n\t\t * @param {string} form\n\t\t * @return {string}\n\t\t */\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconvertGrammar: function (word, form) {\n\t\t\treturn word;\n\t\t},\n\n\t\t/**\n\t\t * Provides an alternative text depending on specified gender. Usage\n\t\t * {{gender:[gender|user object]|masculine|feminine|neutral}}. If second\n\t\t * or third parameter are not specified, masculine is used.\n\t\t *\n\t\t * These details may be overriden per language.\n\t\t *\n\t\t * @param {string} gender\n\t\t * male, female, or anything else for neutral.\n\t\t * @param {Array} forms\n\t\t * List of gender forms\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tgender: function (gender, forms) {\n\t\t\tif (!forms || forms.length === 0) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\twhile (forms.length < 2) {\n\t\t\t\tforms.push(forms[forms.length - 1]);\n\t\t\t}\n\n\t\t\tif (gender === 'male') {\n\t\t\t\treturn forms[0];\n\t\t\t}\n\n\t\t\tif (gender === 'female') {\n\t\t\t\treturn forms[1];\n\t\t\t}\n\n\t\t\treturn (forms.length === 3) ? forms[2] : forms[0];\n\t\t},\n\n\t\t/**\n\t\t * Get the digit transform table for the given language\n\t\t * See http://cldr.unicode.org/translation/numbering-systems\n\t\t *\n\t\t * @param {string} language\n\t\t * @return {Array|boolean} List of digits in the passed language or false\n\t\t * representation, or boolean false if there is no information.\n\t\t */\n\t\tdigitTransformTable: function (language) {\n\t\t\tvar tables = {\n\t\t\t\tar: '٠١٢٣٤٥٦٧٨٩',\n\t\t\t\tfa: '۰۱۲۳۴۵۶۷۸۹',\n\t\t\t\tml: '൦൧൨൩൪൫൬൭൮൯',\n\t\t\t\tkn: '೦೧೨೩೪೫೬೭೮೯',\n\t\t\t\tlo: '໐໑໒໓໔໕໖໗໘໙',\n\t\t\t\tor: '୦୧୨୩୪୫୬୭୮୯',\n\t\t\t\tkh: '០១២៣៤៥៦៧៨៩',\n\t\t\t\tnqo: '߀߁߂߃߄߅߆߇߈߉', // Note that the digits go right to left\n\t\t\t\tpa: '੦੧੨੩੪੫੬੭੮੯',\n\t\t\t\tgu: '૦૧૨૩૪૫૬૭૮૯',\n\t\t\t\thi: '०१२३४५६७८९',\n\t\t\t\tmy: '၀၁၂၃၄၅၆၇၈၉',\n\t\t\t\tta: '௦௧௨௩௪௫௬௭௮௯',\n\t\t\t\tte: '౦౧౨౩౪౫౬౭౮౯',\n\t\t\t\tth: '๐๑๒๓๔๕๖๗๘๙', // FIXME use iso 639 codes\n\t\t\t\tbo: '༠༡༢༣༤༥༦༧༨༩' // FIXME use iso 639 codes\n\t\t\t};\n\n\t\t\tif (!tables[language]) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn tables[language].split('');\n\t\t}\n\t};\n\n\t$.extend($.i18n.languages, {\n\t\tdefault: language\n\t});\n}(DC));\n","/*!\n * jQuery Internationalization library\n *\n * Copyright (C) 2012 Santhosh Thottingal\n *\n * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do anything special to\n * choose one license or the other and you don't have to notify anyone which license you are using.\n * You are free to use UniversalLanguageSelector in commercial projects as long as the copyright\n * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\t$.i18n = $.i18n || {};\n\t$.extend($.i18n.fallbacks, {\n\t\tab: ['ru'],\n\t\tabs: ['id'],\n\t\tace: ['id'],\n\t\tacm: ['ar'],\n\t\tady: ['ady-cyrl'],\n\t\taeb: ['aeb-arab'],\n\t\t'aeb-arab': ['ar'],\n\t\taln: ['sq'],\n\t\t// Not so standard - als is supposed to be Tosk Albanian,\n\t\t// but in Wikipedia it's used for a Germanic language.\n\t\t// Use 'gsw' instead. See T25215\n\t\tals: ['gsw', 'de'],\n\t\talt: ['ru'],\n\t\tami: ['zh-tw', 'zh-hant', 'zh', 'zh-hans'],\n\t\tan: ['es'],\n\t\tanp: ['hi'],\n\t\tarn: ['es'],\n\t\tarq: ['ar'],\n\t\tary: ['ar'],\n\t\tarz: ['ar'],\n\t\tast: ['es'],\n\t\tatj: ['fr'],\n\t\tav: ['ru'],\n\t\tavk: ['fr', 'es', 'ru'],\n\t\tawa: ['hi'],\n\t\tay: ['es'],\n\t\tazb: ['fa'],\n\t\tba: ['ru'],\n\t\tban: ['id'],\n\t\t'ban-bali': ['ban'],\n\t\tbar: ['de'],\n\t\t// Deprecated: Use 'sgs' instead. See T27522\n\t\t'bat-smg': ['sgs', 'lt'],\n\t\tbbc: ['bbc-latn'],\n\t\t'bbc-latn': ['id'],\n\t\tbcc: ['fa'],\n\t\tbci: ['fr'],\n\t\tbdr: ['ms'],\n\t\t'be-tarask': ['be'],\n\t\t// Deprecated: Use 'be-tarask' instead. See T11823\n\t\t'be-x-old': ['be-tarask', 'be'],\n\t\tbew: ['id'],\n\t\tbgn: ['fa'],\n\t\tbh: ['bho'],\n\t\tbjn: ['id'],\n\t\tblk: ['my'],\n\t\tbm: ['fr'],\n\t\tbpy: ['bn'],\n\t\tbqi: ['fa'],\n\t\tbtm: ['id'],\n\t\tbug: ['id'],\n\t\tbxr: ['ru'],\n\t\tca: ['oc'],\n\t\t'cbk-zam': ['es'],\n\t\tcdo: ['nan', 'zh-hant', 'zh', 'zh-hans'],\n\t\tce: ['ru'],\n\t\tco: ['it'],\n\t\tcrh: ['crh-latn'],\n\t\t'crh-cyrl': ['ru'],\n\t\t'crh-ro': ['ro'],\n\t\tcs: ['sk'],\n\t\tcsb: ['pl'],\n\t\tcv: ['ru'],\n\t\t'de-at': ['de'],\n\t\t'de-ch': ['de'],\n\t\t'de-formal': ['de'],\n\t\tdsb: ['hsb', 'de'],\n\t\tdtp: ['ms'],\n\t\tdty: ['ne'],\n\t\tegl: ['it'],\n\t\teml: ['it'],\n\t\t'es-formal': ['es'],\n\t\text: ['es'],\n\t\tfit: ['fi'],\n\t\t// Deprecated: Use 'vro' instead. See T31186\n\t\t'fiu-vro': ['vro', 'et'],\n\t\tfon: ['fr'],\n\t\tfrc: ['fr'],\n\t\tfrp: ['fr'],\n\t\tfrr: ['de'],\n\t\tfur: ['it'],\n\t\tgag: ['tr'],\n\t\tgan: ['gan-hant', 'gan-hans', 'zh-hant', 'zh', 'zh-hans'],\n\t\t'gan-hans': ['gan', 'gan-hant', 'zh-hans', 'zh', 'zh-hant'],\n\t\t'gan-hant': ['gan', 'gan-hans', 'zh-hant', 'zh', 'zh-hans'],\n\t\tgcr: ['fr'],\n\t\tgl: ['pt'],\n\t\tgld: ['ru'],\n\t\tglk: ['fa'],\n\t\tgn: ['es'],\n\t\tgom: ['gom-deva', 'gom-latn'],\n\t\t'gom-deva': ['gom-latn'],\n\t\tgor: ['id'],\n\t\tgsw: ['de'],\n\t\tguc: ['es'],\n\t\thak: ['zh-hant', 'zh', 'zh-hans'],\n\t\thif: ['hif-latn'],\n\t\thrx: ['de'],\n\t\thsb: ['dsb', 'de'],\n\t\thsn: ['zh-cn', 'zh-hans', 'zh', 'zh-hant'],\n\t\tht: ['fr'],\n\t\t'hu-formal': ['hu'],\n\t\thyw: ['hy'],\n\t\tii: ['zh-cn', 'zh-hans', 'zh', 'zh-hant'],\n\t\t'ike-cans': ['iu'],\n\t\t'ike-latn': ['iu'],\n\t\tinh: ['ru'],\n\t\tio: ['eo'],\n\t\tiu: ['ike-cans'],\n\t\tjut: ['da'],\n\t\tjv: ['id'],\n\t\tkaa: ['kk-latn', 'kk-cyrl'],\n\t\tkab: ['fr'],\n\t\tkbd: ['kbd-cyrl'],\n\t\tkbp: ['fr'],\n\t\tkea: ['pt'],\n\t\tkhw: ['ur'],\n\t\tkiu: ['tr'],\n\t\tkjh: ['ru'],\n\t\tkjp: ['my'],\n\t\tkk: ['kk-cyrl'],\n\t\t'kk-arab': ['kk', 'kk-cyrl'],\n\t\t'kk-cn': ['kk-arab', 'kk', 'kk-cyrl'],\n\t\t'kk-cyrl': ['kk'],\n\t\t'kk-kz': ['kk-cyrl', 'kk'],\n\t\t'kk-latn': ['kk', 'kk-cyrl'],\n\t\t'kk-tr': ['kk-latn', 'kk', 'kk-cyrl'],\n\t\tkl: ['da'],\n\t\t'ko-kp': ['ko'],\n\t\tkoi: ['ru'],\n\t\tkrc: ['ru'],\n\t\tkrl: ['fi'],\n\t\tks: ['ks-arab'],\n\t\tksh: ['de'],\n\t\tksw: ['my'],\n\t\tku: ['ku-latn'],\n\t\t'ku-arab': ['ku', 'ku-latn', 'ckb'],\n\t\t'ku-latn': ['ku'],\n\t\tkum: ['ru'],\n\t\tkv: ['ru'],\n\t\tlad: ['es'],\n\t\tlb: ['de'],\n\t\tlbe: ['ru'],\n\t\tlez: ['ru', 'az'],\n\t\tli: ['nl'],\n\t\tlij: ['it'],\n\t\tliv: ['et'],\n\t\tlki: ['fa'],\n\t\tlld: ['it', 'rm', 'fur'],\n\t\tlmo: ['pms', 'eml', 'lij', 'vec', 'it'],\n\t\tln: ['fr'],\n\t\tlrc: ['fa'],\n\t\tltg: ['lv'],\n\t\tluz: ['fa'],\n\t\tlzh: ['zh-hant', 'zh', 'zh-hans'],\n\t\tlzz: ['tr'],\n\t\tmad: ['id'],\n\t\tmag: ['hi'],\n\t\tmai: ['hi'],\n\t\t'map-bms': ['jv', 'id'],\n\t\tmdf: ['myv', 'ru'],\n\t\tmg: ['fr'],\n\t\tmhr: ['mrj', 'ru'],\n\t\tmin: ['id'],\n\t\tmnw: ['my'],\n\t\tmo: ['ro'],\n\t\tmrj: ['mhr', 'ru'],\n\t\t'ms-arab': ['ms'],\n\t\tmwl: ['pt'],\n\t\tmyv: ['mdf', 'ru'],\n\t\tmzn: ['fa'],\n\t\tnah: ['es'],\n\t\tnan: ['cdo', 'zh-hant', 'zh', 'zh-hans'],\n\t\tnap: ['it'],\n\t\tnb: ['no', 'nn'],\n\t\tnds: ['de'],\n\t\t'nds-nl': ['nl'],\n\t\tnia: ['id'],\n\t\t'nl-informal': ['nl'],\n\t\tnn: ['no', 'nb'],\n\t\tno: ['nb'],\n\t\tnrm: ['nrf', 'fr'],\n\t\toc: ['ca', 'fr'],\n\t\tolo: ['fi'],\n\t\tos: ['ru'],\n\t\tpcd: ['fr'],\n\t\tpdc: ['de'],\n\t\tpdt: ['de'],\n\t\tpfl: ['de'],\n\t\tpms: ['it'],\n\t\tpnt: ['el'],\n\t\tpt: ['pt-br'],\n\t\t'pt-br': ['pt'],\n\t\tpwn: ['zh-tw', 'zh-hant', 'zh', 'zh-hans'],\n\t\tqu: ['qug', 'es'],\n\t\tqug: ['qu', 'es'],\n\t\trgn: ['it'],\n\t\trmy: ['ro'],\n\t\t// Deprecated: Use 'rup' instead. See T17988\n\t\t'roa-rup': ['rup', 'ro'],\n\t\t'roa-tara': ['it'],\n\t\trsk: ['sr-cyrl', 'sr-ec'],\n\t\true: ['uk', 'ru'],\n\t\trup: ['ro'],\n\t\truq: ['ruq-latn', 'ro'],\n\t\t'ruq-cyrl': ['mk'],\n\t\t'ruq-latn': ['ro'],\n\t\tsa: ['hi'],\n\t\tsah: ['ru'],\n\t\tscn: ['it'],\n\t\tsdc: ['it'],\n\t\tsdh: ['cbk', 'fa'],\n\t\tse: ['nb', 'fi'],\n\t\t'se-fi': ['se', 'fi', 'sv'],\n\t\t'se-no': ['se', 'nb', 'nn'],\n\t\t'se-se': ['se', 'sv'],\n\t\tses: ['fr'],\n\t\tsg: ['fr'],\n\t\tsgs: ['lt'],\n\t\tsh: ['sh-latn', 'sh-cyrl', 'bs', 'sr-latn', 'sr-el', 'hr'],\n\t\t'sh-cyrl': ['sr-cyrl', 'sr-ec', 'sh', 'sh-latn'],\n\t\t'sh-latn': ['sh', 'sh-cyrl', 'bs', 'sr-latn', 'sr-el', 'hr'],\n\t\tshi: ['shi-latn', 'fr'],\n\t\tshy: ['shy-latn'],\n\t\t'shy-latn': ['fr'],\n\t\tsjd: ['ru'],\n\t\tsk: ['cs'],\n\t\tskr: ['skr-arab'],\n\t\t'skr-arab': ['skr'],\n\t\tsli: ['de'],\n\t\tsma: ['sv', 'nb'],\n\t\tsmn: ['fi'],\n\t\tsr: ['sr-cyrl', 'sr-ec'],\n\t\t'sr-cyrl': ['sr-ec', 'sr'],\n\t\t'sr-ec': ['sr-cyrl', 'sr'],\n\t\t'sr-el': ['sr-latn', 'sr'],\n\t\t'sr-latn': ['sr-el', 'sr'],\n\t\tsrn: ['nl'],\n\t\tsro: ['it'],\n\t\tstq: ['de'],\n\t\tsty: ['ru'],\n\t\tsu: ['id'],\n\t\tszl: ['pl'],\n\t\tszy: ['zh-tw', 'zh-hant', 'zh', 'zh-hans'],\n\t\ttay: ['zh-tw', 'zh-hant', 'zh', 'zh-hans'],\n\t\ttcy: ['kn'],\n\t\ttet: ['pt'],\n\t\ttg: ['tg-cyrl'],\n\t\t'tg-cyrl': ['tg'],\n\t\t'tg-latn': ['tg'],\n\t\ttrv: ['zh-tw', 'zh-hant', 'zh', 'zh-hans'],\n\t\ttt: ['tt-cyrl', 'ru'],\n\t\t'tt-cyrl': ['ru'],\n\t\tty: ['fr'],\n\t\ttyv: ['ru'],\n\t\tudm: ['ru'],\n\t\tug: ['ug-arab'],\n\t\tvec: ['it'],\n\t\tvep: ['et'],\n\t\tvls: ['nl'],\n\t\tvmf: ['de'],\n\t\tvmw: ['pt'],\n\t\tvot: ['fi'],\n\t\tvro: ['et'],\n\t\twa: ['fr'],\n\t\twls: ['fr'],\n\t\two: ['fr'],\n\t\twuu: ['wuu-hans', 'wuu-hant', 'zh-hans', 'zh', 'zh-hant'],\n\t\t'wuu-hans': ['wuu', 'wuu-hant', 'zh-hans', 'zh', 'zh-hant'],\n\t\t'wuu-hant': ['wuu', 'wuu-hans', 'zh-hant', 'zh', 'zh-hans'],\n\t\txal: ['ru'],\n\t\txmf: ['ka'],\n\t\tyi: ['he'],\n\t\tyue: ['yue-hant', 'yue-hans'],\n\t\t'yue-hans': ['yue', 'yue-hant'],\n\t\t'yue-hant': ['yue', 'yue-hans'],\n\t\tza: ['zh-hans', 'zh', 'zh-hant'],\n\t\tzea: ['nl'],\n\t\tzgh: ['kab'],\n\t\tzh: ['zh-hans', 'zh-hant', 'zh-cn', 'zh-tw', 'zh-hk'],\n\t\t// Deprecated: Use 'lzh' instead. See T30443\n\t\t'zh-classical': ['lzh', 'zh-hant', 'zh', 'zh-hans'],\n\t\t'zh-cn': ['zh-hans', 'zh', 'zh-hant'],\n\t\t'zh-hans': ['zh-cn', 'zh', 'zh-hant'],\n\t\t'zh-hant': ['zh-tw', 'zh-hk', 'zh', 'zh-hans'],\n\t\t'zh-hk': ['zh-hant', 'zh-tw', 'zh', 'zh-hans'],\n\t\t// Deprecated: Use 'nan' instead. See T30442\n\t\t'zh-min-nan': ['nan', 'cdo', 'zh-hant', 'zh', 'zh-hans'],\n\t\t'zh-mo': ['zh-hk', 'zh-hant', 'zh-tw', 'zh', 'zh-hans'],\n\t\t'zh-my': ['zh-sg', 'zh-hans', 'zh-cn', 'zh', 'zh-hant'],\n\t\t'zh-sg': ['zh-hans', 'zh-cn', 'zh', 'zh-hant'],\n\t\t'zh-tw': ['zh-hant', 'zh-hk', 'zh', 'zh-hans'],\n\t\t// Deprecated: Use 'yue' instead. See T30441\n\t\t'zh-yue': ['yue', 'yue-hant', 'yue-hans']\n\t});\n}(DC));\n","/*!\n * jQuery Internationalization library\n *\n * Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar\n *\n * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do\n * anything special to choose one license or the other and you don't have to\n * notify anyone which license you are using. You are free to use\n * UniversalLanguageSelector in commercial projects as long as the copyright\n * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\tvar MessageParser = function (options) {\n\t\tthis.options = $.extend({}, $.i18n.parser.defaults, options);\n\t\tthis.language = $.i18n.languages[String.locale] || $.i18n.languages['default'];\n\t\tthis.emitter = $.i18n.parser.emitter;\n\t};\n\n\tMessageParser.prototype = {\n\n\t\tconstructor: MessageParser,\n\n\t\tsimpleParse: function (message, parameters) {\n\t\t\treturn message.replace(/\\$(\\d+)/g, function (str, match) {\n\t\t\t\tvar index = parseInt(match, 10) - 1;\n\n\t\t\t\treturn parameters[index] !== undefined ? parameters[index] : '$' + match;\n\t\t\t});\n\t\t},\n\n\t\tparse: function (message, replacements) {\n\t\t\tif (message.indexOf('{{') < 0) {\n\t\t\t\treturn this.simpleParse(message, replacements);\n\t\t\t}\n\n\t\t\tthis.emitter.language = $.i18n.languages[$.i18n().locale] ||\n\t\t\t\t$.i18n.languages['default'];\n\n\t\t\treturn this.emitter.emit(this.ast(message), replacements);\n\t\t},\n\n\t\tast: function (message) {\n\t\t\tvar pipe, colon, backslash, anyCharacter, dollar, digits, regularLiteral,\n\t\t\t\tregularLiteralWithoutBar, regularLiteralWithoutSpace, escapedOrLiteralWithoutBar,\n\t\t\t\tescapedOrRegularLiteral, templateContents, templateName, openTemplate,\n\t\t\t\tcloseTemplate, expression, paramExpression, result,\n\t\t\t\tpos = 0;\n\n\t\t\t// Try parsers until one works, if none work return null\n\t\t\tfunction choice(parserSyntax) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar i, result;\n\n\t\t\t\t\tfor (i = 0; i < parserSyntax.length; i++) {\n\t\t\t\t\t\tresult = parserSyntax[i]();\n\n\t\t\t\t\t\tif (result !== null) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Try several parserSyntax-es in a row.\n\t\t\t// All must succeed; otherwise, return null.\n\t\t\t// This is the only eager one.\n\t\t\tfunction sequence(parserSyntax) {\n\t\t\t\tvar i, res,\n\t\t\t\t\toriginalPos = pos,\n\t\t\t\t\tresult = [];\n\n\t\t\t\tfor (i = 0; i < parserSyntax.length; i++) {\n\t\t\t\t\tres = parserSyntax[i]();\n\n\t\t\t\t\tif (res === null) {\n\t\t\t\t\t\tpos = originalPos;\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tresult.push(res);\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// Run the same parser over and over until it fails.\n\t\t\t// Must succeed a minimum of n times; otherwise, return null.\n\t\t\tfunction nOrMore(n, p) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar originalPos = pos,\n\t\t\t\t\t\tresult = [],\n\t\t\t\t\t\tparsed = p();\n\n\t\t\t\t\twhile (parsed !== null) {\n\t\t\t\t\t\tresult.push(parsed);\n\t\t\t\t\t\tparsed = p();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (result.length < n) {\n\t\t\t\t\t\tpos = originalPos;\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Helpers -- just make parserSyntax out of simpler JS builtin types\n\n\t\t\tfunction makeStringParser(s) {\n\t\t\t\tvar len = s.length;\n\n\t\t\t\treturn function () {\n\t\t\t\t\tvar result = null;\n\n\t\t\t\t\tif (message.slice(pos, pos + len) === s) {\n\t\t\t\t\t\tresult = s;\n\t\t\t\t\t\tpos += len;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfunction makeRegexParser(regex) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar matches = message.slice(pos).match(regex);\n\n\t\t\t\t\tif (matches === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tpos += matches[0].length;\n\n\t\t\t\t\treturn matches[0];\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tpipe = makeStringParser('|');\n\t\t\tcolon = makeStringParser(':');\n\t\t\tbackslash = makeStringParser('\\\\');\n\t\t\tanyCharacter = makeRegexParser(/^./);\n\t\t\tdollar = makeStringParser('$');\n\t\t\tdigits = makeRegexParser(/^\\d+/);\n\t\t\tregularLiteral = makeRegexParser(/^[^{}[\\]$\\\\]/);\n\t\t\tregularLiteralWithoutBar = makeRegexParser(/^[^{}[\\]$\\\\|]/);\n\t\t\tregularLiteralWithoutSpace = makeRegexParser(/^[^{}[\\]$\\s]/);\n\n\t\t\t// There is a general pattern:\n\t\t\t// parse a thing;\n\t\t\t// if it worked, apply transform,\n\t\t\t// otherwise return null.\n\t\t\t// But using this as a combinator seems to cause problems\n\t\t\t// when combined with nOrMore().\n\t\t\t// May be some scoping issue.\n\t\t\tfunction transform(p, fn) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar result = p();\n\n\t\t\t\t\treturn result === null ? null : fn(result);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Used to define \"literals\" within template parameters. The pipe\n\t\t\t// character is the parameter delimeter, so by default\n\t\t\t// it is not a literal in the parameter\n\t\t\tfunction literalWithoutBar() {\n\t\t\t\tvar result = nOrMore(1, escapedOrLiteralWithoutBar)();\n\n\t\t\t\treturn result === null ? null : result.join('');\n\t\t\t}\n\n\t\t\tfunction literal() {\n\t\t\t\tvar result = nOrMore(1, escapedOrRegularLiteral)();\n\n\t\t\t\treturn result === null ? null : result.join('');\n\t\t\t}\n\n\t\t\tfunction escapedLiteral() {\n\t\t\t\tvar result = sequence([backslash, anyCharacter]);\n\n\t\t\t\treturn result === null ? null : result[1];\n\t\t\t}\n\n\t\t\tchoice([escapedLiteral, regularLiteralWithoutSpace]);\n\t\t\tescapedOrLiteralWithoutBar = choice([escapedLiteral, regularLiteralWithoutBar]);\n\t\t\tescapedOrRegularLiteral = choice([escapedLiteral, regularLiteral]);\n\n\t\t\tfunction replacement() {\n\t\t\t\tvar result = sequence([dollar, digits]);\n\n\t\t\t\tif (result === null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn ['REPLACE', parseInt(result[1], 10) - 1];\n\t\t\t}\n\n\t\t\ttemplateName = transform(\n\t\t\t\t// see $wgLegalTitleChars\n\t\t\t\t// not allowing : due to the need to catch \"PLURAL:$1\"\n\t\t\t\tmakeRegexParser(/^[ !\"$&'()*,./0-9;=?@A-Z^_`a-z~\\x80-\\xFF+-]+/),\n\n\t\t\t\tfunction (result) {\n\t\t\t\t\treturn result.toString();\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tfunction templateParam() {\n\t\t\t\tvar expr,\n\t\t\t\t\tresult = sequence([pipe, nOrMore(0, paramExpression)]);\n\n\t\t\t\tif (result === null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\texpr = result[1];\n\n\t\t\t\t// use a \"CONCAT\" operator if there are multiple nodes,\n\t\t\t\t// otherwise return the first node, raw.\n\t\t\t\treturn expr.length > 1 ? ['CONCAT'].concat(expr) : expr[0];\n\t\t\t}\n\n\t\t\tfunction templateWithReplacement() {\n\t\t\t\tvar result = sequence([templateName, colon, replacement]);\n\n\t\t\t\treturn result === null ? null : [result[0], result[2]];\n\t\t\t}\n\n\t\t\tfunction templateWithOutReplacement() {\n\t\t\t\tvar result = sequence([templateName, colon, paramExpression]);\n\n\t\t\t\treturn result === null ? null : [result[0], result[2]];\n\t\t\t}\n\n\t\t\ttemplateContents = choice([\n\t\t\t\tfunction () {\n\t\t\t\t\tvar res = sequence([\n\t\t\t\t\t\t// templates can have placeholders for dynamic\n\t\t\t\t\t\t// replacement eg: {{PLURAL:$1|one car|$1 cars}}\n\t\t\t\t\t\t// or no placeholders eg:\n\t\t\t\t\t\t// {{GRAMMAR:genitive|{{SITENAME}}}\n\t\t\t\t\t\tchoice([templateWithReplacement, templateWithOutReplacement]),\n\t\t\t\t\t\tnOrMore(0, templateParam)\n\t\t\t\t\t]);\n\n\t\t\t\t\treturn res === null ? null : res[0].concat(res[1]);\n\t\t\t\t},\n\t\t\t\tfunction () {\n\t\t\t\t\tvar res = sequence([templateName, nOrMore(0, templateParam)]);\n\n\t\t\t\t\tif (res === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [res[0]].concat(res[1]);\n\t\t\t\t}\n\t\t\t]);\n\n\t\t\topenTemplate = makeStringParser('{{');\n\t\t\tcloseTemplate = makeStringParser('}}');\n\n\t\t\tfunction template() {\n\t\t\t\tvar result = sequence([openTemplate, templateContents, closeTemplate]);\n\n\t\t\t\treturn result === null ? null : result[1];\n\t\t\t}\n\n\t\t\texpression = choice([template, replacement, literal]);\n\t\t\tparamExpression = choice([template, replacement, literalWithoutBar]);\n\n\t\t\tfunction start() {\n\t\t\t\tvar result = nOrMore(0, expression)();\n\n\t\t\t\tif (result === null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn ['CONCAT'].concat(result);\n\t\t\t}\n\n\t\t\tresult = start();\n\n\t\t\t/*\n\t\t\t * For success, the pos must have gotten to the end of the input\n\t\t\t * and returned a non-null.\n\t\t\t * n.b. This is part of language infrastructure, so we do not throw an\n\t\t\t * internationalizable message.\n\t\t\t */\n\t\t\tif (result === null || pos !== message.length) {\n\t\t\t\tthrow new Error('Parse error at position ' + pos.toString() + ' in input: ' + message);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\n\t};\n\n\t$.extend( $.i18n.parser, new MessageParser() );\n}(DC));\n","/*!\n * jQuery Internationalization library\n *\n * Copyright (C) 2011-2013 Santhosh Thottingal, Neil Kandalgaonkar\n *\n * jquery.i18n is dual licensed GPLv2 or later and MIT. You don't have to do\n * anything special to choose one license or the other and you don't have to\n * notify anyone which license you are using. You are free to use\n * UniversalLanguageSelector in commercial projects as long as the copyright\n * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\tvar MessageParserEmitter = function () {\n\t\tthis.language = $.i18n.languages[String.locale] || $.i18n.languages['default'];\n\t};\n\n\tMessageParserEmitter.prototype = {\n\t\tconstructor: MessageParserEmitter,\n\n\t\t/**\n\t\t * (We put this method definition here, and not in prototype, to make\n\t\t * sure it's not overwritten by any magic.) Walk entire node structure,\n\t\t * applying replacements and template functions when appropriate\n\t\t *\n\t\t * @param {Mixed} node abstract syntax tree (top node or subnode)\n\t\t * @param {Array} replacements for $1, $2, ... $n\n\t\t * @return {Mixed} single-string node or array of nodes suitable for\n\t\t * jQuery appending.\n\t\t */\n\t\temit: function (node, replacements) {\n\t\t\tvar ret, subnodes, operation,\n\t\t\t\tmessageParserEmitter = this;\n\n\t\t\tswitch (typeof node) {\n\t\t\t\tcase 'string':\n\t\t\t\tcase 'number':\n\t\t\t\t\tret = node;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'object':\n\t\t\t\t\t// node is an array of nodes\n\t\t\t\t\tsubnodes = node.slice(1).map(function (n) {\n\t\t\t\t\t\treturn messageParserEmitter.emit(n, replacements);\n\t\t\t\t\t});\n\n\t\t\t\t\toperation = node[0].toLowerCase();\n\n\t\t\t\t\tif (typeof messageParserEmitter[operation] === 'function') {\n\t\t\t\t\t\tret = messageParserEmitter[operation](subnodes, replacements);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow new Error('unknown operation \"' + operation + '\"');\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'undefined':\n\t\t\t\t\t// Parsing the empty string (as an entire expression, or as a\n\t\t\t\t\t// paramExpression in a template) results in undefined\n\t\t\t\t\t// Perhaps a more clever parser can detect this, and return the\n\t\t\t\t\t// empty string? Or is that useful information?\n\t\t\t\t\t// The logical thing is probably to return the empty string here\n\t\t\t\t\t// when we encounter undefined.\n\t\t\t\t\tret = '';\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error('unexpected type in AST: ' + typeof node);\n\t\t\t}\n\n\t\t\treturn ret;\n\t\t},\n\n\t\t/**\n\t\t * Parsing has been applied depth-first we can assume that all nodes\n\t\t * here are single nodes Must return a single node to parents -- a\n\t\t * jQuery with synthetic span However, unwrap any other synthetic spans\n\t\t * in our children and pass them upwards\n\t\t *\n\t\t * @param {Array} nodes Mixed, some single nodes, some arrays of nodes.\n\t\t * @return {string}\n\t\t */\n\t\tconcat: function (nodes) {\n\t\t\tvar result = '';\n\n\t\t\tnodes.forEach(function (i, node) {\n\t\t\t\t// strings, integers, anything else\n\t\t\t\tresult += node;\n\t\t\t});\n\n\t\t\treturn result;\n\t\t},\n\n\t\t/**\n\t\t * Return escaped replacement of correct index, or string if\n\t\t * unavailable. Note that we expect the parsed parameter to be\n\t\t * zero-based. i.e. $1 should have become [ 0 ]. if the specified\n\t\t * parameter is not found return the same string (e.g. \"$99\" ->\n\t\t * parameter 98 -> not found -> return \"$99\" ) TODO throw error if\n\t\t * nodes.length > 1 ?\n\t\t *\n\t\t * @param {Array} nodes One element, integer, n >= 0\n\t\t * @param {Array} replacements for $1, $2, ... $n\n\t\t * @return {string} replacement\n\t\t */\n\t\treplace: function (nodes, replacements) {\n\t\t\tvar index = parseInt(nodes[0], 10);\n\n\t\t\tif (index < replacements.length) {\n\t\t\t\t// replacement is not a string, don't touch!\n\t\t\t\treturn replacements[index];\n\t\t\t} else {\n\t\t\t\t// index not found, fallback to displaying variable\n\t\t\t\treturn '$' + (index + 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Transform parsed structure into pluralization n.b. The first node may\n\t\t * be a non-integer (for instance, a string representing an Arabic\n\t\t * number). So convert it back with the current language's\n\t\t * convertNumber.\n\t\t *\n\t\t * @param {Array} nodes List [ {String|Number}, {String}, {String} ... ]\n\t\t * @return {string} selected pluralized form according to current\n\t\t * language.\n\t\t */\n\t\tplural: function (nodes) {\n\t\t\tvar count = parseFloat(this.language.convertNumber(nodes[0], 10)),\n\t\t\t\tforms = nodes.slice(1);\n\n\t\t\treturn forms.length ? this.language.convertPlural(count, forms) : '';\n\t\t},\n\n\t\t/**\n\t\t * Transform parsed structure into gender Usage\n\t\t * {{gender:gender|masculine|feminine|neutral}}.\n\t\t *\n\t\t * @param {Array} nodes List [ {String}, {String}, {String} , {String} ]\n\t\t * @return {string} selected gender form according to current language\n\t\t */\n\t\tgender: function (nodes) {\n\t\t\tvar gender = nodes[0],\n\t\t\t\tforms = nodes.slice(1);\n\n\t\t\treturn this.language.gender(gender, forms);\n\t\t},\n\n\t\t/**\n\t\t * Transform parsed structure into grammar conversion. Invoked by\n\t\t * putting {{grammar:form|word}} in a message\n\t\t *\n\t\t * @param {Array} nodes List [{Grammar case eg: genitive}, {String word}]\n\t\t * @return {string} selected grammatical form according to current\n\t\t * language.\n\t\t */\n\t\tgrammar: function (nodes) {\n\t\t\tvar form = nodes[0],\n\t\t\t\tword = nodes[1];\n\n\t\t\treturn word && form && this.language.convertGrammar(word, form);\n\t\t}\n\t};\n\t$.extend($.i18n.parser.emitter, new MessageParserEmitter());\n}(DC));\n","/*!\n * BIDI embedding support for jQuery.i18n\n *\n * Copyright (C) 2015, David Chan\n *\n * This code is dual licensed GPLv2 or later and MIT. You don't have to do\n * anything special to choose one license or the other and you don't have to\n * notify anyone which license you are using. You are free to use this code\n * in commercial projects as long as the copyright header is left intact.\n * See files GPL-LICENSE and MIT-LICENSE for details.\n *\n * @licence GNU General Public Licence 2.0 or later\n * @licence MIT License\n */\n\nconst { default: DC } = require(\"../../DC\");\n\n(function ($) {\n\n\tvar strongDirRegExp;\n\n\t/**\n\t * Matches the first strong directionality codepoint:\n\t * - in group 1 if it is LTR\n\t * - in group 2 if it is RTL\n\t * Does not match if there is no strong directionality codepoint.\n\t *\n\t * Generated by UnicodeJS (see tools/strongDir) from the UCD; see\n\t * https://gerrit.wikimedia.org/g/unicodejs .\n\t */\n\t// eslint-disable-next-line no-misleading-character-class\n\tstrongDirRegExp = new RegExp(\n\t\t'(?:' +\n\t\t'(' +\n\t\t'[\\u0041-\\u005a\\u0061-\\u007a\\u00aa\\u00b5\\u00ba\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u02b8\\u02bb-\\u02c1\\u02d0\\u02d1\\u02e0-\\u02e4\\u02ee\\u0370-\\u0373\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0482\\u048a-\\u052f\\u0531-\\u0556\\u0559-\\u055f\\u0561-\\u0587\\u0589\\u0903-\\u0939\\u093b\\u093d-\\u0940\\u0949-\\u094c\\u094e-\\u0950\\u0958-\\u0961\\u0964-\\u0980\\u0982\\u0983\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd-\\u09c0\\u09c7\\u09c8\\u09cb\\u09cc\\u09ce\\u09d7\\u09dc\\u09dd\\u09df-\\u09e1\\u09e6-\\u09f1\\u09f4-\\u09fa\\u0a03\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a3e-\\u0a40\\u0a59-\\u0a5c\\u0a5e\\u0a66-\\u0a6f\\u0a72-\\u0a74\\u0a83\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd-\\u0ac0\\u0ac9\\u0acb\\u0acc\\u0ad0\\u0ae0\\u0ae1\\u0ae6-\\u0af0\\u0af9\\u0b02\\u0b03\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b3e\\u0b40\\u0b47\\u0b48\\u0b4b\\u0b4c\\u0b57\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b66-\\u0b77\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bbe\\u0bbf\\u0bc1\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcc\\u0bd0\\u0bd7\\u0be6-\\u0bf2\\u0c01-\\u0c03\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c41-\\u0c44\\u0c58-\\u0c5a\\u0c60\\u0c61\\u0c66-\\u0c6f\\u0c7f\\u0c82\\u0c83\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd-\\u0cc4\\u0cc6-\\u0cc8\\u0cca\\u0ccb\\u0cd5\\u0cd6\\u0cde\\u0ce0\\u0ce1\\u0ce6-\\u0cef\\u0cf1\\u0cf2\\u0d02\\u0d03\\u0d05-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d-\\u0d40\\u0d46-\\u0d48\\u0d4a-\\u0d4c\\u0d4e\\u0d57\\u0d5f-\\u0d61\\u0d66-\\u0d75\\u0d79-\\u0d7f\\u0d82\\u0d83\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0dcf-\\u0dd1\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2-\\u0df4\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e4f-\\u0e5b\\u0e81\\u0e82\\u0e84\\u0e87\\u0e88\\u0e8a\\u0e8d\\u0e94-\\u0e97\\u0e99-\\u0e9f\\u0ea1-\\u0ea3\\u0ea5\\u0ea7\\u0eaa\\u0eab\\u0ead-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0ed0-\\u0ed9\\u0edc-\\u0edf\\u0f00-\\u0f17\\u0f1a-\\u0f34\\u0f36\\u0f38\\u0f3e-\\u0f47\\u0f49-\\u0f6c\\u0f7f\\u0f85\\u0f88-\\u0f8c\\u0fbe-\\u0fc5\\u0fc7-\\u0fcc\\u0fce-\\u0fda\\u1000-\\u102c\\u1031\\u1038\\u103b\\u103c\\u103f-\\u1057\\u105a-\\u105d\\u1061-\\u1070\\u1075-\\u1081\\u1083\\u1084\\u1087-\\u108c\\u108e-\\u109c\\u109e-\\u10c5\\u10c7\\u10cd\\u10d0-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1360-\\u137c\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u167f\\u1681-\\u169a\\u16a0-\\u16f8\\u1700-\\u170c\\u170e-\\u1711\\u1720-\\u1731\\u1735\\u1736\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17b6\\u17be-\\u17c5\\u17c7\\u17c8\\u17d4-\\u17da\\u17dc\\u17e0-\\u17e9\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1923-\\u1926\\u1929-\\u192b\\u1930\\u1931\\u1933-\\u1938\\u1946-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u19d0-\\u19da\\u1a00-\\u1a16\\u1a19\\u1a1a\\u1a1e-\\u1a55\\u1a57\\u1a61\\u1a63\\u1a64\\u1a6d-\\u1a72\\u1a80-\\u1a89\\u1a90-\\u1a99\\u1aa0-\\u1aad\\u1b04-\\u1b33\\u1b35\\u1b3b\\u1b3d-\\u1b41\\u1b43-\\u1b4b\\u1b50-\\u1b6a\\u1b74-\\u1b7c\\u1b82-\\u1ba1\\u1ba6\\u1ba7\\u1baa\\u1bae-\\u1be5\\u1be7\\u1bea-\\u1bec\\u1bee\\u1bf2\\u1bf3\\u1bfc-\\u1c2b\\u1c34\\u1c35\\u1c3b-\\u1c49\\u1c4d-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u1ce1\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u200e\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2119-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u212d\\u212f-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u214f\\u2160-\\u2188\\u2336-\\u237a\\u2395\\u249c-\\u24e9\\u26ac\\u2800-\\u28ff\\u2c00-\\u2c2e\\u2c30-\\u2c5e\\u2c60-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d70\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u302e\\u302f\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309d-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312d\\u3131-\\u318e\\u3190-\\u31ba\\u31f0-\\u321c\\u3220-\\u324f\\u3260-\\u327b\\u327f-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u32fe\\u3300-\\u3376\\u337b-\\u33dd\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fd5\\ua000-\\ua48c\\ua4d0-\\ua60c\\ua610-\\ua62b\\ua640-\\ua66e\\ua680-\\ua69d\\ua6a0-\\ua6ef\\ua6f2-\\ua6f7\\ua722-\\ua787\\ua789-\\ua7ad\\ua7b0-\\ua7b7\\ua7f7-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua824\\ua827\\ua830-\\ua837\\ua840-\\ua873\\ua880-\\ua8c3\\ua8ce-\\ua8d9\\ua8f2-\\ua8fd\\ua900-\\ua925\\ua92e-\\ua946\\ua952\\ua953\\ua95f-\\ua97c\\ua983-\\ua9b2\\ua9b4\\ua9b5\\ua9ba\\ua9bb\\ua9bd-\\ua9cd\\ua9cf-\\ua9d9\\ua9de-\\ua9e4\\ua9e6-\\ua9fe\\uaa00-\\uaa28\\uaa2f\\uaa30\\uaa33\\uaa34\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa4d\\uaa50-\\uaa59\\uaa5c-\\uaa7b\\uaa7d-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaaeb\\uaaee-\\uaaf5\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab65\\uab70-\\uabe4\\uabe6\\uabe7\\uabe9-\\uabec\\uabf0-\\uabf9\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ue000-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]|\\ud800[\\udc00-\\udc0b]|\\ud800[\\udc0d-\\udc26]|\\ud800[\\udc28-\\udc3a]|\\ud800\\udc3c|\\ud800\\udc3d|\\ud800[\\udc3f-\\udc4d]|\\ud800[\\udc50-\\udc5d]|\\ud800[\\udc80-\\udcfa]|\\ud800\\udd00|\\ud800\\udd02|\\ud800[\\udd07-\\udd33]|\\ud800[\\udd37-\\udd3f]|\\ud800[\\uddd0-\\uddfc]|\\ud800[\\ude80-\\ude9c]|\\ud800[\\udea0-\\uded0]|\\ud800[\\udf00-\\udf23]|\\ud800[\\udf30-\\udf4a]|\\ud800[\\udf50-\\udf75]|\\ud800[\\udf80-\\udf9d]|\\ud800[\\udf9f-\\udfc3]|\\ud800[\\udfc8-\\udfd5]|\\ud801[\\udc00-\\udc9d]|\\ud801[\\udca0-\\udca9]|\\ud801[\\udd00-\\udd27]|\\ud801[\\udd30-\\udd63]|\\ud801\\udd6f|\\ud801[\\ude00-\\udf36]|\\ud801[\\udf40-\\udf55]|\\ud801[\\udf60-\\udf67]|\\ud804\\udc00|\\ud804[\\udc02-\\udc37]|\\ud804[\\udc47-\\udc4d]|\\ud804[\\udc66-\\udc6f]|\\ud804[\\udc82-\\udcb2]|\\ud804\\udcb7|\\ud804\\udcb8|\\ud804[\\udcbb-\\udcc1]|\\ud804[\\udcd0-\\udce8]|\\ud804[\\udcf0-\\udcf9]|\\ud804[\\udd03-\\udd26]|\\ud804\\udd2c|\\ud804[\\udd36-\\udd43]|\\ud804[\\udd50-\\udd72]|\\ud804[\\udd74-\\udd76]|\\ud804[\\udd82-\\uddb5]|\\ud804[\\uddbf-\\uddc9]|\\ud804\\uddcd|\\ud804[\\uddd0-\\udddf]|\\ud804[\\udde1-\\uddf4]|\\ud804[\\ude00-\\ude11]|\\ud804[\\ude13-\\ude2e]|\\ud804\\ude32|\\ud804\\ude33|\\ud804\\ude35|\\ud804[\\ude38-\\ude3d]|\\ud804[\\ude80-\\ude86]|\\ud804\\ude88|\\ud804[\\ude8a-\\ude8d]|\\ud804[\\ude8f-\\ude9d]|\\ud804[\\ude9f-\\udea9]|\\ud804[\\udeb0-\\udede]|\\ud804[\\udee0-\\udee2]|\\ud804[\\udef0-\\udef9]|\\ud804\\udf02|\\ud804\\udf03|\\ud804[\\udf05-\\udf0c]|\\ud804\\udf0f|\\ud804\\udf10|\\ud804[\\udf13-\\udf28]|\\ud804[\\udf2a-\\udf30]|\\ud804\\udf32|\\ud804\\udf33|\\ud804[\\udf35-\\udf39]|\\ud804[\\udf3d-\\udf3f]|\\ud804[\\udf41-\\udf44]|\\ud804\\udf47|\\ud804\\udf48|\\ud804[\\udf4b-\\udf4d]|\\ud804\\udf50|\\ud804\\udf57|\\ud804[\\udf5d-\\udf63]|\\ud805[\\udc80-\\udcb2]|\\ud805\\udcb9|\\ud805[\\udcbb-\\udcbe]|\\ud805\\udcc1|\\ud805[\\udcc4-\\udcc7]|\\ud805[\\udcd0-\\udcd9]|\\ud805[\\udd80-\\uddb1]|\\ud805[\\uddb8-\\uddbb]|\\ud805\\uddbe|\\ud805[\\uddc1-\\udddb]|\\ud805[\\ude00-\\ude32]|\\ud805\\ude3b|\\ud805\\ude3c|\\ud805\\ude3e|\\ud805[\\ude41-\\ude44]|\\ud805[\\ude50-\\ude59]|\\ud805[\\ude80-\\udeaa]|\\ud805\\udeac|\\ud805\\udeae|\\ud805\\udeaf|\\ud805\\udeb6|\\ud805[\\udec0-\\udec9]|\\ud805[\\udf00-\\udf19]|\\ud805\\udf20|\\ud805\\udf21|\\ud805\\udf26|\\ud805[\\udf30-\\udf3f]|\\ud806[\\udca0-\\udcf2]|\\ud806\\udcff|\\ud806[\\udec0-\\udef8]|\\ud808[\\udc00-\\udf99]|\\ud809[\\udc00-\\udc6e]|\\ud809[\\udc70-\\udc74]|\\ud809[\\udc80-\\udd43]|\\ud80c[\\udc00-\\udfff]|\\ud80d[\\udc00-\\udc2e]|\\ud811[\\udc00-\\ude46]|\\ud81a[\\udc00-\\ude38]|\\ud81a[\\ude40-\\ude5e]|\\ud81a[\\ude60-\\ude69]|\\ud81a\\ude6e|\\ud81a\\ude6f|\\ud81a[\\uded0-\\udeed]|\\ud81a\\udef5|\\ud81a[\\udf00-\\udf2f]|\\ud81a[\\udf37-\\udf45]|\\ud81a[\\udf50-\\udf59]|\\ud81a[\\udf5b-\\udf61]|\\ud81a[\\udf63-\\udf77]|\\ud81a[\\udf7d-\\udf8f]|\\ud81b[\\udf00-\\udf44]|\\ud81b[\\udf50-\\udf7e]|\\ud81b[\\udf93-\\udf9f]|\\ud82c\\udc00|\\ud82c\\udc01|\\ud82f[\\udc00-\\udc6a]|\\ud82f[\\udc70-\\udc7c]|\\ud82f[\\udc80-\\udc88]|\\ud82f[\\udc90-\\udc99]|\\ud82f\\udc9c|\\ud82f\\udc9f|\\ud834[\\udc00-\\udcf5]|\\ud834[\\udd00-\\udd26]|\\ud834[\\udd29-\\udd66]|\\ud834[\\udd6a-\\udd72]|\\ud834\\udd83|\\ud834\\udd84|\\ud834[\\udd8c-\\udda9]|\\ud834[\\uddae-\\udde8]|\\ud834[\\udf60-\\udf71]|\\ud835[\\udc00-\\udc54]|\\ud835[\\udc56-\\udc9c]|\\ud835\\udc9e|\\ud835\\udc9f|\\ud835\\udca2|\\ud835\\udca5|\\ud835\\udca6|\\ud835[\\udca9-\\udcac]|\\ud835[\\udcae-\\udcb9]|\\ud835\\udcbb|\\ud835[\\udcbd-\\udcc3]|\\ud835[\\udcc5-\\udd05]|\\ud835[\\udd07-\\udd0a]|\\ud835[\\udd0d-\\udd14]|\\ud835[\\udd16-\\udd1c]|\\ud835[\\udd1e-\\udd39]|\\ud835[\\udd3b-\\udd3e]|\\ud835[\\udd40-\\udd44]|\\ud835\\udd46|\\ud835[\\udd4a-\\udd50]|\\ud835[\\udd52-\\udea5]|\\ud835[\\udea8-\\udeda]|\\ud835[\\udedc-\\udf14]|\\ud835[\\udf16-\\udf4e]|\\ud835[\\udf50-\\udf88]|\\ud835[\\udf8a-\\udfc2]|\\ud835[\\udfc4-\\udfcb]|\\ud836[\\udc00-\\uddff]|\\ud836[\\ude37-\\ude3a]|\\ud836[\\ude6d-\\ude74]|\\ud836[\\ude76-\\ude83]|\\ud836[\\ude85-\\ude8b]|\\ud83c[\\udd10-\\udd2e]|\\ud83c[\\udd30-\\udd69]|\\ud83c[\\udd70-\\udd9a]|\\ud83c[\\udde6-\\ude02]|\\ud83c[\\ude10-\\ude3a]|\\ud83c[\\ude40-\\ude48]|\\ud83c\\ude50|\\ud83c\\ude51|[\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]|\\ud869[\\udf00-\\udfff]|[\\ud86a-\\ud86c][\\udc00-\\udfff]|\\ud86d[\\udc00-\\udf34]|\\ud86d[\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d]|\\ud86e[\\udc20-\\udfff]|[\\ud86f-\\ud872][\\udc00-\\udfff]|\\ud873[\\udc00-\\udea1]|\\ud87e[\\udc00-\\ude1d]|[\\udb80-\\udbbe][\\udc00-\\udfff]|\\udbbf[\\udc00-\\udffd]|[\\udbc0-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udffd]' +\n\t\t')|(' +\n\t\t'[\\u0590\\u05be\\u05c0\\u05c3\\u05c6\\u05c8-\\u05ff\\u07c0-\\u07ea\\u07f4\\u07f5\\u07fa-\\u0815\\u081a\\u0824\\u0828\\u082e-\\u0858\\u085c-\\u089f\\u200f\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb4f\\u0608\\u060b\\u060d\\u061b-\\u064a\\u066d-\\u066f\\u0671-\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u0710\\u0712-\\u072f\\u074b-\\u07a5\\u07b1-\\u07bf\\u08a0-\\u08e2\\ufb50-\\ufd3d\\ufd40-\\ufdcf\\ufdf0-\\ufdfc\\ufdfe\\ufdff\\ufe70-\\ufefe]|\\ud802[\\udc00-\\udd1e]|\\ud802[\\udd20-\\ude00]|\\ud802\\ude04|\\ud802[\\ude07-\\ude0b]|\\ud802[\\ude10-\\ude37]|\\ud802[\\ude3b-\\ude3e]|\\ud802[\\ude40-\\udee4]|\\ud802[\\udee7-\\udf38]|\\ud802[\\udf40-\\udfff]|\\ud803[\\udc00-\\ude5f]|\\ud803[\\ude7f-\\udfff]|\\ud83a[\\udc00-\\udccf]|\\ud83a[\\udcd7-\\udfff]|\\ud83b[\\udc00-\\uddff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\udf00-\\udfff]|\\ud83b[\\ude00-\\udeef]|\\ud83b[\\udef2-\\udeff]' +\n\t\t')' +\n\t\t')'\n\t);\n\n\t/**\n\t * Gets directionality of the first strongly directional codepoint\n\t *\n\t * This is the rule the BIDI algorithm uses to determine the directionality of\n\t * paragraphs ( http://unicode.org/reports/tr9/#The_Paragraph_Level ) and\n\t * FSI isolates ( http://unicode.org/reports/tr9/#Explicit_Directional_Isolates ).\n\t *\n\t * TODO: Does not handle BIDI control characters inside the text.\n\t * TODO: Does not handle unallocated characters.\n\t *\n\t * @param {string} text The text from which to extract initial directionality.\n\t * @return {string} Directionality (either 'ltr' or 'rtl')\n\t */\n\tfunction strongDirFromContent(text) {\n\t\tvar m = text.match(strongDirRegExp);\n\t\tif (!m) {\n\t\t\treturn null;\n\t\t}\n\t\tif (m[2] === undefined) {\n\t\t\treturn 'ltr';\n\t\t}\n\t\treturn 'rtl';\n\t}\n\n\t$.extend($.i18n.parser.emitter, {\n\t\t/**\n\t\t * Wraps argument with unicode control characters for directionality safety\n\t\t *\n\t\t * This solves the problem where directionality-neutral characters at the edge of\n\t\t * the argument string get interpreted with the wrong directionality from the\n\t\t * enclosing context, giving renderings that look corrupted like \"(Ben_(WMF\".\n\t\t *\n\t\t * The wrapping is LRE...PDF or RLE...PDF, depending on the detected\n\t\t * directionality of the argument string, using the BIDI algorithm's own \"First\n\t\t * strong directional codepoint\" rule. Essentially, this works round the fact that\n\t\t * there is no embedding equivalent of U+2068 FSI (isolation with heuristic\n\t\t * direction inference). The latter is cleaner but still not widely supported.\n\t\t *\n\t\t * @param {string[]} nodes The text nodes from which to take the first item.\n\t\t * @return {string} Wrapped String of content as needed.\n\t\t */\n\t\tbidi: function (nodes) {\n\t\t\tvar dir = strongDirFromContent(nodes[0]);\n\t\t\tif (dir === 'ltr') {\n\t\t\t\t// Wrap in LEFT-TO-RIGHT EMBEDDING ... POP DIRECTIONAL FORMATTING\n\t\t\t\treturn '\\u202A' + nodes[0] + '\\u202C';\n\t\t\t}\n\t\t\tif (dir === 'rtl') {\n\t\t\t\t// Wrap in RIGHT-TO-LEFT EMBEDDING ... POP DIRECTIONAL FORMATTING\n\t\t\t\treturn '\\u202B' + nodes[0] + '\\u202C';\n\t\t\t}\n\t\t\t// No strong directionality: do not wrap\n\t\t\treturn nodes[0];\n\t\t}\n\t});\n}(DC));\n","import { createElementFromHTML, getElement } from \"./element\";\n\nexport const highlightElement = (query, border, background, shadow, addArrow = false, duration = 3000) => {\n const element = getElement(query);\n if (!element || element.classList.contains(\"dc-highlight\")) {\n return;\n }\n element.classList.add(\"dc-highlight\");\n let arrow;\n if (addArrow) {\n const left = element.getBoundingClientRect().x + window.scrollX + element.clientWidth / 2;\n const top = element.getBoundingClientRect().y + window.scrollY - 123;\n arrow = createElementFromHTML(`\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n `);\n document.body.append(arrow);\n }\n const oldBorder = element.style.border;\n const oldBackground = element.style.background;\n const oldShadow = element.style.boxShadow;\n border && element.style.setProperty(\"border\", border);\n background && element.style.setProperty(\"background\", background);\n shadow && element.style.setProperty(\"box-shadow\", shadow);\n setTimeout(() => {\n border && element.style.setProperty(\"border\", oldBorder);\n background && element.style.setProperty(\"background\", oldBackground);\n shadow && element.style.setProperty(\"box-shadow\", oldShadow);\n addArrow && arrow.remove();\n element.classList.remove(\"dc-highlight\");\n }, duration);\n return false;\n}","import classNames from \"classnames\";\nimport { DComponent } from \"../DComponent\";\n\nexport default class Demo extends DComponent {\n constructor({\n parent,\n id,\n title,\n message,\n } = {}) {\n super(arguments[0], parent, id, {\n class: classNames(\"Demo\"),\n title: title,\n message: message,\n }, true, true);\n this.render();\n }\n\n static init({\n parent,\n id,\n title,\n message,\n } = {}) {\n return new Demo({\n parent,\n id,\n title,\n message,\n });\n }\n\n loadStyle() {\n this.appendStyle(require(\"./style.scss\").default, \"demo\");\n }\n\n loadHtml() {\n return require(\"./index.html\").default;\n }\n\n parentAppend() {\n this.parent.prepend(this.element);\n }\n\n after() {\n }\n}\n","export default import.meta.ROLLUP_FILE_URL_77e0af40;","export default import.meta.ROLLUP_FILE_URL_e7c1e5a4;","import { CONFIG_KEYS, ROOT, SHADOW_3D, SITE_TYPE } from \"../constant\";\nimport Env from \"../environments\";\nimport { getUid } from \"../utils/api\";\nimport { genCKS } from \"../utils/string\";\n\nimport { checkoutApi, createOrderApi, getConfigApi } from \"./api\";\nimport { devLog } from \"../utils/log\";\nimport { createElementFromHTML, isHidden } from \"../utils/element\";\nimport { getTotalQuantity } from \"../utils/cart\";\nimport { highlightElement } from \"../utils/site\";\nimport Demo from \"../components/Demo\";\nimport logo from \"../assets/addNew.svg\";\nimport addToCartIcon from \"../assets/add_cart_en.png\";\nimport DC from \"../DC\";\nimport { getOr } from \"../utils/lodash\";\nimport { SettingConfig } from \"../models/SettingConfig\";\n\nexport const badgeQuery = () => {\n return [\"[dc-badge]\", ...(DC.BADGE_ELEMENTS ?? \"\").split(\",\"), ...(DC.CONFIG_BADGE_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_BADGE_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{BADGE_ELEMENTS\") === -1);\n}\n\nexport const checkoutQuery = () => {\n return [\"[dc-checkout]\", ...(DC.CHECKOUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CONFIG_CHECKOUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_CHECKOUT_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{CHECKOUT_ELEMENTS\") === -1);\n}\n\nexport const addToCartQuery = () => {\n return [\"[dc-add-to-cart]\", ...(DC.ADD_TO_CART_ELEMENTS ?? \"\").split(\",\"), ...(DC.CONFIG_ADD_TO_CART_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_ADD_TO_CART_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{ADD_TO_CART_ELEMENTS\") === -1);\n}\n\nexport const quantityInputQuery = () => {\n return [\"[dc-quantity-input]\", ...(DC.QUANTITY_INPUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CONFIG_QUANTITY_INPUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_QUANTITY_INPUT_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{QUANTITY_INPUT_ELEMENTS\") === -1);\n}\n\nexport const fastCheckoutQuery = () => {\n return [\"[dc-fast-checkout]\", ...(DC.FAST_CHECKOUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CONFIG_FAST_CHECKOUT_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_FAST_CHECKOUT_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{FAST_CHECKOUT_ELEMENTS\") === -1);\n}\n\nexport const hideElementsQuery = () => {\n return [\"[dc-hide]\", ...(DC.CONFIG_HIDE_ELEMENTS ?? \"\").split(\",\"), ...(DC.CUSTOM_HIDE_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e);\n}\n\nexport const showBadge = async (source) => {\n const dcBadge = document.querySelectorAll(badgeQuery().join(\",\"));\n if (dcBadge.length) {\n let cart = source || await getCart();\n const badge = getBadgeFromCart(cart);\n showCheckout(cart);\n for (let i = 0; i < dcBadge.length; i++) {\n const element = dcBadge[i];\n element.classList.toggle(\"empty\", +badge === 0);\n element.textContent = badge;\n }\n }\n}\n\nexport const showCheckout = async (source) => {\n const dcCheckout = document.querySelectorAll(checkoutQuery().join(\",\"));\n if (dcCheckout.length) {\n let cart = source || await getCart();\n const checkoutLink = await genCheckoutLink(cart);\n for (let i = 0; i < dcCheckout.length; i++) {\n const element = dcCheckout[i];\n if (checkoutLink) {\n element.setAttribute(\"href\", checkoutLink);\n } else {\n element.removeAttribute(\"href\");\n }\n }\n }\n}\n\nexport const offEvents = () => {\n if (window.jQuery) {\n window.jQuery(addToCartQuery().join(\",\")).off(\"click\");\n window.jQuery(fastCheckoutQuery().join(\",\")).off(\"click\");\n window.jQuery(quantityInputQuery().join(\",\")).off(\"change\");\n window.jQuery([...badgeQuery(), ...checkoutQuery()].join(\",\")).off(\"click\");\n window.jQuery(\"body\").off(\"click\", addToCartQuery().join(\",\"));\n window.jQuery(\"body\").off(\"click\", fastCheckoutQuery().join(\",\"));\n window.jQuery(\"body\").off(\"change\", quantityInputQuery().join(\",\"));\n window.jQuery(\"body\").off(\"click\", [...badgeQuery(), ...checkoutQuery()].join(\",\"));\n window.jQuery(\"body\").off(\"click\", \"[dc-clear-cart]\");\n window.jQuery(\"body\").off(\"click\", \"[dc-refresh-badge]\");\n\n if (DC.CONFIG_OFF_EVENTS) {\n const configArr = DC.CONFIG_OFF_EVENTS.split(\"{:}\");\n const customArr = DC.CUSTOM_OFF_EVENT.split(\"{:}\");\n const offArr = [...configArr, ...customArr];\n for (let i = 0; i < offArr.length; i++) {\n const event = offArr[i];\n const paramArr = event.split(\"|\");\n if (paramArr.length > 1) {\n window.jQuery(paramArr[0]).off(paramArr[1], paramArr[2]);\n }\n }\n }\n } else {\n document.removeEventListener(\"click\", mainEvent);\n }\n}\n\nexport const hideElements = () => {\n const dcHideElements = document.querySelectorAll(hideElementsQuery().join(\",\"));\n for (let i = 0; i < dcHideElements.length; i++) {\n const element = dcHideElements[i];\n element.style.setProperty(\"display\", \"none\", \"important\");\n }\n}\n\nexport const addEvents = () => {\n devLog(addToCartQuery(), fastCheckoutQuery(), quantityInputQuery());\n if (window.jQuery) {\n window.jQuery(\"body\").on(\"click\", addToCartQuery().join(\",\"), function (e) {\n handleAddToCart.call(this, e);\n });\n window.jQuery(\"body\").on(\"click\", fastCheckoutQuery().join(\",\"), function (e) {\n handleAddToCart.call(this, e, true);\n });\n window.jQuery(\"body\").on(\"change\", quantityInputQuery().join(\",\"), function (e) {\n handleChangeQuantity.call(this, e);\n });\n window.jQuery(\"body\").on(\"click\", [...badgeQuery(), ...checkoutQuery()].join(\",\"), function (e) {\n handleCheckout.call(this, e);\n });\n window.jQuery(\"body\").on(\"click\", \"[dc-clear-cart]\", function (e) {\n clearCart();\n });\n window.jQuery(\"body\").on(\"click\", \"[dc-refresh-badge]\", function (e) {\n showBadge();\n });\n } else {\n document.addEventListener(\"click\", mainEvent);\n document.addEventListener('change', function (event) {\n const quantityInput = document.querySelectorAll(quantityInputQuery().join(\",\"));\n for (let index = 0; index < quantityInput.length; index++) {\n const element = quantityInput[index];\n if (event.target === element) {\n handleChangeQuantity.call(this, event);\n }\n }\n })\n }\n}\n\nfunction mainEvent(e) {\n var t = e.target;\n while (t && t !== this) {\n if (t.matches(addToCartQuery().join(\",\"))) {\n handleAddToCart.call(t, e);\n }\n if (t.matches(fastCheckoutQuery().join(\",\"))) {\n handleAddToCart.call(t, e, true);\n }\n if (t.matches([...badgeQuery(), ...checkoutQuery()].join(\",\"))) {\n handleCheckout.call(t, e);\n }\n\n if (t.matches(\"[dc-clear-cart]\")) {\n clearCart();\n }\n\n if (t.matches(\"[dc-refresh-badge]\")) {\n showBadge();\n }\n\n t = t.parentNode;\n }\n}\n\nexport const cartEvent = async () => {\n addShadowRoot();\n // await getConfig();\n offEvents();\n hideElements();\n addEvents();\n if (window.jQuery) {\n window.jQuery(document).ready(function () {\n offEvents();\n hideElements();\n addEvents();\n setTimeout(() => {\n offEvents();\n hideElements();\n addEvents();\n }, 1000);\n });\n }\n}\nexport const handleChangeQuantity = async (event) => {\n const value = event.target.value;\n const dcInputs = document.querySelectorAll(quantityInputQuery().join(\",\"));\n dcInputs.forEach(element => element.value = value);\n\n const dcCheckout = document.querySelector(addToCartQuery().join(\",\"));\n const dcFastCheckout = document.querySelector(fastCheckoutQuery().join(\",\"));\n\n let data = dcCheckout ? dcCheckout.getAttribute(\"dc-add-to-cart\") : dcFastCheckout ? dcCheckout.getAttribute(\"dc-fast-checkout\") : null;\n if (data) {\n data = JSON.parse(data);\n if (data && data.quantity !== value) {\n data.quantity = value;\n setDataCheckout(data);\n }\n }\n}\n\nexport const handleAddToCart = async (event, isFastCheckout) => {\n const productData = event.target.getAttribute(isFastCheckout ? \"dc-fast-checkout\" : \"dc-add-to-cart\");\n try {\n event.preventDefault();\n let product;\n if (productData !== \"\") {\n product = JSON.parse(productData);\n if (product) {\n product.quantity = product.quantity || 1;\n }\n }\n await addToCart(product, isFastCheckout);\n } catch (error) {\n devLog(error);\n }\n}\n\nexport const handleCheckout = async (event) => {\n try {\n event.preventDefault();\n event.stopPropagation();\n let currentTarget = event.target.closest(\"[dc-checkout]\");\n if (currentTarget && currentTarget.hasAttribute(\"dc-popup\")) {\n DC.showPopupCart(event, currentTarget);\n } else {\n const checkoutLink = await getCheckoutLink();\n if (checkoutLink) {\n window.location.href = checkoutLink;\n }\n }\n } catch (error) {\n devLog(error);\n }\n}\n\nexport const getCart = async () => {\n let cart = {};\n await checkoutApi({}, (data) => {\n cart = data;\n }, (error) => {\n cart = error;\n });\n return cart;\n}\n\nexport const getBadgeFromCart = (cart) => {\n const details = cart?.data?.details || [];\n return details.reduce((sum, n) => sum + +n.quantity, 0);\n}\n\nexport const getBadge = async () => {\n let cart = await getCart();\n return getBadgeFromCart(cart);\n}\n\nexport const getCheckoutLink = async (ids = []) => {\n let cart = {};\n await checkoutApi({}, (data) => {\n cart = data;\n }, (error) => {\n cart = error;\n });\n return genCheckoutLink(cart, ids)\n}\n\nexport const genCheckoutLink = async (cart, ids = []) => {\n const code = cart?.data?.code;\n if (!code) {\n return \"\";\n }\n const uid = await getUid();\n const cks = genCKS(uid, code);\n let fastCheckoutQuery = \"\";\n if (Array.isArray(ids) && ids.length) {\n fastCheckoutQuery = `&m=fc&pid=${ids.join(\"&pid=\")}`;\n }\n const shipping = SettingConfig.getShipping();\n if (shipping) {\n fastCheckoutQuery += `&dc_sc=${shipping}`;\n }\n const currency = SettingConfig.getCurrency();\n if (currency) {\n fastCheckoutQuery += `&dc_cur=${currency}`;\n }\n\n const checkoutUrl = `${Env.MAIN_SERVER_URL}${ROOT.CHECKOUT}${code}?uid=${uid}&cks=${cks}${fastCheckoutQuery}`;\n return checkoutUrl;\n}\n\nexport const getConfig = async () => {\n if (DC.CONFIG) {\n return DC.CONFIG;\n }\n await getConfigApi(\n window?.location?.href,\n SITE_TYPE.NORMAL,\n function (data) {\n if (data && data.data) {\n DC.CONFIG = data.data;\n let configurations = getOr([], \"configurations\")(DC.CONFIG);\n for (let i = 0; i < configurations.length; i++) {\n const config = configurations[i];\n switch (config.key) {\n case CONFIG_KEYS.ADD_TO_CART_ELEMENTS:\n DC.CONFIG_ADD_TO_CART_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.FAST_CHECKOUT_ELEMENTS:\n DC.CONFIG_FAST_CHECKOUT_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.CHECKOUT_ELEMENTS:\n DC.CONFIG_CHECKOUT_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.QUANTITY_INPUT_ELEMENTS:\n DC.QUANTITY_INPUT_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.SEARCH_RESULT_WRAPPER_ELEMENTS:\n DC.SEARCH_RESULT_WRAPPER_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.SEARCH_INPUT_ELEMENTS:\n DC.SEARCH_INPUT_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.BADGE_ELEMENTS:\n DC.CONFIG_BADGE_ELEMENTS = config.value;\n break;\n case CONFIG_KEYS.DISABLE_ADD_TO_CART_ANIMATION:\n DC.DISABLE_ADD_TO_CART_ANIMATION = config.value;\n break;\n case CONFIG_KEYS.OFF_EVENTS:\n DC.CONFIG_OFF_EVENTS = config.value;\n break;\n case CONFIG_KEYS.HIDE_ELEMENTS:\n DC.CONFIG_HIDE_ELEMENTS = config.value;\n break;\n default:\n break;\n }\n }\n showBadge();\n DC.getProduct(DC.CONFIG);\n }\n },\n function (error) {\n devLog(error);\n }\n );\n return DC.CONFIG;\n}\n\nexport const addToCart = async (data, fastCheckout) => {\n let result;\n let productArr;\n if (Array.isArray(data)) {\n productArr = data;\n }\n if (typeof data === \"object\") {\n productArr = [data];\n }\n if (!data) {\n let config = await getConfig();\n devLog(config);\n if (!config) {\n return;\n }\n productArr = DC.getProduct(config);\n }\n devLog(productArr);\n\n let minOrder = +productArr[0].order?.min_order > 0 ? +productArr[0].order?.min_order : 1;\n\n if (!checkQuantity(productArr, minOrder, fastCheckout, true)) {\n return;\n }\n\n const details = [];\n const cart = await getCart();\n const cart_details = cart?.data?.details || [];\n\n for (let i = 0; i < productArr.length; i++) {\n let product = productArr[i];\n for (let j = 0; j < cart_details.length; j++) {\n const item = cart_details[j];\n if ((item?.sku && item?.sku + \"\" === product?.sku + \"\") || (item?.pid && item?.pid + \"\" === product?.product_provider_id + \"\")) {\n if (fastCheckout) {\n product.quantity = +item.quantity;\n } else {\n product.quantity = +product.quantity + +item.quantity;\n }\n product.id = item.id;\n break;\n }\n }\n details.push({\n ...product,\n site_id: DC.SITE_ID.indexOf(\"{{SITE_ID\") === -1 && DC.SITE_ID ? DC.SITE_ID : product.site_id,\n });\n }\n\n if (!checkQuantity(details, minOrder, fastCheckout)) {\n return;\n }\n\n const param = {\n source: fastCheckout ? \"fast-checkout\" : \"add-to-cart\",\n details: details,\n };\n\n if (!DC.DISABLE_ADD_TO_CART_ANIMATION || DC.DISABLE_ADD_TO_CART_ANIMATION === \"false\" || DC.DISABLE_ADD_TO_CART_ANIMATION === \"{{DISABLE_ADD_TO_CART_ANIMATION}}\") {\n animationAddToCart(productArr[0]);\n }\n\n await createOrderApi(param, (data) => {\n result = data;\n showBadge();\n }, (error) => {\n result = error;\n });\n\n if (fastCheckout) {\n if (result.data) {\n const ids = [];\n for (let i = 0; i < productArr.length; i++) {\n const item = productArr[i];\n const newProduct = result.data.details.find(e => (e.sku && e.sku === item.sku) || (e.pid && e.pid === item.product_provider_id));\n newProduct?.id !== undefined && ids.push(newProduct.id);\n }\n const checkoutLink = await getCheckoutLink(ids);\n if (checkoutLink) {\n window.location.href = checkoutLink;\n }\n // fastCheckout.hide();\n }\n }\n return result;\n}\n\nlet root;\n\nfunction addShadowRoot() {\n const element = createElementFromHTML(`
    `);\n document.querySelector(\"body\").append(element);\n const shadow = element.attachShadow({ mode: \"open\" });\n root = createElementFromHTML(``);\n shadow.appendChild(root);\n}\n\nfunction animationAddToCart(product = {}) {\n try {\n if (!product?.meta?.image) return;\n const queryArr = [\n ...badgeQuery(),\n ...checkoutQuery(),\n ];\n const dcBadge = document.querySelectorAll(queryArr.join(\",\"));\n let cart;\n for (let i = 0; i < dcBadge.length; i++) {\n if (!isHidden(dcBadge[i])) {\n cart = dcBadge[i];\n break;\n };\n }\n if (!cart) return;\n deleteOldImage();\n\n const width = 200;\n let top = (window.innerHeight - width) / 2;\n let left = (window.innerWidth - width) / 2;\n\n let imgclone = createNewImage(product?.meta?.image, top, left, width);\n root.append(imgclone);\n\n const cartPosition = cart.getBoundingClientRect();\n const cartX = Math.min(window.innerWidth, cartPosition.left + cart.offsetWidth / 2);\n const cartY = Math.max(0, cartPosition.top + cart.offsetHeight / 2);\n\n setTimeout(() => {\n imgclone.style.setProperty(\"top\", `${cartY}px`);\n imgclone.style.setProperty(\"left\", `${cartX}px`);\n imgclone.style.setProperty(\"opacity\", \"0\");\n imgclone.style.setProperty(\"width\", \"10px\");\n }, 10);\n } catch (e) {\n devLog(e);\n }\n}\n\nfunction createNewImage(image, top = 0, left = 0, width = 100) {\n let newImage = document.createElement(\"img\")\n newImage.setAttribute(\"class\", \"dc-image-temp\")\n newImage.setAttribute(\"src\", image);\n newImage.setAttribute(\"style\", `top: ${top}px; left: ${left}px; opacity: 0.5; border-radius: 4px; z-index: 2147483647; position: fixed; pointer-events: none; width: ${width}px; height: auto; transition: all 1s ease-in-out;`);\n return newImage;\n}\n\nfunction deleteOldImage() {\n let itemOld = root.querySelector(\".dc-image-temp\");\n if (itemOld) itemOld.remove();\n}\n\nexport const clearCart = async () => {\n const cart = await getCart();\n const details = cart?.data?.details || [];\n for (let i = 0; i < details.length; i++) {\n const item = details[i];\n item.quantity = \"0\";\n }\n let result;\n const param = {\n source: \"add-to-cart\",\n details\n };\n await createOrderApi(param, (data) => {\n result = data;\n }, (error) => {\n result = error;\n });\n showBadge(result);\n return result;\n}\n\nexport const setCheckoutElements = (value) => {\n offEvents();\n DC.CUSTOM_CHECKOUT_ELEMENTS = value;\n addEvents();\n showBadge();\n}\n\nexport const setBadgeElements = (value) => {\n offEvents();\n DC.CUSTOM_BADGE_ELEMENTS = value;\n addEvents();\n showBadge();\n}\n\nexport const setOffEvents = (value) => {\n offEvents();\n DC.CUSTOM_OFF_EVENT = value;\n addEvents();\n}\n\nexport const setHideElements = (value) => {\n DC.CUSTOM_HIDE_ELEMENTS = value;\n hideElements();\n}\n\nexport const setAddToCartElements = (value) => {\n offEvents();\n DC.CUSTOM_ADD_TO_CART_ELEMENTS = value;\n addEvents();\n}\n\nexport const setFastCheckoutElements = (value) => {\n offEvents();\n DC.CUSTOM_FAST_CHECKOUT_ELEMENTS = value;\n addEvents();\n}\n\nexport const setSiteID = (value) => {\n DC.SITE_ID = value;\n}\n\nexport const setExternalUserId = (value) => {\n DC.EXTERNAL_ID = value;\n}\n\nexport const setDisableAddToCartAnimation = (value) => {\n DC.DISABLE_ADD_TO_CART_ANIMATION = value;\n}\n\nexport const checkQuantity = (products, minOrder, fastCheckout, preCheck = false) => {\n if (getTotalQuantity(products) < (preCheck ? 1 : minOrder)) {\n DC.CONFIG?.quantity_box && highlightElement(DC.CONFIG?.quantity_box, \"solid 2px #F37234\", \"#F372341A\", SHADOW_3D, true, 5000);\n return false;\n }\n return true\n}\n\nconst setAttributeForElements = (data, elements, attributeName) => {\n elements.forEach(element => element.setAttribute(attributeName, JSON.stringify(data)));\n};\n\nexport const setDataCheckout = (data) => {\n const dcCheckout = document.querySelectorAll(addToCartQuery().join(\",\"));\n const dcFastCheckout = document.querySelectorAll(fastCheckoutQuery().join(\",\"));\n\n setAttributeForElements(data, dcCheckout, \"dc-add-to-cart\");\n setAttributeForElements(data, dcFastCheckout, \"dc-fast-checkout\");\n}\n\nexport const testElement = () => {\n new Demo({\n parent: \".element\",\n title: \"hello\",\n message: \"hello message\"\n });\n\n const image = document.createElement('img');\n image.src = logo;\n document.body.appendChild(image);\n\n const image1 = document.createElement('img');\n image1.src = addToCartIcon;\n document.body.appendChild(image1);\n}","export function getTotalQuantity(details = []) {\n let result = 0;\n for (let i = 0; i < details.length; i++) {\n const product = details[i];\n result += +(product?.quantity ?? 0);\n }\n return result;\n}","import DC from \"../DC\";\nimport { SettingConfig } from \"../models/SettingConfig\";\nimport { EVENTS, callEvent } from \"./event\";\nimport { getParamUrl } from \"./url\";\n\nexport function detectLanguage() {\n const storageLanguage = SettingConfig.getLocale();\n let defaultLanguage = (storageLanguage || \"en\") === \"vi\" ? \"vi\" : \"en\";\n let locale = getParamUrl(\"hl\");\n if (locale) {\n defaultLanguage = locale === \"en\" ? \"en\" : \"vi\";\n }\n if (/^\\/vi\\//.test(window.location.pathname)) {\n defaultLanguage = \"vi\";\n }\n if (/^\\/en\\//.test(window.location.pathname)) {\n defaultLanguage = \"en\";\n }\n if (storageLanguage !== defaultLanguage) {\n SettingConfig.setLocale(defaultLanguage);\n callEvent(EVENTS.CHANGE_SETTING);\n }\n\n return defaultLanguage;\n}\n\nexport function setupLanguage(callback = () => { }, isFirst = true) {\n const defaultLanguage = detectLanguage();\n const en = require(\"../_locales/en/messages.json\");\n const vi = require(\"../_locales/vi/messages.json\");\n\n if (isFirst) {\n DC.i18n({\n locale: defaultLanguage,\n })\n .load({\n \"en\": en,\n \"vi\": vi\n });\n } else {\n DC.i18n({\n locale: defaultLanguage,\n });\n }\n callback(defaultLanguage);\n return defaultLanguage;\n}","import DC from '../DC';\nimport Cart from '../components/Cart';\nimport { DCElement } from '../components/DCElement';\nimport DetailProduct from '../components/DetailProduct';\nimport SearchInput from '../components/SearchInput';\nimport SearchResult from '../components/SearchResult';\nimport TrackingOrder from '../components/TrackingOrder';\nimport { API_KEY_QUERY_STRING_KEY } from '../constant';\nimport { Order } from '../models/Order';\nimport { ReceiptSource } from '../models/ReceiptSource';\nimport { Search } from '../models/Search';\nimport { SettingConfig } from '../models/SettingConfig';\nimport { apiGetInfoLogictics, apiGetIpConfig } from '../utils/api';\nimport { appendStyleTo, createElementFromHTML } from '../utils/element';\nimport { EVENTS, callEvent } from '../utils/event';\nimport { ResultWrapper } from '../utils/globalWrapper';\nimport { setupLanguage } from '../utils/language';\nimport { changeQueryString, getParamUrl } from '../utils/url';\nimport { isMiniDesktop, isMobile, isTablet, scrollTo } from '../utils/utils';\nimport { updateOrderApi } from './api';\n\nconst cartQuery = () => {\n return [\"[dc-cart-wrapper]\", ...(DC.CART_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{CART_ELEMENTS\") === -1);\n}\n\nconst searchResultsQuery = () => {\n return [\"[dc-searchresults]\", ...(DC.SEARCH_RESULT_WRAPPER_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{SEARCH_RESULT_WRAPPER_ELEMENTS\") === -1);\n}\n\nconst searchInputsQuery = () => {\n return [\"[dc-searchinput]\", ...(DC.SEARCH_INPUT_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{SEARCH_INPUT_ELEMENTS\") === -1);\n}\n\nconst searchBtnsQuery = () => {\n return [\"[dc-search-btn]\", ...(DC.SEARCH_BUTTON_ELEMENTS ?? \"\").split(\",\")].filter(e => !!e && e.indexOf(\"{{SEARCH_BUTTON_ELEMENTS\") === -1);\n}\n\nconst attributePathDetail = () => {\n return \"dc-path-detail\";\n}\nconst attributePathSearch = () => {\n return \"dc-path-search\";\n}\n\nexport function initSearch() {\n const dcSearchResult = DCElement(searchResultsQuery().join(\",\"));\n if (!dcSearchResult.length) {\n return;\n }\n dcSearchResult.append(`
    `);\n const element = createElementFromHTML(`
    `);\n const shadow = element.attachShadow({ mode: \"open\" });\n const root = createElementFromHTML(``);\n shadow.appendChild(root);\n\n const script = document.createElement('script');\n script.src = 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';\n shadow.appendChild(script);\n\n dcSearchResult.append(element)\n let parentElement = DCElement(root);\n\n ResultWrapper.rootParent = parentElement;\n ResultWrapper.wrapper = dcSearchResult;\n\n let settings = SettingConfig.getConfigsFromCookie();\n\n if (!settings.isValid()) {\n apiGetIpConfig(\n (data) => {\n if (data) {\n SettingConfig.fromApiObject(data).saveConfigs();\n initData(parentElement);\n }\n },\n () => {\n initData(parentElement);\n }\n )\n } else {\n initData(parentElement);\n }\n\n\n function initData(searchWrapper) {\n setupLanguage();\n\n apiGetInfoLogictics({}, (data) => {\n let config = ReceiptSource.fromApiObject(data?.data);\n if (config?.logoUrl) ResultWrapper.configSE = config;\n })\n\n ResultWrapper.pid = getParamUrl(Search.PID);\n\n const dcPathDetail = document.querySelector(`[${attributePathDetail()}]`);\n const pathDetail = dcPathDetail ? dcPathDetail.getAttribute(attributePathDetail()) : \"\";\n ResultWrapper.detail = new DetailProduct({\n wrapper: ResultWrapper.wrapper,\n parent: searchWrapper,\n productId: ResultWrapper.pid,\n onAfter: () => {\n ResultWrapper.pid && genStylesResponsive();\n },\n })\n\n const dcPathSearch = document.querySelector(`[${attributePathSearch()}]`);\n const pathSearch = dcPathSearch ? dcPathSearch.getAttribute(attributePathSearch()) : \"\";\n ResultWrapper.search = new SearchResult({\n wrapper: ResultWrapper.wrapper,\n parent: searchWrapper,\n onClick: (id) => {\n if (pathDetail) {\n let url = changeQueryString(Search.PID, id, pathDetail)\n const key = getParamUrl(API_KEY_QUERY_STRING_KEY);\n if (key) {\n url = changeQueryString(API_KEY_QUERY_STRING_KEY, key, url);\n }\n window.location.href = url;\n } else {\n ResultWrapper.detail.onChangeId(id);\n ResultWrapper.detail.show();\n ResultWrapper.search.hide();\n }\n },\n hide: ResultWrapper.pid,\n onAfter: () => {\n !ResultWrapper.pid && genStylesResponsive();\n }\n });\n\n appendStyleTo(require(\"../globals/public.scss\").default, \"DC_public\", ResultWrapper.wrapper);\n appendStyleTo(require(\"../globals/default.scss\").default, \"default\");\n appendStyleTo(require(\"../components/SearchProductItem/style.scss\").default, \"SearchProductItem\");\n appendStyleTo(require(\"../components/FilterItem/style.scss\").default, \"FilterItem\");\n\n let orderNo = getParamUrl(Order.ORDER_NO);\n if (orderNo) {\n ResultWrapper.tracking = new TrackingOrder({\n wrapper: ResultWrapper.wrapper,\n parent: searchWrapper,\n orderNo: orderNo,\n onAfter: () => {\n genStylesResponsive();\n }\n })\n ResultWrapper.tracking.onSearch(orderNo);\n ResultWrapper.search.hide();\n } else if (ResultWrapper.pid) {\n ResultWrapper.detail.show();\n } else {\n ResultWrapper.search.show();\n }\n\n const dcSearchInput = DCElement(searchInputsQuery().join(\",\"));\n const dcHeader = DCElement(\".dc-wrapper-header\", ResultWrapper.wrapper);\n\n ResultWrapper.searchInput = new SearchInput({\n parent: dcHeader,\n inputWrapper: dcSearchInput,\n onChange: (term) => {\n const hasSearch = !term || term !== ResultWrapper.search.termSearch;\n ResultWrapper.search.show();\n ResultWrapper.detail.hide();\n if (hasSearch) {\n if (pathSearch) {\n let url = changeQueryString(Search.TERM, term || undefined, pathSearch)\n window.location.href = url;\n } else {\n ResultWrapper.search.changeTermSearch(term);\n }\n ResultWrapper.search.getProductSearch();\n };\n },\n })\n\n const dcCart = DCElement(cartQuery().join(\",\"));\n\n ResultWrapper.cart = new Cart({\n parent: dcCart.length ? dcCart : dcHeader,\n cartElement: dcCart.length ? dcCart[0] : null,\n onUpdate: onUpdateCart,\n onChangeSetting: () => {\n let pid = getParamUrl(Search.PID);\n let term = getParamUrl(Search.TERM);\n if (pid) {\n ResultWrapper.detail.onChangeId(pid, false)\n } else {\n ResultWrapper.search.changeTermSearch(term, false);\n ResultWrapper.search.getProductSearch();\n }\n }\n })\n\n const dcSearchBtn = DCElement(searchBtnsQuery().join(\",\"));\n if (dcSearchBtn.length) {\n dcSearchBtn.addEventListener(\"click\", () => {\n ResultWrapper.searchInput.onSearch();\n })\n }\n\n window.onpopstate = () => {\n let pid = getParamUrl(Search.PID);\n scrollTo(searchWrapper);\n ResultWrapper.cart.showBadge();\n let orderNo = getParamUrl(Order.ORDER_NO);\n if (orderNo) {\n if (!ResultWrapper.tracking) {\n ResultWrapper.tracking = new TrackingOrder({\n wrapper: ResultWrapper.wrapper,\n parent: searchWrapper,\n orderNo: orderNo,\n onAfter: () => {\n genStylesResponsive();\n }\n })\n }\n ResultWrapper.tracking.onSearch(orderNo);\n ResultWrapper.tracking.show();\n ResultWrapper.detail.hide();\n ResultWrapper.search.hide();\n } else if (!pid) {\n ResultWrapper.search.setUpFilterParams();\n ResultWrapper.search.getProductSearch();\n ResultWrapper.search.show();\n ResultWrapper.detail.productId = \"\";\n ResultWrapper.detail.hide();\n ResultWrapper.tracking.hide();\n } else if (pid && pid !== ResultWrapper.detail.productId) {\n ResultWrapper.detail.onChangeId(pid, false);\n ResultWrapper.detail.show();\n ResultWrapper.search.hide();\n ResultWrapper.tracking.hide();\n }\n\n ResultWrapper.searchInput && ResultWrapper.searchInput.setInputValue(getParamUrl(Search.TERM) || \"\");\n }\n genStylesResponsive();\n window.addEventListener(\"resize\", genStylesResponsive);\n searchWrapper.i18n();\n }\n\n function genStylesResponsive() {\n let parent = ResultWrapper.wrapper;\n let attributes = [];\n\n if (isMiniDesktop(parent)) {\n attributes.push(\"dc-mini-desktop\");\n }\n if (isTablet(parent)) {\n attributes.push(\"dc-tablet\");\n }\n if (isMobile(parent)) {\n attributes.push(\"dc-mobile\");\n }\n\n let attributesString = attributes.join(\",\");\n DC.CONFIG_RESPONSIVE_MODE = attributesString;\n callEvent(EVENTS.RESIZE_SCREEN, attributesString);\n }\n}\n\nexport const showPopupCart = async (event, parent) => {\n event.stopPropagation();\n\n ResultWrapper.cart.showPopup(event, parent);\n}\n\nfunction onUpdateCart(code, product) {\n let params = {\n code: code,\n details: [\n {\n id: product.id,\n quantity: product.quantity,\n sku: product.sku,\n }\n ]\n };\n updateOrderApi(params,\n async function () {\n let cart = await DC.getCart();\n ResultWrapper.cart.updateDataPopup(cart?.data || {});\n ResultWrapper.cart.showBadge(cart);\n },\n function () {\n }\n )\n}","import DC from \"./DC\";\nimport \"./libs/index.js\";\nimport { showBadge, addToCart, getCheckoutLink, getCart, cartEvent, clearCart, getBadge, setCheckoutElements, setBadgeElements, setAddToCartElements, setFastCheckoutElements, setSiteID, setDisableAddToCartAnimation, setHideElements, hideElements, offEvents, setOffEvents, testElement, setDataCheckout, setExternalUserId } from \"./services/cart\";\nimport { initSearch, showPopupCart } from \"./services/search.js\";\nimport { getUid } from \"./utils/api\";\n\n// extenalLib();\n\nDC.addToCart = addToCart;\nDC.getCheckoutLink = getCheckoutLink;\nDC.getCart = getCart;\nDC.getBadge = getBadge;\nDC.clearCart = clearCart;\nDC.setCheckoutElements = setCheckoutElements;\nDC.setBadgeElements = setBadgeElements;\nDC.showBadge = showBadge;\nDC.setAddToCartElements = setAddToCartElements;\nDC.setFastCheckoutElements = setFastCheckoutElements;\nDC.setSiteID = setSiteID;\nDC.setDisableAddToCartAnimation = setDisableAddToCartAnimation;\nDC.setHideElements = setHideElements;\nDC.hideElements = hideElements;\nDC.setOffEvents = setOffEvents;\nDC.offEvents = offEvents;\nDC.setDataCheckout = setDataCheckout;\nDC.showPopupCart = showPopupCart;\nDC.setExternalUserId = setExternalUserId;\nDC.testElement = testElement;\n\nwindow.DC = DC;\n\n(async () => {\n await getUid();\n cartEvent();\n showBadge();\n initSearch();\n})();"],"names":["COOKIE_KEYS","TF","TFID","UTM","USER_ID","GID","GA","FOEID","SHORT_LINK","SHIPPING_COUNTRY","SHIPPING_COUNTRIES","SHIPPING_CITY","SHIPPING_POSTALCODE","BILLING_COUNTRY","CURRENCY","CURRENCIES","IP_COUNTRY","SHOW_FAST_CHECKOUT","LOCALE","UID","SE_CONFIG","END_POINT","CREATE_ORDER","SUBSCRIBE","CHECKOUT","ESTIMATE_PRICE","GET_CONFIG","UPDTAE_ORDER","TRACKING_ORDER","ROOT","SITE_TYPE","NORMAL","undefined","SHOPIFY","CONFIG_KEYS","API_KEY_QUERY_STRING_KEY","strictUriEncode","str","encodeURIComponent","replace","x","charCodeAt","toString","toUpperCase","token","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","prototype","concat","call","decode","input","tokens","match","i","decodeUriComponent","encodedURI","TypeError","replaceMap","exec","result","entries","Object","keys","key","customDecodeURIComponent","splitOnFirst","string","separator","separatorIndex","indexOf","filterObj","obj","predicate","ret","isArr","isArray","val","require$$0","decodeComponent","require$$1","require$$2","filterObject","require$$3","encodeFragmentIdentifier","Symbol","validateArrayFormatSeparator","value","encode","options","strict","keysSorter","sort","a","b","Number","map","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","trim","parseBooleans","toLowerCase","parse","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","includes","isEncodedArray","newValue","item","test","arrayValue","parserForArrayFormat","create","param","k","reduce","Boolean","exports","stringify","object","shouldFilter","skipNull","skipEmptyString","index","keyValueSep","encoderForArrayFormat","objectCopy","filter","parseUrl","url","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","exclude","exclusionFilter","getOr","defaultValue","path","parseInt","cloneDeep","_typeof","_step","arrCopy","_iterator","_createForOfIteratorHelper","s","n","done","push","e","f","objCopy","hasOwnProperty","getDefaultWhiteList","whiteList","REGEXP_URL_JAVASCRIPT","_default","_default$1","onAttr","name","onIgnoreAttr","safeAttrValue","util","arr","j","forEach","fn","scope","String","trimRight","_","parser","css","cssLength","isParenthesisOpen","lastPos","retCSS","addNewAttr","source","c","DEFAULT","parseStyle","isNull","FilterCSS","shallowCopyObject","this","process","sourcePosition","position","check","isWhite","opts","module","html","window","filterCSS","spaceIndex","getDefaultCSSWhiteList","abbr","address","area","article","aside","audio","bdi","bdo","big","blockquote","br","caption","center","cite","code","col","colgroup","dd","del","details","div","dl","dt","em","figcaption","figure","font","footer","h1","h2","h3","h4","h5","h6","header","hr","img","ins","li","mark","nav","ol","p","pre","section","small","span","sub","summary","sup","strong","strike","table","tbody","td","tfoot","th","thead","tr","tt","u","ul","video","defaultCSSFilter","escapeHtml","REGEXP_LT","REGEXP_GT","REGEXP_QUOTE","REGEXP_QUOTE_2","REGEXP_ATTR_VALUE_1","REGEXP_ATTR_VALUE_COLON","REGEXP_ATTR_VALUE_NEWLINE","REGEXP_DEFAULT_ON_TAG_ATTR_4","REGEXP_DEFAULT_ON_TAG_ATTR_7","REGEXP_DEFAULT_ON_TAG_ATTR_8","escapeQuote","unescapeQuote","escapeHtmlEntities","fromCharCode","substr","escapeDangerHtml5Entities","clearNonPrintableCharacter","str2","len","charAt","friendlyAttrValue","escapeAttrValue","_default$2","onTag","tag","onIgnoreTag","onTagAttr","onIgnoreTagAttr","cssFilter","lastIndex","onIgnoreTagStripAll","StripTagBody","tags","next","isRemoveAllTag","removeList","posStart","isRemoveTag","isClosing","end","remove","rethtml","pos","stripCommentTag","retHtml","stripBlankChar","chars","char","getTagName","tagName","REGEXP_ILLEGAL_ATTR_NAME","findNextEqual","findNextQuotationMark","findBeforeEqual","stripQuoteWrap","text","isQuoteWrapString","parser$1","parseTag","tagStart","quoteStart","currentPos","currentTagName","currentHtml","chariterator","ic","parseAttr","lastMarkPos","retAttrs","tmpName","addAttr","FilterXSS","stripIgnoreTag","console","error","allowList","keysToLowerCase","allowCommentTag","stripIgnoreTagBody","info","attrs","closing","getAttrs","whiteAttrList","attrsHtml","isWhiteAttr","xss","filterXSS","self","DedicatedWorkerGlobalScope","replaceScript","element","getParamUrl","location","search","data","_i","_Object$entries","_Object$entries$_i","_slicedToArray","changeQueryString","href","origin","URL","searchParams","set","re","changeQuery","arguments","isReplace","newurl","pathname","history","pushState","replaceState","historyPushState","hasOwn","classNames","classes","arg","argType","inner","apply","default","cart","document","currentScript","src","baseURI","bag","setting","close","emptyCart","CURRENCY_ATTRIBUTE","DC_SYMBOL","CODE","PRECISION","getCurrencyItem","_ref","_ref$by","by","attribute","_ref$defaultValue","getValueByField","field","runAll","getCurItemByField","getPriceText","num","price","currency","locales","currencyItem","symbol","dc_symbol","precision","zeroNum","toFixed","genPriceText","Intl","NumberFormat","minimumFractionDigits","priceParse","format","stringToPrice","priceSplitPrice","getSymbolCurrency","convertCurrencyNoSymbol","formatDate","date","Date","DateTimeFormat","year","month","day","formatTime","hour","minute","hour12","COUNTRY_EMPTY","iso2","name_vi","lang","currency_code","getCountry","countryCode","Countries","find","country","Address","id","uid","firstName","lastName","phoneNumber","email","addressOption","city","state","zipCode","ward","addressType","_classCallCheck","_createClass","countryLabel","first_name","last_name","phone","address_1","address_2","province","postal_code","address_type","fromApiObject","SHIPPING_INFO","BILLING_INFO","Fee","amount","title","type","description","cur","fee_type","fees","_this","FEE_LIST_ID","FEE","dutycastFee","SHIPPING_COST","FEE_LIST_LABEL","DC","i18n","PRODUCTS","TAX","OFFER","VIP","SMART","PROMOTION_FEE_SHIPPING","OTHER_FEE","MetaProduct","image","color","size","currentUrl","originPrice","originPriceCur","META_PRODUCT_ATTRIBUTE","TITLE","IMAGE","COLOR","SIZE","CURRENT_URL","ORIGIN_PRICE","ORIGIN_PRICE_CUR","meta","STATUS_ORDER","STATUS_ORDER_LIST","status","statusOf","PAYMENT_ID","PAYMENT_PROVIDER","PAYMENT_METHOD","paymentMethod","paymentProvider","label","OrderAction","action","createdAt","estimatedAt","created_at","estimated_at","MetaTracking","fromApiArray","statusList","indexCur","list","reverse","_loop","findIndex","_objectSpread","statusText","cancelReason","status_text","cancel_reason","Product","siteId","siteUrl","siteName","siteLogo","sku","currentCurrency","quantity","storeDomain","category","screenshot","shippingCurrency","shippingCost","sitePrice","sitePriceCur","pid","isLowestPrice","audits","TYPE_PRODUCT","QUOTED","notes","PRODUCT_ATTRIBUTE","ID","SITE_ID","getUrlHost","META","SITE_LOGO","SKU","PRICE","QUANTITY","DOMAIN","CATEGORY","SCREENSHOT","SHIPPING_CURRENCY","SITE_PRICE","SITE_PRICE_CUR","TYPE","PID","IS_LOWEST_PRICE","AUDITS","products","periods","params","period_unit","isRFQ","cp","canSelected","host","RFQ","class","UNSELECT","OOS","MAX_QUANTITY","LOCATION","SITE_URL","SITE_NAME","DETAIL_URL","NOTES","Paging","currentPage","nextPage","prevPage","totalCount","totalPages","perPage","current_page","next_page","prev_page","total_count","total_pages","per_page","total","maxItemInPage","Math","ceil","SearchFacet","values","getTitle","SearchFacetsValues","count","checked","SearchProduct","checkoutPrice","checkoutCur","unitPrice","unitCur","site","detailUrl","slug","displayAmount","_this$site","site_id","product_provider_id","getPId","getImage","unit_price","MetaSearchSite","MetaSearchProduct","detail_url","display_amount","images","t","updatedAt","categories","origin_title","MetaSearchImages","current_url","unit_price_updated_at","domain","logo","highRes","large","thumb","high_res","getCookie","cookie","setCookie","expiry","expires","setTime","getTime","toUTCString","SettingConfig","locale","ipCountry","shippingCountry","billingCountry","shippingTo","currencies","getLocale","setLocale","getIpCountry","setIpCountry","getShipping","setShipping","getCurrency","setCurrency","getBilling","setBilling","setShippingCountries","setCurrencies","ATTRIBUTES","SHIPPING_TO","configs","settings","CONFIG_INDEX","postalCode","countries","JSON","setSeConfig","config","Search","paging","facets","filters","metaTitle","metaDescription","meta_title","meta_description","pp","fl","langague","termSearch","shipCountry","INTER_SHIP","AUTOCOMPLETE","SEARCH_INPUT","SEARCH_FILTER","SEARCH_RESULT","RECOMMEND","HOME_FEATURED","AVAILABLE_STORE","FACET","SEARCH","TRANSLATE","PRODUCT","SITE","PAY_AMOUNT","Order","payAmount","payCurrency","internationalShipping","internationalShippingCur","intermediateCheckoutUrl","orderNo","billingAddress","shippingAddress","payments","stores","_input$billing_addres","_input$billing_addres2","_input$shipping_addre","_input$shipping_addre2","pay_cur","intermediate_checkout_url","order_no","billing_address","user_billing_address","shipping_address","user_shipping_address","mergeFee","ORDER_PARAMS","note","NOTE","BILLING_ADDRESS","SHIPPING_ADDRESS","SOURCE","PAYMENTS","DETAILS","ReceiptSource","logoUrl","headerConfig","bodyConfig","btnCheckoutConfig","_input$config","_input$config2","_input$config3","logo_url","ThemeConfig","body","checkout_button","style","textStyle","imageStyle","text_style","image_style","genEndPointGetParam","endPoint","getRaw","solveUrlParams","base64map","crypt","rotl","rotr","endian","constructor","randomBytes","bytes","floor","random","bytesToWords","words","wordsToBytes","bytesToHex","hex","hexToBytes","bytesToBase64","base64","triplet","base64ToBytes","imod4","pow","cryptModule","charenc","utf8","stringToBytes","bin","unescape","bytesToString","escape","charenc_1","isBuffer_1","isBuffer","readFloatLE","isSlowBuffer","_isBuffer","md5","message","encoding","Uint8Array","m","l","d","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","_blocksize","_digestsize","md5Module","Error","digestbytes","asBytes","asString","r","o","iterator","enumerable","configurable","writable","defineProperty","ctx","iframes","iframesTimeout","NodeList","isPrototypeOf","querySelectorAll","contains","contentWindow","getAttribute","clearTimeout","isIframeBlank","removeEventListener","getIframeContents","addEventListener","setTimeout","readyState","observeIframeLoad","forEachIframe","waitForIframes","querySelector","matches","onIframeReady","createNodeIterator","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","previousNode","prevNode","node","nextNode","handled","compareNodeIframe","createInstanceOnIframe","forEachNode","createIterator","h","getIteratorNode","checkIframeFilter","handleOpenIframes","getContexts","iterateThroughNodes","matchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","webkitMatchesSelector","every","ie","navigator","userAgent","opt","log","debug","wildcards","setupWildcardsRegExp","escapeStr","synonyms","createSynonymsRegExp","ignoreJoiners","ignorePunctuation","setupIgnoreJoinersRegExp","diacritics","createDiacriticsRegExp","createMergedBlanksRegExp","createJoinersRegExp","createWildcardsRegExp","createAccuracyRegExp","caseSensitive","processSynomyms","accuracy","limiters","separateWordSearch","keywords","parseFloat","noMatch","start","callNoMatchOnInvalidRanges","valid","isNumeric","substring","NodeFilter","SHOW_TEXT","textContent","matchesExclude","parentNode","FILTER_REJECT","FILTER_ACCEPT","nodes","splitText","createElement","setAttribute","className","replaceChild","wrapRangeInTextNode","previousSibling","getTextNodes","wrapRangeInMappedTextNode","checkWhitespaceRanges","createDocumentFragment","firstChild","appendChild","removeChild","normalizeTextNode","normalize","nodeType","nextSibling","nodeValue","acrossElements","ignoreGroups","each","getSeparatedKeywords","createRegExp","checkRanges","wrapRangeFromIndex","SHOW_ELEMENT","unwrapMatches","_opt","get","markRegExp","markRanges","unmark","genCKS","_toConsumableArray","replaceVariable","variable","replaceAll","addHighlightText","elements","keyword","instance","Mark","removeAccents","AccentsMap","Env","MAIN_SERVER_URL","API_SERVER_URL","API_SEARCH_SERVER_URL","SEARCH_AUTOCOMPLETE_INDEX","IMGFOE_URL","SEARCH_TRANSLATE_TIMEOUT","SEARCH_TRANSLATE_DELAY","SEARCH_TRANSLATE_SELECTOR","requestId","getUid","_getUid","_asyncToGenerator","_regeneratorRuntime","_callee3","force","_args3","wrap","_context3","prev","subscribeApi","_data$data","t0","abrupt","stop","genUrl","utm","utmParam","_args","_context","_callee","_x","genHeaderApi","_ref2","ref","_getCookie","_getCookie2","_document","ignoreUid","isFormData","noCache","tf","tfid","foeid","uuid","gid","user_id","billing","shipping","apiKey","externalId","_args2","_context2","API_KEY","EXTERNAL_ID","now","language","referrer","sent","_callee2","_x2","callApi","_x3","_callApi","_callee4","_ref3","_ref3$params","_ref3$method","method","onSuccess","onError","_ref3$headers","headers","_ref3$noHeader","noHeader","_ref3$ignoreUid","_ref3$isFormData","_ref3$noCache","requestHeaders","shippingCity","shippingpostalCode","requestUrl","_args4","_context4","getShippingCity","getShippingPostalCode","fetch","then","response","json","res","error_code","_x4","_x5","_subscribeApi","_context5","_callee5","apiEstimateProductPriceMultiple","his","apiGetProductSearch","apiGetInfoLogictics","EVENTS","CHANGE_SETTING","RESIZE_SCREEN","callEvent","jobId","dispatchEvent","CustomEvent","detail","DComponent","parent","genUUID","characters","charactersLength","variables","htmlBeforeStyle","isResponsiveAttr","getParent","before","genElement","parentAppend","afterElement","loadStyle","after","resizeScreen","CONFIG_RESPONSIVE_MODE","cb","events","callback","listenEvent","DCElement","attributes","attr","removeAttr","appendStyleTo","loadHtml","append","InputField","wrapper","_ref$label","_ref$type","_ref$name","_ref$maxlength","maxlength","_ref$invalid","invalid","_ref$tabIndex","tabIndex","_ref$placeholder","placeholder","_ref$isRequired","isRequired","_ref$className","_ref$onKeyup","onKeyup","_ref$onChange","onChange","_ref$inline","inline","render","appendStyle","_this2","on","getValue","addClass","removeClass","setValue","focus","EMAIL","TEL","arrow_down","SelectBox","_ref$labelText","labelText","_ref$options","_ref$hideFeedback","hideFeedback","_defineProperty","_assertThisInitialized","arrowDown","target","closest","selectedValue","fillData","ele","selected","searchBox","stopPropagation","isAcitve","hasClass","toggleClass","filterList","hide","event","searchTerm","option","firstElementChild","nextElementSibling","innerText","display","_this3","container","optionsList","changeOptions","isTrigger","selectedEl","htmlValue","_this4","curItem","TAB","CartPopup","_configSE$headerConfi","_ref$order","order","_ref$onUpdate","onUpdate","_ref$onChangeSetting","onChangeSetting","_ref$tab","tab","_ref$configSE","configSE","ResultWrapper","loading","cartIcon","settingIcon","closeIcon","require$$4","style_header","logo_class","selectCountry","selectCurrency","selectCity","inputCity","require$$5","require$$6","genLoading","updateData","setUpHeaderCart","setUpSource","setUpEvent","listLoading","logoLogictics","el","setStyleElement","getElementsByClassName","childNodes","setColorNodes","shippingCode","getOptionShipping","getShippingCountries","tempCurrency","getCurrencyCodeByCountry","setActiveField","getOptionCurrency","getCurrencies","listCityVN","require$$7","defaultCity","isVN","isVietNamCountry","onSave","nodeName","cssText","shippingList","currentShip","sortedList","tempList","ship","label_vi","convertShippingList","currencyList","currentCur","getLabel","setShippingCity","setShippingPostalCode","onChangeTab","_this5","listProduct","product","selectorSite","siteItem","genProductItem","genSiteItem","isLoading","_this$order$details","Cart","cartElement","popupCart","showBadge","isShow","hasData","show","getCart","Arrow_Right_Orange","prevArrow_orange","nextArrow_orange","Arrow_Right_To_White","bowTie","PriceTag","icon_url","Tag","period","periodUnit","hours","minutes","seconds","days","TAG_TYPE","LOWEST","ProductVariant","dimensions","dimensionKeys","variants","Dimension","reordered_dimensions","Variant","dimensionCode","displayType","dimension_code","DimensionValue","display_type","DROPDOWN","items","DimensionValueItem","productId","isAvailable","product_id","is_available","lineThrought","DimensionItem","currentValue","_ref$dimension","dimension","_ref$onClick","onClick","selectBox","currentTab","_curItem","_curItem2","htmlItems","_this2$dimension","dLabel","idActive","classLabel","setCurrentDimension","dimensionItem","_this2$dimension2","currentTarget","head","isExpanded","dimensionLabel","dimensionImage","activeDim","selectedDimension","valueActive","SearchProductItem","_product$meta","_product$meta2","_product$site","_product$site2","_product$site3","_ref$product","_ref$source","ORGANIC","optimizeImage","storeUrl","storeName","isInterShipping","dataUnitPrice","classSitePrice","preventDefault","getUnitPrice","isCheck","hasPrice","getCheckoutPrice","CSS","PriceLowest","LowestTag","_ref$tags","_ref$position","setPriceTags","curTag","plus","QuantityInput","inputWrapper","_ref$maxQuantity","maxQuantity","subBtnBG","plusBtnBG","setEvent","getQuantity","setQuantity","isNotValid","trigger","Arrow_Left_Orange","isFirst","SliderImage","_ref$data","_ref$carouselDisplayi","carouselDisplaying","_ref$slidesToScroll","slidesToScroll","_ref$autoplay","autoplay","_ref$autoplaySpeed","autoplaySpeed","nextArrow","prevArrow","changeData","carouselContent","hasSlider","setUpSlider","toIndex","dataset","click","lengthOfSlide","carousel","slides","arrayOfSlides","slideActive","addClone","lastSlide","lastElementChild","cloneNode","classList","add","onChangeSlide","insertBefore","removeClone","firstSlide","moveSlidesRight","slidesArray","width","moveSlidesLeft","maxWidth","setScreenSize","initialWidth","offsetWidth","getScreenSize","moving","activateAgain","moveLeft","replaceToEnd","setActiveSlide","loopSlider","defer","children","curSlide","curIndex","curId","devLog","_console","_len","args","_key","DetailProduct","_ref$onAfter","onAfter","_ref$onlyShowProduct","onlyShowProduct","searchLoading","genSearchItemLoading","isFastCheckout","productData","productDetail","genAddToCartParams","quantityInput","addToCart","page","curDimension","productSearch","productOrigin","listProductItems","lowestTag","dimensionItems","estimateTimeout","currentImageIndex","sliderImage","initData","initEvent","google","translate","TranslateElement","pageLanguage","layout","InlineLayout","SIMPLE","getData","scrollSetup","setUpImageThumbnailEvent","setUpNavigatorSlider","back","getProductRecommend","handleAddToCart","setUpAddCart","_changeQuery","isChangeQuery","resetData","scrollTo","TERM","FILTER_COUNTRY","FILTER_SITE","DC_PAGE","DC_SOURCE","ORDER_NO","setDataCheckout","_this$quantityInput","AMOUNT_MAPPING","productVariant","dc_medium","dc_content","startLoading","apiGetProductDetail","setDisplayAmount","setProductData","getProductVariants","estimatePrice","getSearchProduct","isChangeDimension","fillImageData","productInfo","productDetails","productDescription","productBreadcrumb","urlHome","fcategory","urlCategory","FILTER_CATEGORY","descriptionText","formatDescription","setProductPrice","setUnitPrice","setUpSliderImage","defaultImage","backgroundImage","optimizeImg","htmlImages","imgSummary","listImg","setCurrentImage","isEscape","DUTY_CAST_IMGFOE_URL","productImage","_this5$sliderImage","onPrevious","_this5$sliderImage2","onNext","_this6","productThumbnail","delegate","dtarget","currentImage","require$$8","priceDetails","priceValue","seeDetails","addToCartBuyNow","_this7","maxCount","DUTY_CAST_MAX_ESTIMATE_PRICE_TIME","delay","DUTY_CAST_ESTIMATE_PRICE_DELAY","handleSuccess","CURRENCY_MAPPING","_product$meta$images","_order$details$","loop","_product$meta3","apiEstimateProductPrice","genParamsEstimate","_order$details","_this8","apiTime","apiGetPriceTags","getParamPriceTags","priceTags","setLowestPrice","_temp$tags","temp","showLowestPriceTags","pId","_this9","_productVariant$dimen","_productVariant$varia","fillDataVariant","_this10","defaultVariant","getCurrentVariant","sortedDimensions","dimensionKey","curValue","dimensionValue","setActiveDimensions","selectedDimensionCode","_this11","activeDimensions","_this12","isMatch","activeVariants","isMatchDimension","reassignSelectedDimension","selectedDimensionMatch","selectedDimensionValue","defaultVar","isMatchVariant","compareVariant","compareDimension","_this13","genParamsSearch","sectionRecommend","_product$meta4","stopLoading","_this14","isLoadmore","getDefaultPerPage","id_neq","searchData","fillDataSearch","estimateProductPrice","genParamsEstimateMultiple","_this15","ids","pids","orders","_loop2","getId","_searchData$paging","_searchData$paging2","_searchData$paging3","_searchData$paging4","_this16","onChangeId","viewMore","genDefaultParams","listPro","_this17","height","parentWidth","top","scrollY","distanceTop","offsetTop","offsetHeight","outerWidth","handleScroll","parentW","search$2","Autocomplete","_getElement","func","wait","immediate","timeout","debounced","_ref$delay","_ref$appendTo","appendTo","_ref$classes","request","_ref$select","select","ui","_getData","context","cancel","getElement","box","createElementFromHTML","setProperty","_this$getData","childList","toggle","oldValue","relatedTarget","setData","innerHTML","rect","getBoundingClientRect","_this$getData2","updatePosition","SearchInput","_eventAutoComplete","inputHtml","prepend","_source","getInputValue","keyCode","activeElement","blur","setInputValue","init","eventAutoComplete","_ui$item","getAutoComplete","genParamsAutoComplete","Promise","resolve","reject","apiSearchAutoComplete","dc_source","genLangParams","CheckBox","_ref$labelI18n","labelI18n","_ref$key","_ref$checked","_ref$disabled","disabled","is","prop","FilterItem","_ref$names","names","_ref$namesCountry","namesCountry","_ref$items","_ref$defaultPage","defaultPage","listFilter","hasMore","setViewMoreFilter","displayViewMore","hideList","more","hasCount","filterName","setLabel","getKey","removeFilter","FilterTags","_ref$onRemove","onRemove","removeFilterTag","getType","removeIcon","PagingBox","_ref$paging","_ref$onChangePage","onChangePage","nums","getNumBox","setUpClick","pagingEl","_paging$currentPage","_paging$totalPages","current","max","active","FILTER_KEY","FILTER_LIST","listNameCountry","SearchResult","noImage","searchingImage","iconFilter","filterLoading","genFilterItemLoading","filterTag","listChecked","listCheckedOld","tablePaging","isCheckFilter","curTotalFilter","translateTimeout","curSearchParams","listProductNotYetEstimate","currentPosition","detailProduct","setFilterBadge","setListChecked","forceHideFilter","changeQueryUrl","getProductSearch","filterEvent","setUpScroll","setUpFilterParams","rowSection","isMobileMode","isMiniDesktop","productHeight","totalRowInSection","round","splice","isMore","hasFilter","hasFilterParams","reStateInit","showSearching","setKeyWordSearch","productLength","change","getFacetsSearch","paramsEstimate","emptyProduct","resetCountFilter","getProductTranslate","sectionSearch","loopTranslate","hasChecked","resetCount","SEARCH_TYPE","genTermParams","getParamsFilter","getParamsSource","_listFilter$key","isTranslate","newParams","_searchData$paging5","_searchData$paging6","pagingBox","isFilter","isResetTag","fillDataFacets","resetFilter","_this9$listChecked$el","isNotData","setUpFilterTag","typeFilter","keyFilter","_this$listChecked$typ","_this$listChecked$typ2","isRemove","getFilterTag","setCount","addFilterTag","hasFilterTag","totalFilter","reset","filterBox","_this12$listChecked$k","hasFilterOld","resetChecked","term","isLoadingFilter","urlParam","_query","fcountry","fsite","genQueryFromArray","isMobile","createOrderApi","_createOrderApi","checkoutApi","_x6","_checkoutApi","getConfigApi","_x7","_getConfigApi","siteType","site_type","_updateOrderApi","IconTotal","coupon","BillingSummary","_ref$orderData","orderData","_this$orderData","fillTotalBox","_orderData$fees","_orderData$fees2","totalItems","getTotalItem","htmlFee","genHtmlFee","genHtmlTotal","fee","OrderInformation","_ref$hideOrderNo","hideOrderNo","fillShippingInfo","setCollapse","getAdressFull","payItem","genHtmlPaymentMethod","paymentDate","provider","off","onCollapse","content","TYPE_DISPLAY","ProductInfoItem","_productItem$meta","_productItem$meta2","_ref$productItem","productItem","_ref$isPrivateInfo","isPrivateInfo","_ref$hideHead","hideHead","originPriceText","popup","titleI18n","productUrl","currentPrice","classPurchased","StatusProgress","_ref$statusList","isCompact","isCancelOrder","curStatus","getCurrentStatus","reason","htmlReason","htmlItem","indCompact","listData","getIdxListCompact","isHide","htmlResult","genHtmlStatus","OrderItem","_ref$isCollapseItem","isCollapseItem","_ref$isGuestUser","isGuestUser","_ref$smallMode","smallMode","_ref$isCompact","_ref$showPaymentButto","showPaymentButton","notice","classHead","getItems","classPayment","paymentTime","totalPaid","fillOrderData","isHideItem","genHtmlOrderItem","skuCount","OrderDetail","OrderEmpty","BG_empty","setOrderNo","SearchForm","onInput","onSearch","placeholderText","placeholderI18n","buttonText","buttonI18n","_ref$onFocus","onFocus","_ref$onBlur","onBlur","_ref$onClear","onClear","isFocus","TrackingOrder","BG_init","searchForm","orderEmpty","noCheckValue","orderId","getProductDetail","apiTrackingOrder","_search","_detail","_tracking","_pid","_wrapper","_rootParent","_configSE","evt","sel","handler","htmlString","multiple","getHtmlElement","getElements","parentElement","_e$contentDocument","_e$shadowRoot","contentDocument","shadowRoot","from","rootParent","isHidden","getComputedStyle","bottom","selector","isEmpty","empty","_this$elements$index","_this$elements$index2","_this$elements$index3","_this$elements$index4","_this$elements$index$","_this$elements$index$2","_this$elements$index$3","containsClass","attributeName","removeAttribute","property","newStyle","eventName","eventData","Event","bubbles","cancelable","triggerEvent","convertElToNode","convertElToHTML","insertAdjacentHTML","_this$elements$index5","clientWidth","clientHeight","scrollTop","attachShadow","_this$elements$","_this$elements$2","elHtml","distance","behavior","condition","relay","isPlainObject","proto","Ctor","getPrototypeOf","_window","BADGE_ELEMENTS","CHECKOUT_ELEMENTS","ADD_TO_CART_ELEMENTS","CART_ELEMENTS","FAST_CHECKOUT_ELEMENTS","QUANTITY_INPUT_ELEMENTS","SEARCH_RESULT_WRAPPER_ELEMENTS","SEARCH_INPUT_ELEMENTS","DISABLE_ADD_TO_CART_ANIMATION","CONFIG_SETTINGS","CUSTOM_BADGE_ELEMENTS","CUSTOM_CHECKOUT_ELEMENTS","CUSTOM_ADD_TO_CART_ELEMENTS","CUSTOM_FAST_CHECKOUT_ELEMENTS","CUSTOM_QUANTITY_INPUT_ELEMENTS","CUSTOM_OFF_EVENT","CUSTOM_HIDE_ELEMENTS","CONFIG_ADD_TO_CART_ELEMENTS","CONFIG_BADGE_ELEMENTS","CONFIG_CHECKOUT_ELEMENTS","CONFIG_QUANTITY_INPUT_ELEMENTS","CONFIG_OFF_EVENTS","CONFIG_HIDE_ELEMENTS","extend","copy","copyIsArray","clone","deep","$","I18N","defaults","messageStore","languages","localize","messageKey","localeParts","localePartIndex","fallbackIndex","tryingLocale","fallbackLocale","fallbacks","destroy","DCI18n","load","fallbackLocales","locIndex","sourceMap","pop","parameters","param1","Element","lBracket","rBracket","emitter","userLanguage","MessageStore","messages","sources","deferreds","exception","localization","all","pluralRules","ak","one","am","ar","zero","two","few","many","ars","as","be","bh","bn","bs","cs","cy","da","dsb","fa","ff","fil","fr","ga","gd","gu","guw","gv","he","hi","hsb","hy","iu","iw","kab","kn","kw","lag","ln","lt","lv","mg","mk","mo","mr","mt","naq","nso","pa","pl","prg","pt","ro","ru","se","sh","shi","si","sk","sl","sma","smi","smj","smn","sms","sr","ti","tl","tzm","uk","wa","zu","convertPlural","forms","pluralFormIndex","form","explicitPluralPattern","getPluralForm","min","number","pluralForms","pluralRuleParser","convertNumber","integer","tmp","transformTable","numberString","convertedNumber","digitTransformTable","convertGrammar","word","gender","tables","ml","lo","or","kh","nqo","my","ta","te","bo","ab","abs","ace","acm","ady","aeb","aln","als","alt","ami","an","anp","arn","arq","ary","arz","ast","atj","av","avk","awa","ay","azb","ba","ban","bar","bbc","bcc","bci","bdr","bew","bgn","bjn","blk","bm","bpy","bqi","btm","bug","bxr","ca","cdo","ce","co","crh","csb","cv","dtp","dty","egl","eml","ext","fit","fon","frc","frp","frr","fur","gag","gan","gcr","gl","gld","glk","gn","gom","gor","gsw","guc","hak","hif","hrx","hsn","ht","hyw","ii","inh","io","jut","jv","kaa","kbd","kbp","kea","khw","kiu","kjh","kjp","kk","kl","koi","krc","krl","ks","ksh","ksw","ku","kum","kv","lad","lb","lbe","lez","lij","liv","lki","lld","lmo","lrc","ltg","luz","lzh","lzz","mad","mag","mai","mdf","mhr","mnw","mrj","mwl","myv","mzn","nah","nan","nap","nb","nds","nia","nn","no","nrm","oc","olo","os","pcd","pdc","pdt","pfl","pms","pnt","pwn","qu","qug","rgn","rmy","rsk","rue","rup","ruq","sa","sah","scn","sdc","sdh","ses","sg","sgs","shy","sjd","skr","sli","srn","sro","stq","sty","su","szl","szy","tay","tcy","tet","tg","trv","ty","tyv","udm","ug","vec","vep","vls","vmf","vmw","vot","vro","wls","wo","wuu","xal","xmf","yi","yue","za","zea","zgh","zh","MessageParser","simpleParse","replacements","emit","pipe","colon","backslash","anyCharacter","dollar","digits","regularLiteral","regularLiteralWithoutBar","escapedOrLiteralWithoutBar","escapedOrRegularLiteral","templateContents","templateName","openTemplate","closeTemplate","expression","paramExpression","choice","parserSyntax","sequence","originalPos","nOrMore","parsed","makeStringParser","makeRegexParser","regex","escapedLiteral","replacement","templateParam","expr","templateWithReplacement","templateWithOutReplacement","template","MessageParserEmitter","subnodes","operation","messageParserEmitter","plural","grammar","strongDirRegExp","bidi","dir","Demo","addToCartIcon","badgeQuery","_DC$BADGE_ELEMENTS","_DC$CONFIG_BADGE_ELEM","_DC$CUSTOM_BADGE_ELEM","checkoutQuery","_DC$CHECKOUT_ELEMENTS","_DC$CONFIG_CHECKOUT_E","_DC$CUSTOM_CHECKOUT_E","addToCartQuery","_DC$ADD_TO_CART_ELEME","_DC$CONFIG_ADD_TO_CAR","_DC$CUSTOM_ADD_TO_CAR","quantityInputQuery","_DC$QUANTITY_INPUT_EL","_DC$CONFIG_QUANTITY_I","_DC$CUSTOM_QUANTITY_I","fastCheckoutQuery","_DC$FAST_CHECKOUT_ELE","_DC$CONFIG_FAST_CHECK","_DC$CUSTOM_FAST_CHECK","CONFIG_FAST_CHECKOUT_ELEMENTS","dcBadge","badge","getBadgeFromCart","showCheckout","dcCheckout","checkoutLink","genCheckoutLink","offEvents","jQuery","configArr","customArr","offArr","paramArr","mainEvent","hideElements","_DC$CONFIG_HIDE_ELEME","_DC$CUSTOM_HIDE_ELEME","dcHideElements","addEvents","handleChangeQuantity","handleCheckout","clearCart","root","cartEvent","addShadowRoot","ready","_ref4","dcFastCheckout","_ref5","_ref6","_context6","hasAttribute","showPopupCart","getCheckoutLink","_callee6","_ref7","_callee7","_context7","_cart$data","sum","getBadge","_ref8","_callee8","_context8","_ref9","_callee9","_args9","_context9","_ref10","_cart$data2","cks","checkoutUrl","_args10","_context10","_callee10","getConfig","_ref11","_callee11","_window$location","_context11","CONFIG","configurations","getProduct","_ref12","_callee12","fastCheckout","_productArr$0$order","_productArr$0$order2","_cart$data3","productArr","minOrder","cart_details","_context12","min_order","checkQuantity","animationAddToCart","newProduct","_x8","_x9","shadow","mode","itemOld","queryArr","innerHeight","innerWidth","imgclone","newImage","createNewImage","cartPosition","cartX","cartY","_ref13","_callee13","_cart$data4","_context13","_DC$CONFIG","_DC$CONFIG2","preCheck","_product$quantity","getTotalQuantity","quantity_box","border","background","addArrow","duration","arrow","scrollX","y","oldBorder","oldBackground","oldShadow","boxShadow","highlightElement","setAttributeForElements","setupLanguage","defaultLanguage","storageLanguage","detectLanguage","en","vi","initSearch","_DC$SEARCH_RESULT_WRA","dcSearchResult","script","getConfigsFromCookie","isValid","saveConfigs","searchWrapper","dcPathDetail","attributePathDetail","pathDetail","genStylesResponsive","dcPathSearch","attributePathSearch","pathSearch","tracking","_DC$SEARCH_INPUT_ELEM","dcSearchInput","dcHeader","searchInput","hasSearch","changeTermSearch","_DC$CART_ELEMENTS","dcCart","onUpdateCart","_DC$SEARCH_BUTTON_ELE","dcSearchBtn","SEARCH_BUTTON_ELEMENTS","onpopstate","attributesString","showPopup","_x10","updateOrderApi","updateDataPopup","setCheckoutElements","setBadgeElements","setAddToCartElements","setFastCheckoutElements","setSiteID","setDisableAddToCartAnimation","setHideElements","setOffEvents","setExternalUserId","testElement","image1"],"mappings":"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"}