1(function webpackUniversalModuleDefinition(root, factory) { 2 if(typeof exports === 'object' && typeof module === 'object') 3 module.exports = factory(require("axios"), require("react"), require("react-dom")); 4 else if(typeof define === 'function' && define.amd) 5 define(["axios", "react", "react-dom"], factory); 6 else if(typeof exports === 'object') 7 exports["Menu"] = factory(require("axios"), require("react"), require("react-dom")); 8 else 9 root["Menu"] = factory(root["axios"], root["React"], root["ReactDOM"]); 10})(this, (__WEBPACK_EXTERNAL_MODULE__62742__, __WEBPACK_EXTERNAL_MODULE__15442__, __WEBPACK_EXTERNAL_MODULE__56003__) => { 11return /******/ (() => { // webpackBootstrap 12/******/ var __webpack_modules__ = ({ 13 14/***/ 1087: 15/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 16 17"use strict"; 18/* harmony export */ __webpack_require__.d(__webpack_exports__, { 19/* harmony export */ A: () => (/* binding */ _setPrototypeOf) 20/* harmony export */ }); 21function _setPrototypeOf(t, e) { 22 return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { 23 return t.__proto__ = e, t; 24 }, _setPrototypeOf(t, e); 25} 26 27 28/***/ }), 29 30/***/ 1680: 31/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 32 33"use strict"; 34/* harmony export */ __webpack_require__.d(__webpack_exports__, { 35/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 36/* harmony export */ }); 37/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 38/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 39/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73688); 40 41 42 43/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (onInternalMotionEnd) { 44 var cacheElementRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(); 45 46 // Remove events 47 function removeMotionEvents(element) { 48 if (element) { 49 element.removeEventListener(_util_motion__WEBPACK_IMPORTED_MODULE_1__/* .transitionEndName */ .m8, onInternalMotionEnd); 50 element.removeEventListener(_util_motion__WEBPACK_IMPORTED_MODULE_1__/* .animationEndName */ .Vc, onInternalMotionEnd); 51 } 52 } 53 54 // Patch events 55 function patchMotionEvents(element) { 56 if (cacheElementRef.current && cacheElementRef.current !== element) { 57 removeMotionEvents(cacheElementRef.current); 58 } 59 if (element && element !== cacheElementRef.current) { 60 element.addEventListener(_util_motion__WEBPACK_IMPORTED_MODULE_1__/* .transitionEndName */ .m8, onInternalMotionEnd); 61 element.addEventListener(_util_motion__WEBPACK_IMPORTED_MODULE_1__/* .animationEndName */ .Vc, onInternalMotionEnd); 62 63 // Save as cache in case dom removed trigger by `motionDeadline` 64 cacheElementRef.current = element; 65 } 66 } 67 68 // Clean up when removed 69 react__WEBPACK_IMPORTED_MODULE_0__.useEffect(function () { 70 return function () { 71 removeMotionEvents(cacheElementRef.current); 72 }; 73 }, []); 74 return [patchMotionEvents, removeMotionEvents]; 75}); 76 77/***/ }), 78 79/***/ 2474: 80/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 81 82"use strict"; 83/* harmony export */ __webpack_require__.d(__webpack_exports__, { 84/* harmony export */ A: () => (/* binding */ _assertThisInitialized) 85/* harmony export */ }); 86function _assertThisInitialized(e) { 87 if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 88 return e; 89} 90 91 92/***/ }), 93 94/***/ 3251: 95/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 96 97"use strict"; 98/* harmony export */ __webpack_require__.d(__webpack_exports__, { 99/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__) 100/* harmony export */ }); 101/* harmony import */ var _CSSMotion__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89614); 102/* harmony import */ var _CSSMotionList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(38818); 103/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(74568); 104 105 106 107 108/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_CSSMotion__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A); 109 110/***/ }), 111 112/***/ 3478: 113/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 114 115"use strict"; 116/* harmony export */ __webpack_require__.d(__webpack_exports__, { 117/* harmony export */ A: () => (/* binding */ api) 118/* harmony export */ }); 119/*! js-cookie v3.0.5 | MIT */ 120/* eslint-disable no-var */ 121function assign (target) { 122 for (var i = 1; i < arguments.length; i++) { 123 var source = arguments[i]; 124 for (var key in source) { 125 target[key] = source[key]; 126 } 127 } 128 return target 129} 130/* eslint-enable no-var */ 131 132/* eslint-disable no-var */ 133var defaultConverter = { 134 read: function (value) { 135 if (value[0] === '"') { 136 value = value.slice(1, -1); 137 } 138 return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent) 139 }, 140 write: function (value) { 141 return encodeURIComponent(value).replace( 142 /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, 143 decodeURIComponent 144 ) 145 } 146}; 147/* eslint-enable no-var */ 148 149/* eslint-disable no-var */ 150 151function init (converter, defaultAttributes) {
152 function set (name, value, attributes) { 153 if (typeof document === 'undefined') { 154 return 155 } 156 157 attributes = assign({}, defaultAttributes, attributes); 158 159 if (typeof attributes.expires === 'number') { 160 attributes.expires = new Date(Date.now() + attributes.expires * 864e5); 161 } 162 if (attributes.expires) { 163 attributes.expires = attributes.expires.toUTCString(); 164 } 165 166 name = encodeURIComponent(name) 167 .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) 168 .replace(/[()]/g, escape); 169 170 var stringifiedAttributes = ''; 171 for (var attributeName in attributes) { 172 if (!attributes[attributeName]) { 173 continue 174 } 175 176 stringifiedAttributes += '; ' + attributeName; 177 178 if (attributes[attributeName] === true) { 179 continue 180 } 181 182 // Considers RFC 6265 section 5.2: 183 // ... 184 // 3. If the remaining unparsed-attributes contains a %x3B (";") 185 // character: 186 // Consume the characters of the unparsed-attributes up to, 187 // not including, the first %x3B (";") character. 188 // ... 189 stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; 190 } 191 192 return (document.cookie = 193 name + '=' + converter.write(value, name) + stringifiedAttributes) 194 } 195 196 function get (name) { 197 if (typeof document === 'undefined' || (arguments.length && !name)) { 198 return 199 } 200 201 // To prevent the for loop in the first place assign an empty array 202 // in case there are no cookies at all. 203 var cookies = document.cookie ? document.cookie.split('; ') : []; 204 var jar = {}; 205 for (var i = 0; i < cookies.length; i++) { 206 var parts = cookies[i].split('='); 207 var value = parts.slice(1).join('='); 208 209 try { 210 var found = decodeURIComponent(parts[0]); 211 jar[found] = converter.read(value, found); 212 213 if (name === found) { 214 break 215 } 216 } catch (e) {} 217 } 218 219 return name ? jar[name] : jar 220 } 221 222 return Object.create( 223 { 224 set, 225 get, 226 remove: function (name, attributes) { 227 set( 228 name, 229 '', 230 assign({}, attributes, { 231 expires: -1 232 }) 233 ); 234 }, 235 withAttributes: function (attributes) { 236 return init(this.converter, assign({}, this.attributes, attributes)) 237 }, 238 withConverter: function (converter) { 239 return init(assign({}, this.converter, converter), this.attributes) 240 } 241 }, 242 { 243 attributes: { value: Object.freeze(defaultAttributes) }, 244 converter: { value: Object.freeze(converter) } 245 } 246 ) 247} 248 249var api = init(defaultConverter, { path: '/' }); 250/* eslint-enable no-var */ 251 252 253 254 255/***/ }), 256 257/***/ 3700: 258/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 259 260"use strict"; 261/* harmony export */ __webpack_require__.d(__webpack_exports__, { 262/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 263/* harmony export */ }); 264/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (element) { 265 if (!element) { 266 return false; 267 } 268 if (element instanceof Element) { 269 if (element.offsetParent) { 270 return true; 271 } 272 if (element.getBBox) { 273 var _getBBox = element.getBBox(), 274 width = _getBBox.width, 275 height = _getBBox.height; 276 if (width || height) { 277 return true; 278 } 279 } 280 if (element.getBoundingClientRect) { 281 var _element$getBoundingC = element.getBoundingClientRect(), 282 _width = _element$getBoundingC.width, 283 _height = _element$getBoundingC.height; 284 if (_width || _height) { 285 return true; 286 } 287 } 288 } 289 return false; 290}); 291 292/***/ }), 293 294/***/ 4703: 295/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 296 297"use strict"; 298/* harmony export */ __webpack_require__.d(__webpack_exports__, { 299/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 300/* harmony export */ }); 301/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93584); 302 303var store = { 304 get: function get(key, options) { 305 if (options === void 0) { 306 options = { 307 decode: false, 308 parse: false 309 }; 310 } 311 var r; 312 try { 313 if (Array.isArray(key)) { 314 r = key.map(function (k) { 315 return localStorage.getItem(k); 316 }); 317 if (options.decode) r = r.map(function (item) { 318 if (item) { 319 try { 320 item = js_base64__WEBPACK_IMPORTED_MODULE_0__/* .Base64 */ .o4.decode(item); 321 } catch (_a) { 322 console.log('base64è§£ææ¥é', item); 323 } 324 } 325 return item; 326 }); 327 if (options.parse) r = r.map(function (item) { 328 return JSON.parse(item); 329 }); 330 } else { 331 r = localStorage.getItem(key); 332 if (options.decode) { 333 if (r) { 334 try { 335 r = js_base64__WEBPACK_IMPORTED_MODULE_0__/* .Base64 */ .o4.decode(r); 336 } catch (_a) { 337 console.log('base64è§£ææ¥é', r); 338 } 339 } 340 } 341 if (options.parse) r = JSON.parse(r); 342 } 343 } catch (e) {} 344 return r; 345 }, 346 set: function set(key, val) { 347 var _val = val; 348 if (Array.isArray(val) || Object.prototype.toString.call(val) === '[object Object]') { 349 _val = JSON.stringify(val); 350 } 351 localStorage.setItem(key, _val); 352 }, 353 del: function del(key) { 354 localStorage.removeItem(key); 355 } 356}; 357/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (store); 358 359/***/ }), 360 361/***/ 5405: 362/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 363 364"use strict"; 365/* harmony export */ __webpack_require__.d(__webpack_exports__, { 366/* harmony export */ A: () => (/* binding */ _nonIterableRest) 367/* harmony export */ }); 368function _nonIterableRest() {
369 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); 370} 371 372 373/***/ }), 374 375/***/ 6131: 376/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 377 378var baseTrim = __webpack_require__(86403), 379 isObject = __webpack_require__(41580), 380 isSymbol = __webpack_require__(51187); 381 382/** Used as references for various `Number` constants. */ 383var NAN = 0 / 0; 384 385/** Used to detect bad signed hexadecimal string values. */ 386var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 387 388/** Used to detect binary string values. */ 389var reIsBinary = /^0b[01]+$/i; 390 391/** Used to detect octal string values. */ 392var reIsOctal = /^0o[0-7]+$/i; 393 394/** Built-in method references without a dependency on `root`. */ 395var freeParseInt = parseInt; 396 397/** 398 * Converts `value` to a number. 399 * 400 * @static 401 * @memberOf _ 402 * @since 4.0.0 403 * @category Lang 404 * @param {*} value The value to process. 405 * @returns {number} Returns the number. 406 * @example 407 * 408 * _.toNumber(3.2); 409 * // => 3.2 410 * 411 * _.toNumber(Number.MIN_VALUE); 412 * // => 5e-324 413 * 414 * _.toNumber(Infinity); 415 * // => Infinity 416 * 417 * _.toNumber('3.2'); 418 * // => 3.2 419 */ 420function toNumber(value) { 421 if (typeof value == 'number') { 422 return value; 423 } 424 if (isSymbol(value)) { 425 return NAN; 426 } 427 if (isObject(value)) { 428 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 429 value = isObject(other) ? (other + '') : other; 430 } 431 if (typeof value != 'string') { 432 return value === 0 ? value : +value; 433 } 434 value = baseTrim(value); 435 var isBinary = reIsBinary.test(value); 436 return (isBinary || reIsOctal.test(value)) 437 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 438 : (reIsBadHex.test(value) ? NAN : +value); 439} 440 441module.exports = toNumber; 442 443 444/***/ }), 445 446/***/ 6553: 447/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 448 449"use strict"; 450/* harmony export */ __webpack_require__.d(__webpack_exports__, { 451/* harmony export */ A: () => (/* binding */ useScrollLocker) 452/* harmony export */ }); 453/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 454/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 455/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 456/* harmony import */ var rc_util_es_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(65856); 457/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84238); 458/* harmony import */ var rc_util_es_getScrollBarSize__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9966); 459/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(98331); 460 461 462 463 464 465 466var UNIQUE_ID = "rc-util-locker-".concat(Date.now()); 467var uuid = 0; 468function useScrollLocker(lock) { 469 var mergedLock = !!lock; 470 var _React$useState = react__WEBPACK_IMPORTED_MODULE_1__.useState(function () { 471 uuid += 1; 472 return "".concat(UNIQUE_ID, "_").concat(uuid); 473 }), 474 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 1), 475 id = _React$useState2[0]; 476 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 477 if (mergedLock) { 478 var scrollbarSize = (0,rc_util_es_getScrollBarSize__WEBPACK_IMPORTED_MODULE_4__/* .getTargetScrollBarSize */ .V)(document.body).width; 479 var isOverflow = (0,_util__WEBPACK_IMPORTED_MODULE_5__/* .isBodyOverflowing */ .$)(); 480 (0,rc_util_es_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_2__/* .updateCSS */ .BD)("\nhtml body {\n overflow-y: hidden;\n ".concat(isOverflow ? "width: calc(100% - ".concat(scrollbarSize, "px);") : '', "\n}"), id); 481 } else { 482 (0,rc_util_es_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_2__/* .removeCSS */ .m6)(id); 483 } 484 return function () { 485 (0,rc_util_es_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_2__/* .removeCSS */ .m6)(id); 486 }; 487 }, [mergedLock, id]); 488} 489 490/***/ }), 491 492/***/ 6925: 493/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 494 495"use strict"; 496/* harmony export */ __webpack_require__.d(__webpack_exports__, { 497/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 498/* harmony export */ }); 499/* harmony import */ var _contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44148); 500/* harmony import */ var _common_get_page_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13351); 501 502 503/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () { 504 var flowVersionPaths = ['paymentAgency', 'integrations/temu', 'integrations/shopify', '/integrations/shoplazza', 'integrations/woocommerce', 'integrations/tiktok-shop', 'high-quality-factory', 'overview', 'aboutus', 'contactus', 'bulkPurchase', 'payment-agency', 'payment-wed2c', 'loancredit', 'agents/product-development', 'agents/cogs-reduction', 'agents/faster-order-fulfillment', 'agents/shorten-delivery-time', 'agents/cj-account-management', 'agents/customer-success-growth', 'agents/visiting-guide', 'free-temu-tiktok-stores', 'sourcing-agents', 'odm', 'alternatives', '/ai/chatgpt', '/ai/claude', '/ai/codex', 'cjdropshipping-vs-zendrop', 'cjdropshipping-vs-autods', 'cjdropshipping-vs-spocket', 'cjdropshipping-vs-aliexpress', 'cjdropshipping-vs-day-one-fulfillment', 'careers', 'printonDemand/home', 'partnership/home', 'advertisingservice', '/cj-entity', '/cj-business-travel', '/worldfirst']; 505 var _a = (0,_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__/* .useGlobalProps */ .v)(), 506 platform = _a.platform, 507 _MatchReqHost = _a._MatchReqHost, 508 isM = _a.isM; 509 if (isM) { 510 flowVersionPaths.push('agents', 'agents/detail', 'global-warehouses', 'ready-to-ship', 'mentors'); 511 } 512 return { 513 isCj: platform === 'cj', 514 isSupplier: platform === 'supplier', 515 isGlobalWarehouse: platform === 'globalWarehouse', 516 isSupplierShop: platform === 'supplierShop', 517 isBlog: platform === 'blog', 518 _PageName: (0,_common_get_page_config__WEBPACK_IMPORTED_MODULE_1__/* .getPageName */ .bg)(_MatchReqHost, isM), 519 isFlowVersionPage: flowVersionPaths.some(function (path) { 520 return (_MatchReqHost === null || _MatchReqHost === void 0 ? void 0 : _MatchReqHost.indexOf(path)) > -1; 521 }) 522 }; 523}); 524 525/***/ }), 526 527/***/ 8870: 528/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 529 530var Symbol = __webpack_require__(65650); 531 532/** Used for built-in method references. */ 533var objectProto = Object.prototype; 534 535/** Used to check objects for own properties. */ 536var hasOwnProperty = objectProto.hasOwnProperty; 537 538/** 539 * Used to resolve the 540 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 541 * of values. 542 */ 543var nativeObjectToString = objectProto.toString; 544 545/** Built-in value references. */
546var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 547 548/** 549 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 550 * 551 * @private 552 * @param {*} value The value to query. 553 * @returns {string} Returns the raw `toStringTag`. 554 */ 555function getRawTag(value) { 556 var isOwn = hasOwnProperty.call(value, symToStringTag), 557 tag = value[symToStringTag]; 558 559 try { 560 value[symToStringTag] = undefined; 561 var unmasked = true; 562 } catch (e) {} 563 564 var result = nativeObjectToString.call(value); 565 if (unmasked) { 566 if (isOwn) { 567 value[symToStringTag] = tag; 568 } else { 569 delete value[symToStringTag]; 570 } 571 } 572 return result; 573} 574 575module.exports = getRawTag; 576 577 578/***/ }), 579 580/***/ 9449: 581/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 582 583"use strict"; 584/* harmony export */ __webpack_require__.d(__webpack_exports__, { 585/* harmony export */ A: () => (/* binding */ useEvent) 586/* harmony export */ }); 587/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 588/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 589 590function useEvent(callback) { 591 var fnRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(); 592 fnRef.current = callback; 593 var memoFn = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function () { 594 var _fnRef$current; 595 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 596 args[_key] = arguments[_key]; 597 } 598 return (_fnRef$current = fnRef.current) === null || _fnRef$current === void 0 ? void 0 : _fnRef$current.call.apply(_fnRef$current, [fnRef].concat(args)); 599 }, []); 600 return memoFn; 601} 602 603/***/ }), 604 605/***/ 9966: 606/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 607 608"use strict"; 609/* harmony export */ __webpack_require__.d(__webpack_exports__, { 610/* harmony export */ V: () => (/* binding */ getTargetScrollBarSize) 611/* harmony export */ }); 612/* unused harmony export default */ 613/* harmony import */ var _Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65856); 614/* eslint-disable no-param-reassign */ 615 616var cached; 617function measureScrollbarSize(ele) { 618 var randomId = "rc-scrollbar-measure-".concat(Math.random().toString(36).substring(7)); 619 var measureEle = document.createElement('div'); 620 measureEle.id = randomId; 621 622 // Create Style 623 var measureStyle = measureEle.style; 624 measureStyle.position = 'absolute'; 625 measureStyle.left = '0'; 626 measureStyle.top = '0'; 627 measureStyle.width = '100px'; 628 measureStyle.height = '100px'; 629 measureStyle.overflow = 'scroll'; 630 631 // Clone Style if needed 632 var fallbackWidth; 633 var fallbackHeight; 634 if (ele) { 635 var targetStyle = getComputedStyle(ele); 636 measureStyle.scrollbarColor = targetStyle.scrollbarColor; 637 measureStyle.scrollbarWidth = targetStyle.scrollbarWidth; 638 639 // Set Webkit style 640 var webkitScrollbarStyle = getComputedStyle(ele, '::-webkit-scrollbar'); 641 var width = parseInt(webkitScrollbarStyle.width, 10); 642 var height = parseInt(webkitScrollbarStyle.height, 10); 643 644 // Try wrap to handle CSP case 645 try { 646 var widthStyle = width ? "width: ".concat(webkitScrollbarStyle.width, ";") : ''; 647 var heightStyle = height ? "height: ".concat(webkitScrollbarStyle.height, ";") : ''; 648 (0,_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_0__/* .updateCSS */ .BD)("\n#".concat(randomId, "::-webkit-scrollbar {\n").concat(widthStyle, "\n").concat(heightStyle, "\n}"), randomId); 649 } catch (e) { 650 // Can't wrap, just log error 651 console.error(e); 652 653 // Get from style directly 654 fallbackWidth = width; 655 fallbackHeight = height; 656 } 657 } 658 document.body.appendChild(measureEle); 659 660 // Measure. Get fallback style if provided 661 var scrollWidth = ele && fallbackWidth && !isNaN(fallbackWidth) ? fallbackWidth : measureEle.offsetWidth - measureEle.clientWidth; 662 var scrollHeight = ele && fallbackHeight && !isNaN(fallbackHeight) ? fallbackHeight : measureEle.offsetHeight - measureEle.clientHeight; 663 664 // Clean up 665 document.body.removeChild(measureEle); 666 (0,_Dom_dynamicCSS__WEBPACK_IMPORTED_MODULE_0__/* .removeCSS */ .m6)(randomId); 667 return { 668 width: scrollWidth, 669 height: scrollHeight 670 }; 671} 672function getScrollBarSize(fresh) { 673 if (typeof document === 'undefined') { 674 return 0; 675 } 676 if (fresh || cached === undefined) { 677 cached = measureScrollbarSize(); 678 } 679 return cached.width; 680} 681function getTargetScrollBarSize(target) { 682 if (typeof document === 'undefined' || !target || !(target instanceof Element)) { 683 return { 684 width: 0, 685 height: 0 686 }; 687 } 688 return measureScrollbarSize(target); 689} 690 691/***/ }), 692 693/***/ 11543: 694/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 695 696"use strict"; 697/* harmony export */ __webpack_require__.d(__webpack_exports__, { 698/* harmony export */ l: () => (/* binding */ toGtagElement) 699/* harmony export */ }); 700var toGtagElement = function toGtagElement(value) { 701 if (value === void 0) { 702 value = ''; 703 } 704 return String(value).trim().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, ''); 705}; 706 707/***/ }), 708 709/***/ 12097: 710/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 711 712"use strict"; 713/* harmony export */ __webpack_require__.d(__webpack_exports__, { 714/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 715/* harmony export */ }); 716/* unused harmony export LoginInfoController */ 717/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93584); 718/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 719/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4703); 720/* harmony import */ var _hook_use_guid_show__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(79191); 721/* harmony import */ var _components_Menu_hooks_useIsVP__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(63301); 722/* harmony import */ var _components_Menu_hooks_useIsZS__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60488); 723function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 724var __assign = undefined && undefined.__assign || function () { 725 __assign = Object.assign || function (t) { 726 for (var s, i = 1, n = arguments.length; i < n; i++) { 727 s = arguments[i]; 728 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 729 } 730 return t; 731 }; 732 return __assign.apply(this, arguments); 733}; 734 735 736 737 738 739 740var LoginInfoController = function () { 741 function LoginInfoController() { 742 this.loginInfo = {}; 743 this.isFirstRunInfo = true; 744 if (_index__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 745 this.get(); 746 } 747 } 748 LoginInfoController.prototype.parseCookie = function (userInfo) { 749 var _a, _b; 750 if (userInfo === void 0) { 751 userInfo = {}; 752 } 753 var isZesty = (0,_components_Menu_hooks_useIsZS__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(); 754 var vip = ((0,_components_Menu_hooks_useIsVP__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)() ? '1' : userInfo === null || userInfo === void 0 ? void 0 : userInfo.vip) || '0'; 755 if (isZesty) { 756 vip = '0'; 757 } 758 var result = ['loginName', 'token', 'name', 'firstName', 'lastName', 'contactID', 'contry', 'email', 'phone', 'storeLink', 'relateSalesman', 'salesmanId', 'address', { 759 name: 'loginfromerp', 760 key: 'loginfromerp', 761 encode: false 762 }, {
763 name: 'cjLoginName', 764 key: 'loginName', 765 encode: false 766 }, { 767 name: 'accessToken', 768 key: 'accessToken', 769 encode: false 770 }, { 771 name: 'cjLoginToken', 772 key: 'token', 773 encode: false 774 }, { 775 name: 'vip', 776 value: vip, 777 encode: false 778 }, { 779 name: 'userId', 780 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.id) || (userInfo === null || userInfo === void 0 ? void 0 : userInfo.userId) || '' 781 }, { 782 name: 'avatar', 783 key: 'img', 784 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.avatar) || '', 785 encode: false 786 }, { 787 name: 'emailVerifyStatus', 788 key: 'status', 789 encode: false 790 }, { 791 name: 'lastAccess', 792 value: ((_a = userInfo === null || userInfo === void 0 ? void 0 : userInfo.lastAccess) === null || _a === void 0 ? void 0 : _a.loginDate) || '', 793 condition: (_b = userInfo === null || userInfo === void 0 ? void 0 : userInfo.lastAccess) === null || _b === void 0 ? void 0 : _b.loginDate 794 }, { 795 name: 'isFirstLogin', 796 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.isFirstLogin) || '0', 797 encode: false 798 }, {
799 name: 'loginTime', 800 value: new Date().getTime(), 801 encode: false 802 }, { 803 name: 'memberLevelTagType', 804 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.plusExpirationTime) ? (userInfo === null || userInfo === void 0 ? void 0 : userInfo.vipLevel) || 'Free' : 'Free', 805 encode: false 806 }, { 807 name: 'plusExpirationTime', 808 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.plusExpirationTime) || new Date().getTime(), 809 encode: false 810 }, { 811 name: 'num', 812 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.num) || '', 813 encode: false 814 }, { 815 name: 'subAccountName', 816 condition: userInfo === null || userInfo === void 0 ? void 0 : userInfo.subAccountName 817 }, { 818 name: 'subAccountRole', 819 condition: userInfo === null || userInfo === void 0 ? void 0 : userInfo.subAccountRole, 820 encode: false 821 }, { 822 name: 'moneyLevelType', 823 encode: false 824 }, { 825 name: 'specifyVisible', 826 key: 'specifyVisible', 827 encode: false 828 }, {
829 name: 'internalAccount', 830 value: (userInfo === null || userInfo === void 0 ? void 0 : userInfo.internalAccount) ? '1' : '', 831 encode: false 832 }]; 833 return result; 834 }; 835 LoginInfoController.prototype.get = function (ctx) { 836 var _this = this; 837 var cookies = this.parseCookie(); 838 cookies.forEach(function (item) { 839 var _a, _b; 840 var name, _decode; 841 if (_typeof(item) === 'object') { 842 name = item.name; 843 _decode = item.encode === false ? false : true; 844 } else { 845 name = item; 846 _decode = true; 847 } 848 try { 849 var val = ctx ? (_a = ctx.cookies) === null || _a === void 0 ? void 0 : _a.get(name, { 850 signed: false 851 }) : _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.get(name); 852 if (!val || val === null) return; 853 if (name === 'avatar' && val.indexOf('http') === -1) { 854 _this.loginInfo[name] = (0,js_base64__WEBPACK_IMPORTED_MODULE_0__/* .decode */ .D4)(val) || ''; 855 } else { 856 _this.loginInfo[name] = (_decode ? (0,js_base64__WEBPACK_IMPORTED_MODULE_0__/* .decode */ .D4)(val) : val) || ''; 857 } 858 } catch (e) { 859 var val = ctx ? (_b = ctx.cookies) === null || _b === void 0 ? void 0 : _b.get(name, { 860 signed: false 861 }) : _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.get(name); 862 console.log('cookieè§£ææ¥é', name, val); 863 _this.loginInfo[name] = val || ''; 864 } 865 }); 866 return this.loginInfo; 867 }; 868 LoginInfoController.prototype.set = function (userInfo) { 869 function _encode(v) { 870 return typeof v === 'string' ? (0,js_base64__WEBPACK_IMPORTED_MODULE_0__/* .encode */ .lF)(v) : v; 871 } 872 function _cookie(args) { 873 var _args = __assign({ 874 name: '', 875 key: '', 876 value: '', 877 condition: true, 878 encode: true 879 }, _typeof(args) === 'object' ? args : { 880 name: args 881 }); 882 var key = _args.key; 883 var name = _args.name, 884 value = _args.value, 885 encode = _args.encode, 886 condition = _args.condition; 887 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.remove(name); 888 if (!condition) return; 889 if (!key) key = name; 890 var val = userInfo[key]; 891 if (value) val = value; 892 if (val === undefined || val === null) return; 893 val = encode ? _encode(val) : val; 894 var httpsOptions = (0,_index__WEBPACK_IMPORTED_MODULE_1__/* .httpsOptionsConfig */ .Me)(); 895 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.set(name, val, httpsOptions); 896 } 897 var cookies_list = this.parseCookie(userInfo); 898 cookies_list.forEach(_cookie); 899 }; 900 LoginInfoController.prototype.update = function (userInfo) { 901 var _this = this; 902 this.loginInfo = __assign(__assign({}, this.loginInfo), userInfo); 903 Object.keys(userInfo).forEach(function (key) { 904 var val = userInfo[key]; 905 if (val) { 906 var find = _this.parseCookie().find(function (item) { 907 if (_typeof(item) === 'object') { 908 return item.name === key; 909 } 910 return item === key; 911 }); 912 if (find) { 913 if (_typeof(find) === 'object') { 914 var _encode = find.encode === false ? false : true; 915 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.set(find.name, _encode ? (0,js_base64__WEBPACK_IMPORTED_MODULE_0__/* .encode */ .lF)(val) : val); 916 } else { 917 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.set(find, (0,js_base64__WEBPACK_IMPORTED_MODULE_0__/* .encode */ .lF)(val)); 918 } 919 } 920 } 921 }); 922 this.get(); 923 }; 924 LoginInfoController.prototype.clear = function () { 925 var cookies = this.parseCookie(); 926 cookies.forEach(function (item) { 927 if (_typeof(item) === 'object') { 928 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.remove(item.name); 929 } else { 930 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.remove(item); 931 } 932 }); 933 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.remove('awc'); 934 _index__WEBPACK_IMPORTED_MODULE_1__/* .Cookies */ .Wc.remove('cj-agent-flag'); 935 _store__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.del('utmSource'); 936 _store__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.del('loginfromerp'); 937 _store__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.del('erpUserId'); 938 _store__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.del('erpUserName'); 939 _store__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.del(_hook_use_guid_show__WEBPACK_IMPORTED_MODULE_3__/* .STORAGE_GUIDE_DATA */ .E); 940 }; 941 LoginInfoController.prototype.info = function (key) { 942 var _loginInfo = {}; 943 if (Object.keys(this.loginInfo).length === 0 && _index__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd && this.isFirstRunInfo) { 944 _loginInfo = this.get(); 945 this.loginInfo = __assign({}, _loginInfo); 946 this.isFirstRunInfo = false;
947 } 948 if (key) return this.loginInfo[key] || ''; 949 return __assign({}, this.loginInfo); 950 }; 951 LoginInfoController.prototype.isHideSpecialCate = function (cateId) { 952 var _a; 953 if (window && (window === null || window === void 0 ? void 0 : window.siteCheck) && !((_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.isShow('global-qkff'))) { 954 return false; 955 } 956 var hideQKCateIds = ['1712447645563756544', '1711658677159079936']; 957 if (hideQKCateIds.includes(cateId)) { 958 return true; 959 } 960 var level = this.loginInfo['moneyLevelType']; 961 var isVip = this.loginInfo['vip'] == '1'; 962 if (isVip) return false; 963 if (!level || level === '1' || level === '2') { 964 var hideCateIds = ['EF619898-429D-49B6-BD66-49057C06259B', '2EB0613C-E73D-4A09-A21C-90E5F1C227D3', '3B4C41C0-EA46-4F03-A2F4-9A9948947439', '7992143D-A8B2-4A05-A4E4-7F4AF73AA577', '1697200256204677120']; 965 return hideCateIds.includes(cateId); 966 } 967 return false; 968 }; 969 return LoginInfoController; 970}(); 971var loginInfoController = null; 972if (!loginInfoController) { 973 loginInfoController = new LoginInfoController(); 974} 975/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (loginInfoController); 976 977 978/***/ }), 979 980/***/ 12191: 981/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 982 983"use strict"; 984/* harmony export */ __webpack_require__.d(__webpack_exports__, { 985/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 986/* harmony export */ }); 987/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 988/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 989/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 990/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44190); 991/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58965); 992var __assign = undefined && undefined.__assign || function () { 993 __assign = Object.assign || function (t) { 994 for (var s, i = 1, n = arguments.length; i < n; i++) { 995 s = arguments[i]; 996 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 997 } 998 return t; 999 }; 1000 return __assign.apply(this, arguments); 1001}; 1002var __rest = undefined && undefined.__rest || function (s, e) { 1003 var t = {}; 1004 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 1005 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 1006 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 1007 } 1008 return t; 1009}; 1010 1011 1012 1013 1014function addIconFontJs() { 1015 var iconfontScriptId = 'iconfont-mf-mycj-components'; 1016 if (document.querySelector("#".concat(iconfontScriptId))) return; 1017 var style = document.createElement('link'); 1018 style.rel = 'stylesheet'; 1019 style.id = iconfontScriptId; 1020 style.href = "//at.alicdn.com/t/c/font_2820521_fmvep980jwr.css"; 1021 document.head.append(style); 1022} 1023function addFlagCss() { 1024 var flagCssId = 'flag-css-mf-mycj-components'; 1025 if (document.querySelector("#".concat(flagCssId))) return; 1026 var style = document.createElement('link'); 1027 style.rel = 'stylesheet'; 1028 style.id = flagCssId; 1029 style.href = _common_oss_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay.join('.sprite/flag.css'); 1030 document.head.append(style); 1031} 1032if (_common__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 1033 addIconFontJs(); 1034 addFlagCss(); 1035} 1036var Iconfont = function Iconfont(_a) { 1037 var type = _a.type, 1038 size = _a.size, 1039 _b = _a.className, 1040 className = _b === void 0 ? '' : _b, 1041 _c = _a.style, 1042 style = _c === void 0 ? {} : _c, 1043 _d = _a.onClick, 1044 onClick = _d === void 0 ? function (e) {} : _d, 1045 resetProps = __rest(_a, ["type", "size", "className", "style", "onClick"]); 1046 var customizeStyle = {}; 1047 size && (customizeStyle['fontSize'] = size); 1048 if (type.startsWith('cckj-mf-')) { 1049 console.warn('Iconfont: type åºå»æ cckj-mf-'); 1050 } 1051 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("i", __assign({ 1052 className: ['mf-iconfont', "cckj-mf-".concat(type), className].join(' '), 1053 style: __assign(__assign({}, customizeStyle), style), 1054 onClick: onClick 1055 }, resetProps)); 1056}; 1057/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.memo)(Iconfont)); 1058 1059/***/ }), 1060 1061/***/ 12784: 1062/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 1063 1064var isObject = __webpack_require__(41580), 1065 now = __webpack_require__(94495), 1066 toNumber = __webpack_require__(6131); 1067 1068/** Error message constants. */
1069var FUNC_ERROR_TEXT = 'Expected a function'; 1070 1071/* Built-in method references for those with the same name as other `lodash` methods. */ 1072var nativeMax = Math.max, 1073 nativeMin = Math.min; 1074 1075/** 1076 * Creates a debounced function that delays invoking `func` until after `wait` 1077 * milliseconds have elapsed since the last time the debounced function was 1078 * invoked. The debounced function comes with a `cancel` method to cancel 1079 * delayed `func` invocations and a `flush` method to immediately invoke them. 1080 * Provide `options` to indicate whether `func` should be invoked on the 1081 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 1082 * with the last arguments provided to the debounced function. Subsequent 1083 * calls to the debounced function return the result of the last `func` 1084 * invocation. 1085 * 1086 * **Note:** If `leading` and `trailing` options are `true`, `func` is 1087 * invoked on the trailing edge of the timeout only if the debounced function 1088 * is invoked more than once during the `wait` timeout. 1089 * 1090 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 1091 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 1092 * 1093 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 1094 * for details over the differences between `_.debounce` and `_.throttle`. 1095 * 1096 * @static 1097 * @memberOf _ 1098 * @since 0.1.0 1099 * @category Function 1100 * @param {Function} func The function to debounce. 1101 * @param {number} [wait=0] The number of milliseconds to delay. 1102 * @param {Object} [options={}] The options object. 1103 * @param {boolean} [options.leading=false] 1104 * Specify invoking on the leading edge of the timeout. 1105 * @param {number} [options.maxWait] 1106 * The maximum time `func` is allowed to be delayed before it's invoked. 1107 * @param {boolean} [options.trailing=true] 1108 * Specify invoking on the trailing edge of the timeout. 1109 * @returns {Function} Returns the new debounced function. 1110 * @example 1111 * 1112 * // Avoid costly calculations while the window size is in flux. 1113 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 1114 * 1115 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 1116 * jQuery(element).on('click', _.debounce(sendMail, 300, { 1117 * 'leading': true, 1118 * 'trailing': false 1119 * })); 1120 * 1121 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 1122 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 1123 * var source = new EventSource('/stream'); 1124 * jQuery(source).on('message', debounced); 1125 * 1126 * // Cancel the trailing debounced invocation. 1127 * jQuery(window).on('popstate', debounced.cancel); 1128 */ 1129function debounce(func, wait, options) { 1130 var lastArgs, 1131 lastThis, 1132 maxWait, 1133 result, 1134 timerId, 1135 lastCallTime, 1136 lastInvokeTime = 0, 1137 leading = false, 1138 maxing = false, 1139 trailing = true; 1140 1141 if (typeof func != 'function') { 1142 throw new TypeError(FUNC_ERROR_TEXT); 1143 } 1144 wait = toNumber(wait) || 0; 1145 if (isObject(options)) { 1146 leading = !!options.leading; 1147 maxing = 'maxWait' in options; 1148 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 1149 trailing = 'trailing' in options ? !!options.trailing : trailing; 1150 } 1151 1152 function invokeFunc(time) { 1153 var args = lastArgs, 1154 thisArg = lastThis; 1155 1156 lastArgs = lastThis = undefined; 1157 lastInvokeTime = time; 1158 result = func.apply(thisArg, args); 1159 return result; 1160 } 1161 1162 function leadingEdge(time) { 1163 // Reset any `maxWait` timer. 1164 lastInvokeTime = time; 1165 // Start the timer for the trailing edge. 1166 timerId = setTimeout(timerExpired, wait); 1167 // Invoke the leading edge. 1168 return leading ? invokeFunc(time) : result; 1169 } 1170 1171 function remainingWait(time) { 1172 var timeSinceLastCall = time - lastCallTime, 1173 timeSinceLastInvoke = time - lastInvokeTime, 1174 timeWaiting = wait - timeSinceLastCall; 1175 1176 return maxing 1177 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) 1178 : timeWaiting; 1179 } 1180 1181 function shouldInvoke(time) { 1182 var timeSinceLastCall = time - lastCallTime, 1183 timeSinceLastInvoke = time - lastInvokeTime; 1184 1185 // Either this is the first call, activity has stopped and we're at the 1186 // trailing edge, the system time has gone backwards and we're treating 1187 // it as the trailing edge, or we've hit the `maxWait` limit. 1188 return (lastCallTime === undefined || (timeSinceLastCall >= wait) || 1189 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); 1190 } 1191 1192 function timerExpired() { 1193 var time = now(); 1194 if (shouldInvoke(time)) { 1195 return trailingEdge(time); 1196 } 1197 // Restart the timer. 1198 timerId = setTimeout(timerExpired, remainingWait(time)); 1199 } 1200 1201 function trailingEdge(time) { 1202 timerId = undefined; 1203 1204 // Only invoke if we have `lastArgs` which means `func` has been 1205 // debounced at least once. 1206 if (trailing && lastArgs) { 1207 return invokeFunc(time); 1208 } 1209 lastArgs = lastThis = undefined; 1210 return result; 1211 } 1212 1213 function cancel() { 1214 if (timerId !== undefined) { 1215 clearTimeout(timerId); 1216 } 1217 lastInvokeTime = 0; 1218 lastArgs = lastCallTime = lastThis = timerId = undefined; 1219 } 1220 1221 function flush() { 1222 return timerId === undefined ? result : trailingEdge(now()); 1223 } 1224 1225 function debounced() { 1226 var time = now(), 1227 isInvoking = shouldInvoke(time); 1228 1229 lastArgs = arguments; 1230 lastThis = this; 1231 lastCallTime = time; 1232 1233 if (isInvoking) { 1234 if (timerId === undefined) { 1235 return leadingEdge(lastCallTime); 1236 } 1237 if (maxing) { 1238 // Handle invocations in a tight loop. 1239 clearTimeout(timerId); 1240 timerId = setTimeout(timerExpired, wait); 1241 return invokeFunc(lastCallTime); 1242 } 1243 } 1244 if (timerId === undefined) { 1245 timerId = setTimeout(timerExpired, wait); 1246 } 1247 return result; 1248 } 1249 debounced.cancel = cancel; 1250 debounced.flush = flush; 1251 return debounced; 1252} 1253 1254module.exports = debounce; 1255 1256 1257/***/ }), 1258 1259/***/ 13351: 1260/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1261 1262"use strict"; 1263/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1264/* harmony export */ bg: () => (/* binding */ getPageName) 1265/* harmony export */ }); 1266/* unused harmony exports getPageLogo, getPageLogoMobile */ 1267/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44190); 1268/* harmony import */ var _hook_use_site_check__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82058); 1269 1270 1271var getPageName = function getPageName(host, isM) { 1272 if ((host === null || host === void 0 ? void 0 : host.indexOf('paymentAgency')) > -1) { 1273 return 'paymentAgency'; 1274 } 1275 if ((host === null || host === void 0 ? void 0 : host.indexOf('integrations/temu')) > -1) { 1276 return 'temu'; 1277 } 1278 if ((host === null || host === void 0 ? void 0 : host.indexOf('integrations/shopify')) > -1) { 1279 return 'shopify'; 1280 } 1281 if ((host === null || host === void 0 ? void 0 : host.indexOf('integrations/shoplazza')) > -1) { 1282 return 'shoplazza'; 1283 } 1284 if ((host === null || host === void 0 ? void 0 : host.indexOf('integrations/woocommerce')) > -1) { 1285 return 'woocommerce'; 1286 } 1287 if ((host === null || host === void 0 ? void 0 : host.indexOf('free-temu-tiktok-stores')) > -1) { 1288 return 'free-temu-tiktok-stores'; 1289 } 1290 if ((host === null || host === void 0 ? void 0 : host.indexOf('integrations/tiktok-shop')) > -1) { 1291 return 'tiktok-shop'; 1292 } 1293 if ((host === null || host === void 0 ? void 0 : host.indexOf('high-quality-factory')) > -1) { 1294 return 'high-quality-factory'; 1295 } 1296 if ((host === null || host === void 0 ? void 0 : host.indexOf('overview')) > -1) { 1297 return 'overview'; 1298 } 1299 if ((host === null || host === void 0 ? void 0 : host.indexOf('aboutus')) > -1) { 1300 return 'aboutus'; 1301 } 1302 if ((host === null || host === void 0 ? void 0 : host.indexOf('contactus')) > -1) { 1303 return 'contactus'; 1304 } 1305 if ((host === null || host === void 0 ? void 0 : host.indexOf('bulkPurchase')) > -1) { 1306 return 'bulkPurchase'; 1307 } 1308 if ((host === null || host === void 0 ? void 0 : host.indexOf('payment-wed2c')) > -1) { 1309 return 'payment-wed2c'; 1310 } 1311 if ((host === null || host === void 0 ? void 0 : host.indexOf('payment-agency')) > -1) { 1312 return 'payment-agency'; 1313 } 1314 if ((host === null || host === void 0 ? void 0 : host.indexOf('loancredit')) > -1) { 1315 return 'loancredit'; 1316 } 1317 if ((host === null || host === void 0 ? void 0 : host.indexOf('sourcing-agents')) > -1) { 1318 return 'sourcing-agents'; 1319 } 1320 if ((host === null || host === void 0 ? void 0 : host.indexOf('careers')) > -1) { 1321 return 'careers'; 1322 } 1323 if (isM && ((host === null || host === void 0 ? void 0 : host.indexOf('agents')) > -1 || (host === null || host === void 0 ? void 0 : host.indexOf('agents/detail')) > -1)) { 1324 return 'paidService'; 1325 } 1326 if (isM && (host === null || host === void 0 ? void 0 : host.indexOf('global-warehouses')) > -1) { 1327 return 'globalWarehouse'; 1328 } 1329 if (isM && (host === null || host === void 0 ? void 0 : host.indexOf('ready-to-ship')) > -1) { 1330 return 'readyToShip'; 1331 } 1332 if (isM && (host === null || host === void 0 ? void 0 : host.indexOf('mentors')) > -1) { 1333 return 'mentors'; 1334 } 1335 if ((host === null || host === void 0 ? void 0 : host.indexOf('factories')) > -1) { 1336 return 'factories'; 1337 } 1338 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/product-development')) > -1) { 1339 return 'agents-product-development'; 1340 } 1341 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/cogs-reduction')) > -1) { 1342 return 'agents-cogs-reduction'; 1343 } 1344 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/faster-order-fulfillment')) > -1) { 1345 return 'agents-faster-order-fulfillment'; 1346 } 1347 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/shorten-delivery-time')) > -1) { 1348 return 'agents-shorten-delivery-time'; 1349 } 1350 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/cj-account-management')) > -1) { 1351 return 'agents-cj-account-management'; 1352 } 1353 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/customer-success-growth')) > -1) { 1354 return 'agents-customer-success-growth'; 1355 } 1356 if ((host === null || host === void 0 ? void 0 : host.indexOf('agents/visiting-guide')) > -1) { 1357 return 'agents-visiting-guide'; 1358 } 1359 if ((host === null || host === void 0 ? void 0 : host.indexOf('alternatives')) > -1) { 1360 return 'alternatives'; 1361 } 1362 if ((host === null || host === void 0 ? void 0 : host.indexOf('/ai/chatgpt')) > -1) { 1363 return 'chatgpt'; 1364 } 1365 if ((host === null || host === void 0 ? void 0 : host.indexOf('/ai/claude')) > -1) { 1366 return 'claude'; 1367 } 1368 if ((host === null || host === void 0 ? void 0 : host.indexOf('/ai/codex')) > -1) { 1369 return 'codex'; 1370 } 1371 if ((host === null || host === void 0 ? void 0 : host.indexOf('cjdropshipping-vs-zendrop')) > -1) { 1372 return 'cjdropshipping-vs-zendrop'; 1373 } 1374 if ((host === null || host === void 0 ? void 0 : host.indexOf('cjdropshipping-vs-autods')) > -1) { 1375 return 'cjdropshipping-vs-zendrop'; 1376 } 1377 if ((host === null || host === void 0 ? void 0 : host.indexOf('cjdropshipping-vs-spocket')) > -1) { 1378 return 'cjdropshipping-vs-spocket'; 1379 } 1380 if ((host === null || host === void 0 ? void 0 : host.indexOf('cjdropshipping-vs-aliexpress')) > -1) { 1381 return 'cjdropshipping-vs-aliexpress'; 1382 } 1383 if ((host === null || host === void 0 ? void 0 : host.indexOf('cjdropshipping-vs-day-one-fulfillment')) > -1) { 1384 return 'cjdropshipping-vs-day-one-fulfillment'; 1385 } 1386 if ((host === null || host === void 0 ? void 0 : host.indexOf('odm')) > -1) { 1387 return 'odm'; 1388 } 1389 if ((host === null || host === void 0 ? void 0 : host.indexOf('blogs')) > -1) { 1390 return /blogs\/.+/.test(host) ? 'blog-other' : 'blog'; 1391 } 1392 if ((host === null || host === void 0 ? void 0 : host.indexOf('/printonDemand/home')) > -1) { 1393 return 'printon-demand-home'; 1394 } 1395 if ((host === null || host === void 0 ? void 0 : host.indexOf('partnership/home')) > -1) { 1396 return 'partnership-home'; 1397 } 1398 if ((host === null || host === void 0 ? void 0 : host.indexOf('advertisingservice')) > -1) { 1399 return 'advertisingservice'; 1400 } 1401 if (/(^|\/)(cj-)?entity(\/|\?|#|$)/.test(host || '')) { 1402 return 'entity'; 1403 } 1404 if (/(^|\/)cj-business-travel(\/|\?|#|$)/.test(host || '')) { 1405 return 'cj-business-travel'; 1406 } 1407 if (/(^|\/)worldfirst(\/|\?|#|$)/.test(host || '')) { 1408 return 'worldfirst'; 1409 } 1410 return ''; 1411}; 1412var getPageLogo = function getPageLogo(name) { 1413 var siteCheck = useSiteCheck(); 1414 if (name == 'woocommerce' || name == 'shoplazza' || name == 'overview' || name == 'aboutus' || name == 'contactus' || name == 'bulkPurchase' || name == 'payment-wed2c' || name == 'payment-agency' || name == 'agents-product-development' || name == 'agents-cogs-reduction' || name == 'agents-faster-order-fulfillment' || name == 'agents-shorten-delivery-time' || name == 'agents-cj-account-management' || name == 'agents-customer-success-growth' || name == 'agents-visiting-guide' || name == 'free-temu-tiktok-stores' || name == 'loancredit' || name == 'alternatives' || name == 'chatgpt' || name == 'claude' || name == 'codex' || name == 'cjdropshipping-vs-zendrop' || name == 'cjdropshipping-vs-autods' || name == 'cjdropshipping-vs-spocket' || name == 'cjdropshipping-vs-aliexpress' || name == 'cjdropshipping-vs-day-one-fulfillment' || name == 'odm' || name == 'careers' || name == 'printon-demand-home' || name == 'partnership-home' || name == 'advertisingservice' || name == 'entity' || name == 'cj-business-travel' || name == 'worldfirst') { 1415 return siteCheck.data('logo'); 1416 } 1417 return ''; 1418}; 1419var getPageLogoMobile = function getPageLogoMobile(name) { 1420 if (name == 'paymentAgency' || name == 'temu') { 1421 return ossController.join('resources/paymentAgency/logo_mobile.png'); 1422 } 1423 return ''; 1424}; 1425 1426/***/ }), 1427 1428/***/ 14919: 1429/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1430 1431"use strict"; 1432/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1433/* harmony export */ A: () => (/* binding */ RcToolTip) 1434/* harmony export */ }); 1435/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 1436/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 1437/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53373); 1438/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__); 1439/* harmony import */ var rc_tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(86488); 1440/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77517); 1441var __assign = undefined && undefined.__assign || function () { 1442 __assign = Object.assign || function (t) { 1443 for (var s, i = 1, n = arguments.length; i < n; i++) { 1444 s = arguments[i]; 1445 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 1446 } 1447 return t; 1448 }; 1449 return __assign.apply(this, arguments); 1450}; 1451var __rest = undefined && undefined.__rest || function (s, e) { 1452 var t = {}; 1453 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 1454 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 1455 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 1456 } 1457 return t; 1458}; 1459 1460 1461 1462 1463 1464function RcToolTip(_a) { 1465 var _b; 1466 var children = _a.children, 1467 theme = _a.theme, 1468 props = __rest(_a, ["children", "theme"]); 1469 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(rc_tooltip__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, __assign({}, props, { 1470 overlayClassName: classnames__WEBPACK_IMPORTED_MODULE_1___default()((_b = {}, _b[_index_less__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A.tooltipOverlayBox] = true, _b[_index_less__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A.light] = theme === 'light', _b[props.overlayClassName || ''] = !!props.overlayClassName, _b)) 1471 }), children); 1472} 1473 1474/***/ }), 1475 1476/***/ 15442: 1477/***/ ((module) => { 1478 1479"use strict"; 1480module.exports = __WEBPA
1480CK_EXTERNAL_MODULE__15442__; 1481 1482/***/ }), 1483 1484/***/ 16754: 1485/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1486 1487"use strict"; 1488 1489// EXPORTS 1490__webpack_require__.d(__webpack_exports__, { 1491 A: () => (/* binding */ MenuNormal_MultipleMenuItem), 1492 $: () => (/* binding */ showName) 1493}); 1494 1495// EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} 1496var external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(15442); 1497var external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_); 1498;// ./src/components/Menu/MenuNormal/MultipleMenuItem.less 1499// extracted by mini-css-extract-plugin 1500/* harmony default export */ const MultipleMenuItem = ({"multipleMenuItem":"multipleMenuItem--Ut2ov","pb110":"pb110--B6KdA","zs":"zs--fGj6L","tit":"tit--eo1zg","item":"item--TYhGo","link":"link--UzqWO","name":"name--fUMBI","market":"market--EfcvO","active":"active--mPFzl","linkWrapper":"linkWrapper--Chcks","pic":"pic--A4XWf","MiaoshouPlatforms":"MiaoshouPlatforms--Eo0I7","text":"text--GWxKa","images":"images--wr4hF"}); 1501// EXTERNAL MODULE: ../../node_modules/classnames/index.js 1502var classnames = __webpack_require__(53373); 1503var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 1504// EXTERNAL MODULE: ./src/components/Menu/hooks/useMyCjReactRoute.ts 1505var useMyCjReactRoute = __webpack_require__(92252); 1506// EXTERNAL MODULE: ./src/hook/use-platform-href.ts 1507var use_platform_href = __webpack_require__(50137); 1508// EXTERNAL MODULE: ./src/hook/use-site-check.ts 1509var use_site_check = __webpack_require__(82058); 1510;// ./src/universalComps/lazy-image/index.tsx 1511var __assign = undefined && undefined.__assign || function () { 1512 __assign = Object.assign || function (t) { 1513 for (var s, i = 1, n = arguments.length; i < n; i++) { 1514 s = arguments[i]; 1515 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 1516 } 1517 return t; 1518 }; 1519 return __assign.apply(this, arguments); 1520}; 1521var __rest = undefined && undefined.__rest || function (s, e) { 1522 var t = {}; 1523 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 1524 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 1525 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 1526 } 1527 return t; 1528}; 1529 1530 1531function intersectionObserver(el, callback) { 1532 var io = new IntersectionObserver(function (ioes) { 1533 if (ioes[0].intersectionRatio <= 0) return; 1534 el.onerror = function () { 1535 io.unobserve(el); 1536 io.disconnect(); 1537 }; 1538 callback === null || callback === void 0 ? void 0 : callback(); 1539 }); 1540 io.observe(el); 1541 return io; 1542} 1543var LazyImage = function LazyImage(_a) { 1544 var source = _a.src, 1545 noDefault = _a.noDefault, 1546 props = __rest(_a, ["src", "noDefault"]); 1547 var siteCheck = (0,use_site_check/* default */.A)(); 1548 var defaultSrc = siteCheck.source('img_default.jpeg'); 1549 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(defaultSrc), 1550 src = _b[0], 1551 setSrc = _b[1]; 1552 var ref = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null); 1553 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 1554 var _a; 1555 var io = intersectionObserver(ref.current, function () { 1556 setSrc(source); 1557 io.unobserve(ref.current); 1558 io.disconnect(); 1559 }); 1560 (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener('error', function () { 1561 !noDefault && setSrc(defaultSrc); 1562 }); 1563 }, []); 1564 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", __assign({ 1565 key: src, 1566 ref: ref, 1567 src: src 1568 }, props)); 1569}; 1570/* harmony default export */ const lazy_image = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(LazyImage)); 1571;// ./src/components/Menu/assets/miao_shou_platforms.png 1572/* harmony default export */ const miao_shou_platforms = (__webpack_require__.p + "assets/miao_shou_platforms.429d1cfd.png"); 1573// EXTERNAL MODULE: ./src/common/gtag.ts 1574var gtag = __webpack_require__(11543); 1575;// ./src/components/Menu/MenuNormal/MultipleMenuItem.tsx 1576var MultipleMenuItem_assign = undefined && undefined.__assign || function () { 1577 MultipleMenuItem_assign = Object.assign || function (t) { 1578 for (var s, i = 1, n = arguments.length; i < n; i++) { 1579 s = arguments[i]; 1580 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 1581 } 1582 return t; 1583 }; 1584 return MultipleMenuItem_assign.apply(this, arguments); 1585}; 1586 1587 1588 1589 1590 1591 1592 1593 1594var showName = function showName(_a) { 1595 var key = _a.key, 1596 name = _a.name, 1597 count = _a.count, 1598 _b = _a.showCount, 1599 showCount = _b === void 0 ? true : _b; 1600 if (/tiktok_us|tiktok_us_cross|tiktok|temu|temu_us_local|shein/i.test(key)) { 1601 var i18nName = { 1602 tiktok_us: window.i18next.t('common-mycj-menu-tiktok-us', 'TikTok-US'), 1603 tiktok_us_cross: window.i18next.t('common-mycj-menu-tiktok-us', 'TikTok-US'), 1604 tiktok: window.i18next.t('common-mycj-menu-tiktok', 'TikTok'), 1605 temu: window.i18next.t('common-mycj-menu-temu', 'Temu'), 1606 temu_us_local: window.i18next.t('common-mycj-menu-temu', 'Temu'), 1607 temu_certified_overseas: window.i18next.t('common-mycj-menu-temu', 'Temu'), 1608 shein: window.i18next.t('common-mycj-menu-shein', 'Shein') 1609 }; 1610 var market = { 1611 tiktok_us: window.i18next.t('common-mycj-menu-us-local', 'US Local'), 1612 tiktok_us_cross: window.i18next.t('common-mycj-menu-cross-border', 'Cross Border'), 1613 tiktok: window.i18next.t('common-mycj-menu-non-us', 'Non-US'), 1614 temu: window.i18next.t('common-mycj-menu-temu-semi-managed', 'Semi-Managed'), 1615 temu_us_local: window.i18next.t('common-mycj-menu-temu-local', 'Local'), 1616 temu_certified_overseas: window.i18next.t('common-mycj-menu-temu-cooperative-warehouse', 'Cooperative Warehouse'), 1617 shein: window.i18next.t('common-mycj-menu-temu-semi-managed', 'Semi-Managed') 1618 }; 1619 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1620 className: "".concat(MultipleMenuItem.name, " specialName") 1621 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", null, i18nName[key], " ", count > 0 && showCount ? "(".concat(count, ")") : null), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1622 className: "".concat(MultipleMenuItem.market, " market") 1623 }, market[key])); 1624 } 1625 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1626 className: "".concat(MultipleMenuItem.name, " specialName") 1627 }, name, " ", count > 0 && showCount ? "(".concat(count, ")") : null); 1628}; 1629function MultipleMenuItem_MultipleMenuItem(_a) { 1630 var _b; 1631 var _c; 1632 var list = _a.list; 1633 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 1634 var platformHref = (0,use_platform_href/* default */.A)(); 1635 var isZesty = window.siteCheck.isSite('ZS'); 1636 var crossList = list.filter(function (item) { 1637 return !item.isErpPlatform; 1638 }); 1639 var erpList = list.filter(function (item) { 1640 return item.isErpPlatform && item.isShow; 1641 }).sort(function (a, b) { 1642 if (a.key === 'miaoshou') return -1; 1643 if (b.key === 'miaoshou') return 1; 1644 return 0; 1645 }); 1646 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1647 className: classnames_default()(MultipleMenuItem.multipleMenuItem, (_b = {}, _b[MultipleMenuItem.pb110] = erpList.length > 0 && ((_c = erpList.filter(function (_) { 1648 return _.key === 'miaoshou'; 1649 })) === null || _c === void 0 ? void 0 : _c.length) > 0, _b[MultipleMenuItem.zs] = isZesty, _b)) 1650 }, (erpList === null || erpList === void 0 ? void 0 : erpList.length) > 0 && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1651 className: MultipleMenuItem.tit 1652 }, window.i18next.t('common-platforms-tit-cross', 'Ecommerce Platforms'))), isZesty && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1653 className: MultipleMenuItem.tit 1654 }, window.i18next.t('common-platforms-tit-zesty-platforms', 'Platforms'))), crossList.map(function (item) { 1655 var _a; 1656 if (!item.isShow) return null; 1657 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1658 className: classnames_default()(MultipleMenuItem.item, (_a = {}, _a[MultipleMenuItem.active] = item.isActive, _a)), 1659 key: item.name 1660 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MultipleMenuItem_assign({ 1661 href: platformHref(item.link), 1662 className: MultipleMenuItem.link 1663 }, hookMyCjRoute.getAProps(item.link), { 1664 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.key || item.name) 1665 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1666 className: MultipleMenuItem.linkWrapper 1667 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(lazy_image, { 1668 src: item.imageUrl, 1669 alt: item.name, 1670 className: MultipleMenuItem.pic 1671 }), showName({ 1672 key: item.key, 1673 name: item.name, 1674 count: item.count 1675 }
1675)))); 1676 }), erpList.length > 0 && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1677 className: MultipleMenuItem.tit, 1678 style: { 1679 marginTop: 18 1680 } 1681 }, window.i18next.t('common-platforms-tit-erp', 'ERP Platforms'))), erpList.map(function (item) { 1682 var _a; 1683 if (!item.isShow) return null; 1684 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1685 className: classnames_default()(MultipleMenuItem.item, (_a = {}, _a[MultipleMenuItem.active] = item.isActive, _a)), 1686 key: item.name 1687 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MultipleMenuItem_assign({ 1688 href: platformHref(item.link), 1689 className: MultipleMenuItem.link 1690 }, hookMyCjRoute.getAProps(item.link), { 1691 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.key || item.name) 1692 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1693 className: MultipleMenuItem.linkWrapper 1694 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(lazy_image, { 1695 src: item.imageUrl, 1696 alt: item.name, 1697 className: MultipleMenuItem.pic 1698 }), showName({ 1699 key: item.key, 1700 name: item.name, 1701 count: item.count 1702 }))), item.key === 'miaoshou' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1703 className: MultipleMenuItem.MiaoshouPlatforms 1704 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 1705 className: MultipleMenuItem.text 1706 }, window.i18next.t('common-connect-e-commerce-platforms-miaoshou-erp', 'Connect E-commerce Platforms via Miaoshou ERP')), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(lazy_image, { 1707 src: miao_shou_platforms, 1708 alt: "miaoshou", 1709 className: MultipleMenuItem.images 1710 })))); 1711 })); 1712} 1713/* harmony default export */ const MenuNormal_MultipleMenuItem = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MultipleMenuItem_MultipleMenuItem)); 1714 1715/***/ }), 1716 1717/***/ 17502: 1718/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1719 1720"use strict"; 1721/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1722/* harmony export */ A: () => (/* binding */ _objectWithoutPropertiesLoose) 1723/* harmony export */ }); 1724function _objectWithoutPropertiesLoose(r, e) { 1725 if (null == r) return {}; 1726 var t = {}; 1727 for (var n in r) if ({}.hasOwnProperty.call(r, n)) { 1728 if (-1 !== e.indexOf(n)) continue; 1729 t[n] = r[n]; 1730 } 1731 return t; 1732} 1733 1734 1735/***/ }), 1736 1737/***/ 17545: 1738/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 1739 1740"use strict"; 1741/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1742/* harmony export */ A: () => (/* binding */ _typeof) 1743/* harmony export */ }); 1744function _typeof(o) { 1745 "@babel/helpers - typeof"; 1746 1747 return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { 1748 return typeof o; 1749 } : function (o) { 1750 return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; 1751 }, _typeof(o); 1752} 1753 1754 1755/***/ }), 1756 1757/***/ 19284: 1758/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1759 1760"use strict"; 1761/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1762/* harmony export */ A9: () => (/* binding */ getNodeRef), 1763/* harmony export */ K4: () => (/* binding */ composeRef), 1764/* harmony export */ Xf: () => (/* binding */ fillRef), 1765/* harmony export */ f3: () => (/* binding */ supportRef), 1766/* harmony export */ xK: () => (/* binding */ useComposeRef) 1767/* harmony export */ }); 1768/* unused harmony export supportNodeRef */ 1769/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 1770/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 1771/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 1772/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(53790); 1773/* harmony import */ var _hooks_useMemo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34511); 1774/* harmony import */ var _React_isFragment__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20785); 1775 1776 1777 1778 1779 1780var ReactMajorVersion = Number(react__WEBPACK_IMPORTED_MODULE_1__.version.split('.')[0]); 1781var fillRef = function fillRef(ref, node) { 1782 if (typeof ref === 'function') { 1783 ref(node); 1784 } else if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(ref) === 'object' && ref && 'current' in ref) { 1785 ref.current = node; 1786 } 1787}; 1788 1789/** 1790 * Merge refs into one ref function to support ref passing. 1791 */
1792var composeRef = function composeRef() { 1793 for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) { 1794 refs[_key] = arguments[_key]; 1795 } 1796 var refList = refs.filter(Boolean); 1797 if (refList.length <= 1) { 1798 return refList[0]; 1799 } 1800 return function (node) { 1801 refs.forEach(function (ref) { 1802 fillRef(ref, node); 1803 }); 1804 }; 1805}; 1806var useComposeRef = function useComposeRef() { 1807 for (var _len2 = arguments.length, refs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 1808 refs[_key2] = arguments[_key2]; 1809 } 1810 return (0,_hooks_useMemo__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 1811 return composeRef.apply(void 0, refs); 1812 }, refs, function (prev, next) { 1813 return prev.length !== next.length || prev.every(function (ref, i) { 1814 return ref !== next[i]; 1815 }); 1816 }); 1817}; 1818var supportRef = function supportRef(nodeOrComponent) { 1819 var _type$prototype, _nodeOrComponent$prot; 1820 if (!nodeOrComponent) { 1821 return false; 1822 } 1823 1824 // React 19 no need `forwardRef` anymore. So just pass if is a React element. 1825 if (isReactElement(nodeOrComponent) && ReactMajorVersion >= 19) { 1826 return true; 1827 } 1828 var type = (0,react_is__WEBPACK_IMPORTED_MODULE_2__.isMemo)(nodeOrComponent) ? nodeOrComponent.type.type : nodeOrComponent.type; 1829 1830 // Function component node 1831 if (typeof type === 'function' && !((_type$prototype = type.prototype) !== null && _type$prototype !== void 0 && _type$prototype.render) && type.$$typeof !== react_is__WEBPACK_IMPORTED_MODULE_2__.ForwardRef) { 1832 return false; 1833 } 1834 1835 // Class component 1836 if (typeof nodeOrComponent === 'function' && !((_nodeOrComponent$prot = nodeOrComponent.prototype) !== null && _nodeOrComponent$prot !== void 0 && _nodeOrComponent$prot.render) && nodeOrComponent.$$typeof !== react_is__WEBPACK_IMPORTED_MODULE_2__.ForwardRef) { 1837 return false; 1838 } 1839 return true; 1840}; 1841function isReactElement(node) { 1842 return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.isValidElement)(node) && !(0,_React_isFragment__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(node); 1843} 1844var supportNodeRef = function supportNodeRef(node) { 1845 return isReactElement(node) && supportRef(node); 1846}; 1847 1848/** 1849 * In React 19. `ref` is not a property from node. 1850 * But a property from `props.ref`. 1851 * To check if `props.ref` exist or fallback to `ref`. 1852 */ 1853var getNodeRef = function getNodeRef(node) { 1854 if (node && isReactElement(node)) { 1855 var ele = node; 1856 1857 // Source from: 1858 // https://github.com/mui/material-ui/blob/master/packages/mui-utils/src/getReactNodeRef/getReactNodeRef.ts 1859 return ele.props.propertyIsEnumerable('ref') ? ele.props.ref : ele.ref; 1860 } 1861 return null; 1862}; 1863 1864/***/ }), 1865 1866/***/ 20000:
1867/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1868 1869"use strict"; 1870/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1871/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 1872/* harmony export */ }); 1873var replacePrefixForApi = { 1874 'elastic-api': { 1875 normal: 'website-api', 1876 vip: 'website-vip-api' 1877 }, 1878 'order-center': { 1879 vip: 'order-center-vip' 1880 } 1881}; 1882/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (replacePrefixForApi); 1883 1884/***/ }), 1885 1886/***/ 20181: 1887/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 1888 1889"use strict"; 1890/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1891/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 1892/* harmony export */ }); 1893/* harmony import */ var rc_util_es_raf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67536); 1894/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 1895/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 1896 1897 1898/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () { 1899 var nextFrameRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(null); 1900 function cancelNextFrame() { 1901 rc_util_es_raf__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.cancel(nextFrameRef.current); 1902 } 1903 function nextFrame(callback) { 1904 var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; 1905 cancelNextFrame(); 1906 var nextFrameId = (0,rc_util_es_raf__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(function () { 1907 if (delay <= 1) { 1908 callback({ 1909 isCanceled: function isCanceled() { 1910 return nextFrameId !== nextFrameRef.current; 1911 } 1912 }); 1913 } else { 1914 nextFrame(callback, delay - 1); 1915 } 1916 }); 1917 nextFrameRef.current = nextFrameId; 1918 } 1919 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 1920 return function () { 1921 cancelNextFrame(); 1922 }; 1923 }, []); 1924 return [nextFrame, cancelNextFrame]; 1925}); 1926 1927/***/ }), 1928 1929/***/ 20194: 1930/***/ ((__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) => { 1931 1932"use strict"; 1933/* harmony import */ var _components_CjHeader_get_top_nav_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72777); 1934/* harmony import */ var _hook_useAxios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(92513); 1935/* harmony import */ var _check_site_show__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27880); 1936/* harmony import */ var _cj_href__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84963); 1937/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12097); 1938/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81002); 1939var __assign = undefined && undefined.__assign || function () { 1940 __assign = Object.assign || function (t) { 1941 for (var s, i = 1, n = arguments.length; i < n; i++) { 1942 s = arguments[i]; 1943 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 1944 } 1945 return t; 1946 }; 1947 return __assign.apply(this, arguments); 1948}; 1949 1950 1951 1952 1953 1954 1955 1956/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (function (props) { 1957 var _a, _b; 1958 var ctx = props.ctx, 1959 getDomainByUrl = props.getDomainByUrl, 1960 _c = props.platform, 1961 platform = _c === void 0 ? 'cj' : _c; 1962 var i18n = ctx ? ctx.i18nextInstance : window.i18next; 1963 var loginInfo = new LoginInfoController().get(ctx); 1964 var otherCookies = getOtherCookies({ 1965 ctx: ctx 1966 }); 1967 var host = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.host) !== null && _a !== void 0 ? _a : ''; 1968 var $axios = getAxios(loginInfo.token, getDomainByUrl); 1969 var cjDomain = platform === 'cj' ? '/' : cjHref('/', host); 1970 if (ctx === null || ctx === void 0 ? void 0 : ctx.service_cookies) { 1971 otherCookies.lng = ctx.service_cookies.lng; 1972 } 1973 var siteCheck = new SiteCheck({ 1974 getDomainByUrl: getDomainByUrl, 1975 ctx: ctx 1976 }); 1977 var lng = (_b = otherCookies.lng) !== null && _b !== void 0 ? _b : siteCheck.get().data('default-lng') || 'en'; 1978 if (!sixCountryLanguage.includes(lng)) lng = siteCheck.get().data('default-lng') || 'en'; 1979 var isGoogleTranslate = !sixCountryLanguage.includes(otherCookies.lng); 1980 var isCj = platform === 'cj'; 1981 var isGlobalWarehouse = platform === 'global-warehouse'; 1982 var querySearch = getQueryParams({ 1983 ctx: ctx 1984 }); 1985 var path = ctx ? ctx.request.path || '' : location.pathname; 1986 var _MatchReqHost = ctx ? ctx.originalUrl : ''; 1987 if ((_MatchReqHost === null || _MatchReqHost === void 0 ? void 0 : _MatchReqHost.indexOf('paymentAgency')) > -1 && platform === 'cj') { 1988 cjDomain = cjHref('/', ctx === null || ctx === void 0 ? void 0 : ctx.request.host); 1989 } 1990 var isM = isMobile(ctx); 1991 return __assign(__assign({}, props), { 1992 otherCookies: otherCookies, 1993 querySearch: querySearch, 1994 loginInfo: loginInfo, 1995 cjDomain: cjDomain, 1996 host: host, 1997 path: path, 1998 i18n: i18n, 1999 siteCheck: siteCheck, 2000 isCj: isCj, 2001 isGlobalWarehouse: isGlobalWarehouse, 2002 $axios: $axios, 2003 isGoogleTranslate: isGoogleTranslate, 2004 lng: lng, 2005 isM: isM, 2006 _MatchReqHost: _MatchReqHost 2007 }); 2008}); 2009 2010/***/ }), 2011 2012/***/ 20205: 2013/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2014 2015"use strict"; 2016/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2017/* harmony export */ A: () => (/* binding */ toPropertyKey) 2018/* harmony export */ }); 2019/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 2020/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79824); 2021 2022 2023function toPropertyKey(t) { 2024 var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(t, "string"); 2025 return "symbol" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(i) ? i : i + ""; 2026} 2027 2028 2029/***/ }), 2030 2031/***/ 20785: 2032/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2033 2034"use strict"; 2035/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2036/* harmony export */ A: () => (/* binding */ isFragment) 2037/* harmony export */ }); 2038/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 2039 2040var REACT_ELEMENT_TYPE_18 = Symbol.for('react.element'); 2041var REACT_ELEMENT_TYPE_19 = Symbol.for('react.transitional.element'); 2042var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); 2043 2044/** 2045 * Compatible with React 18 or 19 to check if node is a Fragment. 2046 */ 2047function isFragment(object) { 2048 return ( 2049 // Base object type 2050 object && (0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(object) === 'object' && ( 2051 // React Element type 2052 object.$$typeof === REACT_ELEMENT_TYPE_18 || object.$$typeof === REACT_ELEMENT_TYPE_19) && 2053 // React Fragment type 2054 object.type === REACT_FRAGMENT_TYPE 2055 ); 2056} 2057 2058/***/ }), 2059 2060/***/ 21421: 2061/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2062 2063"use strict"; 2064/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2065/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 2066/* harmony export */ }); 2067/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 2068/* harmony import */ var _common_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 2069/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12097); 2070 2071 2072 2073var AddStore = function () { 2074 function AddStore() { 2075 this.addStoreKey = 'installedApp'; 2076 this.addStoreList = []; 2077 var userId = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.info('userId'); 2078 if (userId) { 2079 this.addStoreKey = "installedApp_".concat(userId); 2080 } 2081 if (_common_index__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 2082 this.get(); 2083 } 2084 } 2085 AddStore.prototype.get = function () { 2086 var _a; 2087 this.addStoreList = (_a = _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.addStoreKey, { 2088 parse: true 2089 })) === null || _a === void 0 ? void 0 : _a.value; 2090 return _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.addStoreKey, { 2091 parse: true 2092 }); 2093 }; 2094 AddStore.prototype.del = function () { 2095 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.del(this.addStoreKey); 2096 }; 2097 AddStore.prototype.save = function (data) { 2098 var allKeys = Object.keys(localStorage); 2099 allKeys.forEach(function (key) { 2100 if (key.startsWith('installedApp_')) { 2101 localStorage.removeItem(key); 2102 } 2103 }); 2104 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set(this.addStoreKey, { 2105 value: data, 2106 expire: new Date().getTime() + 1000 * 60 * 10 2107 }); 2108 }; 2109 return AddStore; 2110}(); 2111/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AddStore); 2112 2113/***/ }), 2114 2115/***/ 22128: 2116/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2117 2118"use strict"; 2119/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2120/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 2121/* harmony export */ }); 2122// extracted by mini-css-extract-plugin 2123/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"wrapperTooltip":"wrapperTooltip--Sv_9_","tooltip":"tooltip--llVdk","box":"box--d5ApC","content":"content--jE76g","arrow":"arrow--DjN_p","rightArrow":"rightArrow--UlF5m","white":"white--T6tqr"}); 2124 2125/***/ }), 2126 2127/***/ 22616: 2128/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2129 2130"use strict"; 2131/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2132/* harmony export */ OV: () => (/* binding */ unobserve), 2133/* harmony export */ lB: () => (/* binding */ observe) 2134/* harmony export */ }); 2135/* unused harmony exports _el, _rs */ 2136/* harmony import */ var resize_observer_polyfill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(99126); 2137 2138// =============================== Const =============================== 2139var elementListeners = new Map(); 2140function onResize(entities) {
2141 entities.forEach(function (entity) { 2142 var _elementListeners$get; 2143 var target = entity.target; 2144 (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) { 2145 return listener(target); 2146 }); 2147 }); 2148} 2149 2150// Note: ResizeObserver polyfill not support option to measure border-box resize 2151var resizeObserver = new resize_observer_polyfill__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A(onResize); 2152 2153// Dev env only 2154var _el = (/* unused pure expression or super */ null && ( false ? 0 : null)); // eslint-disable-line 2155var _rs = (/* unused pure expression or super */ null && ( false ? 0 : null)); // eslint-disable-line 2156 2157// ============================== Observe ============================== 2158function observe(element, callback) { 2159 if (!elementListeners.has(element)) { 2160 elementListeners.set(element, new Set()); 2161 resizeObserver.observe(element); 2162 } 2163 elementListeners.get(element).add(callback); 2164} 2165function unobserve(element, callback) { 2166 if (elementListeners.has(element)) { 2167 elementListeners.get(element).delete(callback); 2168 if (!elementListeners.get(element).size) { 2169 resizeObserver.unobserve(element); 2170 elementListeners.delete(element); 2171 } 2172 } 2173} 2174 2175/***/ }), 2176 2177/***/ 23126: 2178/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2179 2180"use strict"; 2181 2182// EXPORTS 2183__webpack_require__.d(__webpack_exports__, { 2184 "default": () => (/* binding */ components_message) 2185}); 2186 2187// EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} 2188var external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(15442); 2189var external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_); 2190// EXTERNAL MODULE: ../../node_modules/classnames/index.js 2191var classnames = __webpack_require__(53373); 2192var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 2193// EXTERNAL MODULE: external {"root":"ReactDOM","commonjs2":"react-dom","commonjs":"react-dom","amd":"react-dom"} 2194var external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(56003); 2195// EXTERNAL MODULE: ../../node_modules/lodash/debounce.js 2196var debounce = __webpack_require__(12784); 2197var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce); 2198;// ./src/components/message/index.less 2199// extracted by mini-css-extract-plugin 2200/* harmony default export */ const message = ({}); 2201;// ./src/components/message/index.tsx 2202var __assign = undefined && undefined.__assign || function () { 2203 __assign = Object.assign || function (t) { 2204 for (var s, i = 1, n = arguments.length; i < n; i++) { 2205 s = arguments[i]; 2206 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 2207 } 2208 return t; 2209 }; 2210 return __assign.apply(this, arguments); 2211}; 2212 2213 2214 2215 2216 2217var Message = function Message(_a) { 2218 var icon = _a.icon, 2219 content = _a.content, 2220 _b = _a.type, 2221 type = _b === void 0 ? 'info' : _b, 2222 onClose = _a.onClose; 2223 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 2224 var t = setTimeout(onClose, 1000); 2225 return function () { 2226 t && clearTimeout(t); 2227 }; 2228 }, []); 2229 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 2230 className: classnames_default()("fastLogin-alert fastLogin-alert-".concat(type)), 2231 onClick: onClose 2232 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 2233 className: "fastLogin-text" 2234 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("label", null, content))); 2235}; 2236var getContainer = function getContainer() { 2237 var container = document.querySelector('#customMessageWrapper'); 2238 if (!container) { 2239 var _container = document.createElement('div'); 2240 _container.id = 'customMessageWrapper'; 2241 document.body.appendChild(_container); 2242 return _container; 2243 } 2244 return container; 2245}; 2246var _message = function _message(type) { 2247 return function (props) { 2248 var container = getContainer(); 2249 var _dom = document.createElement('div'); 2250 _dom.classList.add('fastLogin-alert-main'); 2251 container.appendChild(_dom); 2252 var hanldeClose = function hanldeClose() { 2253 (0,external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_.unmountComponentAtNode)(_dom); 2254 container.removeChild(_dom); 2255 }; 2256 (0,external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_.render)(/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Message, __assign({}, props, { 2257 type: type, 2258 onClose: debounce_default()(hanldeClose, 500) 2259 })), _dom); 2260 }; 2261}; 2262var error = _message('error'); 2263var warning = _message('warning'); 2264var success = _message('success'); 2265var info = _message('info'); 2266/* harmony default export */ const components_message = ({ 2267 error: error, 2268 warning: warning, 2269 success: success, 2270 info: info 2271}); 2272 2273/***/ }), 2274 2275/***/ 23171: 2276/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2277 2278"use strict"; 2279/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2280/* harmony export */ A: () => (/* binding */ _iterableToArrayLimit) 2281/* harmony export */ }); 2282function _iterableToArrayLimit(r, l) { 2283 var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; 2284 if (null != t) { 2285 var e, 2286 n, 2287 i, 2288 u, 2289 a = [], 2290 f = !0, 2291 o = !1; 2292 try { 2293 if (i = (t = t.call(r)).next, 0 === l) { 2294 if (Object(t) !== t) return; 2295 f = !1; 2296 } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); 2297 } catch (r) { 2298 o = !0, n = r; 2299 } finally {
2300 try { 2301 if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; 2302 } finally { 2303 if (o) throw n; 2304 } 2305 } 2306 return a; 2307 } 2308} 2309 2310 2311/***/ }), 2312 2313/***/ 23294: 2314/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2315 2316"use strict"; 2317/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2318/* harmony export */ A: () => (/* binding */ Popup) 2319/* harmony export */ }); 2320/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53373); 2321/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__); 2322/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 2323/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 2324 2325 2326function Popup(props) { 2327 var children = props.children, 2328 prefixCls = props.prefixCls, 2329 id = props.id, 2330 innerStyle = props.overlayInnerStyle, 2331 bodyClassName = props.bodyClassName, 2332 className = props.className, 2333 style = props.style; 2334 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", { 2335 className: classnames__WEBPACK_IMPORTED_MODULE_0___default()("".concat(prefixCls, "-content"), className), 2336 style: style 2337 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", { 2338 className: classnames__WEBPACK_IMPORTED_MODULE_0___default()("".concat(prefixCls, "-inner"), bodyClassName), 2339 id: id, 2340 role: "tooltip", 2341 style: innerStyle 2342 }, typeof children === 'function' ? children() : children)); 2343} 2344 2345/***/ }), 2346 2347/***/ 23492: 2348/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2349 2350"use strict"; 2351/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2352/* harmony export */ A: () => (/* binding */ _arrayWithoutHoles) 2353/* harmony export */ }); 2354/* harmony import */ var _arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86284); 2355 2356function _arrayWithoutHoles(r) { 2357 if (Array.isArray(r)) return (0,_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r); 2358} 2359 2360 2361/***/ }), 2362 2363/***/ 23581: 2364/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2365 2366"use strict"; 2367/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2368/* harmony export */ A: () => (/* binding */ Arrow) 2369/* harmony export */ }); 2370/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53373); 2371/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__); 2372/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 2373/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 2374 2375 2376function Arrow(props) { 2377 var prefixCls = props.prefixCls, 2378 align = props.align, 2379 arrow = props.arrow, 2380 arrowPos = props.arrowPos; 2381 var _ref = arrow || {}, 2382 className = _ref.className, 2383 content = _ref.content; 2384 var _arrowPos$x = arrowPos.x, 2385 x = _arrowPos$x === void 0 ? 0 : _arrowPos$x, 2386 _arrowPos$y = arrowPos.y, 2387 y = _arrowPos$y === void 0 ? 0 : _arrowPos$y; 2388 var arrowRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(); 2389 2390 // Skip if no align 2391 if (!align || !align.points) { 2392 return null; 2393 } 2394 var alignStyle = { 2395 position: 'absolute' 2396 }; 2397 2398 // Skip if no need to align 2399 if (align.autoArrow !== false) { 2400 var popupPoints = align.points[0]; 2401 var targetPoints = align.points[1]; 2402 var popupTB = popupPoints[0]; 2403 var popupLR = popupPoints[1]; 2404 var targetTB = targetPoints[0]; 2405 var targetLR = targetPoints[1]; 2406 2407 // Top & Bottom 2408 if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) { 2409 alignStyle.top = y; 2410 } else if (popupTB === 't') { 2411 alignStyle.top = 0; 2412 } else { 2413 alignStyle.bottom = 0; 2414 } 2415 2416 // Left & Right 2417 if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) { 2418 alignStyle.left = x; 2419 } else if (popupLR === 'l') { 2420 alignStyle.left = 0; 2421 } else { 2422 alignStyle.right = 0; 2423 } 2424 } 2425 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", { 2426 ref: arrowRef, 2427 className: classnames__WEBPACK_IMPORTED_MODULE_0___default()("".concat(prefixCls, "-arrow"), className), 2428 style: alignStyle 2429 }, content); 2430} 2431 2432/***/ }), 2433 2434/***/ 23660: 2435/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2436 2437"use strict"; 2438/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2439/* harmony export */ C: () => (/* binding */ CollectionContext), 2440/* harmony export */ p: () => (/* binding */ Collection) 2441/* harmony export */ }); 2442/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 2443/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 2444 2445var CollectionContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); 2446/** 2447 * Collect all the resize event from children ResizeObserver 2448 */ 2449function Collection(_ref) { 2450 var children = _ref.children, 2451 onBatchResize = _ref.onBatchResize; 2452 var resizeIdRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0); 2453 var resizeInfosRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef([]); 2454 var onCollectionResize = react__WEBPACK_IMPORTED_MODULE_0__.useContext(CollectionContext); 2455 var onResize = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (size, element, data) { 2456 resizeIdRef.current += 1; 2457 var currentId = resizeIdRef.current; 2458 resizeInfosRef.current.push({ 2459 size: size, 2460 element: element, 2461 data: data 2462 }); 2463 Promise.resolve().then(function () { 2464 if (currentId === resizeIdRef.current) { 2465 onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current); 2466 resizeInfosRef.current = []; 2467 } 2468 }); 2469 2470 // Continue bubbling if parent exist 2471 onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data); 2472 }, [onBatchResize, onCollectionResize]); 2473 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(CollectionContext.Provider, { 2474 value: onResize 2475 }, children); 2476} 2477 2478/***/ }), 2479 2480/***/ 24586: 2481/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 2482 2483"use strict"; 2484/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2485/* harmony export */ A: () => (/* binding */ _defineProperty) 2486/* harmony export */ }); 2487/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20205); 2488 2489function _defineProperty(e, r, t) { 2490 return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r)) in e ? Object.defineProperty(e, r, { 2491 value: t, 2492 enumerable: !0, 2493 configurable: !0, 2494 writable: !0 2495 }) : e[r] = t, e; 2496} 2497 2498 2499/***/ }), 2500 2501/***/ 24628: 2502/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 2503 2504"use strict"; 2505/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2506/* harmony export */ A: () => (/* binding */ useAlign) 2507/* harmony export */ }); 2508/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 2509/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79082); 2510/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28299); 2511/* harmony import */ var rc_util_es_Dom_isVisible__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3700); 2512/* harmony import */ var rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9449); 2513/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(84238); 2514/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15442); 2515/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__); 2516/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(61225); 2517 2518 2519 2520 2521 2522 2523 2524 2525function getUnitOffset(size) { 2526 var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 2527 var offsetStr = "".concat(offset); 2528 var cells = offsetStr.match(/^(.*)\%$/); 2529 if (cells) { 2530 return size * (parseFloat(cells[1]) / 100); 2531 } 2532 return parseFloat(offsetStr); 2533} 2534function getNumberOffset(rect, offset) { 2535 var _ref = offset || [], 2536 _ref2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_ref, 2), 2537 offsetX = _ref2[0], 2538 offsetY = _ref2[1]; 2539 return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)]; 2540} 2541function splitPoints() { 2542 var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; 2543 return [points[0], points[1]]; 2544} 2545function getAlignPoint(rect, points) { 2546 var topBottom = points[0]; 2547 var leftRight = points[1]; 2548 var x; 2549 var y; 2550 2551 // Top & Bottom
2552 if (topBottom === 't') { 2553 y = rect.y; 2554 } else if (topBottom === 'b') { 2555 y = rect.y + rect.height; 2556 } else { 2557 y = rect.y + rect.height / 2; 2558 } 2559 2560 // Left & Right 2561 if (leftRight === 'l') { 2562 x = rect.x; 2563 } else if (leftRight === 'r') { 2564 x = rect.x + rect.width; 2565 } else { 2566 x = rect.x + rect.width / 2; 2567 } 2568 return { 2569 x: x, 2570 y: y 2571 }; 2572} 2573function reversePoints(points, index) { 2574 var reverseMap = { 2575 t: 'b', 2576 b: 't', 2577 l: 'r', 2578 r: 'l' 2579 }; 2580 return points.map(function (point, i) { 2581 if (i === index) { 2582 return reverseMap[point] || 'c'; 2583 } 2584 return point; 2585 }).join(''); 2586} 2587function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) { 2588 var _React$useState = react__WEBPACK_IMPORTED_MODULE_6__.useState({ 2589 ready: false, 2590 offsetX: 0, 2591 offsetY: 0, 2592 offsetR: 0, 2593 offsetB: 0, 2594 arrowX: 0, 2595 arrowY: 0, 2596 scaleX: 1, 2597 scaleY: 1, 2598 align: builtinPlacements[placement] || {} 2599 }), 2600 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState, 2), 2601 offsetInfo = _React$useState2[0], 2602 setOffsetInfo = _React$useState2[1]; 2603 var alignCountRef = react__WEBPACK_IMPORTED_MODULE_6__.useRef(0); 2604 var scrollerList = react__WEBPACK_IMPORTED_MODULE_6__.useMemo(function () { 2605 if (!popupEle) { 2606 return []; 2607 } 2608 return (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .collectScroller */ .TK)(popupEle); 2609 }, [popupEle]); 2610 2611 // ========================= Flip ========================== 2612 // We will memo flip info. 2613 // If size change to make flip, it will memo the flip info and use it in next align. 2614 var prevFlipRef = react__WEBPACK_IMPORTED_MODULE_6__.useRef({}); 2615 var resetFlipCache = function resetFlipCache() { 2616 prevFlipRef.current = {}; 2617 }; 2618 if (!open) { 2619 resetFlipCache(); 2620 } 2621 2622 // ========================= Align ========================= 2623 var onAlign = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(function () { 2624 if (popupEle && target && open) { 2625 var _popupElement$parentE, _popupRect$x, _popupRect$y, _popupElement$parentE2; 2626 var popupElement = popupEle; 2627 var doc = popupElement.ownerDocument; 2628 var win = (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .getWin */ .D)(popupElement); 2629 var _win$getComputedStyle = win.getComputedStyle(popupElement), 2630 popupPosition = _win$getComputedStyle.position; 2631 var originLeft = popupElement.style.left; 2632 var originTop = popupElement.style.top; 2633 var originRight = popupElement.style.right; 2634 var originBottom = popupElement.style.bottom; 2635 var originOverflow = popupElement.style.overflow; 2636 2637 // Placement 2638 var placementInfo = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, builtinPlacements[placement]), popupAlign); 2639 2640 // placeholder element 2641 var placeholderElement = doc.createElement('div'); 2642 (_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement); 2643 placeholderElement.style.left = "".concat(popupElement.offsetLeft, "px"); 2644 placeholderElement.style.top = "".concat(popupElement.offsetTop, "px"); 2645 placeholderElement.style.position = popupPosition; 2646 placeholderElement.style.height = "".concat(popupElement.offsetHeight, "px"); 2647 placeholderElement.style.width = "".concat(popupElement.offsetWidth, "px"); 2648 2649 // Reset first 2650 popupElement.style.left = '0'; 2651 popupElement.style.top = '0'; 2652 popupElement.style.right = 'auto'; 2653 popupElement.style.bottom = 'auto'; 2654 popupElement.style.overflow = 'hidden'; 2655 2656 // Calculate align style, we should consider `transform` case 2657 var targetRect; 2658 if (Array.isArray(target)) { 2659 targetRect = { 2660 x: target[0], 2661 y: target[1], 2662 width: 0, 2663 height: 0 2664 }; 2665 } else { 2666 var _rect$x, _rect$y; 2667 var rect = target.getBoundingClientRect(); 2668 rect.x = (_rect$x = rect.x) !== null && _rect$x !== void 0 ? _rect$x : rect.left;
vendor: 16,060 bytes, lines 2669-3021
2669 rect.y = (_rect$y = rect.y) !== null && _rect$y !== void 0 ? _rect$y : rect.top; 2670 targetRect = { 2671 x: rect.x, 2672 y: rect.y, 2673 width: rect.width, 2674 height: rect.height 2675 }; 2676 } 2677 var popupRect = popupElement.getBoundingClientRect(); 2678 var _win$getComputedStyle2 = win.getComputedStyle(popupElement), 2679 height = _win$getComputedStyle2.height, 2680 width = _win$getComputedStyle2.width; 2681 popupRect.x = (_popupRect$x = popupRect.x) !== null && _popupRect$x !== void 0 ? _popupRect$x : popupRect.left; 2682 popupRect.y = (_popupRect$y = popupRect.y) !== null && _popupRect$y !== void 0 ? _popupRect$y : popupRect.top; 2683 var _doc$documentElement = doc.documentElement, 2684 clientWidth = _doc$documentElement.clientWidth, 2685 clientHeight = _doc$documentElement.clientHeight, 2686 scrollWidth = _doc$documentElement.scrollWidth, 2687 scrollHeight = _doc$documentElement.scrollHeight, 2688 scrollTop = _doc$documentElement.scrollTop, 2689 scrollLeft = _doc$documentElement.scrollLeft; 2690 var popupHeight = popupRect.height; 2691 var popupWidth = popupRect.width; 2692 var targetHeight = targetRect.height; 2693 var targetWidth = targetRect.width; 2694 2695 // Get bounding of visible area 2696 var visibleRegion = { 2697 left: 0, 2698 top: 0, 2699 right: clientWidth, 2700 bottom: clientHeight 2701 }; 2702 var scrollRegion = { 2703 left: -scrollLeft, 2704 top: -scrollTop, 2705 right: scrollWidth - scrollLeft, 2706 bottom: scrollHeight - scrollTop 2707 }; 2708 var htmlRegion = placementInfo.htmlRegion; 2709 var VISIBLE = 'visible'; 2710 var VISIBLE_FIRST = 'visibleFirst'; 2711 if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) { 2712 htmlRegion = VISIBLE; 2713 } 2714 var isVisibleFirst = htmlRegion === VISIBLE_FIRST; 2715 var scrollRegionArea = (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .getVisibleArea */ .Iq)(scrollRegion, scrollerList); 2716 var visibleRegionArea = (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .getVisibleArea */ .Iq)(visibleRegion, scrollerList); 2717 var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea; 2718 2719 // When set to `visibleFirst`, 2720 // the check `adjust` logic will use `visibleRegion` for check first. 2721 var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea; 2722 2723 // Record right & bottom align data 2724 popupElement.style.left = 'auto'; 2725 popupElement.style.top = 'auto'; 2726 popupElement.style.right = '0'; 2727 popupElement.style.bottom = '0'; 2728 var popupMirrorRect = popupElement.getBoundingClientRect(); 2729 2730 // Reset back 2731 popupElement.style.left = originLeft; 2732 popupElement.style.top = originTop; 2733 popupElement.style.right = originRight; 2734 popupElement.style.bottom = originBottom; 2735 popupElement.style.overflow = originOverflow; 2736 (_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement); 2737 2738 // Calculate scale 2739 var _scaleX = (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .toNum */ .ac)(Math.round(popupWidth / parseFloat(width) * 1000) / 1000); 2740 var _scaleY = (0,_util__WEBPACK_IMPORTED_MODULE_7__/* .toNum */ .ac)(Math.round(popupHeight / parseFloat(height) * 1000) / 1000); 2741 2742 // No need to align since it's not visible in view 2743 if (_scaleX === 0 || _scaleY === 0 || (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__/* .isDOM */ .fk)(target) && !(0,rc_util_es_Dom_isVisible__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(target)) { 2744 return; 2745 } 2746 2747 // Offset 2748 var offset = placementInfo.offset, 2749 targetOffset = placementInfo.targetOffset; 2750 var _getNumberOffset = getNumberOffset(popupRect, offset), 2751 _getNumberOffset2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_getNumberOffset, 2), 2752 popupOffsetX = _getNumberOffset2[0], 2753 popupOffsetY = _getNumberOffset2[1]; 2754 var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset), 2755 _getNumberOffset4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_getNumberOffset3, 2), 2756 targetOffsetX = _getNumberOffset4[0], 2757 targetOffsetY = _getNumberOffset4[1]; 2758 targetRect.x -= targetOffsetX; 2759 targetRect.y -= targetOffsetY; 2760 2761 // Points 2762 var _ref3 = placementInfo.points || [], 2763 _ref4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_ref3, 2), 2764 popupPoint = _ref4[0], 2765 targetPoint = _ref4[1]; 2766 var targetPoints = splitPoints(targetPoint); 2767 var popupPoints = splitPoints(popupPoint); 2768 var targetAlignPoint = getAlignPoint(targetRect, targetPoints); 2769 var popupAlignPoint = getAlignPoint(popupRect, popupPoints); 2770 2771 // Real align info may not same as origin one 2772 var nextAlignInfo = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, placementInfo); 2773 2774 // Next Offset 2775 var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX; 2776 var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY; 2777 2778 // ============== Intersection =============== 2779 // Get area by position. Used for check if flip area is better 2780 function getIntersectionVisibleArea(offsetX, offsetY) { 2781 var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea; 2782 var l = popupRect.x + offsetX; 2783 var t = popupRect.y + offsetY; 2784 var r = l + popupWidth; 2785 var b = t + popupHeight; 2786 var visibleL = Math.max(l, area.left); 2787 var visibleT = Math.max(t, area.top); 2788 var visibleR = Math.min(r, area.right); 2789 var visibleB = Math.min(b, area.bottom); 2790 return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT)); 2791 } 2792 var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY); 2793 2794 // As `visibleFirst`, we prepare this for check 2795 var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea); 2796 2797 // ========================== Overflow =========================== 2798 var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']); 2799 var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']); 2800 var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']); 2801 var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']); 2802 var overflow = placementInfo.overflow || {}; 2803 var adjustX = overflow.adjustX, 2804 adjustY = overflow.adjustY, 2805 shiftX = overflow.shiftX, 2806 shiftY = overflow.shiftY; 2807 var supportAdjust = function supportAdjust(val) { 2808 if (typeof val === 'boolean') { 2809 return val; 2810 } 2811 return val >= 0; 2812 }; 2813 2814 // Prepare position 2815 var nextPopupY; 2816 var nextPopupBottom; 2817 var nextPopupX; 2818 var nextPopupRight; 2819 function syncNextPopupPosition() { 2820 nextPopupY = popupRect.y + nextOffsetY; 2821 nextPopupBottom = nextPopupY + popupHeight; 2822 nextPopupX = popupRect.x + nextOffsetX; 2823 nextPopupRight = nextPopupX + popupWidth; 2824 } 2825 syncNextPopupPosition(); 2826 2827 // >>>>>>>>>> Top & Bottom 2828 var needAdjustY = supportAdjust(adjustY); 2829 var sameTB = popupPoints[0] === targetPoints[0]; 2830 2831 // Bottom to Top 2832 if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) { 2833 var tmpNextOffsetY = nextOffsetY; 2834 if (sameTB) { 2835 tmpNextOffsetY -= popupHeight - targetHeight; 2836 } else { 2837 tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY; 2838 } 2839 var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY); 2840 var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea); 2841 if ( 2842 // Of course use larger one 2843 newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || 2844 // Choose recommend one 2845 newVisibleRecommendArea >= originIntersectionRecommendArea)) { 2846 prevFlipRef.current.bt = true; 2847 nextOffsetY = tmpNextOffsetY; 2848 popupOffsetY = -popupOffsetY; 2849 nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)]; 2850 } else { 2851 prevFlipRef.current.bt = false; 2852 } 2853 } 2854 2855 // Top to Bottom 2856 if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) { 2857 var _tmpNextOffsetY = nextOffsetY; 2858 if (sameTB) { 2859 _tmpNextOffsetY += popupHeight - targetHeight; 2860 } else { 2861 _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY; 2862 } 2863 var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY); 2864 var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea); 2865 if ( 2866 // Of course use larger one 2867 _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst || 2868 // Choose recommend one 2869 _newVisibleRecommendArea >= originIntersectionRecommendArea)) { 2870 prevFlipRef.current.tb = true; 2871 nextOffsetY = _tmpNextOffsetY; 2872 popupOffsetY = -popupOffsetY; 2873 nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)]; 2874 } else { 2875 prevFlipRef.current.tb = false; 2876 } 2877 } 2878 2879 // >>>>>>>>>> Left & Right 2880 var needAdjustX = supportAdjust(adjustX); 2881 2882 // >>>>> Flip 2883 var sameLR = popupPoints[1] === targetPoints[1]; 2884 2885 // Right to Left 2886 if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) { 2887 var tmpNextOffsetX = nextOffsetX; 2888 if (sameLR) { 2889 tmpNextOffsetX -= popupWidth - targetWidth; 2890 } else { 2891 tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX; 2892 } 2893 var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY); 2894 var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea); 2895 if ( 2896 // Of course use larger one 2897 _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst || 2898 // Choose recommend one 2899 _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) { 2900 prevFlipRef.current.rl = true; 2901 nextOffsetX = tmpNextOffsetX; 2902 popupOffsetX = -popupOffsetX; 2903 nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)]; 2904 } else { 2905 prevFlipRef.current.rl = false; 2906 } 2907 } 2908 2909 // Left to Right 2910 if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) { 2911 var _tmpNextOffsetX = nextOffsetX; 2912 if (sameLR) { 2913 _tmpNextOffsetX += popupWidth - targetWidth; 2914 } else { 2915 _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX; 2916 } 2917 var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY); 2918 var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea); 2919 if ( 2920 // Of course use larger one 2921 _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst || 2922 // Choose recommend one 2923 _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) { 2924 prevFlipRef.current.lr = true; 2925 nextOffsetX = _tmpNextOffsetX; 2926 popupOffsetX = -popupOffsetX; 2927 nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)]; 2928 } else { 2929 prevFlipRef.current.lr = false; 2930 } 2931 } 2932 2933 // ============================ Shift ============================ 2934 syncNextPopupPosition(); 2935 var numShiftX = shiftX === true ? 0 : shiftX; 2936 if (typeof numShiftX === 'number') { 2937 // Left 2938 if (nextPopupX < visibleRegionArea.left) { 2939 nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX; 2940 if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) { 2941 nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX; 2942 } 2943 } 2944 2945 // Right 2946 if (nextPopupRight > visibleRegionArea.right) { 2947 nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX; 2948 if (targetRect.x > visibleRegionArea.right - numShiftX) { 2949 nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX; 2950 } 2951 } 2952 } 2953 var numShiftY = shiftY === true ? 0 : shiftY; 2954 if (typeof numShiftY === 'number') { 2955 // Top 2956 if (nextPopupY < visibleRegionArea.top) { 2957 nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY; 2958 2959 // When target if far away from visible area 2960 // Stop shift 2961 if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) { 2962 nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY; 2963 } 2964 } 2965 2966 // Bottom 2967 if (nextPopupBottom > visibleRegionArea.bottom) { 2968 nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY; 2969 if (targetRect.y > visibleRegionArea.bottom - numShiftY) { 2970 nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY; 2971 } 2972 } 2973 } 2974 2975 // ============================ Arrow ============================ 2976 // Arrow center align 2977 var popupLeft = popupRect.x + nextOffsetX; 2978 var popupRight = popupLeft + popupWidth; 2979 var popupTop = popupRect.y + nextOffsetY; 2980 var popupBottom = popupTop + popupHeight; 2981 var targetLeft = targetRect.x; 2982 var targetRight = targetLeft + targetWidth; 2983 var targetTop = targetRect.y; 2984 var targetBottom = targetTop + targetHeight; 2985 var maxLeft = Math.max(popupLeft, targetLeft); 2986 var minRight = Math.min(popupRight, targetRight); 2987 var xCenter = (maxLeft + minRight) / 2; 2988 var nextArrowX = xCenter - popupLeft; 2989 var maxTop = Math.max(popupTop, targetTop); 2990 var minBottom = Math.min(popupBottom, targetBottom); 2991 var yCenter = (maxTop + minBottom) / 2; 2992 var nextArrowY = yCenter - popupTop; 2993 onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo); 2994 2995 // Additional calculate right & bottom position 2996 var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width); 2997 var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height); 2998 if (_scaleX === 1) { 2999 nextOffsetX = Math.round(nextOffsetX); 3000 offsetX4Right = Math.round(offsetX4Right); 3001 } 3002 if (_scaleY === 1) { 3003 nextOffsetY = Math.round(nextOffsetY); 3004 offsetY4Bottom = Math.round(offsetY4Bottom); 3005 } 3006 var nextOffsetInfo = { 3007 ready: true, 3008 offsetX: nextOffsetX / _scaleX, 3009 offsetY: nextOffsetY / _scaleY, 3010 offsetR: offsetX4Right / _scaleX, 3011 offsetB: offsetY4Bottom / _scaleY, 3012 arrowX: nextArrowX / _scaleX, 3013 arrowY: nextArrowY / _scaleY, 3014 scaleX: _scaleX, 3015 scaleY: _scaleY, 3016 align: nextAlignInfo 3017 }; 3018 setOffsetInfo(nextOffsetInfo); 3019 } 3020 }); 3021 var triggerAlign = function triggerAlign() {
3022 alignCountRef.current += 1; 3023 var id = alignCountRef.current; 3024 3025 // Merge all align requirement into one frame 3026 Promise.resolve().then(function () { 3027 if (alignCountRef.current === id) { 3028 onAlign(); 3029 } 3030 }); 3031 }; 3032 3033 // Reset ready status when placement & open changed 3034 var resetReady = function resetReady() { 3035 setOffsetInfo(function (ori) { 3036 return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, ori), {}, { 3037 ready: false 3038 }); 3039 }); 3040 }; 3041 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(resetReady, [placement]); 3042 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(function () { 3043 if (!open) { 3044 resetReady(); 3045 } 3046 }, [open]); 3047 return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign]; 3048} 3049 3050/***/ }), 3051 3052/***/ 24898: 3053/***/ ((__unused_webpack_module, exports) => { 3054 3055"use strict"; 3056var __webpack_unused_export__; 3057/** 3058 * @license React 3059 * react-is.production.min.js 3060 * 3061 * Copyright (c) Facebook, Inc. and its affiliates. 3062 * 3063 * This source code is licensed under the MIT license found in the 3064 * LICENSE file in the root directory of this source tree. 3065 */ 3066var b=Symbol.for("react.element"),c=Symbol.for("react.portal"),d=Symbol.for("react.fragment"),e=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),g=Symbol.for("react.provider"),h=Symbol.for("react.context"),k=Symbol.for("react.server_context"),l=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),n=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),q=Symbol.for("react.lazy"),t=Symbol.for("react.offscreen"),u;u=Symbol.for("react.module.reference"); 3067function v(a){if("object"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}__webpack_unused_export__=h;__webpack_unused_export__=g;__webpack_unused_export__=b;exports.ForwardRef=l;__webpack_unused_export__=d;__webpack_unused_export__=q;__webpack_unused_export__=p;__webpack_unused_export__=c;__webpack_unused_export__=f;__webpack_unused_export__=e;__webpack_unused_export__=m; 3068__webpack_unused_export__=n;__webpack_unused_export__=function(){return!1};__webpack_unused_export__=function(){return!1};__webpack_unused_export__=function(a){return v(a)===h};__webpack_unused_export__=function(a){return v(a)===g};__webpack_unused_export__=function(a){return"object"===typeof a&&null!==a&&a.$$typeof===b};__webpack_unused_export__=function(a){return v(a)===l};__webpack_unused_export__=function(a){return v(a)===d};__webpack_unused_export__=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p}; 3069__webpack_unused_export__=function(a){return v(a)===c};__webpack_unused_export__=function(a){return v(a)===f};__webpack_unused_export__=function(a){return v(a)===e};__webpack_unused_export__=function(a){return v(a)===m};__webpack_unused_export__=function(a){return v(a)===n}; 3070__webpack_unused_export__=function(a){return"string"===typeof a||"function"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||"object"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};__webpack_unused_export__=v; 3071 3072 3073/***/ }), 3074 3075/***/ 25435: 3076/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3077 3078"use strict"; 3079/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3080/* harmony export */ Vm: () => (/* binding */ hasAuth), 3081/* harmony export */ Z7: () => (/* binding */ noAuthPath), 3082/* harmony export */ lU: () => (/* binding */ goNoAuthPath), 3083/* harmony export */ tw: () => (/* binding */ fetchAuth) 3084/* harmony export */ }); 3085/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 3086/* harmony import */ var _hook_useAxios__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(92513); 3087/* harmony import */ var _components_Menu_bar_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(34692); 3088/* harmony import */ var _components_Menu_bar_config_zs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(81943); 3089/* harmony import */ var _components_Header_HeaderUserSupport_bar_config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(78068); 3090var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 3091 function adopt(value) { 3092 return value instanceof P ? value : new P(function (resolve) { 3093 resolve(value); 3094 }); 3095 } 3096 return new (P || (P = Promise))(function (resolve, reject) { 3097 function fulfilled(value) {
3098 try { 3099 step(generator.next(value)); 3100 } catch (e) { 3101 reject(e); 3102 } 3103 } 3104 function rejected(value) { 3105 try { 3106 step(generator["throw"](value)); 3107 } catch (e) { 3108 reject(e); 3109 } 3110 } 3111 function step(result) { 3112 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 3113 } 3114 step((generator = generator.apply(thisArg, _arguments || [])).next()); 3115 }); 3116}; 3117var __generator = undefined && undefined.__generator || function (thisArg, body) { 3118 var _ = { 3119 label: 0, 3120 sent: function sent() { 3121 if (t[0] & 1) throw t[1]; 3122 return t[1]; 3123 }, 3124 trys: [], 3125 ops: [] 3126 }, 3127 f, 3128 y, 3129 t, 3130 g; 3131 return g = { 3132 next: verb(0), 3133 "throw": verb(1), 3134 "return": verb(2) 3135 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 3136 return this; 3137 }), g; 3138 function verb(n) { 3139 return function (v) { 3140 return step([n, v]); 3141 }; 3142 } 3143 function step(op) { 3144 if (f) throw new TypeError("Generator is already executing."); 3145 while (g && (g = 0, op[0] && (_ = 0)), _) try { 3146 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 3147 if (y = 0, t) op = [op[0] & 2, t.value]; 3148 switch (op[0]) { 3149 case 0: 3150 case 1: 3151 t = op; 3152 break; 3153 case 4: 3154 _.label++; 3155 return { 3156 value: op[1], 3157 done: false 3158 }; 3159 case 5: 3160 _.label++; 3161 y = op[1]; 3162 op = [0]; 3163 continue; 3164 case 7: 3165 op = _.ops.pop(); 3166 _.trys.pop(); 3167 continue; 3168 default: 3169 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 3170 _ = 0; 3171 continue; 3172 } 3173 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 3174 _.label = op[1]; 3175 break; 3176 } 3177 if (op[0] === 6 && _.label < t[1]) { 3178 _.label = t[1]; 3179 t = op; 3180 break; 3181 } 3182 if (t && _.label < t[2]) { 3183 _.label = t[2]; 3184 _.ops.push(op); 3185 break; 3186 } 3187 if (t[2]) _.ops.pop(); 3188 _.trys.pop(); 3189 continue; 3190 } 3191 op = body.call(thisArg, _); 3192 } catch (e) { 3193 op = [6, e]; 3194 y = 0; 3195 } finally { 3196 f = t = 0; 3197 } 3198 if (op[0] & 5) throw op[1]; 3199 return { 3200 value: op[0] ? op[1] : void 0, 3201 done: true 3202 }; 3203 } 3204}; 3205 3206 3207 3208 3209 3210var fetchAuth = function fetchAuth(info, getDomainByUrl) { 3211 return __awaiter(void 0, void 0, void 0, function () { 3212 var $axios, _a, err2, res2, arr; 3213 var _b, _c; 3214 return __generator(this, function (_d) { 3215 switch (_d.label) { 3216 case 0: 3217 $axios = (0,_hook_useAxios__WEBPACK_IMPORTED_MODULE_1__/* .getAxios */ .p)((info === null || info === void 0 ? void 0 : info.token) || '', getDomainByUrl); 3218 return [4, $axios({ 3219 method: 'post', 3220 url: 'userCenterForeignWeb/app/subAccount/getUserMenus', 3221 data: { 3222 userId: (info === null || info === void 0 ? void 0 : info.subAccountId) || '' 3223 }, 3224 headers: { 3225 token: (info === null || info === void 0 ? void 0 : info.token) || '' 3226 } 3227 })]; 3228 case 1: 3229 _a = _d.sent(), err2 = _a[0], res2 = _a[1]; 3230 if (err2 || Number(res2 === null || res2 === void 0 ? void 0 : res2.code) !== 200) return [2, Promise.reject()]; 3231 arr = []; 3232 if (((_b = (res2 === null || res2 === void 0 ? void 0 : res2.data) || []) === null || _b === void 0 ? void 0 : _b.length) > 0) { 3233 (_c = res2 === null || res2 === void 0 ? void 0 : res2.data) === null || _c === void 0 ? void 0 : _c.forEach(function (_) { 3234 var _a; 3235 if ((_a = _ === null || _ === void 0 ? void 0 : _.code) === null || _a === void 0 ? void 0 : _a.startsWith('mycj_')) arr.push(_.code); 3236 }); 3237 } 3238 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set('_AUTH_CODES_', arr); 3239 return [2]; 3240 } 3241 }); 3242 }); 3243}; 3244var getAuth = function getAuth() { 3245 return _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get('_AUTH_CODES_', { 3246 parse: true 3247 }); 3248}; 3249var menuAuthTreeList = null; 3250var headerMenuAuthTreeList = null; 3251var menuAuthTreeMap = { 3252 ZS: _components_Menu_bar_config_zs__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Ay 3253}; 3254var matchMenuPath = function matchMenuPath(url) { 3255 var _a = url ? new URL(url) : window.location, 3256 pathname = _a.pathname, 3257 hash = _a.hash, 3258 search = _a.search; 3259 var route = pathname + search + hash; 3260 var route1 = "".concat(pathname, "/").concat(search).concat(hash); 3261 if (!menuAuthTreeList) { 3262 var selectedMenuAuthTree = _components_Menu_bar_config__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay; 3263 if (typeof window !== 'undefined' && (window === null || window === void 0 ? void 0 : window.siteCheck)) { 3264 for (var _i = 0, _b = Object.entries(menuAuthTreeMap); _i < _b.length; _i++) { 3265 var _c = _b[_i], 3266 platform = _c[0], 3267 authTree = _c[1]; 3268 if (window.siteCheck.isSite(platform)) { 3269 selectedMenuAuthTree = authTree; 3270 break; 3271 } 3272 } 3273 } 3274 menuAuthTreeList = selectedMenuAuthTree()[1]; 3275 } 3276 return menuAuthTreeList.find(function (k) { 3277 return route.includes(k.route) || route1.includes(k.route); 3278 }); 3279}; 3280var matchHeaderMenuPath = function matchHeaderMenuPath(url) { 3281 var _a = url ? new URL(url) : window.location, 3282 pathname = _a.pathname, 3283 hash = _a.hash, 3284 search = _a.search; 3285 var route = pathname + search + hash; 3286 var route1 = "".concat(pathname, "/").concat(search).concat(hash); 3287 if (!headerMenuAuthTreeList) { 3288 headerMenuAuthTreeList = (0,_components_Header_HeaderUserSupport_bar_config__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Ay)()[1]; 3289 } 3290 return headerMenuAuthTreeList.find(function (k) { 3291 return route.includes(k.route) || route1.includes(k.route); 3292 }); 3293}; 3294var hasAuth = function hasAuth(options) { 3295 var _a, _b; 3296 var _c = options || {}, 3297 code = _c.code, 3298 url = _c.url; 3299 var auth = getAuth(); 3300 if (!auth) return true; 3301 if (code) { 3302 return auth.includes(code); 3303 } 3304 var menuAuthCode = (_a = matchMenuPath(url)) === null || _a === void 0 ? void 0 : _a.code;
3305 var headerMenuAuthCode = (_b = matchHeaderMenuPath(url)) === null || _b === void 0 ? void 0 : _b.code; 3306 if (!menuAuthCode && !headerMenuAuthCode) { 3307 return true; 3308 } 3309 return auth.includes(menuAuthCode) || auth.includes(headerMenuAuthCode); 3310}; 3311var noAuthPath = '/my.html#/noPower'; 3312var goNoAuthPath = function goNoAuthPath() { 3313 window.location.href = noAuthPath; 3314}; 3315 3316/***/ }), 3317 3318/***/ 25893: 3319/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3320 3321"use strict"; 3322/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3323/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 3324/* harmony export */ }); 3325/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(47169); 3326/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 3327/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 3328 3329 3330 3331// It's safe to use `useLayoutEffect` but the warning is annoying 3332var useIsomorphicLayoutEffect = (0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)() ? react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_1__.useEffect; 3333/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useIsomorphicLayoutEffect); 3334 3335/***/ }), 3336 3337/***/ 26651: 3338/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3339 3340"use strict"; 3341/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3342/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 3343/* harmony export */ }); 3344/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () { 3345 if (typeof navigator === 'undefined' || typeof window === 'undefined') { 3346 return false; 3347 } 3348 var agent = navigator.userAgent || navigator.vendor || window.opera; 3349 return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4)); 3350}); 3351 3352/***/ }), 3353 3354/***/ 27880: 3355/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3356 3357"use strict"; 3358/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3359/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 3360/* harmony export */ }); 3361/* unused harmony export isHome */ 3362/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 3363/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(77427); 3364/* harmony import */ var _const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62194); 3365/* harmony import */ var _check_site_vp_menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(96551); 3366/* harmony import */ var _oss_controller__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44190); 3367/* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52743); 3368/* harmony import */ var deepmerge__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(deepmerge__WEBPACK_IMPORTED_MODULE_5__); 3369/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3478); 3370/* harmony import */ var _dexie_cache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(36762); 3371function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 3372var __assign = undefined && undefined.__assign || function () { 3373 __assign = Object.assign || function (t) { 3374 for (var s, i = 1, n = arguments.length; i < n; i++) { 3375 s = arguments[i]; 3376 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 3377 } 3378 return t; 3379 }; 3380 return __assign.apply(this, arguments); 3381}; 3382var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 3383 function adopt(value) { 3384 return value instanceof P ? value : new P(function (resolve) { 3385 resolve(value); 3386 }); 3387 } 3388 return new (P || (P = Promise))(function (resolve, reject) { 3389 function fulfilled(value) {
3390 try { 3391 step(generator.next(value)); 3392 } catch (e) { 3393 reject(e); 3394 } 3395 } 3396 function rejected(value) { 3397 try { 3398 step(generator["throw"](value)); 3399 } catch (e) { 3400 reject(e); 3401 } 3402 } 3403 function step(result) { 3404 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 3405 } 3406 step((generator = generator.apply(thisArg, _arguments || [])).next()); 3407 }); 3408}; 3409var __generator = undefined && undefined.__generator || function (thisArg, body) { 3410 var _ = { 3411 label: 0, 3412 sent: function sent() { 3413 if (t[0] & 1) throw t[1]; 3414 return t[1]; 3415 }, 3416 trys: [], 3417 ops: [] 3418 }, 3419 f, 3420 y, 3421 t, 3422 g; 3423 return g = { 3424 next: verb(0), 3425 "throw": verb(1), 3426 "return": verb(2) 3427 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 3428 return this; 3429 }), g; 3430 function verb(n) { 3431 return function (v) { 3432 return step([n, v]); 3433 }; 3434 } 3435 function step(op) { 3436 if (f) throw new TypeError("Generator is already executing."); 3437 while (g && (g = 0, op[0] && (_ = 0)), _) try { 3438 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 3439 if (y = 0, t) op = [op[0] & 2, t.value]; 3440 switch (op[0]) { 3441 case 0: 3442 case 1: 3443 t = op; 3444 break; 3445 case 4: 3446 _.label++; 3447 return { 3448 value: op[1], 3449 done: false 3450 }; 3451 case 5: 3452 _.label++; 3453 y = op[1]; 3454 op = [0]; 3455 continue; 3456 case 7: 3457 op = _.ops.pop(); 3458 _.trys.pop(); 3459 continue; 3460 default: 3461 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 3462 _ = 0; 3463 continue; 3464 } 3465 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 3466 _.label = op[1]; 3467 break; 3468 } 3469 if (op[0] === 6 && _.label < t[1]) { 3470 _.label = t[1]; 3471 t = op; 3472 break; 3473 } 3474 if (t && _.label < t[2]) { 3475 _.label = t[2]; 3476 _.ops.push(op); 3477 break; 3478 } 3479 if (t[2]) _.ops.pop(); 3480 _.trys.pop(); 3481 continue; 3482 } 3483 op = body.call(thisArg, _); 3484 } catch (e) { 3485 op = [6, e]; 3486 y = 0; 3487 } finally { 3488 f = t = 0; 3489 } 3490 if (op[0] & 5) throw op[1]; 3491 return { 3492 value: op[0] ? op[1] : void 0, 3493 done: true 3494 }; 3495 } 3496}; 3497var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 3498 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 3499 if (ar || !(i in from)) { 3500 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 3501 ar[i] = from[i]; 3502 } 3503 } 3504 return to.concat(ar || Array.prototype.slice.call(from)); 3505}; 3506 3507 3508 3509 3510 3511 3512 3513 3514var isHome = function isHome(path) { 3515 return ['/home.html', '/index.html', '/'].includes(path); 3516}; 3517function getNextFiveMinuteIntervalUTC() { 3518 var now = new Date(); 3519 var currentMinutes = now.getUTCMinutes(); 3520 var currentSeconds = now.getUTCSeconds(); 3521 var currentMilliseconds = now.getUTCMilliseconds(); 3522 var intervals = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]; 3523 var nextInterval; 3524 if (currentMinutes % 5 === 0) { 3525 if (currentSeconds === 0 && currentMilliseconds === 0) { 3526 nextInterval = intervals.find(function (interval) { 3527 return interval > currentMinutes; 3528 }); 3529 } else { 3530 nextInterval = currentMinutes + 5; 3531 } 3532 } else { 3533 nextInterval = intervals.find(function (interval) { 3534 return interval > currentMinutes; 3535 }); 3536 } 3537 if (nextInterval === undefined || nextInterval >= 60) { 3538 var nextHour = new Date(now); 3539 nextHour.setUTCHours(nextHour.getUTCHours() + 1); 3540 nextHour.setUTCMinutes(0); 3541 nextHour.setUTCSeconds(0); 3542 nextHour.setUTCMilliseconds(0); 3543 return nextHour.getTime() - now.getTime(); 3544 } 3545 var nextTime = new Date(now); 3546 nextTime.setUTCMinutes(nextInterval); 3547 nextTime.setUTCSeconds(0); 3548 nextTime.setUTCMilliseconds(0); 3549 return nextTime.getTime() - now.getTime(); 3550} 3551var SiteCheck = function () { 3552 function SiteCheck(_a) { 3553 var getDomainByUrl = _a.getDomainByUrl, 3554 _b = _a.ctx,
3555 ctx = _b === void 0 ? undefined : _b, 3556 _c = _a.host, 3557 host = _c === void 0 ? '' : _c, 3558 _d = _a.path, 3559 path = _d === void 0 ? '' : _d, 3560 _e = _a.cacheConfig, 3561 cacheConfig = _e === void 0 ? undefined : _e, 3562 _f = _a.customConfig, 3563 customConfig = _f === void 0 ? {} : _f, 3564 _g = _a.specifyVisible, 3565 specifyVisible = _g === void 0 ? '' : _g; 3566 this.modules = {}; 3567 this.datas = {}; 3568 this.cacheConfig = undefined; 3569 this.customConfig = {}; 3570 this.host = ''; 3571 this.path = ''; 3572 this.totalSiteConfig = undefined; 3573 if (_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 3574 var _h = window.SITE_CHECK_DATA || {}, 3575 datas = _h.datas, 3576 modules = _h.modules; 3577 this.datas = datas; 3578 this.modules = modules; 3579 } else if (typeof ctx !== 'undefined') { 3580 var _j = ctx.SITE_CHECK_DATA || {}, 3581 datas = _j.datas, 3582 modules = _j.modules; 3583 this.datas = datas; 3584 this.modules = modules; 3585 } 3586 if (_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 3587 var showMessage = js_cookie__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.get('SHOWMESSAGE'); 3588 host = host ? host : location.host; 3589 if ((showMessage === null || showMessage === void 0 ? void 0 : showMessage.indexOf('Q')) > -1 && host.indexOf('qkfulfill') > -1) { 3590 host = 'qkfulfill-vp.com'; 3591 } 3592 if (!path) path = location.hash ? location.hash : location.pathname; 3593 } 3594 if (path.indexOf('/product/') > -1) path = '/product'; 3595 if (isHome(path)) path = '/home'; 3596 this.getDomainByUrl = getDomainByUrl; 3597 this.cacheConfig = cacheConfig; 3598 this.customConfig = customConfig; 3599 this.path = path; 3600 this.host = host; 3601 this.specifyVisible = specifyVisible; 3602 this.get.bind(this); 3603 } 3604 SiteCheck.prototype.getProjectConfigurations = function () { 3605 var _a, _b; 3606 return __awaiter(this, void 0, Promise, function () { 3607 var host, url, cacheKey, cached, error_1, axios, _c, error, res, result, message, cached, error_2, expireTime, error_3; 3608 return __generator(this, function (_d) { 3609 switch (_d.label) { 3610 case 0: 3611 host = this.host; 3612 url = 'affiliate-center-web/websiteConfig/pageConfiguration'; 3613 cacheKey = "project_configuration_".concat(host); 3614 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 4]; 3615 _d.label = 1; 3616 case 1: 3617 _d.trys.push([1, 3,, 4]); 3618 return [4, _dexie_cache__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.getCache({ 3619 key: cacheKey, 3620 deleteExpiredCache: false 3621 })]; 3622 case 2: 3623 cached = _d.sent(); 3624 if (cached) { 3625 console.log("\u4ECE Dexie \u7F13\u5B58\u83B7\u53D6\u7AD9\u70B9\u914D\u7F6E: ".concat(host)); 3626 return [2, cached.data]; 3627 } 3628 return [3, 4]; 3629 case 3: 3630 error_1 = _d.sent(); 3631 console.warn('读å Dexie ç¼å失败ï¼ç»§ç»è¯·æ±æ¥å£:', error_1); 3632 return [3, 4]; 3633 case 4: 3634 axios = (0,_common_request__WEBPACK_IMPORTED_MODULE_1__/* .createInstance */ .Q)('', this.getDomainByUrl); 3635 return [4, axios({ 3636 url: url, 3637 method: 'POST', 3638 data: { 3639 domain: host 3640 }, 3641 headers: {} 3642 })]; 3643 case 5: 3644 _c = _d.sent(), error = _c[0], res = _c[1]; 3645 if (!(res === null || res === void 0 ? void 0 : res.data)) return [3, 6]; 3646 result = __assign({}, (res === null || res === void 0 ? void 0 : res.data) || _const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A); 3647 return [3, 12]; 3648 case 6: 3649 if (error || !(res === null || res === void 0 ? void 0 : res.success)) { 3650 message = ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) || JSON.stringify(res); 3651 _const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.common.__config_error__ = { 3652 message: "[".concat(error ? (_b = error === null || error === void 0 ? void 0 : error.response) === null || _b === void 0 ? void 0 : _b.status : 200, "] ").concat(url, " ").concat(message || '') 3653 }; 3654 } 3655 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 11]; 3656 _d.label = 7; 3657 case 7: 3658 _d.trys.push([7, 9,, 10]); 3659 return [4, _dexie_cache__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.getCache({ 3660 key: cacheKey, 3661 deleteExpiredCache: false, 3662 getExpiredCache: true 3663 })]; 3664 case 8: 3665 cached = _d.sent(); 3666 if (cached) { 3667 return [2, cached.data]; 3668 } 3669 return [3, 10]; 3670 case 9: 3671 error_2 = _d.sent(); 3672 result = __assign({}, _const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A); 3673 return [3, 10]; 3674 case 10: 3675 return [3, 12]; 3676 case 11: 3677 result = __assign({}, _const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A); 3678 _d.label = 12; 3679 case 12: 3680 if (!(_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd && (res === null || res === void 0 ? void 0 : res.data))) return [3, 17]; 3681 _d.label = 13; 3682 case 13: 3683 _d.trys.push([13, 16,, 17]); 3684 return [4, _dexie_cache__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.deleteCache({ 3685 key: cacheKey 3686 })]; 3687 case 14: 3688 _d.sent(); 3689 expireTime = getNextFiveMinuteIntervalUTC(); 3690 return [4, _dexie_cache__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A.setCac
3690he({ 3691 key: cacheKey, 3692 data: result, 3693 expireTime: expireTime 3694 })]; 3695 case 15: 3696 _d.sent(); 3697 return [3, 17]; 3698 case 16: 3699 error_3 = _d.sent(); 3700 console.warn('ä¿å Dexie ç¼å失败:', error_3); 3701 return [3, 17]; 3702 case 17: 3703 return [2, result]; 3704 } 3705 }); 3706 }); 3707 }; 3708 SiteCheck.prototype.getProjectConfigurationAll = function (_a) { 3709 var _b = _a.pageNum, 3710 pageNum = _b === void 0 ? 1 : _b; 3711 return __awaiter(this, void 0, Promise, function () { 3712 var axios; 3713 return __generator(this, function (_c) { 3714 axios = (0,_common_request__WEBPACK_IMPORTED_MODULE_1__/* .createInstance */ .Q)('', this.getDomainByUrl); 3715 return [2, new Promise(function (resolve) { 3716 axios({ 3717 url: 'affiliate-center-web/websiteConfig/allPageConfiguration', 3718 method: 'POST', 3719 data: { 3720 pageNum: pageNum, 3721 pageSize: 100 3722 } 3723 }).then(function (_a) { 3724 var res = _a[1]; 3725 if (res) { 3726 resolve(res); 3727 return; 3728 } 3729 resolve({}); 3730 }); 3731 })]; 3732 }); 3733 }); 3734 }; 3735 SiteCheck.prototype.init = function () { 3736 var _a; 3737 return __awaiter(this, void 0, void 0, function () { 3738 var project_configuration; 3739 return __generator(this, function (_b) { 3740 switch (_b.label) { 3741 case 0: 3742 project_configuration = this.cacheConfig || {}; 3743 if (!(!this.cacheConfig && !this.totalSiteConfig)) return [3, 2]; 3744 return [4, this.getProjectConfigurations()]; 3745 case 1: 3746 project_configuration = _b.sent(); 3747 _b.label = 2; 3748 case 2: 3749 if (String(this.specifyVisible) === '0' && ((_a = project_configuration === null || project_configuration === void 0 ? void 0 : project_configuration.common) === null || _a === void 0 ? void 0 : _a.name) === 'VP') { 3750 project_configuration = deepmerge__WEBPACK_IMPORTED_MODULE_5___default()(project_configuration, _check_site_vp_menu__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A); 3751 } 3752 return [2, this.processData(project_configuration, this.path)]; 3753 } 3754 }); 3755 }); 3756 }; 3757 SiteCheck.prototype.processData = function (config, path) { 3758 var _a; 3759 var customConfig = this.customConfig; 3760 var mergeConfig = deepmerge__WEBPACK_IMPORTED_MODULE_5___default()(config, customConfig); 3761 if (!this.totalSiteConfig) { 3762 this.totalSiteConfig = mergeConfig; 3763 } 3764 var matchConfig = Object.keys(mergeConfig).reduce(function (a, b) { 3765 var reg = new RegExp("^".concat(b)); 3766 if (reg.test(path) && mergeConfig[b]) { 3767 return __spreadArray(__spreadArray([], a, true), [mergeConfig[b]], false); 3768 } 3769 return a; 3770 }, []); 3771 var modules = __assign(__assign({}, ((_a = mergeConfig === null || mergeConfig === void 0 ? void 0 : mergeConfig.common) === null || _a === void 0 ? void 0 : _a.module) || {}), matchConfig.reduce(function (a, b) { 3772 return __assign(__assign({}, a), (b === null || b === void 0 ? void 0 : b.module) || {}); 3773 }, {})); 3774 var combineMoudule = Object.keys(modules).reduce(function (p, key) { 3775 var value = modules[key]; 3776 if (_typeof(value) === 'object') { 3777 Object.keys(value).forEach(function (k) { 3778 var val = value[k]; 3779 if (_typeof(val) === 'object') { 3780 Object.keys(val).forEach(function (kk) { 3781 p[key + '-' + k + '-' + kk] = val[kk]; 3782 }); 3783 } else { 3784 p[key + '-' + k] = value[k]; 3785 } 3786 }); 3787 } else { 3788 p[key] = value; 3789 } 3790 return p; 3791 }, {}); 3792 var data = deepmerge__WEBPACK_IMPORTED_MODULE_5___default()(mergeConfig.common || {}, matchConfig.reduce(function (a, b) { 3793 return __assign(__assign({}, a), b); 3794 }, {})); 3795 delete data.module; 3796 this.datas = __assign({}, data); 3797 this.modules = __assign({}, combineMoudule); 3798 var combine = { 3799 modules: __assign({}, combineMoudule), 3800 datas: __assign({}, data) 3801 }; 3802 if (_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 3803 window.SITE_CHECK_DATA = combine; 3804 } 3805 return combine; 3806 }; 3807 SiteCheck.prototype.getCombine = function () { 3808 var res = this.handleNoData(); 3809 return res; 3810 }; 3811 SiteCheck.prototype.handleNoData = function () { 3812 var datas = this.datas || {}; 3813 var modules = this.modules || {}; 3814 if (Object.keys(datas).length <= 0) { 3815 var res = this.processData(_const_site_config_cj__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, '/home'); 3816 return res; 3817 } 3818 return { 3819 datas: datas, 3820 modules: modules 3821 }; 3822 }; 3823 SiteCheck.prototype.isShow = function (code) { 3824 var modules = this.handleNoData().modules; 3825 var key = code.replace(/ /g, '-').toLocaleLowerCase() || ''; 3826 if (typeof (modules === null || modules === void 0 ? void 0 : modules[key]) === 'undefined') { 3827 return true; 3828 } 3829 return modules === null || modules === void 0 ? void 0 : modules[key]; 3830 }; 3831 SiteCheck.prototype.getData = function (code) { 3832 var datas = this.handleNoData().datas; 3833 var key = code.replace(/ /g, '-').toLocaleLowerCase() || ''; 3834 if (code === 'site') { 3835 return null; 3836 } 3837 return datas === null || datas === void 0 ? void 0 : datas[key]; 3838 }; 3839 SiteCheck.prototype.getSource = function (code) { 3840 var datas = this.handleNoData().datas; 3841 var dname = datas['source-name'] || datas.name; 3842 var name = datas.path || String(dname).toLocaleLowerCase(); 3843 var url = _oss_controller__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Ay.join((0,_oss_controller__WEBPACK_IMPORTED_MODULE_4__/* .createConfigResource */ .vY)(name, code)); 3844 return url; 3845 }; 3846 SiteCheck.prototype.isSite = function () { 3847 var codes = []; 3848 for (var _i = 0; _i < arguments.length; _i++) { 3849 codes[_i] = arguments[_i]; 3850 } 3851 try { 3852 var datas_1 = this.handleNoData().datas; 3853 return !!codes.find(function (c) { 3854 return c === (datas_1 === null || datas_1 === void 0 ? void 0 : datas_1.site); 3855 }); 3856 } catch (e) { 3857 return false;
3858 } 3859 }; 3860 SiteCheck.prototype.get = function () { 3861 return { 3862 data: this.getData.bind(this), 3863 isShow: this.isShow.bind(this), 3864 source: this.getSource.bind(this), 3865 isSite: this.isSite.bind(this), 3866 refreshConfig: this.processData.bind(this) 3867 }; 3868 }; 3869 return SiteCheck; 3870}(); 3871/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SiteCheck); 3872 3873/***/ }), 3874 3875/***/ 27982: 3876/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3877 3878"use strict"; 3879/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3880/* harmony export */ A: () => (/* binding */ Mask) 3881/* harmony export */ }); 3882/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 3883/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(53373); 3884/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__); 3885/* harmony import */ var rc_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3251); 3886/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15442); 3887/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); 3888 3889 3890 3891 3892function Mask(props) { 3893 var prefixCls = props.prefixCls, 3894 open = props.open, 3895 zIndex = props.zIndex, 3896 mask = props.mask, 3897 motion = props.motion; 3898 if (!mask) { 3899 return null; 3900 } 3901 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement(rc_motion__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, motion, { 3902 motionAppear: true, 3903 visible: open, 3904 removeOnLeave: true 3905 }), function (_ref) { 3906 var className = _ref.className; 3907 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3__.createElement("div", { 3908 style: { 3909 zIndex: zIndex 3910 }, 3911 className: classnames__WEBPACK_IMPORTED_MODULE_1___default()("".concat(prefixCls, "-mask"), className) 3912 }); 3913 }); 3914} 3915 3916/***/ }), 3917 3918/***/ 27985: 3919/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 3920 3921"use strict"; 3922/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3923/* harmony export */ A: () => (/* binding */ _unsupportedIterableToArray) 3924/* harmony export */ }); 3925/* harmony import */ var _arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(86284); 3926 3927function _unsupportedIterableToArray(r, a) { 3928 if (r) { 3929 if ("string" == typeof r) return (0,_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r, a); 3930 var t = {}.toString.call(r).slice(8, -1); 3931 return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? (0,_arrayLikeToArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r, a) : void 0; 3932 } 3933} 3934 3935 3936/***/ }), 3937 3938/***/ 28299: 3939/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 3940 3941"use strict"; 3942/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3943/* harmony export */ Ay: () => (/* binding */ findDOMNode), 3944/* harmony export */ fk: () => (/* binding */ isDOM) 3945/* harmony export */ }); 3946/* unused harmony export getDOM */ 3947/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 3948/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 3949/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 3950/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56003); 3951/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__); 3952 3953 3954 3955function isDOM(node) { 3956 // https://developer.mozilla.org/en-US/docs/Web/API/Element 3957 // Since XULElement is also subclass of Element, we only need HTMLElement and SVGElement 3958 return node instanceof HTMLElement || node instanceof SVGElement; 3959} 3960
3961/** 3962 * Retrieves a DOM node via a ref, and does not invoke `findDOMNode`. 3963 */ 3964function getDOM(node) { 3965 if (node && (0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(node) === 'object' && isDOM(node.nativeElement)) { 3966 return node.nativeElement; 3967 } 3968 if (isDOM(node)) { 3969 return node; 3970 } 3971 return null; 3972} 3973 3974/** 3975 * Return if a node is a DOM node. Else will return by `findDOMNode` 3976 */ 3977function findDOMNode(node) { 3978 var domNode = getDOM(node); 3979 if (domNode) { 3980 return domNode; 3981 } 3982 if (node instanceof (react__WEBPACK_IMPORTED_MODULE_1___default().Component)) { 3983 var _ReactDOM$findDOMNode; 3984 return (_ReactDOM$findDOMNode = (react_dom__WEBPACK_IMPORTED_MODULE_2___default().findDOMNode)) === null || _ReactDOM$findDOMNode === void 0 ? void 0 : _ReactDOM$findDOMNode.call((react_dom__WEBPACK_IMPORTED_MODULE_2___default()), node); 3985 } 3986 return null; 3987} 3988 3989/***/ }), 3990 3991/***/ 29005: 3992/***/ ((module) => { 3993 3994/** Used for built-in method references. */ 3995var objectProto = Object.prototype; 3996 3997/** 3998 * Used to resolve the 3999 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 4000 * of values. 4001 */ 4002var nativeObjectToString = objectProto.toString; 4003 4004/** 4005 * Converts `value` to a string using `Object.prototype.toString`. 4006 * 4007 * @private 4008 * @param {*} value The value to convert. 4009 * @returns {string} Returns the converted string. 4010 */ 4011function objectToString(value) { 4012 return nativeObjectToString.call(value); 4013} 4014 4015module.exports = objectToString; 4016 4017 4018/***/ }), 4019 4020/***/ 29296: 4021/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4022 4023"use strict"; 4024/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4025/* harmony export */ A: () => (/* binding */ _inherits) 4026/* harmony export */ }); 4027/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1087); 4028 4029function _inherits(t, e) { 4030 if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); 4031 t.prototype = Object.create(e && e.prototype, { 4032 constructor: { 4033 value: t, 4034 writable: !0, 4035 configurable: !0 4036 } 4037 }), Object.defineProperty(t, "prototype", { 4038 writable: !1 4039 }), e && (0,_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t, e); 4040} 4041 4042 4043/***/ }), 4044 4045/***/ 30414: 4046/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 4047 4048"use strict"; 4049/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4050/* harmony export */ A: () => (/* binding */ _createClass) 4051/* harmony export */ }); 4052/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20205); 4053 4054function _defineProperties(e, r) { 4055 for (var t = 0; t < r.length; t++) { 4056 var o = r[t]; 4057 o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(o.key), o); 4058 } 4059} 4060function _createClass(e, r, t) { 4061 return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { 4062 writable: !1 4063 }), e; 4064} 4065 4066 4067/***/ }), 4068 4069/***/ 34511: 4070/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4071 4072"use strict"; 4073/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4074/* harmony export */ A: () => (/* binding */ useMemo) 4075/* harmony export */ }); 4076/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 4077/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 4078 4079function useMemo(getValue, condition, shouldUpdate) { 4080 var cacheRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef({}); 4081 if (!('value' in cacheRef.current) || shouldUpdate(cacheRef.current.condition, condition)) { 4082 cacheRef.current.value = getValue(); 4083 cacheRef.current.condition = condition; 4084 } 4085 return cacheRef.current.value; 4086} 4087 4088/***/ }), 4089 4090/***/ 34692: 4091/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 4092 4093"use strict"; 4094/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4095/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 4096/* harmony export */ DD: () => (/* binding */ menuPath), 4097/* harmony export */ T_: () => (/* binding */ menus), 4098/* harmony export */ Yn: () => (/* binding */ getPath), 4099/* harmony export */ fO: () => (/* binding */ isWarehouseOperationVideoUser), 4100/* harmony export */ mv: () => (/* binding */ isNewUser) 4101/* harmony export */ }); 4102/* unused harmony export menuNames */ 4103/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3478); 4104/* harmony import */ var _common_platform_show__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37597); 4105var __assign = undefined && undefined.__assign || function () { 4106 __assign = Object.assign || function (t) { 4107 for (var s, i = 1, n = arguments.length; i < n; i++) { 4108 s = arguments[i]; 4109 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 4110 } 4111 return t; 4112 }; 4113 return __assign.apply(this, arguments); 4114}; 4115var _a, _b; 4116 4117 4118var isNewUser = ((_a = js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('N')) > -1 || !js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get('token'); 4119var isWarehouseOperationVideoUser = function isWarehouseOperationVideoUser() { 4120 var _a; 4121 if (typeof window !== 'undefined') { 4122 var isQK = window.siteCheck.isSite('QK'); 4123 var isSafeUser = String(js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get('SHOWMESSAGE')).indexOf('Q') > -1; 4124 var isShowVideo = (_a = window.siteCheck) === null || _a === void 0 ? void 0 : _a.isShow('show-warehouse-video'); 4125 if (isQK && !isSafeUser) return true; 4126 return !isShowVideo; 4127 } else { 4128 return true; 4129 } 4130}; 4131var hideMyQuotationMenu = function hideMyQuotationMenu() { 4132 var _a, _b; 4133 var flag = true; 4134 if (typeof window !== 'undefined') { 4135 var cjNum = (_a = window === null || window === void 0 ? void 0 : window.loginInfoController) === null || _a === void 0 ? void 0 : _a.info('num'); 4136 var users = ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('my-quotation-users')) || [];
4137 if (!users.includes('CJ10001')) { 4138 users.push('CJ10001'); 4139 } 4140 flag = !users.includes(cjNum); 4141 } 4142 return flag; 4143}; 4144var menus = [{ 4145 name: 'Home', 4146 nameTrans: function nameTrans() { 4147 return "".concat(window.i18next.t("common-mycj-menu-home", 'Home')); 4148 }, 4149 iconclass: 'home', 4150 active: false, 4151 code: 'mycj_dashboard', 4152 route: '/home', 4153 childs: [] 4154}, { 4155 name: 'Source', 4156 nameTrans: function nameTrans() { 4157 return "".concat(window.i18next.t("common-mycj-menu-source", 'Source')); 4158 }, 4159 iconclass: 'cedaohang-soupin', 4160 active: false, 4161 childs: [{ 4162 name: 'Find Products', 4163 nameTrans: function nameTrans() { 4164 return "".concat(window.i18next.t("common-mycj-menu-products", 'Products')); 4165 }, 4166 active: false, 4167 childs: [{ 4168 name: 'Intelligence', 4169 nameTrans: function nameTrans() { 4170 return "".concat(window.i18next.t("common-mycj-menu-intelligence", 'Intelligence')); 4171 }, 4172 route: '/intelligence/ad-trends', 4173 active: false 4174 }, { 4175 name: 'Catalog', 4176 nameTrans: function nameTrans() { 4177 return "".concat(window.i18next.t("common-mycj-menu-intelligence-catalog", 'Catalog')); 4178 }, 4179 route: '/home.html', 4180 active: false 4181 }] 4182 }, { 4183 name: 'Factories', 4184 nameTrans: function nameTrans() { 4185 return "".concat(window.i18next.t("common-mycj-menu-find-factories", 'Factories')); 4186 }, 4187 route: '/factories', 4188 trackingClick: '{"elementId":"NCJ001-223","actionType":"suppliers_click","pageCode":"NCJ001"}' 4189 }, { 4190 name: 'Brands', 4191 nameTrans: function nameTrans() { 4192 return "".concat(window.i18next.t("common-mycj-menu-brands", 'Brands')); 4193 }, 4194 route: 'https://selected.cjdropshipping.com/', 4195 active: false 4196 }, { 4197 name: 'Sourcing', 4198 nameTrans: function nameTrans() { 4199 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 4200 }, 4201 active: false, 4202 tip: function tip() { 4203 return window.i18next.t("common-mycj-menu-sourcing-tip"); 4204 }, 4205 childs: [{ 4206 name: 'Sourcing List', 4207 nameTrans: function nameTrans() { 4208 return "".concat(window.i18next.t("common-mycj-menu-sourcing-list")); 4209 }, 4210 code: 'mycj_sourcing', 4211 route: '/mine/sourcing/list', 4212 active: false 4213 }, {
4214 name: 'By CJ', 4215 nameTrans: function nameTrans() { 4216 return 'By CJ'; 4217 }, 4218 route: '/mine/quickSourcing', 4219 active: false 4220 }, { 4221 name: 'By 1688', 4222 nameTrans: function nameTrans() { 4223 return 'By 1688'; 4224 }, 4225 route: 'https://www.1688.com/', 4226 target: '_blank', 4227 requireExtension: true, 4228 active: false 4229 }, { 4230 name: 'By TaoBao', 4231 nameTrans: function nameTrans() { 4232 return 'By TaoBao'; 4233 }, 4234 route: 'https://www.taobao.com/', 4235 target: '_blank', 4236 requireExtension: true, 4237 active: false 4238 }, { 4239 name: 'By AliExpress', 4240 nameTrans: function nameTrans() { 4241 return 'By AliExpress'; 4242 }, 4243 route: 'https://alitems.com/g/1e8d11449400282ca80416525dc3e8/', 4244 target: '_blank', 4245 requireExtension: true, 4246 active: false 4247 }, { 4248 name: 'By eBay', 4249 nameTrans: function nameTrans() { 4250 return 'By eBay'; 4251 }, 4252 route: 'https://www.ebay.com/', 4253 target: '_blank', 4254 requireExtension: true, 4255 active: false 4256 }, {
4257 name: 'By QK source', 4258 nameTrans: function nameTrans() { 4259 return 'By QK source'; 4260 }, 4261 route: 'https://qksource.com/mine/quickSourcing', 4262 target: '_blank', 4263 active: false 4264 }] 4265 }] 4266}, { 4267 name: 'Community', 4268 nameTrans: function nameTrans() { 4269 return "".concat(window.i18next.t("common-mycj-menu-community", 'Community')); 4270 }, 4271 iconclass: 'Community', 4272 active: false, 4273 code: 'mycj_community', 4274 childs: [{ 4275 name: 'Agents', 4276 nameTrans: function nameTrans() { 4277 return "".concat(window.i18next.t("common-mycj-menu-agent", 'Agents')); 4278 }, 4279 active: false, 4280 route: '/agents' 4281 }, { 4282 name: 'Academy', 4283 nameTrans: function nameTrans() { 4284 return "".concat(window.i18next.t("common-mycj-menu-find-academy", 'Academy')); 4285 }, 4286 route: '/mentors', 4287 active: false 4288 }, { 4289 name: 'Elites', 4290 nameTrans: function nameTrans() { 4291 return "".concat(window.i18next.t("common-mycj-menu-elites", 'Elites')); 4292 }, 4293 target: '_blank', 4294 route: 'https://elites.cjdropshipping.com/', 4295 active: false 4296 }] 4297}, { 4298 name: 'My Products', 4299 nameTrans: function nameTrans() { 4300 return "".concat(window.i18next.t("common-mycj-menu-my-products", 'My Products')); 4301 }, 4302 iconclass: 'bianzu62', 4303 active: false, 4304 code: 'mycj_products', 4305 childs: [{ 4306 name: 'Added Products', 4307 nameTrans: function nameTrans() { 4308 return "".concat(window.i18next.t("common-mycj-menu-added-products", 'Added Products')); 4309 }, 4310 code: 'mycj_my_products', 4311 route: '/mine/products/myproducts', 4312 active: false 4313 }, { 4314 name: 'Store Products', 4315 nameTrans: function nameTrans() { 4316 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 4317 }, 4318 code: 'mycj_store_products', 4319 route: '/mine/products/connection', 4320 active: false, 4321 tip: function tip() { 4322 return window.i18next.t("common-mycj-menu-store-products-tip"); 4323 } 4324 }, { 4325 name: 'My Quotation', 4326 nameTrans: function nameTrans() { 4327 return "".concat(window.i18next.t("common-mycj-menu-my-quotation", 'My Quotation')); 4328 }, 4329 code: 'mycj_my_quotation', 4330 route: '/mine/myQuotation', 4331 active: false, 4332 isHide: hideMyQuotationMenu, 4333 tip: function tip() { 4334 return window.i18next.t("common-mycj-menu-my-quotation-tip", 'Check the final logistics PCS price applied at checkout.'); 4335 } 4336 }, { 4337 name: 'My Inventory', 4338 nameTrans: function nameTrans() { 4339 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 4340 }, 4341 code: 'mycj_my_inventory', 4342 route: '/mine/myInventoryNew/productInventory', 4343 active: false, 4344 tip: function tip() { 4345 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 4346 } 4347 }, { 4348 name: 'Inventory Planner', 4349 nameTrans: function nameTrans() { 4350 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 4351 }, 4352 code: 'mycj_inventory_planner', 4353 route: '/mine/inventoryPlanner', 4354 active: false 4355 }, { 4356 name: 'Custom Packaging', 4357 nameTrans: function nameTrans() { 4358 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 4359 }, 4360 code: 'mycj_custom_packaging', 4361 route: '/my.html#/regular-packaging', 4362 active: false, 4363 tip: function tip() { 4364 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 4365 } 4366 }, { 4367 name: 'Customization', 4368 nameTrans: function nameTrans() { 4369 return "".concat(window.i18next.t("common-mycj-menu-customization")); 4370 }, 4371 code: 'mycj_customization', 4372 route: '/mine/customization', 4373 active: false, 4374 tip: function tip() { 4375 var _a; 4376 return window.i18next.t("common-mycj-menu-customization-tip", { 4377 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 4378 }); 4379 } 4380 }] 4381}, { 4382 name: 'Cart', 4383 nameTrans: function nameTrans() { 4384 return "".concat(window.i18next.t("common-mycj-menu-cart")); 4385 }, 4386 iconclass: 'bianzu51', 4387 active: false, 4388 route: '/mine/purchase/purchaseCart', 4389 childs: [], 4390 code: 'mycj_cart' 4391}, { 4392 name: 'Orders', 4393 nameTrans: function nameTrans() { 4394 return "".concat(window.i18next.t("common-mycj-menu-orders")); 4395 }, 4396 iconclass: 'bianzu41', 4397 active: false,
4398 code: 'mycj_orders', 4399 childs: [{ 4400 name: 'Store Orders', 4401 nameTrans: function nameTrans() { 4402 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 4403 }, 4404 active: false, 4405 code: 'mycj_store_orders', 4406 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 4407 }, { 4408 name: 'Sample Orders', 4409 nameTrans: function nameTrans() { 4410 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 4411 }, 4412 active: false, 4413 code: 'mycj_sample_orders', 4414 route: '/mine/purchase/purchaseList?orderType=1' 4415 }, { 4416 name: 'Wholesale Orders', 4417 nameTrans: function nameTrans() { 4418 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 4419 }, 4420 active: false, 4421 code: 'mycj_wholesale_orders', 4422 route: '/mine/purchase/purchaseList?orderType=3' 4423 }, { 4424 name: 'Inventory Orders', 4425 nameTrans: function nameTrans() { 4426 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 4427 }, 4428 active: false, 4429 code: 'mycj_inventory_orders', 4430 route: '/mine/purchase/purchaseList?orderType=2' 4431 }, { 4432 name: '---', 4433 isDivider: true 4434 }, { 4435 name: 'Order Fulfillment', 4436 nameTrans: function nameTrans() { 4437 return "".concat(window.i18next.t("common-mycj-menu-order-fulfillment", 'Order Fulfillment')); 4438 }, 4439 active: false, 4440 childs: [{ 4441 name: 'Fulfillment Status', 4442 nameTrans: function nameTrans() { 4443 return "".concat(window.i18next.t("common-mycj-menu-fulfillment-status")); 4444 }, 4445 code: 'mycj_orders_tracking', 4446 route: '/mine/orderTracing/list', 4447 active: false 4448 }, {
4449 name: 'Warehouse Operation Video', 4450 nameTrans: function nameTrans() { 4451 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 4452 }, 4453 code: 'mycj_order-video', 4454 route: '/mine/orderVideo', 4455 active: false, 4456 isHide: isWarehouseOperationVideoUser 4457 }] 4458 }, { 4459 name: 'Undelivered Orders', 4460 nameTrans: function nameTrans() { 4461 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 4462 }, 4463 code: 'mycj_undelivered_orders', 4464 route: '/mine/undeliveredOrder', 4465 active: false 4466 }, { 4467 name: 'Disputes', 4468 nameTrans: function nameTrans() { 4469 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 4470 }, 4471 code: 'mycj_disputes', 4472 route: '/mine/dispute/list', 4473 active: false 4474 }] 4475}, { 4476 name: 'Service', 4477 nameTrans: function nameTrans() { 4478 return "".concat(window.i18next.t("common-mycj-menu-service")); 4479 }, 4480 iconclass: 'bianzu71', 4481 active: false, 4482 code: 'mycj_service', 4483 childs: [{ 4484 name: 'Print on Demand', 4485 nameTrans: function nameTrans() { 4486 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 4487 }, 4488 code: 'mycj_print_on_demand', 4489 active: false, 4490 tip: function tip() { 4491 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 4492 }, 4493 childs: [{ 4494 name: 'POD Products', 4495 nameTrans: function nameTrans() { 4496 return "".concat(window.i18next.t("common-mycj-menu-pod-products")); 4497 }, 4498 route: '/printonDemand/home', 4499 active: false 4500 }, {
4501 name: "Buyer's Design", 4502 nameTrans: function nameTrans() { 4503 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 4504 }, 4505 iconclass: 'maijiaxinxi', 4506 code: 'mycj_buyers_design', 4507 route: '/my.html#/pod/buyer-design', 4508 active: false, 4509 tipName: 'Connected POD products in your store.' 4510 }, { 4511 name: 'Design Myself', 4512 nameTrans: function nameTrans() { 4513 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 4514 }, 4515 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 4516 code: 'mycj_design_myself', 4517 route: '/my.html#/pod/design-myself', 4518 active: false, 4519 tipName: 'Your designed products on CJ.' 4520 }] 4521 }, { 4522 name: '3PL Fulfillment', 4523 nameTrans: function nameTrans() { 4524 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 4525 }, 4526 code: 'mycj_3pl', 4527 active: false, 4528 tip: function tip() { 4529 var _a; 4530 return window.i18next.t("common-mycj-menu-3pl-tip", { 4531 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 4532 }); 4533 }, 4534 childs: [{ 4535 name: 'Products', 4536 nameTrans: function nameTrans() { 4537 return "".concat(window.i18next.t("common-mycj-menu-products")); 4538 }, 4539 code: 'mycj_3pl_products', 4540 route: '/my.html#/products-connection/goods', 4541 active: false 4542 }, {
4543 name: 'Shipment', 4544 nameTrans: function nameTrans() { 4545 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 4546 }, 4547 code: 'mycj_3pl_shipment', 4548 route: '/mine/shipment', 4549 active: false 4550 }, { 4551 name: '24h Fulfillment', 4552 nameTrans: function nameTrans() { 4553 return "".concat(window.i18next.t("common-mycj-menu-24h-fulfillment", '24h Fulfillment')); 4554 }, 4555 code: 'mycj_24h_fulfillment', 4556 route: '/fulfillmentservice', 4557 active: false 4558 }] 4559 }, { 4560 name: 'Buy/Sell Your Store', 4561 nameTrans: function nameTrans() { 4562 return "".concat(window.i18next.t("common-mycj-menu-buy-sell-yourstore", 'Buy/Sell Your Store')); 4563 }, 4564 route: 'https://blog.cjdropshipping.com/detail/Sell-Your-Shopify-Store-for-Cash-Today-', 4565 target: '_blank', 4566 active: false, 4567 childs: [] 4568 }, { 4569 name: 'Payment Agency', 4570 nameTrans: function nameTrans() { 4571 return "".concat(window.i18next.t("common-mycj-menu-payment-agency", 'Payment Agency')); 4572 }, 4573 route: '/payment-agency', 4574 target: '_blank', 4575 active: false, 4576 childs: [] 4577 }, { 4578 name: 'Credit Service', 4579 nameTrans: function nameTrans() { 4580 return "".concat(window.i18next.t("common-mycj-menu-credit-service", 'Credit Service')); 4581 }, 4582 route: '/loancredit', 4583 target: '_blank', 4584 active: false, 4585 childs: [] 4586 }, { 4587 name: 'Faster Shipping Service', 4588 nameTrans: function nameTrans() { 4589 return "".concat(window.i18next.t("common-mycj-menu-fast-shipping", 'Faster Shipping Service')); 4590 }, 4591 route: '/logistics', 4592 target: '_blank', 4593 active: false, 4594 childs: [] 4595 }, { 4596 name: 'Advertiser Agency', 4597 nameTrans: function nameTrans() { 4598 return "".concat(window.i18next.t("common-mycj-menu-advertiser-agency", 'Advertiser Agency')); 4599 }, 4600 route: '/advertisingservice', 4601 target: '_blank', 4602 active: false, 4603 childs: [] 4604 }, { 4605 name: 'Profit Operator', 4606 nameTrans: function nameTrans() { 4607 return "".concat(window.i18next.t("common-mycj-menu-profit-operator", 'Profit Operator')); 4608 }, 4609 route: '/free-temu-tiktok-stores', 4610 target: '_blank', 4611 active: false, 4612 childs: [] 4613 }, { 4614 name: 'CJ Entity', 4615 nameTrans: function nameTrans() { 4616 return "".concat(window.i18next.t("common-mycj-menu-cj-entity", 'CJ Entity')); 4617 }, 4618 route: '/cj-entity', 4619 target: '_blank', 4620 active: false, 4621 childs: [] 4622 }, { 4623 name: 'ODM Service', 4624 nameTrans: function nameTrans() { 4625 return "".concat(window.i18next.t("common-mycj-menu-odm", 'ODM Service')); 4626 }, 4627 route: '/odm', 4628 target: '_blank', 4629 active: false, 4630 childs: [] 4631 }, { 4632 name: 'Brand Packaging', 4633 nameTrans: function nameTrans() { 4634 return "".concat(window.i18next.t("common-mycj-menu-brand-packaging", 'Brand Packaging')); 4635 }, 4636 route: '/customPackaging', 4637 target: '_blank', 4638 active: false, 4639 childs: [] 4640 }] 4641}, { 4642 name: 'Authorization', 4643 nameTrans: function nameTrans() { 4644 return "".concat(window.i18next.t("common-mycj-menu-authorization-new", 'Apps')); 4645 }, 4646 iconclass: 'dianpushouquan', 4647 active: false, 4648 special: true, 4649 code: 'mycj_authorization', 4650 childs: [__assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shopify), { 4651 nameTrans: function nameTrans() { 4652 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 4653 }, 4654 version: 2, 4655 active: false 4656 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.wed2c), { 4657 nameTrans: function nameTrans() { 4658 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 4659 }, 4660 version: 2, 4661 active: false 4662 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.temu), { 4663 nameTrans: function nameTrans() { 4664 return "".concat(window.i18next.t("common-mycj-menu-temu")); 4665 }, 4666 version: 2, 4667 type: 'authorize', 4668 active: false 4669 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.temu_us_local), { 4670 nameTrans: function nameTrans() { 4671 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 4672 }, 4673 version: 2, 4674 type: 'authorize', 4675 active: false 4676 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.temu_certified_overseas), { 4677 nameTrans: function nameTrans() { 4678 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 4679 }, 4680 version: 2, 4681 type: 'authorize', 4682 active: false 4683 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shein), { 4684 nameTrans: function nameTrans() { 4685 return "".concat(window.i18next.t("common-mycj-menu-shein")); 4686 }, 4687 version: 2, 4688 type: 'authorize', 4689 active: false 4690 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.whop), { 4691 nameTrans: function nameTrans() { 4692 return "".concat(window.i18next.t("common-mycj-menu-whop", 'Whop')); 4693 }, 4694 version: 2, 4695 type: 'authorize', 4696 active: false 4697 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.tiktok), { 4698 nameTrans: function nameTrans() { 4699 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 4700 }, 4701 version: 2, 4702 type: 'authorize', 4703 active: false 4704 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.tiktok_us), { 4705 nameTrans: function nameTrans() { 4706 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 4707 }, 4708 version: 2, 4709 type: 'authorize', 4710 active: false 4711 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.tiktok_us_cross), { 4712 nameTrans: function nameTrans() { 4713 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 4714 }, 4715 version: 2, 4716 type: 'authorize', 4717 active: false 4718 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.woocommerce), { 4719 nameTrans: function nameTrans() { 4720 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 4721 }, 4722 version: 2, 4723 type: 'authorize', 4724 active: false 4725 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.ebay), { 4726 nameTrans: function nameTrans() { 4727 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 4728 }, 4729 version: 2, 4730 type: 'authorize', 4731 active: false 4732 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.api), { 4733 nameTrans: function nameTrans() { 4734 return "".concat(window.i18next.t("common-mycj-menu-api")); 4735 }, 4736 version: 2, 4737 type: 'authorize', 4738 active: false 4739 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.etsy), { 4740 nameTrans: function nameTrans() { 4741 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 4742 }, 4743 version: 2, 4744 type: 'authorize', 4745 active: false 4746 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.aliexpress), { 4747 nameTrans: function nameTrans() { 4748 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 4749 }, 4750 version: 2, 4751 type: 'authorize', 4752 active: false 4753 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.wix), { 4754 nameTrans: function nameTrans() { 4755 return "".concat(window.i18next.t("common-mycj-menu-wix")); 4756 }, 4757 version: 2, 4758 type: 'authorize', 4759 active: false 4760 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.lazada), { 4761 nameTrans: function nameTrans() { 4762 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 4763 }, 4764 version: 2, 4765 type: 'authorize', 4766 active: false 4767 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shopee), { 4768 nameTrans: function nameTrans() { 4769 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 4770 }, 4771 version: 2, 4772 type: 'authorize', 4773 active: false 4774 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.squarespace), { 4775 nameTrans: function nameTrans() { 4776 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 4777 }, 4778 version: 2, 4779 type: 'authorize', 4780 active: false 4781 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shoplazza), { 4782 nameTrans: function nameTrans() { 4783 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 4784 }, 4785 version: 2, 4786 type: 'authorize', 4787 active: false 4788 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.magento), { 4789 nameTrans: function nameTrans() { 4790 return "".concat(window.i18next.t("common-mycj-menu-magento")); 4791 }, 4792 version: 2, 4793 type: 'authorize', 4794 active: false 4795 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.bigcommerce), { 4796 nameTrans: function nameTrans() { 4797 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 4798 }, 4799 version: 2, 4800 type: 'authorize', 4801 active: false 4802 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.prestashop), { 4803 nameTrans: function nameTrans() { 4804 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 4805 }, 4806 version: 2, 4807 type: 'authorize', 4808 active: false 4809 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.allvalue), { 4810 nameTrans: function nameTrans() { 4811 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 4812 }, 4813 version: 2, 4814 type: 'authorize', 4815 active: false 4816 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.nuvemshop), { 4817 nameTrans: function nameTrans() { 4818 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 4819 }, 4820 version: 2, 4821 type: 'authorize', 4822 active: false 4823 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.mercado), { 4824 nameTrans: function nameTrans() { 4825 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 4826 }, 4827 version: 2, 4828 type: 'authorize', 4829 active: false 4830 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shipstation), { 4831 nameTrans: function nameTrans() { 4832 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 4833 }, 4834 version: 2, 4835 type: 'authorize', 4836 active: false 4837 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.orangeconnex), { 4838 nameTrans: function nameTrans() { 4839 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 4840 }, 4841 version: 2, 4842 type: 'authorize', 4843 active: false 4844 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.chatgpt), { 4845 nameTrans: function nameTrans() { 4846 return "".concat(window.i18next.t('common-mycj-menu-chatgpt', 'ChatGPT')); 4847 }, 4848 version: 2, 4849 type: 'authorize', 4850 active: false 4851 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.codex), { 4852 nameTrans: function nameTrans() { 4853 return "".concat(window.i18next.t('common-mycj-menu-codex', 'CodeX')); 4854 }, 4855 version: 2, 4856 type: 'authorize', 4857 active: false 4858 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.claude), { 4859 nameTrans: function nameTrans() { 4860 return "".concat(window.i18next.t('common-mycj-menu-claude', 'Claude')); 4861 }, 4862 version: 2, 4863 type: 'authorize', 4864 active: false 4865 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORMAll */ .Z8.others), { 4866 nameTrans: function nameTrans() { 4867 return "".concat(window.i18next.t("common-mycj-menu-others")); 4868 }, 4869 version: 2, 4870 type: 'authorize', 4871 active: false 4872 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.mabang), { 4873 nameTrans: function nameTrans() { 4874 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 4875 }, 4876 version: 2, 4877 type: 'authorize', 4878 active: false 4879 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.miaoshou), { 4880 nameTrans: function nameTrans() { 4881 return "".concat(window.i18next.t("common-mycj-menu-miaoshou")); 4882 }, 4883 version: 2, 4884 type: 'authorize', 4885 active: false 4886 })] 4887}, { 4888 name: "My ".concat(typeof window !== 'undefined' && ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('name'))), 4889 nameVal: "My CJ", 4890 nameTrans: function nameTrans() { 4891 var _a; 4892 return window.i18next.t("common-mycj-my-site", { 4893 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 4894 }); 4895 }, 4896 iconclass: 'bianzu32', 4897 active: false, 4898 childs: [{ 4899 name: 'Settings', 4900 nameTrans: function nameTrans() { 4901 return "".concat(window.i18next.t("common-mycj-menu-settings", 'Settings')); 4902 }, 4903 code: 'mycj_profile', 4904 route: '/my.html#/profile/info', 4905 active: false 4906 }, { 4907 name: 'Wallet', 4908 nameTrans: function nameTrans() { 4909 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 4910 }, 4911 code: 'mycj_wallet', 4912 route: '/mine/wallet', 4913 active: false 4914 }, { 4915 name: 'Ticket', 4916 nameTrans: function nameTrans() { 4917 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 4918 }, 4919 code: 'mycj_ticket', 4920 route: '/mine/ticket', 4921 active: false 4922 }, { 4923 name: 'CJ Prime', 4924 nameTrans: function nameTrans() { 4925 return "".concat(window.i18next.t("common-mycj-menu-cj-prime", 'CJ Prime')); 4926 }, 4927 route: '/prime', 4928 target: '_blank', 4929 active: false 4930 }, { 4931 name: 'Shipping Calculation', 4932 nameTrans: function nameTrans() { 4933 return "".concat(window.i18next.t("common-mycj-menu-shipping-calculation", 'Shipping Calculation')); 4934 }, 4935 code: 'mycj_shipping_calculation', 4936 route: '/calculation.html', 4937 active: false 4938 }, { 4939 name: 'Recent Activity', 4940 nameTrans: function nameTrans() { 4941 return "".concat(window.i18next.t("common-mycj-menu-recent-activity", 'Recent Activity')); 4942 }, 4943 active: false, 4944 childs: [{ 4945 name: 'Browsing History', 4946 nameTrans: function nameTrans() { 4947 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 4948 }, 4949 code: 'mycj_browsing_history', 4950 route: '/viewHistory', 4951 active: false 4952 }, {
4953 name: 'Products Records', 4954 nameTrans: function nameTrans() { 4955 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 4956 }, 4957 route: '/my.html#/products-connection/history', 4958 code: 'mycj_products_records', 4959 active: false 4960 }, { 4961 name: 'Video Records', 4962 nameTrans: function nameTrans() { 4963 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 4964 }, 4965 code: 'mycj_video_list', 4966 route: '/mine/listVideos', 4967 active: false 4968 }, { 4969 name: 'Saved Factories', 4970 nameTrans: function nameTrans() { 4971 return "".concat(window.i18next.t("common-mycj-menu-saved-suppliers", 'Saved Factories')); 4972 }, 4973 route: '/savedFactories', 4974 active: false 4975 }, { 4976 name: 'Export List', 4977 nameTrans: function nameTrans() { 4978 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 4979 }, 4980 iconclass: 'liwuicon_', 4981 code: 'mycj_export_list', 4982 route: '/mine/exportList', 4983 active: false 4984 }] 4985 }] 4986}]; 4987var menuPath = {}; 4988var menuNames = {}; 4989function loops(list, parent) { 4990 return (list || []).map(function (_a) { 4991 var route = _a.route, 4992 childs = _a.childs, 4993 name = _a.name, 4994 version = _a.version; 4995 var _route = route; 4996 var node = menuNames[name] = menuPath[_route] = { 4997 parent: parent, 4998 name: name, 4999 version: version, 5000 route: _route 5001 }; 5002 node['childs'] = loops(childs, node); 5003 return node; 5004 }); 5005} 5006function getPath(name) { 5007 var obj = menuNames[name]; 5008 var arr = []; 5009 while (obj && obj.name) { 5010 if (obj.childs && obj.childs[0]) { 5011 arr.push(obj.name); 5012 } else { 5013 arr.push(obj.name); 5014 } 5015 if (!obj.parent) break; 5016 obj = obj.parent; 5017 } 5018 return arr; 5019} 5020loops(menus, null); 5021var createAuthTree = function createAuthTree() { 5022 var authMapByRoute = []; 5023 var _fun = function fun(list) { 5024 return list.map(function (l) { 5025 if (l.route && l.code) authMapByRoute.push({ 5026 name: l.name, 5027 code: l.code, 5028 route: l.route 5029 }); 5030 return { 5031 name: l.name, 5032 code: l.code, 5033 route: l.route, 5034 children: l.childs && _fun(l.childs) 5035 }; 5036 }); 5037 }; 5038 return [_fun(menus), authMapByRoute]; 5039}; 5040/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAuthTree); 5041 5042/***/ }), 5043 5044/***/ 36694: 5045/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5046 5047"use strict"; 5048/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5049/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 5050/* harmony export */ }); 5051/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19284); 5052/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 5053/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 5054 5055 5056var TriggerWrapper = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(function (props, ref) { 5057 var children = props.children, 5058 getTriggerDOMNode = props.getTriggerDOMNode; 5059 var canUseRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .supportRef */ .f3)(children); 5060 5061 // When use `getTriggerDOMNode`, we should do additional work to get the real dom 5062 var setRef = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(function (node) { 5063 (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .fillRef */ .Xf)(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node); 5064 }, [getTriggerDOMNode]); 5065 var mergedRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .useComposeRef */ .xK)(setRef, (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .getNodeRef */ .A9)(children)); 5066 return canUseRef ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(children, { 5067 ref: mergedRef 5068 }) : children; 5069}); 5070if (false) // removed by dead control flow 5071{} 5072/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TriggerWrapper); 5073 5074/***/ }), 5075 5076/***/ 36762: 5077/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5078 5079"use strict"; 5080/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5081/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 5082/* harmony export */ }); 5083/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 5084var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 5085 function adopt(value) { 5086 return value instanceof P ? value : new P(function (resolve) { 5087 resolve(value); 5088 }); 5089 } 5090 return new (P || (P = Promise))(function (resolve, reject) { 5091 function fulfilled(value) {
5092 try { 5093 step(generator.next(value)); 5094 } catch (e) { 5095 reject(e); 5096 } 5097 } 5098 function rejected(value) { 5099 try { 5100 step(generator["throw"](value)); 5101 } catch (e) { 5102 reject(e); 5103 } 5104 } 5105 function step(result) { 5106 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 5107 } 5108 step((generator = generator.apply(thisArg, _arguments || [])).next()); 5109 }); 5110}; 5111var __generator = undefined && undefined.__generator || function (thisArg, body) { 5112 var _ = { 5113 label: 0, 5114 sent: function sent() { 5115 if (t[0] & 1) throw t[1]; 5116 return t[1]; 5117 }, 5118 trys: [], 5119 ops: [] 5120 }, 5121 f, 5122 y, 5123 t, 5124 g; 5125 return g = { 5126 next: verb(0), 5127 "throw": verb(1), 5128 "return": verb(2) 5129 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 5130 return this; 5131 }), g; 5132 function verb(n) { 5133 return function (v) { 5134 return step([n, v]); 5135 }; 5136 } 5137 function step(op) { 5138 if (f) throw new TypeError("Generator is already executing."); 5139 while (g && (g = 0, op[0] && (_ = 0)), _) try { 5140 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 5141 if (y = 0, t) op = [op[0] & 2, t.value]; 5142 switch (op[0]) { 5143 case 0: 5144 case 1: 5145 t = op; 5146 break; 5147 case 4: 5148 _.label++; 5149 return { 5150 value: op[1], 5151 done: false 5152 }; 5153 case 5: 5154 _.label++; 5155 y = op[1]; 5156 op = [0]; 5157 continue; 5158 case 7: 5159 op = _.ops.pop(); 5160 _.trys.pop(); 5161 continue; 5162 default: 5163 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 5164 _ = 0; 5165 continue; 5166 } 5167 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 5168 _.label = op[1]; 5169 break; 5170 } 5171 if (op[0] === 6 && _.label < t[1]) { 5172 _.label = t[1]; 5173 t = op; 5174 break; 5175 } 5176 if (t && _.label < t[2]) { 5177 _.label = t[2]; 5178 _.ops.push(op); 5179 break; 5180 } 5181 if (t[2]) _.ops.pop(); 5182 _.trys.pop(); 5183 continue; 5184 } 5185 op = body.call(thisArg, _); 5186 } catch (e) { 5187 op = [6, e]; 5188 y = 0; 5189 } finally { 5190 f = t = 0; 5191 } 5192 if (op[0] & 5) throw op[1]; 5193 return { 5194 value: op[0] ? op[1] : void 0, 5195 done: true 5196 }; 5197 } 5198}; 5199 5200var ossHostConfig = __webpack_require__(47280); 5201var dexieLoadPromise = null; 5202function loadDexieScript() { 5203 return __awaiter(this, void 0, Promise, function () { 5204 return __generator(this, function (_a) { 5205 if (typeof Dexie !== 'undefined') { 5206 return [2, Promise.resolve()]; 5207 } 5208 if (dexieLoadPromise) { 5209 return [2, dexieLoadPromise]; 5210 } 5211 dexieLoadPromise = new Promise(function (resolve, reject) { 5212 var existingScript = document.querySelector('script[src*="[email protected]"]'); 5213 if (existingScript) { 5214 if (typeof Dexie !== 'undefined') { 5215 resolve(); 5216 return; 5217 } 5218 var checkCount_1 = 0; 5219 var maxChecks_1 = 50; 5220 var checkInterval_1 = setInterval(function () { 5221 checkCount_1++; 5222 if (typeof Dexie !== 'undefined') { 5223 clearInterval(checkInterval_1); 5224 resolve(); 5225 } else if (checkCount_1 >= maxChecks_1) { 5226 clearInterval(checkInterval_1); 5227 reject(new Error('Dexie å è½½è¶ æ¶ï¼å ¨å±åéæªå®ä¹')); 5228 } 5229 }, 100); 5230 return; 5231 } 5232 var script = document.createElement('script'); 5233 script.src = "".concat(ossHostConfig["production"] || 'https://sv-resource.oss-accelerate.aliyuncs.com', "/common-public/[email protected]"); 5234 script.async = true; 5235 script.onload = function () { 5236 if (typeof Dexie !== 'undefined') { 5237 resolve(); 5238 } else { 5239 reject(new Error('Dexie å 载失败ï¼å ¨å±åéæªå®ä¹')); 5240 } 5241 }; 5242 script.onerror = function () { 5243 reject(new Error('Dexie èæ¬å 载失败')); 5244 }; 5245 document.head.appendChild(script); 5246 });
5247 return [2, dexieLoadPromise]; 5248 }); 5249 }); 5250} 5251var CacheDatabase = function () { 5252 function CacheDatabase(DexieClass) { 5253 this.db = new DexieClass('CacheDatabase'); 5254 this.db.version(1).stores({ 5255 cache: 'key, timestamp, expiresAt' 5256 }); 5257 this.cache = this.db.cache; 5258 } 5259 return CacheDatabase; 5260}(); 5261var DexieCache = function () { 5262 function DexieCache() { 5263 this.db = null; 5264 this.DEFAULT_EXPIRE_TIME = 10 * 60 * 1000; 5265 this.DB_NAME = 'CacheDatabase'; 5266 } 5267 DexieCache.prototype.initDB = function () { 5268 return __awaiter(this, void 0, Promise, function () { 5269 return __generator(this, function (_a) { 5270 switch (_a.label) { 5271 case 0: 5272 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5273 throw new Error('Dexie cache only works in browser environment'); 5274 } 5275 return [4, loadDexieScript()]; 5276 case 1: 5277 _a.sent(); 5278 if (!this.db) { 5279 this.db = new CacheDatabase(Dexie); 5280 } 5281 return [2, this.db]; 5282 } 5283 }); 5284 }); 5285 }; 5286 DexieCache.prototype.generateCacheKey = function (key) { 5287 return key; 5288 }; 5289 DexieCache.prototype.isExpired = function (item) { 5290 if (item.expiresAt === null) { 5291 return false; 5292 } 5293 return Date.now() > item.expiresAt; 5294 }; 5295 DexieCache.prototype.getCache = function (options) { 5296 return __awaiter(this, void 0, Promise, function () { 5297 var key, _a, deleteExpiredCache, _b, getExpiredCache, db, cacheKey, item, error_1; 5298 return __generator(this, function (_c) { 5299 switch (_c.label) { 5300 case 0: 5301 key = options.key, _a = options.deleteExpiredCache, deleteExpiredCache = _a === void 0 ? true : _a, _b = options.getExpiredCache, getExpiredCache = _b === void 0 ? false : _b; 5302 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5303 return [2, null]; 5304 } 5305 _c.label = 1; 5306 case 1: 5307 _c.trys.push([1, 7,, 8]); 5308 return [4, this.initDB()]; 5309 case 2: 5310 db = _c.sent(); 5311 cacheKey = this.generateCacheKey(key); 5312 return [4, db.cache.get(cacheKey)]; 5313 case 3: 5314 item = _c.sent(); 5315 if (!item) { 5316 return [2, null]; 5317 } 5318 if (!this.isExpired(item)) return [3, 6]; 5319 if (!deleteExpiredCache) return [3, 5]; 5320 return [4, db.cache["delete"](cacheKey)]; 5321 case 4: 5322 _c.sent(); 5323 _c.label = 5; 5324 case 5: 5325 if (getExpiredCache) { 5326 return [2, item]; 5327 } 5328 return [2, null]; 5329 case 6: 5330 return [2, item]; 5331 case 7: 5332 error_1 = _c.sent(); 5333 console.warn('è·å Dexie ç¼å失败:', error_1); 5334 return [2, null]; 5335 case 8: 5336 return [2]; 5337 } 5338 }); 5339 }); 5340 }; 5341 DexieCache.prototype.setCache = function (options) { 5342 return __awaiter(this, void 0, Promise, function () { 5343 var key, data, expireTime, db, cacheKey, now, expiresAt, item, error_2; 5344 return __generator(this, function (_a) { 5345 switch (_a.label) { 5346 case 0: 5347 key = options.key, data = options.data, expireTime = options.expireTime; 5348 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5349 return [2]; 5350 } 5351 _a.label = 1; 5352 case 1: 5353 _a.trys.push([1, 4,, 5]); 5354 return [4, this.initDB()]; 5355 case 2: 5356 db = _a.sent(); 5357 cacheKey = this.generateCacheKey(key); 5358 now = Date.now(); 5359 expiresAt = expireTime === undefined || expireTime === null ? null : now + expireTime; 5360 item = { 5361 key: cacheKey, 5362 data: data, 5363 timestamp: now, 5364 expiresAt: expiresAt 5365 }; 5366 return [4, db.cache.put(item)]; 5367 case 3: 5368 _a.sent(); 5369 return [3, 5]; 5370 case 4: 5371 error_2 = _a.sent(); 5372 console.warn('设置 Dexie ç¼å失败:', error_2); 5373 return [3, 5]; 5374 case 5: 5375 return [2]; 5376 } 5377 }); 5378 }); 5379 }; 5380 DexieCache.prototype.deleteCache = function (options) { 5381 return __awaiter(this, void 0, Promise, function () { 5382 var key, db, cacheKey, error_3; 5383 return __generator(this, function (_a) { 5384 switch (_a.label) { 5385 case 0: 5386 key = options.key; 5387 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5388 return [2]; 5389 } 5390 _a.label = 1; 5391 case 1: 5392 _a.trys.push([1, 4,, 5]); 5393 return [4, this.initDB()]; 5394 case 2: 5395 db = _a.sent(); 5396 cacheKey = this.generateCacheKey(key); 5397 return [4, db.cache["delete"](cacheKey)]; 5398 case 3: 5399 _a.sent(); 5400 return [3, 5]; 5401 case 4: 5402 error_3 = _a.sent(); 5403 console.warn('å é¤ Dexie ç¼å失败:', error_3); 5404 return [3, 5]; 5405 case 5: 5406 return [2]; 5407 } 5408 }); 5409 }); 5410 }; 5411 DexieCache.prototype.cleanExpiredCache = function () { 5412 return __awaiter(this, void 0, Promise, function () { 5413 var db, now_1, allItems, expiredItems, keys, error_4; 5414 return __generator(this, function (_a) { 5415 switch (_a.label) { 5416 case 0: 5417 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5418 return [2]; 5419 } 5420 _a.label = 1; 5421 case 1: 5422 _a.trys.push([1, 6,, 7]); 5423 return [4, this.initDB()]; 5424 case 2: 5425 db = _a.sent(); 5426 now_1 = Date.now(); 5427 return [4, db.cache.toArray()]; 5428 case 3: 5429 allItems = _a.sent(); 5430 expiredItems = allItems.filter(function (item) { 5431 return item.expiresAt !== null && item.expiresAt < now_1; 5432 }); 5433 if (!(expiredItems.length > 0)) return [3, 5]; 5434 keys = expiredItems.map(function (item) { 5435 return item.key; 5436 }); 5437 return [4, db.cache.bulkDelete(keys)]; 5438 case 4: 5439 _a.sent(); 5440 console.log("\u6E05\u7406\u4E86 ".concat(expiredItems.length, " \u4E2A\u8FC7\u671F\u7F13\u5B58\u9879")); 5441 _a.label = 5; 5442 case 5: 5443 return [3, 7]; 5444 case 6: 5445 error_4 = _a.sent(); 5446 console.warn('æ¸ çè¿æç¼å失败:', error_4); 5447 return [3, 7]; 5448 case 7: 5449 return [2]; 5450 } 5451 }); 5452 }); 5453 }; 5454 DexieCache.prototype.clearAllCache = function () { 5455 return __awaiter(this, void 0, Promise, function () { 5456 var db, error_5; 5457 return __generator(this, function (_a) { 5458 switch (_a.label) { 5459 case 0: 5460 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5461 return [2]; 5462 } 5463 _a.label = 1; 5464 case 1: 5465 _a.trys.push([1, 4,, 5]); 5466 return [4, this.initDB()]; 5467 case 2: 5468 db = _a.sent(); 5469 return [4, db.cache.clear()]; 5470 case 3: 5471 _a.sent(); 5472 console.log('æ¸ é¤ææ Dexie ç¼å'); 5473 return [3, 5]; 5474 case 4: 5475 error_5 = _a.sent(); 5476 console.warn('æ¸ é¤ææç¼å失败:', error_5); 5477 return [3, 5]; 5478 case 5: 5479 return [2]; 5480 } 5481 }); 5482 }); 5483 }; 5484 DexieCache.prototype.getCachedData = function (key, requestFn, options) { 5485 if (options === void 0) { 5486 options = {}; 5487 } 5488 return __awaiter(this, void 0, Promise, function () { 5489 var expireTime, _a, forceRefresh, cached, data, error_6, cached; 5490 return __generator(this, function (_b) { 5491 switch (_b.label) { 5492 case 0: 5493 expireTime = options.expireTime, _a = options.forceRefresh, forceRefresh = _a === void 0 ? false : _a; 5494 return [4, this.cleanExpiredCache()]; 5495 case 1: 5496 _b.sent(); 5497 if (!!forceRefresh) return [3, 3]; 5498 return [4, this.getCache({ 5499 key: key 5500 })]; 5501 case 2: 5502 cached = _b.sent(); 5503 if (cached) { 5504 console.log("\u4ECE Dexie \u7F13\u5B58\u83B7\u53D6\u6570\u636E: ".concat(key)); 5505 return [2, cached.data]; 5506 } 5507 _b.label = 3; 5508 case 3: 5509 console.log("\u53D1\u8D77\u65B0\u8BF7\u6C42: ".concat(key)); 5510 _b.label = 4; 5511 case 4: 5512 _b.trys.push([4, 7,, 9]); 5513 return [4, requestFn()]; 5514 case 5: 5515 data = _b.sent(); 5516 return [4, this.setCache({ 5517 key: key, 5518 data: data, 5519 expireTime: expireTime 5520 })]; 5521 case 6: 5522 _b.sent(); 5523 return [2, data]; 5524 case 7: 5525 error_6 = _b.sent(); 5526 return [4, this.getCache({ 5527 key: key 5528 })]; 5529 case 8: 5530 cached = _b.sent(); 5531 if (cached) { 5532 console.warn("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8FD4\u56DE\u8FC7\u671F\u7F13\u5B58\u6570\u636E: ".concat(key), error_6); 5533 return [2, cached.data]; 5534 } 5535 throw error_6; 5536 case 9: 5537 return [2]; 5538 } 5539 }); 5540 }); 5541 }; 5542 DexieCache.prototype.getCacheStats = function () { 5543 return __awaiter(this, void 0, Promise, function () { 5544 var db, allItems, now_2, expiredItems, error_7; 5545 return __generator(this, function (_a) { 5546 switch (_a.label) { 5547 case 0: 5548 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5549 return [2, { 5550 totalItems: 0, 5551 expiredItems: 0 5552 }]; 5553 } 5554 _a.label = 1; 5555 case 1: 5556 _a.trys.push([1, 4,, 5]); 5557 return [4, this.initDB()]; 5558 case 2: 5559 db = _a.sent(); 5560 return [4, db.cache.toArray()]; 5561 case 3: 5562 allItems = _a.sent(); 5563 now_2 = Date.now(); 5564 expiredItems = allItems.filter(function (item) { 5565 return item.expiresAt !== null && item.expiresAt < now_2; 5566 }).length; 5567 return [2, { 5568 totalItems: allItems.length, 5569 expiredItems: expiredItems 5570 }]; 5571 case 4: 5572 error_7 = _a.sent(); 5573 console.warn('è·åç¼åç»è®¡å¤±è´¥:', error_7); 5574 return [2, { 5575 totalItems: 0, 5576 expiredItems: 0 5577 }]; 5578 case 5: 5579 return [2]; 5580 } 5581 }); 5582 }); 5583 }; 5584 return DexieCache; 5585}(); 5586var dexieCache = new DexieCache(); 5587/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dexieCache); 5588 5589/***/ }), 5590 5591/***/ 37183: 5592/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5593 5594"use strict"; 5595/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5596/* harmony export */ A: () => (/* binding */ Button) 5597/* harmony export */ }); 5598/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53373); 5599/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__); 5600/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 5601/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 5602/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60133); 5603/* harmony import */ var _components_Menu_hooks_useIsVip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(95092); 5604var __assign = undefined && undefined.__assign || function () { 5605 __assign = Object.assign || function (t) { 5606 for (var s, i = 1, n = arguments.length; i < n; i++) { 5607 s = arguments[i]; 5608 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 5609 } 5610 return t; 5611 }; 5612 return __assign.apply(this, arguments); 5613}; 5614var __rest = undefined && undefined.__rest || function (s, e) { 5615 var t = {}; 5616 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 5617 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 5618 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 5619 } 5620 return t; 5621}; 5622 5623 5624 5625 5626function Button(props) { 5627 var _a; 5628 var _b = props.type, 5629 type = _b === void 0 ? 'primary' : _b, 5630 _c = props.size, 5631 size = _c === void 0 ? 'middle' : _c, 5632 full = props.full, 5633 title = props.title, 5634 className = props.className, 5635 disabled = props.disabled, 5636 children = props.children, 5637 _onClick = props.onClick, 5638 showVip = props.showVip, 5639 resetProps = __rest(props, ["type", "size", "full", "title", "className", "disabled", "children", "onClick", "showVip"]); 5640 var isVip = (0,_components_Menu_hooks_useIsVip__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(); 5641 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", __assign({}, resetProps, { 5642 onClick: function onClick(e) { 5643 if (disabled) return; 5644 _onClick === null || _onClick === void 0 ? void 0 : _onClick(e); 5645 }, 5646 className: classnames__WEBPACK_IMPORTED_MODULE_0___default()(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.btn, (_a = {}, _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.ghost)] = type == 'ghost', _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.primary)] = type == 'primary', _a[_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"]["default"] */ .A["default"]] = type == 'default', _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.full)] = !!full, _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.disabled)] = !!disabled, _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.small)] = size == 'small', _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.middle)] = size == 'middle', _a["".concat(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.large)] = size == 'large', _a[_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.vip] = showVip && isVip, _a), className) 5647 }), title, children); 5648} 5649 5650/***/ }), 5651 5652/***/ 37597: 5653/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5654 5655"use strict"; 5656/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5657/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 5658/* harmony export */ Z8: () => (/* binding */ PLATFORMAll), 5659/* harmony export */ i9: () => (/* binding */ PLATFORM) 5660/* harmony export */ }); 5661/* unused harmony exports showPlatformName, PLATFORMLIST */ 5662/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 5663/* harmony import */ var _common_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 5664/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12097); 5665var __assign = undefined && undefined.__assign || function () { 5666 __assign = Object.assign || function (t) { 5667 for (var s, i = 1, n = arguments.length; i < n; i++) { 5668 s = arguments[i]; 5669 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 5670 } 5671 return t; 5672 }; 5673 return __assign.apply(this, arguments); 5674}; 5675 5676 5677 5678var PlatformShow = function () { 5679 function PlatformShow() { 5680 this.platformShowKey = 'platformShow'; 5681 this.platformShowList = []; 5682 var userId = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.info('userId'); 5683 if (userId) { 5684 this.platformShowKey = "platformShow_".concat(userId); 5685 } 5686 if (_common_index__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 5687 this.get(); 5688 } 5689 } 5690 PlatformShow.prototype.get = function () { 5691 var _a; 5692 this.platformShowList = (_a = _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.platformShowKey, { 5693 parse: true 5694
5694 })) === null || _a === void 0 ? void 0 : _a.value; 5695 return _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.platformShowKey, { 5696 parse: true 5697 }); 5698 }; 5699 PlatformShow.prototype.del = function () { 5700 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.del(this.platformShowKey); 5701 }; 5702 PlatformShow.prototype.save = function (data) { 5703 var allKeys = Object.keys(localStorage); 5704 allKeys.forEach(function (key) { 5705 if (key.startsWith('platformShow_')) { 5706 localStorage.removeItem(key); 5707 } 5708 }); 5709 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set(this.platformShowKey, { 5710 value: data, 5711 expire: new Date().getTime() + 1000 * 60 * 10 5712 }); 5713 }; 5714 return PlatformShow; 5715}(); 5716var showPlatformName = function showPlatformName(platformName) { 5717 if (platformName === void 0) { 5718 platformName = ''; 5719 } 5720 var platformNameLowerCase = platformName.toLocaleLowerCase(); 5721 var platformEnum = { 5722 tiktok_us: 'TikTok Shop US (Local)', 5723 tiktok_us_cross: 'TikTok Shop US (Cross Border)', 5724 tiktok: 'TikTok Shop (Non-US)', 5725 ebay: 'eBay', 5726 wix: 'Wix', 5727 etsy: 'Etsy', 5728 shoplazza: 'Shoplazza', 5729 shopify: 'Shopify', 5730 woocommerce: 'Woocommerce', 5731 shipstation: 'Shipstation', 5732 amazon: 'Amazon', 5733 lazada: 'Lazada', 5734 shopee: 'Shopee', 5735 squarespace: 'Squarespace', 5736 orangeconnex: 'OrangeConnex', 5737 magento: 'Magento', 5738 bigcommerce: 'Bigcommerce', 5739 prestashop: 'Prestashop', 5740 nuvemshop: 'Nuvemshop', 5741 allvalue: 'AllValue', 5742 aliexpress: 'AliExpress', 5743 api: 'API', 5744 mercado: 'Mercado', 5745 temu: 'Temu Semi-Managed', 5746 temu_us_local: 'Temu Local', 5747 mabang: 'MabangERP', 5748 others: 'Others', 5749 miaoshou: 'MiaoshouERP', 5750 temu_certified_overseas: 'Temu Cooperative Warehouse', 5751 shein: 'Shein Semi-Managed', 5752 whop: 'Whop', 5753 wed2c: 'WED2C', 5754 chatgpt: 'ChatGPT', 5755 codex: 'CodeX', 5756 Claude: 'Claude' 5757 }; 5758 return platformEnum[platformNameLowerCase] || platformName; 5759}; 5760PlatformShow.prototype.showPlatformName = showPlatformName; 5761/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlatformShow); 5762var PLATFORM = { 5763 shopify: { 5764 key: 'shopify', 5765 name: 'Shopify', 5766 imageName: 'shopify', 5767 iconclass: 'shopify', 5768 appName: showPlatformName('shopify'), 5769 code: 'mycj_auth_shopify', 5770 route: '/my.html#/authorize/Shopify' 5771 }, 5772 temu: { 5773 key: 'temu', 5774 name: 'Temu', 5775 imageName: 'temu', 5776 iconclass: 'temu', 5777 appName: showPlatformName('temu'), 5778 code: 'mycj_auth_temu', 5779 route: '/mine/authorize/authorizeList/Temu' 5780 }, 5781 temu_us_local: { 5782 key: 'temu_us_local', 5783 name: 'Temu_US_Local', 5784 imageName: 'temu_us_local', 5785 iconclass: 'temu_us_local', 5786 appName: showPlatformName('temu_us_local'), 5787 code: 'mycj_auth_temu', 5788 route: '/mine/authorize/authorizeList/Temu_US_Local' 5789 }, 5790 temu_certified_overseas: { 5791 key: 'temu_certified_overseas', 5792 name: 'Temu_certified_overseas', 5793 imageName: 'temu_certified_overseas', 5794 iconclass: 'temu_certified_overseas', 5795 appName: showPlatformName('temu_certified_overseas'), 5796 code: 'mycj_auth_temu', 5797 route: '/mine/authorize/authorizeList/Temu_Certified_Overseas' 5798 }, 5799 shein: { 5800 key: 'shein', 5801 name: 'Shein', 5802 imageName: 'shein', 5803 iconclass: 'shein', 5804 appName: showPlatformName('shein'), 5805 code: 'mycj_auth_temu', 5806 route: '/mine/authorize/authorizeList/Shein' 5807 }, 5808 whop: { 5809 key: 'whop', 5810 name: 'Whop', 5811 imageName: 'whop', 5812 iconclass: 'whop', 5813 appName: showPlatformName('whop'), 5814 code: 'mycj_auth_whop', 5815 route: '/mine/authorize/authorizeList/whop' 5816 }, 5817 tiktok_us: { 5818 key: 'tiktok_us', 5819 name: 'TikTok_US', 5820 imageName: 'tiktok_us', 5821 iconclass: 'tiktok_us', 5822 appName: showPlatformName('tiktok_us'), 5823 code: 'mycj_auth_tiktok_us', 5824 route: '/mine/authorize/authorizeList/TikTok_US' 5825 }, 5826 tiktok_us_cross: { 5827 key: 'tiktok_us_cross', 5828 name: 'TikTok_US_Cross', 5829 imageName: 'tiktok_us_cross', 5830 iconclass: 'tiktok_us_cross', 5831 appName: showPlatformName('tiktok_us_cross'), 5832 code: 'mycj_auth_tiktok_us_cross', 5833 route: '/mine/authorize/authorizeList/TikTok_US_Cross' 5834 }, 5835 tiktok: { 5836 key: 'tiktok', 5837 name: 'TikTok', 5838 imageName: 'tiktok', 5839 iconclass: 'tiktok', 5840 appName: showPlatformName('tiktok'), 5841 code: 'mycj_auth_tiktok', 5842 route: '/my.html#/authorize/TikTok' 5843 }, 5844 woocommerce: { 5845 key: 'woocommerce', 5846 name: 'Woocommerce', 5847 imageName: 'woocommerce', 5848 iconclass: 'wix1', 5849 appName: showPlatformName('woocommerce'), 5850 code: 'mycj_auth_woocommerce', 5851 route: '/my.html#/authorize/Woocommerce' 5852 }, 5853 mercado: { 5854 key: 'mercado', 5855 name: 'Mercado', 5856 imageName: 'mercado', 5857 iconclass: 'mercado', 5858 appName: showPlatformName('mercado'), 5859 code: 'mycj_auth_mercado', 5860 route: '/mine/authorize/authorizeList/Mercado' 5861 }, 5862 shoplazza: { 5863 key: 'shoplazza', 5864 name: 'ShopLazza', 5865 imageName: 'shoplazza', 5866 iconclass: 'shoplazza', 5867 appName: showPlatformName('shoplazza'), 5868 code: 'mycj_auth_shoplazza', 5869 route: '/my.html#/authorize/Shoplazza' 5870 }, 5871 ebay: { 5872 key: 'ebay', 5873 name: 'eBay', 5874 imageName: 'ebay', 5875 iconclass: 'eBay', 5876 appName: showPlatformName('ebay'), 5877 code: 'mycj_auth_ebay', 5878 route: '/my.html#/authorize/Ebay' 5879 }, 5880 aliexpress: { 5881 key: 'aliexpress', 5882 name: 'AliExpress', 5883 imageName: 'aliexpress', 5884 iconclass: 'aliexpress', 5885 appName: showPlatformName('aliexpress'), 5886 code: 'mycj_auth_aliExpress', 5887 route: '/my.html#/authorize/AliExpress' 5888 }, 5889 lazada: { 5890 key: 'lazada', 5891 name: 'Lazada', 5892 imageName: 'lazada', 5893 iconclass: 'lazada', 5894 appName: showPlatformName('lazada'), 5895 code: 'mycj_auth_lazada', 5896 route: '/my.html#/authorize/Lazada' 5897 }, 5898 shopee: { 5899 key: 'shopee', 5900 name: 'Shopee', 5901 imageName: 'shopee', 5902 iconclass: 'shopee', 5903 appName: showPlatformName('shopee'), 5904 code: 'mycj_auth_shopee', 5905 route: '/my.html#/authorize/Shopee' 5906 }, 5907 nuvemshop: { 5908 key: 'nuvemshop', 5909 name: 'Nuvemshop', 5910 imageName: 'nuvemshop', 5911 iconclass: 'nuvemshop', 5912 appName: showPlatformName('nuvemshop'), 5913 code: 'mycj_auth_nuvemshop', 5914 route: '/my.html#/authorize/Nuvemshop' 5915 }, 5916 etsy: { 5917 key: 'etsy', 5918 name: 'Etsy', 5919 imageName: 'etsy', 5920 iconclass: 'etsy', 5921 appName: showPlatformName('etsy'), 5922 code: 'mycj_auth_etsy', 5923 route: '/mine/authorize/authorizeList/Etsy' 5924 }, 5925 allvalue: { 5926 key: 'allvalue', 5927 name: 'AllValue', 5928 imageName: 'allvalue', 5929 iconclass: 'allvalue', 5930 appName: showPlatformName('allvalue'), 5931 code: 'mycj_auth_allvalue', 5932 route: '/my.html#/authorize/AllValue' 5933 }, 5934 wed2c: { 5935 key: 'wed2c', 5936 name: 'WED2C', 5937 imageName: 'wed2c', 5938 iconclass: 'wed2c', 5939 appName: showPlatformName('wed2c'), 5940 code: 'mycj_auth_wed2c', 5941 route: '/mine/wed2cAuth' 5942 }, 5943 api: { 5944 key: 'api', 5945 name: 'API', 5946 imageName: 'api', 5947 iconclass: 'API', 5948 appName: showPlatformName('api'), 5949 code: 'mycj_auth_api', 5950 route: '/my.html#/authorize/APIStores' 5951 }, 5952 wix: { 5953 key: 'wix', 5954 name: 'Wix', 5955 imageName: 'wix', 5956 iconclass: 'wix', 5957 appName: showPlatformName('wix'), 5958 code: 'mycj_auth_wix', 5959 route: '/my.html#/authorize/Wix' 5960 }, 5961 squarespace: { 5962 key: 'squarespace', 5963 name: 'Squarespace', 5964 imageName: 'squarespace', 5965 iconclass: 'squarespace', 5966 appName: showPlatformName('squarespace'), 5967 code: 'mycj_auth_squarespace', 5968 route: '/my.html#/authorize/Squarespace' 5969 }, 5970 magento: { 5971 key: 'magento', 5972 name: 'Magento', 5973 imageName: 'magento', 5974 iconclass: 'magento', 5975 appName: showPlatformName('magento'), 5976 code: 'mycj_auth_magento', 5977 route: '/my.html#/authorize/Magento' 5978 }, 5979 bigcommerce: { 5980 key: 'bigcommerce', 5981 name: 'BigCommerce', 5982 imageName: 'bigcommerce', 5983 iconclass: 'bigcommerce', 5984 appName: showPlatformName('bigcommerce'), 5985 code: 'mycj_auth_bigcommerce', 5986 route: '/my.html#/authorize/Bigcommerce' 5987 }, 5988 prestashop: { 5989 key: 'prestashop', 5990 name: 'PrestaShop', 5991 imageName: 'prestashop', 5992 iconclass: 'prestashop', 5993 appName: showPlatformName('prestashop'), 5994 code: 'mycj_auth_prestashop', 5995 route: '/my.html#/authorize/Prestashop' 5996 }, 5997 shipstation: { 5998 key: 'shipstation', 5999 name: 'ShipStation', 6000 imageName: 'shipstation', 6001 iconclass: 'shipstation', 6002 appName: showPlatformName('shipstation'), 6003 code: 'mycj_auth_shipstation', 6004 route: '/my.html#/authorize/Shipstation' 6005 }, 6006 orangeconnex: { 6007 key: 'orangeconnex', 6008 name: 'OrangeConnex', 6009 imageName: 'orangeconnex', 6010 iconclass: 'orangeconnex', 6011 appName: showPlatformName('orangeconnex'), 6012 code: 'mycj_auth_orangeconnex', 6013 route: '/my.html#/authorize/OrangeConnex' 6014 }, 6015 mabang: { 6016 key: 'mabang', 6017 name: 'Mabang', 6018 imageName: 'mabang', 6019 iconclass: 'mabang', 6020 appName: showPlatformName('mabang'), 6021 code: 'mycj_auth_mabang', 6022 route: '/mine/authorize/authorizeList/Mabang' 6023 }, 6024 miaoshou: { 6025 key: 'miaoshou', 6026 name: 'Miaoshou', 6027 imageName: 'miaoshou', 6028 iconclass: 'miaoshou', 6029 appName: showPlatformName('miaoshou'), 6030 code: 'mycj_auth_miaoshou', 6031 route: '/mine/authorize/authorizeList/Miaoshou' 6032 }, 6033 chatgpt: { 6034 key: 'chatgpt', 6035 name: 'ChatGPT', 6036 imageName: 'chatgpt', 6037 iconclass: 'chatgpt', 6038 appName: showPlatformName('chatgpt'), 6039 code: 'ChatGPT', 6040 route: '/ai/chatgpt' 6041 }, 6042 codex: { 6043 key: 'codex', 6044 name: 'CodeX', 6045 imageName: 'codex', 6046 iconclass: 'codex', 6047 appName: showPlatformName('codex'), 6048 code: 'CodeX', 6049 route: '/ai/codex' 6050 }, 6051 claude: { 6052 key: 'claude', 6053 name: 'Claude', 6054 imageName: 'claude', 6055 iconclass: 'claude', 6056 appName: showPlatformName('claude'), 6057 code: 'Claude', 6058 route: '/ai/claude' 6059 } 6060}; 6061var PLATFORMAll = __assign(__assign({}, PLATFORM), { 6062 others: { 6063 key: 'others', 6064 name: 'Others', 6065 imageName: 'others', 6066 iconclass: 'others', 6067 appName: showPlatformName('others'), 6068 code: 'mycj_auth_others', 6069 route: '/mine/authorize/authorizeList/Others' 6070 } 6071}); 6072var PLATFORMLIST = Object.values(PLATFORM); 6073 6074/***/ }), 6075 6076/***/ 38818: 6077/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6078 6079"use strict"; 6080/* unused harmony export genCSSMotionList */ 6081/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 6082/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39850); 6083/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69740); 6084/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55152); 6085/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30414); 6086/* harmony import */ var _babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2474); 6087/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29296); 6088/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90857); 6089/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24586); 6090/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15442); 6091/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__); 6092/* harmony import */ var _CSSMotion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(89614); 6093/* harmony import */ var _util_diff__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(40657); 6094/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(73688); 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104var _excluded = ["component", "children", "onVisibleChanged", "onAllRemoved"], 6105 _excluded2 = ["status"]; 6106/* eslint react/prop-types: 0 */ 6107 6108 6109 6110 6111var MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearPrepare', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd']; 6112/** 6113 * Generate a CSSMotionList component with config 6114 * @param transitionSupport No need since CSSMotionList no longer depends on transition support 6115 * @param CSSMotion CSSMotion component 6116 */ 6117function genCSSMotionList(transitionSupport) { 6118 var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _CSSMotion__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A; 6119 var CSSMotionList = /*#__PURE__*/function (_React$Component) { 6120 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A)(CSSMotionList, _React$Component); 6121 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(CSSMotionList); 6122 function CSSMotionList() { 6123 var _this; 6124 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(this, CSSMotionList); 6125 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6126 args[_key] = arguments[_key]; 6127 } 6128 _this = _super.call.apply(_super, [this].concat(args)); 6129 (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_this), "state", { 6130 keyEntities: [] 6131 }); 6132 // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info. 6133 (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_this), "removeKey", function (removeKey) { 6134 _this.setState(function (prevState) { 6135 var nextKeyEntities = prevState.keyEntities.map(function (entity) { 6136 if (entity.key !== removeKey) return entity; 6137 return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)({}, entity), {}, { 6138 status: _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8 6139 }); 6140 }); 6141 return { 6142 keyEntities: nextKeyEntities 6143 }; 6144 }, function () { 6145 var keyEntities = _this.state.keyEntities; 6146 var restKeysCount = keyEntities.filter(function (_ref) { 6147 var status = _ref.status; 6148 return status !== _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8; 6149 }).length;
6150 if (restKeysCount === 0 && _this.props.onAllRemoved) { 6151 _this.props.onAllRemoved(); 6152 } 6153 }); 6154 }); 6155 return _this; 6156 } 6157 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(CSSMotionList, [{ 6158 key: "render", 6159 value: function render() { 6160 var _this2 = this; 6161 var keyEntities = this.state.keyEntities; 6162 var _this$props = this.props, 6163 component = _this$props.component, 6164 children = _this$props.children, 6165 _onVisibleChanged = _this$props.onVisibleChanged, 6166 onAllRemoved = _this$props.onAllRemoved, 6167 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_this$props, _excluded); 6168 var Component = component || react__WEBPACK_IMPORTED_MODULE_9__.Fragment; 6169 var motionProps = {}; 6170 MOTION_PROP_NAMES.forEach(function (prop) { 6171 motionProps[prop] = restProps[prop]; 6172 delete restProps[prop]; 6173 }); 6174 delete restProps.keys; 6175 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(Component, restProps, keyEntities.map(function (_ref2, index) { 6176 var status = _ref2.status, 6177 eventProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_ref2, _excluded2); 6178 var visible = status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_ADD */ .bK || status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_KEEP */ .xI; 6179 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(CSSMotion, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, motionProps, { 6180 key: eventProps.key, 6181 visible: visible, 6182 eventProps: eventProps, 6183 onVisibleChanged: function onVisibleChanged(changedVisible) { 6184 _onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, { 6185 key: eventProps.key 6186 }); 6187 if (!changedVisible) { 6188 _this2.removeKey(eventProps.key); 6189 } 6190 } 6191 }), function (props, ref) { 6192 return children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)({}, props), {}, { 6193 index: index 6194 }), ref); 6195 }); 6196 })); 6197 } 6198 }], [{ 6199 key: "getDerivedStateFromProps", 6200 value: function getDerivedStateFromProps(_ref3, _ref4) { 6201 var keys = _ref3.keys; 6202 var keyEntities = _ref4.keyEntities; 6203 var parsedKeyObjects = (0,_util_diff__WEBPACK_IMPORTED_MODULE_11__/* .parseKeys */ .Ss)(keys); 6204 var mixedKeyEntities = (0,_util_diff__WEBPACK_IMPORTED_MODULE_11__/* .diffKeys */ .y$)(keyEntities, parsedKeyObjects); 6205 return { 6206 keyEntities: mixedKeyEntities.filter(function (entity) { 6207 var prevEntity = keyEntities.find(function (_ref5) { 6208 var key = _ref5.key; 6209 return entity.key === key; 6210 }); 6211 6212 // Remove if already mark as removed 6213 if (prevEntity && prevEntity.status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8 && entity.status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVE */ .au) { 6214 return false; 6215 } 6216 return true; 6217 }) 6218 }; 6219 } 6220 }]); 6221 return CSSMotionList; 6222 }(react__WEBPACK_IMPORTED_MODULE_9__.Component); 6223 (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(CSSMotionList, "defaultProps", { 6224 component: 'div' 6225 }); 6226 return CSSMotionList; 6227} 6228/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (genCSSMotionList(_util_motion__WEBPACK_IMPORTED_MODULE_12__/* .supportTransition */ .J1)); 6229 6230/***/ }), 6231 6232/***/ 38903: 6233/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6234 6235"use strict"; 6236/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6237/* harmony export */ e: () => (/* binding */ CJHEADER_VARIABLE_NAME) 6238/* harmony export */ }); 6239/* harmony import */ var _common_get_initial_handler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20194); 6240/* harmony import */ var _get_top_nav_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72777); 6241/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62934); 6242var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 6243 function adopt(value) { 6244 return value instanceof P ? value : new P(function (resolve) { 6245 resolve(value); 6246 }); 6247 } 6248 return new (P || (P = Promise))(function (resolve, reject) { 6249 function fulfilled(value) {
6250 try { 6251 step(generator.next(value)); 6252 } catch (e) { 6253 reject(e); 6254 } 6255 } 6256 function rejected(value) { 6257 try { 6258 step(generator["throw"](value)); 6259 } catch (e) { 6260 reject(e); 6261 } 6262 } 6263 function step(result) { 6264 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 6265 } 6266 step((generator = generator.apply(thisArg, _arguments || [])).next()); 6267 }); 6268}; 6269var __generator = undefined && undefined.__generator || function (thisArg, body) { 6270 var _ = { 6271 label: 0, 6272 sent: function sent() { 6273 if (t[0] & 1) throw t[1]; 6274 return t[1]; 6275 }, 6276 trys: [], 6277 ops: [] 6278 }, 6279 f, 6280 y, 6281 t, 6282 g; 6283 return g = { 6284 next: verb(0), 6285 "throw": verb(1), 6286 "return": verb(2) 6287 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 6288 return this; 6289 }), g; 6290 function verb(n) { 6291 return function (v) { 6292 return step([n, v]); 6293 }; 6294 } 6295 function step(op) { 6296 if (f) throw new TypeError("Generator is already executing."); 6297 while (g && (g = 0, op[0] && (_ = 0)), _) try { 6298 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 6299 if (y = 0, t) op = [op[0] & 2, t.value]; 6300 switch (op[0]) { 6301 case 0: 6302 case 1: 6303 t = op; 6304 break; 6305 case 4: 6306 _.label++; 6307 return { 6308 value: op[1], 6309 done: false 6310 }; 6311 case 5: 6312 _.label++; 6313 y = op[1]; 6314 op = [0]; 6315 continue; 6316 case 7: 6317 op = _.ops.pop(); 6318 _.trys.pop(); 6319 continue; 6320 default: 6321 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 6322 _ = 0; 6323 continue; 6324 } 6325 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 6326 _.label = op[1]; 6327 break; 6328 } 6329 if (op[0] === 6 && _.label < t[1]) { 6330 _.label = t[1]; 6331 t = op; 6332 break; 6333 } 6334 if (t && _.label < t[2]) { 6335 _.label = t[2]; 6336 _.ops.push(op); 6337 break; 6338 } 6339 if (t[2]) _.ops.pop(); 6340 _.trys.pop(); 6341 continue; 6342 } 6343 op = body.call(thisArg, _); 6344 } catch (e) { 6345 op = [6, e]; 6346 y = 0; 6347 } finally { 6348 f = t = 0; 6349 } 6350 if (op[0] & 5) throw op[1]; 6351 return { 6352 value: op[0] ? op[1] : void 0, 6353 done: true 6354 }; 6355 } 6356}; 6357 6358 6359 6360var CJHEADER_VARIABLE_NAME = 'cjHeaderProps'; 6361/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (function (CjHeader) { 6362 CjHeader.getInitialProps = function (_a) { 6363 var ctx = _a.ctx,
6364 getDomainByUrl = _a.getDomainByUrl, 6365 _b = _a.platform, 6366 platform = _b === void 0 ? 'cj' : _b, 6367 _c = _a.autoMode, 6368 autoMode = _c === void 0 ? false : _c, 6369 _d = _a.maxWidth, 6370 maxWidth = _d === void 0 ? '100%' : _d, 6371 _e = _a.supplierInfo, 6372 supplierInfo = _e === void 0 ? {} : _e; 6373 return __awaiter(void 0, void 0, void 0, function () { 6374 var _f, i18n, loginInfo, otherCookies, host, $axios, cjDomain, lng, siteCheck, path, _MatchReqHost, isM, _g, warehouses, categories, querySearch, showPlatformData, topNavProps, searchNavProps, showPlatformObject, platformKeys, siteCheckInstance, ssr, _props; 6375 var _h; 6376 return __generator(this, function (_j) { 6377 switch (_j.label) { 6378 case 0: 6379 _f = getInitialHandler({ 6380 ctx: ctx, 6381 getDomainByUrl: getDomainByUrl, 6382 platform: platform 6383 }), i18n = _f.i18n, loginInfo = _f.loginInfo, otherCookies = _f.otherCookies, host = _f.host, $axios = _f.$axios, cjDomain = _f.cjDomain, lng = _f.lng, siteCheck = _f.siteCheck, path = _f.path, _MatchReqHost = _f._MatchReqHost, isM = _f.isM; 6384 return [4, Promise.all([getWarehouses({ 6385 ctx: ctx, 6386 $axios: $axios, 6387 lng: lng 6388 }), getCategories({ 6389 ctx: ctx, 6390 $axios: $axios 6391 }), getQueryParams({ 6392 ctx: ctx 6393 }), getShowAuthorPlatform({ 6394 ctx: ctx, 6395 $axios: $axios, 6396 token: loginInfo.token 6397 })])]; 6398 case 1: 6399 _g = _j.sent(), warehouses = _g[0], categories = _g[1], querySearch = _g[2], showPlatformData = _g[3]; 6400 topNavProps = { 6401 warehouses: siteCheck.isShow('header-warehouses') ? warehouses : [] 6402 }; 6403 searchNavProps = { 6404 categories: categories 6405 }; 6406 showPlatformObject = showPlatformData === null || showPlatformData === void 0 ? void 0 : showPlatformData.showAuthorizeObject; 6407 platformKeys = showPlatformData === null || showPlatformData === void 0 ? void 0 : showPlatformData.platformKeys; 6408 siteCheckInstance = (_h = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.get) === null || _h === void 0 ? void 0 : _h.call(siteCheck); 6409 ssr = !!ctx; 6410 _props = { 6411 otherCookies: otherCookies, 6412 querySearch: querySearch, 6413 loginInfo: loginInfo, 6414 topNavProps: topNavProps, 6415 searchNavProps: searchNavProps, 6416 cjDomain: cjDomain, 6417 host: host, 6418 path: path, 6419 i18n: i18n, 6420 showPlatformObject: showPlatformObject, 6421 platformKeys: platformKeys, 6422 platform: platform, 6423 siteCheck: siteCheckInstance, 6424 ssr: ssr, 6425 autoMode: autoMode, 6426 maxWidth: maxWidth, 6427 supplierInfo: supplierInfo, 6428 _MatchReqHost: _MatchReqHost, 6429 isM: isM 6430 }; 6431 return [2, _props]; 6432 } 6433 }); 6434 }); 6435 }; 6436 CjHeader.variableName = CJHEADER_VARIABLE_NAME; 6437}); 6438 6439/***/ }), 6440 6441/***/ 39348: 6442/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6443 6444"use strict"; 6445/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6446/* harmony export */ A: () => (/* binding */ useSafeState) 6447/* harmony export */ }); 6448/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 6449/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 6450/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 6451 6452 6453/** 6454 * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed. 6455 * We do not make this auto is to avoid real memory leak. 6456 * Developer should confirm it's safe to ignore themselves. 6457 */ 6458function useSafeState(defaultValue) { 6459 var destroyRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false); 6460 var _React$useState = react__WEBPACK_IMPORTED_MODULE_1__.useState(defaultValue), 6461 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 6462 value = _React$useState2[0], 6463 setValue = _React$useState2[1]; 6464 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 6465 destroyRef.current = false;
6466 return function () { 6467 destroyRef.current = true; 6468 }; 6469 }, []); 6470 function safeSetState(updater, ignoreDestroy) { 6471 if (ignoreDestroy && destroyRef.current) { 6472 return; 6473 } 6474 setValue(updater); 6475 } 6476 return [value, safeSetState]; 6477} 6478 6479/***/ }), 6480 6481/***/ 39850: 6482/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6483 6484"use strict"; 6485/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6486/* harmony export */ A: () => (/* binding */ _objectWithoutProperties) 6487/* harmony export */ }); 6488/* harmony import */ var _objectWithoutPropertiesLoose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17502); 6489 6490function _objectWithoutProperties(e, t) { 6491 if (null == e) return {}; 6492 var o, 6493 r, 6494 i = (0,_objectWithoutPropertiesLoose_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e, t); 6495 if (Object.getOwnPropertySymbols) { 6496 var n = Object.getOwnPropertySymbols(e); 6497 for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); 6498 } 6499 return i; 6500} 6501 6502 6503/***/ }), 6504 6505/***/ 40484: 6506/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6507 6508"use strict"; 6509/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6510/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 6511/* harmony export */ }); 6512/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55152); 6513/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30414); 6514/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29296); 6515/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90857); 6516/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 6517/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 6518 6519 6520 6521 6522 6523var DomWrapper = /*#__PURE__*/function (_React$Component) { 6524 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(DomWrapper, _React$Component); 6525 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(DomWrapper); 6526 function DomWrapper() { 6527 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this, DomWrapper); 6528 return _super.apply(this, arguments); 6529 } 6530 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(DomWrapper, [{ 6531 key: "render", 6532 value: function render() { 6533 return this.props.children; 6534 } 6535 }]); 6536 return DomWrapper; 6537}(react__WEBPACK_IMPORTED_MODULE_4__.Component); 6538/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DomWrapper); 6539 6540/***/ }), 6541 6542/***/ 40657: 6543/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6544 6545"use strict"; 6546/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6547/* harmony export */ Ss: () => (/* binding */ parseKeys), 6548/* harmony export */ au: () => (/* binding */ STATUS_REMOVE), 6549/* harmony export */ bK: () => (/* binding */ STATUS_ADD), 6550/* harmony export */ e8: () => (/* binding */ STATUS_REMOVED), 6551/* harmony export */ xI: () => (/* binding */ STATUS_KEEP), 6552/* harmony export */ y$: () => (/* binding */ diffKeys) 6553/* harmony export */ }); 6554/* unused harmony export wrapKeyToObject */ 6555/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 6556/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17545); 6557 6558 6559var STATUS_ADD = 'add'; 6560var STATUS_KEEP = 'keep'; 6561var STATUS_REMOVE = 'remove'; 6562var STATUS_REMOVED = 'removed'; 6563function wrapKeyToObject(key) { 6564 var keyObj; 6565 if (key && (0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(key) === 'object' && 'key' in key) { 6566 keyObj = key; 6567 } else { 6568 keyObj = { 6569 key: key 6570 }; 6571 } 6572 return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, keyObj), {}, { 6573 key: String(keyObj.key) 6574 }); 6575} 6576function parseKeys() { 6577 var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6578 return keys.map(wrapKeyToObject); 6579} 6580function diffKeys() { 6581 var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6582 var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; 6583 var list = []; 6584 var currentIndex = 0; 6585 var currentLen = currentKeys.length; 6586 var prevKeyObjects = parseKeys(prevKeys); 6587 var currentKeyObjects = parseKeys(currentKeys); 6588 6589 // Check prev keys to insert or keep
6590 prevKeyObjects.forEach(function (keyObj) { 6591 var hit = false; 6592 for (var i = currentIndex; i < currentLen; i += 1) { 6593 var currentKeyObj = currentKeyObjects[i]; 6594 if (currentKeyObj.key === keyObj.key) { 6595 // New added keys should add before current key 6596 if (currentIndex < i) { 6597 list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) { 6598 return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, obj), {}, { 6599 status: STATUS_ADD 6600 }); 6601 })); 6602 currentIndex = i; 6603 } 6604 list.push((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, currentKeyObj), {}, { 6605 status: STATUS_KEEP 6606 })); 6607 currentIndex += 1; 6608 hit = true; 6609 break; 6610 } 6611 } 6612 6613 // If not hit, it means key is removed 6614 if (!hit) { 6615 list.push((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, keyObj), {}, { 6616 status: STATUS_REMOVE 6617 })); 6618 } 6619 }); 6620 6621 // Add rest to the list 6622 if (currentIndex < currentLen) { 6623 list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) { 6624 return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, obj), {}, { 6625 status: STATUS_ADD 6626 }); 6627 })); 6628 } 6629 6630 /** 6631 * Merge same key when it remove and add again: 6632 * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep] 6633 */ 6634 var keys = {}; 6635 list.forEach(function (_ref) { 6636 var key = _ref.key; 6637 keys[key] = (keys[key] || 0) + 1; 6638 }); 6639 var duplicatedKeys = Object.keys(keys).filter(function (key) { 6640 return keys[key] > 1; 6641 }); 6642 duplicatedKeys.forEach(function (matchKey) { 6643 // Remove `STATUS_REMOVE` node. 6644 list = list.filter(function (_ref2) { 6645 var key = _ref2.key, 6646 status = _ref2.status; 6647 return key !== matchKey || status !== STATUS_REMOVE; 6648 }); 6649 6650 // Update `STATUS_ADD` to `STATUS_KEEP` 6651 list.forEach(function (node) { 6652 if (node.key === matchKey) { 6653 // eslint-disable-next-line no-param-reassign 6654 node.status = STATUS_KEEP; 6655 } 6656 }); 6657 }); 6658 return list; 6659} 6660 6661/***/ }), 6662 6663/***/ 41580: 6664/***/ ((module) => { 6665 6666/** 6667 * Checks if `value` is the 6668 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 6669 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 6670 * 6671 * @static 6672 * @memberOf _ 6673 * @since 0.1.0 6674 * @category Lang 6675 * @param {*} value The value to check. 6676 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 6677 * @example 6678 * 6679 * _.isObject({}); 6680 * // => true 6681 * 6682 * _.isObject([1, 2, 3]); 6683 * // => true 6684 * 6685 * _.isObject(_.noop); 6686 * // => true 6687 * 6688 * _.isObject(null); 6689 * // => false 6690 */ 6691function isObject(value) { 6692 var type = typeof value; 6693 return value != null && (type == 'object' || type == 'function'); 6694} 6695 6696module.exports = isObject; 6697 6698 6699/***/ }), 6700 6701/***/ 41747: 6702/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6703 6704"use strict"; 6705/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6706/* harmony export */ A: () => (/* binding */ toArray) 6707/* harmony export */ }); 6708/* harmony import */ var _React_isFragment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20785); 6709/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 6710/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 6711 6712 6713function toArray(children) { 6714 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 6715 var ret = [];
6716 react__WEBPACK_IMPORTED_MODULE_1___default().Children.forEach(children, function (child) { 6717 if ((child === undefined || child === null) && !option.keepEmpty) { 6718 return; 6719 } 6720 if (Array.isArray(child)) { 6721 ret = ret.concat(toArray(child)); 6722 } else if ((0,_React_isFragment__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(child) && child.props) { 6723 ret = ret.concat(toArray(child.props.children, option)); 6724 } else { 6725 ret.push(child); 6726 } 6727 }); 6728 return ret; 6729} 6730 6731/***/ }), 6732 6733/***/ 42963: 6734/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6735 6736"use strict"; 6737/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6738/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 6739/* harmony export */ }); 6740/* harmony import */ var _Portal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(70297); 6741 6742 6743 6744/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_Portal__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A); 6745 6746/***/ }), 6747 6748/***/ 44148: 6749/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6750 6751"use strict"; 6752/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6753/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 6754/* harmony export */ v: () => (/* binding */ useGlobalProps) 6755/* harmony export */ }); 6756/* harmony import */ var _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84266); 6757/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 6758/* harmony import */ var _common_cj_href__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84963); 6759/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15442); 6760/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); 6761/* harmony import */ var _get_top_nav_props__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72777); 6762/* harmony import */ var _common_check_site_show__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(27880); 6763/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12097); 6764/* harmony import */ var _get_intial_props__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38903); 6765var __assign = undefined && undefined.__assign || function () { 6766 __assign = Object.assign || function (t) { 6767 for (var s, i = 1, n = arguments.length; i < n; i++) { 6768 s = arguments[i]; 6769 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 6770 } 6771 return t; 6772 }; 6773 return __assign.apply(this, arguments); 6774}; 6775var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 6776 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 6777 if (ar || !(i in from)) { 6778 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 6779 ar[i] = from[i]; 6780 } 6781 } 6782 return to.concat(ar || Array.prototype.slice.call(from)); 6783}; 6784 6785 6786 6787 6788 6789 6790 6791 6792var PropsContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_3__.createContext)({}); 6793function isObjectNull(obj) { 6794 return obj === null || obj === undefined || Object.keys(obj).length === 0; 6795} 6796var useGlobalProps = function useGlobalProps() { 6797 var _a; 6798 var value = (0,react__WEBPACK_IMPORTED_MODULE_3__.useContext)(PropsContext); 6799 if (_common__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 6800 var showPlatformObject = value.showPlatformObject || {}; 6801 var platformKeys = value.platformKeys || []; 6802 if (isObjectNull(value.otherCookies)) { 6803 value['otherCookies'] = (0,_get_top_nav_props__WEBPACK_IMPORTED_MODULE_4__/* .getOtherCookies */ .cc)({ 6804 ctx: undefined 6805 }); 6806 } 6807 if (isObjectNull(value.querySearch)) { 6808 value['querySearch'] = (0,_common__WEBPACK_IMPORTED_MODULE_1__/* .getQueryVariable */ .JE)(); 6809 } 6810 if (isObjectNull(value.loginInfo)) { 6811 value['loginInfo'] = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.info(); 6812 } 6813 value['host'] = location.host; 6814 value['pathname'] = value['path'] = location.pathname; 6815 value['cjDomain'] = value.platform === 'cj' ? '/' : (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_2__/* .cjHref */ .F)('/', value.host); 6816 value['i18n'] = window.i18next; 6817 value['showPlatformObject'] = __assign(__assign({}, _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A), showPlatformObject); 6818 value['platformKeys'] = __spreadArray([], platformKeys, true); 6819 if (isObjectNull(value.siteCheck)) { 6820 var siteCheck = new _common_check_site_show__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A({ 6821 getDomainByUrl: value.getDomainByUrl 6822 }); 6823 value['siteCheck'] = window['siteCheck'] = siteCheck.get(); 6824 } 6825 value['ssr'] = !!window[_get_intial_props__WEBPACK_IMPORTED_MODULE_7__/* .CJHEADER_VARIABLE_NAME */ .e]; 6826 value['_MatchReqHost'] = window['_matchedRoute']; 6827 if (((_a = window['_matchedRoute']) === null || _a === void 0 ? void 0 : _a.indexOf('paymentAgency')) > -1 && value.platform === 'cj') { 6828 value['cjDomain'] = (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_2__/* .cjHref */ .F)('/'); 6829 } 6830 if (value.isM === undefined) { 6831 value['isM'] = (0,_common__WEBPACK_IMPORTED_MODULE_1__/* .isMobile */ .Fr)(); 6832 } 6833 } 6834 return value; 6835}; 6836/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PropsContext); 6837 6838/***/ }), 6839 6840/***/ 44190: 6841/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6842 6843"use strict"; 6844/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6845/* harmony export */ $v: () => (/* binding */ createChatInternalReceptionJson), 6846/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 6847/* harmony export */ P6: () => (/* binding */ createAiChatEntry), 6848/* harmony export */ Q_: () => (/* binding */ createPlatform), 6849/* harmony export */ R6: () => (/* binding */ createChatEntry), 6850/* harmony export */ vY: () => (/* binding */ createConfigResource) 6851/* harmony export */ }); 6852/* unused harmony exports createFlag, createWarehouseJson, createCountryJson, countryInfo */ 6853var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 6854 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 6855 if (ar || !(i in from)) { 6856 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 6857 ar[i] = from[i]; 6858 } 6859 } 6860 return to.concat(ar || Array.prototype.slice.call(from)); 6861}; 6862var OssController = function () { 6863 function OssController() {} 6864 Object.defineProperty(OssController.prototype, "host", { 6865 get: function get() { 6866 var _a; 6867 if (typeof window !== 'undefined' && window.OSS_HOST && window.OSS_HOST !== '__OSSHOST__') { 6868 return window.OSS_HOST; 6869 } 6870 if (typeof process !== 'undefined' && ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.OSSHOST)) { 6871 return process.env.OSSHOST; 6872 } 6873 return "https://sv-resource.oss-accelerate.aliyuncs.com"; 6874 }, 6875 enumerable: false, 6876 configurable: true 6877 }); 6878 OssController.prototype.join = function () { 6879 var paths = []; 6880 for (var _i = 0; _i < arguments.length; _i++) { 6881 paths[_i] = arguments[_i]; 6882 } 6883 if (!paths.every(function (path) { 6884 return typeof path === 'string'; 6885 })) { 6886 throw new TypeError('All arguments to join must be of type string'); 6887 } 6888 var _paths = paths.map(function (path) { 6889 return path.replace(/^\/+|\/+$/g, ''); 6890 }); 6891 var _host = this.host; 6892 if (_host.endsWith('/')) { 6893 _host = _host.slice(0, -1); 6894 } 6895 return __spreadArray([_host], _paths, true).join('/'); 6896 }; 6897 return OssController; 6898}(); 6899/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new OssController()); 6900var createPlatform = function createPlatform(name) { 6901 return "resources/platform/".concat(name, ".png"); 6902}; 6903var createFlag = function createFlag(name) { 6904 return "resources/flag/".concat(name, ".png"); 6905}; 6906var createConfigResource = function createConfigResource(name, code) { 6907 return "config-resource/".concat(name, "/").concat(code); 6908}; 6909var createWarehouseJson = function createWarehouseJson() {
6910 return "backend/WareHouse.json"; 6911}; 6912var createCountryJson = function createCountryJson() { 6913 return "backend/Country.json"; 6914}; 6915var createChatEntry = function createChatEntry() { 6916 return "chat/javascripts/cj-chat.js"; 6917}; 6918var createAiChatEntry = function createAiChatEntry() { 6919 return "chat/javascripts/ai-cj-chat.js"; 6920}; 6921var countryInfo = function countryInfo() { 6922 return "backend/countryInfo.json"; 6923}; 6924var createChatInternalReceptionJson = function createChatInternalReceptionJson() { 6925 return 'backend/ChatInternalReceptionUser.json'; 6926}; 6927 6928/***/ }), 6929 6930/***/ 45163: 6931/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6932 6933"use strict"; 6934/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6935/* harmony export */ V: () => (/* binding */ sixCountryLanguage) 6936/* harmony export */ }); 6937/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (function (i18next, siteCheck) { 6938 var defaultLng = siteCheck.data('default-lng') || 'en'; 6939 return [{ 6940 opt: "".concat(defaultLng, "|en"), 6941 name: i18next.t('language-english'), 6942 nameEn: 'English', 6943 flag: siteCheck.data('en-language-flag') || 'US' 6944 }, { 6945 opt: "".concat(defaultLng, "|af"), 6946 name: i18next.t('language-afrikaans'), 6947 nameEn: 'Afrikaans', 6948 flag: 'ZA' 6949 }, { 6950 opt: "".concat(defaultLng, "|sq"), 6951 name: i18next.t('language-albanian'), 6952 nameEn: 'Albanian', 6953 flag: 'AL' 6954 }, { 6955 opt: "".concat(defaultLng, "|ar"), 6956 name: i18next.t('language-arabic'), 6957 nameEn: 'Arabic', 6958 flag: 'SA' 6959 }, { 6960 opt: "".concat(defaultLng, "|am"), 6961 name: i18next.t('language-amharic'), 6962 nameEn: 'Amharic', 6963 flag: 'ET' 6964 }, { 6965 opt: "".concat(defaultLng, "|hy"), 6966 name: i18next.t('language-armenian'), 6967 nameEn: 'Armenian', 6968 flag: 'AM' 6969 }, { 6970 opt: "".concat(defaultLng, "|az"), 6971 name: i18next.t('language-azerbaijani'), 6972 nameEn: 'Azerbaijani', 6973 flag: 'AZ' 6974 }, { 6975 opt: "".concat(defaultLng, "|be"), 6976 name: i18next.t('language-belarusian'), 6977 nameEn: 'Belarusian', 6978 flag: 'BY' 6979 }, { 6980 opt: "".concat(defaultLng, "|bg"), 6981 name: i18next.t('language-bulgarian'), 6982 nameEn: 'Bulgarian', 6983 flag: 'BG' 6984 }, { 6985 opt: "".concat(defaultLng, "|zh-CN"), 6986 name: i18next.t('language-chinese-simplified'), 6987 nameEn: 'Chinese (Simplified)', 6988 flag: 'CN' 6989 }, { 6990 opt: "".concat(defaultLng, "|zh-TW"), 6991 name: i18next.t('language-chinese-traditional'), 6992 nameEn: 'Chinese (Traditional)', 6993 flag: 'CN' 6994 }, { 6995 opt: "".concat(defaultLng, "|hr"), 6996 name: i18next.t('language-croatian'), 6997 nameEn: 'Croatian', 6998 flag: 'HR' 6999 }, { 7000 opt: "".concat(defaultLng, "|cs"), 7001 name: i18next.t('language-czech'), 7002 nameEn: 'Czech', 7003 flag: 'CZ' 7004 }, { 7005 opt: "".concat(defaultLng, "|da"), 7006 name: i18next.t('language-danish'), 7007 nameEn: 'Danish', 7008 flag: 'DK' 7009 }, { 7010 opt: "".concat(defaultLng, "|nl"), 7011 name: i18next.t('language-dutch'), 7012 nameEn: 'Dutch', 7013 flag: 'NL' 7014 }, { 7015 opt: "".concat(defaultLng, "|et"), 7016 name: i18next.t('language-estonian'), 7017 nameEn: 'Estonian', 7018 flag: 'EE' 7019 }, { 7020 opt: "".concat(defaultLng, "|tl"), 7021 name: i18next.t('language-filipino'), 7022 nameEn: 'Filipino', 7023 flag: 'PH' 7024 }, { 7025 opt: "".concat(defaultLng, "|fi"), 7026 name: i18next.t('language-finnish'), 7027 nameEn: 'Finnish', 7028 flag: 'FI' 7029 }, { 7030 opt: "".concat(defaultLng, "|fr"), 7031 name: i18next.t('language-french'), 7032 nameEn: 'French', 7033 flag: 'FR' 7034 }, { 7035 opt: "".concat(defaultLng, "|ka"), 7036 name: i18next.t('language-georgian'), 7037 nameEn: 'Georgian', 7038 flag: 'GE' 7039 }, { 7040 opt: "".concat(defaultLng, "|de"), 7041 name: i18next.t('language-german'), 7042 nameEn: 'German', 7043 flag: 'DE' 7044 }, { 7045 opt: "".concat(defaultLng, "|el"), 7046 name: i18next.t('language-greek'), 7047 nameEn: 'Greek', 7048 flag: 'GR' 7049 }, { 7050 opt: "".concat(defaultLng, "|hi"), 7051 name: i18next.t('language-hindi'), 7052 nameEn: 'Hindi', 7053 flag: 'HT' 7054 }, { 7055 opt: "".concat(defaultLng, "|hu"), 7056 name: i18next.t('language-hungarian'), 7057 nameEn: 'Hungarian', 7058 flag: 'HU' 7059 }, { 7060 opt: "".concat(defaultLng, "|is"),
7061 name: i18next.t('language-icelandic'), 7062 nameEn: 'Icelandic', 7063 flag: 'IS' 7064 }, { 7065 opt: "".concat(defaultLng, "|id"), 7066 name: i18next.t('language-indonesian'), 7067 nameEn: 'Indonesian', 7068 flag: 'ID' 7069 }, { 7070 opt: "".concat(defaultLng, "|ga"), 7071 name: i18next.t('language-irish'), 7072 nameEn: 'Irish', 7073 flag: 'IE' 7074 }, { 7075 opt: "".concat(defaultLng, "|it"), 7076 name: i18next.t('language-italian'), 7077 nameEn: 'Italian', 7078 flag: 'IT' 7079 }, { 7080 opt: "".concat(defaultLng, "|ja"), 7081 name: i18next.t('language-japanese'), 7082 nameEn: 'Japanese', 7083 flag: 'JP' 7084 }, { 7085 opt: "".concat(defaultLng, "|ko"), 7086 name: i18next.t('language-korean'), 7087 nameEn: 'Korean', 7088 flag: 'KR' 7089 }, { 7090 opt: "".concat(defaultLng, "|kk"), 7091 name: i18next.t('language-kazakh', 'Kazakh'), 7092 nameEn: 'Kazakh', 7093 flag: 'KZ' 7094 }, { 7095 opt: "".concat(defaultLng, "|ky"), 7096 name: i18next.t('language-kirghiz-kyrgyz', 'Kirghiz, Kyrgyz'), 7097 nameEn: 'Kirghiz, Kyrgyz', 7098 flag: 'KG' 7099 }, { 7100 opt: "".concat(defaultLng, "|lv"), 7101 name: i18next.t('language-latvian'), 7102 nameEn: 'Latvian', 7103 flag: 'LV' 7104 }, { 7105 opt: "".concat(defaultLng, "|lt"), 7106 name: i18next.t('language-lithuanian'), 7107 nameEn: 'Lithuanian', 7108 flag: 'LT' 7109 }, { 7110 opt: "".concat(defaultLng, "|mk"), 7111 name: i18next.t('language-macedonian'), 7112 nameEn: 'Macedonian', 7113 flag: 'MK' 7114 }, { 7115 opt: "".concat(defaultLng, "|ms"), 7116 name: i18next.t('language-malay'), 7117 nameEn: 'Malay', 7118 flag: 'MY' 7119 }, { 7120 opt: "".concat(defaultLng, "|mt"), 7121 name: i18next.t('language-maltese'), 7122 nameEn: 'Maltese', 7123 flag: 'MT' 7124 }, { 7125 opt: "".concat(defaultLng, "|no"), 7126 name: i18next.t('language-norwegian'), 7127 nameEn: 'Norwegian', 7128 flag: 'NO' 7129 }, { 7130 opt: "".concat(defaultLng, "|pl"), 7131 name: i18next.t('language-polish'), 7132 nameEn: 'Polish', 7133 flag: 'PL' 7134 }, { 7135 opt: "".concat(defaultLng, "|pt"), 7136 name: i18next.t('language-portuguese'), 7137 nameEn: 'Portuguese', 7138 flag: 'PT' 7139 }, { 7140 opt: "".concat(defaultLng, "|ro"), 7141 name: i18next.t('language-romanian'), 7142 nameEn: 'Romanian', 7143 flag: 'RO' 7144 }, { 7145 opt: "".concat(defaultLng, "|ru"), 7146 name: i18next.t('language-russian'), 7147 nameEn: 'Russian', 7148 flag: 'RU' 7149 }, { 7150 opt: "".concat(defaultLng, "|sr"), 7151 name: i18next.t('language-serbian'), 7152 nameEn: 'Serbian', 7153 flag: 'RS' 7154 }, { 7155 opt: "".concat(defaultLng, "|sk"), 7156 name: i18next.t('language-slovak'), 7157 nameEn: 'Slovak', 7158 flag: 'SK' 7159 }, { 7160 opt: "".concat(defaultLng, "|sl"), 7161 name: i18next.t('language-slovenian'), 7162 nameEn: 'Slovenian', 7163 flag: 'SI' 7164 }, { 7165 opt: "".concat(defaultLng, "|es"), 7166 name: i18next.t('language-spanish'), 7167 nameEn: 'Spanish', 7168 flag: 'ES' 7169 }, { 7170 opt: "".concat(defaultLng, "|sw"), 7171 name: i18next.t('language-swahili'), 7172 nameEn: 'Swahili', 7173 flag: 'SJ' 7174 }, { 7175 opt: "".concat(defaultLng, "|sv"), 7176 name: i18next.t('language-swedish'), 7177 nameEn: 'Swedish', 7178 flag: 'SE' 7179 }, { 7180 opt: "".concat(defaultLng, "|th"), 7181 name: i18next.t('language-thai'), 7182 nameEn: 'Thai', 7183 flag: 'TH' 7184 }, { 7185 opt: "".concat(defaultLng, "|tr"), 7186 name: i18next.t('language-turkish'), 7187 nameEn: 'Turkish', 7188 flag: 'TR' 7189 }, { 7190 opt: "".concat(defaultLng, "|tg"), 7191 name: i18next.t('language-tajik', 'Tajik'), 7192 nameEn: 'Tajik', 7193 flag: 'TJ' 7194 }, { 7195 opt: "".concat(defaultLng, "|tk"), 7196 name: i18next.t('language-turkmen', 'Turkmen'), 7197 nameEn: 'Turkmen', 7198 flag: 'TM' 7199 }, { 7200 opt: "".concat(defaultLng, "|uk"), 7201 name: i18next.t('language-ukrainian'), 7202 nameEn: 'Ukrainian', 7203 flag: 'UA' 7204 }, { 7205 opt: "".concat(defaultLng, "|ur"), 7206 name: i18next.t('language-urdu'), 7207 nameEn: 'Urdu', 7208 flag: 'PK' 7209 }, { 7210 opt: "".concat(defaultLng, "|uz"), 7211 name: i18next.t('language-uzbek', 'Uzbek'), 7212 nameEn: 'Uzbek', 7213 flag: 'UZ' 7214 }, { 7215 opt: "".concat(defaultLng, "|vi"), 7216 name: i18next.t('language-vietnamese'), 7217 nameEn: 'Vietnamese', 7218 flag: 'VN' 7219 }, { 7220 opt: "".concat(defaultLng, "|cy"), 7221 name: i18next.t('language-welsh'), 7222 nameEn: 'Welsh', 7223 flag: 'WELSH' 7224 }, { 7225 opt: "".concat(defaultLng, "|yi"),
7226 name: i18next.t('language-yiddish'), 7227 nameEn: 'Yiddish', 7228 flag: 'YIDDISH' 7229 }, { 7230 opt: "".concat(defaultLng, "|iw"), 7231 name: i18next.t('language-hebrew'), 7232 nameEn: 'Hebrew', 7233 flag: 'YIDDISH' 7234 }, { 7235 opt: "".concat(defaultLng, "|ps"), 7236 name: i18next.t('language-pashto'), 7237 nameEn: 'Pashto', 7238 flag: 'AF' 7239 }, { 7240 opt: "".concat(defaultLng, "|fa-AF"), 7241 name: i18next.t('language-dari'), 7242 nameEn: 'Dari', 7243 flag: 'AF' 7244 }]; 7245}); 7246var sixCountryLanguage = ['zh', 'en', 'de', 'fr', 'id', 'th', 'pt']; 7247 7248/***/ }), 7249 7250/***/ 45480: 7251/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7252 7253"use strict"; 7254/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7255/* harmony export */ Hs: () => (/* binding */ STEP_ACTIVATED), 7256/* harmony export */ LV: () => (/* binding */ STEP_PREPARED), 7257/* harmony export */ Mv: () => (/* binding */ STEP_START), 7258/* harmony export */ SF: () => (/* binding */ STATUS_NONE), 7259/* harmony export */ Tv: () => (/* binding */ STATUS_APPEAR), 7260/* harmony export */ Wd: () => (/* binding */ STATUS_ENTER), 7261/* harmony export */ cE: () => (/* binding */ STEP_NONE), 7262/* harmony export */ dp: () => (/* binding */ STATUS_LEAVE), 7263/* harmony export */ m7: () => (/* binding */ STEP_ACTIVE), 7264/* harmony export */ px: () => (/* binding */ STEP_PREPARE) 7265/* harmony export */ }); 7266var STATUS_NONE = 'none'; 7267var STATUS_APPEAR = 'appear'; 7268var STATUS_ENTER = 'enter'; 7269var STATUS_LEAVE = 'leave'; 7270var STEP_NONE = 'none'; 7271var STEP_PREPARE = 'prepare'; 7272var STEP_START = 'start'; 7273var STEP_ACTIVE = 'active'; 7274var STEP_ACTIVATED = 'end'; 7275/** 7276 * Used for disabled motion case. 7277 * Prepare stage will still work but start & active will be skipped. 7278 */ 7279var STEP_PREPARED = 'prepared'; 7280 7281/***/ }), 7282 7283/***/ 46538: 7284/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7285 7286"use strict"; 7287/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7288/* harmony export */ D: () => (/* binding */ placements) 7289/* harmony export */ }); 7290var autoAdjustOverflowTopBottom = { 7291 shiftX: 64, 7292 adjustY: 1 7293}; 7294var autoAdjustOverflowLeftRight = { 7295 adjustX: 1, 7296 shiftY: true 7297}; 7298var targetOffset = [0, 0]; 7299var placements = { 7300 left: { 7301 points: ['cr', 'cl'], 7302 overflow: autoAdjustOverflowLeftRight, 7303 offset: [-4, 0], 7304 targetOffset: targetOffset 7305 }, 7306 right: { 7307 points: ['cl', 'cr'], 7308 overflow: autoAdjustOverflowLeftRight, 7309 offset: [4, 0], 7310 targetOffset: targetOffset 7311 }, 7312 top: { 7313 points: ['bc', 'tc'], 7314 overflow: autoAdjustOverflowTopBottom, 7315 offset: [0, -4], 7316 targetOffset: targetOffset 7317 }, 7318 bottom: { 7319 points: ['tc', 'bc'], 7320 overflow: autoAdjustOverflowTopBottom, 7321 offset: [0, 4], 7322 targetOffset: targetOffset 7323 }, 7324 topLeft: { 7325 points: ['bl', 'tl'], 7326 overflow: autoAdjustOverflowTopBottom, 7327 offset: [0, -4], 7328 targetOffset: targetOffset 7329 }, 7330 leftTop: { 7331 points: ['tr', 'tl'], 7332 overflow: autoAdjustOverflowLeftRight, 7333 offset: [-4, 0], 7334 targetOffset: targetOffset 7335 }, 7336 topRight: { 7337 points: ['br', 'tr'], 7338 overflow: autoAdjustOverflowTopBottom, 7339 offset: [0, -4], 7340 targetOffset: targetOffset 7341 }, 7342 rightTop: { 7343 points: ['tl', 'tr'], 7344 overflow: autoAdjustOverflowLeftRight, 7345 offset: [4, 0], 7346 targetOffset: targetOffset 7347 }, 7348 bottomRight: { 7349 points: ['tr', 'br'], 7350 overflow: autoAdjustOverflowTopBottom, 7351 offset: [0, 4], 7352 targetOffset: targetOffset 7353 }, 7354 rightBottom: { 7355 points: ['bl', 'br'], 7356 overflow: autoAdjustOverflowLeftRight, 7357 offset: [4, 0], 7358 targetOffset: targetOffset 7359 }, 7360 bottomLeft: { 7361 points: ['tl', 'bl'], 7362 overflow: autoAdjustOverflowTopBottom, 7363 offset: [0, 4], 7364 targetOffset: targetOffset 7365 }, 7366 leftBottom: { 7367 points: ['br', 'bl'], 7368 overflow: autoAdjustOverflowLeftRight, 7369 offset: [-4, 0], 7370 targetOffset: targetOffset 7371 } 7372}; 7373/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (placements))); 7374 7375/***/ }), 7376 7377/***/ 46783: 7378/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7379 7380"use strict"; 7381/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7382/* harmony export */ A: () => (/* binding */ useWinClick) 7383/* harmony export */ }); 7384/* harmony import */ var rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49116); 7385/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84445); 7386/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 7387/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 7388/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61225); 7389 7390 7391 7392 7393function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) { 7394 var openRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(open); 7395 openRef.current = open; 7396 var popupPointerDownRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false); 7397 7398 // Click to hide is special action since click popup element should not hide 7399 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 7400 if (clickToHide && popupEle && (!mask || maskClosable)) { 7401 var onPointerDown = function onPointerDown() { 7402 popupPointerDownRef.current = false;
7403 }; 7404 var onTriggerClose = function onTriggerClose(e) { 7405 var _e$composedPath; 7406 if (openRef.current && !inPopupOrChild(((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 || (_e$composedPath = _e$composedPath.call(e)) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath[0]) || e.target) && !popupPointerDownRef.current) { 7407 triggerOpen(false); 7408 } 7409 }; 7410 var win = (0,_util__WEBPACK_IMPORTED_MODULE_3__/* .getWin */ .D)(popupEle); 7411 win.addEventListener('pointerdown', onPointerDown, true); 7412 win.addEventListener('mousedown', onTriggerClose, true); 7413 win.addEventListener('contextmenu', onTriggerClose, true); 7414 7415 // shadow root 7416 var targetShadowRoot = (0,rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_0__/* .getShadowRoot */ .j)(targetEle); 7417 if (targetShadowRoot) { 7418 targetShadowRoot.addEventListener('mousedown', onTriggerClose, true); 7419 targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true); 7420 } 7421 7422 // Warning if target and popup not in same root 7423 if (false) // removed by dead control flow 7424{ var popupRoot, targetRoot, _targetEle$getRootNod, _popupEle$getRootNode; } 7425 return function () { 7426 win.removeEventListener('pointerdown', onPointerDown, true); 7427 win.removeEventListener('mousedown', onTriggerClose, true); 7428 win.removeEventListener('contextmenu', onTriggerClose, true); 7429 if (targetShadowRoot) { 7430 targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true); 7431 targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true); 7432 } 7433 }; 7434 } 7435 }, [clickToHide, targetEle, popupEle, mask, maskClosable]); 7436 function onPopupPointerDown() { 7437 popupPointerDownRef.current = true; 7438 } 7439 return onPopupPointerDown; 7440} 7441 7442/***/ }), 7443 7444/***/ 47169: 7445/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7446 7447"use strict"; 7448/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7449/* harmony export */ A: () => (/* binding */ canUseDom) 7450/* harmony export */ }); 7451function canUseDom() { 7452 return !!(typeof window !== 'undefined' && window.document && window.document.createElement); 7453} 7454 7455/***/ }), 7456 7457/***/ 47280: 7458/***/ ((module) => { 7459 7460// ignore eslint 7461/* eslint-disable */ 7462 7463// 使ç¨ossçéç¨ååï¼ä¸»è¦æ¯ä¸ºäºé²æ¢æå è¿ç¨ä¸ç´æ¥æè¿å»çèµæºå°åä¸ç´æ¥æ¾ç¤ºåcjç¸å ³ 7464module.exports = { 7465 test: 'https://test-cj-frontend.oss-cn-hangzhou.aliyuncs.com', 7466 "production-cn": 'https://cj-front-end.oss-cn-hangzhou.aliyuncs.com', 7467 production: 'https://sv-resource.oss-accelerate.aliyuncs.com' 7468} 7469 7470/***/ }), 7471 7472/***/ 47689: 7473/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7474 7475"use strict"; 7476/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7477/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 7478/* harmony export */ }); 7479/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 7480/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17545); 7481/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28299); 7482/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19284); 7483/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 7484/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 7485/* harmony import */ var _Collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23660); 7486/* harmony import */ var _utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22616); 7487/* harmony import */ var _DomWrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(51778); 7488 7489 7490 7491 7492 7493 7494 7495 7496function SingleObserver(props, ref) { 7497 var children = props.children, 7498 disabled = props.disabled; 7499 var elementRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(null); 7500 var wrapperRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(null); 7501 var onCollectionResize = react__WEBPACK_IMPORTED_MODULE_4__.useContext(_Collection__WEBPACK_IMPORTED_MODULE_5__/* .CollectionContext */ .C); 7502 7503 // =========================== Children =========================== 7504 var isRenderProps = typeof children === 'function'; 7505 var mergedChildren = isRenderProps ? children(elementRef) : children; 7506 7507 // ============================= Size ============================= 7508 var sizeRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef({ 7509 width: -1, 7510 height: -1, 7511 offsetWidth: -1, 7512 offsetHeight: -1 7513 }); 7514 7515 // ============================= Ref ============================== 7516 var canRef = !isRenderProps && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.isValidElement(mergedChildren) && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .supportRef */ .f3)(mergedChildren); 7517 var originRef = canRef ? (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .getNodeRef */ .A9)(mergedChildren) : null; 7518 var mergedRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .useComposeRef */ .xK)(originRef, elementRef); 7519 var getDom = function getDom() { 7520 var _elementRef$current; 7521 return (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(elementRef.current) || (
7522 // Support `nativeElement` format 7523 elementRef.current && (0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(elementRef.current) === 'object' ? (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(wrapperRef.current); 7524 }; 7525 react__WEBPACK_IMPORTED_MODULE_4__.useImperativeHandle(ref, function () { 7526 return getDom(); 7527 }); 7528 7529 // =========================== Observe ============================ 7530 var propsRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(props); 7531 propsRef.current = props; 7532 7533 // Handler 7534 var onInternalResize = react__WEBPACK_IMPORTED_MODULE_4__.useCallback(function (target) { 7535 var _propsRef$current = propsRef.current, 7536 onResize = _propsRef$current.onResize, 7537 data = _propsRef$current.data; 7538 var _target$getBoundingCl = target.getBoundingClientRect(), 7539 width = _target$getBoundingCl.width, 7540 height = _target$getBoundingCl.height; 7541 var offsetWidth = target.offsetWidth, 7542 offsetHeight = target.offsetHeight; 7543 7544 /** 7545 * Resize observer trigger when content size changed. 7546 * In most case we just care about element size, 7547 * let's use `boundary` instead of `contentRect` here to avoid shaking. 7548 */ 7549 var fixedWidth = Math.floor(width); 7550 var fixedHeight = Math.floor(height); 7551 if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) { 7552 var size = { 7553 width: fixedWidth, 7554 height: fixedHeight, 7555 offsetWidth: offsetWidth, 7556 offsetHeight: offsetHeight 7557 }; 7558 sizeRef.current = size; 7559 7560 // IE is strange, right? 7561 var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth; 7562 var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight; 7563 var sizeInfo = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, size), {}, { 7564 offsetWidth: mergedOffsetWidth, 7565 offsetHeight: mergedOffsetHeight 7566 }); 7567 7568 // Let collection know what happened 7569 onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data); 7570 if (onResize) { 7571 // defer the callback but not defer to next frame 7572 Promise.resolve().then(function () { 7573 onResize(sizeInfo, target); 7574 }); 7575 } 7576 } 7577 }, []); 7578 7579 // Dynamic observe 7580 react__WEBPACK_IMPORTED_MODULE_4__.useEffect(function () { 7581 var currentElement = getDom(); 7582 if (currentElement && !disabled) { 7583 (0,_utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__/* .observe */ .lB)(currentElement, onInternalResize); 7584 } 7585 return function () { 7586 return (0,_utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__/* .unobserve */ .OV)(currentElement, onInternalResize); 7587 }; 7588 }, [elementRef.current, disabled]); 7589 7590 // ============================ Render ============================ 7591 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(_DomWrapper__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, { 7592 ref: wrapperRef 7593 }, canRef ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.cloneElement(mergedChildren, { 7594 ref: mergedRef 7595 }) : mergedChildren); 7596} 7597var RefSingleObserver = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.forwardRef(SingleObserver); 7598if (false) // removed by dead control flow 7599{} 7600/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefSingleObserver); 7601 7602/***/ }), 7603 7604/***/ 48043: 7605/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7606 7607"use strict"; 7608/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7609/* harmony export */ A: () => (/* binding */ useAction) 7610/* harmony export */ }); 7611/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 7612/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 7613 7614function toArray(val) { 7615 return val ? Array.isArray(val) ? val : [val] : []; 7616} 7617function useAction(mobile, action, showAction, hideAction) { 7618 return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(function () { 7619 var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action); 7620 var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action); 7621 var showActionSet = new Set(mergedShowAction); 7622 var hideActionSet = new Set(mergedHideAction); 7623 if (mobile) { 7624 if (showActionSet.has('hover')) { 7625 showActionSet.delete('hover'); 7626 showActionSet.add('click'); 7627 } 7628 if (hideActionSet.has('hover')) { 7629 hideActionSet.delete('hover'); 7630 hideActionSet.add('click'); 7631 } 7632 } 7633 return [showActionSet, hideActionSet]; 7634 }, [mobile, action, showAction, hideAction]); 7635} 7636 7637/***/ }), 7638 7639/***/ 49105: 7640/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 7641 7642"use strict"; 7643/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7644/* harmony export */ A: () => (/* binding */ _isNativeReflectConstruct) 7645/* harmony export */ }); 7646function _isNativeReflectConstruct() { 7647 try { 7648 var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); 7649 } catch (t) {} 7650 return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { 7651 return !!t; 7652 })(); 7653} 7654 7655 7656/***/ }), 7657 7658/***/ 49116: 7659/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7660 7661"use strict"; 7662/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7663/* harmony export */ j: () => (/* binding */ getShadowRoot) 7664/* harmony export */ }); 7665/* unused harmony export inShadow */ 7666function getRoot(ele) { 7667 var _ele$getRootNode; 7668 return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele); 7669} 7670 7671/** 7672 * Check if is in shadowRoot 7673 */ 7674function inShadow(ele) { 7675 return getRoot(ele) instanceof ShadowRoot; 7676} 7677
7678/** 7679 * Return shadowRoot if possible 7680 */ 7681function getShadowRoot(ele) { 7682 return inShadow(ele) ? getRoot(ele) : null; 7683} 7684 7685/***/ }), 7686 7687/***/ 50137: 7688/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7689 7690"use strict"; 7691/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7692/* harmony export */ A: () => (/* binding */ usePlatformHref) 7693/* harmony export */ }); 7694/* harmony import */ var _common_cj_href__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84963); 7695/* harmony import */ var _components_CjHeader_hooks_use_parent_platform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6925); 7696 7697 7698function usePlatformHref() { 7699 var isCj = (0,_components_CjHeader_hooks_use_parent_platform__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)().isCj; 7700 return function (href) { 7701 if (href.indexOf('javascript') > -1) return href; 7702 return isCj ? href : (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_0__/* .cjHref */ .F)(href); 7703 }; 7704} 7705 7706/***/ }), 7707 7708/***/ 50184: 7709/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7710 7711"use strict"; 7712/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7713/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 7714/* harmony export */ }); 7715/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 7716/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 7717 7718var OrderContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); 7719/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderContext); 7720 7721/***/ }), 7722 7723/***/ 50937: 7724/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7725 7726"use strict"; 7727/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7728/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 7729/* harmony export */ q: () => (/* binding */ toast_success) 7730/* harmony export */ }); 7731var toast = function toast(msg, time) { 7732 if (time === void 0) { 7733 time = 3000; 7734 } 7735 if (typeof layer !== 'undefined') { 7736 layer.msg(msg, { 7737 time: time 7738 }); 7739 } else if (typeof window.antd_message !== 'undefined') { 7740 window.antd_message.info(msg, time / 1000); 7741 } 7742}; 7743var toast_success = function toast_success(msg, time) { 7744 if (time === void 0) { 7745 time = 3000; 7746 } 7747 if (typeof layer !== 'undefined') { 7748 layer.msg(msg, { 7749 time: time 7750 }); 7751 } else if (typeof window.antd_message !== 'undefined') { 7752 window.antd_message.success(msg, time / 1000); 7753 } 7754}; 7755/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toast); 7756 7757/***/ }), 7758 7759/***/ 51187: 7760/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7761 7762var baseGetTag = __webpack_require__(87379), 7763 isObjectLike = __webpack_require__(80547); 7764 7765/** `Object#toString` result references. */ 7766var symbolTag = '[object Symbol]'; 7767 7768/** 7769 * Checks if `value` is classified as a `Symbol` primitive or object. 7770 * 7771 * @static 7772 * @memberOf _ 7773 * @since 4.0.0 7774 * @category Lang 7775 * @param {*} value The value to check. 7776 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 7777 * @example 7778 * 7779 * _.isSymbol(Symbol.iterator); 7780 * // => true 7781 * 7782 * _.isSymbol('abc'); 7783 * // => false 7784 */ 7785function isSymbol(value) { 7786 return typeof value == 'symbol' || 7787 (isObjectLike(value) && baseGetTag(value) == symbolTag); 7788} 7789 7790module.exports = isSymbol; 7791 7792 7793/***/ }), 7794 7795/***/ 51778: 7796/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7797 7798"use strict"; 7799/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7800/* harmony export */ A: () => (/* binding */ DomWrapper) 7801/* harmony export */ }); 7802/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55152); 7803/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30414); 7804/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29296); 7805/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90857); 7806/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 7807/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 7808 7809 7810 7811 7812 7813/** 7814 * Fallback to findDOMNode if origin ref do not provide any dom element 7815 */ 7816var DomWrapper = /*#__PURE__*/function (_React$Component) { 7817 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(DomWrapper, _React$Component); 7818 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(DomWrapper); 7819 function DomWrapper() { 7820 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this, DomWrapper); 7821 return _super.apply(this, arguments); 7822 } 7823 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(DomWrapper, [{ 7824 key: "render", 7825 value: function render() { 7826 return this.props.children; 7827 } 7828 }]); 7829 return DomWrapper; 7830}(react__WEBPACK_IMPORTED_MODULE_4__.Component); 7831 7832 7833/***/ }), 7834 7835/***/ 52743: 7836/***/ ((module) => { 7837 7838"use strict"; 7839 7840 7841var isMergeableObject = function isMergeableObject(value) { 7842 return isNonNullObject(value) 7843 && !isSpecial(value) 7844}; 7845 7846function isNonNullObject(value) { 7847 return !!value && typeof value === 'object' 7848} 7849 7850function isSpecial(value) { 7851 var stringValue = Object.prototype.toString.call(value); 7852 7853 return stringValue === '[object RegExp]' 7854 || stringValue === '[object Date]' 7855 || isReactElement(value) 7856} 7857 7858// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 7859var canUseSymbol = typeof Symbol === 'function' && Symbol.for; 7860var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; 7861 7862function isReactElement(value) { 7863 return value.$$typeof === REACT_ELEMENT_TYPE 7864} 7865 7866function emptyTarget(val) { 7867 return Array.isArray(val) ? [] : {} 7868} 7869 7870function cloneUnlessOtherwiseSpecified(value, options) { 7871 return (options.clone !== false && options.isMergeableObject(value)) 7872 ? deepmerge(emptyTarget(value), value, options) 7873 : value 7874} 7875 7876function defaultArrayMerge(target, source, options) { 7877 return target.concat(source).map(function(element) { 7878 return cloneUnlessOtherwiseSpecified(element, options) 7879 }) 7880} 7881 7882function getMergeFunction(key, options) { 7883 if (!options.customMerge) { 7884 return deepmerge 7885 } 7886 var customMerge = options.customMerge(key); 7887 return typeof customMerge === 'function' ? customMerge : deepmerge 7888} 7889 7890function getEnumerableOwnPropertySymbols(target) { 7891 return Object.getOwnPropertySymbols 7892 ? Object.getOwnPropertySymbols(target).filter(function(symbol) { 7893 return Object.propertyIsEnumerable.call(target, symbol) 7894 }) 7895 : [] 7896} 7897 7898function getKeys(target) { 7899 return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) 7900} 7901 7902function propertyIsOnObject(object, property) { 7903 try { 7904 return property in object 7905 } catch(_) { 7906 return false 7907 } 7908} 7909 7910// Protects from prototype poisoning and unexpected merging up the prototype chain.
vendor: 2,558 bytes, lines 7911-7996
7911function propertyIsUnsafe(target, key) { 7912 return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, 7913 && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, 7914 && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. 7915} 7916 7917function mergeObject(target, source, options) { 7918 var destination = {}; 7919 if (options.isMergeableObject(target)) { 7920 getKeys(target).forEach(function(key) { 7921 destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); 7922 }); 7923 } 7924 getKeys(source).forEach(function(key) { 7925 if (propertyIsUnsafe(target, key)) { 7926 return 7927 } 7928 7929 if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { 7930 destination[key] = getMergeFunction(key, options)(target[key], source[key], options); 7931 } else { 7932 destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); 7933 } 7934 }); 7935 return destination 7936} 7937 7938function deepmerge(target, source, options) { 7939 options = options || {}; 7940 options.arrayMerge = options.arrayMerge || defaultArrayMerge; 7941 options.isMergeableObject = options.isMergeableObject || isMergeableObject; 7942 // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() 7943 // implementations can use it. The caller may not replace it. 7944 options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; 7945 7946 var sourceIsArray = Array.isArray(source); 7947 var targetIsArray = Array.isArray(target); 7948 var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; 7949 7950 if (!sourceAndTargetTypesMatch) { 7951 return cloneUnlessOtherwiseSpecified(source, options) 7952 } else if (sourceIsArray) { 7953 return options.arrayMerge(target, source, options) 7954 } else { 7955 return mergeObject(target, source, options) 7956 } 7957} 7958 7959deepmerge.all = function deepmergeAll(array, options) { 7960 if (!Array.isArray(array)) { 7961 throw new Error('first argument should be an array') 7962 } 7963 7964 return array.reduce(function(prev, next) { 7965 return deepmerge(prev, next, options) 7966 }, {}) 7967}; 7968 7969var deepmerge_1 = deepmerge; 7970 7971module.exports = deepmerge_1; 7972 7973 7974/***/ }), 7975 7976/***/ 53373: 7977/***/ ((module, exports) => { 7978 7979var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 7980 Copyright (c) 2018 Jed Watson. 7981 Licensed under the MIT License (MIT), see 7982 http://jedwatson.github.io/classnames 7983*/ 7984/* global define */ 7985 7986(function () { 7987 'use strict'; 7988 7989 var hasOwn = {}.hasOwnProperty; 7990 7991 function classNames () { 7992 var classes = ''; 7993 7994 for (var i = 0; i < arguments.length; i++) { 7995 var arg = arguments[i]; 7996 if (arg) {
7997 classes = appendClass(classes, parseValue(arg)); 7998 } 7999 } 8000 8001 return classes; 8002 } 8003 8004 function parseValue (arg) { 8005 if (typeof arg === 'string' || typeof arg === 'number') { 8006 return arg; 8007 } 8008 8009 if (typeof arg !== 'object') { 8010 return ''; 8011 } 8012 8013 if (Array.isArray(arg)) { 8014 return classNames.apply(null, arg); 8015 } 8016 8017 if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) { 8018 return arg.toString(); 8019 } 8020 8021 var classes = ''; 8022 8023 for (var key in arg) { 8024 if (hasOwn.call(arg, key) && arg[key]) { 8025 classes = appendClass(classes, key); 8026 } 8027 } 8028 8029 return classes; 8030 } 8031 8032 function appendClass (value, newClass) { 8033 if (!newClass) { 8034 return value; 8035 } 8036 8037 if (value) { 8038 return value + ' ' + newClass; 8039 } 8040 8041 return value + newClass; 8042 } 8043 8044 if ( true && module.exports) { 8045 classNames.default = classNames; 8046 module.exports = classNames; 8047 } else if (true) { 8048 // register as 'classnames', consistent with npm package name 8049 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { 8050 return classNames; 8051 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), 8052 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 8053 } else // removed by dead control flow 8054{} 8055}()); 8056 8057 8058/***/ }), 8059 8060/***/ 53790: 8061/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8062 8063"use strict"; 8064 8065 8066if (true) { 8067 module.exports = __webpack_require__(24898); 8068} else // removed by dead control flow 8069{} 8070 8071 8072/***/ }), 8073 8074/***/ 53795: 8075/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8076 8077"use strict"; 8078/* unused harmony exports default, merge */ 8079 8080 8081 8082 8083 8084function internalSet(entity, paths, value, removeIfUndefined) { 8085 if (!paths.length) { 8086 return value; 8087 } 8088 var _paths = _toArray(paths), 8089 path = _paths[0], 8090 restPath = _paths.slice(1); 8091 var clone; 8092 if (!entity && typeof path === 'number') { 8093 clone = []; 8094 } else if (Array.isArray(entity)) { 8095 clone = _toConsumableArray(entity); 8096 } else { 8097 clone = _objectSpread({}, entity); 8098 } 8099 8100 // Delete prop if `removeIfUndefined` and value is undefined 8101 if (removeIfUndefined && value === undefined && restPath.length === 1) { 8102 delete clone[path][restPath[0]]; 8103 } else { 8104 clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined); 8105 } 8106 return clone; 8107} 8108function set(entity, paths, value) { 8109 var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; 8110 // Do nothing if `removeIfUndefined` and parent object not exist 8111 if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) { 8112 return entity; 8113 } 8114 return internalSet(entity, paths, value, removeIfUndefined); 8115} 8116function isObject(obj) { 8117 return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype; 8118} 8119function createEmpty(source) { 8120 return Array.isArray(source) ? [] : {}; 8121} 8122var keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys; 8123 8124/** 8125 * Merge objects which will create 8126 */ 8127function merge() { 8128 for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { 8129 sources[_key] = arguments[_key]; 8130 } 8131 var clone = createEmpty(sources[0]); 8132 sources.forEach(function (src) { 8133 function internalMerge(path, parentLoopSet) { 8134 var loopSet = new Set(parentLoopSet); 8135 var value = get(src, path); 8136 var isArr = Array.isArray(value); 8137 if (isArr || isObject(value)) { 8138 // Only add not loop obj 8139 if (!loopSet.has(value)) { 8140 loopSet.add(value); 8141 var originValue = get(clone, path); 8142 if (isArr) { 8143 // Array will always be override 8144 clone = set(clone, path, []); 8145 } else if (!originValue || _typeof(originValue) !== 'object') { 8146 // Init container if not exist 8147 clone = set(clone, path, createEmpty(value)); 8148 } 8149 keys(value).forEach(function (key) { 8150 internalMerge([].concat(_toConsumableArray(path), [key]), loopSet); 8151 }); 8152 } 8153 } else { 8154 clone = set(clone, path, value); 8155 } 8156 } 8157 internalMerge([]); 8158 }); 8159 return clone; 8160} 8161 8162/***/ }), 8163 8164/***/ 53905: 8165/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8166 8167"use strict"; 8168/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8169/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8170/* harmony export */ }); 8171/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 8172/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 8173/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 8174/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12097); 8175 8176 8177 8178/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (loginInfo, loginCallback) { 8179 if (loginInfo === void 0) { 8180 loginInfo = {}; 8181 } 8182 if (loginCallback === void 0) { 8183 loginCallback = function loginCallback() {}; 8184 } 8185 var token = loginInfo.token; 8186 var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!!token), 8187 isLogin = _a[0], 8188 setIsLogin = _a[1]; 8189 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { 8190 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.info('token'); 8191 if (!token) { 8192 setIsLogin(false); 8193 (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .removeLogin */ ._$)(); 8194 return; 8195 } 8196 setIsLogin(true); 8197 loginCallback === null || loginCallback === void 0 ? void 0 : loginCallback({}); 8198 }, []); 8199 return { 8200 isLogin: isLogin, 8201 loginInfo: loginInfo 8202 }; 8203}); 8204 8205/***/ }), 8206 8207/***/ 55152: 8208/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 8209 8210"use strict"; 8211/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8212/* harmony export */ A: () => (/* binding */ _classCallCheck) 8213/* harmony export */ }); 8214function _classCallCheck(a, n) { 8215 if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); 8216} 8217 8218 8219/***/ }), 8220 8221/***/ 56003: 8222/***/ ((module) => { 8223 8224"use strict"; 8225module.exports = __WEBPACK_EXTERNAL_MODULE__56003__; 8226 8227/***/ }), 8228 8229/***/ 58965: 8230/***/ (() => { 8231 8232"use strict";
8233// extracted by mini-css-extract-plugin 8234/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ({}); 8235 8236/***/ }), 8237 8238/***/ 59788: 8239/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8240 8241"use strict"; 8242/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8243/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8244/* harmony export */ }); 8245/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 8246/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 8247/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 8248/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53373); 8249/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__); 8250/* harmony import */ var rc_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3251); 8251/* harmony import */ var rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77326); 8252/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(84238); 8253/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(19284); 8254/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(15442); 8255/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__); 8256/* harmony import */ var _Arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(23581); 8257/* harmony import */ var _Mask__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27982); 8258/* harmony import */ var _PopupContent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(80745); 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271var Popup = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.forwardRef(function (props, ref) { 8272 var popup = props.popup, 8273 className = props.className, 8274 prefixCls = props.prefixCls, 8275 style = props.style, 8276 target = props.target, 8277 _onVisibleChanged = props.onVisibleChanged, 8278 open = props.open, 8279 keepDom = props.keepDom, 8280 fresh = props.fresh, 8281 onClick = props.onClick, 8282 mask = props.mask, 8283 arrow = props.arrow, 8284 arrowPos = props.arrowPos, 8285 align = props.align, 8286 motion = props.motion, 8287 maskMotion = props.maskMotion, 8288 forceRender = props.forceRender, 8289 getPopupContainer = props.getPopupContainer, 8290 autoDestroy = props.autoDestroy, 8291 Portal = props.portal, 8292 zIndex = props.zIndex, 8293 onMouseEnter = props.onMouseEnter, 8294 onMouseLeave = props.onMouseLeave, 8295 onPointerEnter = props.onPointerEnter, 8296 onPointerDownCapture = props.onPointerDownCapture, 8297 ready = props.ready, 8298 offsetX = props.offsetX, 8299 offsetY = props.offsetY, 8300 offsetR = props.offsetR, 8301 offsetB = props.offsetB, 8302 onAlign = props.onAlign, 8303 onPrepare = props.onPrepare, 8304 stretch = props.stretch, 8305 targetWidth = props.targetWidth, 8306 targetHeight = props.targetHeight; 8307 var childNode = typeof popup === 'function' ? popup() : popup; 8308 8309 // We can not remove holder only when motion finished. 8310 var isNodeVisible = open || keepDom; 8311 8312 // ======================= Container ======================== 8313 var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0; 8314 var _React$useState = react__WEBPACK_IMPORTED_MODULE_8__.useState(!getPopupContainer || !getPopupContainerNeedParams), 8315 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_React$useState, 2), 8316 show = _React$useState2[0], 8317 setShow = _React$useState2[1]; 8318 8319 // Delay to show since `getPopupContainer` need target element 8320 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A)(function () { 8321 if (!show && getPopupContainerNeedParams && target) { 8322 setShow(true); 8323 } 8324 }, [show, getPopupContainerNeedParams, target]); 8325 8326 // ========================= Render ========================= 8327 if (!show) { 8328 return null; 8329 } 8330 8331 // >>>>> Offset 8332 var AUTO = 'auto'; 8333 var offsetStyle = { 8334 left: '-1000vw', 8335 top: '-1000vh', 8336 right: AUTO, 8337 bottom: AUTO 8338 }; 8339 8340 // Set align style 8341 if (ready || !open) { 8342 var _experimental; 8343 var points = align.points; 8344 var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset); 8345 var alignRight = dynamicInset && points[0][1] === 'r'; 8346 var alignBottom = dynamicInset && points[0][0] === 'b'; 8347 if (alignRight) { 8348 offsetStyle.right = offsetR; 8349 offsetStyle.left = AUTO; 8350 } else { 8351 offsetStyle.left = offsetX; 8352 offsetStyle.right = AUTO; 8353 } 8354 if (alignBottom) { 8355 offsetStyle.bottom = offsetB; 8356 offsetStyle.top = AUTO; 8357 } else { 8358 offsetStyle.top = offsetY; 8359 offsetStyle.bottom = AUTO; 8360 } 8361 } 8362 8363 // >>>>> Misc 8364 var miscStyle = {}; 8365 if (stretch) { 8366 if (stretch.includes('height') && targetHeight) { 8367 miscStyle.height = targetHeight; 8368 } else if (stretch.includes('minHeight') && targetHeight) { 8369 miscStyle.minHeight = targetHeight; 8370 } 8371 if (stretch.includes('width') && targetWidth) { 8372 miscStyle.width = targetWidth; 8373 } else if (stretch.includes('minWidth') && targetWidth) { 8374 miscStyle.minWidth = targetWidth; 8375 } 8376 } 8377 if (!open) { 8378 miscStyle.pointerEvents = 'none'; 8379 } 8380 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Portal, { 8381 open: forceRender || isNodeVisible, 8382 getContainer: getPopupContainer && function () { 8383 return getPopupContainer(target); 8384 }, 8385 autoDestroy: autoDestroy 8386 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_Mask__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A, { 8387 prefixCls: prefixCls, 8388 open: open, 8389 zIndex: zIndex, 8390 mask: mask, 8391 motion: maskMotion 8392 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, { 8393 onResize: onAlign, 8394 disabled: !open 8395 }, function (resizeObserverRef) { 8396 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(rc_motion__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Ay, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({ 8397 motionAppear: true, 8398 motionEnter: true, 8399 motionLeave: true, 8400 removeOnLeave: false, 8401 forceRender: forceRender, 8402 leavedClassName: "".concat(prefixCls, "-hidden") 8403 }, motion, { 8404 onAppearPrepare: onPrepare, 8405 onEnterPrepare: onPrepare, 8406 visible: open, 8407 onVisibleChanged: function onVisibleChanged(nextVisible) { 8408 var _motion$onVisibleChan; 8409 motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible); 8410 _onVisibleChanged(nextVisible); 8411 } 8412 }), function (_ref, motionRef) { 8413 var motionClassName = _ref.className, 8414 motionStyle = _ref.style; 8415 var cls = classnames__WEBPACK_IMPORTED_MODULE_3___default()(prefixCls, motionClassName, className); 8416 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement("div", { 8417 ref: (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_7__/* .composeRef */ .K4)(resizeObserverRef, ref, motionRef), 8418 className: cls, 8419 style: (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({
8420 '--arrow-x': "".concat(arrowPos.x || 0, "px"), 8421 '--arrow-y': "".concat(arrowPos.y || 0, "px") 8422 }, offsetStyle), miscStyle), motionStyle), {}, { 8423 boxSizing: 'border-box', 8424 zIndex: zIndex 8425 }, style), 8426 onMouseEnter: onMouseEnter, 8427 onMouseLeave: onMouseLeave, 8428 onPointerEnter: onPointerEnter, 8429 onClick: onClick, 8430 onPointerDownCapture: onPointerDownCapture 8431 }, arrow && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_Arrow__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A, { 8432 prefixCls: prefixCls, 8433 arrow: arrow, 8434 arrowPos: arrowPos, 8435 align: align 8436 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_PopupContent__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A, { 8437 cache: !open && !fresh 8438 }, childNode)); 8439 }); 8440 })); 8441}); 8442if (false) // removed by dead control flow 8443{} 8444/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Popup); 8445 8446/***/ }), 8447 8448/***/ 59912: 8449/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8450 8451"use strict"; 8452/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8453/* harmony export */ A: () => (/* binding */ Tooltip) 8454/* harmony export */ }); 8455/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 8456/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 8457/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56003); 8458/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__); 8459/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22128); 8460/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53373); 8461/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__); 8462/* harmony import */ var _components_CjHeader_const_languages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45163); 8463/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44148); 8464/* harmony import */ var _RcToolTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14919); 8465/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81002); 8466var __assign = undefined && undefined.__assign || function () { 8467 __assign = Object.assign || function (t) { 8468 for (var s, i = 1, n = arguments.length; i < n; i++) { 8469 s = arguments[i]; 8470 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 8471 } 8472 return t; 8473 }; 8474 return __assign.apply(this, arguments); 8475}; 8476var __rest = undefined && undefined.__rest || function (s, e) { 8477 var t = {}; 8478 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 8479 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 8480 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 8481 } 8482 return t; 8483}; 8484 8485 8486 8487 8488 8489 8490 8491 8492function Tooltip(props) { 8493 var _a = props.useRc, 8494 useRc = _a === void 0 ? false : _a, 8495 _b = props.rcProps, 8496 rcProps = _b === void 0 ? {} : _b, 8497 _c = props.content, 8498 content = _c === void 0 ? '' : _c, 8499 children = props.children, 8500 _d = props.placement, 8501 placement = _d === void 0 ? 'top' : _d, 8502 _e = props.white, 8503 white = _e === void 0 ? false : _e, 8504 _f = props.className, 8505 className = _f === void 0 ? '' : _f, 8506 bodyStyle = props.bodyStyle, 8507 immediateHide = props.immediateHide, 8508 noImmediateShow = props.noImmediateShow, 8509 _g = props.noImmediateShowDelay, 8510 noImmediateShowDelay = _g === void 0 ? 1000 : _g, 8511 _h = props.autoTranslate, 8512 autoTranslate = _h === void 0 ? true : _h, 8513 autoShow = props.autoShow, 8514 _j = props.autoShowDelay, 8515 autoShowDelay = _j === void 0 ? 1000 : _j, 8516 _k = props.hideArrow, 8517 hideArrow = _k === void 0 ? false : _k, 8518 _l = props.zIndex, 8519 zIndex = _l === void 0 ? 99999 : _l, 8520 resetProps = __rest(props, ["useRc", "rcProps", "content", "children", "placement", "white", "className", "bodyStyle", "immediateHide", "noImmediateShow", "noImmediateShowDelay", "autoTranslate", "autoShow", "autoShowDelay", "hideArrow", "zIndex"]); 8521 var lng = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_5__/* .useGlobalProps */ .v)().otherCookies.lng; 8522 var notranslate = autoTranslate ? false : _components_CjHeader_const_languages__WEBPACK_IMPORTED_MODULE_4__/* .sixCountryLanguage */ .V.includes(lng); 8523 var cloneRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8524 var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8525 var timerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8526 var timerEnterRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8527 var Tip = function Tip(_a) { 8528 var _b, _c; 8529 var _d = _a.arrowStyle, 8530 arrowStyle = _d === void 0 ? {}
8530 : _d, 8531 style = _a.style; 8532 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8533 className: classnames__WEBPACK_IMPORTED_MODULE_3___default()(_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.tooltip, className, (_b = {}, _b[_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.white] = white, _b.notranslate = notranslate, _b)), 8534 style: __assign(__assign({}, style), { 8535 zIndex: zIndex 8536 }) 8537 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8538 className: _index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.box 8539 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8540 className: classnames__WEBPACK_IMPORTED_MODULE_3___default()((_c = {}, _c[_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.arrow] = !hideArrow, _c[_index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.rightArrow] = placement === 'right' && !hideArrow, _c)), 8541 style: arrowStyle 8542 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8543 className: _index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.content 8544 }, content))); 8545 }; 8546 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { 8547 return function () { 8548 ref.current && ref.current.remove(); 8549 }; 8550 }, []); 8551 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { 8552 if (autoShow) { 8553 setTimeout(function () { 8554 if ((0,_common__WEBPACK_IMPORTED_MODULE_7__/* .isMobileFun */ .kJ)()) { 8555 return; 8556 } 8557 handleOnMouseEnter(cloneRef.current); 8558 setTimeout(function () { 8559 handleOnLeave(ref.current); 8560 }, autoShowDelay); 8561 }, 1000); 8562 } 8563 }, []); 8564 var clearTimerVariable = function clearTimerVariable() { 8565 timerRef.current && clearTimeout(timerRef.current); 8566 }; 8567 var handleOnLeave = function handleOnLeave(dom) { 8568 function removeDom() { 8569 dom && dom.remove(); 8570 ref.current = null; 8571 } 8572 clearTimerVariable(); 8573 if (immediateHide) return removeDom(); 8574 timerRef.current = setTimeout(function () { 8575 removeDom(); 8576 }, 50); 8577 }; 8578 var handleOnMouseEnter = function handleOnMouseEnter(target) { 8579 clearTimerVariable(); 8580 if (ref.current) return; 8581 var _a = target.getBoundingClientRect(), 8582 top = _a.top, 8583 width = _a.width, 8584 left = _a.left, 8585 height = _a.height; 8586 var windowWidth = window.innerWidth; 8587 var arrowWidth = 10; 8588 var style = {}; 8589 var arrowStyle = {}; 8590 switch (placement) { 8591 case 'leftTop': 8592 style = { 8593 left: left, 8594 top: top - 10, 8595 transform: 'translateY(-100%)' 8596 }; 8597 arrowStyle = { 8598 bottom: -5, 8599 left: width / 2 - arrowWidth / 2 8600 }; 8601 break; 8602 case 'rightTop': 8603 style = { 8604 right: windowWidth - (left + width), 8605 top: top - 10, 8606 transform: 'translateY(-100%)' 8607 }; 8608 arrowStyle = { 8609 bottom: -5, 8610 right: width / 2 - arrowWidth / 2 8611 }; 8612 break; 8613 case 'right': 8614 style = { 8615 left: left + width + arrowWidth, 8616 top: top - height / 2 + 6 8617 }; 8618 arrowStyle = { 8619 bottom: height / 2, 8620 left: -arrowWidth 8621 }; 8622 break; 8623 case 'top': 8624 style = { 8625 left: left + width / 2, 8626 top: top - 10, 8627 transform: 'translate(-50%, -100%)' 8628 }; 8629 arrowStyle = { 8630 bottom: -5, 8631 left: "calc(50% - ".concat(arrowWidth / 2, "px)") 8632 }; 8633 break; 8634 case 'bottom': 8635 style = { 8636 left: left + width / 2, 8637 top: top + height + 10, 8638 transform: 'translateX(-50%)' 8639 }; 8640 arrowStyle = { 8641 top: -5, 8642 left: "calc(50% - ".concat(arrowWidth / 2, "px)"), 8643 transform: 'rotate(180deg)' 8644 }; 8645 break; 8646 case 'bottomRight': 8647 style = { 8648 right: windowWidth - (left + width), 8649 top: top + height + 10 8650 }; 8651 arrowStyle = { 8652 top: -5, 8653 right: width / 2 - arrowWidth / 2, 8654 transform: 'rotate(180deg)' 8655 }; 8656 break; 8657 case 'bottomLeft': 8658 style = { 8659 left: left, 8660 top: top + height + 10 8661 }; 8662 arrowStyle = { 8663 top: -5, 8664 left: width / 2 - arrowWidth / 2, 8665 transform: 'rotate(180deg)' 8666 }; 8667 break; 8668 case 'leftBottom': 8669 style = { 8670 left: left, 8671 top: top + height + 10 8672 }; 8673 arrowStyle = { 8674 top: -5, 8675 left: arrowWidth + 5, 8676 transform: 'rotate(180deg)' 8677 }; 8678 break; 8679 default: 8680 } 8681 var CloneTip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Tip, { 8682 style: __assign(__assign({}, style), bodyStyle), 8683 arrowStyle: arrowStyle 8684 }), {}); 8685 var div = document.createElement('div'); 8686 div.addEventListener('mouseenter', function (e) { 8687 clearTimerVariable(); 8688 }); 8689 div.addEventListener('mouseleave', function () { 8690 handleOnLeave(ref.current); 8691 }); 8692 function show() { 8693 document.body.append(div); 8694 ref.current = div; 8695 (react_dom__WEBPACK_IMPORTED_MODULE_1___default()) === null || (react_dom__WEBPACK_IMPORTED_MODULE_1___default()) === void 0 ? void 0 : react_dom__WEBPACK_IMPORTED_MODULE_1___default().render(CloneTip, div); 8696 } 8697 if (noImmediateShow) { 8698 timerEnterRef && clearTimeout(timerEnterRef.current); 8699 timerEnterRef.current = setTimeout(function () { 8700 show(); 8701 }, noImmediateShowDelay); 8702 return; 8703 } 8704 show(); 8705 }; 8706 if (!content) return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(children, { 8707 ref: cloneRef 8708 }); 8709 if (useRc) { 8710 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RcToolTip__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, __assign({ 8711 theme: "black", 8712 placement: placement, 8713 overlay: function overlay() { 8714 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, content); 8715 }, 8716 getTooltipContainer: function getTooltipContainer(triggerNode) { 8717 if (triggerNode.parentElement) return triggerNode.parentElement; 8718 return document.body; 8719 } 8720 }
8720, rcProps), typeof children === 'string' ? (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, children)) : children); 8721 } 8722 return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(typeof children === 'string' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, children) : children, { 8723 ref: cloneRef, 8724 onMouseEnter: function onMouseEnter(e) { 8725 handleOnMouseEnter(e.currentTarget); 8726 }, 8727 onMouseLeave: function onMouseLeave() { 8728 if (noImmediateShow) { 8729 timerEnterRef && clearTimeout(timerEnterRef.current); 8730 } 8731 handleOnLeave(ref.current); 8732 } 8733 }); 8734} 8735 8736/***/ }), 8737 8738/***/ 60133: 8739/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8740 8741"use strict"; 8742/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8743/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8744/* harmony export */ }); 8745// extracted by mini-css-extract-plugin 8746/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"btn":"btn--hHfLn","ghost":"ghost--pR796","full":"full--rT5su","primary":"primary--jBthu","vip":"vip--zOK0_","default":"default--O2uEL","disabled":"disabled--ZWNPd","small":"small--U9Yu8","large":"large--qAE7P"}); 8747 8748/***/ }), 8749 8750/***/ 60488: 8751/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8752 8753"use strict"; 8754/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8755/* harmony export */ A: () => (/* binding */ useIsZS) 8756/* harmony export */ }); 8757function useIsZS(server_siteCheck) { 8758 var _a, _b, _c; 8759 if (typeof window === 'undefined') return server_siteCheck ? ((_a = server_siteCheck === null || server_siteCheck === void 0 ? void 0 : server_siteCheck.isSite) === null || _a === void 0 ? void 0 : _a.call(server_siteCheck, 'ZS')) === true : false; 8760 return ((_c = (_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.isSite) === null || _c === void 0 ? void 0 : _c.call(_b, 'ZS')) === true; 8761} 8762 8763/***/ }), 8764 8765/***/ 61225: 8766/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8767 8768"use strict"; 8769/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8770/* harmony export */ D: () => (/* binding */ getWin), 8771/* harmony export */ H1: () => (/* binding */ getAlignPopupClassName), 8772/* harmony export */ Iq: () => (/* binding */ getVisibleArea), 8773/* harmony export */ TK: () => (/* binding */ collectScroller), 8774/* harmony export */ Vu: () => (/* binding */ getMotion), 8775/* harmony export */ ac: () => (/* binding */ toNum) 8776/* harmony export */ }); 8777/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 8778 8779function isPointsEq() { 8780 var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 8781 var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; 8782 var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined; 8783 if (isAlignPoint) { 8784 return a1[0] === a2[0]; 8785 } 8786 return a1[0] === a2[0] && a1[1] === a2[1]; 8787} 8788function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) { 8789 var points = align.points; 8790 var placements = Object.keys(builtinPlacements); 8791 for (var i = 0; i < placements.length; i += 1) { 8792 var _builtinPlacements$pl; 8793 var placement = placements[i]; 8794 if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) { 8795 return "".concat(prefixCls, "-placement-").concat(placement); 8796 } 8797 } 8798 return ''; 8799} 8800 8801/** @deprecated We should not use this if we can refactor all deps */ 8802function getMotion(prefixCls, motion, animation, transitionName) { 8803 if (motion) { 8804 return motion; 8805 } 8806 if (animation) { 8807 return { 8808 motionName: "".concat(prefixCls, "-").concat(animation) 8809 }; 8810 } 8811 if (transitionName) { 8812 return { 8813 motionName: transitionName 8814 }; 8815 } 8816 return null; 8817} 8818function getWin(ele) { 8819 return ele.ownerDocument.defaultView; 8820} 8821 8822/** 8823 * Get all the scrollable parent elements of the element 8824 * @param ele The element to be detected 8825 * @param areaOnly Only return the parent which will cut visible area 8826 */ 8827function collectScroller(ele) { 8828 var scrollerList = []; 8829 var current = ele === null || ele === void 0 ? void 0 : ele.parentElement; 8830 var scrollStyle = ['hidden', 'scroll', 'clip', 'auto']; 8831 while (current) { 8832 var _getWin$getComputedSt = getWin(current).getComputedStyle(current), 8833 overflowX = _getWin$getComputedSt.overflowX, 8834 overflowY = _getWin$getComputedSt.overflowY, 8835 overflow = _getWin$getComputedSt.overflow; 8836 if ([overflowX, overflowY, overflow].some(function (o) { 8837 return scrollStyle.includes(o); 8838 })) { 8839 scrollerList.push(current); 8840 } 8841 current = current.parentElement; 8842 } 8843 return scrollerList; 8844} 8845function toNum(num) { 8846 var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; 8847 return Number.isNaN(num) ? defaultValue : num; 8848} 8849function getPxValue(val) { 8850 return toNum(parseFloat(val), 0); 8851} 8852/** 8853 * 8854 * 8855 * ************************************** 8856 * * Border * 8857 * * ************************** * 8858 * * * * * * 8859 * * B * * S * B * 8860 * * o * * c * o * 8861 * * r * Content * r * r * 8862 * * d * * o * d * 8863 * * e * * l * e * 8864 * * r ******************** l * r * 8865 * * * Scroll * * 8866 * * ************************** * 8867 * * Border * 8868 * ************************************** 8869 * 8870 */ 8871/** 8872 * Get visible area of element 8873 */ 8874function getVisibleArea(initArea, scrollerList) { 8875 var visibleArea = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, initArea);
8876 (scrollerList || []).forEach(function (ele) { 8877 if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) { 8878 return; 8879 } 8880 8881 // Skip if static position which will not affect visible area 8882 var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele), 8883 overflow = _getWin$getComputedSt2.overflow, 8884 overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin, 8885 borderTopWidth = _getWin$getComputedSt2.borderTopWidth, 8886 borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth, 8887 borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth, 8888 borderRightWidth = _getWin$getComputedSt2.borderRightWidth; 8889 var eleRect = ele.getBoundingClientRect(); 8890 var eleOutHeight = ele.offsetHeight, 8891 eleInnerHeight = ele.clientHeight, 8892 eleOutWidth = ele.offsetWidth, 8893 eleInnerWidth = ele.clientWidth; 8894 var borderTopNum = getPxValue(borderTopWidth); 8895 var borderBottomNum = getPxValue(borderBottomWidth); 8896 var borderLeftNum = getPxValue(borderLeftWidth); 8897 var borderRightNum = getPxValue(borderRightWidth); 8898 var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000); 8899 var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000); 8900 8901 // Original visible area 8902 var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX; 8903 var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY; 8904 8905 // Cut border size 8906 var scaledBorderTopWidth = borderTopNum * scaleY; 8907 var scaledBorderBottomWidth = borderBottomNum * scaleY; 8908 var scaledBorderLeftWidth = borderLeftNum * scaleX; 8909 var scaledBorderRightWidth = borderRightNum * scaleX; 8910 8911 // Clip margin 8912 var clipMarginWidth = 0; 8913 var clipMarginHeight = 0; 8914 if (overflow === 'clip') { 8915 var clipNum = getPxValue(overflowClipMargin); 8916 clipMarginWidth = clipNum * scaleX; 8917 clipMarginHeight = clipNum * scaleY; 8918 } 8919 8920 // Region 8921 var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth; 8922 var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight; 8923 var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth; 8924 var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight; 8925 visibleArea.left = Math.max(visibleArea.left, eleLeft); 8926 visibleArea.top = Math.max(visibleArea.top, eleTop); 8927 visibleArea.right = Math.min(visibleArea.right, eleRight); 8928 visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom); 8929 }); 8930 return visibleArea; 8931} 8932 8933/***/ }), 8934 8935/***/ 62194: 8936/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8937 8938"use strict"; 8939/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8940/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8941/* harmony export */ }); 8942/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8943 "/mine/invoiceNew/providerInvoice": { 8944 "module": { 8945 "show-side-menu": false 8946 } 8947 }, 8948 "/customPackaging": { 8949 "module": { 8950 "show-side-menu": false 8951 } 8952 }, 8953 "/mine/logisticForMyProducts": { 8954 "module": { 8955 "show-side-menu": false 8956 } 8957 }, 8958 "/mine/podInfoTemp": { 8959 "module": { 8960 "show-side-menu": false, 8961 "chat-body": false 8962 } 8963 }, 8964 "/factories": { 8965 "module": { 8966 "header-search-camera": false 8967 } 8968 }, 8969 "/mine/purchase/purchaseList": { 8970 "module": { 8971 "th-incomplete-product": false, 8972 "th-search-form": false, 8973 "th-show-pay-logistic": false, 8974 "th-self-pick-code": false 8975 } 8976 }, 8977 "/mine/invoiceNew/walletInvoice": { 8978 "module": { 8979 "show-side-menu": false 8980 } 8981 }, 8982 "/home": { 8983 "banner-width": "600", 8984 "module": { 8985 "global-selected-products": false 8986 }, 8987 "banner-height": "413" 8988 }, 8989 "/mine/invoiceNew/providerWalletInvoice": { 8990 "module": { 8991 "show-side-menu": false 8992 } 8993 }, 8994 "/bulkPurchase": { 8995 "module": { 8996 "show-side-menu": false 8997 } 8998 }, 8999 "/top-selling": { 9000 "module": { 9001 "show-side-menu": false 9002 } 9003 }, 9004 "/mine/aiAssistant": { 9005 "module": { 9006 "product-card-listnum": false, 9007 "ai-assistant": false, 9008 "chat-body": false 9009 } 9010 }, 9011 "/mabang": { 9012 "module": { 9013 "show-side-menu": false 9014 } 9015 }, 9016 "/loancredit": { 9017 "module": { 9018 "footer-link": false 9019 } 9020 }, 9021 "/partnership/Strat%C3%A9gieEscape": { 9022 "module": { 9023 "chat-body": false 9024 } 9025 }, 9026 "/mine/invoiceNew/orderInvoice": { 9027 "module": { 9028 "show-side-menu": false 9029 } 9030 }, 9031 "/mine/calculation": { 9032 "module": { 9033 "chat-body": false 9034 } 9035 }, 9036 "common": { 9037 "can-subscribe-nums": ["CJ10001", "CJ429035", "CJ393749", "CJ4413202", "CJ4853327", "CJ4222547", "CJ709889"], 9038 "warehouse-operation-video-users": ["CJ10001", "CJ4445350", "CJ4468131", "CJ4461784", "CJ4031737", "CJ2520452", "CJ2591528", "CJ2607137", "CJ1845582"], 9039 "list-allow-add-local-nums": ["CJ4599325", "CJ4832006", "CJ4825286", "CJ591747", "CJ2538590", "CJ4815083"],
9040 "login-data": "zJRR4N29LfElWFRWD2JVBg==", 9041 "intelligence-menu-threshold": 1, 9042 "allow-y2-warehouse-user-ids": ["CJ1452721", "CJ3228909", "CJ4575601", "CJ1416226", "CJ3293232", "CJ4740088", "CJ4740087", "CJ4271494", "CJ529652", "CJ4041322", "CJ3459275", "CJ3422915", "CJ2547649", "CJ4754698", "CJ4757361", "CJ3332447", "CJ4046260", "CJ4413327", "CJ5134478", "CJ4387309", "CJ3223840", "CJ4309565", "CJ5134478", "CJ4341409", "CJ2120214", "CJ5551678", "CJ5572366", "CJ4208773", "CJ4387310", "CJ4594195", "CJ5052390", "CJ5686727", "CJ4064947"], 9043 "kokomo-pod-warehouse-users": ["CJ1452721", "CJ52688", "CJ3332447", "CJ3804316", "CJ3692101", "CJ3601631", "CJ4634746", "CJ2922426", "CJ2284102", "CJ3603937", "CJ3293232", "CJ4208773", "CJ77700", "CJ4597771", "CJ4646939", "CJ4669283", "CJ4856592", "CJ4387309", "CJ4309565", "CJ4064947", "CJ4387310", "CJ4272884", "CJ4594195", "CJ4920978", "CJ3228909", "CJ4740087", "CJ4041322", "CJ5028839", "CJ5035526"], 9044 "share-image": "https://frontend.cjdropshipping.com/config-resource/cj/share1200x900.jpg", 9045 "allowed-api-user-ids": ["CJ4468131", "CJ620569", "CJ10001", "CJ429035", "CJ4224762", "CJ1452721", "CJ4985938", "CJ158602", "CJ56440", "CJ5551755"], 9046 "full-name": "CJdropshipping", 9047 "platform": 2, 9048 "source-spu-user-list": "CJ1167982,CJ2522152,CJ227789", 9049 "has-german-permission-user": "CJ10001,CJ2286027,CJ1452721", 9050 "ai-chat-hash-threshold": 100, 9051 "gbp-users": ["CJ2467479", "CJ10001"], 9052 "shopify-delivery-profiles-user-ids": ["CJ1452721"], 9053 "top-notice-list": [{ 9054 "link": "https://cjec.cjdropshipping.com/belgrade-2026/", 9055 "key": "common-costs-us-tips", 9056 "isShow": true 9057 }, { 9058 "link": "https://cjec.cjdropshipping.com/belgrade-2026/", 9059 "key": "common-header-notice", 9060 "isShow": false 9061 }], 9062 "host": "cjdropshipping.com", 9063 "logo": "https://frontend.cjdropshipping.com/config-resource/cj/new_logo.svg", 9064 "logo-white": "https://frontend.cjdropshipping.com/config-resource/cj/new_logo_white.svg", 9065 "remove-photo-request-users": ["CJ10001", "CJ4222547", "CJ5241151", "CJ5029117", "CJ4856590"], 9066 "ecomvault-nums": ["CJ591747", "CJ10001", "CJ1452721"], 9067 "login-debugger": "1", 9068 "company-name": "Yiwu Cujia Trade Co., Ltd.", 9069 "address": "F2.BUILDING 8,NO.89,SIYUAN ROAD ,YIDONG INDUSTRIAL ZONE,NIANSANLISTREET,YIWU.ZHEJIANG", 9070 "m-host": "https://m.cjdropshipping.com", 9071 "inventory-planner-menu-user": ["CJ4224762", "CJ429035", "CJ10001", "CJ2115343", "CJ4047783", "CJ2962894"], 9072 "warehouse-operation-only-picture-users": ["CJ4869824", "CJ4468131", "CJ4461784"], 9073 "favicon": "https://frontend.cjdropshipping.com/config-resource/cj/favicon.ico", 9074 "logo-height": "40", 9075 "ai-chat-users": ["CJ4215280", "CJ4215333", "CJ5067909", "CJ4569773", "CJ10001", "CJ4208389", "CJ5332187", "CJ955168"], 9076 "module": { 9077 "cj-authorie-login": false, 9078 "old-user-update-notice": false, 9079 "mycj-header-chinese-new-year-notice": false, 9080 "no-quickly-login": false, 9081 "everyone-show-photo-request": false, 9082 "use-old-chat": false 9083 }, 9084 "loading": "loading.json", 9085 "logistics-number-jump-origin-url-users": ["CJ227789", "CJ2520452", "CJ4031737", "CJ4461784", "CJ4468131", "CJ4621927", "CJ2268247", "CJ2520452"], 9086 "footer-host": "CJdropshipping.com", 9087 "third-login": { 9088 "shopify": "https://apps.shopify.com/cucheng?ot=47d4101a-9f66-4b69-8162-7a1001eef2e3&surface_detail=CJ&surface_inter_position=1&surface_intra_position=1&surface_type=search_ad", 9089 "facebook": "2678412275531221", 9090 "google": "708607489636-7ihggmvci7r9b6npeo3j9v4mnb2g23fp.apps.googleusercontent.com" 9091 }, 9092 "support-multiple-warehouses-user-ids": ["CJ4546034", "CJ2284102", "CJ4597771", "CJ4714917"], 9093 "chat-domain": "https://chat.cjdropshipping.com", 9094 "footer-copyright": "æµICPå¤2020040134å·-1", 9095 "site": "CJ", 9096 "academy-home": "https://cjacademy.cjdropshipping.com/", 9097 "my-quotation-users": ["CJ2268247", "CJ227789", "CJ2520452", "CJ4031737", "CJ4461784", "CJ4468131", "CJ4621927", "CJ2520452", "CJ2520452", "CJ4461784", "CJ4031737", "CJ4869824", "CJ4621927", "CJ4067173", "CJ4855400", "CJ4879281"], 9098 "logo-width": "200", 9099 "name": "CJ", 9100 "track-on-cjpacket": "Track on CJPacket", 9101 "intelligence-menu-user": ["CJ4215280", "CJ4215333", "CJ4569773", "CJ5332187", "CJ10001", "CJ4411686", "CJ4950757", "CJ5212190", "CJ4215333", "CJ4215333", "CJ4569773", "CJ5332187", "CJ5172899"], 9102 "qksource-domain": "https://qksource.com" 9103 }, 9104 "/contactus": { 9105 "module": { 9106 "contactus-visitus": false, 9107 "contactus-comoney": false 9108 }, 9109 "company-info": "" 9110 }, 9111 "/medium-production-services": { 9112 "module": { 9113 "show-side-menu": false 9114 } 9115 }, 9116 "/mine/customization": { 9117 "module": { 9118 "odm-guide": false 9119 }, 9120 "odm-guide-users": ["CJ4215280", "CJ10001", "CJ1452721", "CJ5147146"] 9121 }, 9122 "/mine/payment": { 9123 "module": { 9124 "use-new-card-pay": false 9125 } 9126 },
9127 "/mine/pod3detail": { 9128 "module": { 9129 "show-side-menu": false, 9130 "chat-body": false 9131 } 9132 }, 9133 "/aboutus": { 9134 "company-name": "", 9135 "module": { 9136 "aboutus-more": false, 9137 "aboutus-story": false, 9138 "aboutus-email": false 9139 }, 9140 "company-info": "", 9141 "aboutus-email": "[email protected]" 9142 } 9143}); 9144 9145/***/ }), 9146 9147/***/ 62742: 9148/***/ ((module) => { 9149 9150"use strict"; 9151module.exports = __WEBPACK_EXTERNAL_MODULE__62742__; 9152 9153/***/ }), 9154 9155/***/ 62934: 9156/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9157 9158"use strict"; 9159/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9160/* harmony export */ Jv: () => (/* binding */ getAppStoreList), 9161/* harmony export */ vG: () => (/* binding */ getAuthorizeShowList) 9162/* harmony export */ }); 9163/* unused harmony exports getTransWarehouse, getWarehouseTranslate2Session, getWarehouseList, getCountryData, getThCountryData, getQueueCount, addStatisFun, getCategories, getShippingCartNum, getSearchKeys, debounceGetSearchKeys, getRate, getLogisticsEnquiryWeight */ 9164/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 9165/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3478); 9166/* harmony import */ var _common_platform_show__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37597); 9167/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44190); 9168/* harmony import */ var _common_add_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21421); 9169var __assign = undefined && undefined.__assign || function () { 9170 __assign = Object.assign || function (t) { 9171 for (var s, i = 1, n = arguments.length; i < n; i++) { 9172 s = arguments[i]; 9173 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 9174 } 9175 return t; 9176 }; 9177 return __assign.apply(this, arguments); 9178}; 9179var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 9180 function adopt(value) { 9181 return value instanceof P ? value : new P(function (resolve) { 9182 resolve(value); 9183 }); 9184 } 9185 return new (P || (P = Promise))(function (resolve, reject) { 9186 function fulfilled(value) { 9187 try { 9188 step(generator.next(value)); 9189 } catch (e) { 9190 reject(e); 9191 } 9192 } 9193 function rejected(value) { 9194 try { 9195 step(generator["throw"](value)); 9196 } catch (e) { 9197 reject(e); 9198 } 9199 } 9200 function step(result) { 9201 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 9202 } 9203 step((generator = generator.apply(thisArg, _arguments || [])).next()); 9204 }); 9205}; 9206var __generator = undefined && undefined.__generator || function (thisArg, body) { 9207 var _ = { 9208 label: 0, 9209 sent: function sent() { 9210 if (t[0] & 1) throw t[1]; 9211 return t[1]; 9212 }, 9213 trys: [], 9214 ops: [] 9215 }, 9216 f, 9217 y, 9218 t, 9219 g; 9220 return g = { 9221 next: verb(0), 9222 "throw": verb(1), 9223 "return": verb(2) 9224 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 9225 return this; 9226 }), g; 9227 function verb(n) { 9228 return function (v) { 9229 return step([n, v]); 9230 }; 9231 } 9232 function step(op) { 9233 if (f) throw new TypeError("Generator is already executing."); 9234 while (g && (g = 0, op[0] && (_ = 0)), _) try { 9235 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 9236 if (y = 0, t) op = [op[0] & 2, t.value]; 9237 switch (op[0]) { 9238 case 0: 9239 case 1: 9240 t = op; 9241 break; 9242 case 4: 9243 _.label++; 9244 return { 9245 value: op[1], 9246 done: false 9247 }; 9248 case 5: 9249 _.label++; 9250 y = op[1]; 9251 op = [0]; 9252 continue; 9253 case 7: 9254 op = _.ops.pop(); 9255 _.trys.pop(); 9256 continue; 9257 default: 9258 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 9259 _ = 0; 9260 continue; 9261 } 9262 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 9263 _.label = op[1]; 9264 break; 9265 } 9266 if (op[0] === 6 && _.label < t[1]) { 9267 _.label = t[1]; 9268 t = op; 9269 break; 9270 } 9271 if (t && _.label < t[2]) { 9272 _.label = t[2];
9273 _.ops.push(op); 9274 break; 9275 } 9276 if (t[2]) _.ops.pop(); 9277 _.trys.pop(); 9278 continue; 9279 } 9280 op = body.call(thisArg, _); 9281 } catch (e) { 9282 op = [6, e]; 9283 y = 0; 9284 } finally { 9285 f = t = 0; 9286 } 9287 if (op[0] & 5) throw op[1]; 9288 return { 9289 value: op[0] ? op[1] : void 0, 9290 done: true 9291 }; 9292 } 9293}; 9294 9295 9296 9297 9298 9299var getTransWarehouse = function getTransWarehouse($axios, lng) { 9300 return __awaiter(void 0, void 0, void 0, function () { 9301 var warehouses, result; 9302 var _a; 9303 return __generator(this, function (_b) { 9304 switch (_b.label) { 9305 case 0: 9306 if (isBrowser) { 9307 warehouses = sessionStorage.getItem("warehouse_lng_".concat(lng)); 9308 if (warehouses) { 9309 return [2, [null, { 9310 result: JSON.parse(warehouses) 9311 }]]; 9312 } 9313 } 9314 return [4, $axios({ 9315 method: 'post', 9316 url: 'product-api/dbWorldInfo/getWareHouseWorldsByLanguage', 9317 headers: { 9318 language: lng 9319 }, 9320 data: {} 9321 })]; 9322 case 1: 9323 result = _b.sent(); 9324 if (isBrowser && ((_a = result[1]) === null || _a === void 0 ? void 0 : _a.result)) { 9325 sessionStorage.setItem("warehouse_lng_".concat(lng), JSON.stringify(result[1].data)); 9326 } 9327 return [2, result]; 9328 } 9329 }); 9330 }); 9331}; 9332var getWarehouseTranslate2Session = function getWarehouseTranslate2Session($axios) { 9333 return __awaiter(void 0, void 0, void 0, function () { 9334 var languages, _loop_1, i; 9335 return __generator(this, function (_a) { 9336 languages = ['zh', 'en', 'de', 'fr', 'id', 'th']; 9337 _loop_1 = function _loop_1(i) { 9338 var lng = languages[i]; 9339 getTransWarehouse($axios, lng).then(function (_a) { 9340 var err = _a[0], 9341 res = _a[1]; 9342 if (!err) { 9343 if (!isBrowser) { 9344 var result = (res || {}).result || []; 9345 sessionStorage.setItem("warehouse_lng_".concat(lng), JSON.stringify(result)); 9346 } 9347 } 9348 }); 9349 }; 9350 for (i = 0; i < languages.length; i++) { 9351 _loop_1(i); 9352 } 9353 return [2]; 9354 }); 9355 }); 9356}; 9357var getWarehouseList = function getWarehouseList(_a) { 9358 var ctx = _a.ctx,
9359 $axios = _a.$axios, 9360 lng = _a.lng; 9361 return __awaiter(void 0, void 0, void 0, function () { 9362 function addOtherData(list, ctx) { 9363 if (list === void 0) { 9364 list = []; 9365 } 9366 var arr = []; 9367 list.forEach(function (item) { 9368 var _a, _b; 9369 var env = "production" || 0; 9370 var url; 9371 if (env === 'test') { 9372 url = "http://".concat((_a = item === null || item === void 0 ? void 0 : item.countryCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(), ".cjdropshipping.offline.pre.com"); 9373 } else { 9374 url = "https://".concat((_b = item === null || item === void 0 ? void 0 : item.countryCode) === null || _b === void 0 ? void 0 : _b.toLowerCase(), ".cjdropshipping.com"); 9375 } 9376 arr.push({ 9377 name: item[lng] || item['en'], 9378 href: url, 9379 image: ossController.join(createFlag(item.countryCode)), 9380 areaId: item === null || item === void 0 ? void 0 : item.areaId, 9381 areaEn: item['en'], 9382 countryCode: item === null || item === void 0 ? void 0 : item.countryCode, 9383 disabled: item.disabled 9384 }); 9385 }); 9386 return arr; 9387 } 9388 var _b, err, data, _data; 9389 var _c, _d; 9390 return __generator(this, function (_e) { 9391 switch (_e.label) { 9392 case 0: 9393 if ((_c = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _c === void 0 ? void 0 : _c.warehouseList) { 9394 return [2, [null, (_d = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _d === void 0 ? void 0 : _d.warehouseList]]; 9395 } 9396 return [4, $axios({ 9397 method: 'get', 9398 url: ossController.join(createWarehouseJson()) 9399 })]; 9400 case 1: 9401 _b = _e.sent(), err = _b[0], data = _b[1]; 9402 _data = data; 9403 return [2, err ? [err] : [null, addOtherData(_data, ctx)]]; 9404 } 9405 }); 9406 }); 9407}; 9408var getCountryData = function getCountryData($axios) { 9409 return __awaiter(void 0, void 0, void 0, function () { 9410 var _a, res; 9411 return __generator(this, function (_b) { 9412 switch (_b.label) { 9413 case 0: 9414 return [4, $axios({ 9415 method: 'get', 9416 url: ossController.join(countryInfo()) 9417 })]; 9418 case 1: 9419 _a = _b.sent(), res = _a[1]; 9420 if (!res) return [2, []]; 9421 res.symbol = res.symbol.sort(function (a, b) { 9422 return a.currency.charCodeAt(0) - b.currency.charCodeAt(0); 9423 }); 9424 return [2, res !== null && res !== void 0 ? res : {}]; 9425 } 9426 }); 9427 }); 9428}; 9429var getThCountryData = function getThCountryData($axios, code) { 9430 if (code === void 0) { 9431 code = 'th'; 9432 } 9433 return __awaiter(void 0, void 0, void 0, function () { 9434 var _a, res; 9435 return __generator(this, function (_b) { 9436 switch (_b.label) { 9437 case 0: 9438 return [4, $axios({ 9439 method: 'get', 9440 url: ossController.join(createConfigResource(code, 'countryinfo.json')) 9441 })]; 9442 case 1: 9443 _a = _b.sent(), res = _a[1]; 9444 res.countryList = res.countryList.sort(function (a, b) { 9445 return a.NAME_EN.charCodeAt(0) - b.NAME_EN.charCodeAt(0); 9446 }); 9447 return [2, res !== null && res !== void 0 ? res : {}]; 9448 } 9449 }); 9450 }); 9451}; 9452var getQueueCount = function getQueueCount($axios, params) { 9453 if (params === void 0) { 9454 params = {}; 9455 } 9456 return __awaiter(void 0, void 0, void 0, function () { 9457 var _params, _a, err, res, _b, e, d; 9458 return __generator(this, function (_c) { 9459 switch (_c.label) { 9460 case 0: 9461 _params = __assign({ 9462 pageNum: 1, 9463 pageSize: 1000, 9464 shopId: '', 9465 inputStr: '', 9466 status: '0' 9467 }, params); 9468 return [4, $axios({ 9469 method: 'post', 9470 url: 'cj-platform-web/product/listedProduct/queryListProductCount', 9471 data: _params 9472 })]; 9473 case 1: 9474 _a = _c.sent(), err = _a[0], res = _a[1]; 9475 if (err) return [2, 0]; 9476 _b = statusCode200(res), e = _b[0], d = _b[1]; 9477 if (e) return [2, 0]; 9478 return [2, d.totle]; 9479 } 9480 }); 9481 }); 9482}; 9483var addStatisFun = function addStatisFun($axios, type) { 9484 return __awaiter(void 0, void 0, void 0, function () { 9485 var _params; 9486 return __generator(this, function (_a) { 9487 switch (_a.label) { 9488 case 0: 9489 _params = { 9490 entryPage: type 9491 }; 9492 return [4, $axios({ 9493 method: 'post', 9494 url: 'pojo/home/addStatisByType', 9495 data: _params 9496 })]; 9497 case 1: 9498 _a.sent(); 9499 return [2]; 9500 } 9501 }); 9502 }); 9503}; 9504var getCategories = function getCategories(_a) { 9505 var ctx = _a.ctx,
9506 $axios = _a.$axios; 9507 return __awaiter(void 0, void 0, void 0, function () { 9508 function renameCategoriesFields(catearr) { 9509 function func(arr) { 9510 if (!arr || arr.length <= 0 || !(arr instanceof Array)) return []; 9511 return arr.map(function (_) { 9512 var id = _.dspId, 9513 nameEn = _.nameEn, 9514 nameVal = _.nameVal, 9515 _a = _.nextLevel, 9516 children = _a === void 0 ? [] : _a; 9517 var item = { 9518 id: id, 9519 nameEn: nameEn, 9520 nameVal: nameVal, 9521 children: children 9522 }; 9523 if (children && children.length > 0) { 9524 return __assign(__assign({}, item), { 9525 children: func(children) 9526 }); 9527 } 9528 return __assign(__assign({}, item), { 9529 children: [] 9530 }); 9531 }).filter(function (_) { 9532 return _.nameVal; 9533 }); 9534 } 9535 return func(catearr).filter(function (_) { 9536 return _.children.length > 0; 9537 }); 9538 } 9539 var _b, err, res, _c, e, d, da; 9540 var _d, _e; 9541 return __generator(this, function (_f) { 9542 switch (_f.label) { 9543 case 0: 9544 if ((_d = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _d === void 0 ? void 0 : _d.categories) return [2, (_e = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _e === void 0 ? void 0 : _e.categories]; 9545 return [4, $axios({ 9546 method: 'post', 9547 url: 'product-api/baseCategory/getCategoryTree', 9548 headers: { 9549 language: Cookies.get('lng') || 'en' 9550 } 9551 })]; 9552 case 1: 9553 _b = _f.sent(), err = _b[0], res = _b[1]; 9554 if (err || !res) return [2, []]; 9555 _c = statusCode200(res), e = _c[0], d = _c[1]; 9556 if (e) return [2, []]; 9557 da = renameCategoriesFields(d); 9558 return [2, da]; 9559 } 9560 }); 9561 }); 9562}; 9563var getShippingCartNum = function getShippingCartNum($axios) { 9564 return __awaiter(void 0, void 0, void 0, function () { 9565 var _a, err, res, _b, e, d; 9566 return __generator(this, function (_c) { 9567 switch (_c.label) { 9568 case 0: 9569 return [4, $axios({ 9570 method: 'post', 9571 url: 'cjorder-web/directOrder/getCartProductCount', 9572 data: {} 9573 })]; 9574 case 1: 9575 _a = _c.sent(), err = _a[0], res = _a[1]; 9576 if (err) return [2, 0]; 9577 _b = statusCode200(res), e = _b[0], d = _b[1]; 9578 if (e) return [2, 0]; 9579 return [2, d.cartProductCount]; 9580 } 9581 }); 9582 }); 9583}; 9584var getAuthorizeShowList = function getAuthorizeShowList($axios) { 9585 return __awaiter(void 0, void 0, void 0, function () { 9586 var requestPlatformShow, PlatformShowStatus, userPlatformShow, checkPlatformExpire, platformShowStatus, result, _a; 9587 return __generator(this, function (_b) { 9588 switch (_b.label) { 9589 case 0: 9590 requestPlatformShow = function requestPlatformShow() { 9591 return __awaiter(void 0, void 0, void 0, function () { 9592 var _a, err, res, _b, e, d; 9593 return __generator(this, function (_c) { 9594 switch (_c.label) { 9595 case 0: 9596 return [4, $axios({ 9597 method: 'post', 9598 url: 'cj-platform-web/shop/queryPlatformAuthor', 9599 data: { 9600 deviceType: 'PC' 9601 } 9602 })]; 9603 case 1: 9604 _a = _c.sent(), err = _a[0], res = _a[1]; 9605 if (err) return [2, []]; 9606 _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), e = _b[0], d = _b[1]; 9607 if (e) return [2, []]; 9608 return [2, d]; 9609 } 9610 }); 9611 }); 9612 }; 9613 if (!!_common__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 2]; 9614 return [4, requestPlatformShow()]; 9615 case 1: 9616 return [2, _b.sent()]; 9617 case 2: 9618 (function (PlatformShowStatus) { 9619 PlatformShowStatus[PlatformShowStatus["Expire"] = -1] = "Expire"; 9620 PlatformShowStatus[PlatformShowStatus["None"] = 0] = "None"; 9621 PlatformShowStatus[PlatformShowStatus["Valid"] = 1] = "Valid"; 9622 })(PlatformShowStatus || (PlatformShowStatus = {})); 9623 userPlatformShow = new _common_platform_show__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay(); 9624 checkPlatformExpire = function checkPlatformExpire() { 9625 var platformShow = userPlatformShow.get(); 9626 if (platformShow) { 9627 var nowDate = new Date().getTime(); 9628 if (nowDate > platformShow.expire) { 9629 userPlatformShow.del(); 9630 return PlatformShowStatus.Expire; 9631 } 9632 return PlatformShowStatus.Valid; 9633 } 9634 return PlatformShowStatus.None; 9635 }; 9636 platformShowStatus = checkPlatformExpire(); 9637 result = []; 9638 _a = platformShowStatus; 9639 switch (_a) { 9640 case PlatformShowStatus.Valid: 9641 return [3, 3]; 9642 } 9643 return [3, 4]; 9644 case 3: 9645 result = userPlatformShow.get().value; 9646 return [3, 6]; 9647 case 4: 9648 return [4, requestPlatformShow()]; 9649 case 5: 9650 result = _b.sent(); 9651 userPlatformShow.save(result); 9652 return [3, 6]; 9653 case 6: 9654 return [2, result]; 9655 } 9656 }); 9657 }); 9658}; 9659var getSearchKeys = function getSearchKeys($axios, params, callback) { 9660 $axios({ 9661 method: 'get', 9662 url: 'elastic-api/product/v1/searchSuggester', 9663 params: __assign({}, params) 9664 }).then(function (_a) { 9665 var err = _a[0], 9666 res = _a[1]; 9667 if (err) return callback === null || callback === void 0 ? void 0 : callback([]); 9668 var _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), 9669 e = _b[0], 9670 d = _b[1]; 9671 if (e) return callback === null || callback === void 0 ? void 0 : callback([]); 9672 return callback === null || callback === void 0 ? void 0 : callback((d === null || d === void 0 ? void 0 : d.suggesterList) || []); 9673 }); 9674}; 9675var debounceGetSearchKeys = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .debounce */ .sg)(getSearchKeys, 1000); 9676var getRate = function getRate($axios, currencyCode) { 9677 return __awaiter(void 0, void 0, void 0, function () { 9678 var _params, _a, err, res, _b, e, d; 9679 return __generator(this, function (_c) { 9680 switch (_c.label) { 9681 case 0: 9682 if (!currencyCode) return [2, false]; 9683 _params = { 9684 toCurrency: currencyCode 9685 }; 9686 return [4, $axios({ 9687 method: 'post', 9688 url: 'payment-center-web/paySupport/usdRateExchange', 9689 data: _params 9690 })]; 9691 case 1: 9692 _a = _c.sent(), err = _a[0], res = _a[1]; 9693 if (err) return [2, 0]; 9694 _b = statusCode200(res), e = _b[0], d = _b[1]; 9695 if (e) return [2, 0]; 9696 return [2, d]; 9697 } 9698 }); 9699 }); 9700}; 9701var getLogisticsEnquiryWeight = function getLogisticsEnquiryWeight($axios) { 9702 return __awaiter(void 0, void 0, void 0, function () { 9703 var _a, err, res, _b, e, d; 9704 return __generator(this, function (_c) { 9705 switch (_c.label) { 9706 case 0: 9707 return [4, $axios({ 9708 method: 'get', 9709 url: 'cjorder-web/directOrder/getWholesaleOrderLogisticsEnquiryWeight' 9710 })]; 9711 case 1: 9712 _a = _c.sent(), err = _a[0], res = _a[1]; 9713 if (err) return [2, 0]; 9714 _b = statusCode200(res), e = _b[0], d = _b[1]; 9715 if (e) return [2, 0]; 9716 return [2, d]; 9717 } 9718 }); 9719 }); 9720}; 9721var getAppStoreList = function getAppStoreList($axios) { 9722 return __awaiter(void 0, void 0, void 0, function () { 9723 var requestAppStoreList, AppStoreStatus, userAddStore, checkPlatformExpire, platformShowStatus, result, _a, newResult; 9724 var _b; 9725 return __generator(this, function (_c) { 9726 switch (_c.label) { 9727 case 0: 9728 requestAppStoreList = function requestAppStoreList() { 9729 return __awaiter(void 0, void 0, void 0, function () { 9730 var _a, err, res, _b, e, d; 9731 return __generator(this, function (_c) { 9732 switch (_c.label) { 9733 case 0: 9734 return [4, $axios({ 9735 method: 'post', 9736 url: 'userCenterForeignWeb/userApp/list', 9737 data: { 9738 deviceType: 'PC', 9739 affiliateId: js_cookie__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.get('invite-token') 9740 } 9741 })]; 9742 case 1: 9743 _a = _c.sent(), err = _a[0], res = _a[1]; 9744 if (err) return [2, []]; 9745 _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), e = _b[0], d = _b[1]; 9746 if (e) return [2, []]; 9747 return [2, d]; 9748 } 9749 }); 9750 }); 9751 }; 9752 if (!!_common__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 2]; 9753 return [4, requestAppStoreList()]; 9754 case 1: 9755 return [2, _c.sent()]; 9756 case 2: 9757 (function (AppStoreStatus) { 9758 AppStoreStatus[AppStoreStatus["Expire"] = -1] = "Expire"; 9759 AppStoreStatus[AppStoreStatus["None"] = 0] = "None"; 9760 AppStoreStatus[AppStoreStatus["Valid"] = 1] = "Valid"; 9761 })(AppStoreStatus || (AppStoreStatus = {})); 9762 userAddStore = new _common_add_store__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A(); 9763 checkPlatformExpire = function checkPlatformExpire() { 9764 var addStoreList = userAddStore.get(); 9765 if (addStoreList) { 9766 var nowDate = new Date().getTime(); 9767 if (nowDate > addStoreList.expire) { 9768 userAddStore.del(); 9769 return AppStoreStatus.Expire; 9770 }
9771 return AppStoreStatus.Valid; 9772 } 9773 return AppStoreStatus.None; 9774 }; 9775 platformShowStatus = checkPlatformExpire(); 9776 result = []; 9777 _a = platformShowStatus; 9778 switch (_a) { 9779 case AppStoreStatus.Valid: 9780 return [3, 3]; 9781 } 9782 return [3, 4]; 9783 case 3: 9784 result = (_b = userAddStore.get().value) === null || _b === void 0 ? void 0 : _b.platforms; 9785 return [3, 6]; 9786 case 4: 9787 return [4, requestAppStoreList()]; 9788 case 5: 9789 newResult = _c.sent(); 9790 result = (newResult === null || newResult === void 0 ? void 0 : newResult.platforms) || []; 9791 userAddStore.save(newResult); 9792 return [3, 6]; 9793 case 6: 9794 return [2, result]; 9795 } 9796 }); 9797 }); 9798}; 9799 9800/***/ }), 9801 9802/***/ 62945: 9803/***/ ((module) => { 9804 9805/** Used to match a single whitespace character. */ 9806var reWhitespace = /\s/; 9807 9808/** 9809 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace 9810 * character of `string`. 9811 * 9812 * @private 9813 * @param {string} string The string to inspect. 9814 * @returns {number} Returns the index of the last non-whitespace character. 9815 */ 9816function trimmedEndIndex(string) { 9817 var index = string.length; 9818 9819 while (index-- && reWhitespace.test(string.charAt(index))) {} 9820 return index; 9821} 9822 9823module.exports = trimmedEndIndex; 9824 9825 9826/***/ }), 9827 9828/***/ 63301: 9829/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9830 9831"use strict"; 9832/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9833/* harmony export */ A: () => (/* binding */ useIsVP) 9834/* harmony export */ }); 9835function useIsVP(server_siteCheck) { 9836 var _a, _b; 9837 if (typeof window === 'undefined') return server_siteCheck ? ((_a = server_siteCheck === null || server_siteCheck === void 0 ? void 0 : server_siteCheck.isShow) === null || _a === void 0 ? void 0 : _a.call(server_siteCheck, 'global-vp')) === false : false; 9838 return ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.isShow('global-vp')) === false; 9839} 9840 9841/***/ }), 9842 9843/***/ 64948: 9844/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9845 9846"use strict"; 9847/* unused harmony export default */ 9848/* harmony import */ var _useEvent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9449); 9849/* harmony import */ var _useLayoutEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84238); 9850/* harmony import */ var _useState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39348); 9851 9852 9853 9854 9855/** We only think `undefined` is empty */ 9856function hasValue(value) { 9857 return value !== undefined; 9858} 9859 9860/** 9861 * Similar to `useState` but will use props value if provided. 9862 * Note that internal use rc-util `useState` hook. 9863 */ 9864function useMergedState(defaultStateValue, option) { 9865 var _ref = option || {}, 9866 defaultValue = _ref.defaultValue, 9867 value = _ref.value, 9868 onChange = _ref.onChange, 9869 postState = _ref.postState; 9870 9871 // ======================= Init ======================= 9872 var _useState = useState(function () { 9873 if (hasValue(value)) { 9874 return value; 9875 } else if (hasValue(defaultValue)) { 9876 return typeof defaultValue === 'function' ? defaultValue() : defaultValue; 9877 } else { 9878 return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue; 9879 } 9880 }), 9881 _useState2 = _slicedToArray(_useState, 2), 9882 innerValue = _useState2[0], 9883 setInnerValue = _useState2[1]; 9884 var mergedValue = value !== undefined ? value : innerValue; 9885 var postMergedValue = postState ? postState(mergedValue) : mergedValue; 9886 9887 // ====================== Change ====================== 9888 var onChangeFn = useEvent(onChange); 9889 var _useState3 = useState([mergedValue]), 9890 _useState4 = _slicedToArray(_useState3, 2), 9891 prevValue = _useState4[0], 9892 setPrevValue = _useState4[1]; 9893 useLayoutUpdateEffect(function () { 9894 var prev = prevValue[0]; 9895 if (innerValue !== prev) { 9896 onChangeFn(innerValue, prev); 9897 } 9898 }, [prevValue]); 9899 9900 // Sync value back to `undefined` when it from control to un-control 9901 useLayoutUpdateEffect(function () { 9902 if (!hasValue(value)) { 9903 setInnerValue(value); 9904 } 9905 }, [value]); 9906 9907 // ====================== Update ====================== 9908 var triggerChange = useEvent(function (updater, ignoreDestroy) { 9909 setInnerValue(updater, ignoreDestroy); 9910 setPrevValue([mergedValue], ignoreDestroy); 9911 }); 9912 return [postMergedValue, triggerChange]; 9913} 9914 9915/***/ }), 9916 9917/***/ 65555: 9918/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9919 9920"use strict"; 9921/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9922/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 9923/* harmony export */ }); 9924// extracted by mini-css-extract-plugin 9925/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"mycj-menu":"mycj-menu--I_hAQ","collapsed":"collapsed--xY7W9","logo":"logo--inlMI","shadow-logo":"shadow-logo--OfeUT","zs":"zs--RYM0i","collapsed-icon":"collapsed-icon--feyUd","conversation":"conversation--IgRva","messageBox":"messageBox--nBzR2","label":"label--LOgyP","newMessage":"newMessage--kBalp","oldNoticeBox":"oldNoticeBox--XBpH7","oldNoticeBtn":"oldNoticeBtn--D4eGU","oldNoticeIcon":"oldNoticeIcon--YWTck","oldNoticeClose":"oldNoticeClose--NwYlO","oldNoticeCloseIcon":"oldNoticeCloseIcon--JGe0U","collapsedMessageBox":"collapsedMessageBox--DY7Ve","collapsedMessageBoxByNoMenu":"collapsedMessageBoxByNoMenu--errU8","collapsedMessageBoxNoAvatarByNoMenu":"collapsedMessageBoxNoAvatarByNoMenu--YZI6T","collapsedMessageAvatar":"collapsedMessageAvatar--nlpAX","collapsedMessageBottom":"collapsedMessageBottom--Y_MSL","
vendor: 9,198 bytes, lines 9925-10161
9925noAvatar":"noAvatar--cYn0T","collapsedMessageAvatarBgImg":"collapsedMessageAvatarBgImg--cIom5","collapsedMessageAvatarBox":"collapsedMessageAvatarBox--gBZ6L","collapsedMessageContact":"collapsedMessageContact--g2M27","collapsedMessageNotice":"collapsedMessageNotice--zrTNp","collapsedMessageNoticeContent":"collapsedMessageNoticeContent--kFjjB","collapsedMessageNoticeTop":"collapsedMessageNoticeTop--AyNtW","collapsedMessageNoticeTopText":"collapsedMessageNoticeTopText--sm2vA","collapsedMessageNoticeTopIcon":"collapsedMessageNoticeTopIcon--rXo2K","collapsedMessageNoticeBottom":"collapsedMessageNoticeBottom--IG1St","menuNormal":"menuNormal--l4aG5"}); 9926 9927/***/ }), 9928 9929/***/ 65650: 9930/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9931 9932var root = __webpack_require__(78942); 9933 9934/** Built-in value references. */ 9935var Symbol = root.Symbol; 9936 9937module.exports = Symbol; 9938 9939 9940/***/ }), 9941 9942/***/ 65856: 9943/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9944 9945"use strict"; 9946/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9947/* harmony export */ BD: () => (/* binding */ updateCSS), 9948/* harmony export */ m6: () => (/* binding */ removeCSS) 9949/* harmony export */ }); 9950/* unused harmony exports injectCSS, clearContainerCache */ 9951/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 9952/* harmony import */ var _canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 9953/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80129); 9954 9955 9956 9957var APPEND_ORDER = 'data-rc-order'; 9958var APPEND_PRIORITY = 'data-rc-priority'; 9959var MARK_KEY = "rc-util-key"; 9960var containerCache = new Map(); 9961function getMark() { 9962 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 9963 mark = _ref.mark; 9964 if (mark) { 9965 return mark.startsWith('data-') ? mark : "data-".concat(mark); 9966 } 9967 return MARK_KEY; 9968} 9969function getContainer(option) { 9970 if (option.attachTo) { 9971 return option.attachTo; 9972 } 9973 var head = document.querySelector('head'); 9974 return head || document.body; 9975} 9976function getOrder(prepend) { 9977 if (prepend === 'queue') { 9978 return 'prependQueue'; 9979 } 9980 return prepend ? 'prepend' : 'append'; 9981} 9982 9983/** 9984 * Find style which inject by rc-util 9985 */ 9986function findStyles(container) { 9987 return Array.from((containerCache.get(container) || container).children).filter(function (node) { 9988 return node.tagName === 'STYLE'; 9989 }); 9990} 9991function injectCSS(css) { 9992 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 9993 if (!(0,_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)()) { 9994 return null; 9995 } 9996 var csp = option.csp, 9997 prepend = option.prepend, 9998 _option$priority = option.priority, 9999 priority = _option$priority === void 0 ? 0 : _option$priority; 10000 var mergedOrder = getOrder(prepend); 10001 var isPrependQueue = mergedOrder === 'prependQueue'; 10002 var styleNode = document.createElement('style'); 10003 styleNode.setAttribute(APPEND_ORDER, mergedOrder); 10004 if (isPrependQueue && priority) { 10005 styleNode.setAttribute(APPEND_PRIORITY, "".concat(priority)); 10006 } 10007 if (csp !== null && csp !== void 0 && csp.nonce) { 10008 styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce; 10009 } 10010 styleNode.innerHTML = css; 10011 var container = getContainer(option); 10012 var firstChild = container.firstChild; 10013 if (prepend) { 10014 // If is queue `prepend`, it will prepend first style and then append rest style 10015 if (isPrependQueue) { 10016 var existStyle = (option.styles || findStyles(container)).filter(function (node) { 10017 // Ignore style which not injected by rc-util with prepend 10018 if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) { 10019 return false; 10020 } 10021 10022 // Ignore style which priority less then new style 10023 var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0); 10024 return priority >= nodePriority; 10025 }); 10026 if (existStyle.length) { 10027 container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling); 10028 return styleNode; 10029 } 10030 } 10031 10032 // Use `insertBefore` as `prepend` 10033 container.insertBefore(styleNode, firstChild); 10034 } else { 10035 container.appendChild(styleNode); 10036 } 10037 return styleNode; 10038} 10039function findExistNode(key) { 10040 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 10041 var container = getContainer(option); 10042 return (option.styles || findStyles(container)).find(function (node) { 10043 return node.getAttribute(getMark(option)) === key; 10044 }); 10045} 10046function removeCSS(key) { 10047 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 10048 var existNode = findExistNode(key, option); 10049 if (existNode) { 10050 var container = getContainer(option); 10051 container.removeChild(existNode); 10052 } 10053} 10054 10055/** 10056 * qiankun will inject `appendChild` to insert into other 10057 */ 10058function syncRealContainer(container, option) { 10059 var cachedRealContainer = containerCache.get(container); 10060 10061 // Find real container when not cached or cached container removed 10062 if (!cachedRealContainer || !(0,_contains__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(document, cachedRealContainer)) { 10063 var placeholderStyle = injectCSS('', option); 10064 var parentNode = placeholderStyle.parentNode; 10065 containerCache.set(container, parentNode); 10066 container.removeChild(placeholderStyle); 10067 } 10068} 10069 10070/** 10071 * manually clear container cache to avoid global cache in unit testes 10072 */ 10073function clearContainerCache() { 10074 containerCache.clear(); 10075} 10076function updateCSS(css, key) { 10077 var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 10078 var container = getContainer(originOption); 10079 var styles = findStyles(container); 10080 var option = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, originOption), {}, { 10081 styles: styles 10082 }); 10083 10084 // Sync real parent 10085 syncRealContainer(container, option); 10086 var existNode = findExistNode(key, option); 10087 if (existNode) { 10088 var _option$csp, _option$csp2; 10089 if ((_option$csp = option.csp) !== null && _option$csp !== void 0 && _option$csp.nonce && existNode.nonce !== ((_option$csp2 = option.csp) === null || _option$csp2 === void 0 ? void 0 : _option$csp2.nonce)) { 10090 var _option$csp3; 10091 existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce; 10092 } 10093 if (existNode.innerHTML !== css) { 10094 existNode.innerHTML = css; 10095 } 10096 return existNode; 10097 } 10098 var newNode = injectCSS(css, option); 10099 newNode.setAttribute(getMark(option), key); 10100 return newNode; 10101} 10102 10103/***/ }), 10104 10105/***/ 66318: 10106/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10107 10108"use strict"; 10109/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10110/* harmony export */ A: () => (/* binding */ useWatch) 10111/* harmony export */ }); 10112/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75153); 10113/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84238); 10114/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61225); 10115 10116 10117 10118function useWatch(open, target, popup, onAlign, onScroll) { 10119 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(function () { 10120 if (open && target && popup) { 10121 var targetElement = target; 10122 var popupElement = popup; 10123 var targetScrollList = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .collectScroller */ .TK)(targetElement); 10124 var popupScrollList = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .collectScroller */ .TK)(popupElement); 10125 var win = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .getWin */ .D)(popupElement); 10126 var mergedList = new Set([win].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(targetScrollList), (0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(popupScrollList))); 10127 function notifyScroll() { 10128 onAlign(); 10129 onScroll(); 10130 } 10131 mergedList.forEach(function (scroller) { 10132 scroller.addEventListener('scroll', notifyScroll, { 10133 passive: true 10134 }); 10135 }); 10136 win.addEventListener('resize', notifyScroll, { 10137 passive: true 10138 }); 10139 10140 // First time always do align 10141 onAlign(); 10142 return function () { 10143 mergedList.forEach(function (scroller) { 10144 scroller.removeEventListener('scroll', notifyScroll); 10145 win.removeEventListener('resize', notifyScroll); 10146 }); 10147 }; 10148 } 10149 }, [open, target, popup]); 10150} 10151 10152/***/ }), 10153 10154/***/ 67399: 10155/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10156 10157"use strict"; 10158/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10159/* harmony export */ Ay: () => (/* binding */ na) 10160/* harmony export */ }); 10161/* unused harmony exports errorCodes, get, isValid, parse */
vendor: 188,960 bytes, lines 10162-20162
10162function U(e) { 10163 return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; 10164} 10165var C, F; 10166function $() { 10167 if (F) return C; 10168 F = 1; 10169 const e = 2147483647, s = 36, c = 1, o = 26, t = 38, d = 700, z = 72, y = 128, g = "-", H = /^xn--/, N = /[^\0-\x7F]/, R = /[\x2E\u3002\uFF0E\uFF61]/g, P = { 10170 overflow: "Overflow: input needs wider integers to process", 10171 "not-basic": "Illegal input >= 0x80 (not a basic code point)", 10172 "invalid-input": "Invalid input" 10173 }, _ = s - c, h = Math.floor, I = String.fromCharCode; 10174 function v(a) { 10175 throw new RangeError(P[a]); 10176 } 10177 function V(a, i) { 10178 const m = []; 10179 let n = a.length; 10180 for (; n--; ) 10181 m[n] = i(a[n]); 10182 return m; 10183 } 10184 function L(a, i) { 10185 const m = a.split("@"); 10186 let n = ""; 10187 m.length > 1 && (n = m[0] + "@", a = m[1]), a = a.replace(R, "."); 10188 const r = a.split("."), p = V(r, i).join("."); 10189 return n + p; 10190 } 10191 function S(a) { 10192 const i = []; 10193 let m = 0; 10194 const n = a.length; 10195 for (; m < n; ) { 10196 const r = a.charCodeAt(m++); 10197 if (r >= 55296 && r <= 56319 && m < n) { 10198 const p = a.charCodeAt(m++); 10199 (p & 64512) == 56320 ? i.push(((r & 1023) << 10) + (p & 1023) + 65536) : (i.push(r), m--); 10200 } else 10201 i.push(r); 10202 } 10203 return i; 10204 } 10205 const G = (a) => String.fromCodePoint(...a), W = function(a) { 10206 return a >= 48 && a < 58 ? 26 + (a - 48) : a >= 65 && a < 91 ? a - 65 : a >= 97 && a < 123 ? a - 97 : s; 10207 }, D = function(a, i) { 10208 return a + 22 + 75 * (a < 26) - ((i != 0) << 5); 10209 }, T = function(a, i, m) { 10210 let n = 0; 10211 for (a = m ? h(a / d) : a >> 1, a += h(a / i); a > _ * o >> 1; n += s) 10212 a = h(a / _); 10213 return h(n + (_ + 1) * a / (a + t)); 10214 }, E = function(a) { 10215 const i = [], m = a.length; 10216 let n = 0, r = y, p = z, j = a.lastIndexOf(g); 10217 j < 0 && (j = 0); 10218 for (let u = 0; u < j; ++u) 10219 a.charCodeAt(u) >= 128 && v("not-basic"), i.push(a.charCodeAt(u)); 10220 for (let u = j > 0 ? j + 1 : 0; u < m; ) { 10221 const k = n; 10222 for (let l = 1, b = s; ; b += s) { 10223 u >= m && v("invalid-input"); 10224 const w = W(a.charCodeAt(u++)); 10225 w >= s && v("invalid-input"), w > h((e - n) / l) && v("overflow"), n += w * l; 10226 const x = b <= p ? c : b >= p + o ? o : b - p; 10227 if (w < x) 10228 break; 10229 const q = s - x; 10230 l > h(e / q) && v("overflow"), l *= q; 10231 } 10232 const f = i.length + 1; 10233 p = T(n - k, f, k == 0), h(n / f) > e - r && v("overflow"), r += h(n / f), n %= f, i.splice(n++, 0, r); 10234 } 10235 return String.fromCodePoint(...i); 10236 }, B = function(a) { 10237 const i = []; 10238 a = S(a); 10239 const m = a.length; 10240 let n = y, r = 0, p = z; 10241 for (const k of a) 10242 k < 128 && i.push(I(k)); 10243 const j = i.length; 10244 let u = j; 10245 for (j && i.push(g); u < m; ) { 10246 let k = e; 10247 for (const l of a) 10248 l >= n && l < k && (k = l); 10249 const f = u + 1; 10250 k - n > h((e - r) / f) && v("overflow"), r += (k - n) * f, n = k; 10251 for (const l of a) 10252 if (l < n && ++r > e && v("overflow"), l === n) { 10253 let b = r; 10254 for (let w = s; ; w += s) { 10255 const x = w <= p ? c : w >= p + o ? o : w - p; 10256 if (b < x) 10257 break; 10258 const q = b - x, M = s - x; 10259 i.push( 10260 I(D(x + q % M, 0)) 10261 ), b = h(q / M); 10262 } 10263 i.push(I(D(b, 0))), p = T(r, f, u === j), r = 0, ++u; 10264 } 10265 ++r, ++n; 10266 } 10267 return i.join(""); 10268 }; 10269 return C = { 10270 /** 10271 * A string representing the current Punycode.js version number. 10272 * @memberOf punycode 10273 * @type String 10274 */ 10275 version: "2.3.1", 10276 /** 10277 * An object of methods to convert from JavaScript's internal character 10278 * representation (UCS-2) to Unicode code points, and back. 10279 * @see <https://mathiasbynens.be/notes/javascript-encoding> 10280 * @memberOf punycode 10281 * @type Object 10282 */ 10283 ucs2: { 10284 decode: S, 10285 encode: G 10286 }, 10287 decode: E, 10288 encode: B, 10289 toASCII: function(a) { 10290 return L(a, function(i) { 10291 return N.test(i) ? "xn--" + B(i) : i; 10292 }); 10293 }, 10294 toUnicode: function(a) { 10295 return L(a, function(i) { 10296 return H.test(i) ? E(i.slice(4).toLowerCase()) : i; 10297 }); 10298 } 10299 }, C; 10300} 10301var J = $(); 10302const A = /* @__PURE__ */ U(J), K = [ 10303 "ac", 10304 "com.ac", 10305 "edu.ac", 10306 "gov.ac", 10307 "mil.ac", 10308 "net.ac", 10309 "org.ac", 10310 "ad", 10311 "ae", 10312 "ac.ae", 10313 "co.ae", 10314 "gov.ae", 10315 "mil.ae", 10316 "net.ae", 10317 "org.ae", 10318 "sch.ae", 10319 "aero", 10320 "airline.aero", 10321 "airport.aero", 10322 "accident-investigation.aero", 10323 "accident-prevention.aero", 10324 "aerobatic.aero", 10325 "aeroclub.aero", 10326 "aerodrome.aero", 10327 "agents.aero", 10328 "air-surveillance.aero", 10329 "air-traffic-control.aero", 10330 "aircraft.aero", 10331 "airtraffic.aero", 10332 "ambulance.aero", 10333 "association.aero", 10334 "author.aero", 10335 "ballooning.aero", 10336 "broker.aero", 10337 "caa.aero", 10338 "cargo.aero", 10339 "catering.aero", 10340 "certification.aero", 10341 "championship.aero", 10342 "charter.aero", 10343 "civilaviation.aero", 10344 "club.aero", 10345 "conference.aero", 10346 "consultant.aero", 10347 "consulting.aero", 10348 "control.aero", 10349 "council.aero", 10350 "crew.aero", 10351 "design.aero", 10352 "dgca.aero", 10353 "educator.aero", 10354 "emergency.aero", 10355 "engine.aero", 10356 "engineer.aero", 10357 "entertainment.aero", 10358 "equipment.aero", 10359 "exchange.aero", 10360 "express.aero", 10361 "federation.aero", 10362 "flight.aero", 10363 "freight.aero", 10364 "fuel.aero", 10365 "gliding.aero", 10366 "government.aero", 10367 "groundhandling.aero", 10368 "group.aero", 10369 "hanggliding.aero", 10370 "homebuilt.aero", 10371 "insurance.aero", 10372 "journal.aero", 10373 "journalist.aero", 10374 "leasing.aero", 10375 "logistics.aero", 10376 "magazine.aero", 10377 "maintenance.aero", 10378 "marketplace.aero", 10379 "media.aero", 10380 "microlight.aero", 10381 "modelling.aero", 10382 "navigation.aero", 10383 "parachuting.aero", 10384 "paragliding.aero", 10385 "passenger-association.aero", 10386 "pilot.aero", 10387 "press.aero", 10388 "production.aero", 10389 "recreation.aero", 10390 "repbody.aero", 10391 "res.aero", 10392 "research.aero", 10393 "rotorcraft.aero", 10394 "safety.aero", 10395 "scientist.aero", 10396 "services.aero", 10397 "show.aero", 10398 "skydiving.aero", 10399 "software.aero", 10400 "student.aero", 10401 "taxi.aero", 10402 "trader.aero", 10403 "trading.aero", 10404 "trainer.aero", 10405 "union.aero", 10406 "workinggroup.aero", 10407 "works.aero", 10408 "af", 10409 "com.af", 10410 "edu.af", 10411 "gov.af", 10412 "net.af", 10413 "org.af", 10414 "ag", 10415 "co.ag", 10416 "com.ag", 10417 "net.ag", 10418 "nom.ag", 10419 "org.ag", 10420 "ai", 10421 "com.ai", 10422 "net.ai", 10423 "off.ai", 10424 "org.ai", 10425 "al", 10426 "com.al", 10427 "edu.al", 10428 "gov.al", 10429 "mil.al", 10430 "net.al", 10431 "org.al", 10432 "am", 10433 "co.am", 10434 "com.am", 10435 "commune.am", 10436 "net.am", 10437 "org.am", 10438 "ao", 10439 "co.ao", 10440 "ed.ao", 10441 "edu.ao", 10442 "gov.ao", 10443 "gv.ao", 10444 "it.ao", 10445 "og.ao", 10446 "org.ao", 10447 "pb.ao", 10448 "aq", 10449 "ar", 10450 "bet.ar", 10451 "com.ar", 10452 "coop.ar", 10453 "edu.ar", 10454 "gob.ar", 10455 "gov.ar", 10456 "int.ar", 10457 "mil.ar", 10458 "musica.ar", 10459 "mutual.ar", 10460 "net.ar", 10461 "org.ar", 10462 "senasa.ar", 10463 "tur.ar", 10464 "arpa", 10465 "e164.arpa", 10466 "home.arpa", 10467 "in-addr.arpa", 10468 "ip6.arpa", 10469 "iris.arpa", 10470 "uri.arpa", 10471 "urn.arpa", 10472 "as", 10473 "gov.as", 10474 "asia", 10475 "at", 10476 "ac.at", 10477 "sth.ac.at", 10478 "co.at", 10479 "gv.at", 10480 "or.at", 10481 "au", 10482 "asn.au", 10483 "com.au", 10484 "edu.au", 10485 "gov.au", 10486 "id.au", 10487 "net.au", 10488 "org.au", 10489 "conf.au", 10490 "oz.au", 10491 "act.au", 10492 "nsw.au", 10493 "nt.au", 10494 "qld.au", 10495 "sa.au", 10496 "tas.au", 10497 "vic.au", 10498 "wa.au", 10499 "act.edu.au", 10500 "catholic.edu.au", 10501 "nsw.edu.au", 10502 "nt.edu.au", 10503 "qld.edu.au", 10504 "sa.edu.au", 10505 "tas.edu.au", 10506 "vic.edu.au", 10507 "wa.edu.au", 10508 "qld.gov.au", 10509 "sa.gov.au", 10510 "tas.gov.au", 10511 "vic.gov.au", 10512 "wa.gov.au", 10513 "schools.nsw.edu.au", 10514 "aw", 10515 "com.aw", 10516 "ax", 10517 "az", 10518 "biz.az", 10519 "com.az", 10520 "edu.az", 10521 "gov.az", 10522 "info.az", 10523 "int.az", 10524 "mil.az", 10525 "name.az", 10526 "net.az", 10527 "org.az", 10528 "pp.az", 10529 "pro.az", 10530 "ba", 10531 "com.ba", 10532 "edu.ba", 10533 "gov.ba", 10534 "mil.ba", 10535 "net.ba", 10536 "org.ba", 10537 "bb", 10538 "biz.bb", 10539 "co.bb", 10540 "com.bb", 10541 "edu.bb", 10542 "gov.bb", 10543 "info.bb", 10544 "net.bb", 10545 "org.bb", 10546 "store.bb", 10547 "tv.bb", 10548 "*.bd", 10549 "be", 10550 "ac.be", 10551 "bf", 10552 "gov.bf", 10553 "bg", 10554 "0.bg", 10555 "1.bg", 10556 "2.bg", 10557 "3.bg", 10558 "4.bg", 10559 "5.bg", 10560 "6.bg", 10561 "7.bg", 10562 "8.bg", 10563 "9.bg", 10564 "a.bg", 10565 "b.bg", 10566 "c.bg", 10567 "d.bg", 10568 "e.bg", 10569 "f.bg", 10570 "g.bg", 10571 "h.bg", 10572 "i.bg", 10573 "j.bg", 10574 "k.bg", 10575 "l.bg", 10576 "m.bg", 10577 "n.bg", 10578 "o.bg", 10579 "p.bg", 10580 "q.bg", 10581 "r.bg", 10582 "s.bg", 10583 "t.bg", 10584 "u.bg", 10585 "v.bg", 10586 "w.bg", 10587 "x.bg", 10588 "y.bg", 10589 "z.bg", 10590 "bh", 10591 "com.bh", 10592 "edu.bh", 10593 "gov.bh", 10594 "net.bh", 10595 "org.bh", 10596 "bi", 10597 "co.bi", 10598 "com.bi", 10599 "edu.bi", 10600 "or.bi", 10601 "org.bi", 10602 "biz", 10603 "bj", 10604 "africa.bj", 10605 "agro.bj", 10606 "architectes.bj", 10607 "assur.bj", 10608 "avocats.bj", 10609 "co.bj", 10610 "com.bj", 10611 "eco.bj", 10612 "econo.bj", 10613 "edu.bj", 10614 "info.bj", 10615 "loisirs.bj", 10616 "money.bj", 10617 "net.bj", 10618 "org.bj", 10619 "ote.bj", 10620 "restaurant.bj", 10621 "resto.bj", 10622 "tourism.bj", 10623 "univ.bj", 10624 "bm", 10625 "com.bm", 10626 "edu.bm", 10627 "gov.bm", 10628 "net.bm", 10629 "org.bm", 10630 "bn", 10631 "com.bn", 10632 "edu.bn", 10633 "gov.bn", 10634 "net.bn", 10635 "org.bn", 10636 "bo", 10637 "com.bo", 10638 "edu.bo", 10639 "gob.bo", 10640 "int.bo", 10641 "mil.bo", 10642 "net.bo", 10643 "org.bo", 10644 "tv.bo", 10645 "web.bo", 10646 "academia.bo", 10647 "agro.bo", 10648 "arte.bo", 10649 "blog.bo", 10650 "bolivia.bo", 10651 "ciencia.bo", 10652 "cooperativa.bo", 10653 "democracia.bo", 10654 "deporte.bo", 10655 "ecologia.bo", 10656 "economia.bo", 10657 "empresa.bo", 10658 "indigena.bo", 10659 "industria.bo", 10660 "info.bo", 10661 "medicina.bo", 10662 "movimiento.bo", 10663 "musica.bo", 10664 "natural.bo", 10665 "nombre.bo", 10666 "noticias.bo", 10667 "patria.bo", 10668 "plurinacional.bo", 10669 "politica.bo", 10670 "profesional.bo", 10671 "pueblo.bo", 10672 "revista.bo", 10673 "salud.bo", 10674 "tecnologia.bo", 10675 "tksat.bo", 10676 "transporte.bo", 10677 "wiki.bo", 10678 "br", 10679 "9guacu.br", 10680 "abc.br", 10681 "adm.br", 10682 "adv.br", 10683 "agr.br", 10684 "aju.br", 10685 "am.br", 10686 "anani.br", 10687 "aparecida.br", 10688 "app.br", 10689 "arq.br", 10690 "art.br", 10691 "ato.br", 10692 "b.br", 10693 "barueri.br", 10694 "belem.br", 10695 "bet.br", 10696 "bhz.br", 10697 "bib.br", 10698 "bio.br", 10699 "blog.br", 10700 "bmd.br", 10701 "boavista.br", 10702 "bsb.br", 10703 "campinagrande.br", 10704 "campinas.br", 10705 "caxias.br", 10706 "cim.br", 10707 "cng.br", 10708 "cnt.br", 10709 "com.br", 10710 "contagem.br", 10711 "coop.br", 10712 "coz.br", 10713 "cri.br", 10714 "cuiaba.br", 10715 "curitiba.br", 10716 "def.br", 10717 "des.br", 10718 "det.br", 10719 "dev.br", 10720 "ecn.br", 10721 "eco.br", 10722 "edu.br", 10723 "emp.br", 10724 "enf.br", 10725 "eng.br", 10726 "esp.br", 10727 "etc.br", 10728 "eti.br", 10729 "far.br", 10730 "feira.br", 10731 "flog.br", 10732 "floripa.br", 10733 "fm.br", 10734 "fnd.br", 10735 "fortal.br", 10736 "fot.br", 10737 "foz.br", 10738 "fst.br", 10739 "g12.br", 10740 "geo.br", 10741 "ggf.br", 10742 "goiania.br", 10743 "gov.br", 10744 "ac.gov.br", 10745 "al.gov.br", 10746 "am.gov.br", 10747 "ap.gov.br", 10748 "ba.gov.br", 10749 "ce.gov.br", 10750 "df.gov.br", 10751 "es.gov.br", 10752 "go.gov.br", 10753 "ma.gov.br", 10754 "mg.gov.br", 10755 "ms.gov.br", 10756 "mt.gov.br", 10757 "pa.gov.br", 10758 "pb.gov.br", 10759 "pe.gov.br", 10760 "pi.gov.br", 10761 "pr.gov.br", 10762 "rj.gov.br", 10763 "rn.gov.br", 10764 "ro.gov.br", 10765 "rr.gov.br", 10766 "rs.gov.br", 10767 "sc.gov.br", 10768 "se.gov.br", 10769 "sp.gov.br", 10770 "to.gov.br", 10771 "gru.br", 10772 "imb.br", 10773 "ind.br", 10774 "inf.br", 10775 "jab.br", 10776 "jampa.br", 10777 "jdf.br", 10778 "joinville.br", 10779 "jor.br", 10780 "jus.br", 10781 "leg.br", 10782 "leilao.br", 10783 "lel.br", 10784 "log.br", 10785 "londrina.br", 10786 "macapa.br", 10787 "maceio.br", 10788 "manaus.br", 10789 "maringa.br", 10790 "mat.br", 10791 "med.br", 10792 "mil.br", 10793 "morena.br", 10794 "mp.br", 10795 "mus.br", 10796 "natal.br", 10797 "net.br", 10798 "niteroi.br", 10799 "*.nom.br", 10800 "not.br", 10801 "ntr.br", 10802 "odo.br", 10803 "ong.br", 10804 "org.br", 10805 "osasco.br", 10806 "palmas.br", 10807 "poa.br", 10808 "ppg.br", 10809 "pro.br", 10810 "psc.br", 10811 "psi.br", 10812 "pvh.br", 10813 "qsl.br", 10814 "radio.br", 10815 "rec.br", 10816 "recife.br", 10817 "rep.br", 10818 "ribeirao.br", 10819 "rio.br", 10820 "riobranco.br", 10821 "riopreto.br", 10822 "salvador.br", 10823 "sampa.br", 10824 "santamaria.br", 10825 "santoandre.br", 10826 "saobernardo.br", 10827 "saogonca.br", 10828 "seg.br", 10829 "sjc.br", 10830 "slg.br", 10831 "slz.br", 10832 "sorocaba.br", 10833 "srv.br", 10834 "taxi.br", 10835 "tc.br", 10836 "tec.br", 10837 "teo.br", 10838 "the.br", 10839 "tmp.br", 10840 "trd.br", 10841 "tur.br", 10842 "tv.br", 10843 "udi.br", 10844 "vet.br", 10845 "vix.br", 10846 "vlog.br", 10847 "wiki.br", 10848 "zlg.br", 10849 "bs", 10850 "com.bs", 10851 "edu.bs", 10852 "gov.bs", 10853 "net.bs", 10854 "org.bs", 10855 "bt", 10856 "com.bt", 10857 "edu.bt", 10858 "gov.bt", 10859 "net.bt", 10860 "org.bt", 10861 "bv", 10862 "bw", 10863 "co.bw", 10864 "org.bw", 10865 "by", 10866 "gov.by", 10867 "mil.by", 10868 "com.by", 10869 "of.by", 10870 "bz", 10871 "co.bz", 10872 "com.bz", 10873 "edu.bz", 10874 "gov.bz", 10875 "net.bz", 10876 "org.bz", 10877 "ca", 10878 "ab.ca", 10879 "bc.ca", 10880 "mb.ca", 10881 "nb.ca", 10882 "nf.ca", 10883 "nl.ca", 10884 "ns.ca", 10885 "nt.ca", 10886 "nu.ca", 10887 "on.ca", 10888 "pe.ca", 10889 "qc.ca", 10890 "sk.ca", 10891 "yk.ca", 10892 "gc.ca", 10893 "cat", 10894 "cc", 10895 "cd", 10896 "gov.cd", 10897 "cf", 10898 "cg", 10899 "ch", 10900 "ci", 10901 "ac.ci", 10902 "aéroport.ci", 10903 "asso.ci", 10904 "co.ci", 10905 "com.ci", 10906 "ed.ci", 10907 "edu.ci", 10908 "go.ci", 10909 "gouv.ci", 10910 "int.ci", 10911 "net.ci", 10912 "or.ci", 10913 "org.ci", 10914 "*.ck", 10915 "!www.ck", 10916 "cl", 10917 "co.cl", 10918 "gob.cl", 10919 "gov.cl", 10920 "mil.cl", 10921 "cm", 10922 "co.cm", 10923 "com.cm", 10924 "gov.cm", 10925 "net.cm", 10926 "cn", 10927 "ac.cn", 10928 "com.cn", 10929 "edu.cn", 10930 "gov.cn", 10931 "mil.cn", 10932 "net.cn", 10933 "org.cn", 10934 "å ¬å¸.cn", 10935 "網絡.cn", 10936 "ç½ç».cn", 10937 "ah.cn", 10938 "bj.cn", 10939 "cq.cn", 10940 "fj.cn", 10941 "gd.cn", 10942 "gs.cn", 10943 "gx.cn", 10944 "gz.cn", 10945 "ha.cn", 10946 "hb.cn", 10947 "he.cn", 10948 "hi.cn", 10949 "hk.cn", 10950 "hl.cn", 10951 "hn.cn", 10952 "jl.cn", 10953 "js.cn", 10954 "jx.cn", 10955 "ln.cn", 10956 "mo.cn", 10957 "nm.cn", 10958 "nx.cn", 10959 "qh.cn", 10960 "sc.cn", 10961 "sd.cn", 10962 "sh.cn", 10963 "sn.cn", 10964 "sx.cn", 10965 "tj.cn", 10966 "tw.cn", 10967 "xj.cn", 10968 "xz.cn", 10969 "yn.cn", 10970 "zj.cn", 10971 "co", 10972 "com.co", 10973 "edu.co", 10974 "gov.co", 10975 "mil.co", 10976 "net.co", 10977 "nom.co", 10978 "org.co", 10979 "com", 10980 "coop", 10981 "cr", 10982 "ac.cr", 10983 "co.cr", 10984 "ed.cr", 10985 "fi.cr", 10986 "go.cr", 10987 "or.cr", 10988 "sa.cr", 10989 "cu", 10990 "com.cu", 10991 "edu.cu", 10992 "gob.cu", 10993 "inf.cu", 10994 "nat.cu", 10995 "net.cu", 10996 "org.cu", 10997 "cv", 10998 "com.cv", 10999 "edu.cv", 11000 "id.cv", 11001 "int.cv", 11002 "net.cv", 11003 "nome.cv", 11004 "org.cv", 11005 "publ.cv", 11006 "cw", 11007 "com.cw", 11008 "edu.cw", 11009 "net.cw", 11010 "org.cw", 11011 "cx", 11012 "gov.cx", 11013 "cy", 11014 "ac.cy", 11015 "biz.cy", 11016 "com.cy", 11017 "ekloges.cy", 11018 "gov.cy", 11019 "ltd.cy", 11020 "mil.cy", 11021 "net.cy", 11022 "org.cy", 11023 "press.cy", 11024 "pro.cy", 11025 "tm.cy", 11026 "cz", 11027 "de", 11028 "dj", 11029 "dk", 11030 "dm", 11031 "co.dm", 11032 "com.dm", 11033 "edu.dm", 11034 "gov.dm", 11035 "net.dm", 11036 "org.dm", 11037 "do", 11038 "art.do", 11039 "com.do", 11040 "edu.do", 11041 "gob.do", 11042 "gov.do", 11043 "mil.do", 11044 "net.do", 11045 "org.do", 11046 "sld.do", 11047 "web.do", 11048 "dz", 11049 "art.dz", 11050 "asso.dz", 11051 "com.dz", 11052 "edu.dz", 11053 "gov.dz", 11054 "net.dz", 11055 "org.dz", 11056 "pol.dz", 11057 "soc.dz", 11058 "tm.dz", 11059 "ec", 11060 "com.ec", 11061 "edu.ec", 11062 "fin.ec", 11063 "gob.ec", 11064 "gov.ec", 11065 "info.ec", 11066 "k12.ec", 11067 "med.ec", 11068 "mil.ec", 11069 "net.ec", 11070 "org.ec", 11071 "pro.ec", 11072 "edu", 11073 "ee", 11074 "aip.ee", 11075 "com.ee", 11076 "edu.ee", 11077 "fie.ee", 11078 "gov.ee", 11079 "lib.ee", 11080 "med.ee", 11081 "org.ee", 11082 "pri.ee", 11083 "riik.ee", 11084 "eg", 11085 "ac.eg", 11086 "com.eg", 11087 "edu.eg", 11088 "eun.eg", 11089 "gov.eg", 11090 "info.eg", 11091 "me.eg", 11092 "mil.eg", 11093 "name.eg", 11094 "net.eg", 11095 "org.eg", 11096 "sci.eg", 11097 "sport.eg", 11098 "tv.eg", 11099 "*.er", 11100 "es", 11101 "com.es", 11102 "edu.es", 11103 "gob.es", 11104 "nom.es", 11105 "org.es", 11106 "et", 11107 "biz.et", 11108 "com.et", 11109 "edu.et", 11110 "gov.et", 11111 "info.et", 11112 "name.et", 11113 "net.et", 11114 "org.et", 11115 "eu", 11116 "fi", 11117 "aland.fi", 11118 "fj", 11119 "ac.fj", 11120 "biz.fj", 11121 "com.fj", 11122 "gov.fj", 11123 "info.fj", 11124 "mil.fj", 11125 "name.fj", 11126 "net.fj", 11127 "org.fj", 11128 "pro.fj", 11129 "*.fk", 11130 "fm", 11131 "com.fm", 11132 "edu.fm", 11133 "net.fm", 11134 "org.fm", 11135 "fo", 11136 "fr", 11137 "asso.fr", 11138 "com.fr", 11139 "gouv.fr", 11140 "nom.fr", 11141 "prd.fr", 11142 "tm.fr", 11143 "avoues.fr", 11144 "cci.fr", 11145 "greta.fr", 11146 "huissier-justice.fr", 11147 "ga", 11148 "gb", 11149 "gd", 11150 "edu.gd", 11151 "gov.gd", 11152 "ge", 11153 "com.ge", 11154 "edu.ge", 11155 "gov.ge", 11156 "net.ge", 11157 "org.ge", 11158 "pvt.ge", 11159 "school.ge", 11160 "gf", 11161 "gg", 11162 "co.gg", 11163 "net.gg", 11164 "org.gg", 11165 "gh", 11166 "com.gh", 11167 "edu.gh", 11168 "gov.gh", 11169 "mil.gh", 11170 "org.gh", 11171 "gi", 11172 "com.gi", 11173 "edu.gi", 11174 "gov.gi", 11175 "ltd.gi", 11176 "mod.gi", 11177 "org.gi", 11178 "gl", 11179 "co.gl", 11180 "com.gl", 11181 "edu.gl", 11182 "net.gl", 11183 "org.gl", 11184 "gm", 11185 "gn", 11186 "ac.gn", 11187 "com.gn", 11188 "edu.gn", 11189 "gov.gn", 11190 "net.gn", 11191 "org.gn", 11192 "gov", 11193 "gp", 11194 "asso.gp", 11195 "com.gp", 11196 "edu.gp", 11197 "mobi.gp", 11198 "net.gp", 11199 "org.gp", 11200 "gq", 11201 "gr", 11202 "com.gr", 11203 "edu.gr", 11204 "gov.gr", 11205 "net.gr", 11206 "org.gr", 11207 "gs", 11208 "gt", 11209 "com.gt", 11210 "edu.gt", 11211 "gob.gt", 11212 "ind.gt", 11213 "mil.gt", 11214 "net.gt", 11215 "org.gt", 11216 "gu", 11217 "com.gu", 11218 "edu.gu", 11219 "gov.gu", 11220 "guam.gu", 11221 "info.gu", 11222 "net.gu", 11223 "org.gu", 11224 "web.gu", 11225 "gw", 11226 "gy", 11227 "co.gy", 11228 "com.gy", 11229 "edu.gy", 11230 "gov.gy", 11231 "net.gy", 11232 "org.gy", 11233 "hk", 11234 "com.hk", 11235 "edu.hk", 11236 "gov.hk", 11237 "idv.hk", 11238 "net.hk", 11239 "org.hk", 11240 "个人.hk", 11241 "å人.hk", 11242 "å ¬å¸.hk", 11243 "æ¿åº.hk", 11244 "æè².hk", 11245 "æè².hk", 11246 "ç®äºº.hk", 11247 "çµç¹.hk", 11248 "çµç».hk", 11249 "網絡.hk", 11250 "ç¶²ç».hk", 11251 "ç»ç¹.hk", 11252 "ç»ç».hk", 11253 "ç½çµ¡.hk", 11254 "ç½ç».hk", 11255 "hm", 11256 "hn", 11257 "com.hn", 11258 "edu.hn", 11259 "gob.hn", 11260 "mil.hn", 11261 "net.hn", 11262 "org.hn", 11263 "hr", 11264 "com.hr", 11265 "from.hr", 11266 "iz.hr", 11267 "name.hr", 11268 "ht", 11269 "adult.ht", 11270 "art.ht", 11271 "asso.ht", 11272 "com.ht", 11273 "coop.ht", 11274 "edu.ht", 11275 "firm.ht", 11276 "gouv.ht", 11277 "info.ht", 11278 "med.ht", 11279 "net.ht", 11280 "org.ht", 11281 "perso.ht", 11282 "pol.ht", 11283 "pro.ht", 11284 "rel.ht", 11285 "shop.ht", 11286 "hu", 11287 "2000.hu", 11288 "agrar.hu", 11289 "bolt.hu", 11290 "casino.hu", 11291 "city.hu", 11292 "co.hu", 11293 "erotica.hu", 11294 "erotika.hu", 11295 "film.hu", 11296 "forum.hu", 11297 "games.hu", 11298 "hotel.hu", 11299 "info.hu", 11300 "ingatlan.hu", 11301 "jogasz.hu", 11302 "konyvelo.hu", 11303 "lakas.hu", 11304 "media.hu", 11305 "news.hu", 11306 "org.hu", 11307 "priv.hu", 11308 "reklam.hu", 11309 "sex.hu", 11310 "shop.hu", 11311 "sport.hu", 11312 "suli.hu", 11313 "szex.hu", 11314 "tm.hu", 11315 "tozsde.hu", 11316 "utazas.hu", 11317 "video.hu", 11318 "id", 11319 "ac.id", 11320 "biz.id", 11321 "co.id", 11322 "desa.id", 11323 "go.id", 11324 "mil.id", 11325 "my.id", 11326 "net.id", 11327 "or.id", 11328 "ponpes.id", 11329 "sch.id", 11330 "web.id", 11331 "ie", 11332 "gov.ie", 11333 "il", 11334 "ac.il", 11335 "co.il", 11336 "gov.il", 11337 "idf.il", 11338 "k12.il", 11339 "muni.il", 11340 "net.il", 11341 "org.il", 11342 "×שר××", 11343 "××§××××.×שר××", 11344 "×ש××.×שר××", 11345 "צ××.×שר××", 11346 "××ש×.×שר××", 11347 "im", 11348 "ac.im", 11349 "co.im", 11350 "ltd.co.im", 11351 "plc.co.im", 11352 "com.im", 11353 "net.im", 11354 "org.im", 11355 "tt.im", 11356 "tv.im", 11357 "in", 11358 "5g.in", 11359 "6g.in", 11360 "ac.in", 11361 "ai.in", 11362 "am.in", 11363 "bihar.in", 11364 "biz.in", 11365 "business.in", 11366 "ca.in", 11367 "cn.in", 11368 "co.in", 11369 "com.in", 11370 "coop.in", 11371 "cs.in", 11372 "delhi.in", 11373 "dr.in", 11374 "edu.in", 11375 "er.in", 11376 "firm.in", 11377 "gen.in", 11378 "gov.in", 11379 "gujarat.in", 11380 "ind.in", 11381 "info.in", 11382 "int.in", 11383 "internet.in", 11384 "io.in", 11385 "me.in", 11386 "mil.in", 11387 "net.in", 11388 "nic.in", 11389 "org.in", 11390 "pg.in", 11391 "post.in", 11392 "pro.in", 11393 "res.in", 11394 "travel.in", 11395 "tv.in", 11396 "uk.in", 11397 "up.in", 11398 "us.in", 11399 "info", 11400 "int", 11401 "eu.int", 11402 "io", 11403 "co.io", 11404 "com.io", 11405 "edu.io", 11406 "gov.io", 11407 "mil.io", 11408 "net.io", 11409 "nom.io", 11410 "org.io", 11411 "iq", 11412 "com.iq", 11413 "edu.iq", 11414 "gov.iq", 11415 "mil.iq", 11416 "net.iq", 11417 "org.iq", 11418 "ir", 11419 "ac.ir", 11420 "co.ir", 11421 "gov.ir", 11422 "id.ir", 11423 "net.ir", 11424 "org.ir", 11425 "sch.ir", 11426 "Ø§ÛØ±Ø§Ù.ir", 11427 "Ø§ÙØ±Ø§Ù.ir", 11428 "is", 11429 "it", 11430 "edu.it", 11431 "gov.it", 11432 "abr.it", 11433 "abruzzo.it", 11434 "aosta-valley.it", 11435 "aostavalley.it", 11436 "bas.it", 11437 "basilicata.it", 11438 "cal.it", 11439 "calabria.it", 11440 "cam.it", 11441 "campania.it", 11442 "emilia-romagna.it", 11443 "emiliaromagna.it", 11444 "emr.it", 11445 "friuli-v-giulia.it", 11446 "friuli-ve-giulia.it", 11447 "friuli-vegiulia.it", 11448 "friuli-venezia-giulia.it", 11449 "friuli-veneziagiulia.it", 11450 "friuli-vgiulia.it", 11451 "friuliv-giulia.it", 11452 "friulive-giulia.it", 11453 "friulivegiulia.it", 11454 "friulivenezia-giulia.it", 11455 "friuliveneziagiulia.it", 11456 "friulivgiulia.it", 11457 "fvg.it", 11458 "laz.it", 11459 "lazio.it", 11460 "lig.it", 11461 "liguria.it", 11462 "lom.it", 11463 "lombardia.it", 11464 "lombardy.it", 11465 "lucania.it", 11466 "mar.it", 11467 "marche.it", 11468 "mol.it", 11469 "molise.it", 11470 "piedmont.it", 11471 "piemonte.it", 11472 "pmn.it", 11473 "pug.it", 11474 "puglia.it", 11475 "sar.it", 11476 "sardegna.it", 11477 "sardinia.it", 11478 "sic.it", 11479 "sicilia.it", 11480 "sicily.it", 11481 "taa.it", 11482 "tos.it", 11483 "toscana.it", 11484 "trentin-sud-tirol.it", 11485 "trentin-süd-tirol.it", 11486 "trentin-sudtirol.it", 11487 "trentin-südtirol.it", 11488 "trentin-sued-tirol.it", 11489 "trentin-suedtirol.it", 11490 "trentino.it", 11491 "trentino-a-adige.it", 11492 "trentino-aadige.it", 11493 "trentino-alto-adige.it", 11494 "trentino-altoadige.it", 11495 "trentino-s-tirol.it", 11496 "trentino-stirol.it", 11497 "trentino-sud-tirol.it", 11498 "trentino-süd-tirol.it", 11499 "trentino-sudtirol.it", 11500 "trentino-südtirol.it", 11501 "trentino-sued-tirol.it", 11502 "trentino-suedtirol.it", 11503 "trentinoa-adige.it", 11504 "trentinoaadige.it", 11505 "trentinoalto-adige.it", 11506 "trentinoaltoadige.it", 11507 "trentinos-tirol.it", 11508 "trentinostirol.it", 11509 "trentinosud-tirol.it", 11510 "trentinosüd-tirol.it", 11511 "trentinosudtirol.it", 11512 "trentinosüdtirol.it", 11513 "trentinosued-tirol.it", 11514 "trentinosuedtirol.it", 11515 "trentinsud-tirol.it", 11516 "trentinsüd-tirol.it", 11517 "trentinsudtirol.it", 11518 "trentinsüdtirol.it", 11519 "trentinsued-tirol.it", 11520 "trentinsuedtirol.it", 11521 "tuscany.it", 11522 "umb.it", 11523 "umbria.it", 11524 "val-d-aosta.it", 11525 "val-daosta.it", 11526 "vald-aosta.it", 11527 "valdaosta.it", 11528 "valle-aosta.it", 11529 "valle-d-aosta.it", 11530 "valle-daosta.it", 11531 "valleaosta.it", 11532 "valled-aosta.it", 11533 "valledaosta.it", 11534 "vallee-aoste.it", 11535 "vallée-aoste.it", 11536 "vallee-d-aoste.it", 11537 "vallée-d-aoste.it", 11538 "valleeaoste.it", 11539 "valléeaoste.it", 11540 "valleedaoste.it", 11541 "valléedaoste.it", 11542 "vao.it", 11543 "vda.it", 11544 "ven.it", 11545 "veneto.it", 11546 "ag.it", 11547 "agrigento.it", 11548 "al.it", 11549 "alessandria.it", 11550 "alto-adige.it", 11551 "altoadige.it", 11552 "an.it", 11553 "ancona.it", 11554 "andria-barletta-trani.it", 11555 "andria-trani-barletta.it", 11556 "andriabarlettatrani.it", 11557 "andriatranibarletta.it", 11558 "ao.it", 11559 "aosta.it", 11560 "aoste.it", 11561 "ap.it", 11562 "aq.it", 11563 "aquila.it", 11564 "ar.it", 11565 "arezzo.it", 11566 "ascoli-piceno.it", 11567 "ascolipiceno.it", 11568 "asti.it", 11569 "at.it", 11570 "av.it", 11571 "avellino.it", 11572 "ba.it", 11573 "balsan.it", 11574 "balsan-sudtirol.it", 11575 "balsan-südtirol.it", 11576 "balsan-suedtirol.it", 11577 "bari.it", 11578 "barletta-trani-andria.it", 11579 "barlettatraniandria.it", 11580 "belluno.it", 11581 "benevento.it", 11582 "bergamo.it", 11583 "bg.it", 11584 "bi.it", 11585 "biella.it", 11586 "bl.it", 11587 "bn.it", 11588 "bo.it", 11589 "bologna.it", 11590 "bolzano.it", 11591 "bolzano-altoadige.it", 11592 "bozen.it", 11593 "bozen-sudtirol.it", 11594 "bozen-südtirol.it", 11595 "bozen-suedtirol.it", 11596 "br.it", 11597 "brescia.it", 11598 "brindisi.it", 11599 "bs.it", 11600 "bt.it", 11601 "bulsan.it", 11602 "bulsan-sudtirol.it", 11603 "bulsan-südtirol.it", 11604 "bulsan-suedtirol.it", 11605 "bz.it", 11606 "ca.it", 11607 "cagliari.it", 11608 "caltanissetta.it", 11609 "campidano-medio.it", 11610 "campidanomedio.it", 11611 "campobasso.it", 11612 "carbonia-iglesias.it", 11613 "carboniaiglesias.it", 11614 "carrara-massa.it", 11615 "carraramassa.it", 11616 "caserta.it", 11617 "catania.it", 11618 "catanzaro.it", 11619 "cb.it", 11620 "ce.it", 11621 "cesena-forli.it", 11622 "cesena-forlì.it", 11623 "cesenaforli.it", 11624 "cesenaforlì.it", 11625 "ch.it", 11626 "chieti.it", 11627 "ci.it", 11628 "cl.it", 11629 "cn.it", 11630 "co.it", 11631 "como.it", 11632 "cosenza.it", 11633 "cr.it", 11634 "cremona.it", 11635 "crotone.it", 11636 "cs.it", 11637 "ct.it", 11638 "cuneo.it", 11639 "cz.it", 11640 "dell-ogliastra.it", 11641 "dellogliastra.it", 11642 "en.it", 11643 "enna.it", 11644 "fc.it", 11645 "fe.it", 11646 "fermo.it", 11647 "ferrara.it", 11648 "fg.it", 11649 "fi.it", 11650 "firenze.it", 11651 "florence.it", 11652 "fm.it", 11653 "foggia.it", 11654 "forli-cesena.it", 11655 "forlì-cesena.it", 11656 "forlicesena.it", 11657 "forlìcesena.it", 11658 "fr.it", 11659 "frosinone.it", 11660 "ge.it", 11661 "genoa.it", 11662 "genova.it", 11663 "go.it", 11664 "gorizia.it", 11665 "gr.it", 11666 "grosseto.it", 11667 "iglesias-carbonia.it", 11668 "iglesiascarbonia.it", 11669 "im.it", 11670 "imperia.it", 11671 "is.it", 11672 "isernia.it", 11673 "kr.it", 11674 "la-spezia.it", 11675 "laquila.it", 11676 "laspezia.it", 11677 "latina.it", 11678 "lc.it", 11679 "le.it", 11680 "lecce.it", 11681 "lecco.it", 11682 "li.it", 11683 "livorno.it", 11684 "lo.it", 11685 "lodi.it", 11686 "lt.it", 11687 "lu.it", 11688 "lucca.it", 11689 "macerata.it", 11690 "mantova.it", 11691 "massa-carrara.it", 11692 "massacarrara.it", 11693 "matera.it", 11694 "mb.it", 11695 "mc.it", 11696 "me.it", 11697 "medio-campidano.it", 11698 "mediocampidano.it", 11699 "messina.it", 11700 "mi.it", 11701 "milan.it", 11702 "milano.it", 11703 "mn.it", 11704 "mo.it", 11705 "modena.it", 11706 "monza.it", 11707 "monza-brianza.it", 11708 "monza-e-della-brianza.it", 11709 "monzabrianza.it", 11710 "monzaebrianza.it", 11711 "monzaedellabrianza.it", 11712 "ms.it", 11713 "mt.it", 11714 "na.it", 11715 "naples.it", 11716 "napoli.it", 11717 "no.it", 11718 "novara.it", 11719 "nu.it", 11720 "nuoro.it", 11721 "og.it", 11722 "ogliastra.it", 11723 "olbia-tempio.it", 11724 "olbiatempio.it", 11725 "or.it", 11726 "oristano.it", 11727 "ot.it", 11728 "pa.it", 11729 "padova.it", 11730 "padua.it", 11731 "palermo.it", 11732 "parma.it", 11733 "pavia.it", 11734 "pc.it", 11735 "pd.it", 11736 "pe.it", 11737 "perugia.it", 11738 "pesaro-urbino.it", 11739 "pesarourbino.it", 11740 "pescara.it", 11741 "pg.it", 11742 "pi.it", 11743 "piacenza.it", 11744 "pisa.it", 11745 "pistoia.it", 11746 "pn.it", 11747 "po.it", 11748 "pordenone.it", 11749 "potenza.it", 11750 "pr.it", 11751 "prato.it", 11752 "pt.it", 11753 "pu.it", 11754 "pv.it", 11755 "pz.it", 11756 "ra.it", 11757 "ragusa.it", 11758 "ravenna.it", 11759 "rc.it", 11760 "re.it", 11761 "reggio-calabria.it", 11762 "reggio-emilia.it", 11763 "reggiocalabria.it", 11764 "reggioemilia.it", 11765 "rg.it", 11766 "ri.it", 11767 "rieti.it", 11768 "rimini.it", 11769 "rm.it", 11770 "rn.it", 11771 "ro.it", 11772 "roma.it", 11773 "rome.it", 11774 "rovigo.it", 11775 "sa.it", 11776 "salerno.it", 11777 "sassari.it", 11778 "savona.it", 11779 "si.it", 11780 "siena.it", 11781 "siracusa.it", 11782 "so.it", 11783 "sondrio.it", 11784 "sp.it", 11785 "sr.it", 11786 "ss.it", 11787 "südtirol.it", 11788 "suedtirol.it", 11789 "sv.it", 11790 "ta.it", 11791 "taranto.it", 11792 "te.it", 11793 "tempio-olbia.it", 11794 "tempioolbia.it", 11795 "teramo.it", 11796 "terni.it", 11797 "tn.it", 11798 "to.it", 11799 "torino.it", 11800 "tp.it", 11801 "tr.it", 11802 "trani-andria-barletta.it", 11803 "trani-barletta-andria.it", 11804 "traniandriabarletta.it", 11805 "tranibarlettaandria.it", 11806 "trapani.it", 11807 "trento.it", 11808 "treviso.it", 11809 "trieste.it", 11810 "ts.it", 11811 "turin.it", 11812 "tv.it", 11813 "ud.it", 11814 "udine.it", 11815 "urbino-pesaro.it", 11816 "urbinopesaro.it", 11817 "va.it", 11818 "varese.it", 11819 "vb.it", 11820 "vc.it", 11821 "ve.it", 11822 "venezia.it", 11823 "venice.it", 11824 "verbania.it", 11825 "vercelli.it", 11826 "verona.it", 11827 "vi.it", 11828 "vibo-valentia.it", 11829 "vibovalentia.it", 11830 "vicenza.it", 11831 "viterbo.it", 11832 "vr.it", 11833 "vs.it", 11834 "vt.it", 11835 "vv.it", 11836 "je", 11837 "co.je", 11838 "net.je", 11839 "org.je", 11840 "*.jm", 11841 "jo", 11842 "agri.jo", 11843 "ai.jo", 11844 "com.jo", 11845 "edu.jo", 11846 "eng.jo", 11847 "fm.jo", 11848 "gov.jo", 11849 "mil.jo", 11850 "net.jo", 11851 "org.jo", 11852 "per.jo", 11853 "phd.jo", 11854 "sch.jo", 11855 "tv.jo", 11856 "jobs", 11857 "jp", 11858 "ac.jp", 11859 "ad.jp", 11860 "co.jp", 11861 "ed.jp", 11862 "go.jp", 11863 "gr.jp", 11864 "lg.jp", 11865 "ne.jp", 11866 "or.jp", 11867 "aichi.jp", 11868 "akita.jp", 11869 "aomori.jp", 11870 "chiba.jp", 11871 "ehime.jp", 11872 "fukui.jp", 11873 "fukuoka.jp", 11874 "fukushima.jp", 11875 "gifu.jp", 11876 "gunma.jp", 11877 "hiroshima.jp", 11878 "hokkaido.jp", 11879 "hyogo.jp", 11880 "ibaraki.jp", 11881 "ishikawa.jp", 11882 "iwate.jp", 11883 "kagawa.jp", 11884 "kagoshima.jp", 11885 "kanagawa.jp", 11886 "kochi.jp", 11887 "kumamoto.jp", 11888 "kyoto.jp", 11889 "mie.jp", 11890 "miyagi.jp", 11891 "miyazaki.jp", 11892 "nagano.jp", 11893 "nagasaki.jp", 11894 "nara.jp", 11895 "niigata.jp", 11896 "oita.jp", 11897 "okayama.jp", 11898 "okinawa.jp", 11899 "osaka.jp", 11900 "saga.jp", 11901 "saitama.jp", 11902 "shiga.jp", 11903 "shimane.jp", 11904 "shizuoka.jp", 11905 "tochigi.jp", 11906 "tokushima.jp", 11907 "tokyo.jp", 11908 "tottori.jp", 11909 "toyama.jp", 11910 "wakayama.jp", 11911 "yamagata.jp", 11912 "yamaguchi.jp", 11913 "yamanashi.jp", 11914 "ä¸é.jp", 11915 "京é½.jp", 11916 "ä½è³.jp", 11917 "å µåº«.jp", 11918 "åæµ·é.jp", 11919 "åè.jp", 11920 "åæå±±.jp", 11921 "å¼ç.jp", 11922 "大å.jp", 11923 "大éª.jp", 11924 "å¥è¯.jp", 11925 "å®®å.jp", 11926 "å®®å´.jp", 11927 "å¯å±±.jp", 11928 "å±±å£.jp", 11929 "山形.jp", 11930 "山梨.jp", 11931 "å²é.jp", 11932 "岡山.jp", 11933 "岩æ.jp", 11934 "å³¶æ ¹.jp", 11935 "åºå³¶.jp", 11936 "徳島.jp", 11937 "æåª.jp", 11938 "æç¥.jp", 11939 "æ°æ½.jp", 11940 "æ±äº¬.jp", 11941 "æ æ¨.jp", 11942 "æ²ç¸.jp", 11943 "æ»è³.jp", 11944 "çæ¬.jp", 11945 "ç³å·.jp", 11946 "ç¥å¥å·.jp", 11947 "ç¦äº.jp", 11948 "ç¦å²¡.jp", 11949 "ç¦å³¶.jp", 11950 "ç§ç°.jp", 11951 "群馬.jp", 11952 "è¨å.jp", 11953 "é·å´.jp", 11954 "é·é.jp", 11955 "鿣®.jp", 11956 "é岡.jp", 11957 "é¦å·.jp", 11958 "é«ç¥.jp", 11959 "é³¥å.jp", 11960 "鹿å å³¶.jp", 11961 "*.kawasaki.jp", 11962 "!city.kawasaki.jp", 11963 "*.kitakyushu.jp", 11964 "!city.kitakyushu.jp", 11965 "*.kobe.jp", 11966 "!city.kobe.jp", 11967 "*.nagoya.jp", 11968 "!city.nagoya.jp", 11969 "*.sapporo.jp", 11970 "!city.sapporo.jp", 11971 "*.sendai.jp", 11972 "!city.sendai.jp", 11973 "*.yokohama.jp", 11974 "!city.yokohama.jp", 11975 "aisai.aichi.jp", 11976 "ama.aichi.jp", 11977 "anjo.aichi.jp", 11978 "asuke.aichi.jp", 11979 "chiryu.aichi.jp", 11980 "chita.aichi.jp", 11981 "fuso.aichi.jp", 11982 "gamagori.aichi.jp", 11983 "handa.aichi.jp", 11984 "hazu.aichi.jp", 11985 "hekinan.aichi.jp", 11986 "higashiura.aichi.jp", 11987 "ichinomiya.aichi.jp", 11988 "inazawa.aichi.jp", 11989 "inuyama.aichi.jp", 11990 "isshiki.aichi.jp", 11991 "iwakura.aichi.jp", 11992 "kanie.aichi.jp", 11993 "kariya.aichi.jp", 11994 "kasugai.aichi.jp", 11995 "kira.aichi.jp", 11996 "kiyosu.aichi.jp", 11997 "komaki.aichi.jp", 11998 "konan.aichi.jp", 11999 "kota.aichi.jp", 12000 "mihama.aichi.jp", 12001 "miyoshi.aichi.jp", 12002 "nishio.aichi.jp", 12003 "nisshin.aichi.jp", 12004 "obu.aichi.jp", 12005 "oguchi.aichi.jp", 12006 "oharu.aichi.jp", 12007 "okazaki.aichi.jp", 12008 "owariasahi.aichi.jp", 12009 "seto.aichi.jp", 12010 "shikatsu.aichi.jp", 12011 "shinshiro.aichi.jp", 12012 "shitara.aichi.jp", 12013 "tahara.aichi.jp", 12014 "takahama.aichi.jp", 12015 "tobishima.aichi.jp", 12016 "toei.aichi.jp", 12017 "togo.aichi.jp", 12018 "tokai.aichi.jp", 12019 "tokoname.aichi.jp", 12020 "toyoake.aichi.jp", 12021 "toyohashi.aichi.jp", 12022 "toyokawa.aichi.jp", 12023 "toyone.aichi.jp", 12024 "toyota.aichi.jp", 12025 "tsushima.aichi.jp", 12026 "yatomi.aichi.jp", 12027 "akita.akita.jp", 12028 "daisen.akita.jp", 12029 "fujisato.akita.jp", 12030 "gojome.akita.jp", 12031 "hachirogata.akita.jp", 12032 "happou.akita.jp", 12033 "higashinaruse.akita.jp", 12034 "honjo.akita.jp", 12035 "honjyo.akita.jp", 12036 "ikawa.akita.jp", 12037 "kamikoani.akita.jp", 12038 "kamioka.akita.jp", 12039 "katagami.akita.jp", 12040 "kazuno.akita.jp", 12041 "kitaakita.akita.jp", 12042 "kosaka.akita.jp", 12043 "kyowa.akita.jp", 12044 "misato.akita.jp", 12045 "mitane.akita.jp", 12046 "moriyoshi.akita.jp", 12047 "nikaho.akita.jp", 12048 "noshiro.akita.jp", 12049 "odate.akita.jp", 12050 "oga.akita.jp", 12051 "ogata.akita.jp", 12052 "semboku.akita.jp", 12053 "yokote.akita.jp", 12054 "yurihonjo.akita.jp", 12055 "aomori.aomori.jp", 12056 "gonohe.aomori.jp", 12057 "hachinohe.aomori.jp", 12058 "hashikami.aomori.jp", 12059 "hiranai.aomori.jp", 12060 "hirosaki.aomori.jp", 12061 "itayanagi.aomori.jp", 12062 "kuroishi.aomori.jp", 12063 "misawa.aomori.jp", 12064 "mutsu.aomori.jp", 12065 "nakadomari.aomori.jp", 12066 "noheji.aomori.jp", 12067 "oirase.aomori.jp", 12068 "owani.aomori.jp", 12069 "rokunohe.aomori.jp", 12070 "sannohe.aomori.jp", 12071 "shichinohe.aomori.jp", 12072 "shingo.aomori.jp", 12073 "takko.aomori.jp", 12074 "towada.aomori.jp", 12075 "tsugaru.aomori.jp", 12076 "tsuruta.aomori.jp", 12077 "abiko.chiba.jp", 12078 "asahi.chiba.jp", 12079 "chonan.chiba.jp", 12080 "chosei.chiba.jp", 12081 "choshi.chiba.jp", 12082 "chuo.chiba.jp", 12083 "funabashi.chiba.jp", 12084 "futtsu.chiba.jp", 12085 "hanamigawa.chiba.jp", 12086 "ichihara.chiba.jp", 12087 "ichikawa.chiba.jp", 12088 "ichinomiya.chiba.jp", 12089 "inzai.chiba.jp", 12090 "isumi.chiba.jp", 12091 "kamagaya.chiba.jp", 12092 "kamogawa.chiba.jp", 12093 "kashiwa.chiba.jp", 12094 "katori.chiba.jp", 12095 "katsuura.chiba.jp", 12096 "kimitsu.chiba.jp", 12097 "kisarazu.chiba.jp", 12098 "kozaki.chiba.jp", 12099 "kujukuri.chiba.jp", 12100 "kyonan.chiba.jp", 12101 "matsudo.chiba.jp", 12102 "midori.chiba.jp", 12103 "mihama.chiba.jp", 12104 "minamiboso.chiba.jp", 12105 "mobara.chiba.jp", 12106 "mutsuzawa.chiba.jp", 12107 "nagara.chiba.jp", 12108 "nagareyama.chiba.jp", 12109 "narashino.chiba.jp", 12110 "narita.chiba.jp", 12111 "noda.chiba.jp", 12112 "oamishirasato.chiba.jp", 12113 "omigawa.chiba.jp", 12114 "onjuku.chiba.jp", 12115 "otaki.chiba.jp", 12116 "sakae.chiba.jp", 12117 "sakura.chiba.jp", 12118 "shimofusa.chiba.jp", 12119 "shirako.chiba.jp", 12120 "shiroi.chiba.jp", 12121 "shisui.chiba.jp", 12122 "sodegaura.chiba.jp", 12123 "sosa.chiba.jp", 12124 "tako.chiba.jp", 12125 "tateyama.chiba.jp", 12126 "togane.chiba.jp", 12127 "tohnosho.chiba.jp", 12128 "tomisato.chiba.jp", 12129 "urayasu.chiba.jp", 12130 "yachimata.chiba.jp", 12131 "yachiyo.chiba.jp", 12132 "yokaichiba.chiba.jp", 12133 "yokoshibahikari.chiba.jp", 12134 "yotsukaido.chiba.jp", 12135 "ainan.ehime.jp", 12136 "honai.ehime.jp", 12137 "ikata.ehime.jp", 12138 "imabari.ehime.jp", 12139 "iyo.ehime.jp", 12140 "kamijima.ehime.jp", 12141 "kihoku.ehime.jp", 12142 "kumakogen.ehime.jp", 12143 "masaki.ehime.jp", 12144 "matsuno.ehime.jp", 12145 "matsuyama.ehime.jp", 12146 "namikata.ehime.jp", 12147 "niihama.ehime.jp", 12148 "ozu.ehime.jp", 12149 "saijo.ehime.jp", 12150 "seiyo.ehime.jp", 12151 "shikokuchuo.ehime.jp", 12152 "tobe.ehime.jp", 12153 "toon.ehime.jp", 12154 "uchiko.ehime.jp", 12155 "uwajima.ehime.jp", 12156 "yawatahama.ehime.jp", 12157 "echizen.fukui.jp", 12158 "eiheiji.fukui.jp", 12159 "fukui.fukui.jp", 12160 "ikeda.fukui.jp", 12161 "katsuyama.fukui.jp", 12162 "mihama.fukui.jp", 12163 "minamiechizen.fukui.jp", 12164 "obama.fukui.jp", 12165 "ohi.fukui.jp", 12166 "ono.fukui.jp", 12167 "sabae.fukui.jp", 12168 "sakai.fukui.jp", 12169 "takahama.fukui.jp", 12170 "tsuruga.fukui.jp", 12171 "wakasa.fukui.jp", 12172 "ashiya.fukuoka.jp", 12173 "buzen.fukuoka.jp", 12174 "chikugo.fukuoka.jp", 12175 "chikuho.fukuoka.jp", 12176 "chikujo.fukuoka.jp", 12177 "chikushino.fukuoka.jp", 12178 "chikuzen.fukuoka.jp", 12179 "chuo.fukuoka.jp", 12180 "dazaifu.fukuoka.jp", 12181 "fukuchi.fukuoka.jp", 12182 "hakata.fukuoka.jp", 12183 "higashi.fukuoka.jp", 12184 "hirokawa.fukuoka.jp", 12185 "hisayama.fukuoka.jp", 12186 "iizuka.fukuoka.jp", 12187 "inatsuki.fukuoka.jp", 12188 "kaho.fukuoka.jp", 12189 "kasuga.fukuoka.jp", 12190 "kasuya.fukuoka.jp", 12191 "kawara.fukuoka.jp", 12192 "keisen.fukuoka.jp", 12193 "koga.fukuoka.jp", 12194 "kurate.fukuoka.jp", 12195 "kurogi.fukuoka.jp", 12196 "kurume.fukuoka.jp", 12197 "minami.fukuoka.jp", 12198 "miyako.fukuoka.jp", 12199 "miyama.fukuoka.jp", 12200 "miyawaka.fukuoka.jp", 12201 "mizumaki.fukuoka.jp", 12202 "munakata.fukuoka.jp", 12203 "nakagawa.fukuoka.jp", 12204 "nakama.fukuoka.jp", 12205 "nishi.fukuoka.jp", 12206 "nogata.fukuoka.jp", 12207 "ogori.fukuoka.jp", 12208 "okagaki.fukuoka.jp", 12209 "okawa.fukuoka.jp", 12210 "oki.fukuoka.jp", 12211 "omuta.fukuoka.jp", 12212 "onga.fukuoka.jp", 12213 "onojo.fukuoka.jp", 12214 "oto.fukuoka.jp", 12215 "saigawa.fukuoka.jp", 12216 "sasaguri.fukuoka.jp", 12217 "shingu.fukuoka.jp", 12218 "shinyoshitomi.fukuoka.jp", 12219 "shonai.fukuoka.jp", 12220 "soeda.fukuoka.jp", 12221 "sue.fukuoka.jp", 12222 "tachiarai.fukuoka.jp", 12223 "tagawa.fukuoka.jp", 12224 "takata.fukuoka.jp", 12225 "toho.fukuoka.jp", 12226 "toyotsu.fukuoka.jp", 12227 "tsuiki.fukuoka.jp", 12228 "ukiha.fukuoka.jp", 12229 "umi.fukuoka.jp", 12230 "usui.fukuoka.jp", 12231 "yamada.fukuoka.jp", 12232 "yame.fukuoka.jp", 12233 "yanagawa.fukuoka.jp", 12234 "yukuhashi.fukuoka.jp", 12235 "aizubange.fukushima.jp", 12236 "aizumisato.fukushima.jp", 12237 "aizuwakamatsu.fukushima.jp", 12238 "asakawa.fukushima.jp", 12239 "bandai.fukushima.jp", 12240 "date.fukushima.jp", 12241 "fukushima.fukushima.jp", 12242 "furudono.fukushima.jp", 12243 "futaba.fukushima.jp", 12244 "hanawa.fukushima.jp", 12245 "higashi.fukushima.jp", 12246 "hirata.fukushima.jp", 12247 "hirono.fukushima.jp", 12248 "iitate.fukushima.jp", 12249 "inawashiro.fukushima.jp", 12250 "ishikawa.fukushima.jp", 12251 "iwaki.fukushima.jp", 12252 "izumizaki.fukushima.jp", 12253 "kagamiishi.fukushima.jp", 12254 "kaneyama.fukushima.jp", 12255 "kawamata.fukushima.jp", 12256 "kitakata.fukushima.jp", 12257 "kitashiobara.fukushima.jp", 12258 "koori.fukushima.jp", 12259 "koriyama.fukushima.jp", 12260 "kunimi.fukushima.jp", 12261 "miharu.fukushima.jp", 12262 "mishima.fukushima.jp", 12263 "namie.fukushima.jp", 12264 "nango.fukushima.jp", 12265 "nishiaizu.fukushima.jp", 12266 "nishigo.fukushima.jp", 12267 "okuma.fukushima.jp", 12268 "omotego.fukushima.jp", 12269 "ono.fukushima.jp", 12270 "otama.fukushima.jp", 12271 "samegawa.fukushima.jp", 12272 "shimogo.fukushima.jp", 12273 "shirakawa.fukushima.jp", 12274 "showa.fukushima.jp", 12275 "soma.fukushima.jp", 12276 "sukagawa.fukushima.jp", 12277 "taishin.fukushima.jp", 12278 "tamakawa.fukushima.jp", 12279 "tanagura.fukushima.jp", 12280 "tenei.fukushima.jp", 12281 "yabuki.fukushima.jp", 12282 "yamato.fukushima.jp", 12283 "yamatsuri.fukushima.jp", 12284 "yanaizu.fukushima.jp", 12285 "yugawa.fukushima.jp", 12286 "anpachi.gifu.jp", 12287 "ena.gifu.jp", 12288 "gifu.gifu.jp", 12289 "ginan.gifu.jp", 12290 "godo.gifu.jp", 12291 "gujo.gifu.jp", 12292 "hashima.gifu.jp", 12293 "hichiso.gifu.jp", 12294 "hida.gifu.jp", 12295 "higashishirakawa.gifu.jp", 12296 "ibigawa.gifu.jp", 12297 "ikeda.gifu.jp", 12298 "kakamigahara.gifu.jp", 12299 "kani.gifu.jp", 12300 "kasahara.gifu.jp", 12301 "kasamatsu.gifu.jp", 12302 "kawaue.gifu.jp", 12303 "kitagata.gifu.jp", 12304 "mino.gifu.jp", 12305 "minokamo.gifu.jp", 12306 "mitake.gifu.jp", 12307 "mizunami.gifu.jp", 12308 "motosu.gifu.jp", 12309 "nakatsugawa.gifu.jp", 12310 "ogaki.gifu.jp", 12311 "sakahogi.gifu.jp", 12312 "seki.gifu.jp", 12313 "sekigahara.gifu.jp", 12314 "shirakawa.gifu.jp", 12315 "tajimi.gifu.jp", 12316 "takayama.gifu.jp", 12317 "tarui.gifu.jp", 12318 "toki.gifu.jp", 12319 "tomika.gifu.jp", 12320 "wanouchi.gifu.jp", 12321 "yamagata.gifu.jp", 12322 "yaotsu.gifu.jp", 12323 "yoro.gifu.jp", 12324 "annaka.gunma.jp", 12325 "chiyoda.gunma.jp", 12326 "fujioka.gunma.jp", 12327 "higashiagatsuma.gunma.jp", 12328 "isesaki.gunma.jp", 12329 "itakura.gunma.jp", 12330 "kanna.gunma.jp", 12331 "kanra.gunma.jp", 12332 "katashina.gunma.jp", 12333 "kawaba.gunma.jp", 12334 "kiryu.gunma.jp", 12335 "kusatsu.gunma.jp", 12336 "maebashi.gunma.jp", 12337 "meiwa.gunma.jp", 12338 "midori.gunma.jp", 12339 "minakami.gunma.jp", 12340 "naganohara.gunma.jp", 12341 "nakanojo.gunma.jp", 12342 "nanmoku.gunma.jp", 12343 "numata.gunma.jp", 12344 "oizumi.gunma.jp", 12345 "ora.gunma.jp", 12346 "ota.gunma.jp", 12347 "shibukawa.gunma.jp", 12348 "shimonita.gunma.jp", 12349 "shinto.gunma.jp", 12350 "showa.gunma.jp", 12351 "takasaki.gunma.jp", 12352 "takayama.gunma.jp", 12353 "tamamura.gunma.jp", 12354 "tatebayashi.gunma.jp", 12355 "tomioka.gunma.jp", 12356 "tsukiyono.gunma.jp", 12357 "tsumagoi.gunma.jp", 12358 "ueno.gunma.jp", 12359 "yoshioka.gunma.jp", 12360 "asaminami.hiroshima.jp", 12361 "daiwa.hiroshima.jp", 12362 "etajima.hiroshima.jp", 12363 "fuchu.hiroshima.jp", 12364 "fukuyama.hiroshima.jp", 12365 "hatsukaichi.hiroshima.jp", 12366 "higashihiroshima.hiroshima.jp", 12367 "hongo.hiroshima.jp", 12368 "jinsekikogen.hiroshima.jp", 12369 "kaita.hiroshima.jp", 12370 "kui.hiroshima.jp", 12371 "kumano.hiroshima.jp", 12372 "kure.hiroshima.jp", 12373 "mihara.hiroshima.jp", 12374 "miyoshi.hiroshima.jp", 12375 "naka.hiroshima.jp", 12376 "onomichi.hiroshima.jp", 12377 "osakikamijima.hiroshima.jp", 12378 "otake.hiroshima.jp", 12379 "saka.hiroshima.jp", 12380 "sera.hiroshima.jp", 12381 "seranishi.hiroshima.jp", 12382 "shinichi.hiroshima.jp", 12383 "shobara.hiroshima.jp", 12384 "takehara.hiroshima.jp", 12385 "abashiri.hokkaido.jp", 12386 "abira.hokkaido.jp", 12387 "aibetsu.hokkaido.jp", 12388 "akabira.hokkaido.jp", 12389 "akkeshi.hokkaido.jp", 12390 "asahikawa.hokkaido.jp", 12391 "ashibetsu.hokkaido.jp", 12392 "ashoro.hokkaido.jp", 12393 "assabu.hokkaido.jp", 12394 "atsuma.hokkaido.jp", 12395 "bibai.hokkaido.jp", 12396 "biei.hokkaido.jp", 12397 "bifuka.hokkaido.jp", 12398 "bihoro.hokkaido.jp", 12399 "biratori.hokkaido.jp", 12400 "chippubetsu.hokkaido.jp", 12401 "chitose.hokkaido.jp", 12402 "date.hokkaido.jp", 12403 "ebetsu.hokkaido.jp", 12404 "embetsu.hokkaido.jp", 12405 "eniwa.hokkaido.jp", 12406 "erimo.hokkaido.jp", 12407 "esan.hokkaido.jp", 12408 "esashi.hokkaido.jp", 12409 "fukagawa.hokkaido.jp", 12410 "fukushima.hokkaido.jp", 12411 "furano.hokkaido.jp", 12412 "furubira.hokkaido.jp", 12413 "haboro.hokkaido.jp", 12414 "hakodate.hokkaido.jp", 12415 "hamatonbetsu.hokkaido.jp", 12416 "hidaka.hokkaido.jp", 12417 "higashikagura.hokkaido.jp", 12418 "higashikawa.hokkaido.jp", 12419 "hiroo.hokkaido.jp", 12420 "hokuryu.hokkaido.jp", 12421 "hokuto.hokkaido.jp", 12422 "honbetsu.hokkaido.jp", 12423 "horokanai.hokkaido.jp", 12424 "horonobe.hokkaido.jp", 12425 "ikeda.hokkaido.jp", 12426 "imakane.hokkaido.jp", 12427 "ishikari.hokkaido.jp", 12428 "iwamizawa.hokkaido.jp", 12429 "iwanai.hokkaido.jp", 12430 "kamifurano.hokkaido.jp", 12431 "kamikawa.hokkaido.jp", 12432 "kamishihoro.hokkaido.jp", 12433 "kamisunagawa.hokkaido.jp", 12434 "kamoenai.hokkaido.jp", 12435 "kayabe.hokkaido.jp", 12436 "kembuchi.hokkaido.jp", 12437 "kikonai.hokkaido.jp", 12438 "kimobetsu.hokkaido.jp", 12439 "kitahiroshima.hokkaido.jp", 12440 "kitami.hokkaido.jp", 12441 "kiyosato.hokkaido.jp", 12442 "koshimizu.hokkaido.jp", 12443 "kunneppu.hokkaido.jp", 12444 "kuriyama.hokkaido.jp", 12445 "kuromatsunai.hokkaido.jp", 12446 "kushiro.hokkaido.jp", 12447 "kutchan.hokkaido.jp", 12448 "kyowa.hokkaido.jp", 12449 "mashike.hokkaido.jp", 12450 "matsumae.hokkaido.jp", 12451 "mikasa.hokkaido.jp", 12452 "minamifurano.hokkaido.jp", 12453 "mombetsu.hokkaido.jp", 12454 "moseushi.hokkaido.jp", 12455 "mukawa.hokkaido.jp", 12456 "muroran.hokkaido.jp", 12457 "naie.hokkaido.jp", 12458 "nakagawa.hokkaido.jp", 12459 "nakasatsunai.hokkaido.jp", 12460 "nakatombetsu.hokkaido.jp", 12461 "nanae.hokkaido.jp", 12462 "nanporo.hokkaido.jp", 12463 "nayoro.hokkaido.jp", 12464 "nemuro.hokkaido.jp", 12465 "niikappu.hokkaido.jp", 12466 "niki.hokkaido.jp", 12467 "nishiokoppe.hokkaido.jp", 12468 "noboribetsu.hokkaido.jp", 12469 "numata.hokkaido.jp", 12470 "obihiro.hokkaido.jp", 12471 "obira.hokkaido.jp", 12472 "oketo.hokkaido.jp", 12473 "okoppe.hokkaido.jp", 12474 "otaru.hokkaido.jp", 12475 "otobe.hokkaido.jp", 12476 "otofuke.hokkaido.jp", 12477 "otoineppu.hokkaido.jp", 12478 "oumu.hokkaido.jp", 12479 "ozora.hokkaido.jp", 12480 "pippu.hokkaido.jp", 12481 "rankoshi.hokkaido.jp", 12482 "rebun.hokkaido.jp", 12483 "rikubetsu.hokkaido.jp", 12484 "rishiri.hokkaido.jp", 12485 "rishirifuji.hokkaido.jp", 12486 "saroma.hokkaido.jp", 12487 "sarufutsu.hokkaido.jp", 12488 "shakotan.hokkaido.jp", 12489 "shari.hokkaido.jp", 12490 "shibecha.hokkaido.jp", 12491 "shibetsu.hokkaido.jp", 12492 "shikabe.hokkaido.jp", 12493 "shikaoi.hokkaido.jp", 12494 "shimamaki.hokkaido.jp", 12495 "shimizu.hokkaido.jp", 12496 "shimokawa.hokkaido.jp", 12497 "shinshinotsu.hokkaido.jp", 12498 "shintoku.hokkaido.jp", 12499 "shiranuka.hokkaido.jp", 12500 "shiraoi.hokkaido.jp", 12501 "shiriuchi.hokkaido.jp", 12502 "sobetsu.hokkaido.jp", 12503 "sunagawa.hokkaido.jp", 12504 "taiki.hokkaido.jp", 12505 "takasu.hokkaido.jp", 12506 "takikawa.hokkaido.jp", 12507 "takinoue.hokkaido.jp", 12508 "teshikaga.hokkaido.jp", 12509 "tobetsu.hokkaido.jp", 12510 "tohma.hokkaido.jp", 12511 "tomakomai.hokkaido.jp", 12512 "tomari.hokkaido.jp", 12513 "toya.hokkaido.jp", 12514 "toyako.hokkaido.jp", 12515 "toyotomi.hokkaido.jp", 12516 "toyoura.hokkaido.jp", 12517 "tsubetsu.hokkaido.jp", 12518 "tsukigata.hokkaido.jp", 12519 "urakawa.hokkaido.jp", 12520 "urausu.hokkaido.jp", 12521 "uryu.hokkaido.jp", 12522 "utashinai.hokkaido.jp", 12523 "wakkanai.hokkaido.jp", 12524 "wassamu.hokkaido.jp", 12525 "yakumo.hokkaido.jp", 12526 "yoichi.hokkaido.jp", 12527 "aioi.hyogo.jp", 12528 "akashi.hyogo.jp", 12529 "ako.hyogo.jp", 12530 "amagasaki.hyogo.jp", 12531 "aogaki.hyogo.jp", 12532 "asago.hyogo.jp", 12533 "ashiya.hyogo.jp", 12534 "awaji.hyogo.jp", 12535 "fukusaki.hyogo.jp", 12536 "goshiki.hyogo.jp", 12537 "harima.hyogo.jp", 12538 "himeji.hyogo.jp", 12539 "ichikawa.hyogo.jp", 12540 "inagawa.hyogo.jp", 12541 "itami.hyogo.jp", 12542 "kakogawa.hyogo.jp", 12543 "kamigori.hyogo.jp", 12544 "kamikawa.hyogo.jp", 12545 "kasai.hyogo.jp", 12546 "kasuga.hyogo.jp", 12547 "kawanishi.hyogo.jp", 12548 "miki.hyogo.jp", 12549 "minamiawaji.hyogo.jp", 12550 "nishinomiya.hyogo.jp", 12551 "nishiwaki.hyogo.jp", 12552 "ono.hyogo.jp", 12553 "sanda.hyogo.jp", 12554 "sannan.hyogo.jp", 12555 "sasayama.hyogo.jp", 12556 "sayo.hyogo.jp", 12557 "shingu.hyogo.jp", 12558 "shinonsen.hyogo.jp", 12559 "shiso.hyogo.jp", 12560 "sumoto.hyogo.jp", 12561 "taishi.hyogo.jp", 12562 "taka.hyogo.jp", 12563 "takarazuka.hyogo.jp", 12564 "takasago.hyogo.jp", 12565 "takino.hyogo.jp", 12566 "tamba.hyogo.jp", 12567 "tatsuno.hyogo.jp", 12568 "toyooka.hyogo.jp", 12569 "yabu.hyogo.jp", 12570 "yashiro.hyogo.jp", 12571 "yoka.hyogo.jp", 12572 "yokawa.hyogo.jp", 12573 "ami.ibaraki.jp", 12574 "asahi.ibaraki.jp", 12575 "bando.ibaraki.jp", 12576 "chikusei.ibaraki.jp", 12577 "daigo.ibaraki.jp", 12578 "fujishiro.ibaraki.jp", 12579 "hitachi.ibaraki.jp", 12580 "hitachinaka.ibaraki.jp", 12581 "hitachiomiya.ibaraki.jp", 12582 "hitachiota.ibaraki.jp", 12583 "ibaraki.ibaraki.jp", 12584 "ina.ibaraki.jp", 12585 "inashiki.ibaraki.jp", 12586 "itako.ibaraki.jp", 12587 "iwama.ibaraki.jp", 12588 "joso.ibaraki.jp", 12589 "kamisu.ibaraki.jp", 12590 "kasama.ibaraki.jp", 12591 "kashima.ibaraki.jp", 12592 "kasumigaura.ibaraki.jp", 12593 "koga.ibaraki.jp", 12594 "miho.ibaraki.jp", 12595 "mito.ibaraki.jp", 12596 "moriya.ibaraki.jp", 12597 "naka.ibaraki.jp", 12598 "namegata.ibaraki.jp", 12599 "oarai.ibaraki.jp", 12600 "ogawa.ibaraki.jp", 12601 "omitama.ibaraki.jp", 12602 "ryugasaki.ibaraki.jp", 12603 "sakai.ibaraki.jp", 12604 "sakuragawa.ibaraki.jp", 12605 "shimodate.ibaraki.jp", 12606 "shimotsuma.ibaraki.jp", 12607 "shirosato.ibaraki.jp", 12608 "sowa.ibaraki.jp", 12609 "suifu.ibaraki.jp", 12610 "takahagi.ibaraki.jp", 12611 "tamatsukuri.ibaraki.jp", 12612 "tokai.ibaraki.jp", 12613 "tomobe.ibaraki.jp", 12614 "tone.ibaraki.jp", 12615 "toride.ibaraki.jp", 12616 "tsuchiura.ibaraki.jp", 12617 "tsukuba.ibaraki.jp", 12618 "uchihara.ibaraki.jp", 12619 "ushiku.ibaraki.jp", 12620 "yachiyo.ibaraki.jp", 12621 "yamagata.ibaraki.jp", 12622 "yawara.ibaraki.jp", 12623 "yuki.ibaraki.jp", 12624 "anamizu.ishikawa.jp", 12625 "hakui.ishikawa.jp", 12626 "hakusan.ishikawa.jp", 12627 "kaga.ishikawa.jp", 12628 "kahoku.ishikawa.jp", 12629 "kanazawa.ishikawa.jp", 12630 "kawakita.ishikawa.jp", 12631 "komatsu.ishikawa.jp", 12632 "nakanoto.ishikawa.jp", 12633 "nanao.ishikawa.jp", 12634 "nomi.ishikawa.jp", 12635 "nonoichi.ishikawa.jp", 12636 "noto.ishikawa.jp", 12637 "shika.ishikawa.jp", 12638 "suzu.ishikawa.jp", 12639 "tsubata.ishikawa.jp", 12640 "tsurugi.ishikawa.jp", 12641 "uchinada.ishikawa.jp", 12642 "wajima.ishikawa.jp", 12643 "fudai.iwate.jp", 12644 "fujisawa.iwate.jp", 12645 "hanamaki.iwate.jp", 12646 "hiraizumi.iwate.jp", 12647 "hirono.iwate.jp", 12648 "ichinohe.iwate.jp", 12649 "ichinoseki.iwate.jp", 12650 "iwaizumi.iwate.jp", 12651 "iwate.iwate.jp", 12652 "joboji.iwate.jp", 12653 "kamaishi.iwate.jp", 12654 "kanegasaki.iwate.jp", 12655 "karumai.iwate.jp", 12656 "kawai.iwate.jp", 12657 "kitakami.iwate.jp", 12658 "kuji.iwate.jp", 12659 "kunohe.iwate.jp", 12660 "kuzumaki.iwate.jp", 12661 "miyako.iwate.jp", 12662 "mizusawa.iwate.jp", 12663 "morioka.iwate.jp", 12664 "ninohe.iwate.jp", 12665 "noda.iwate.jp", 12666 "ofunato.iwate.jp", 12667 "oshu.iwate.jp", 12668 "otsuchi.iwate.jp", 12669 "rikuzentakata.iwate.jp", 12670 "shiwa.iwate.jp", 12671 "shizukuishi.iwate.jp", 12672 "sumita.iwate.jp", 12673 "tanohata.iwate.jp", 12674 "tono.iwate.jp", 12675 "yahaba.iwate.jp", 12676 "yamada.iwate.jp", 12677 "ayagawa.kagawa.jp", 12678 "higashikagawa.kagawa.jp", 12679 "kanonji.kagawa.jp", 12680 "kotohira.kagawa.jp", 12681 "manno.kagawa.jp", 12682 "marugame.kagawa.jp", 12683 "mitoyo.kagawa.jp", 12684 "naoshima.kagawa.jp", 12685 "sanuki.kagawa.jp", 12686 "tadotsu.kagawa.jp", 12687 "takamatsu.kagawa.jp", 12688 "tonosho.kagawa.jp", 12689 "uchinomi.kagawa.jp", 12690 "utazu.kagawa.jp", 12691 "zentsuji.kagawa.jp", 12692 "akune.kagoshima.jp", 12693 "amami.kagoshima.jp", 12694 "hioki.kagoshima.jp", 12695 "isa.kagoshima.jp", 12696 "isen.kagoshima.jp", 12697 "izumi.kagoshima.jp", 12698 "kagoshima.kagoshima.jp", 12699 "kanoya.kagoshima.jp", 12700 "kawanabe.kagoshima.jp", 12701 "kinko.kagoshima.jp", 12702 "kouyama.kagoshima.jp", 12703 "makurazaki.kagoshima.jp", 12704 "matsumoto.kagoshima.jp", 12705 "minamitane.kagoshima.jp", 12706 "nakatane.kagoshima.jp", 12707 "nishinoomote.kagoshima.jp", 12708 "satsumasendai.kagoshima.jp", 12709 "soo.kagoshima.jp", 12710 "tarumizu.kagoshima.jp", 12711 "yusui.kagoshima.jp", 12712 "aikawa.kanagawa.jp", 12713 "atsugi.kanagawa.jp", 12714 "ayase.kanagawa.jp", 12715 "chigasaki.kanagawa.jp", 12716 "ebina.kanagawa.jp", 12717 "fujisawa.kanagawa.jp", 12718 "hadano.kanagawa.jp", 12719 "hakone.kanagawa.jp", 12720 "hiratsuka.kanagawa.jp", 12721 "isehara.kanagawa.jp", 12722 "kaisei.kanagawa.jp", 12723 "kamakura.kanagawa.jp", 12724 "kiyokawa.kanagawa.jp", 12725 "matsuda.kanagawa.jp", 12726 "minamiashigara.kanagawa.jp", 12727 "miura.kanagawa.jp", 12728 "nakai.kanagawa.jp", 12729 "ninomiya.kanagawa.jp", 12730 "odawara.kanagawa.jp", 12731 "oi.kanagawa.jp", 12732 "oiso.kanagawa.jp", 12733 "sagamihara.kanagawa.jp", 12734 "samukawa.kanagawa.jp", 12735 "tsukui.kanagawa.jp", 12736 "yamakita.kanagawa.jp", 12737 "yamato.kanagawa.jp", 12738 "yokosuka.kanagawa.jp", 12739 "yugawara.kanagawa.jp", 12740 "zama.kanagawa.jp", 12741 "zushi.kanagawa.jp", 12742 "aki.kochi.jp", 12743 "geisei.kochi.jp", 12744 "hidaka.kochi.jp", 12745 "higashitsuno.kochi.jp", 12746 "ino.kochi.jp", 12747 "kagami.kochi.jp", 12748 "kami.kochi.jp", 12749 "kitagawa.kochi.jp", 12750 "kochi.kochi.jp", 12751 "mihara.kochi.jp", 12752 "motoyama.kochi.jp", 12753 "muroto.kochi.jp", 12754 "nahari.kochi.jp", 12755 "nakamura.kochi.jp", 12756 "nankoku.kochi.jp", 12757 "nishitosa.kochi.jp", 12758 "niyodogawa.kochi.jp", 12759 "ochi.kochi.jp", 12760 "okawa.kochi.jp", 12761 "otoyo.kochi.jp", 12762 "otsuki.kochi.jp", 12763 "sakawa.kochi.jp", 12764 "sukumo.kochi.jp", 12765 "susaki.kochi.jp", 12766 "tosa.kochi.jp", 12767 "tosashimizu.kochi.jp", 12768 "toyo.kochi.jp", 12769 "tsuno.kochi.jp", 12770 "umaji.kochi.jp", 12771 "yasuda.kochi.jp", 12772 "yusuhara.kochi.jp", 12773 "amakusa.kumamoto.jp", 12774 "arao.kumamoto.jp", 12775 "aso.kumamoto.jp", 12776 "choyo.kumamoto.jp", 12777 "gyokuto.kumamoto.jp", 12778 "kamiamakusa.kumamoto.jp", 12779 "kikuchi.kumamoto.jp", 12780 "kumamoto.kumamoto.jp", 12781 "mashiki.kumamoto.jp", 12782 "mifune.kumamoto.jp", 12783 "minamata.kumamoto.jp", 12784 "minamioguni.kumamoto.jp", 12785 "nagasu.kumamoto.jp", 12786 "nishihara.kumamoto.jp", 12787 "oguni.kumamoto.jp", 12788 "ozu.kumamoto.jp", 12789 "sumoto.kumamoto.jp", 12790 "takamori.kumamoto.jp", 12791 "uki.kumamoto.jp", 12792 "uto.kumamoto.jp", 12793 "yamaga.kumamoto.jp", 12794 "yamato.kumamoto.jp", 12795 "yatsushiro.kumamoto.jp", 12796 "ayabe.kyoto.jp", 12797 "fukuchiyama.kyoto.jp", 12798 "higashiyama.kyoto.jp", 12799 "ide.kyoto.jp", 12800 "ine.kyoto.jp", 12801 "joyo.kyoto.jp", 12802 "kameoka.kyoto.jp", 12803 "kamo.kyoto.jp", 12804 "kita.kyoto.jp", 12805 "kizu.kyoto.jp", 12806 "kumiyama.kyoto.jp", 12807 "kyotamba.kyoto.jp", 12808 "kyotanabe.kyoto.jp", 12809 "kyotango.kyoto.jp", 12810 "maizuru.kyoto.jp", 12811 "minami.kyoto.jp", 12812 "minamiyamashiro.kyoto.jp", 12813 "miyazu.kyoto.jp", 12814 "muko.kyoto.jp", 12815 "nagaokakyo.kyoto.jp", 12816 "nakagyo.kyoto.jp", 12817 "nantan.kyoto.jp", 12818 "oyamazaki.kyoto.jp", 12819 "sakyo.kyoto.jp", 12820 "seika.kyoto.jp", 12821 "tanabe.kyoto.jp", 12822 "uji.kyoto.jp", 12823 "ujitawara.kyoto.jp", 12824 "wazuka.kyoto.jp", 12825 "yamashina.kyoto.jp", 12826 "yawata.kyoto.jp", 12827 "asahi.mie.jp", 12828 "inabe.mie.jp", 12829 "ise.mie.jp", 12830 "kameyama.mie.jp", 12831 "kawagoe.mie.jp", 12832 "kiho.mie.jp", 12833 "kisosaki.mie.jp", 12834 "kiwa.mie.jp", 12835 "komono.mie.jp", 12836 "kumano.mie.jp", 12837 "kuwana.mie.jp", 12838 "matsusaka.mie.jp", 12839 "meiwa.mie.jp", 12840 "mihama.mie.jp", 12841 "minamiise.mie.jp", 12842 "misugi.mie.jp", 12843 "miyama.mie.jp", 12844 "nabari.mie.jp", 12845 "shima.mie.jp", 12846 "suzuka.mie.jp", 12847 "tado.mie.jp", 12848 "taiki.mie.jp", 12849 "taki.mie.jp", 12850 "tamaki.mie.jp", 12851 "toba.mie.jp", 12852 "tsu.mie.jp", 12853 "udono.mie.jp", 12854 "ureshino.mie.jp", 12855 "watarai.mie.jp", 12856 "yokkaichi.mie.jp", 12857 "furukawa.miyagi.jp", 12858 "higashimatsushima.miyagi.jp", 12859 "ishinomaki.miyagi.jp", 12860 "iwanuma.miyagi.jp", 12861 "kakuda.miyagi.jp", 12862 "kami.miyagi.jp", 12863 "kawasaki.miyagi.jp", 12864 "marumori.miyagi.jp", 12865 "matsushima.miyagi.jp", 12866 "minamisanriku.miyagi.jp", 12867 "misato.miyagi.jp", 12868 "murata.miyagi.jp", 12869 "natori.miyagi.jp", 12870 "ogawara.miyagi.jp", 12871 "ohira.miyagi.jp", 12872 "onagawa.miyagi.jp", 12873 "osaki.miyagi.jp", 12874 "rifu.miyagi.jp", 12875 "semine.miyagi.jp", 12876 "shibata.miyagi.jp", 12877 "shichikashuku.miyagi.jp", 12878 "shikama.miyagi.jp", 12879 "shiogama.miyagi.jp", 12880 "shiroishi.miyagi.jp", 12881 "tagajo.miyagi.jp", 12882 "taiwa.miyagi.jp", 12883 "tome.miyagi.jp", 12884 "tomiya.miyagi.jp", 12885 "wakuya.miyagi.jp", 12886 "watari.miyagi.jp", 12887 "yamamoto.miyagi.jp", 12888 "zao.miyagi.jp", 12889 "aya.miyazaki.jp", 12890 "ebino.miyazaki.jp", 12891 "gokase.miyazaki.jp", 12892 "hyuga.miyazaki.jp", 12893 "kadogawa.miyazaki.jp", 12894 "kawaminami.miyazaki.jp", 12895 "kijo.miyazaki.jp", 12896 "kitagawa.miyazaki.jp", 12897 "kitakata.miyazaki.jp", 12898 "kitaura.miyazaki.jp", 12899 "kobayashi.miyazaki.jp", 12900 "kunitomi.miyazaki.jp", 12901 "kushima.miyazaki.jp", 12902 "mimata.miyazaki.jp", 12903 "miyakonojo.miyazaki.jp", 12904 "miyazaki.miyazaki.jp", 12905 "morotsuka.miyazaki.jp", 12906 "nichinan.miyazaki.jp", 12907 "nishimera.miyazaki.jp", 12908 "nobeoka.miyazaki.jp", 12909 "saito.miyazaki.jp", 12910 "shiiba.miyazaki.jp", 12911 "shintomi.miyazaki.jp", 12912 "takaharu.miyazaki.jp", 12913 "takanabe.miyazaki.jp", 12914 "takazaki.miyazaki.jp", 12915 "tsuno.miyazaki.jp", 12916 "achi.nagano.jp", 12917 "agematsu.nagano.jp", 12918 "anan.nagano.jp", 12919 "aoki.nagano.jp", 12920 "asahi.nagano.jp", 12921 "azumino.nagano.jp", 12922 "chikuhoku.nagano.jp", 12923 "chikuma.nagano.jp", 12924 "chino.nagano.jp", 12925 "fujimi.nagano.jp", 12926 "hakuba.nagano.jp", 12927 "hara.nagano.jp", 12928 "hiraya.nagano.jp", 12929 "iida.nagano.jp", 12930 "iijima.nagano.jp", 12931 "iiyama.nagano.jp", 12932 "iizuna.nagano.jp", 12933 "ikeda.nagano.jp", 12934 "ikusaka.nagano.jp", 12935 "ina.nagano.jp", 12936 "karuizawa.nagano.jp", 12937 "kawakami.nagano.jp", 12938 "kiso.nagano.jp", 12939 "kisofukushima.nagano.jp", 12940 "kitaaiki.nagano.jp", 12941 "komagane.nagano.jp", 12942 "komoro.nagano.jp", 12943 "matsukawa.nagano.jp", 12944 "matsumoto.nagano.jp", 12945 "miasa.nagano.jp", 12946 "minamiaiki.nagano.jp", 12947 "minamimaki.nagano.jp", 12948 "minamiminowa.nagano.jp", 12949 "minowa.nagano.jp", 12950 "miyada.nagano.jp", 12951 "miyota.nagano.jp", 12952 "mochizuki.nagano.jp", 12953 "nagano.nagano.jp", 12954 "nagawa.nagano.jp", 12955 "nagiso.nagano.jp", 12956 "nakagawa.nagano.jp", 12957 "nakano.nagano.jp", 12958 "nozawaonsen.nagano.jp", 12959 "obuse.nagano.jp", 12960 "ogawa.nagano.jp", 12961 "okaya.nagano.jp", 12962 "omachi.nagano.jp", 12963 "omi.nagano.jp", 12964 "ookuwa.nagano.jp", 12965 "ooshika.nagano.jp", 12966 "otaki.nagano.jp", 12967 "otari.nagano.jp", 12968 "sakae.nagano.jp", 12969 "sakaki.nagano.jp", 12970 "saku.nagano.jp", 12971 "sakuho.nagano.jp", 12972 "shimosuwa.nagano.jp", 12973 "shinanomachi.nagano.jp", 12974 "shiojiri.nagano.jp", 12975 "suwa.nagano.jp", 12976 "suzaka.nagano.jp", 12977 "takagi.nagano.jp", 12978 "takamori.nagano.jp", 12979 "takayama.nagano.jp", 12980 "tateshina.nagano.jp", 12981 "tatsuno.nagano.jp", 12982 "togakushi.nagano.jp", 12983 "togura.nagano.jp", 12984 "tomi.nagano.jp", 12985 "ueda.nagano.jp", 12986 "wada.nagano.jp", 12987 "yamagata.nagano.jp", 12988 "yamanouchi.nagano.jp", 12989 "yasaka.nagano.jp", 12990 "yasuoka.nagano.jp", 12991 "chijiwa.nagasaki.jp", 12992 "futsu.nagasaki.jp", 12993 "goto.nagasaki.jp", 12994 "hasami.nagasaki.jp", 12995 "hirado.nagasaki.jp", 12996 "iki.nagasaki.jp", 12997 "isahaya.nagasaki.jp", 12998 "kawatana.nagasaki.jp", 12999 "kuchinotsu.nagasaki.jp", 13000 "matsuura.nagasaki.jp", 13001 "nagasaki.nagasaki.jp", 13002 "obama.nagasaki.jp", 13003 "omura.nagasaki.jp", 13004 "oseto.nagasaki.jp", 13005 "saikai.nagasaki.jp", 13006 "sasebo.nagasaki.jp", 13007 "seihi.nagasaki.jp", 13008 "shimabara.nagasaki.jp", 13009 "shinkamigoto.nagasaki.jp", 13010 "togitsu.nagasaki.jp", 13011 "tsushima.nagasaki.jp", 13012 "unzen.nagasaki.jp", 13013 "ando.nara.jp", 13014 "gose.nara.jp", 13015 "heguri.nara.jp", 13016 "higashiyoshino.nara.jp", 13017 "ikaruga.nara.jp", 13018 "ikoma.nara.jp", 13019 "kamikitayama.nara.jp", 13020 "kanmaki.nara.jp", 13021 "kashiba.nara.jp", 13022 "kashihara.nara.jp", 13023 "katsuragi.nara.jp", 13024 "kawai.nara.jp", 13025 "kawakami.nara.jp", 13026 "kawanishi.nara.jp", 13027 "koryo.nara.jp", 13028 "kurotaki.nara.jp", 13029 "mitsue.nara.jp", 13030 "miyake.nara.jp", 13031 "nara.nara.jp", 13032 "nosegawa.nara.jp", 13033 "oji.nara.jp", 13034 "ouda.nara.jp", 13035 "oyodo.nara.jp", 13036 "sakurai.nara.jp", 13037 "sango.nara.jp", 13038 "shimoichi.nara.jp", 13039 "shimokitayama.nara.jp", 13040 "shinjo.nara.jp", 13041 "soni.nara.jp", 13042 "takatori.nara.jp", 13043 "tawaramoto.nara.jp", 13044 "tenkawa.nara.jp", 13045 "tenri.nara.jp", 13046 "uda.nara.jp", 13047 "yamatokoriyama.nara.jp", 13048 "yamatotakada.nara.jp", 13049 "yamazoe.nara.jp", 13050 "yoshino.nara.jp", 13051 "aga.niigata.jp", 13052 "agano.niigata.jp", 13053 "gosen.niigata.jp", 13054 "itoigawa.niigata.jp", 13055 "izumozaki.niigata.jp", 13056 "joetsu.niigata.jp", 13057 "kamo.niigata.jp", 13058 "kariwa.niigata.jp", 13059 "kashiwazaki.niigata.jp", 13060 "minamiuonuma.niigata.jp", 13061 "mitsuke.niigata.jp", 13062 "muika.niigata.jp", 13063 "murakami.niigata.jp", 13064 "myoko.niigata.jp", 13065 "nagaoka.niigata.jp", 13066 "niigata.niigata.jp", 13067 "ojiya.niigata.jp", 13068 "omi.niigata.jp", 13069 "sado.niigata.jp", 13070 "sanjo.niigata.jp", 13071 "seiro.niigata.jp", 13072 "seirou.niigata.jp", 13073 "sekikawa.niigata.jp", 13074 "shibata.niigata.jp", 13075 "tagami.niigata.jp", 13076 "tainai.niigata.jp", 13077 "tochio.niigata.jp", 13078 "tokamachi.niigata.jp", 13079 "tsubame.niigata.jp", 13080 "tsunan.niigata.jp", 13081 "uonuma.niigata.jp", 13082 "yahiko.niigata.jp", 13083 "yoita.niigata.jp", 13084 "yuzawa.niigata.jp", 13085 "beppu.oita.jp", 13086 "bungoono.oita.jp", 13087 "bungotakada.oita.jp", 13088 "hasama.oita.jp", 13089 "hiji.oita.jp", 13090 "himeshima.oita.jp", 13091 "hita.oita.jp", 13092 "kamitsue.oita.jp", 13093 "kokonoe.oita.jp", 13094 "kuju.oita.jp", 13095 "kunisaki.oita.jp", 13096 "kusu.oita.jp", 13097 "oita.oita.jp", 13098 "saiki.oita.jp", 13099 "taketa.oita.jp", 13100 "tsukumi.oita.jp", 13101 "usa.oita.jp", 13102 "usuki.oita.jp", 13103 "yufu.oita.jp", 13104 "akaiwa.okayama.jp", 13105 "asakuchi.okayama.jp", 13106 "bizen.okayama.jp", 13107 "hayashima.okayama.jp", 13108 "ibara.okayama.jp", 13109 "kagamino.okayama.jp", 13110 "kasaoka.okayama.jp", 13111 "kibichuo.okayama.jp", 13112 "kumenan.okayama.jp", 13113 "kurashiki.okayama.jp", 13114 "maniwa.okayama.jp", 13115 "misaki.okayama.jp", 13116 "nagi.okayama.jp", 13117 "niimi.okayama.jp", 13118 "nishiawakura.okayama.jp", 13119 "okayama.okayama.jp", 13120 "satosho.okayama.jp", 13121 "setouchi.okayama.jp", 13122 "shinjo.okayama.jp", 13123 "shoo.okayama.jp", 13124 "soja.okayama.jp", 13125 "takahashi.okayama.jp", 13126 "tamano.okayama.jp", 13127 "tsuyama.okayama.jp", 13128 "wake.okayama.jp", 13129 "yakage.okayama.jp", 13130 "aguni.okinawa.jp", 13131 "ginowan.okinawa.jp", 13132 "ginoza.okinawa.jp", 13133 "gushikami.okinawa.jp", 13134 "haebaru.okinawa.jp", 13135 "higashi.okinawa.jp", 13136 "hirara.okinawa.jp", 13137 "iheya.okinawa.jp", 13138 "ishigaki.okinawa.jp", 13139 "ishikawa.okinawa.jp", 13140 "itoman.okinawa.jp", 13141 "izena.okinawa.jp", 13142 "kadena.okinawa.jp", 13143 "kin.okinawa.jp", 13144 "kitadaito.okinawa.jp", 13145 "kitanakagusuku.okinawa.jp", 13146 "kumejima.okinawa.jp", 13147 "kunigami.okinawa.jp", 13148 "minamidaito.okinawa.jp", 13149 "motobu.okinawa.jp", 13150 "nago.okinawa.jp", 13151 "naha.okinawa.jp", 13152 "nakagusuku.okinawa.jp", 13153 "nakijin.okinawa.jp", 13154 "nanjo.okinawa.jp", 13155 "nishihara.okinawa.jp", 13156 "ogimi.okinawa.jp", 13157 "okinawa.okinawa.jp", 13158 "onna.okinawa.jp", 13159 "shimoji.okinawa.jp", 13160 "taketomi.okinawa.jp", 13161 "tarama.okinawa.jp", 13162 "tokashiki.okinawa.jp", 13163 "tomigusuku.okinawa.jp", 13164 "tonaki.okinawa.jp", 13165 "urasoe.okinawa.jp", 13166 "uruma.okinawa.jp", 13167 "yaese.okinawa.jp", 13168 "yomitan.okinawa.jp", 13169 "yonabaru.okinawa.jp", 13170 "yonaguni.okinawa.jp", 13171 "zamami.okinawa.jp", 13172 "abeno.osaka.jp", 13173 "chihayaakasaka.osaka.jp", 13174 "chuo.osaka.jp", 13175 "daito.osaka.jp", 13176 "fujiidera.osaka.jp", 13177 "habikino.osaka.jp", 13178 "hannan.osaka.jp", 13179 "higashiosaka.osaka.jp", 13180 "higashisumiyoshi.osaka.jp", 13181 "higashiyodogawa.osaka.jp", 13182 "hirakata.osaka.jp", 13183 "ibaraki.osaka.jp", 13184 "ikeda.osaka.jp", 13185 "izumi.osaka.jp", 13186 "izumiotsu.osaka.jp", 13187 "izumisano.osaka.jp", 13188 "kadoma.osaka.jp", 13189 "kaizuka.osaka.jp", 13190 "kanan.osaka.jp", 13191 "kashiwara.osaka.jp", 13192 "katano.osaka.jp", 13193 "kawachinagano.osaka.jp", 13194 "kishiwada.osaka.jp", 13195 "kita.osaka.jp", 13196 "kumatori.osaka.jp", 13197 "matsubara.osaka.jp", 13198 "minato.osaka.jp", 13199 "minoh.osaka.jp", 13200 "misaki.osaka.jp", 13201 "moriguchi.osaka.jp", 13202 "neyagawa.osaka.jp", 13203 "nishi.osaka.jp", 13204 "nose.osaka.jp", 13205 "osakasayama.osaka.jp", 13206 "sakai.osaka.jp", 13207 "sayama.osaka.jp", 13208 "sennan.osaka.jp", 13209 "settsu.osaka.jp", 13210 "shijonawate.osaka.jp", 13211 "shimamoto.osaka.jp", 13212 "suita.osaka.jp", 13213 "tadaoka.osaka.jp", 13214 "taishi.osaka.jp", 13215 "tajiri.osaka.jp", 13216 "takaishi.osaka.jp", 13217 "takatsuki.osaka.jp", 13218 "tondabayashi.osaka.jp", 13219 "toyonaka.osaka.jp", 13220 "toyono.osaka.jp", 13221 "yao.osaka.jp", 13222 "ariake.saga.jp", 13223 "arita.saga.jp", 13224 "fukudomi.saga.jp", 13225 "genkai.saga.jp", 13226 "hamatama.saga.jp", 13227 "hizen.saga.jp", 13228 "imari.saga.jp", 13229 "kamimine.saga.jp", 13230 "kanzaki.saga.jp", 13231 "karatsu.saga.jp", 13232 "kashima.saga.jp", 13233 "kitagata.saga.jp", 13234 "kitahata.saga.jp", 13235 "kiyama.saga.jp", 13236 "kouhoku.saga.jp", 13237 "kyuragi.saga.jp", 13238 "nishiarita.saga.jp", 13239 "ogi.saga.jp", 13240 "omachi.saga.jp", 13241 "ouchi.saga.jp", 13242 "saga.saga.jp", 13243 "shiroishi.saga.jp", 13244 "taku.saga.jp", 13245 "tara.saga.jp", 13246 "tosu.saga.jp", 13247 "yoshinogari.saga.jp", 13248 "arakawa.saitama.jp", 13249 "asaka.saitama.jp", 13250 "chichibu.saitama.jp", 13251 "fujimi.saitama.jp", 13252 "fujimino.saitama.jp", 13253 "fukaya.saitama.jp", 13254 "hanno.saitama.jp", 13255 "hanyu.saitama.jp", 13256 "hasuda.saitama.jp", 13257 "hatogaya.saitama.jp", 13258 "hatoyama.saitama.jp", 13259 "hidaka.saitama.jp", 13260 "higashichichibu.saitama.jp", 13261 "higashimatsuyama.saitama.jp", 13262 "honjo.saitama.jp", 13263 "ina.saitama.jp", 13264 "iruma.saitama.jp", 13265 "iwatsuki.saitama.jp", 13266 "kamiizumi.saitama.jp", 13267 "kamikawa.saitama.jp", 13268 "kamisato.saitama.jp", 13269 "kasukabe.saitama.jp", 13270 "kawagoe.saitama.jp", 13271 "kawaguchi.saitama.jp", 13272 "kawajima.saitama.jp", 13273 "kazo.saitama.jp", 13274 "kitamoto.saitama.jp", 13275 "koshigaya.saitama.jp", 13276 "kounosu.saitama.jp", 13277 "kuki.saitama.jp", 13278 "kumagaya.saitama.jp", 13279 "matsubushi.saitama.jp", 13280 "minano.saitama.jp", 13281 "misato.saitama.jp", 13282 "miyashiro.saitama.jp", 13283 "miyoshi.saitama.jp", 13284 "moroyama.saitama.jp", 13285 "nagatoro.saitama.jp", 13286 "namegawa.saitama.jp", 13287 "niiza.saitama.jp", 13288 "ogano.saitama.jp", 13289 "ogawa.saitama.jp", 13290 "ogose.saitama.jp", 13291 "okegawa.saitama.jp", 13292 "omiya.saitama.jp", 13293 "otaki.saitama.jp", 13294 "ranzan.saitama.jp", 13295 "ryokami.saitama.jp", 13296 "saitama.saitama.jp", 13297 "sakado.saitama.jp", 13298 "satte.saitama.jp", 13299 "sayama.saitama.jp", 13300 "shiki.saitama.jp", 13301 "shiraoka.saitama.jp", 13302 "soka.saitama.jp", 13303 "sugito.saitama.jp", 13304 "toda.saitama.jp", 13305 "tokigawa.saitama.jp", 13306 "tokorozawa.saitama.jp", 13307 "tsurugashima.saitama.jp", 13308 "urawa.saitama.jp", 13309 "warabi.saitama.jp", 13310 "yashio.saitama.jp", 13311 "yokoze.saitama.jp", 13312 "yono.saitama.jp", 13313 "yorii.saitama.jp", 13314 "yoshida.saitama.jp", 13315 "yoshikawa.saitama.jp", 13316 "yoshimi.saitama.jp", 13317 "aisho.shiga.jp", 13318 "gamo.shiga.jp", 13319 "higashiomi.shiga.jp", 13320 "hikone.shiga.jp", 13321 "koka.shiga.jp", 13322 "konan.shiga.jp", 13323 "kosei.shiga.jp", 13324 "koto.shiga.jp", 13325 "kusatsu.shiga.jp", 13326 "maibara.shiga.jp", 13327 "moriyama.shiga.jp", 13328 "nagahama.shiga.jp", 13329 "nishiazai.shiga.jp", 13330 "notogawa.shiga.jp", 13331 "omihachiman.shiga.jp", 13332 "otsu.shiga.jp", 13333 "ritto.shiga.jp", 13334 "ryuoh.shiga.jp", 13335 "takashima.shiga.jp", 13336 "takatsuki.shiga.jp", 13337 "torahime.shiga.jp", 13338 "toyosato.shiga.jp", 13339 "yasu.shiga.jp", 13340 "akagi.shimane.jp", 13341 "ama.shimane.jp", 13342 "gotsu.shimane.jp", 13343 "hamada.shimane.jp", 13344 "higashiizumo.shimane.jp", 13345 "hikawa.shimane.jp", 13346 "hikimi.shimane.jp", 13347 "izumo.shimane.jp", 13348 "kakinoki.shimane.jp", 13349 "masuda.shimane.jp", 13350 "matsue.shimane.jp", 13351 "misato.shimane.jp", 13352 "nishinoshima.shimane.jp", 13353 "ohda.shimane.jp", 13354 "okinoshima.shimane.jp", 13355 "okuizumo.shimane.jp", 13356 "shimane.shimane.jp", 13357 "tamayu.shimane.jp", 13358 "tsuwano.shimane.jp", 13359 "unnan.shimane.jp", 13360 "yakumo.shimane.jp", 13361 "yasugi.shimane.jp", 13362 "yatsuka.shimane.jp", 13363 "arai.shizuoka.jp", 13364 "atami.shizuoka.jp", 13365 "fuji.shizuoka.jp", 13366 "fujieda.shizuoka.jp", 13367 "fujikawa.shizuoka.jp", 13368 "fujinomiya.shizuoka.jp", 13369 "fukuroi.shizuoka.jp", 13370 "gotemba.shizuoka.jp", 13371 "haibara.shizuoka.jp", 13372 "hamamatsu.shizuoka.jp", 13373 "higashiizu.shizuoka.jp", 13374 "ito.shizuoka.jp", 13375 "iwata.shizuoka.jp", 13376 "izu.shizuoka.jp", 13377 "izunokuni.shizuoka.jp", 13378 "kakegawa.shizuoka.jp", 13379 "kannami.shizuoka.jp", 13380 "kawanehon.shizuoka.jp", 13381 "kawazu.shizuoka.jp", 13382 "kikugawa.shizuoka.jp", 13383 "kosai.shizuoka.jp", 13384 "makinohara.shizuoka.jp", 13385 "matsuzaki.shizuoka.jp", 13386 "minamiizu.shizuoka.jp", 13387 "mishima.shizuoka.jp", 13388 "morimachi.shizuoka.jp", 13389 "nishiizu.shizuoka.jp", 13390 "numazu.shizuoka.jp", 13391 "omaezaki.shizuoka.jp", 13392 "shimada.shizuoka.jp", 13393 "shimizu.shizuoka.jp", 13394 "shimoda.shizuoka.jp", 13395 "shizuoka.shizuoka.jp", 13396 "susono.shizuoka.jp", 13397 "yaizu.shizuoka.jp", 13398 "yoshida.shizuoka.jp", 13399 "ashikaga.tochigi.jp", 13400 "bato.tochigi.jp", 13401 "haga.tochigi.jp", 13402 "ichikai.tochigi.jp", 13403 "iwafune.tochigi.jp", 13404 "kaminokawa.tochigi.jp", 13405 "kanuma.tochigi.jp", 13406 "karasuyama.tochigi.jp", 13407 "kuroiso.tochigi.jp", 13408 "mashiko.tochigi.jp", 13409 "mibu.tochigi.jp", 13410 "moka.tochigi.jp", 13411 "motegi.tochigi.jp", 13412 "nasu.tochigi.jp", 13413 "nasushiobara.tochigi.jp", 13414 "nikko.tochigi.jp", 13415 "nishikata.tochigi.jp", 13416 "nogi.tochigi.jp", 13417 "ohira.tochigi.jp", 13418 "ohtawara.tochigi.jp", 13419 "oyama.tochigi.jp", 13420 "sakura.tochigi.jp", 13421 "sano.tochigi.jp", 13422 "shimotsuke.tochigi.jp", 13423 "shioya.tochigi.jp", 13424 "takanezawa.tochigi.jp", 13425 "tochigi.tochigi.jp", 13426 "tsuga.tochigi.jp", 13427 "ujiie.tochigi.jp", 13428 "utsunomiya.tochigi.jp", 13429 "yaita.tochigi.jp", 13430 "aizumi.tokushima.jp", 13431 "anan.tokushima.jp", 13432 "ichiba.tokushima.jp", 13433 "itano.tokushima.jp", 13434 "kainan.tokushima.jp", 13435 "komatsushima.tokushima.jp", 13436 "matsushige.tokushima.jp", 13437 "mima.tokushima.jp", 13438 "minami.tokushima.jp", 13439 "miyoshi.tokushima.jp", 13440 "mugi.tokushima.jp", 13441 "nakagawa.tokushima.jp", 13442 "naruto.tokushima.jp", 13443 "sanagochi.tokushima.jp", 13444 "shishikui.tokushima.jp", 13445 "tokushima.tokushima.jp", 13446 "wajiki.tokushima.jp", 13447 "adachi.tokyo.jp", 13448 "akiruno.tokyo.jp", 13449 "akishima.tokyo.jp", 13450 "aogashima.tokyo.jp", 13451 "arakawa.tokyo.jp", 13452 "bunkyo.tokyo.jp", 13453 "chiyoda.tokyo.jp", 13454 "chofu.tokyo.jp", 13455 "chuo.tokyo.jp", 13456 "edogawa.tokyo.jp", 13457 "fuchu.tokyo.jp", 13458 "fussa.tokyo.jp", 13459 "hachijo.tokyo.jp", 13460 "hachioji.tokyo.jp", 13461 "hamura.tokyo.jp", 13462 "higashikurume.tokyo.jp", 13463 "higashimurayama.tokyo.jp", 13464 "higashiyamato.tokyo.jp", 13465 "hino.tokyo.jp", 13466 "hinode.tokyo.jp", 13467 "hinohara.tokyo.jp", 13468 "inagi.tokyo.jp", 13469 "itabashi.tokyo.jp", 13470 "katsushika.tokyo.jp", 13471 "kita.tokyo.jp", 13472 "kiyose.tokyo.jp", 13473 "kodaira.tokyo.jp", 13474 "koganei.tokyo.jp", 13475 "kokubunji.tokyo.jp", 13476 "komae.tokyo.jp", 13477 "koto.tokyo.jp", 13478 "kouzushima.tokyo.jp", 13479 "kunitachi.tokyo.jp", 13480 "machida.tokyo.jp", 13481 "meguro.tokyo.jp", 13482 "minato.tokyo.jp", 13483 "mitaka.tokyo.jp", 13484 "mizuho.tokyo.jp", 13485 "musashimurayama.tokyo.jp", 13486 "musashino.tokyo.jp", 13487 "nakano.tokyo.jp", 13488 "nerima.tokyo.jp", 13489 "ogasawara.tokyo.jp", 13490 "okutama.tokyo.jp", 13491 "ome.tokyo.jp", 13492 "oshima.tokyo.jp", 13493 "ota.tokyo.jp", 13494 "setagaya.tokyo.jp", 13495 "shibuya.tokyo.jp", 13496 "shinagawa.tokyo.jp", 13497 "shinjuku.tokyo.jp", 13498 "suginami.tokyo.jp", 13499 "sumida.tokyo.jp", 13500 "tachikawa.tokyo.jp", 13501 "taito.tokyo.jp", 13502 "tama.tokyo.jp", 13503 "toshima.tokyo.jp", 13504 "chizu.tottori.jp", 13505 "hino.tottori.jp", 13506 "kawahara.tottori.jp", 13507 "koge.tottori.jp", 13508 "kotoura.tottori.jp", 13509 "misasa.tottori.jp", 13510 "nanbu.tottori.jp", 13511 "nichinan.tottori.jp", 13512 "sakaiminato.tottori.jp", 13513 "tottori.tottori.jp", 13514 "wakasa.tottori.jp", 13515 "yazu.tottori.jp", 13516 "yonago.tottori.jp", 13517 "asahi.toyama.jp", 13518 "fuchu.toyama.jp", 13519 "fukumitsu.toyama.jp", 13520 "funahashi.toyama.jp", 13521 "himi.toyama.jp", 13522 "imizu.toyama.jp", 13523 "inami.toyama.jp", 13524 "johana.toyama.jp", 13525 "kamiichi.toyama.jp", 13526 "kurobe.toyama.jp", 13527 "nakaniikawa.toyama.jp", 13528 "namerikawa.toyama.jp", 13529 "nanto.toyama.jp", 13530 "nyuzen.toyama.jp", 13531 "oyabe.toyama.jp", 13532 "taira.toyama.jp", 13533 "takaoka.toyama.jp", 13534 "tateyama.toyama.jp", 13535 "toga.toyama.jp", 13536 "tonami.toyama.jp", 13537 "toyama.toyama.jp", 13538 "unazuki.toyama.jp", 13539 "uozu.toyama.jp", 13540 "yamada.toyama.jp", 13541 "arida.wakayama.jp", 13542 "aridagawa.wakayama.jp", 13543 "gobo.wakayama.jp", 13544 "hashimoto.wakayama.jp", 13545 "hidaka.wakayama.jp", 13546 "hirogawa.wakayama.jp", 13547 "inami.wakayama.jp", 13548 "iwade.wakayama.jp", 13549 "kainan.wakayama.jp", 13550 "kamitonda.wakayama.jp", 13551 "katsuragi.wakayama.jp", 13552 "kimino.wakayama.jp", 13553 "kinokawa.wakayama.jp", 13554 "kitayama.wakayama.jp", 13555 "koya.wakayama.jp", 13556 "koza.wakayama.jp", 13557 "kozagawa.wakayama.jp", 13558 "kudoyama.wakayama.jp", 13559 "kushimoto.wakayama.jp", 13560 "mihama.wakayama.jp", 13561 "misato.wakayama.jp", 13562 "nachikatsuura.wakayama.jp", 13563 "shingu.wakayama.jp", 13564 "shirahama.wakayama.jp", 13565 "taiji.wakayama.jp", 13566 "tanabe.wakayama.jp", 13567 "wakayama.wakayama.jp", 13568 "yuasa.wakayama.jp", 13569 "yura.wakayama.jp", 13570 "asahi.yamagata.jp", 13571 "funagata.yamagata.jp", 13572 "higashine.yamagata.jp", 13573 "iide.yamagata.jp", 13574 "kahoku.yamagata.jp", 13575 "kaminoyama.yamagata.jp", 13576 "kaneyama.yamagata.jp", 13577 "kawanishi.yamagata.jp", 13578 "mamurogawa.yamagata.jp", 13579 "mikawa.yamagata.jp", 13580 "murayama.yamagata.jp", 13581 "nagai.yamagata.jp", 13582 "nakayama.yamagata.jp", 13583 "nanyo.yamagata.jp", 13584 "nishikawa.yamagata.jp", 13585 "obanazawa.yamagata.jp", 13586 "oe.yamagata.jp", 13587 "oguni.yamagata.jp", 13588 "ohkura.yamagata.jp", 13589 "oishida.yamagata.jp", 13590 "sagae.yamagata.jp", 13591 "sakata.yamagata.jp", 13592 "sakegawa.yamagata.jp", 13593 "shinjo.yamagata.jp", 13594 "shirataka.yamagata.jp", 13595 "shonai.yamagata.jp", 13596 "takahata.yamagata.jp", 13597 "tendo.yamagata.jp", 13598 "tozawa.yamagata.jp", 13599 "tsuruoka.yamagata.jp", 13600 "yamagata.yamagata.jp", 13601 "yamanobe.yamagata.jp", 13602 "yonezawa.yamagata.jp", 13603 "yuza.yamagata.jp", 13604 "abu.yamaguchi.jp", 13605 "hagi.yamaguchi.jp", 13606 "hikari.yamaguchi.jp", 13607 "hofu.yamaguchi.jp", 13608 "iwakuni.yamaguchi.jp", 13609 "kudamatsu.yamaguchi.jp", 13610 "mitou.yamaguchi.jp", 13611 "nagato.yamaguchi.jp", 13612 "oshima.yamaguchi.jp", 13613 "shimonoseki.yamaguchi.jp", 13614 "shunan.yamaguchi.jp", 13615 "tabuse.yamaguchi.jp", 13616 "tokuyama.yamaguchi.jp", 13617 "toyota.yamaguchi.jp", 13618 "ube.yamaguchi.jp", 13619 "yuu.yamaguchi.jp", 13620 "chuo.yamanashi.jp", 13621 "doshi.yamanashi.jp", 13622 "fuefuki.yamanashi.jp", 13623 "fujikawa.yamanashi.jp", 13624 "fujikawaguchiko.yamanashi.jp", 13625 "fujiyoshida.yamanashi.jp", 13626 "hayakawa.yamanashi.jp", 13627 "hokuto.yamanashi.jp", 13628 "ichikawamisato.yamanashi.jp", 13629 "kai.yamanashi.jp", 13630 "kofu.yamanashi.jp", 13631 "koshu.yamanashi.jp", 13632 "kosuge.yamanashi.jp", 13633 "minami-alps.yamanashi.jp", 13634 "minobu.yamanashi.jp", 13635 "nakamichi.yamanashi.jp", 13636 "nanbu.yamanashi.jp", 13637 "narusawa.yamanashi.jp", 13638 "nirasaki.yamanashi.jp", 13639 "nishikatsura.yamanashi.jp", 13640 "oshino.yamanashi.jp", 13641 "otsuki.yamanashi.jp", 13642 "showa.yamanashi.jp", 13643 "tabayama.yamanashi.jp", 13644 "tsuru.yamanashi.jp", 13645 "uenohara.yamanashi.jp", 13646 "yamanakako.yamanashi.jp", 13647 "yamanashi.yamanashi.jp", 13648 "ke", 13649 "ac.ke", 13650 "co.ke", 13651 "go.ke", 13652 "info.ke", 13653 "me.ke", 13654 "mobi.ke", 13655 "ne.ke", 13656 "or.ke", 13657 "sc.ke", 13658 "kg", 13659 "com.kg", 13660 "edu.kg", 13661 "gov.kg", 13662 "mil.kg", 13663 "net.kg", 13664 "org.kg", 13665 "*.kh", 13666 "ki", 13667 "biz.ki", 13668 "com.ki", 13669 "edu.ki", 13670 "gov.ki", 13671 "info.ki", 13672 "net.ki", 13673 "org.ki", 13674 "km", 13675 "ass.km", 13676 "com.km", 13677 "edu.km", 13678 "gov.km", 13679 "mil.km", 13680 "nom.km", 13681 "org.km", 13682 "prd.km", 13683 "tm.km", 13684 "asso.km", 13685 "coop.km", 13686 "gouv.km", 13687 "medecin.km", 13688 "notaires.km", 13689 "pharmaciens.km", 13690 "presse.km", 13691 "veterinaire.km", 13692 "kn", 13693 "edu.kn", 13694 "gov.kn", 13695 "net.kn", 13696 "org.kn", 13697 "kp", 13698 "com.kp", 13699 "edu.kp", 13700 "gov.kp", 13701 "org.kp", 13702 "rep.kp", 13703 "tra.kp", 13704 "kr", 13705 "ac.kr", 13706 "co.kr", 13707 "es.kr", 13708 "go.kr", 13709 "hs.kr", 13710 "kg.kr", 13711 "mil.kr", 13712 "ms.kr", 13713 "ne.kr", 13714 "or.kr", 13715 "pe.kr", 13716 "re.kr", 13717 "sc.kr", 13718 "busan.kr", 13719 "chungbuk.kr", 13720 "chungnam.kr", 13721 "daegu.kr", 13722 "daejeon.kr", 13723 "gangwon.kr", 13724 "gwangju.kr", 13725 "gyeongbuk.kr", 13726 "gyeonggi.kr", 13727 "gyeongnam.kr", 13728 "incheon.kr", 13729 "jeju.kr", 13730 "jeonbuk.kr", 13731 "jeonnam.kr", 13732 "seoul.kr", 13733 "ulsan.kr", 13734 "kw", 13735 "com.kw", 13736 "edu.kw", 13737 "emb.kw", 13738 "gov.kw", 13739 "ind.kw", 13740 "net.kw", 13741 "org.kw", 13742 "ky", 13743 "com.ky", 13744 "edu.ky", 13745 "net.ky", 13746 "org.ky", 13747 "kz", 13748 "com.kz", 13749 "edu.kz", 13750 "gov.kz", 13751 "mil.kz", 13752 "net.kz", 13753 "org.kz", 13754 "la", 13755 "com.la", 13756 "edu.la", 13757 "gov.la", 13758 "info.la", 13759 "int.la", 13760 "net.la", 13761 "org.la", 13762 "per.la", 13763 "lb", 13764 "com.lb", 13765 "edu.lb", 13766 "gov.lb", 13767 "net.lb", 13768 "org.lb", 13769 "lc", 13770 "co.lc", 13771 "com.lc", 13772 "edu.lc", 13773 "gov.lc", 13774 "net.lc", 13775 "org.lc", 13776 "li", 13777 "lk", 13778 "ac.lk", 13779 "assn.lk", 13780 "com.lk", 13781 "edu.lk", 13782 "gov.lk", 13783 "grp.lk", 13784 "hotel.lk", 13785 "int.lk", 13786 "ltd.lk", 13787 "net.lk", 13788 "ngo.lk", 13789 "org.lk", 13790 "sch.lk", 13791 "soc.lk", 13792 "web.lk", 13793 "lr", 13794 "com.lr", 13795 "edu.lr", 13796 "gov.lr", 13797 "net.lr", 13798 "org.lr", 13799 "ls", 13800 "ac.ls", 13801 "biz.ls", 13802 "co.ls", 13803 "edu.ls", 13804 "gov.ls", 13805 "info.ls", 13806 "net.ls", 13807 "org.ls", 13808 "sc.ls", 13809 "lt", 13810 "gov.lt", 13811 "lu", 13812 "lv", 13813 "asn.lv", 13814 "com.lv", 13815 "conf.lv", 13816 "edu.lv", 13817 "gov.lv", 13818 "id.lv", 13819 "mil.lv", 13820 "net.lv", 13821 "org.lv", 13822 "ly", 13823 "com.ly", 13824 "edu.ly", 13825 "gov.ly", 13826 "id.ly", 13827 "med.ly", 13828 "net.ly", 13829 "org.ly", 13830 "plc.ly", 13831 "sch.ly", 13832 "ma", 13833 "ac.ma", 13834 "co.ma", 13835 "gov.ma", 13836 "net.ma", 13837 "org.ma", 13838 "press.ma", 13839 "mc", 13840 "asso.mc", 13841 "tm.mc", 13842 "md", 13843 "me", 13844 "ac.me", 13845 "co.me", 13846 "edu.me", 13847 "gov.me", 13848 "its.me", 13849 "net.me", 13850 "org.me", 13851 "priv.me", 13852 "mg", 13853 "co.mg", 13854 "com.mg", 13855 "edu.mg", 13856 "gov.mg", 13857 "mil.mg", 13858 "nom.mg", 13859 "org.mg", 13860 "prd.mg", 13861 "mh", 13862 "mil", 13863 "mk", 13864 "com.mk", 13865 "edu.mk", 13866 "gov.mk", 13867 "inf.mk", 13868 "name.mk", 13869 "net.mk", 13870 "org.mk", 13871 "ml", 13872 "com.ml", 13873 "edu.ml", 13874 "gouv.ml", 13875 "gov.ml", 13876 "net.ml", 13877 "org.ml", 13878 "presse.ml", 13879 "*.mm", 13880 "mn", 13881 "edu.mn", 13882 "gov.mn", 13883 "org.mn", 13884 "mo", 13885 "com.mo", 13886 "edu.mo", 13887 "gov.mo", 13888 "net.mo", 13889 "org.mo", 13890 "mobi", 13891 "mp", 13892 "mq", 13893 "mr", 13894 "gov.mr", 13895 "ms", 13896 "com.ms", 13897 "edu.ms", 13898 "gov.ms", 13899 "net.ms", 13900 "org.ms", 13901 "mt", 13902 "com.mt", 13903 "edu.mt", 13904 "net.mt", 13905 "org.mt", 13906 "mu", 13907 "ac.mu", 13908 "co.mu", 13909 "com.mu", 13910 "gov.mu", 13911 "net.mu", 13912 "or.mu", 13913 "org.mu", 13914 "museum", 13915 "mv", 13916 "aero.mv", 13917 "biz.mv", 13918 "com.mv", 13919 "coop.mv", 13920 "edu.mv", 13921 "gov.mv", 13922 "info.mv", 13923 "int.mv", 13924 "mil.mv", 13925 "museum.mv", 13926 "name.mv", 13927 "net.mv", 13928 "org.mv", 13929 "pro.mv", 13930 "mw", 13931 "ac.mw", 13932 "biz.mw", 13933 "co.mw", 13934 "com.mw", 13935 "coop.mw", 13936 "edu.mw", 13937 "gov.mw", 13938 "int.mw", 13939 "net.mw", 13940 "org.mw", 13941 "mx", 13942 "com.mx", 13943 "edu.mx", 13944 "gob.mx", 13945 "net.mx", 13946 "org.mx", 13947 "my", 13948 "biz.my", 13949 "com.my", 13950 "edu.my", 13951 "gov.my", 13952 "mil.my", 13953 "name.my", 13954 "net.my", 13955 "org.my", 13956 "mz", 13957 "ac.mz", 13958 "adv.mz", 13959 "co.mz", 13960 "edu.mz", 13961 "gov.mz", 13962 "mil.mz", 13963 "net.mz", 13964 "org.mz", 13965 "na", 13966 "alt.na", 13967 "co.na", 13968 "com.na", 13969 "gov.na", 13970 "net.na", 13971 "org.na", 13972 "name", 13973 "nc", 13974 "asso.nc", 13975 "nom.nc", 13976 "ne", 13977 "net", 13978 "nf", 13979 "arts.nf", 13980 "com.nf", 13981 "firm.nf", 13982 "info.nf", 13983 "net.nf", 13984 "other.nf", 13985 "per.nf", 13986 "rec.nf", 13987 "store.nf", 13988 "web.nf", 13989 "ng", 13990 "com.ng", 13991 "edu.ng", 13992 "gov.ng", 13993 "i.ng", 13994 "mil.ng", 13995 "mobi.ng", 13996 "name.ng", 13997 "net.ng", 13998 "org.ng", 13999 "sch.ng", 14000 "ni", 14001 "ac.ni", 14002 "biz.ni", 14003 "co.ni", 14004 "com.ni", 14005 "edu.ni", 14006 "gob.ni", 14007 "in.ni", 14008 "info.ni", 14009 "int.ni", 14010 "mil.ni", 14011 "net.ni", 14012 "nom.ni", 14013 "org.ni", 14014 "web.ni", 14015 "nl", 14016 "no", 14017 "fhs.no", 14018 "folkebibl.no", 14019 "fylkesbibl.no", 14020 "idrett.no", 14021 "museum.no", 14022 "priv.no", 14023 "vgs.no", 14024 "dep.no", 14025 "herad.no", 14026 "kommune.no", 14027 "mil.no", 14028 "stat.no", 14029 "aa.no", 14030 "ah.no", 14031 "bu.no", 14032 "fm.no", 14033 "hl.no", 14034 "hm.no", 14035 "jan-mayen.no", 14036 "mr.no", 14037 "nl.no", 14038 "nt.no", 14039 "of.no", 14040 "ol.no", 14041 "oslo.no", 14042 "rl.no", 14043 "sf.no", 14044 "st.no", 14045 "svalbard.no", 14046 "tm.no", 14047 "tr.no", 14048 "va.no", 14049 "vf.no", 14050 "gs.aa.no", 14051 "gs.ah.no", 14052 "gs.bu.no", 14053 "gs.fm.no", 14054 "gs.hl.no", 14055 "gs.hm.no", 14056 "gs.jan-mayen.no", 14057 "gs.mr.no", 14058 "gs.nl.no", 14059 "gs.nt.no", 14060 "gs.of.no", 14061 "gs.ol.no", 14062 "gs.oslo.no", 14063 "gs.rl.no", 14064 "gs.sf.no", 14065 "gs.st.no", 14066 "gs.svalbard.no", 14067 "gs.tm.no", 14068 "gs.tr.no", 14069 "gs.va.no", 14070 "gs.vf.no", 14071 "akrehamn.no", 14072 "Ã¥krehamn.no", 14073 "algard.no", 14074 "Ã¥lgÃ¥rd.no", 14075 "arna.no", 14076 "bronnoysund.no", 14077 "brønnøysund.no", 14078 "brumunddal.no", 14079 "bryne.no", 14080 "drobak.no", 14081 "drøbak.no", 14082 "egersund.no", 14083 "fetsund.no", 14084 "floro.no", 14085 "florø.no", 14086 "fredrikstad.no", 14087 "hokksund.no", 14088 "honefoss.no", 14089 "hønefoss.no", 14090 "jessheim.no", 14091 "jorpeland.no", 14092 "jørpeland.no", 14093 "kirkenes.no", 14094 "kopervik.no", 14095 "krokstadelva.no", 14096 "langevag.no", 14097 "langevÃ¥g.no", 14098 "leirvik.no", 14099 "mjondalen.no", 14100 "mjøndalen.no", 14101 "mo-i-rana.no", 14102 "mosjoen.no", 14103 "mosjøen.no", 14104 "nesoddtangen.no", 14105 "orkanger.no", 14106 "osoyro.no", 14107 "osøyro.no", 14108 "raholt.no", 14109 "rÃ¥holt.no", 14110 "sandnessjoen.no", 14111 "sandnessjøen.no", 14112 "skedsmokorset.no", 14113 "slattum.no", 14114 "spjelkavik.no", 14115 "stathelle.no", 14116 "stavern.no", 14117 "stjordalshalsen.no", 14118 "stjørdalshalsen.no", 14119 "tananger.no", 14120 "tranby.no", 14121 "vossevangen.no", 14122 "aarborte.no", 14123 "aejrie.no", 14124 "afjord.no", 14125 "Ã¥fjord.no", 14126 "agdenes.no", 14127 "nes.akershus.no", 14128 "aknoluokta.no", 14129 "ákÅoluokta.no", 14130 "al.no", 14131 "Ã¥l.no", 14132 "alaheadju.no", 14133 "álaheadju.no", 14134 "alesund.no", 14135 "Ã¥lesund.no", 14136 "alstahaug.no", 14137 "alta.no", 14138 "áltá.no", 14139 "alvdal.no", 14140 "amli.no", 14141 "Ã¥mli.no", 14142 "amot.no", 14143 "Ã¥mot.no", 14144 "andasuolo.no", 14145 "andebu.no", 14146 "andoy.no", 14147 "andøy.no", 14148 "ardal.no", 14149 "Ã¥rdal.no", 14150 "aremark.no", 14151 "arendal.no", 14152 "Ã¥s.no", 14153 "aseral.no", 14154 "Ã¥seral.no", 14155 "asker.no", 14156 "askim.no", 14157 "askoy.no", 14158 "askøy.no", 14159 "askvoll.no", 14160 "asnes.no", 14161 "Ã¥snes.no", 14162 "audnedaln.no", 14163 "aukra.no", 14164 "aure.no", 14165 "aurland.no", 14166 "aurskog-holand.no", 14167 "aurskog-høland.no", 14168 "austevoll.no", 14169 "austrheim.no", 14170 "averoy.no", 14171 "averøy.no", 14172 "badaddja.no", 14173 "bÃ¥dÃ¥ddjÃ¥.no", 14174 "bærum.no", 14175 "bahcavuotna.no", 14176 "báhcavuotna.no", 14177 "bahccavuotna.no", 14178 "báhccavuotna.no", 14179 "baidar.no", 14180 "báidár.no", 14181 "bajddar.no", 14182 "bájddar.no", 14183 "balat.no", 14184 "bálát.no", 14185 "balestrand.no", 14186 "ballangen.no", 14187 "balsfjord.no", 14188 "bamble.no", 14189 "bardu.no", 14190 "barum.no", 14191 "batsfjord.no", 14192 "bÃ¥tsfjord.no", 14193 "bearalvahki.no", 14194 "bearalváhki.no", 14195 "beardu.no", 14196 "beiarn.no", 14197 "berg.no", 14198 "bergen.no", 14199 "berlevag.no", 14200 "berlevÃ¥g.no", 14201 "bievat.no", 14202 "bievát.no", 14203 "bindal.no", 14204 "birkenes.no", 14205 "bjarkoy.no", 14206 "bjarkøy.no", 14207 "bjerkreim.no", 14208 "bjugn.no", 14209 "bodo.no", 14210 "bodø.no", 14211 "bokn.no", 14212 "bomlo.no", 14213 "bømlo.no", 14214 "bremanger.no", 14215 "bronnoy.no", 14216 "brønnøy.no", 14217 "budejju.no", 14218 "nes.buskerud.no", 14219 "bygland.no", 14220 "bykle.no", 14221 "cahcesuolo.no", 14222 "Äáhcesuolo.no", 14223 "davvenjarga.no", 14224 "davvenjárga.no", 14225 "davvesiida.no", 14226 "deatnu.no", 14227 "dielddanuorri.no", 14228 "divtasvuodna.no", 14229 "divttasvuotna.no", 14230 "donna.no", 14231 "dønna.no", 14232 "dovre.no", 14233 "drammen.no", 14234 "drangedal.no", 14235 "dyroy.no", 14236 "dyrøy.no", 14237 "eid.no", 14238 "eidfjord.no", 14239 "eidsberg.no", 14240 "eidskog.no", 14241 "eidsvoll.no", 14242 "eigersund.no", 14243 "elverum.no", 14244 "enebakk.no", 14245 "engerdal.no", 14246 "etne.no", 14247 "etnedal.no", 14248 "evenassi.no", 14249 "evenášši.no", 14250 "evenes.no", 14251 "evje-og-hornnes.no", 14252 "farsund.no", 14253 "fauske.no", 14254 "fedje.no", 14255 "fet.no", 14256 "finnoy.no", 14257 "finnøy.no", 14258 "fitjar.no", 14259 "fjaler.no", 14260 "fjell.no", 14261 "fla.no", 14262 "flÃ¥.no", 14263 "flakstad.no", 14264 "flatanger.no", 14265 "flekkefjord.no", 14266 "flesberg.no", 14267 "flora.no", 14268 "folldal.no", 14269 "forde.no", 14270 "førde.no", 14271 "forsand.no", 14272 "fosnes.no", 14273 "fræna.no", 14274 "frana.no", 14275 "frei.no", 14276 "frogn.no", 14277 "froland.no", 14278 "frosta.no", 14279 "froya.no", 14280 "frøya.no", 14281 "fuoisku.no", 14282 "fuossko.no", 14283 "fusa.no", 14284 "fyresdal.no", 14285 "gaivuotna.no", 14286 "gáivuotna.no", 14287 "galsa.no", 14288 "gálsá.no", 14289 "gamvik.no", 14290 "gangaviika.no", 14291 "gáÅgaviika.no", 14292 "gaular.no", 14293 "gausdal.no", 14294 "giehtavuoatna.no", 14295 "gildeskal.no", 14296 "gildeskÃ¥l.no", 14297 "giske.no", 14298 "gjemnes.no", 14299 "gjerdrum.no", 14300 "gjerstad.no", 14301 "gjesdal.no", 14302 "gjovik.no", 14303 "gjøvik.no", 14304 "gloppen.no", 14305 "gol.no", 14306 "gran.no", 14307 "grane.no", 14308 "granvin.no", 14309 "gratangen.no", 14310 "grimstad.no", 14311 "grong.no", 14312 "grue.no", 14313 "gulen.no", 14314 "guovdageaidnu.no", 14315 "ha.no", 14316 "hÃ¥.no", 14317 "habmer.no", 14318 "hábmer.no", 14319 "hadsel.no", 14320 "hægebostad.no", 14321 "hagebostad.no", 14322 "halden.no", 14323 "halsa.no", 14324 "hamar.no", 14325 "hamaroy.no", 14326 "hammarfeasta.no", 14327 "hámmárfeasta.no", 14328 "hammerfest.no", 14329 "hapmir.no", 14330 "hápmir.no", 14331 "haram.no", 14332 "hareid.no", 14333 "harstad.no", 14334 "hasvik.no", 14335 "hattfjelldal.no", 14336 "haugesund.no", 14337 "os.hedmark.no", 14338 "valer.hedmark.no", 14339 "vÃ¥ler.hedmark.no", 14340 "hemne.no", 14341 "hemnes.no", 14342 "hemsedal.no", 14343 "hitra.no", 14344 "hjartdal.no", 14345 "hjelmeland.no", 14346 "hobol.no", 14347 "hobøl.no", 14348 "hof.no", 14349 "hol.no", 14350 "hole.no", 14351 "holmestrand.no", 14352 "holtalen.no", 14353 "holtÃ¥len.no", 14354 "os.hordaland.no", 14355 "hornindal.no", 14356 "horten.no", 14357 "hoyanger.no", 14358 "høyanger.no", 14359 "hoylandet.no", 14360 "høylandet.no", 14361 "hurdal.no", 14362 "hurum.no", 14363 "hvaler.no", 14364 "hyllestad.no", 14365 "ibestad.no", 14366 "inderoy.no", 14367 "inderøy.no", 14368 "iveland.no", 14369 "ivgu.no", 14370 "jevnaker.no", 14371 "jolster.no", 14372 "jølster.no", 14373 "jondal.no", 14374 "kafjord.no", 14375 "kÃ¥fjord.no", 14376 "karasjohka.no", 14377 "kárášjohka.no", 14378 "karasjok.no", 14379 "karlsoy.no", 14380 "karmoy.no", 14381 "karmøy.no", 14382 "kautokeino.no", 14383 "klabu.no", 14384 "klæbu.no", 14385 "klepp.no", 14386 "kongsberg.no", 14387 "kongsvinger.no", 14388 "kraanghke.no", 14389 "krÃ¥anghke.no", 14390 "kragero.no", 14391 "kragerø.no", 14392 "kristiansand.no", 14393 "kristiansund.no", 14394 "krodsherad.no", 14395 "krødsherad.no", 14396 "kvæfjord.no", 14397 "kvænangen.no", 14398 "kvafjord.no", 14399 "kvalsund.no", 14400 "kvam.no", 14401 "kvanangen.no", 14402 "kvinesdal.no", 14403 "kvinnherad.no", 14404 "kviteseid.no", 14405 "kvitsoy.no", 14406 "kvitsøy.no", 14407 "laakesvuemie.no", 14408 "lærdal.no", 14409 "lahppi.no", 14410 "láhppi.no", 14411 "lardal.no", 14412 "larvik.no", 14413 "lavagis.no", 14414 "lavangen.no", 14415 "leangaviika.no", 14416 "leaÅgaviika.no", 14417 "lebesby.no", 14418 "leikanger.no", 14419 "leirfjord.no", 14420 "leka.no", 14421 "leksvik.no", 14422 "lenvik.no", 14423 "lerdal.no", 14424 "lesja.no", 14425 "levanger.no", 14426 "lier.no", 14427 "lierne.no", 14428 "lillehammer.no", 14429 "lillesand.no", 14430 "lindas.no", 14431 "lindÃ¥s.no", 14432 "lindesnes.no", 14433 "loabat.no", 14434 "loabát.no", 14435 "lodingen.no", 14436 "lødingen.no", 14437 "lom.no", 14438 "loppa.no", 14439 "lorenskog.no", 14440 "lørenskog.no", 14441 "loten.no", 14442 "løten.no", 14443 "lund.no", 14444 "lunner.no", 14445 "luroy.no", 14446 "lurøy.no", 14447 "luster.no", 14448 "lyngdal.no", 14449 "lyngen.no", 14450 "malatvuopmi.no", 14451 "málatvuopmi.no", 14452 "malselv.no", 14453 "mÃ¥lselv.no", 14454 "malvik.no", 14455 "mandal.no", 14456 "marker.no", 14457 "marnardal.no", 14458 "masfjorden.no", 14459 "masoy.no", 14460 "mÃ¥søy.no", 14461 "matta-varjjat.no", 14462 "mátta-várjjat.no", 14463 "meland.no", 14464 "meldal.no", 14465 "melhus.no", 14466 "meloy.no", 14467 "meløy.no", 14468 "meraker.no", 14469 "merÃ¥ker.no", 14470 "midsund.no", 14471 "midtre-gauldal.no", 14472 "moareke.no", 14473 "moÃ¥reke.no", 14474 "modalen.no", 14475 "modum.no", 14476 "molde.no", 14477 "heroy.more-og-romsdal.no", 14478 "sande.more-og-romsdal.no", 14479 "herøy.møre-og-romsdal.no", 14480 "sande.møre-og-romsdal.no", 14481 "moskenes.no", 14482 "moss.no", 14483 "mosvik.no", 14484 "muosat.no", 14485 "muosát.no", 14486 "naamesjevuemie.no", 14487 "nååmesjevuemie.no", 14488 "nærøy.no", 14489 "namdalseid.no", 14490 "namsos.no", 14491 "namsskogan.no", 14492 "nannestad.no", 14493 "naroy.no", 14494 "narviika.no", 14495 "narvik.no", 14496 "naustdal.no", 14497 "navuotna.no", 14498 "návuotna.no", 14499 "nedre-eiker.no", 14500 "nesna.no", 14501 "nesodden.no", 14502 "nesseby.no", 14503 "nesset.no", 14504 "nissedal.no", 14505 "nittedal.no", 14506 "nord-aurdal.no", 14507 "nord-fron.no", 14508 "nord-odal.no", 14509 "norddal.no", 14510 "nordkapp.no", 14511 "bo.nordland.no", 14512 "bø.nordland.no", 14513 "heroy.nordland.no", 14514 "herøy.nordland.no", 14515 "nordre-land.no", 14516 "nordreisa.no", 14517 "nore-og-uvdal.no", 14518 "notodden.no", 14519 "notteroy.no", 14520 "nøtterøy.no", 14521 "odda.no", 14522 "oksnes.no", 14523 "øksnes.no", 14524 "omasvuotna.no", 14525 "oppdal.no", 14526 "oppegard.no", 14527 "oppegÃ¥rd.no", 14528 "orkdal.no", 14529 "orland.no", 14530 "ørland.no", 14531 "orskog.no", 14532 "ørskog.no", 14533 "orsta.no", 14534 "ørsta.no", 14535 "osen.no", 14536 "osteroy.no", 14537 "osterøy.no", 14538 "valer.ostfold.no", 14539 "vÃ¥ler.østfold.no", 14540 "ostre-toten.no", 14541 "østre-toten.no", 14542 "overhalla.no", 14543 "ovre-eiker.no", 14544 "øvre-eiker.no", 14545 "oyer.no", 14546 "øyer.no", 14547 "oygarden.no", 14548 "øygarden.no", 14549 "oystre-slidre.no", 14550 "øystre-slidre.no", 14551 "porsanger.no", 14552 "porsangu.no", 14553 "porsáÅgu.no", 14554 "porsgrunn.no", 14555 "rade.no", 14556 "rÃ¥de.no", 14557 "radoy.no", 14558 "radøy.no", 14559 "rælingen.no", 14560 "rahkkeravju.no", 14561 "ráhkkerávju.no", 14562 "raisa.no", 14563 "ráisa.no", 14564 "rakkestad.no", 14565 "ralingen.no", 14566 "rana.no", 14567 "randaberg.no", 14568 "rauma.no", 14569 "rendalen.no", 14570 "rennebu.no", 14571 "rennesoy.no", 14572 "rennesøy.no", 14573 "rindal.no", 14574 "ringebu.no", 14575 "ringerike.no", 14576 "ringsaker.no", 14577 "risor.no", 14578 "risør.no", 14579 "rissa.no", 14580 "roan.no", 14581 "rodoy.no", 14582 "rødøy.no", 14583 "rollag.no", 14584 "romsa.no", 14585 "romskog.no", 14586 "rømskog.no", 14587 "roros.no", 14588 "røros.no", 14589 "rost.no", 14590 "røst.no", 14591 "royken.no", 14592 "røyken.no", 14593 "royrvik.no", 14594 "røyrvik.no", 14595 "ruovat.no", 14596 "rygge.no", 14597 "salangen.no", 14598 "salat.no", 14599 "sálat.no", 14600 "sálát.no", 14601 "saltdal.no", 14602 "samnanger.no", 14603 "sandefjord.no", 14604 "sandnes.no", 14605 "sandoy.no", 14606 "sandøy.no", 14607 "sarpsborg.no", 14608 "sauda.no", 14609 "sauherad.no", 14610 "sel.no", 14611 "selbu.no", 14612 "selje.no", 14613 "seljord.no", 14614 "siellak.no", 14615 "sigdal.no", 14616 "siljan.no", 14617 "sirdal.no", 14618 "skanit.no", 14619 "skánit.no", 14620 "skanland.no", 14621 "skÃ¥nland.no", 14622 "skaun.no", 14623 "skedsmo.no", 14624 "ski.no", 14625 "skien.no", 14626 "skierva.no", 14627 "skiervá.no", 14628 "skiptvet.no", 14629 "skjak.no", 14630 "skjÃ¥k.no", 14631 "skjervoy.no", 14632 "skjervøy.no", 14633 "skodje.no", 14634 "smola.no", 14635 "smøla.no", 14636 "snaase.no", 14637 "snÃ¥ase.no", 14638 "snasa.no", 14639 "snÃ¥sa.no", 14640 "snillfjord.no", 14641 "snoasa.no", 14642 "sogndal.no", 14643 "sogne.no", 14644 "søgne.no", 14645 "sokndal.no", 14646 "sola.no", 14647 "solund.no", 14648 "somna.no", 14649 "sømna.no", 14650 "sondre-land.no", 14651 "søndre-land.no", 14652 "songdalen.no", 14653 "sor-aurdal.no", 14654 "sør-aurdal.no", 14655 "sor-fron.no", 14656 "sør-fron.no", 14657 "sor-odal.no", 14658 "sør-odal.no", 14659 "sor-varanger.no", 14660 "sør-varanger.no", 14661 "sorfold.no", 14662 "sørfold.no", 14663 "sorreisa.no", 14664 "sørreisa.no", 14665 "sortland.no", 14666 "sorum.no", 14667 "sørum.no", 14668 "spydeberg.no", 14669 "stange.no", 14670 "stavanger.no", 14671 "steigen.no", 14672 "steinkjer.no", 14673 "stjordal.no", 14674 "stjørdal.no", 14675 "stokke.no", 14676 "stor-elvdal.no", 14677 "stord.no", 14678 "stordal.no", 14679 "storfjord.no", 14680 "strand.no", 14681 "stranda.no", 14682 "stryn.no", 14683 "sula.no", 14684 "suldal.no", 14685 "sund.no", 14686 "sunndal.no", 14687 "surnadal.no", 14688 "sveio.no", 14689 "svelvik.no", 14690 "sykkylven.no", 14691 "tana.no", 14692 "bo.telemark.no", 14693 "bø.telemark.no", 14694 "time.no", 14695 "tingvoll.no", 14696 "tinn.no", 14697 "tjeldsund.no", 14698 "tjome.no", 14699 "tjøme.no", 14700 "tokke.no", 14701 "tolga.no", 14702 "tonsberg.no", 14703 "tønsberg.no", 14704 "torsken.no", 14705 "træna.no", 14706 "trana.no", 14707 "tranoy.no", 14708 "tranøy.no", 14709 "troandin.no", 14710 "trogstad.no", 14711 "trøgstad.no", 14712 "tromsa.no", 14713 "tromso.no", 14714 "tromsø.no", 14715 "trondheim.no", 14716 "trysil.no", 14717 "tvedestrand.no", 14718 "tydal.no", 14719 "tynset.no", 14720 "tysfjord.no", 14721 "tysnes.no", 14722 "tysvær.no", 14723 "tysvar.no", 14724 "ullensaker.no", 14725 "ullensvang.no", 14726 "ulvik.no", 14727 "unjarga.no", 14728 "unjárga.no", 14729 "utsira.no", 14730 "vaapste.no", 14731 "vadso.no", 14732 "vadsø.no", 14733 "værøy.no", 14734 "vaga.no", 14735 "vÃ¥gÃ¥.no", 14736 "vagan.no", 14737 "vÃ¥gan.no", 14738 "vagsoy.no", 14739 "vÃ¥gsøy.no", 14740 "vaksdal.no", 14741 "valle.no", 14742 "vang.no", 14743 "vanylven.no", 14744 "vardo.no", 14745 "vardø.no", 14746 "varggat.no", 14747 "várggát.no", 14748 "varoy.no", 14749 "vefsn.no", 14750 "vega.no", 14751 "vegarshei.no", 14752 "vegÃ¥rshei.no", 14753 "vennesla.no", 14754 "verdal.no", 14755 "verran.no", 14756 "vestby.no", 14757 "sande.vestfold.no", 14758 "vestnes.no", 14759 "vestre-slidre.no", 14760 "vestre-toten.no", 14761 "vestvagoy.no", 14762 "vestvÃ¥gøy.no", 14763 "vevelstad.no", 14764 "vik.no", 14765 "vikna.no", 14766 "vindafjord.no", 14767 "voagat.no", 14768 "volda.no", 14769 "voss.no", 14770 "*.np", 14771 "nr", 14772 "biz.nr", 14773 "com.nr", 14774 "edu.nr", 14775 "gov.nr", 14776 "info.nr", 14777 "net.nr", 14778 "org.nr", 14779 "nu", 14780 "nz", 14781 "ac.nz", 14782 "co.nz", 14783 "cri.nz", 14784 "geek.nz", 14785 "gen.nz", 14786 "govt.nz", 14787 "health.nz", 14788 "iwi.nz", 14789 "kiwi.nz", 14790 "maori.nz", 14791 "mÄori.nz", 14792 "mil.nz", 14793 "net.nz", 14794 "org.nz", 14795 "parliament.nz", 14796 "school.nz", 14797 "om", 14798 "co.om", 14799 "com.om", 14800 "edu.om", 14801 "gov.om", 14802 "med.om", 14803 "museum.om", 14804 "net.om", 14805 "org.om", 14806 "pro.om", 14807 "onion", 14808 "org", 14809 "pa", 14810 "abo.pa", 14811 "ac.pa", 14812 "com.pa", 14813 "edu.pa", 14814 "gob.pa", 14815 "ing.pa", 14816 "med.pa", 14817 "net.pa", 14818 "nom.pa", 14819 "org.pa", 14820 "sld.pa", 14821 "pe", 14822 "com.pe", 14823 "edu.pe", 14824 "gob.pe", 14825 "mil.pe", 14826 "net.pe", 14827 "nom.pe", 14828 "org.pe", 14829 "pf", 14830 "com.pf", 14831 "edu.pf", 14832 "org.pf", 14833 "*.pg", 14834 "ph", 14835 "com.ph", 14836 "edu.ph", 14837 "gov.ph", 14838 "i.ph", 14839 "mil.ph", 14840 "net.ph", 14841 "ngo.ph", 14842 "org.ph", 14843 "pk", 14844 "ac.pk", 14845 "biz.pk", 14846 "com.pk", 14847 "edu.pk", 14848 "fam.pk", 14849 "gkp.pk", 14850 "gob.pk", 14851 "gog.pk", 14852 "gok.pk", 14853 "gon.pk", 14854 "gop.pk", 14855 "gos.pk", 14856 "gov.pk", 14857 "net.pk", 14858 "org.pk", 14859 "web.pk", 14860 "pl", 14861 "com.pl", 14862 "net.pl", 14863 "org.pl", 14864 "agro.pl", 14865 "aid.pl", 14866 "atm.pl", 14867 "auto.pl", 14868 "biz.pl", 14869 "edu.pl", 14870 "gmina.pl", 14871 "gsm.pl", 14872 "info.pl", 14873 "mail.pl", 14874 "media.pl", 14875 "miasta.pl", 14876 "mil.pl", 14877 "nieruchomosci.pl", 14878 "nom.pl", 14879 "pc.pl", 14880 "powiat.pl", 14881 "priv.pl", 14882 "realestate.pl", 14883 "rel.pl", 14884 "sex.pl", 14885 "shop.pl", 14886 "sklep.pl", 14887 "sos.pl", 14888 "szkola.pl", 14889 "targi.pl", 14890 "tm.pl", 14891 "tourism.pl", 14892 "travel.pl", 14893 "turystyka.pl", 14894 "gov.pl", 14895 "ap.gov.pl", 14896 "griw.gov.pl", 14897 "ic.gov.pl", 14898 "is.gov.pl", 14899 "kmpsp.gov.pl", 14900 "konsulat.gov.pl", 14901 "kppsp.gov.pl", 14902 "kwp.gov.pl", 14903 "kwpsp.gov.pl", 14904 "mup.gov.pl", 14905 "mw.gov.pl", 14906 "oia.gov.pl", 14907 "oirm.gov.pl", 14908 "oke.gov.pl", 14909 "oow.gov.pl", 14910 "oschr.gov.pl", 14911 "oum.gov.pl", 14912 "pa.gov.pl", 14913 "pinb.gov.pl", 14914 "piw.gov.pl", 14915 "po.gov.pl", 14916 "pr.gov.pl", 14917 "psp.gov.pl", 14918 "psse.gov.pl", 14919 "pup.gov.pl", 14920 "rzgw.gov.pl", 14921 "sa.gov.pl", 14922 "sdn.gov.pl", 14923 "sko.gov.pl", 14924 "so.gov.pl", 14925 "sr.gov.pl", 14926 "starostwo.gov.pl", 14927 "ug.gov.pl", 14928 "ugim.gov.pl", 14929 "um.gov.pl", 14930 "umig.gov.pl", 14931 "upow.gov.pl", 14932 "uppo.gov.pl", 14933 "us.gov.pl", 14934 "uw.gov.pl", 14935 "uzs.gov.pl", 14936 "wif.gov.pl", 14937 "wiih.gov.pl", 14938 "winb.gov.pl", 14939 "wios.gov.pl", 14940 "witd.gov.pl", 14941 "wiw.gov.pl", 14942 "wkz.gov.pl", 14943 "wsa.gov.pl", 14944 "wskr.gov.pl", 14945 "wsse.gov.pl", 14946 "wuoz.gov.pl", 14947 "wzmiuw.gov.pl", 14948 "zp.gov.pl", 14949 "zpisdn.gov.pl", 14950 "augustow.pl", 14951 "babia-gora.pl", 14952 "bedzin.pl", 14953 "beskidy.pl", 14954 "bialowieza.pl", 14955 "bialystok.pl", 14956 "bielawa.pl", 14957 "bieszczady.pl", 14958 "boleslawiec.pl", 14959 "bydgoszcz.pl", 14960 "bytom.pl", 14961 "cieszyn.pl", 14962 "czeladz.pl", 14963 "czest.pl", 14964 "dlugoleka.pl", 14965 "elblag.pl", 14966 "elk.pl", 14967 "glogow.pl", 14968 "gniezno.pl", 14969 "gorlice.pl", 14970 "grajewo.pl", 14971 "ilawa.pl", 14972 "jaworzno.pl", 14973 "jelenia-gora.pl", 14974 "jgora.pl", 14975 "kalisz.pl", 14976 "karpacz.pl", 14977 "kartuzy.pl", 14978 "kaszuby.pl", 14979 "katowice.pl", 14980 "kazimierz-dolny.pl", 14981 "kepno.pl", 14982 "ketrzyn.pl", 14983 "klodzko.pl", 14984 "kobierzyce.pl", 14985 "kolobrzeg.pl", 14986 "konin.pl", 14987 "konskowola.pl", 14988 "kutno.pl", 14989 "lapy.pl", 14990 "lebork.pl", 14991 "legnica.pl", 14992 "lezajsk.pl", 14993 "limanowa.pl", 14994 "lomza.pl", 14995 "lowicz.pl", 14996 "lubin.pl", 14997 "lukow.pl", 14998 "malbork.pl", 14999 "malopolska.pl", 15000 "mazowsze.pl", 15001 "mazury.pl", 15002 "mielec.pl", 15003 "mielno.pl", 15004 "mragowo.pl", 15005 "naklo.pl", 15006 "nowaruda.pl", 15007 "nysa.pl", 15008 "olawa.pl", 15009 "olecko.pl", 15010 "olkusz.pl", 15011 "olsztyn.pl", 15012 "opoczno.pl", 15013 "opole.pl", 15014 "ostroda.pl", 15015 "ostroleka.pl", 15016 "ostrowiec.pl", 15017 "ostrowwlkp.pl", 15018 "pila.pl", 15019 "pisz.pl", 15020 "podhale.pl", 15021 "podlasie.pl", 15022 "polkowice.pl", 15023 "pomorskie.pl", 15024 "pomorze.pl", 15025 "prochowice.pl", 15026 "pruszkow.pl", 15027 "przeworsk.pl", 15028 "pulawy.pl", 15029 "radom.pl", 15030 "rawa-maz.pl", 15031 "rybnik.pl", 15032 "rzeszow.pl", 15033 "sanok.pl", 15034 "sejny.pl", 15035 "skoczow.pl", 15036 "slask.pl", 15037 "slupsk.pl", 15038 "sosnowiec.pl", 15039 "stalowa-wola.pl", 15040 "starachowice.pl", 15041 "stargard.pl", 15042 "suwalki.pl", 15043 "swidnica.pl", 15044 "swiebodzin.pl", 15045 "swinoujscie.pl", 15046 "szczecin.pl", 15047 "szczytno.pl", 15048 "tarnobrzeg.pl", 15049 "tgory.pl", 15050 "turek.pl", 15051 "tychy.pl", 15052 "ustka.pl", 15053 "walbrzych.pl", 15054 "warmia.pl", 15055 "warszawa.pl", 15056 "waw.pl", 15057 "wegrow.pl", 15058 "wielun.pl", 15059 "wlocl.pl", 15060 "wloclawek.pl", 15061 "wodzislaw.pl", 15062 "wolomin.pl", 15063 "wroclaw.pl", 15064 "zachpomor.pl", 15065 "zagan.pl", 15066 "zarow.pl", 15067 "zgora.pl", 15068 "zgorzelec.pl", 15069 "pm", 15070 "pn", 15071 "co.pn", 15072 "edu.pn", 15073 "gov.pn", 15074 "net.pn", 15075 "org.pn", 15076 "post", 15077 "pr", 15078 "biz.pr", 15079 "com.pr", 15080 "edu.pr", 15081 "gov.pr", 15082 "info.pr", 15083 "isla.pr", 15084 "name.pr", 15085 "net.pr", 15086 "org.pr", 15087 "pro.pr", 15088 "ac.pr", 15089 "est.pr", 15090 "prof.pr", 15091 "pro", 15092 "aaa.pro", 15093 "aca.pro", 15094 "acct.pro", 15095 "avocat.pro", 15096 "bar.pro", 15097 "cpa.pro", 15098 "eng.pro", 15099 "jur.pro", 15100 "law.pro", 15101 "med.pro", 15102 "recht.pro", 15103 "ps", 15104 "com.ps", 15105 "edu.ps", 15106 "gov.ps", 15107 "net.ps", 15108 "org.ps", 15109 "plo.ps", 15110 "sec.ps", 15111 "pt", 15112 "com.pt", 15113 "edu.pt", 15114 "gov.pt", 15115 "int.pt", 15116 "net.pt", 15117 "nome.pt", 15118 "org.pt", 15119 "publ.pt", 15120 "pw", 15121 "belau.pw", 15122 "co.pw", 15123 "ed.pw", 15124 "go.pw", 15125 "or.pw", 15126 "py", 15127 "com.py", 15128 "coop.py", 15129 "edu.py", 15130 "gov.py", 15131 "mil.py", 15132 "net.py", 15133 "org.py", 15134 "qa", 15135 "com.qa", 15136 "edu.qa", 15137 "gov.qa", 15138 "mil.qa", 15139 "name.qa", 15140 "net.qa", 15141 "org.qa", 15142 "sch.qa", 15143 "re", 15144 "asso.re", 15145 "com.re", 15146 "ro", 15147 "arts.ro", 15148 "com.ro", 15149 "firm.ro", 15150 "info.ro", 15151 "nom.ro", 15152 "nt.ro", 15153 "org.ro", 15154 "rec.ro", 15155 "store.ro", 15156 "tm.ro", 15157 "www.ro", 15158 "rs", 15159 "ac.rs", 15160 "co.rs", 15161 "edu.rs", 15162 "gov.rs", 15163 "in.rs", 15164 "org.rs", 15165 "ru", 15166 "rw", 15167 "ac.rw", 15168 "co.rw", 15169 "coop.rw", 15170 "gov.rw", 15171 "mil.rw", 15172 "net.rw", 15173 "org.rw", 15174 "sa", 15175 "com.sa", 15176 "edu.sa", 15177 "gov.sa", 15178 "med.sa", 15179 "net.sa", 15180 "org.sa", 15181 "pub.sa", 15182 "sch.sa", 15183 "sb", 15184 "com.sb", 15185 "edu.sb", 15186 "gov.sb", 15187 "net.sb", 15188 "org.sb", 15189 "sc", 15190 "com.sc", 15191 "edu.sc", 15192 "gov.sc", 15193 "net.sc", 15194 "org.sc", 15195 "sd", 15196 "com.sd", 15197 "edu.sd", 15198 "gov.sd", 15199 "info.sd", 15200 "med.sd", 15201 "net.sd", 15202 "org.sd", 15203 "tv.sd", 15204 "se", 15205 "a.se", 15206 "ac.se", 15207 "b.se", 15208 "bd.se", 15209 "brand.se", 15210 "c.se", 15211 "d.se", 15212 "e.se", 15213 "f.se", 15214 "fh.se", 15215 "fhsk.se", 15216 "fhv.se", 15217 "g.se", 15218 "h.se", 15219 "i.se", 15220 "k.se", 15221 "komforb.se", 15222 "kommunalforbund.se", 15223 "komvux.se", 15224 "l.se", 15225 "lanbib.se", 15226 "m.se", 15227 "n.se", 15228 "naturbruksgymn.se", 15229 "o.se", 15230 "org.se", 15231 "p.se", 15232 "parti.se", 15233 "pp.se", 15234 "press.se", 15235 "r.se", 15236 "s.se", 15237 "t.se", 15238 "tm.se", 15239 "u.se", 15240 "w.se", 15241 "x.se", 15242 "y.se", 15243 "z.se", 15244 "sg", 15245 "com.sg", 15246 "edu.sg", 15247 "gov.sg", 15248 "net.sg", 15249 "org.sg", 15250 "sh", 15251 "com.sh", 15252 "gov.sh", 15253 "mil.sh", 15254 "net.sh", 15255 "org.sh", 15256 "si", 15257 "sj", 15258 "sk", 15259 "sl", 15260 "com.sl", 15261 "edu.sl", 15262 "gov.sl", 15263 "net.sl", 15264 "org.sl", 15265 "sm", 15266 "sn", 15267 "art.sn", 15268 "com.sn", 15269 "edu.sn", 15270 "gouv.sn", 15271 "org.sn", 15272 "perso.sn", 15273 "univ.sn", 15274 "so", 15275 "com.so", 15276 "edu.so", 15277 "gov.so", 15278 "me.so", 15279 "net.so", 15280 "org.so", 15281 "sr", 15282 "ss", 15283 "biz.ss", 15284 "co.ss", 15285 "com.ss", 15286 "edu.ss", 15287 "gov.ss", 15288 "me.ss", 15289 "net.ss", 15290 "org.ss", 15291 "sch.ss", 15292 "st", 15293 "co.st", 15294 "com.st", 15295 "consulado.st", 15296 "edu.st", 15297 "embaixada.st", 15298 "mil.st", 15299 "net.st", 15300 "org.st", 15301 "principe.st", 15302 "saotome.st", 15303 "store.st", 15304 "su", 15305 "sv", 15306 "com.sv", 15307 "edu.sv", 15308 "gob.sv", 15309 "org.sv", 15310 "red.sv", 15311 "sx", 15312 "gov.sx", 15313 "sy", 15314 "com.sy", 15315 "edu.sy", 15316 "gov.sy", 15317 "mil.sy", 15318 "net.sy", 15319 "org.sy", 15320 "sz", 15321 "ac.sz", 15322 "co.sz", 15323 "org.sz", 15324 "tc", 15325 "td", 15326 "tel", 15327 "tf", 15328 "tg", 15329 "th", 15330 "ac.th", 15331 "co.th", 15332 "go.th", 15333 "in.th", 15334 "mi.th", 15335 "net.th", 15336 "or.th", 15337 "tj", 15338 "ac.tj", 15339 "biz.tj", 15340 "co.tj", 15341 "com.tj", 15342 "edu.tj", 15343 "go.tj", 15344 "gov.tj", 15345 "int.tj", 15346 "mil.tj", 15347 "name.tj", 15348 "net.tj", 15349 "nic.tj", 15350 "org.tj", 15351 "test.tj", 15352 "web.tj", 15353 "tk", 15354 "tl", 15355 "gov.tl", 15356 "tm", 15357 "co.tm", 15358 "com.tm", 15359 "edu.tm", 15360 "gov.tm", 15361 "mil.tm", 15362 "net.tm", 15363 "nom.tm", 15364 "org.tm", 15365 "tn", 15366 "com.tn", 15367 "ens.tn", 15368 "fin.tn", 15369 "gov.tn", 15370 "ind.tn", 15371 "info.tn", 15372 "intl.tn", 15373 "mincom.tn", 15374 "nat.tn", 15375 "net.tn", 15376 "org.tn", 15377 "perso.tn", 15378 "tourism.tn", 15379 "to", 15380 "com.to", 15381 "edu.to", 15382 "gov.to", 15383 "mil.to", 15384 "net.to", 15385 "org.to", 15386 "tr", 15387 "av.tr", 15388 "bbs.tr", 15389 "bel.tr", 15390 "biz.tr", 15391 "com.tr", 15392 "dr.tr", 15393 "edu.tr", 15394 "gen.tr", 15395 "gov.tr", 15396 "info.tr", 15397 "k12.tr", 15398 "kep.tr", 15399 "mil.tr", 15400 "name.tr", 15401 "net.tr", 15402 "org.tr", 15403 "pol.tr", 15404 "tel.tr", 15405 "tsk.tr", 15406 "tv.tr", 15407 "web.tr", 15408 "nc.tr", 15409 "gov.nc.tr", 15410 "tt", 15411 "biz.tt", 15412 "co.tt", 15413 "com.tt", 15414 "edu.tt", 15415 "gov.tt", 15416 "info.tt", 15417 "mil.tt", 15418 "name.tt", 15419 "net.tt", 15420 "org.tt", 15421 "pro.tt", 15422 "tv", 15423 "tw", 15424 "club.tw", 15425 "com.tw", 15426 "ebiz.tw", 15427 "edu.tw", 15428 "game.tw", 15429 "gov.tw", 15430 "idv.tw", 15431 "mil.tw", 15432 "net.tw", 15433 "org.tw", 15434 "tz", 15435 "ac.tz", 15436 "co.tz", 15437 "go.tz", 15438 "hotel.tz", 15439 "info.tz", 15440 "me.tz", 15441 "mil.tz", 15442 "mobi.tz", 15443 "ne.tz", 15444 "or.tz", 15445 "sc.tz", 15446 "tv.tz", 15447 "ua", 15448 "com.ua", 15449 "edu.ua", 15450 "gov.ua", 15451 "in.ua", 15452 "net.ua", 15453 "org.ua", 15454 "cherkassy.ua", 15455 "cherkasy.ua", 15456 "chernigov.ua", 15457 "chernihiv.ua", 15458 "chernivtsi.ua", 15459 "chernovtsy.ua", 15460 "ck.ua", 15461 "cn.ua", 15462 "cr.ua", 15463 "crimea.ua", 15464 "cv.ua", 15465 "dn.ua", 15466 "dnepropetrovsk.ua", 15467 "dnipropetrovsk.ua", 15468 "donetsk.ua", 15469 "dp.ua", 15470 "if.ua", 15471 "ivano-frankivsk.ua", 15472 "kh.ua", 15473 "kharkiv.ua", 15474 "kharkov.ua", 15475 "kherson.ua", 15476 "khmelnitskiy.ua", 15477 "khmelnytskyi.ua", 15478 "kiev.ua", 15479 "kirovograd.ua", 15480 "km.ua", 15481 "kr.ua", 15482 "kropyvnytskyi.ua", 15483 "krym.ua", 15484 "ks.ua", 15485 "kv.ua", 15486 "kyiv.ua", 15487 "lg.ua", 15488 "lt.ua", 15489 "lugansk.ua", 15490 "luhansk.ua", 15491 "lutsk.ua", 15492 "lv.ua", 15493 "lviv.ua", 15494 "mk.ua", 15495 "mykolaiv.ua", 15496 "nikolaev.ua", 15497 "od.ua", 15498 "odesa.ua", 15499 "odessa.ua", 15500 "pl.ua", 15501 "poltava.ua", 15502 "rivne.ua", 15503 "rovno.ua", 15504 "rv.ua", 15505 "sb.ua", 15506 "sebastopol.ua", 15507 "sevastopol.ua", 15508 "sm.ua", 15509 "sumy.ua", 15510 "te.ua", 15511 "ternopil.ua", 15512 "uz.ua", 15513 "uzhgorod.ua", 15514 "uzhhorod.ua", 15515 "vinnica.ua", 15516 "vinnytsia.ua", 15517 "vn.ua", 15518 "volyn.ua", 15519 "yalta.ua", 15520 "zakarpattia.ua", 15521 "zaporizhzhe.ua", 15522 "zaporizhzhia.ua", 15523 "zhitomir.ua", 15524 "zhytomyr.ua", 15525 "zp.ua", 15526 "zt.ua", 15527 "ug", 15528 "ac.ug", 15529 "co.ug", 15530 "com.ug", 15531 "go.ug", 15532 "ne.ug", 15533 "or.ug", 15534 "org.ug", 15535 "sc.ug", 15536 "uk", 15537 "ac.uk", 15538 "co.uk", 15539 "gov.uk", 15540 "ltd.uk", 15541 "me.uk", 15542 "net.uk", 15543 "nhs.uk", 15544 "org.uk", 15545 "plc.uk", 15546 "police.uk", 15547 "*.sch.uk", 15548 "us", 15549 "dni.us", 15550 "fed.us", 15551 "isa.us", 15552 "kids.us", 15553 "nsn.us", 15554 "ak.us", 15555 "al.us", 15556 "ar.us", 15557 "as.us", 15558 "az.us", 15559 "ca.us", 15560 "co.us", 15561 "ct.us", 15562 "dc.us", 15563 "de.us", 15564 "fl.us", 15565 "ga.us", 15566 "gu.us", 15567 "hi.us", 15568 "ia.us", 15569 "id.us", 15570 "il.us", 15571 "in.us", 15572 "ks.us", 15573 "ky.us", 15574 "la.us", 15575 "ma.us", 15576 "md.us", 15577 "me.us", 15578 "mi.us", 15579 "mn.us", 15580 "mo.us", 15581 "ms.us", 15582 "mt.us", 15583 "nc.us", 15584 "nd.us", 15585 "ne.us", 15586 "nh.us", 15587 "nj.us", 15588 "nm.us", 15589 "nv.us", 15590 "ny.us", 15591 "oh.us", 15592 "ok.us", 15593 "or.us", 15594 "pa.us", 15595 "pr.us", 15596 "ri.us", 15597 "sc.us", 15598 "sd.us", 15599 "tn.us", 15600 "tx.us", 15601 "ut.us", 15602 "va.us", 15603 "vi.us", 15604 "vt.us", 15605 "wa.us", 15606 "wi.us", 15607 "wv.us", 15608 "wy.us", 15609 "k12.ak.us", 15610 "k12.al.us", 15611 "k12.ar.us", 15612 "k12.as.us", 15613 "k12.az.us", 15614 "k12.ca.us", 15615 "k12.co.us", 15616 "k12.ct.us", 15617 "k12.dc.us", 15618 "k12.fl.us", 15619 "k12.ga.us", 15620 "k12.gu.us", 15621 "k12.ia.us", 15622 "k12.id.us", 15623 "k12.il.us", 15624 "k12.in.us", 15625 "k12.ks.us", 15626 "k12.ky.us", 15627 "k12.la.us", 15628 "k12.ma.us", 15629 "k12.md.us", 15630 "k12.me.us", 15631 "k12.mi.us", 15632 "k12.mn.us", 15633 "k12.mo.us", 15634 "k12.ms.us", 15635 "k12.mt.us", 15636 "k12.nc.us", 15637 "k12.ne.us", 15638 "k12.nh.us", 15639 "k12.nj.us", 15640 "k12.nm.us", 15641 "k12.nv.us", 15642 "k12.ny.us", 15643 "k12.oh.us", 15644 "k12.ok.us", 15645 "k12.or.us", 15646 "k12.pa.us", 15647 "k12.pr.us", 15648 "k12.sc.us", 15649 "k12.tn.us", 15650 "k12.tx.us", 15651 "k12.ut.us", 15652 "k12.va.us", 15653 "k12.vi.us", 15654 "k12.vt.us", 15655 "k12.wa.us", 15656 "k12.wi.us", 15657 "cc.ak.us", 15658 "lib.ak.us", 15659 "cc.al.us", 15660 "lib.al.us", 15661 "cc.ar.us", 15662 "lib.ar.us", 15663 "cc.as.us", 15664 "lib.as.us", 15665 "cc.az.us", 15666 "lib.az.us", 15667 "cc.ca.us", 15668 "lib.ca.us", 15669 "cc.co.us", 15670 "lib.co.us", 15671 "cc.ct.us", 15672 "lib.ct.us", 15673 "cc.dc.us", 15674 "lib.dc.us", 15675 "cc.de.us", 15676 "cc.fl.us", 15677 "cc.ga.us", 15678 "cc.gu.us", 15679 "cc.hi.us", 15680 "cc.ia.us", 15681 "cc.id.us", 15682 "cc.il.us", 15683 "cc.in.us", 15684 "cc.ks.us", 15685 "cc.ky.us", 15686 "cc.la.us", 15687 "cc.ma.us", 15688 "cc.md.us", 15689 "cc.me.us", 15690 "cc.mi.us", 15691 "cc.mn.us", 15692 "cc.mo.us", 15693 "cc.ms.us", 15694 "cc.mt.us", 15695 "cc.nc.us", 15696 "cc.nd.us", 15697 "cc.ne.us", 15698 "cc.nh.us", 15699 "cc.nj.us", 15700 "cc.nm.us", 15701 "cc.nv.us", 15702 "cc.ny.us", 15703 "cc.oh.us", 15704 "cc.ok.us", 15705 "cc.or.us", 15706 "cc.pa.us", 15707 "cc.pr.us", 15708 "cc.ri.us", 15709 "cc.sc.us", 15710 "cc.sd.us", 15711 "cc.tn.us", 15712 "cc.tx.us", 15713 "cc.ut.us", 15714 "cc.va.us", 15715 "cc.vi.us", 15716 "cc.vt.us", 15717 "cc.wa.us", 15718 "cc.wi.us", 15719 "cc.wv.us", 15720 "cc.wy.us", 15721 "k12.wy.us", 15722 "lib.fl.us", 15723 "lib.ga.us", 15724 "lib.gu.us", 15725 "lib.hi.us", 15726 "lib.ia.us", 15727 "lib.id.us", 15728 "lib.il.us", 15729 "lib.in.us", 15730 "lib.ks.us", 15731 "lib.ky.us", 15732 "lib.la.us", 15733 "lib.ma.us", 15734 "lib.md.us", 15735 "lib.me.us", 15736 "lib.mi.us", 15737 "lib.mn.us", 15738 "lib.mo.us", 15739 "lib.ms.us", 15740 "lib.mt.us", 15741 "lib.nc.us", 15742 "lib.nd.us", 15743 "lib.ne.us", 15744 "lib.nh.us", 15745 "lib.nj.us", 15746 "lib.nm.us", 15747 "lib.nv.us", 15748 "lib.ny.us", 15749 "lib.oh.us", 15750 "lib.ok.us", 15751 "lib.or.us", 15752 "lib.pa.us", 15753 "lib.pr.us", 15754 "lib.ri.us", 15755 "lib.sc.us", 15756 "lib.sd.us", 15757 "lib.tn.us", 15758 "lib.tx.us", 15759 "lib.ut.us", 15760 "lib.va.us", 15761 "lib.vi.us", 15762 "lib.vt.us", 15763 "lib.wa.us", 15764 "lib.wi.us", 15765 "lib.wy.us", 15766 "chtr.k12.ma.us", 15767 "paroch.k12.ma.us", 15768 "pvt.k12.ma.us", 15769 "ann-arbor.mi.us", 15770 "cog.mi.us", 15771 "dst.mi.us", 15772 "eaton.mi.us", 15773 "gen.mi.us", 15774 "mus.mi.us", 15775 "tec.mi.us", 15776 "washtenaw.mi.us", 15777 "uy", 15778 "com.uy", 15779 "edu.uy", 15780 "gub.uy", 15781 "mil.uy", 15782 "net.uy", 15783 "org.uy", 15784 "uz", 15785 "co.uz", 15786 "com.uz", 15787 "net.uz", 15788 "org.uz", 15789 "va", 15790 "vc", 15791 "com.vc", 15792 "edu.vc", 15793 "gov.vc", 15794 "mil.vc", 15795 "net.vc", 15796 "org.vc", 15797 "ve", 15798 "arts.ve", 15799 "bib.ve", 15800 "co.ve", 15801 "com.ve", 15802 "e12.ve", 15803 "edu.ve", 15804 "firm.ve", 15805 "gob.ve", 15806 "gov.ve", 15807 "info.ve", 15808 "int.ve", 15809 "mil.ve", 15810 "net.ve", 15811 "nom.ve", 15812 "org.ve", 15813 "rar.ve", 15814 "rec.ve", 15815 "store.ve", 15816 "tec.ve", 15817 "web.ve", 15818 "vg", 15819 "vi", 15820 "co.vi", 15821 "com.vi", 15822 "k12.vi", 15823 "net.vi", 15824 "org.vi", 15825 "vn", 15826 "ac.vn", 15827 "ai.vn", 15828 "biz.vn", 15829 "com.vn", 15830 "edu.vn", 15831 "gov.vn", 15832 "health.vn", 15833 "id.vn", 15834 "info.vn", 15835 "int.vn", 15836 "io.vn", 15837 "name.vn", 15838 "net.vn", 15839 "org.vn", 15840 "pro.vn", 15841 "angiang.vn", 15842 "bacgiang.vn", 15843 "backan.vn", 15844 "baclieu.vn", 15845 "bacninh.vn", 15846 "baria-vungtau.vn", 15847 "bentre.vn", 15848 "binhdinh.vn", 15849 "binhduong.vn", 15850 "binhphuoc.vn", 15851 "binhthuan.vn", 15852 "camau.vn", 15853 "cantho.vn", 15854 "caobang.vn", 15855 "daklak.vn", 15856 "daknong.vn", 15857 "danang.vn", 15858 "dienbien.vn", 15859 "dongnai.vn", 15860 "dongthap.vn", 15861 "gialai.vn", 15862 "hagiang.vn", 15863 "haiduong.vn", 15864 "haiphong.vn", 15865 "hanam.vn", 15866 "hanoi.vn", 15867 "hatinh.vn", 15868 "haugiang.vn", 15869 "hoabinh.vn", 15870 "hungyen.vn", 15871 "khanhhoa.vn", 15872 "kiengiang.vn", 15873 "kontum.vn", 15874 "laichau.vn", 15875 "lamdong.vn", 15876 "langson.vn", 15877 "laocai.vn", 15878 "longan.vn", 15879 "namdinh.vn", 15880 "nghean.vn", 15881 "ninhbinh.vn", 15882 "ninhthuan.vn", 15883 "phutho.vn", 15884 "phuyen.vn", 15885 "quangbinh.vn", 15886 "quangnam.vn", 15887 "quangngai.vn", 15888 "quangninh.vn", 15889 "quangtri.vn", 15890 "soctrang.vn", 15891 "sonla.vn", 15892 "tayninh.vn", 15893 "thaibinh.vn", 15894 "thainguyen.vn", 15895 "thanhhoa.vn", 15896 "thanhphohochiminh.vn", 15897 "thuathienhue.vn", 15898 "tiengiang.vn", 15899 "travinh.vn", 15900 "tuyenquang.vn", 15901 "vinhlong.vn", 15902 "vinhphuc.vn", 15903 "yenbai.vn", 15904 "vu", 15905 "com.vu", 15906 "edu.vu", 15907 "net.vu", 15908 "org.vu", 15909 "wf", 15910 "ws", 15911 "com.ws", 15912 "edu.ws", 15913 "gov.ws", 15914 "net.ws", 15915 "org.ws", 15916 "yt", 15917 "ا٠ارات", 15918 "Õ°Õ¡Õµ", 15919 "বাà¦à¦²à¦¾", 15920 "бг", 15921 "Ø§ÙØ¨ØØ±ÙÙ", 15922 "бел", 15923 "ä¸å½", 15924 "ä¸å", 15925 "Ø§ÙØ¬Ø²Ø§Ø¦Ø±", 15926 "٠صر", 15927 "еÑ", 15928 "ÎµÏ ", 15929 "Ù ÙØ±ÙتاÙÙØ§", 15930 "áá", 15931 "ελ", 15932 "馿¸¯", 15933 "å人.馿¸¯", 15934 "å ¬å¸.馿¸¯", 15935 "æ¿åº.馿¸¯", 15936 "æè².馿¸¯", 15937 "çµç¹.馿¸¯", 15938 "網絡.馿¸¯", 15939 "à²à²¾à²°à²¤", 15940 "à¬à¬¾à¬°à¬¤", 15941 "à¦à¦¾à§°à¦¤", 15942 "à¤à¤¾à¤°à¤¤à¤®à¥", 15943 "à¤à¤¾à¤°à¥à¤¤", 15944 "ÚØ§Ø±Øª", 15945 "à´à´¾à´°à´¤à´", 15946 "à¤à¤¾à¤°à¤¤", 15947 "بارت", 15948 "بھارت", 15949 "à°à°¾à°°à°¤à±", 15950 "àªàª¾àª°àª¤", 15951 "à¨à¨¾à¨°à¨¤", 15952 "à¦à¦¾à¦°à¦¤", 15953 "à®à®¨à¯à®¤à®¿à®¯à®¾", 15954 "Ø§ÛØ±Ø§Ù", 15955 "Ø§ÙØ±Ø§Ù", 15956 "عراÙ", 15957 "Ø§ÙØ§Ø±Ø¯Ù", 15958 "íêµ", 15959 "Òаз", 15960 "ລາວ", 15961 "à¶½à¶à¶à·", 15962 "à®à®²à®à¯à®à¯", 15963 "اÙ٠غرب", 15964 "мкд", 15965 "мон", 15966 "æ¾³é", 15967 "æ¾³é¨", 15968 "Ù ÙÙØ³Ùا", 15969 "ع٠اÙ", 15970 "پاکستاÙ", 15971 "Ù¾Ø§ÙØ³ØªØ§Ù", 15972 "ÙÙØ³Ø·ÙÙ", 15973 "ÑÑб", 15974 "ак.ÑÑб", 15975 "обÑ.ÑÑб", 15976 "од.ÑÑб", 15977 "оÑг.ÑÑб", 15978 "пÑ.ÑÑб", 15979 "ÑпÑ.ÑÑб", 15980 "ÑÑ", 15981 "ÙØ·Ø±", 15982 "Ø§ÙØ³Ø¹ÙØ¯ÙØ©", 15983 "Ø§ÙØ³Ø¹ÙØ¯ÛØ©", 15984 "Ø§ÙØ³Ø¹ÙدÛÛ", 15985 "Ø§ÙØ³Ø¹ÙدÙÙ", 15986 "Ø³ÙØ¯Ø§Ù", 15987 "æ°å å¡", 15988 "à®à®¿à®à¯à®à®ªà¯à®ªà¯à®°à¯", 15989 "Ø³ÙØ±ÙØ©", 15990 "Ø³ÙØ±Ùا", 15991 "à¹à¸à¸¢", 15992 "à¸à¸«à¸²à¸£.à¹à¸à¸¢", 15993 "à¸à¸¸à¸£à¸à¸´à¸.à¹à¸à¸¢", 15994 "à¹à¸à¹à¸.à¹à¸à¸¢", 15995 "รัà¸à¸à¸²à¸¥.à¹à¸à¸¢", 15996 "ศึà¸à¸©à¸².à¹à¸à¸¢", 15997 "à¸à¸à¸à¹à¸à¸£.à¹à¸à¸¢", 15998 "تÙÙØ³", 15999 "å°ç£", 16000 "å°æ¹¾", 16001 "èºç£", 16002 "ÑкÑ", 16003 "اÙÙÙ Ù", 16004 "xxx", 16005 "ye", 16006 "com.ye", 16007 "edu.ye", 16008 "gov.ye", 16009 "mil.ye", 16010 "net.ye", 16011 "org.ye", 16012 "ac.za", 16013 "agric.za", 16014 "alt.za", 16015 "co.za", 16016 "edu.za", 16017 "gov.za", 16018 "grondar.za", 16019 "law.za", 16020 "mil.za", 16021 "net.za", 16022 "ngo.za", 16023 "nic.za", 16024 "nis.za", 16025 "nom.za", 16026 "org.za", 16027 "school.za", 16028 "tm.za", 16029 "web.za", 16030 "zm", 16031 "ac.zm", 16032 "biz.zm", 16033 "co.zm", 16034 "com.zm", 16035 "edu.zm", 16036 "gov.zm", 16037 "info.zm", 16038 "mil.zm", 16039 "net.zm", 16040 "org.zm", 16041 "sch.zm", 16042 "zw", 16043 "ac.zw", 16044 "co.zw", 16045 "gov.zw", 16046 "mil.zw", 16047 "org.zw", 16048 "aaa", 16049 "aarp", 16050 "abb", 16051 "abbott", 16052 "abbvie", 16053 "abc", 16054 "able", 16055 "abogado", 16056 "abudhabi", 16057 "academy", 16058 "accenture", 16059 "accountant", 16060 "accountants", 16061 "aco", 16062 "actor", 16063 "ads", 16064 "adult", 16065 "aeg", 16066 "aetna", 16067 "afl", 16068 "africa", 16069 "agakhan", 16070 "agency", 16071 "aig", 16072 "airbus", 16073 "airforce", 16074 "airtel", 16075 "akdn", 16076 "alibaba", 16077 "alipay", 16078 "allfinanz", 16079 "allstate", 16080 "ally", 16081 "alsace", 16082 "alstom", 16083 "amazon", 16084 "americanexpress", 16085 "americanfamily", 16086 "amex", 16087 "amfam", 16088 "amica", 16089 "amsterdam", 16090 "analytics", 16091 "android", 16092 "anquan", 16093 "anz", 16094 "aol", 16095 "apartments", 16096 "app", 16097 "apple", 16098 "aquarelle", 16099 "arab", 16100 "aramco", 16101 "archi", 16102 "army", 16103 "art", 16104 "arte", 16105 "asda", 16106 "associates", 16107 "athleta", 16108 "attorney", 16109 "auction", 16110 "audi", 16111 "audible", 16112 "audio", 16113 "auspost", 16114 "author", 16115 "auto", 16116 "autos", 16117 "aws", 16118 "axa", 16119 "azure", 16120 "baby", 16121 "baidu", 16122 "banamex", 16123 "band", 16124 "bank", 16125 "bar", 16126 "barcelona", 16127 "barclaycard", 16128 "barclays", 16129 "barefoot", 16130 "bargains", 16131 "baseball", 16132 "basketball", 16133 "bauhaus", 16134 "bayern", 16135 "bbc", 16136 "bbt", 16137 "bbva", 16138 "bcg", 16139 "bcn", 16140 "beats", 16141 "beauty", 16142 "beer", 16143 "bentley", 16144 "berlin", 16145 "best", 16146 "bestbuy", 16147 "bet", 16148 "bharti", 16149 "bible", 16150 "bid", 16151 "bike", 16152 "bing", 16153 "bingo", 16154 "bio", 16155 "black", 16156 "blackfriday", 16157 "blockbuster", 16158 "blog", 16159 "bloomberg", 16160 "blue", 16161 "bms", 16162 "bmw", 16163 "bnpparibas", 16164 "boats", 16165 "boehringer", 16166 "bofa", 16167 "bom", 16168 "bond", 16169 "boo", 16170 "book", 16171 "booking", 16172 "bosch", 16173 "bostik", 16174 "boston", 16175 "bot", 16176 "boutique", 16177 "box", 16178 "bradesco", 16179 "bridgestone", 16180 "broadway", 16181 "broker", 16182 "brother", 16183 "brussels", 16184 "build", 16185 "builders", 16186 "business", 16187 "buy", 16188 "buzz", 16189 "bzh", 16190 "cab", 16191 "cafe", 16192 "cal", 16193 "call", 16194 "calvinklein", 16195 "cam", 16196 "camera", 16197 "camp", 16198 "canon", 16199 "capetown", 16200 "capital", 16201 "capitalone", 16202 "car", 16203 "caravan", 16204 "cards", 16205 "care", 16206 "career", 16207 "careers", 16208 "cars", 16209 "casa", 16210 "case", 16211 "cash", 16212 "casino", 16213 "catering", 16214 "catholic", 16215 "cba", 16216 "cbn", 16217 "cbre", 16218 "center", 16219 "ceo", 16220 "cern", 16221 "cfa", 16222 "cfd", 16223 "chanel", 16224 "channel", 16225 "charity", 16226 "chase", 16227 "chat", 16228 "cheap", 16229 "chintai", 16230 "christmas", 16231 "chrome", 16232 "church", 16233 "cipriani", 16234 "circle", 16235 "cisco", 16236 "citadel", 16237 "citi", 16238 "citic", 16239 "city", 16240 "claims", 16241 "cleaning", 16242 "click", 16243 "clinic", 16244 "clinique", 16245 "clothing", 16246 "cloud", 16247 "club", 16248 "clubmed", 16249 "coach", 16250 "codes", 16251 "coffee", 16252 "college", 16253 "cologne", 16254 "commbank", 16255 "community", 16256 "company", 16257 "compare", 16258 "computer", 16259 "comsec", 16260 "condos", 16261 "construction", 16262 "consulting", 16263 "contact", 16264 "contractors", 16265 "cooking", 16266 "cool", 16267 "corsica", 16268 "country", 16269 "coupon", 16270 "coupons", 16271 "courses", 16272 "cpa", 16273 "credit", 16274 "creditcard", 16275 "creditunion", 16276 "cricket", 16277 "crown", 16278 "crs", 16279 "cruise", 16280 "cruises", 16281 "cuisinella", 16282 "cymru", 16283 "cyou", 16284 "dad", 16285 "dance", 16286 "data", 16287 "date", 16288 "dating", 16289 "datsun", 16290 "day", 16291 "dclk", 16292 "dds", 16293 "deal", 16294 "dealer", 16295 "deals", 16296 "degree", 16297 "delivery", 16298 "dell", 16299 "deloitte", 16300 "delta", 16301 "democrat", 16302 "dental", 16303 "dentist", 16304 "desi", 16305 "design", 16306 "dev", 16307 "dhl", 16308 "diamonds", 16309 "diet", 16310 "digital", 16311 "direct", 16312 "directory", 16313 "discount", 16314 "discover", 16315 "dish", 16316 "diy", 16317 "dnp", 16318 "docs", 16319 "doctor", 16320 "dog", 16321 "domains", 16322 "dot", 16323 "download", 16324 "drive", 16325 "dtv", 16326 "dubai", 16327 "dunlop", 16328 "dupont", 16329 "durban", 16330 "dvag", 16331 "dvr", 16332 "earth", 16333 "eat", 16334 "eco", 16335 "edeka", 16336 "education", 16337 "email", 16338 "emerck", 16339 "energy", 16340 "engineer", 16341 "engineering", 16342 "enterprises", 16343 "epson", 16344 "equipment", 16345 "ericsson", 16346 "erni", 16347 "esq", 16348 "estate", 16349 "eurovision", 16350 "eus", 16351 "events", 16352 "exchange", 16353 "expert", 16354 "exposed", 16355 "express", 16356 "extraspace", 16357 "fage", 16358 "fail", 16359 "fairwinds", 16360 "faith", 16361 "family", 16362 "fan", 16363 "fans", 16364 "farm", 16365 "farmers", 16366 "fashion", 16367 "fast", 16368 "fedex", 16369 "feedback", 16370 "ferrari", 16371 "ferrero", 16372 "fidelity", 16373 "fido", 16374 "film", 16375 "final", 16376 "finance", 16377 "financial", 16378 "fire", 16379 "firestone", 16380 "firmdale", 16381 "fish", 16382 "fishing", 16383 "fit", 16384 "fitness", 16385 "flickr", 16386 "flights", 16387 "flir", 16388 "florist", 16389 "flowers", 16390 "fly", 16391 "foo", 16392 "food", 16393 "football", 16394 "ford", 16395 "forex", 16396 "forsale", 16397 "forum", 16398 "foundation", 16399 "fox", 16400 "free", 16401 "fresenius", 16402 "frl", 16403 "frogans", 16404 "frontier", 16405 "ftr", 16406 "fujitsu", 16407 "fun", 16408 "fund", 16409 "furniture", 16410 "futbol", 16411 "fyi", 16412 "gal", 16413 "gallery", 16414 "gallo", 16415 "gallup", 16416 "game", 16417 "games", 16418 "gap", 16419 "garden", 16420 "gay", 16421 "gbiz", 16422 "gdn", 16423 "gea", 16424 "gent", 16425 "genting", 16426 "george", 16427 "ggee", 16428 "gift", 16429 "gifts", 16430 "gives", 16431 "giving", 16432 "glass", 16433 "gle", 16434 "global", 16435 "globo", 16436 "gmail", 16437 "gmbh", 16438 "gmo", 16439 "gmx", 16440 "godaddy", 16441 "gold", 16442 "goldpoint", 16443 "golf", 16444 "goo", 16445 "goodyear", 16446 "goog", 16447 "google", 16448 "gop", 16449 "got", 16450 "grainger", 16451 "graphics", 16452 "gratis", 16453 "green", 16454 "gripe", 16455 "grocery", 16456 "group", 16457 "gucci", 16458 "guge", 16459 "guide", 16460 "guitars", 16461 "guru", 16462 "hair", 16463 "hamburg", 16464 "hangout", 16465 "haus", 16466 "hbo", 16467 "hdfc", 16468 "hdfcbank", 16469 "health", 16470 "healthcare", 16471 "help", 16472 "helsinki", 16473 "here", 16474 "hermes", 16475 "hiphop", 16476 "hisamitsu", 16477 "hitachi", 16478 "hiv", 16479 "hkt", 16480 "hockey", 16481 "holdings", 16482 "holiday", 16483 "homedepot", 16484 "homegoods", 16485 "homes", 16486 "homesense", 16487 "honda", 16488 "horse", 16489 "hospital", 16490 "host", 16491 "hosting", 16492 "hot", 16493 "hotels", 16494 "hotmail", 16495 "house", 16496 "how", 16497 "hsbc", 16498 "hughes", 16499 "hyatt", 16500 "hyundai", 16501 "ibm", 16502 "icbc", 16503 "ice", 16504 "icu", 16505 "ieee", 16506 "ifm", 16507 "ikano", 16508 "imamat", 16509 "imdb", 16510 "immo", 16511 "immobilien", 16512 "inc", 16513 "industries", 16514 "infiniti", 16515 "ing", 16516 "ink", 16517 "institute", 16518 "insurance", 16519 "insure", 16520 "international", 16521 "intuit", 16522 "investments", 16523 "ipiranga", 16524 "irish", 16525 "ismaili", 16526 "ist", 16527 "istanbul", 16528 "itau", 16529 "itv", 16530 "jaguar", 16531 "java", 16532 "jcb", 16533 "jeep", 16534 "jetzt", 16535 "jewelry", 16536 "jio", 16537 "jll", 16538 "jmp", 16539 "jnj", 16540 "joburg", 16541 "jot", 16542 "joy", 16543 "jpmorgan", 16544 "jprs", 16545 "juegos", 16546 "juniper", 16547 "kaufen", 16548 "kddi", 16549 "kerryhotels", 16550 "kerrylogistics", 16551 "kerryproperties", 16552 "kfh", 16553 "kia", 16554 "kids", 16555 "kim", 16556 "kindle", 16557 "kitchen", 16558 "kiwi", 16559 "koeln", 16560 "komatsu", 16561 "kosher", 16562 "kpmg", 16563 "kpn", 16564 "krd", 16565 "kred", 16566 "kuokgroup", 16567 "kyoto", 16568 "lacaixa", 16569 "lamborghini", 16570 "lamer", 16571 "lancaster", 16572 "land", 16573 "landrover", 16574 "lanxess", 16575 "lasalle", 16576 "lat", 16577 "latino", 16578 "latrobe", 16579 "law", 16580 "lawyer", 16581 "lds", 16582 "lease", 16583 "leclerc", 16584 "lefrak", 16585 "legal", 16586 "lego", 16587 "lexus", 16588 "lgbt", 16589 "lidl", 16590 "life", 16591 "lifeinsurance", 16592 "lifestyle", 16593 "lighting", 16594 "like", 16595 "lilly", 16596 "limited", 16597 "limo", 16598 "lincoln", 16599 "link", 16600 "lipsy", 16601 "live", 16602 "living", 16603 "llc", 16604 "llp", 16605 "loan", 16606 "loans", 16607 "locker", 16608 "locus", 16609 "lol", 16610 "london", 16611 "lotte", 16612 "lotto", 16613 "love", 16614 "lpl", 16615 "lplfinancial", 16616 "ltd", 16617 "ltda", 16618 "lundbeck", 16619 "luxe", 16620 "luxury", 16621 "madrid", 16622 "maif", 16623 "maison", 16624 "makeup", 16625 "man", 16626 "management", 16627 "mango", 16628 "map", 16629 "market", 16630 "marketing", 16631 "markets", 16632 "marriott", 16633 "marshalls", 16634 "mattel", 16635 "mba", 16636 "mckinsey", 16637 "med", 16638 "media", 16639 "meet", 16640 "melbourne", 16641 "meme", 16642 "memorial", 16643 "men", 16644 "menu", 16645 "merck", 16646 "merckmsd", 16647 "miami", 16648 "microsoft", 16649 "mini", 16650 "mint", 16651 "mit", 16652 "mitsubishi", 16653 "mlb", 16654 "mls", 16655 "mma", 16656 "mobile", 16657 "moda", 16658 "moe", 16659 "moi", 16660 "mom", 16661 "monash", 16662 "money", 16663 "monster", 16664 "mormon", 16665 "mortgage", 16666 "moscow", 16667 "moto", 16668 "motorcycles", 16669 "mov", 16670 "movie", 16671 "msd", 16672 "mtn", 16673 "mtr", 16674 "music", 16675 "nab", 16676 "nagoya", 16677 "navy", 16678 "nba", 16679 "nec", 16680 "netbank", 16681 "netflix", 16682 "network", 16683 "neustar", 16684 "new", 16685 "news", 16686 "next", 16687 "nextdirect", 16688 "nexus", 16689 "nfl", 16690 "ngo", 16691 "nhk", 16692 "nico", 16693 "nike", 16694 "nikon", 16695 "ninja", 16696 "nissan", 16697 "nissay", 16698 "nokia", 16699 "norton", 16700 "now", 16701 "nowruz", 16702 "nowtv", 16703 "nra", 16704 "nrw", 16705 "ntt", 16706 "nyc", 16707 "obi", 16708 "observer", 16709 "office", 16710 "okinawa", 16711 "olayan", 16712 "olayangroup", 16713 "ollo", 16714 "omega", 16715 "one", 16716 "ong", 16717 "onl", 16718 "online", 16719 "ooo", 16720 "open", 16721 "oracle", 16722 "orange", 16723 "organic", 16724 "origins", 16725 "osaka", 16726 "otsuka", 16727 "ott", 16728 "ovh", 16729 "page", 16730 "panasonic", 16731 "paris", 16732 "pars", 16733 "partners", 16734 "parts", 16735 "party", 16736 "pay", 16737 "pccw", 16738 "pet", 16739 "pfizer", 16740 "pharmacy", 16741 "phd", 16742 "philips", 16743 "phone", 16744 "photo", 16745 "photography", 16746 "photos", 16747 "physio", 16748 "pics", 16749 "pictet", 16750 "pictures", 16751 "pid", 16752 "pin", 16753 "ping", 16754 "pink", 16755 "pioneer", 16756 "pizza", 16757 "place", 16758 "play", 16759 "playstation", 16760 "plumbing", 16761 "plus", 16762 "pnc", 16763 "pohl", 16764 "poker", 16765 "politie", 16766 "porn", 16767 "pramerica", 16768 "praxi", 16769 "press", 16770 "prime", 16771 "prod", 16772 "productions", 16773 "prof", 16774 "progressive", 16775 "promo", 16776 "properties", 16777 "property", 16778 "protection", 16779 "pru", 16780 "prudential", 16781 "pub", 16782 "pwc", 16783 "qpon", 16784 "quebec", 16785 "quest", 16786 "racing", 16787 "radio", 16788 "read", 16789 "realestate", 16790 "realtor", 16791 "realty", 16792 "recipes", 16793 "red", 16794 "redstone", 16795 "redumbrella", 16796 "rehab", 16797 "reise", 16798 "reisen", 16799 "reit", 16800 "reliance", 16801 "ren", 16802 "rent", 16803 "rentals", 16804 "repair", 16805 "report", 16806 "republican", 16807 "rest", 16808 "restaurant", 16809 "review", 16810 "reviews", 16811 "rexroth", 16812 "rich", 16813 "richardli", 16814 "ricoh", 16815 "ril", 16816 "rio", 16817 "rip", 16818 "rocks", 16819 "rodeo", 16820 "rogers", 16821 "room", 16822 "rsvp", 16823 "rugby", 16824 "ruhr", 16825 "run", 16826 "rwe", 16827 "ryukyu", 16828 "saarland", 16829 "safe", 16830 "safety", 16831 "sakura", 16832 "sale", 16833 "salon", 16834 "samsclub", 16835 "samsung", 16836 "sandvik", 16837 "sandvikcoromant", 16838 "sanofi", 16839 "sap", 16840 "sarl", 16841 "sas", 16842 "save", 16843 "saxo", 16844 "sbi", 16845 "sbs", 16846 "scb", 16847 "schaeffler", 16848 "schmidt", 16849 "scholarships", 16850 "school", 16851 "schule", 16852 "schwarz", 16853 "science", 16854 "scot", 16855 "search", 16856 "seat", 16857 "secure", 16858 "security", 16859 "seek", 16860 "select", 16861 "sener", 16862 "services", 16863 "seven", 16864 "sew", 16865 "sex", 16866 "sexy", 16867 "sfr", 16868 "shangrila", 16869 "sharp", 16870 "shell", 16871 "shia", 16872 "shiksha", 16873 "shoes", 16874 "shop", 16875 "shopping", 16876 "shouji", 16877 "show", 16878 "silk", 16879 "sina", 16880 "singles", 16881 "site", 16882 "ski", 16883 "skin", 16884 "sky", 16885 "skype", 16886 "sling", 16887 "smart", 16888 "smile", 16889 "sncf", 16890 "soccer", 16891 "social", 16892 "softbank", 16893 "software", 16894 "sohu", 16895 "solar", 16896 "solutions", 16897 "song", 16898 "sony", 16899 "soy", 16900 "spa", 16901 "space", 16902 "sport", 16903 "spot", 16904 "srl", 16905 "stada", 16906 "staples", 16907 "star", 16908 "statebank", 16909 "statefarm", 16910 "stc", 16911 "stcgroup", 16912 "stockholm", 16913 "storage", 16914 "store", 16915 "stream", 16916 "studio", 16917 "study", 16918 "style", 16919 "sucks", 16920 "supplies", 16921 "supply", 16922 "support", 16923 "surf", 16924 "surgery", 16925 "suzuki", 16926 "swatch", 16927 "swiss", 16928 "sydney", 16929 "systems", 16930 "tab", 16931 "taipei", 16932 "talk", 16933 "taobao", 16934 "target", 16935 "tatamotors", 16936 "tatar", 16937 "tattoo", 16938 "tax", 16939 "taxi", 16940 "tci", 16941 "tdk", 16942 "team", 16943 "tech", 16944 "technology", 16945 "temasek", 16946 "tennis", 16947 "teva", 16948 "thd", 16949 "theater", 16950 "theatre", 16951 "tiaa", 16952 "tickets", 16953 "tienda", 16954 "tips", 16955 "tires", 16956 "tirol", 16957 "tjmaxx", 16958 "tjx", 16959 "tkmaxx", 16960 "tmall", 16961 "today", 16962 "tokyo", 16963 "tools", 16964 "top", 16965 "toray", 16966 "toshiba", 16967 "total", 16968 "tours", 16969 "town", 16970 "toyota", 16971 "toys", 16972 "trade", 16973 "trading", 16974 "training", 16975 "travel", 16976 "travelers", 16977 "travelersinsurance", 16978 "trust", 16979 "trv", 16980 "tube", 16981 "tui", 16982 "tunes", 16983 "tushu", 16984 "tvs", 16985 "ubank", 16986 "ubs", 16987 "unicom", 16988 "university", 16989 "uno", 16990 "uol", 16991 "ups", 16992 "vacations", 16993 "vana", 16994 "vanguard", 16995 "vegas", 16996 "ventures", 16997 "verisign", 16998 "versicherung", 16999 "vet", 17000 "viajes", 17001 "video", 17002 "vig", 17003 "viking", 17004 "villas", 17005 "vin", 17006 "vip", 17007 "virgin", 17008 "visa", 17009 "vision", 17010 "viva", 17011 "vivo", 17012 "vlaanderen", 17013 "vodka", 17014 "volvo", 17015 "vote", 17016 "voting", 17017 "voto", 17018 "voyage", 17019 "wales", 17020 "walmart", 17021 "walter", 17022 "wang", 17023 "wanggou", 17024 "watch", 17025 "watches", 17026 "weather", 17027 "weatherchannel", 17028 "webcam", 17029 "weber", 17030 "website", 17031 "wed", 17032 "wedding", 17033 "weibo", 17034 "weir", 17035 "whoswho", 17036 "wien", 17037 "wiki", 17038 "williamhill", 17039 "win", 17040 "windows", 17041 "wine", 17042 "winners", 17043 "wme", 17044 "wolterskluwer", 17045 "woodside", 17046 "work", 17047 "works", 17048 "world", 17049 "wow", 17050 "wtc", 17051 "wtf", 17052 "xbox", 17053 "xerox", 17054 "xihuan", 17055 "xin", 17056 "à¤à¥à¤®", 17057 "ã»ã¼ã«", 17058 "ä½å±±", 17059 "æ å", 17060 "éå¢", 17061 "å¨çº¿", 17062 "ç¹ç", 17063 "à¸à¸à¸¡", 17064 "å «å¦", 17065 "Ù ÙÙØ¹", 17066 "å ¬ç", 17067 "å ¬å¸", 17068 "馿 ¼éæ", 17069 "ç½ç«", 17070 "ç§»å¨", 17071 "æç±ä½ ", 17072 "моÑква", 17073 "каÑолик", 17074 "онлайн", 17075 "ÑайÑ", 17076 "èé", 17077 "×§××", 17078 "æ¶å°", 17079 "å¾®å", 17080 "淡马é¡", 17081 "ãã¡ãã·ã§ã³", 17082 "оÑг", 17083 "नà¥à¤", 17084 "ã¹ãã¢", 17085 "ã¢ãã¾ã³", 17086 "ì¼ì±", 17087 "åæ ", 17088 "ååº", 17089 "åå", 17090 "деÑи", 17091 "ãã¤ã³ã", 17092 "æ°é»", 17093 "å®¶é»", 17094 "ÙÙÙ ", 17095 "䏿ç½", 17096 "ä¸ä¿¡", 17097 "娱ä¹", 17098 "è°·æ", 17099 "é»è¨çç§", 17100 "è´ç©", 17101 "ã¯ã©ã¦ã", 17102 "é販", 17103 "ç½åº", 17104 "सà¤à¤à¤ न", 17105 "é¤å ", 17106 "ç½ç»", 17107 "ком", 17108 "äºé©¬é", 17109 "é£å", 17110 "é£å©æµ¦", 17111 "ææº", 17112 "ارا٠ÙÙ", 17113 "Ø§ÙØ¹ÙÙØ§Ù", 17114 "بازار", 17115 "Ø§Ø¨ÙØ¸Ø¨Ù", 17116 "ÙØ§Ø«ÙÙÙÙ", 17117 "Ù٠راÙ", 17118 "ë·ì»´", 17119 "æ¿åº", 17120 "Ø´Ø¨ÙØ©", 17121 "Ø¨ÙØªÙ", 17122 "عرب", 17123 "æºæ", 17124 "ç»ç»æºæ", 17125 "å¥åº·", 17126 "æè", 17127 "ÑÑÑ", 17128 "大æ¿", 17129 "ã¿ããª", 17130 "ã°ã¼ã°ã«", 17131 "ä¸ç", 17132 "æ¸ç±", 17133 "ç½å", 17134 "ë·ë·", 17135 "ã³ã ", 17136 "天主æ", 17137 "游æ", 17138 "vermögensberater", 17139 "vermögensberatung", 17140 "ä¼ä¸", 17141 "ä¿¡æ¯", 17142 "åé大é åº", 17143 "åé", 17144 "广ä¸", 17145 "æ¿å¡", 17146 "xyz", 17147 "yachts", 17148 "yahoo", 17149 "yamaxun", 17150 "yandex", 17151 "yodobashi", 17152 "yoga", 17153 "yokohama", 17154 "you", 17155 "youtube", 17156 "yun", 17157 "zappos", 17158 "zara", 17159 "zero", 17160 "zip", 17161 "zone", 17162 "zuerich", 17163 "co.krd", 17164 "edu.krd", 17165 "art.pl", 17166 "gliwice.pl", 17167 "krakow.pl", 17168 "poznan.pl", 17169 "wroc.pl", 17170 "zakopane.pl", 17171 "lib.de.us", 17172 "12chars.dev", 17173 "12chars.it", 17174 "12chars.pro", 17175 "cc.ua", 17176 "inf.ua", 17177 "ltd.ua", 17178 "611.to", 17179 "a2hosted.com", 17180 "cpserver.com", 17181 "aaa.vodka", 17182 "*.on-acorn.io", 17183 "activetrail.biz", 17184 "adaptable.app", 17185 "adobeaemcloud.com", 17186 "*.dev.adobeaemcloud.com", 17187 "aem.live", 17188 "hlx.live", 17189 "adobeaemcloud.net", 17190 "aem.page", 17191 "hlx.page", 17192 "hlx3.page", 17193 "adobeio-static.net", 17194 "adobeioruntime.net", 17195 "africa.com", 17196 "beep.pl", 17197 "airkitapps.com", 17198 "airkitapps-au.com", 17199 "airkitapps.eu", 17200 "aivencloud.com", 17201 "akadns.net", 17202 "akamai.net", 17203 "akamai-staging.net", 17204 "akamaiedge.net", 17205 "akamaiedge-staging.net", 17206 "akamaihd.net", 17207 "akamaihd-staging.net", 17208 "akamaiorigin.net", 17209 "akamaiorigin-staging.net", 17210 "akamaized.net", 17211 "akamaized-staging.net", 17212 "edgekey.net", 17213 "edgekey-staging.net", 17214 "edgesuite.net", 17215 "edgesuite-staging.net", 17216 "barsy.ca", 17217 "*.compute.estate", 17218 "*.alces.network", 17219 "kasserver.com", 17220 "altervista.org", 17221 "alwaysdata.net", 17222 "myamaze.net", 17223 "execute-api.cn-north-1.amazonaws.com.cn", 17224 "execute-api.cn-northwest-1.amazonaws.com.cn", 17225 "execute-api.af-south-1.amazonaws.com", 17226 "execute-api.ap-east-1.amazonaws.com", 17227 "execute-api.ap-northeast-1.amazonaws.com", 17228 "execute-api.ap-northeast-2.amazonaws.com", 17229 "execute-api.ap-northeast-3.amazonaws.com", 17230 "execute-api.ap-south-1.amazonaws.com", 17231 "execute-api.ap-south-2.amazonaws.com", 17232 "execute-api.ap-southeast-1.amazonaws.com", 17233 "execute-api.ap-southeast-2.amazonaws.com", 17234 "execute-api.ap-southeast-3.amazonaws.com", 17235 "execute-api.ap-southeast-4.amazonaws.com", 17236 "execute-api.ap-southeast-5.amazonaws.com", 17237 "execute-api.ca-central-1.amazonaws.com", 17238 "execute-api.ca-west-1.amazonaws.com", 17239 "execute-api.eu-central-1.amazonaws.com", 17240 "execute-api.eu-central-2.amazonaws.com", 17241 "execute-api.eu-north-1.amazonaws.com", 17242 "execute-api.eu-south-1.amazonaws.com", 17243 "execute-api.eu-south-2.amazonaws.com", 17244 "execute-api.eu-west-1.amazonaws.com", 17245 "execute-api.eu-west-2.amazonaws.com", 17246 "execute-api.eu-west-3.amazonaws.com", 17247 "execute-api.il-central-1.amazonaws.com", 17248 "execute-api.me-central-1.amazonaws.com", 17249 "execute-api.me-south-1.amazonaws.com", 17250 "execute-api.sa-east-1.amazonaws.com", 17251 "execute-api.us-east-1.amazonaws.com", 17252 "execute-api.us-east-2.amazonaws.com", 17253 "execute-api.us-gov-east-1.amazonaws.com", 17254 "execute-api.us-gov-west-1.amazonaws.com", 17255 "execute-api.us-west-1.amazonaws.com", 17256 "execute-api.us-west-2.amazonaws.com", 17257 "cloudfront.net", 17258 "auth.af-south-1.amazoncognito.com", 17259 "auth.ap-east-1.amazoncognito.com", 17260 "auth.ap-northeast-1.amazoncognito.com", 17261 "auth.ap-northeast-2.amazoncognito.com", 17262 "auth.ap-northeast-3.amazoncognito.com", 17263 "auth.ap-south-1.amazoncognito.com", 17264 "auth.ap-south-2.amazoncognito.com", 17265 "auth.ap-southeast-1.amazoncognito.com", 17266 "auth.ap-southeast-2.amazoncognito.com", 17267 "auth.ap-southeast-3.amazoncognito.com", 17268 "auth.ap-southeast-4.amazoncognito.com", 17269 "auth.ca-central-1.amazoncognito.com", 17270 "auth.ca-west-1.amazoncognito.com", 17271 "auth.eu-central-1.amazoncognito.com", 17272 "auth.eu-central-2.amazoncognito.com", 17273 "auth.eu-north-1.amazoncognito.com", 17274 "auth.eu-south-1.amazoncognito.com", 17275 "auth.eu-south-2.amazoncognito.com", 17276 "auth.eu-west-1.amazoncognito.com", 17277 "auth.eu-west-2.amazoncognito.com", 17278 "auth.eu-west-3.amazoncognito.com", 17279 "auth.il-central-1.amazoncognito.com", 17280 "auth.me-central-1.amazoncognito.com", 17281 "auth.me-south-1.amazoncognito.com", 17282 "auth.sa-east-1.amazoncognito.com", 17283 "auth.us-east-1.amazoncognito.com", 17284 "auth-fips.us-east-1.amazoncognito.com", 17285 "auth.us-east-2.amazoncognito.com", 17286 "auth-fips.us-east-2.amazoncognito.com", 17287 "auth-fips.us-gov-west-1.amazoncognito.com", 17288 "auth.us-west-1.amazoncognito.com", 17289 "auth-fips.us-west-1.amazoncognito.com", 17290 "auth.us-west-2.amazoncognito.com", 17291 "auth-fips.us-west-2.amazoncognito.com", 17292 "*.compute.amazonaws.com.cn", 17293 "*.compute.amazonaws.com", 17294 "*.compute-1.amazonaws.com", 17295 "us-east-1.amazonaws.com", 17296 "emrappui-prod.cn-north-1.amazonaws.com.cn", 17297 "emrnotebooks-prod.cn-north-1.amazonaws.com.cn", 17298 "emrstudio-prod.cn-north-1.amazonaws.com.cn", 17299 "emrappui-prod.cn-northwest-1.amazonaws.com.cn", 17300 "emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn", 17301 "emrstudio-prod.cn-northwest-1.amazonaws.com.cn", 17302 "emrappui-prod.af-south-1.amazonaws.com", 17303 "emrnotebooks-prod.af-south-1.amazonaws.com", 17304 "emrstudio-prod.af-south-1.amazonaws.com", 17305 "emrappui-prod.ap-east-1.amazonaws.com", 17306 "emrnotebooks-prod.ap-east-1.amazonaws.com", 17307 "emrstudio-prod.ap-east-1.amazonaws.com", 17308 "emrappui-prod.ap-northeast-1.amazonaws.com", 17309 "emrnotebooks-prod.ap-northeast-1.amazonaws.com", 17310 "emrstudio-prod.ap-northeast-1.amazonaws.com", 17311 "emrappui-prod.ap-northeast-2.amazonaws.com", 17312 "emrnotebooks-prod.ap-northeast-2.amazonaws.com", 17313 "emrstudio-prod.ap-northeast-2.amazonaws.com", 17314 "emrappui-prod.ap-northeast-3.amazonaws.com", 17315 "emrnotebooks-prod.ap-northeast-3.amazonaws.com", 17316 "emrstudio-prod.ap-northeast-3.amazonaws.com", 17317 "emrappui-prod.ap-south-1.amazonaws.com", 17318 "emrnotebooks-prod.ap-south-1.amazonaws.com", 17319 "emrstudio-prod.ap-south-1.amazonaws.com", 17320 "emrappui-prod.ap-south-2.amazonaws.com", 17321 "emrnotebooks-prod.ap-south-2.amazonaws.com", 17322 "emrstudio-prod.ap-south-2.amazonaws.com", 17323 "emrappui-prod.ap-southeast-1.amazonaws.com", 17324 "emrnotebooks-prod.ap-southeast-1.amazonaws.com", 17325 "emrstudio-prod.ap-southeast-1.amazonaws.com", 17326 "emrappui-prod.ap-southeast-2.amazonaws.com", 17327 "emrnotebooks-prod.ap-southeast-2.amazonaws.com", 17328 "emrstudio-prod.ap-southeast-2.amazonaws.com", 17329 "emrappui-prod.ap-southeast-3.amazonaws.com", 17330 "emrnotebooks-prod.ap-southeast-3.amazonaws.com", 17331 "emrstudio-prod.ap-southeast-3.amazonaws.com", 17332 "emrappui-prod.ap-southeast-4.amazonaws.com", 17333 "emrnotebooks-prod.ap-southeast-4.amazonaws.com", 17334 "emrstudio-prod.ap-southeast-4.amazonaws.com", 17335 "emrappui-prod.ca-central-1.amazonaws.com", 17336 "emrnotebooks-prod.ca-central-1.amazonaws.com", 17337 "emrstudio-prod.ca-central-1.amazonaws.com", 17338 "emrappui-prod.ca-west-1.amazonaws.com", 17339 "emrnotebooks-prod.ca-west-1.amazonaws.com", 17340 "emrstudio-prod.ca-west-1.amazonaws.com", 17341 "emrappui-prod.eu-central-1.amazonaws.com", 17342 "emrnotebooks-prod.eu-central-1.amazonaws.com", 17343 "emrstudio-prod.eu-central-1.amazonaws.com", 17344 "emrappui-prod.eu-central-2.amazonaws.com", 17345 "emrnotebooks-prod.eu-central-2.amazonaws.com", 17346 "emrstudio-prod.eu-central-2.amazonaws.com", 17347 "emrappui-prod.eu-north-1.amazonaws.com", 17348 "emrnotebooks-prod.eu-north-1.amazonaws.com", 17349 "emrstudio-prod.eu-north-1.amazonaws.com", 17350 "emrappui-prod.eu-south-1.amazonaws.com", 17351 "emrnotebooks-prod.eu-south-1.amazonaws.com", 17352 "emrstudio-prod.eu-south-1.amazonaws.com", 17353 "emrappui-prod.eu-south-2.amazonaws.com", 17354 "emrnotebooks-prod.eu-south-2.amazonaws.com", 17355 "emrstudio-prod.eu-south-2.amazonaws.com", 17356 "emrappui-prod.eu-west-1.amazonaws.com", 17357 "emrnotebooks-prod.eu-west-1.amazonaws.com", 17358 "emrstudio-prod.eu-west-1.amazonaws.com", 17359 "emrappui-prod.eu-west-2.amazonaws.com", 17360 "emrnotebooks-prod.eu-west-2.amazonaws.com", 17361 "emrstudio-prod.eu-west-2.amazonaws.com", 17362 "emrappui-prod.eu-west-3.amazonaws.com", 17363 "emrnotebooks-prod.eu-west-3.amazonaws.com", 17364 "emrstudio-prod.eu-west-3.amazonaws.com", 17365 "emrappui-prod.il-central-1.amazonaws.com", 17366 "emrnotebooks-prod.il-central-1.amazonaws.com", 17367 "emrstudio-prod.il-central-1.amazonaws.com", 17368 "emrappui-prod.me-central-1.amazonaws.com", 17369 "emrnotebooks-prod.me-central-1.amazonaws.com", 17370 "emrstudio-prod.me-central-1.amazonaws.com", 17371 "emrappui-prod.me-south-1.amazonaws.com", 17372 "emrnotebooks-prod.me-south-1.amazonaws.com", 17373 "emrstudio-prod.me-south-1.amazonaws.com", 17374 "emrappui-prod.sa-east-1.amazonaws.com", 17375 "emrnotebooks-prod.sa-east-1.amazonaws.com", 17376 "emrstudio-prod.sa-east-1.amazonaws.com", 17377 "emrappui-prod.us-east-1.amazonaws.com", 17378 "emrnotebooks-prod.us-east-1.amazonaws.com", 17379 "emrstudio-prod.us-east-1.amazonaws.com", 17380 "emrappui-prod.us-east-2.amazonaws.com", 17381 "emrnotebooks-prod.us-east-2.amazonaws.com", 17382 "emrstudio-prod.us-east-2.amazonaws.com", 17383 "emrappui-prod.us-gov-east-1.amazonaws.com", 17384 "emrnotebooks-prod.us-gov-east-1.amazonaws.com", 17385 "emrstudio-prod.us-gov-east-1.amazonaws.com", 17386 "emrappui-prod.us-gov-west-1.amazonaws.com", 17387 "emrnotebooks-prod.us-gov-west-1.amazonaws.com", 17388 "emrstudio-prod.us-gov-west-1.amazonaws.com", 17389 "emrappui-prod.us-west-1.amazonaws.com", 17390 "emrnotebooks-prod.us-west-1.amazonaws.com", 17391 "emrstudio-prod.us-west-1.amazonaws.com", 17392 "emrappui-prod.us-west-2.amazonaws.com", 17393 "emrnotebooks-prod.us-west-2.amazonaws.com", 17394 "emrstudio-prod.us-west-2.amazonaws.com", 17395 "*.cn-north-1.airflow.amazonaws.com.cn", 17396 "*.cn-northwest-1.airflow.amazonaws.com.cn", 17397 "*.af-south-1.airflow.amazonaws.com", 17398 "*.ap-east-1.airflow.amazonaws.com", 17399 "*.ap-northeast-1.airflow.amazonaws.com", 17400 "*.ap-northeast-2.airflow.amazonaws.com", 17401 "*.ap-northeast-3.airflow.amazonaws.com", 17402 "*.ap-south-1.airflow.amazonaws.com", 17403 "*.ap-south-2.airflow.amazonaws.com", 17404 "*.ap-southeast-1.airflow.amazonaws.com", 17405 "*.ap-southeast-2.airflow.amazonaws.com", 17406 "*.ap-southeast-3.airflow.amazonaws.com", 17407 "*.ap-southeast-4.airflow.amazonaws.com", 17408 "*.ca-central-1.airflow.amazonaws.com", 17409 "*.ca-west-1.airflow.amazonaws.com", 17410 "*.eu-central-1.airflow.amazonaws.com", 17411 "*.eu-central-2.airflow.amazonaws.com", 17412 "*.eu-north-1.airflow.amazonaws.com", 17413 "*.eu-south-1.airflow.amazonaws.com", 17414 "*.eu-south-2.airflow.amazonaws.com", 17415 "*.eu-west-1.airflow.amazonaws.com", 17416 "*.eu-west-2.airflow.amazonaws.com", 17417 "*.eu-west-3.airflow.amazonaws.com", 17418 "*.il-central-1.airflow.amazonaws.com", 17419 "*.me-central-1.airflow.amazonaws.com", 17420 "*.me-south-1.airflow.amazonaws.com", 17421 "*.sa-east-1.airflow.amazonaws.com", 17422 "*.us-east-1.airflow.amazonaws.com", 17423 "*.us-east-2.airflow.amazonaws.com", 17424 "*.us-west-1.airflow.amazonaws.com", 17425 "*.us-west-2.airflow.amazonaws.com", 17426 "s3.dualstack.cn-north-1.amazonaws.com.cn", 17427 "s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn", 17428 "s3-website.dualstack.cn-north-1.amazonaws.com.cn", 17429 "s3.cn-north-1.amazonaws.com.cn", 17430 "s3-accesspoint.cn-north-1.amazonaws.com.cn", 17431 "s3-deprecated.cn-north-1.amazonaws.com.cn", 17432 "s3-object-lambda.cn-north-1.amazonaws.com.cn", 17433 "s3-website.cn-north-1.amazonaws.com.cn", 17434 "s3.dualstack.cn-northwest-1.amazonaws.com.cn", 17435 "s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn", 17436 "s3.cn-northwest-1.amazonaws.com.cn", 17437 "s3-accesspoint.cn-northwest-1.amazonaws.com.cn", 17438 "s3-object-lambda.cn-northwest-1.amazonaws.com.cn", 17439 "s3-website.cn-northwest-1.amazonaws.com.cn", 17440 "s3.dualstack.af-south-1.amazonaws.com", 17441 "s3-accesspoint.dualstack.af-south-1.amazonaws.com", 17442 "s3-website.dualstack.af-south-1.amazonaws.com", 17443 "s3.af-south-1.amazonaws.com", 17444 "s3-accesspoint.af-south-1.amazonaws.com", 17445 "s3-object-lambda.af-south-1.amazonaws.com", 17446 "s3-website.af-south-1.amazonaws.com", 17447 "s3.dualstack.ap-east-1.amazonaws.com", 17448 "s3-accesspoint.dualstack.ap-east-1.amazonaws.com", 17449 "s3.ap-east-1.amazonaws.com", 17450 "s3-accesspoint.ap-east-1.amazonaws.com", 17451 "s3-object-lambda.ap-east-1.amazonaws.com", 17452 "s3-website.ap-east-1.amazonaws.com", 17453 "s3.dualstack.ap-northeast-1.amazonaws.com", 17454 "s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com", 17455 "s3-website.dualstack.ap-northeast-1.amazonaws.com", 17456 "s3.ap-northeast-1.amazonaws.com", 17457 "s3-accesspoint.ap-northeast-1.amazonaws.com", 17458 "s3-object-lambda.ap-northeast-1.amazonaws.com", 17459 "s3-website.ap-northeast-1.amazonaws.com", 17460 "s3.dualstack.ap-northeast-2.amazonaws.com", 17461 "s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com", 17462 "s3-website.dualstack.ap-northeast-2.amazonaws.com", 17463 "s3.ap-northeast-2.amazonaws.com", 17464 "s3-accesspoint.ap-northeast-2.amazonaws.com", 17465 "s3-object-lambda.ap-northeast-2.amazonaws.com", 17466 "s3-website.ap-northeast-2.amazonaws.com", 17467 "s3.dualstack.ap-northeast-3.amazonaws.com", 17468 "s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com", 17469 "s3-website.dualstack.ap-northeast-3.amazonaws.com", 17470 "s3.ap-northeast-3.amazonaws.com", 17471 "s3-accesspoint.ap-northeast-3.amazonaws.com", 17472 "s3-object-lambda.ap-northeast-3.amazonaws.com", 17473 "s3-website.ap-northeast-3.amazonaws.com", 17474 "s3.dualstack.ap-south-1.amazonaws.com", 17475 "s3-accesspoint.dualstack.ap-south-1.amazonaws.com", 17476 "s3-website.dualstack.ap-south-1.amazonaws.com", 17477 "s3.ap-south-1.amazonaws.com", 17478 "s3-accesspoint.ap-south-1.amazonaws.com", 17479 "s3-object-lambda.ap-south-1.amazonaws.com", 17480 "s3-website.ap-south-1.amazonaws.com", 17481 "s3.dualstack.ap-south-2.amazonaws.com", 17482 "s3-accesspoint.dualstack.ap-south-2.amazonaws.com", 17483 "s3-website.dualstack.ap-south-2.amazonaws.com", 17484 "s3.ap-south-2.amazonaws.com", 17485 "s3-accesspoint.ap-south-2.amazonaws.com", 17486 "s3-object-lambda.ap-south-2.amazonaws.com", 17487 "s3-website.ap-south-2.amazonaws.com", 17488 "s3.dualstack.ap-southeast-1.amazonaws.com", 17489 "s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com", 17490 "s3-website.dualstack.ap-southeast-1.amazonaws.com", 17491 "s3.ap-southeast-1.amazonaws.com", 17492 "s3-accesspoint.ap-southeast-1.amazonaws.com", 17493 "s3-object-lambda.ap-southeast-1.amazonaws.com", 17494 "s3-website.ap-southeast-1.amazonaws.com", 17495 "s3.dualstack.ap-southeast-2.amazonaws.com", 17496 "s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com", 17497 "s3-website.dualstack.ap-southeast-2.amazonaws.com", 17498 "s3.ap-southeast-2.amazonaws.com", 17499 "s3-accesspoint.ap-southeast-2.amazonaws.com", 17500 "s3-object-lambda.ap-southeast-2.amazonaws.com", 17501 "s3-website.ap-southeast-2.amazonaws.com", 17502 "s3.dualstack.ap-southeast-3.amazonaws.com", 17503 "s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com", 17504 "s3-website.dualstack.ap-southeast-3.amazonaws.com", 17505 "s3.ap-southeast-3.amazonaws.com", 17506 "s3-accesspoint.ap-southeast-3.amazonaws.com", 17507 "s3-object-lambda.ap-southeast-3.amazonaws.com", 17508 "s3-website.ap-southeast-3.amazonaws.com", 17509 "s3.dualstack.ap-southeast-4.amazonaws.com", 17510 "s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com", 17511 "s3-website.dualstack.ap-southeast-4.amazonaws.com", 17512 "s3.ap-southeast-4.amazonaws.com", 17513 "s3-accesspoint.ap-southeast-4.amazonaws.com", 17514 "s3-object-lambda.ap-southeast-4.amazonaws.com", 17515 "s3-website.ap-southeast-4.amazonaws.com", 17516 "s3.dualstack.ap-southeast-5.amazonaws.com", 17517 "s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com", 17518 "s3-website.dualstack.ap-southeast-5.amazonaws.com", 17519 "s3.ap-southeast-5.amazonaws.com", 17520 "s3-accesspoint.ap-southeast-5.amazonaws.com", 17521 "s3-deprecated.ap-southeast-5.amazonaws.com", 17522 "s3-object-lambda.ap-southeast-5.amazonaws.com", 17523 "s3-website.ap-southeast-5.amazonaws.com", 17524 "s3.dualstack.ca-central-1.amazonaws.com", 17525 "s3-accesspoint.dualstack.ca-central-1.amazonaws.com", 17526 "s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com", 17527 "s3-fips.dualstack.ca-central-1.amazonaws.com", 17528 "s3-website.dualstack.ca-central-1.amazonaws.com", 17529 "s3.ca-central-1.amazonaws.com", 17530 "s3-accesspoint.ca-central-1.amazonaws.com", 17531 "s3-accesspoint-fips.ca-central-1.amazonaws.com", 17532 "s3-fips.ca-central-1.amazonaws.com", 17533 "s3-object-lambda.ca-central-1.amazonaws.com", 17534 "s3-website.ca-central-1.amazonaws.com", 17535 "s3.dualstack.ca-west-1.amazonaws.com", 17536 "s3-accesspoint.dualstack.ca-west-1.amazonaws.com", 17537 "s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com", 17538 "s3-fips.dualstack.ca-west-1.amazonaws.com", 17539 "s3-website.dualstack.ca-west-1.amazonaws.com", 17540 "s3.ca-west-1.amazonaws.com", 17541 "s3-accesspoint.ca-west-1.amazonaws.com", 17542 "s3-accesspoint-fips.ca-west-1.amazonaws.com", 17543 "s3-fips.ca-west-1.amazonaws.com", 17544 "s3-object-lambda.ca-west-1.amazonaws.com", 17545 "s3-website.ca-west-1.amazonaws.com", 17546 "s3.dualstack.eu-central-1.amazonaws.com", 17547 "s3-accesspoint.dualstack.eu-central-1.amazonaws.com", 17548 "s3-website.dualstack.eu-central-1.amazonaws.com", 17549 "s3.eu-central-1.amazonaws.com", 17550 "s3-accesspoint.eu-central-1.amazonaws.com", 17551 "s3-object-lambda.eu-central-1.amazonaws.com", 17552 "s3-website.eu-central-1.amazonaws.com", 17553 "s3.dualstack.eu-central-2.amazonaws.com", 17554 "s3-accesspoint.dualstack.eu-central-2.amazonaws.com", 17555 "s3-website.dualstack.eu-central-2.amazonaws.com", 17556 "s3.eu-central-2.amazonaws.com", 17557 "s3-accesspoint.eu-central-2.amazonaws.com", 17558 "s3-object-lambda.eu-central-2.amazonaws.com", 17559 "s3-website.eu-central-2.amazonaws.com", 17560 "s3.dualstack.eu-north-1.amazonaws.com", 17561 "s3-accesspoint.dualstack.eu-north-1.amazonaws.com", 17562 "s3.eu-north-1.amazonaws.com", 17563 "s3-accesspoint.eu-north-1.amazonaws.com", 17564 "s3-object-lambda.eu-north-1.amazonaws.com", 17565 "s3-website.eu-north-1.amazonaws.com", 17566 "s3.dualstack.eu-south-1.amazonaws.com", 17567 "s3-accesspoint.dualstack.eu-south-1.amazonaws.com", 17568 "s3-website.dualstack.eu-south-1.amazonaws.com", 17569 "s3.eu-south-1.amazonaws.com", 17570 "s3-accesspoint.eu-south-1.amazonaws.com", 17571 "s3-object-lambda.eu-south-1.amazonaws.com", 17572 "s3-website.eu-south-1.amazonaws.com", 17573 "s3.dualstack.eu-south-2.amazonaws.com", 17574 "s3-accesspoint.dualstack.eu-south-2.amazonaws.com", 17575 "s3-website.dualstack.eu-south-2.amazonaws.com", 17576 "s3.eu-south-2.amazonaws.com", 17577 "s3-accesspoint.eu-south-2.amazonaws.com", 17578 "s3-object-lambda.eu-south-2.amazonaws.com", 17579 "s3-website.eu-south-2.amazonaws.com", 17580 "s3.dualstack.eu-west-1.amazonaws.com", 17581 "s3-accesspoint.dualstack.eu-west-1.amazonaws.com", 17582 "s3-website.dualstack.eu-west-1.amazonaws.com", 17583 "s3.eu-west-1.amazonaws.com", 17584 "s3-accesspoint.eu-west-1.amazonaws.com", 17585 "s3-deprecated.eu-west-1.amazonaws.com", 17586 "s3-object-lambda.eu-west-1.amazonaws.com", 17587 "s3-website.eu-west-1.amazonaws.com", 17588 "s3.dualstack.eu-west-2.amazonaws.com", 17589 "s3-accesspoint.dualstack.eu-west-2.amazonaws.com", 17590 "s3.eu-west-2.amazonaws.com", 17591 "s3-accesspoint.eu-west-2.amazonaws.com", 17592 "s3-object-lambda.eu-west-2.amazonaws.com", 17593 "s3-website.eu-west-2.amazonaws.com", 17594 "s3.dualstack.eu-west-3.amazonaws.com", 17595 "s3-accesspoint.dualstack.eu-west-3.amazonaws.com", 17596 "s3-website.dualstack.eu-west-3.amazonaws.com", 17597 "s3.eu-west-3.amazonaws.com", 17598 "s3-accesspoint.eu-west-3.amazonaws.com", 17599 "s3-object-lambda.eu-west-3.amazonaws.com", 17600 "s3-website.eu-west-3.amazonaws.com", 17601 "s3.dualstack.il-central-1.amazonaws.com", 17602 "s3-accesspoint.dualstack.il-central-1.amazonaws.com", 17603 "s3-website.dualstack.il-central-1.amazonaws.com", 17604 "s3.il-central-1.amazonaws.com", 17605 "s3-accesspoint.il-central-1.amazonaws.com", 17606 "s3-object-lambda.il-central-1.amazonaws.com", 17607 "s3-website.il-central-1.amazonaws.com", 17608 "s3.dualstack.me-central-1.amazonaws.com", 17609 "s3-accesspoint.dualstack.me-central-1.amazonaws.com", 17610 "s3-website.dualstack.me-central-1.amazonaws.com", 17611 "s3.me-central-1.amazonaws.com", 17612 "s3-accesspoint.me-central-1.amazonaws.com", 17613 "s3-object-lambda.me-central-1.amazonaws.com", 17614 "s3-website.me-central-1.amazonaws.com", 17615 "s3.dualstack.me-south-1.amazonaws.com", 17616 "s3-accesspoint.dualstack.me-south-1.amazonaws.com", 17617 "s3.me-south-1.amazonaws.com", 17618 "s3-accesspoint.me-south-1.amazonaws.com", 17619 "s3-object-lambda.me-south-1.amazonaws.com", 17620 "s3-website.me-south-1.amazonaws.com", 17621 "s3.amazonaws.com", 17622 "s3-1.amazonaws.com", 17623 "s3-ap-east-1.amazonaws.com", 17624 "s3-ap-northeast-1.amazonaws.com", 17625 "s3-ap-northeast-2.amazonaws.com", 17626 "s3-ap-northeast-3.amazonaws.com", 17627 "s3-ap-south-1.amazonaws.com", 17628 "s3-ap-southeast-1.amazonaws.com", 17629 "s3-ap-southeast-2.amazonaws.com", 17630 "s3-ca-central-1.amazonaws.com", 17631 "s3-eu-central-1.amazonaws.com", 17632 "s3-eu-north-1.amazonaws.com", 17633 "s3-eu-west-1.amazonaws.com", 17634 "s3-eu-west-2.amazonaws.com", 17635 "s3-eu-west-3.amazonaws.com", 17636 "s3-external-1.amazonaws.com", 17637 "s3-fips-us-gov-east-1.amazonaws.com", 17638 "s3-fips-us-gov-west-1.amazonaws.com", 17639 "mrap.accesspoint.s3-global.amazonaws.com", 17640 "s3-me-south-1.amazonaws.com", 17641 "s3-sa-east-1.amazonaws.com", 17642 "s3-us-east-2.amazonaws.com", 17643 "s3-us-gov-east-1.amazonaws.com", 17644 "s3-us-gov-west-1.amazonaws.com", 17645 "s3-us-west-1.amazonaws.com", 17646 "s3-us-west-2.amazonaws.com", 17647 "s3-website-ap-northeast-1.amazonaws.com", 17648 "s3-website-ap-southeast-1.amazonaws.com", 17649 "s3-website-ap-southeast-2.amazonaws.com", 17650 "s3-website-eu-west-1.amazonaws.com", 17651 "s3-website-sa-east-1.amazonaws.com", 17652 "s3-website-us-east-1.amazonaws.com", 17653 "s3-website-us-gov-west-1.amazonaws.com", 17654 "s3-website-us-west-1.amazonaws.com", 17655 "s3-website-us-west-2.amazonaws.com", 17656 "s3.dualstack.sa-east-1.amazonaws.com", 17657 "s3-accesspoint.dualstack.sa-east-1.amazonaws.com", 17658 "s3-website.dualstack.sa-east-1.amazonaws.com", 17659 "s3.sa-east-1.amazonaws.com", 17660 "s3-accesspoint.sa-east-1.amazonaws.com", 17661 "s3-object-lambda.sa-east-1.amazonaws.com", 17662 "s3-website.sa-east-1.amazonaws.com", 17663 "s3.dualstack.us-east-1.amazonaws.com", 17664 "s3-accesspoint.dualstack.us-east-1.amazonaws.com", 17665 "s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com", 17666 "s3-fips.dualstack.us-east-1.amazonaws.com", 17667 "s3-website.dualstack.us-east-1.amazonaws.com", 17668 "s3.us-east-1.amazonaws.com", 17669 "s3-accesspoint.us-east-1.amazonaws.com", 17670 "s3-accesspoint-fips.us-east-1.amazonaws.com", 17671 "s3-deprecated.us-east-1.amazonaws.com", 17672 "s3-fips.us-east-1.amazonaws.com", 17673 "s3-object-lambda.us-east-1.amazonaws.com", 17674 "s3-website.us-east-1.amazonaws.com", 17675 "s3.dualstack.us-east-2.amazonaws.com", 17676 "s3-accesspoint.dualstack.us-east-2.amazonaws.com", 17677 "s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com", 17678 "s3-fips.dualstack.us-east-2.amazonaws.com", 17679 "s3-website.dualstack.us-east-2.amazonaws.com", 17680 "s3.us-east-2.amazonaws.com", 17681 "s3-accesspoint.us-east-2.amazonaws.com", 17682 "s3-accesspoint-fips.us-east-2.amazonaws.com", 17683 "s3-deprecated.us-east-2.amazonaws.com", 17684 "s3-fips.us-east-2.amazonaws.com", 17685 "s3-object-lambda.us-east-2.amazonaws.com", 17686 "s3-website.us-east-2.amazonaws.com", 17687 "s3.dualstack.us-gov-east-1.amazonaws.com", 17688 "s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com", 17689 "s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com", 17690 "s3-fips.dualstack.us-gov-east-1.amazonaws.com", 17691 "s3.us-gov-east-1.amazonaws.com", 17692 "s3-accesspoint.us-gov-east-1.amazonaws.com", 17693 "s3-accesspoint-fips.us-gov-east-1.amazonaws.com", 17694 "s3-fips.us-gov-east-1.amazonaws.com", 17695 "s3-object-lambda.us-gov-east-1.amazonaws.com", 17696 "s3-website.us-gov-east-1.amazonaws.com", 17697 "s3.dualstack.us-gov-west-1.amazonaws.com", 17698 "s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com", 17699 "s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com", 17700 "s3-fips.dualstack.us-gov-west-1.amazonaws.com", 17701 "s3.us-gov-west-1.amazonaws.com", 17702 "s3-accesspoint.us-gov-west-1.amazonaws.com", 17703 "s3-accesspoint-fips.us-gov-west-1.amazonaws.com", 17704 "s3-fips.us-gov-west-1.amazonaws.com", 17705 "s3-object-lambda.us-gov-west-1.amazonaws.com", 17706 "s3-website.us-gov-west-1.amazonaws.com", 17707 "s3.dualstack.us-west-1.amazonaws.com", 17708 "s3-accesspoint.dualstack.us-west-1.amazonaws.com", 17709 "s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com", 17710 "s3-fips.dualstack.us-west-1.amazonaws.com", 17711 "s3-website.dualstack.us-west-1.amazonaws.com", 17712 "s3.us-west-1.amazonaws.com", 17713 "s3-accesspoint.us-west-1.amazonaws.com", 17714 "s3-accesspoint-fips.us-west-1.amazonaws.com", 17715 "s3-fips.us-west-1.amazonaws.com", 17716 "s3-object-lambda.us-west-1.amazonaws.com", 17717 "s3-website.us-west-1.amazonaws.com", 17718 "s3.dualstack.us-west-2.amazonaws.com", 17719 "s3-accesspoint.dualstack.us-west-2.amazonaws.com", 17720 "s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com", 17721 "s3-fips.dualstack.us-west-2.amazonaws.com", 17722 "s3-website.dualstack.us-west-2.amazonaws.com", 17723 "s3.us-west-2.amazonaws.com", 17724 "s3-accesspoint.us-west-2.amazonaws.com", 17725 "s3-accesspoint-fips.us-west-2.amazonaws.com", 17726 "s3-deprecated.us-west-2.amazonaws.com", 17727 "s3-fips.us-west-2.amazonaws.com", 17728 "s3-object-lambda.us-west-2.amazonaws.com", 17729 "s3-website.us-west-2.amazonaws.com", 17730 "labeling.ap-northeast-1.sagemaker.aws", 17731 "labeling.ap-northeast-2.sagemaker.aws", 17732 "labeling.ap-south-1.sagemaker.aws", 17733 "labeling.ap-southeast-1.sagemaker.aws", 17734 "labeling.ap-southeast-2.sagemaker.aws", 17735 "labeling.ca-central-1.sagemaker.aws", 17736 "labeling.eu-central-1.sagemaker.aws", 17737 "labeling.eu-west-1.sagemaker.aws", 17738 "labeling.eu-west-2.sagemaker.aws", 17739 "labeling.us-east-1.sagemaker.aws", 17740 "labeling.us-east-2.sagemaker.aws", 17741 "labeling.us-west-2.sagemaker.aws", 17742 "notebook.af-south-1.sagemaker.aws", 17743 "notebook.ap-east-1.sagemaker.aws", 17744 "notebook.ap-northeast-1.sagemaker.aws", 17745 "notebook.ap-northeast-2.sagemaker.aws", 17746 "notebook.ap-northeast-3.sagemaker.aws", 17747 "notebook.ap-south-1.sagemaker.aws", 17748 "notebook.ap-south-2.sagemaker.aws", 17749 "notebook.ap-southeast-1.sagemaker.aws", 17750 "notebook.ap-southeast-2.sagemaker.aws", 17751 "notebook.ap-southeast-3.sagemaker.aws", 17752 "notebook.ap-southeast-4.sagemaker.aws", 17753 "notebook.ca-central-1.sagemaker.aws", 17754 "notebook-fips.ca-central-1.sagemaker.aws", 17755 "notebook.ca-west-1.sagemaker.aws", 17756 "notebook-fips.ca-west-1.sagemaker.aws", 17757 "notebook.eu-central-1.sagemaker.aws", 17758 "notebook.eu-central-2.sagemaker.aws", 17759 "notebook.eu-north-1.sagemaker.aws", 17760 "notebook.eu-south-1.sagemaker.aws", 17761 "notebook.eu-south-2.sagemaker.aws", 17762 "notebook.eu-west-1.sagemaker.aws", 17763 "notebook.eu-west-2.sagemaker.aws", 17764 "notebook.eu-west-3.sagemaker.aws", 17765 "notebook.il-central-1.sagemaker.aws", 17766 "notebook.me-central-1.sagemaker.aws", 17767 "notebook.me-south-1.sagemaker.aws", 17768 "notebook.sa-east-1.sagemaker.aws", 17769 "notebook.us-east-1.sagemaker.aws", 17770 "notebook-fips.us-east-1.sagemaker.aws", 17771 "notebook.us-east-2.sagemaker.aws", 17772 "notebook-fips.us-east-2.sagemaker.aws", 17773 "notebook.us-gov-east-1.sagemaker.aws", 17774 "notebook-fips.us-gov-east-1.sagemaker.aws", 17775 "notebook.us-gov-west-1.sagemaker.aws", 17776 "notebook-fips.us-gov-west-1.sagemaker.aws", 17777 "notebook.us-west-1.sagemaker.aws", 17778 "notebook-fips.us-west-1.sagemaker.aws", 17779 "notebook.us-west-2.sagemaker.aws", 17780 "notebook-fips.us-west-2.sagemaker.aws", 17781 "notebook.cn-north-1.sagemaker.com.cn", 17782 "notebook.cn-northwest-1.sagemaker.com.cn", 17783 "studio.af-south-1.sagemaker.aws", 17784 "studio.ap-east-1.sagemaker.aws", 17785 "studio.ap-northeast-1.sagemaker.aws", 17786 "studio.ap-northeast-2.sagemaker.aws", 17787 "studio.ap-northeast-3.sagemaker.aws", 17788 "studio.ap-south-1.sagemaker.aws", 17789 "studio.ap-southeast-1.sagemaker.aws", 17790 "studio.ap-southeast-2.sagemaker.aws", 17791 "studio.ap-southeast-3.sagemaker.aws", 17792 "studio.ca-central-1.sagemaker.aws", 17793 "studio.eu-central-1.sagemaker.aws", 17794 "studio.eu-north-1.sagemaker.aws", 17795 "studio.eu-south-1.sagemaker.aws", 17796 "studio.eu-south-2.sagemaker.aws", 17797 "studio.eu-west-1.sagemaker.aws", 17798 "studio.eu-west-2.sagemaker.aws", 17799 "studio.eu-west-3.sagemaker.aws", 17800 "studio.il-central-1.sagemaker.aws", 17801 "studio.me-central-1.sagemaker.aws", 17802 "studio.me-south-1.sagemaker.aws", 17803 "studio.sa-east-1.sagemaker.aws", 17804 "studio.us-east-1.sagemaker.aws", 17805 "studio.us-east-2.sagemaker.aws", 17806 "studio.us-gov-east-1.sagemaker.aws", 17807 "studio-fips.us-gov-east-1.sagemaker.aws", 17808 "studio.us-gov-west-1.sagemaker.aws", 17809 "studio-fips.us-gov-west-1.sagemaker.aws", 17810 "studio.us-west-1.sagemaker.aws", 17811 "studio.us-west-2.sagemaker.aws", 17812 "studio.cn-north-1.sagemaker.com.cn", 17813 "studio.cn-northwest-1.sagemaker.com.cn", 17814 "*.experiments.sagemaker.aws", 17815 "analytics-gateway.ap-northeast-1.amazonaws.com", 17816 "analytics-gateway.ap-northeast-2.amazonaws.com", 17817 "analytics-gateway.ap-south-1.amazonaws.com", 17818 "analytics-gateway.ap-southeast-1.amazonaws.com", 17819 "analytics-gateway.ap-southeast-2.amazonaws.com", 17820 "analytics-gateway.eu-central-1.amazonaws.com", 17821 "analytics-gateway.eu-west-1.amazonaws.com", 17822 "analytics-gateway.us-east-1.amazonaws.com", 17823 "analytics-gateway.us-east-2.amazonaws.com", 17824 "analytics-gateway.us-west-2.amazonaws.com", 17825 "amplifyapp.com", 17826 "*.awsapprunner.com", 17827 "webview-assets.aws-cloud9.af-south-1.amazonaws.com", 17828 "vfs.cloud9.af-south-1.amazonaws.com", 17829 "webview-assets.cloud9.af-south-1.amazonaws.com", 17830 "webview-assets.aws-cloud9.ap-east-1.amazonaws.com", 17831 "vfs.cloud9.ap-east-1.amazonaws.com", 17832 "webview-assets.cloud9.ap-east-1.amazonaws.com", 17833 "webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com", 17834 "vfs.cloud9.ap-northeast-1.amazonaws.com", 17835 "webview-assets.cloud9.ap-northeast-1.amazonaws.com", 17836 "webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com", 17837 "vfs.cloud9.ap-northeast-2.amazonaws.com", 17838 "webview-assets.cloud9.ap-northeast-2.amazonaws.com", 17839 "webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com", 17840 "vfs.cloud9.ap-northeast-3.amazonaws.com", 17841 "webview-assets.cloud9.ap-northeast-3.amazonaws.com", 17842 "webview-assets.aws-cloud9.ap-south-1.amazonaws.com", 17843 "vfs.cloud9.ap-south-1.amazonaws.com", 17844 "webview-assets.cloud9.ap-south-1.amazonaws.com", 17845 "webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com", 17846 "vfs.cloud9.ap-southeast-1.amazonaws.com", 17847 "webview-assets.cloud9.ap-southeast-1.amazonaws.com", 17848 "webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com", 17849 "vfs.cloud9.ap-southeast-2.amazonaws.com", 17850 "webview-assets.cloud9.ap-southeast-2.amazonaws.com", 17851 "webview-assets.aws-cloud9.ca-central-1.amazonaws.com", 17852 "vfs.cloud9.ca-central-1.amazonaws.com", 17853 "webview-assets.cloud9.ca-central-1.amazonaws.com", 17854 "webview-assets.aws-cloud9.eu-central-1.amazonaws.com", 17855 "vfs.cloud9.eu-central-1.amazonaws.com", 17856 "webview-assets.cloud9.eu-central-1.amazonaws.com", 17857 "webview-assets.aws-cloud9.eu-north-1.amazonaws.com", 17858 "vfs.cloud9.eu-north-1.amazonaws.com", 17859 "webview-assets.cloud9.eu-north-1.amazonaws.com", 17860 "webview-assets.aws-cloud9.eu-south-1.amazonaws.com", 17861 "vfs.cloud9.eu-south-1.amazonaws.com", 17862 "webview-assets.cloud9.eu-south-1.amazonaws.com", 17863 "webview-assets.aws-cloud9.eu-west-1.amazonaws.com", 17864 "vfs.cloud9.eu-west-1.amazonaws.com", 17865 "webview-assets.cloud9.eu-west-1.amazonaws.com", 17866 "webview-assets.aws-cloud9.eu-west-2.amazonaws.com", 17867 "vfs.cloud9.eu-west-2.amazonaws.com", 17868 "webview-assets.cloud9.eu-west-2.amazonaws.com", 17869 "webview-assets.aws-cloud9.eu-west-3.amazonaws.com", 17870 "vfs.cloud9.eu-west-3.amazonaws.com", 17871 "webview-assets.cloud9.eu-west-3.amazonaws.com", 17872 "webview-assets.aws-cloud9.il-central-1.amazonaws.com", 17873 "vfs.cloud9.il-central-1.amazonaws.com", 17874 "webview-assets.aws-cloud9.me-south-1.amazonaws.com", 17875 "vfs.cloud9.me-south-1.amazonaws.com", 17876 "webview-assets.cloud9.me-south-1.amazonaws.com", 17877 "webview-assets.aws-cloud9.sa-east-1.amazonaws.com", 17878 "vfs.cloud9.sa-east-1.amazonaws.com", 17879 "webview-assets.cloud9.sa-east-1.amazonaws.com", 17880 "webview-assets.aws-cloud9.us-east-1.amazonaws.com", 17881 "vfs.cloud9.us-east-1.amazonaws.com", 17882 "webview-assets.cloud9.us-east-1.amazonaws.com", 17883 "webview-assets.aws-cloud9.us-east-2.amazonaws.com", 17884 "vfs.cloud9.us-east-2.amazonaws.com", 17885 "webview-assets.cloud9.us-east-2.amazonaws.com", 17886 "webview-assets.aws-cloud9.us-west-1.amazonaws.com", 17887 "vfs.cloud9.us-west-1.amazonaws.com", 17888 "webview-assets.cloud9.us-west-1.amazonaws.com", 17889 "webview-assets.aws-cloud9.us-west-2.amazonaws.com", 17890 "vfs.cloud9.us-west-2.amazonaws.com", 17891 "webview-assets.cloud9.us-west-2.amazonaws.com", 17892 "awsapps.com", 17893 "cn-north-1.eb.amazonaws.com.cn", 17894 "cn-northwest-1.eb.amazonaws.com.cn", 17895 "elasticbeanstalk.com", 17896 "af-south-1.elasticbeanstalk.com", 17897 "ap-east-1.elasticbeanstalk.com", 17898 "ap-northeast-1.elasticbeanstalk.com", 17899 "ap-northeast-2.elasticbeanstalk.com", 17900 "ap-northeast-3.elasticbeanstalk.com", 17901 "ap-south-1.elasticbeanstalk.com", 17902 "ap-southeast-1.elasticbeanstalk.com", 17903 "ap-southeast-2.elasticbeanstalk.com", 17904 "ap-southeast-3.elasticbeanstalk.com", 17905 "ca-central-1.elasticbeanstalk.com", 17906 "eu-central-1.elasticbeanstalk.com", 17907 "eu-north-1.elasticbeanstalk.com", 17908 "eu-south-1.elasticbeanstalk.com", 17909 "eu-west-1.elasticbeanstalk.com", 17910 "eu-west-2.elasticbeanstalk.com", 17911 "eu-west-3.elasticbeanstalk.com", 17912 "il-central-1.elasticbeanstalk.com", 17913 "me-south-1.elasticbeanstalk.com", 17914 "sa-east-1.elasticbeanstalk.com", 17915 "us-east-1.elasticbeanstalk.com", 17916 "us-east-2.elasticbeanstalk.com", 17917 "us-gov-east-1.elasticbeanstalk.com", 17918 "us-gov-west-1.elasticbeanstalk.com", 17919 "us-west-1.elasticbeanstalk.com", 17920 "us-west-2.elasticbeanstalk.com", 17921 "*.elb.amazonaws.com.cn", 17922 "*.elb.amazonaws.com", 17923 "awsglobalaccelerator.com", 17924 "*.private.repost.aws", 17925 "eero.online", 17926 "eero-stage.online", 17927 "apigee.io", 17928 "panel.dev", 17929 "siiites.com", 17930 "appspacehosted.com", 17931 "appspaceusercontent.com", 17932 "appudo.net", 17933 "on-aptible.com", 17934 "f5.si", 17935 "arvanedge.ir", 17936 "user.aseinet.ne.jp", 17937 "gv.vc", 17938 "d.gv.vc", 17939 "user.party.eus", 17940 "pimienta.org", 17941 "poivron.org", 17942 "potager.org", 17943 "sweetpepper.org", 17944 "myasustor.com", 17945 "cdn.prod.atlassian-dev.net", 17946 "translated.page", 17947 "myfritz.link", 17948 "myfritz.net", 17949 "onavstack.net", 17950 "*.awdev.ca", 17951 "*.advisor.ws", 17952 "ecommerce-shop.pl", 17953 "b-data.io", 17954 "balena-devices.com", 17955 "base.ec", 17956 "official.ec", 17957 "buyshop.jp", 17958 "fashionstore.jp", 17959 "handcrafted.jp", 17960 "kawaiishop.jp", 17961 "supersale.jp", 17962 "theshop.jp", 17963 "shopselect.net", 17964 "base.shop", 17965 "beagleboard.io", 17966 "*.beget.app", 17967 "pages.gay", 17968 "bnr.la", 17969 "bitbucket.io", 17970 "blackbaudcdn.net", 17971 "of.je", 17972 "bluebite.io", 17973 "boomla.net", 17974 "boutir.com", 17975 "boxfuse.io", 17976 "square7.ch", 17977 "bplaced.com", 17978 "bplaced.de", 17979 "square7.de", 17980 "bplaced.net", 17981 "square7.net", 17982 "*.s.brave.io", 17983 "shop.brendly.hr", 17984 "shop.brendly.rs", 17985 "browsersafetymark.io", 17986 "radio.am", 17987 "radio.fm", 17988 "uk0.bigv.io", 17989 "dh.bytemark.co.uk", 17990 "vm.bytemark.co.uk", 17991 "cafjs.com", 17992 "canva-apps.cn", 17993 "*.my.canvasite.cn", 17994 "canva-apps.com", 17995 "*.my.canva.site", 17996 "drr.ac", 17997 "uwu.ai", 17998 "carrd.co", 17999 "crd.co", 18000 "ju.mp", 18001 "api.gov.uk", 18002 "cdn77-storage.com", 18003 "rsc.contentproxy9.cz", 18004 "r.cdn77.net", 18005 "cdn77-ssl.net", 18006 "c.cdn77.org", 18007 "rsc.cdn77.org", 18008 "ssl.origin.cdn77-secure.org", 18009 "za.bz", 18010 "br.com", 18011 "cn.com", 18012 "de.com", 18013 "eu.com", 18014 "jpn.com", 18015 "mex.com", 18016 "ru.com", 18017 "sa.com", 18018 "uk.com", 18019 "us.com", 18020 "za.com", 18021 "com.de", 18022 "gb.net", 18023 "hu.net", 18024 "jp.net", 18025 "se.net", 18026 "uk.net", 18027 "ae.org", 18028 "com.se", 18029 "cx.ua", 18030 "discourse.group", 18031 "discourse.team", 18032 "clerk.app", 18033 "clerkstage.app", 18034 "*.lcl.dev", 18035 "*.lclstage.dev", 18036 "*.stg.dev", 18037 "*.stgstage.dev", 18038 "cleverapps.cc", 18039 "*.services.clever-cloud.com", 18040 "cleverapps.io", 18041 "cleverapps.tech", 18042 "clickrising.net", 18043 "cloudns.asia", 18044 "cloudns.be", 18045 "cloud-ip.biz", 18046 "cloudns.biz", 18047 "cloudns.cc", 18048 "cloudns.ch", 18049 "cloudns.cl", 18050 "cloudns.club", 18051 "dnsabr.com", 18052 "ip-ddns.com", 18053 "cloudns.cx", 18054 "cloudns.eu", 18055 "cloudns.in", 18056 "cloudns.info", 18057 "ddns-ip.net", 18058 "dns-cloud.net", 18059 "dns-dynamic.net", 18060 "cloudns.nz", 18061 "cloudns.org", 18062 "ip-dynamic.org", 18063 "cloudns.ph", 18064 "cloudns.pro", 18065 "cloudns.pw", 18066 "cloudns.us", 18067 "c66.me", 18068 "cloud66.ws", 18069 "cloud66.zone", 18070 "jdevcloud.com", 18071 "wpdevcloud.com", 18072 "cloudaccess.host", 18073 "freesite.host", 18074 "cloudaccess.net", 18075 "*.cloudera.site", 18076 "cf-ipfs.com", 18077 "cloudflare-ipfs.com", 18078 "trycloudflare.com", 18079 "pages.dev", 18080 "r2.dev", 18081 "workers.dev", 18082 "cloudflare.net", 18083 "cdn.cloudflare.net", 18084 "cdn.cloudflareanycast.net", 18085 "cdn.cloudflarecn.net", 18086 "cdn.cloudflareglobal.net", 18087 "cust.cloudscale.ch", 18088 "objects.lpg.cloudscale.ch", 18089 "objects.rma.cloudscale.ch", 18090 "wnext.app", 18091 "cnpy.gdn", 18092 "*.otap.co", 18093 "co.ca", 18094 "co.com", 18095 "codeberg.page", 18096 "csb.app", 18097 "preview.csb.app", 18098 "co.nl", 18099 "co.no", 18100 "webhosting.be", 18101 "hosting-cluster.nl", 18102 "ctfcloud.net", 18103 "convex.site", 18104 "ac.ru", 18105 "edu.ru", 18106 "gov.ru", 18107 "int.ru", 18108 "mil.ru", 18109 "test.ru", 18110 "dyn.cosidns.de", 18111 "dnsupdater.de", 18112 "dynamisches-dns.de", 18113 "internet-dns.de", 18114 "l-o-g-i-n.de", 18115 "dynamic-dns.info", 18116 "feste-ip.net", 18117 "knx-server.net", 18118 "static-access.net", 18119 "craft.me", 18120 "realm.cz", 18121 "on.crisp.email", 18122 "*.cryptonomic.net", 18123 "curv.dev", 18124 "cfolks.pl", 18125 "cyon.link", 18126 "cyon.site", 18127 "platform0.app", 18128 "fnwk.site", 18129 "folionetwork.site", 18130 "biz.dk", 18131 "co.dk", 18132 "firm.dk", 18133 "reg.dk", 18134 "store.dk", 18135 "dyndns.dappnode.io", 18136 "builtwithdark.com", 18137 "darklang.io", 18138 "demo.datadetect.com", 18139 "instance.datadetect.com", 18140 "edgestack.me", 18141 "dattolocal.com", 18142 "dattorelay.com", 18143 "dattoweb.com", 18144 "mydatto.com", 18145 "dattolocal.net", 18146 "mydatto.net", 18147 "ddnss.de", 18148 "dyn.ddnss.de", 18149 "dyndns.ddnss.de", 18150 "dyn-ip24.de", 18151 "dyndns1.de", 18152 "home-webserver.de", 18153 "dyn.home-webserver.de", 18154 "myhome-server.de", 18155 "ddnss.org", 18156 "debian.net", 18157 "definima.io", 18158 "definima.net", 18159 "deno.dev", 18160 "deno-staging.dev", 18161 "dedyn.io", 18162 "deta.app", 18163 "deta.dev", 18164 "dfirma.pl", 18165 "dkonto.pl", 18166 "you2.pl", 18167 "ondigitalocean.app", 18168 "*.digitaloceanspaces.com", 18169 "us.kg", 18170 "rss.my.id", 18171 "diher.solutions", 18172 "discordsays.com", 18173 "discordsez.com", 18174 "jozi.biz", 18175 "dnshome.de", 18176 "online.th", 18177 "shop.th", 18178 "drayddns.com", 18179 "shoparena.pl", 18180 "dreamhosters.com", 18181 "durumis.com", 18182 "mydrobo.com", 18183 "drud.io", 18184 "drud.us", 18185 "duckdns.org", 18186 "dy.fi", 18187 "tunk.org", 18188 "dyndns.biz", 18189 "for-better.biz", 18190 "for-more.biz", 18191 "for-some.biz", 18192 "for-the.biz", 18193 "selfip.biz", 18194 "webhop.biz", 18195 "ftpaccess.cc", 18196 "game-server.cc", 18197 "myphotos.cc", 18198 "scrapping.cc", 18199 "blogdns.com", 18200 "cechire.com", 18201 "dnsalias.com", 18202 "dnsdojo.com", 18203 "doesntexist.com", 18204 "dontexist.com", 18205 "doomdns.com", 18206 "dyn-o-saur.com", 18207 "dynalias.com", 18208 "dyndns-at-home.com", 18209 "dyndns-at-work.com", 18210 "dyndns-blog.com", 18211 "dyndns-free.com", 18212 "dyndns-home.com", 18213 "dyndns-ip.com", 18214 "dyndns-mail.com", 18215 "dyndns-office.com", 18216 "dyndns-pics.com", 18217 "dyndns-remote.com", 18218 "dyndns-server.com", 18219 "dyndns-web.com", 18220 "dyndns-wiki.com", 18221 "dyndns-work.com", 18222 "est-a-la-maison.com", 18223 "est-a-la-masion.com", 18224 "est-le-patron.com", 18225 "est-mon-blogueur.com", 18226 "from-ak.com", 18227 "from-al.com", 18228 "from-ar.com", 18229 "from-ca.com", 18230 "from-ct.com", 18231 "from-dc.com", 18232 "from-de.com", 18233 "from-fl.com", 18234 "from-ga.com", 18235 "from-hi.com", 18236 "from-ia.com", 18237 "from-id.com", 18238 "from-il.com", 18239 "from-in.com", 18240 "from-ks.com", 18241 "from-ky.com", 18242 "from-ma.com", 18243 "from-md.com", 18244 "from-mi.com", 18245 "from-mn.com", 18246 "from-mo.com", 18247 "from-ms.com", 18248 "from-mt.com", 18249 "from-nc.com", 18250 "from-nd.com", 18251 "from-ne.com", 18252 "from-nh.com", 18253 "from-nj.com", 18254 "from-nm.com", 18255 "from-nv.com", 18256 "from-oh.com", 18257 "from-ok.com", 18258 "from-or.com", 18259 "from-pa.com", 18260 "from-pr.com", 18261 "from-ri.com", 18262 "from-sc.com", 18263 "from-sd.com", 18264 "from-tn.com", 18265 "from-tx.com", 18266 "from-ut.com", 18267 "from-va.com", 18268 "from-vt.com", 18269 "from-wa.com", 18270 "from-wi.com", 18271 "from-wv.com", 18272 "from-wy.com", 18273 "getmyip.com", 18274 "gotdns.com", 18275 "hobby-site.com", 18276 "homelinux.com", 18277 "homeunix.com", 18278 "iamallama.com", 18279 "is-a-anarchist.com", 18280 "is-a-blogger.com", 18281 "is-a-bookkeeper.com", 18282 "is-a-bulls-fan.com", 18283 "is-a-caterer.com", 18284 "is-a-chef.com", 18285 "is-a-conservative.com", 18286 "is-a-cpa.com", 18287 "is-a-cubicle-slave.com", 18288 "is-a-democrat.com", 18289 "is-a-designer.com", 18290 "is-a-doctor.com", 18291 "is-a-financialadvisor.com", 18292 "is-a-geek.com", 18293 "is-a-green.com", 18294 "is-a-guru.com", 18295 "is-a-hard-worker.com", 18296 "is-a-hunter.com", 18297 "is-a-landscaper.com", 18298 "is-a-lawyer.com", 18299 "is-a-liberal.com", 18300 "is-a-libertarian.com", 18301 "is-a-llama.com", 18302 "is-a-musician.com", 18303 "is-a-nascarfan.com", 18304 "is-a-nurse.com", 18305 "is-a-painter.com", 18306 "is-a-personaltrainer.com", 18307 "is-a-photographer.com", 18308 "is-a-player.com", 18309 "is-a-republican.com", 18310 "is-a-rockstar.com", 18311 "is-a-socialist.com", 18312 "is-a-student.com", 18313 "is-a-teacher.com", 18314 "is-a-techie.com", 18315 "is-a-therapist.com", 18316 "is-an-accountant.com", 18317 "is-an-actor.com", 18318 "is-an-actress.com", 18319 "is-an-anarchist.com", 18320 "is-an-artist.com", 18321 "is-an-engineer.com", 18322 "is-an-entertainer.com", 18323 "is-certified.com", 18324 "is-gone.com", 18325 "is-into-anime.com", 18326 "is-into-cars.com", 18327 "is-into-cartoons.com", 18328 "is-into-games.com", 18329 "is-leet.com", 18330 "is-not-certified.com", 18331 "is-slick.com", 18332 "is-uberleet.com", 18333 "is-with-theband.com", 18334 "isa-geek.com", 18335 "isa-hockeynut.com", 18336 "issmarterthanyou.com", 18337 "likes-pie.com", 18338 "likescandy.com", 18339 "neat-url.com", 18340 "saves-the-whales.com", 18341 "selfip.com", 18342 "sells-for-less.com", 18343 "sells-for-u.com", 18344 "servebbs.com", 18345 "simple-url.com", 18346 "space-to-rent.com", 18347 "teaches-yoga.com", 18348 "writesthisblog.com", 18349 "ath.cx", 18350 "fuettertdasnetz.de", 18351 "isteingeek.de", 18352 "istmein.de", 18353 "lebtimnetz.de", 18354 "leitungsen.de", 18355 "traeumtgerade.de", 18356 "barrel-of-knowledge.info", 18357 "barrell-of-knowledge.info", 18358 "dyndns.info", 18359 "for-our.info", 18360 "groks-the.info", 18361 "groks-this.info", 18362 "here-for-more.info", 18363 "knowsitall.info", 18364 "selfip.info", 18365 "webhop.info", 18366 "forgot.her.name", 18367 "forgot.his.name", 18368 "at-band-camp.net", 18369 "blogdns.net", 18370 "broke-it.net", 18371 "buyshouses.net", 18372 "dnsalias.net", 18373 "dnsdojo.net", 18374 "does-it.net", 18375 "dontexist.net", 18376 "dynalias.net", 18377 "dynathome.net", 18378 "endofinternet.net", 18379 "from-az.net", 18380 "from-co.net", 18381 "from-la.net", 18382 "from-ny.net", 18383 "gets-it.net", 18384 "ham-radio-op.net", 18385 "homeftp.net", 18386 "homeip.net", 18387 "homelinux.net", 18388 "homeunix.net", 18389 "in-the-band.net", 18390 "is-a-chef.net", 18391 "is-a-geek.net", 18392 "isa-geek.net", 18393 "kicks-ass.net", 18394 "office-on-the.net", 18395 "podzone.net", 18396 "scrapper-site.net", 18397 "selfip.net", 18398 "sells-it.net", 18399 "servebbs.net", 18400 "serveftp.net", 18401 "thruhere.net", 18402 "webhop.net", 18403 "merseine.nu", 18404 "mine.nu", 18405 "shacknet.nu", 18406 "blogdns.org", 18407 "blogsite.org", 18408 "boldlygoingnowhere.org", 18409 "dnsalias.org", 18410 "dnsdojo.org", 18411 "doesntexist.org", 18412 "dontexist.org", 18413 "doomdns.org", 18414 "dvrdns.org", 18415 "dynalias.org", 18416 "dyndns.org", 18417 "go.dyndns.org", 18418 "home.dyndns.org", 18419 "endofinternet.org", 18420 "endoftheinternet.org", 18421 "from-me.org", 18422 "game-host.org", 18423 "gotdns.org", 18424 "hobby-site.org", 18425 "homedns.org", 18426 "homeftp.org", 18427 "homelinux.org", 18428 "homeunix.org", 18429 "is-a-bruinsfan.org", 18430 "is-a-candidate.org", 18431 "is-a-celticsfan.org", 18432 "is-a-chef.org", 18433 "is-a-geek.org", 18434 "is-a-knight.org", 18435 "is-a-linux-user.org", 18436 "is-a-patsfan.org", 18437 "is-a-soxfan.org", 18438 "is-found.org", 18439 "is-lost.org", 18440 "is-saved.org", 18441 "is-very-bad.org", 18442 "is-very-evil.org", 18443 "is-very-good.org", 18444 "is-very-nice.org", 18445 "is-very-sweet.org", 18446 "isa-geek.org", 18447 "kicks-ass.org", 18448 "misconfused.org", 18449 "podzone.org", 18450 "readmyblog.org", 18451 "selfip.org", 18452 "sellsyourhome.org", 18453 "servebbs.org", 18454 "serveftp.org", 18455 "servegame.org", 18456 "stuff-4-sale.org", 18457 "webhop.org", 18458 "better-than.tv", 18459 "dyndns.tv", 18460 "on-the-web.tv", 18461 "worse-than.tv", 18462 "is-by.us", 18463 "land-4-sale.us", 18464 "stuff-4-sale.us", 18465 "dyndns.ws", 18466 "mypets.ws", 18467 "ddnsfree.com", 18468 "ddnsgeek.com", 18469 "giize.com", 18470 "gleeze.com", 18471 "kozow.com", 18472 "loseyourip.com", 18473 "ooguy.com", 18474 "theworkpc.com", 18475 "casacam.net", 18476 "dynu.net", 18477 "accesscam.org", 18478 "camdvr.org", 18479 "freeddns.org", 18480 "mywire.org", 18481 "webredirect.org", 18482 "myddns.rocks", 18483 "dynv6.net", 18484 "e4.cz", 18485 "easypanel.app", 18486 "easypanel.host", 18487 "*.ewp.live", 18488 "twmail.cc", 18489 "twmail.net", 18490 "twmail.org", 18491 "mymailer.com.tw", 18492 "url.tw", 18493 "at.emf.camp", 18494 "rt.ht", 18495 "elementor.cloud", 18496 "elementor.cool", 18497 "en-root.fr", 18498 "mytuleap.com", 18499 "tuleap-partners.com", 18500 "encr.app", 18501 "encoreapi.com", 18502 "eu.encoway.cloud", 18503 "eu.org", 18504 "al.eu.org", 18505 "asso.eu.org", 18506 "at.eu.org", 18507 "au.eu.org", 18508 "be.eu.org", 18509 "bg.eu.org", 18510 "ca.eu.org", 18511 "cd.eu.org", 18512 "ch.eu.org", 18513 "cn.eu.org", 18514 "cy.eu.org", 18515 "cz.eu.org", 18516 "de.eu.org", 18517 "dk.eu.org", 18518 "edu.eu.org", 18519 "ee.eu.org", 18520 "es.eu.org", 18521 "fi.eu.org", 18522 "fr.eu.org", 18523 "gr.eu.org", 18524 "hr.eu.org", 18525 "hu.eu.org", 18526 "ie.eu.org", 18527 "il.eu.org", 18528 "in.eu.org", 18529 "int.eu.org", 18530 "is.eu.org", 18531 "it.eu.org", 18532 "jp.eu.org", 18533 "kr.eu.org", 18534 "lt.eu.org", 18535 "lu.eu.org", 18536 "lv.eu.org", 18537 "me.eu.org", 18538 "mk.eu.org", 18539 "mt.eu.org", 18540 "my.eu.org", 18541 "net.eu.org", 18542 "ng.eu.org", 18543 "nl.eu.org", 18544 "no.eu.org", 18545 "nz.eu.org", 18546 "pl.eu.org", 18547 "pt.eu.org", 18548 "ro.eu.org", 18549 "ru.eu.org", 18550 "se.eu.org", 18551 "si.eu.org", 18552 "sk.eu.org", 18553 "tr.eu.org", 18554 "uk.eu.org", 18555 "us.eu.org", 18556 "eurodir.ru", 18557 "eu-1.evennode.com", 18558 "eu-2.evennode.com", 18559 "eu-3.evennode.com", 18560 "eu-4.evennode.com", 18561 "us-1.evennode.com", 18562 "us-2.evennode.com", 18563 "us-3.evennode.com", 18564 "us-4.evennode.com", 18565 "relay.evervault.app", 18566 "relay.evervault.dev", 18567 "expo.app", 18568 "staging.expo.app", 18569 "onfabrica.com", 18570 "ru.net", 18571 "adygeya.ru", 18572 "bashkiria.ru", 18573 "bir.ru", 18574 "cbg.ru", 18575 "com.ru", 18576 "dagestan.ru", 18577 "grozny.ru", 18578 "kalmykia.ru", 18579 "kustanai.ru", 18580 "marine.ru", 18581 "mordovia.ru", 18582 "msk.ru", 18583 "mytis.ru", 18584 "nalchik.ru", 18585 "nov.ru", 18586 "pyatigorsk.ru", 18587 "spb.ru", 18588 "vladikavkaz.ru", 18589 "vladimir.ru", 18590 "abkhazia.su", 18591 "adygeya.su", 18592 "aktyubinsk.su", 18593 "arkhangelsk.su", 18594 "armenia.su", 18595 "ashgabad.su", 18596 "azerbaijan.su", 18597 "balashov.su", 18598 "bashkiria.su", 18599 "bryansk.su", 18600 "bukhara.su", 18601 "chimkent.su", 18602 "dagestan.su", 18603 "east-kazakhstan.su", 18604 "exnet.su", 18605 "georgia.su", 18606 "grozny.su", 18607 "ivanovo.su", 18608 "jambyl.su", 18609 "kalmykia.su", 18610 "kaluga.su", 18611 "karacol.su", 18612 "karaganda.su", 18613 "karelia.su", 18614 "khakassia.su", 18615 "krasnodar.su", 18616 "kurgan.su", 18617 "kustanai.su", 18618 "lenug.su", 18619 "mangyshlak.su", 18620 "mordovia.su", 18621 "msk.su", 18622 "murmansk.su", 18623 "nalchik.su", 18624 "navoi.su", 18625 "north-kazakhstan.su", 18626 "nov.su", 18627 "obninsk.su", 18628 "penza.su", 18629 "pokrovsk.su", 18630 "sochi.su", 18631 "spb.su", 18632 "tashkent.su", 18633 "termez.su", 18634 "togliatti.su", 18635 "troitsk.su", 18636 "tselinograd.su", 18637 "tula.su", 18638 "tuva.su", 18639 "vladikavkaz.su", 18640 "vladimir.su", 18641 "vologda.su", 18642 "channelsdvr.net", 18643 "u.channelsdvr.net", 18644 "edgecompute.app", 18645 "fastly-edge.com", 18646 "fastly-terrarium.com", 18647 "freetls.fastly.net", 18648 "map.fastly.net", 18649 "a.prod.fastly.net", 18650 "global.prod.fastly.net", 18651 "a.ssl.fastly.net", 18652 "b.ssl.fastly.net", 18653 "global.ssl.fastly.net", 18654 "fastlylb.net", 18655 "map.fastlylb.net", 18656 "*.user.fm", 18657 "fastvps-server.com", 18658 "fastvps.host", 18659 "myfast.host", 18660 "fastvps.site", 18661 "myfast.space", 18662 "conn.uk", 18663 "copro.uk", 18664 "hosp.uk", 18665 "fedorainfracloud.org", 18666 "fedorapeople.org", 18667 "cloud.fedoraproject.org", 18668 "app.os.fedoraproject.org", 18669 "app.os.stg.fedoraproject.org", 18670 "mydobiss.com", 18671 "fh-muenster.io", 18672 "filegear.me", 18673 "firebaseapp.com", 18674 "fldrv.com", 18675 "flutterflow.app", 18676 "fly.dev", 18677 "shw.io", 18678 "edgeapp.net", 18679 "forgeblocks.com", 18680 "id.forgerock.io", 18681 "framer.ai", 18682 "framer.app", 18683 "framercanvas.com", 18684 "framer.media", 18685 "framer.photos", 18686 "framer.website", 18687 "framer.wiki", 18688 "0e.vc", 18689 "freebox-os.com", 18690 "freeboxos.com", 18691 "fbx-os.fr", 18692 "fbxos.fr", 18693 "freebox-os.fr", 18694 "freeboxos.fr", 18695 "freedesktop.org", 18696 "freemyip.com", 18697 "*.frusky.de", 18698 "wien.funkfeuer.at", 18699 "daemon.asia", 18700 "dix.asia", 18701 "mydns.bz", 18702 "0am.jp", 18703 "0g0.jp", 18704 "0j0.jp", 18705 "0t0.jp", 18706 "mydns.jp", 18707 "pgw.jp", 18708 "wjg.jp", 18709 "keyword-on.net", 18710 "live-on.net", 18711 "server-on.net", 18712 "mydns.tw", 18713 "mydns.vc", 18714 "*.futurecms.at", 18715 "*.ex.futurecms.at", 18716 "*.in.futurecms.at", 18717 "futurehosting.at", 18718 "futuremailing.at", 18719 "*.ex.ortsinfo.at", 18720 "*.kunden.ortsinfo.at", 18721 "*.statics.cloud", 18722 "aliases121.com", 18723 "campaign.gov.uk", 18724 "service.gov.uk", 18725 "independent-commission.uk", 18726 "independent-inquest.uk", 18727 "independent-inquiry.uk", 18728 "independent-panel.uk", 18729 "independent-review.uk", 18730 "public-inquiry.uk", 18731 "royal-commission.uk", 18732 "gehirn.ne.jp", 18733 "usercontent.jp", 18734 "gentapps.com", 18735 "gentlentapis.com", 18736 "lab.ms", 18737 "cdn-edges.net", 18738 "localcert.net", 18739 "localhostcert.net", 18740 "gsj.bz", 18741 "githubusercontent.com", 18742 "githubpreview.dev", 18743 "github.io", 18744 "gitlab.io", 18745 "gitapp.si", 18746 "gitpage.si", 18747 "glitch.me", 18748 "nog.community", 18749 "co.ro", 18750 "shop.ro", 18751 "lolipop.io", 18752 "angry.jp", 18753 "babyblue.jp", 18754 "babymilk.jp", 18755 "backdrop.jp", 18756 "bambina.jp", 18757 "bitter.jp", 18758 "blush.jp", 18759 "boo.jp", 18760 "boy.jp", 18761 "boyfriend.jp", 18762 "but.jp", 18763 "candypop.jp", 18764 "capoo.jp", 18765 "catfood.jp", 18766 "cheap.jp", 18767 "chicappa.jp", 18768 "chillout.jp", 18769 "chips.jp", 18770 "chowder.jp", 18771 "chu.jp", 18772 "ciao.jp", 18773 "cocotte.jp", 18774 "coolblog.jp", 18775 "cranky.jp", 18776 "cutegirl.jp", 18777 "daa.jp", 18778 "deca.jp", 18779 "deci.jp", 18780 "digick.jp", 18781 "egoism.jp", 18782 "fakefur.jp", 18783 "fem.jp", 18784 "flier.jp", 18785 "floppy.jp", 18786 "fool.jp", 18787 "frenchkiss.jp", 18788 "girlfriend.jp", 18789 "girly.jp", 18790 "gloomy.jp", 18791 "gonna.jp", 18792 "greater.jp", 18793 "hacca.jp", 18794 "heavy.jp", 18795 "her.jp", 18796 "hiho.jp", 18797 "hippy.jp", 18798 "holy.jp", 18799 "hungry.jp", 18800 "icurus.jp", 18801 "itigo.jp", 18802 "jellybean.jp", 18803 "kikirara.jp", 18804 "kill.jp", 18805 "kilo.jp", 18806 "kuron.jp", 18807 "littlestar.jp", 18808 "lolipopmc.jp", 18809 "lolitapunk.jp", 18810 "lomo.jp", 18811 "lovepop.jp", 18812 "lovesick.jp", 18813 "main.jp", 18814 "mods.jp", 18815 "mond.jp", 18816 "mongolian.jp", 18817 "moo.jp", 18818 "namaste.jp", 18819 "nikita.jp", 18820 "nobushi.jp", 18821 "noor.jp", 18822 "oops.jp", 18823 "parallel.jp", 18824 "parasite.jp", 18825 "pecori.jp", 18826 "peewee.jp", 18827 "penne.jp", 18828 "pepper.jp", 18829 "perma.jp", 18830 "pigboat.jp", 18831 "pinoko.jp", 18832 "punyu.jp", 18833 "pupu.jp", 18834 "pussycat.jp", 18835 "pya.jp", 18836 "raindrop.jp", 18837 "readymade.jp", 18838 "sadist.jp", 18839 "schoolbus.jp", 18840 "secret.jp", 18841 "staba.jp", 18842 "stripper.jp", 18843 "sub.jp", 18844 "sunnyday.jp", 18845 "thick.jp", 18846 "tonkotsu.jp", 18847 "under.jp", 18848 "upper.jp", 18849 "velvet.jp", 18850 "verse.jp", 18851 "versus.jp", 18852 "vivian.jp", 18853 "watson.jp", 18854 "weblike.jp", 18855 "whitesnow.jp", 18856 "zombie.jp", 18857 "heteml.net", 18858 "graphic.design", 18859 "goip.de", 18860 "blogspot.ae", 18861 "blogspot.al", 18862 "blogspot.am", 18863 "*.hosted.app", 18864 "*.run.app", 18865 "web.app", 18866 "blogspot.com.ar", 18867 "blogspot.co.at", 18868 "blogspot.com.au", 18869 "blogspot.ba", 18870 "blogspot.be", 18871 "blogspot.bg", 18872 "blogspot.bj", 18873 "blogspot.com.br", 18874 "blogspot.com.by", 18875 "blogspot.ca", 18876 "blogspot.cf", 18877 "blogspot.ch", 18878 "blogspot.cl", 18879 "blogspot.com.co", 18880 "*.0emm.com", 18881 "appspot.com", 18882 "*.r.appspot.com", 18883 "blogspot.com", 18884 "codespot.com", 18885 "googleapis.com", 18886 "googlecode.com", 18887 "pagespeedmobilizer.com", 18888 "withgoogle.com", 18889 "withyoutube.com", 18890 "blogspot.cv", 18891 "blogspot.com.cy", 18892 "blogspot.cz", 18893 "blogspot.de", 18894 "*.gateway.dev", 18895 "blogspot.dk", 18896 "blogspot.com.ee", 18897 "blogspot.com.eg", 18898 "blogspot.com.es", 18899 "blogspot.fi", 18900 "blogspot.fr", 18901 "cloud.goog", 18902 "translate.goog", 18903 "*.usercontent.goog", 18904 "blogspot.gr", 18905 "blogspot.hk", 18906 "blogspot.hr", 18907 "blogspot.hu", 18908 "blogspot.co.id", 18909 "blogspot.ie", 18910 "blogspot.co.il", 18911 "blogspot.in", 18912 "blogspot.is", 18913 "blogspot.it", 18914 "blogspot.jp", 18915 "blogspot.co.ke", 18916 "blogspot.kr", 18917 "blogspot.li", 18918 "blogspot.lt", 18919 "blogspot.lu", 18920 "blogspot.md", 18921 "blogspot.mk", 18922 "blogspot.com.mt", 18923 "blogspot.mx", 18924 "blogspot.my", 18925 "cloudfunctions.net", 18926 "blogspot.com.ng", 18927 "blogspot.nl", 18928 "blogspot.no", 18929 "blogspot.co.nz", 18930 "blogspot.pe", 18931 "blogspot.pt", 18932 "blogspot.qa", 18933 "blogspot.re", 18934 "blogspot.ro", 18935 "blogspot.rs", 18936 "blogspot.ru", 18937 "blogspot.se", 18938 "blogspot.sg", 18939 "blogspot.si", 18940 "blogspot.sk", 18941 "blogspot.sn", 18942 "blogspot.td", 18943 "blogspot.com.tr", 18944 "blogspot.tw", 18945 "blogspot.ug", 18946 "blogspot.co.uk", 18947 "blogspot.com.uy", 18948 "blogspot.vn", 18949 "blogspot.co.za", 18950 "goupile.fr", 18951 "pymnt.uk", 18952 "cloudapps.digital", 18953 "london.cloudapps.digital", 18954 "gov.nl", 18955 "grafana-dev.net", 18956 "grayjayleagues.com", 18957 "günstigbestellen.de", 18958 "günstigliefern.de", 18959 "fin.ci", 18960 "free.hr", 18961 "caa.li", 18962 "ua.rs", 18963 "conf.se", 18964 "häkkinen.fi", 18965 "hrsn.dev", 18966 "hashbang.sh", 18967 "hasura.app", 18968 "hasura-app.io", 18969 "hatenablog.com", 18970 "hatenadiary.com", 18971 "hateblo.jp", 18972 "hatenablog.jp", 18973 "hatenadiary.jp", 18974 "hatenadiary.org", 18975 "pages.it.hs-heilbronn.de", 18976 "pages-research.it.hs-heilbronn.de", 18977 "heiyu.space", 18978 "helioho.st", 18979 "heliohost.us", 18980 "hepforge.org", 18981 "herokuapp.com", 18982 "herokussl.com", 18983 "heyflow.page", 18984 "heyflow.site", 18985 "ravendb.cloud", 18986 "ravendb.community", 18987 "development.run", 18988 "ravendb.run", 18989 "homesklep.pl", 18990 "*.kin.one", 18991 "*.id.pub", 18992 "*.kin.pub", 18993 "secaas.hk", 18994 "hoplix.shop", 18995 "orx.biz", 18996 "biz.gl", 18997 "biz.ng", 18998 "co.biz.ng", 18999 "dl.biz.ng", 19000 "go.biz.ng", 19001 "lg.biz.ng", 19002 "on.biz.ng", 19003 "col.ng", 19004 "firm.ng", 19005 "gen.ng", 19006 "ltd.ng", 19007 "ngo.ng", 19008 "plc.ng", 19009 "ie.ua", 19010 "hostyhosting.io", 19011 "hf.space", 19012 "static.hf.space", 19013 "hypernode.io", 19014 "iobb.net", 19015 "co.cz", 19016 "*.moonscale.io", 19017 "moonscale.net", 19018 "gr.com", 19019 "iki.fi", 19020 "ibxos.it", 19021 "iliadboxos.it", 19022 "smushcdn.com", 19023 "wphostedmail.com", 19024 "wpmucdn.com", 19025 "tempurl.host", 19026 "wpmudev.host", 19027 "dyn-berlin.de", 19028 "in-berlin.de", 19029 "in-brb.de", 19030 "in-butter.de", 19031 "in-dsl.de", 19032 "in-vpn.de", 19033 "in-dsl.net", 19034 "in-vpn.net", 19035 "in-dsl.org", 19036 "in-vpn.org", 19037 "biz.at", 19038 "info.at", 19039 "info.cx", 19040 "ac.leg.br", 19041 "al.leg.br", 19042 "am.leg.br", 19043 "ap.leg.br", 19044 "ba.leg.br", 19045 "ce.leg.br", 19046 "df.leg.br", 19047 "es.leg.br", 19048 "go.leg.br", 19049 "ma.leg.br", 19050 "mg.leg.br", 19051 "ms.leg.br", 19052 "mt.leg.br", 19053 "pa.leg.br", 19054 "pb.leg.br", 19055 "pe.leg.br", 19056 "pi.leg.br", 19057 "pr.leg.br", 19058 "rj.leg.br", 19059 "rn.leg.br", 19060 "ro.leg.br", 19061 "rr.leg.br", 19062 "rs.leg.br", 19063 "sc.leg.br", 19064 "se.leg.br", 19065 "sp.leg.br", 19066 "to.leg.br", 19067 "pixolino.com", 19068 "na4u.ru", 19069 "apps-1and1.com", 19070 "live-website.com", 19071 "apps-1and1.net", 19072 "websitebuilder.online", 19073 "app-ionos.space", 19074 "iopsys.se", 19075 "*.dweb.link", 19076 "ipifony.net", 19077 "ir.md", 19078 "is-a-good.dev", 19079 "is-a.dev", 19080 "iservschule.de", 19081 "mein-iserv.de", 19082 "schulplattform.de", 19083 "schulserver.de", 19084 "test-iserv.de", 19085 "iserv.dev", 19086 "mel.cloudlets.com.au", 19087 "cloud.interhostsolutions.be", 19088 "alp1.ae.flow.ch", 19089 "appengine.flow.ch", 19090 "es-1.axarnet.cloud", 19091 "diadem.cloud", 19092 "vip.jelastic.cloud", 19093 "jele.cloud", 19094 "it1.eur.aruba.jenv-aruba.cloud", 19095 "it1.jenv-aruba.cloud", 19096 "keliweb.cloud", 19097 "cs.keliweb.cloud", 19098 "oxa.cloud", 19099 "tn.oxa.cloud", 19100 "uk.oxa.cloud", 19101 "primetel.cloud", 19102 "uk.primetel.cloud", 19103 "ca.reclaim.cloud", 19104 "uk.reclaim.cloud", 19105 "us.reclaim.cloud", 19106 "ch.trendhosting.cloud", 19107 "de.trendhosting.cloud", 19108 "jele.club", 19109 "dopaas.com", 19110 "paas.hosted-by-previder.com", 19111 "rag-cloud.hosteur.com", 19112 "rag-cloud-ch.hosteur.com", 19113 "jcloud.ik-server.com", 19114 "jcloud-ver-jpc.ik-server.com", 19115 "demo.jelastic.com", 19116 "paas.massivegrid.com", 19117 "jed.wafaicloud.com", 19118 "ryd.wafaicloud.com", 19119 "j.scaleforce.com.cy", 19120 "jelastic.dogado.eu", 19121 "fi.cloudplatform.fi", 19122 "demo.datacenter.fi", 19123 "paas.datacenter.fi", 19124 "jele.host", 19125 "mircloud.host", 19126 "paas.beebyte.io", 19127 "sekd1.beebyteapp.io", 19128 "jele.io", 19129 "jc.neen.it", 19130 "jcloud.kz", 19131 "cloudjiffy.net", 19132 "fra1-de.cloudjiffy.net", 19133 "west1-us.cloudjiffy.net", 19134 "jls-sto1.elastx.net", 19135 "jls-sto2.elastx.net", 19136 "jls-sto3.elastx.net", 19137 "fr-1.paas.massivegrid.net", 19138 "lon-1.paas.massivegrid.net", 19139 "lon-2.paas.massivegrid.net", 19140 "ny-1.paas.massivegrid.net", 19141 "ny-2.paas.massivegrid.net", 19142 "sg-1.paas.massivegrid.net", 19143 "jelastic.saveincloud.net", 19144 "nordeste-idc.saveincloud.net", 19145 "j.scaleforce.net", 19146 "sdscloud.pl", 19147 "unicloud.pl", 19148 "mircloud.ru", 19149 "enscaled.sg", 19150 "jele.site", 19151 "jelastic.team", 19152 "orangecloud.tn", 19153 "j.layershift.co.uk", 19154 "phx.enscaled.us", 19155 "mircloud.us", 19156 "myjino.ru", 19157 "*.hosting.myjino.ru", 19158 "*.landing.myjino.ru", 19159 "*.spectrum.myjino.ru", 19160 "*.vps.myjino.ru", 19161 "jotelulu.cloud", 19162 "webadorsite.com", 19163 "jouwweb.site", 19164 "*.cns.joyent.com", 19165 "*.triton.zone", 19166 "js.org", 19167 "kaas.gg", 19168 "khplay.nl", 19169 "kapsi.fi", 19170 "ezproxy.kuleuven.be", 19171 "kuleuven.cloud", 19172 "keymachine.de", 19173 "kinghost.net", 19174 "uni5.net", 19175 "knightpoint.systems", 19176 "koobin.events", 19177 "webthings.io", 19178 "krellian.net", 19179 "oya.to", 19180 "git-repos.de", 19181 "lcube-server.de", 19182 "svn-repos.de", 19183 "leadpages.co", 19184 "lpages.co", 19185 "lpusercontent.com", 19186 "lelux.site", 19187 "libp2p.direct", 19188 "runcontainers.dev", 19189 "co.business", 19190 "co.education", 19191 "co.events", 19192 "co.financial", 19193 "co.network", 19194 "co.place", 19195 "co.technology", 19196 "linkyard-cloud.ch", 19197 "linkyard.cloud", 19198 "members.linode.com", 19199 "*.nodebalancer.linode.com", 19200 "*.linodeobjects.com", 19201 "ip.linodeusercontent.com", 19202 "we.bs", 19203 "filegear-sg.me", 19204 "ggff.net", 19205 "*.user.localcert.dev", 19206 "lodz.pl", 19207 "pabianice.pl", 19208 "plock.pl", 19209 "sieradz.pl", 19210 "skierniewice.pl", 19211 "zgierz.pl", 19212 "loginline.app", 19213 "loginline.dev", 19214 "loginline.io", 19215 "loginline.services", 19216 "loginline.site", 19217 "lohmus.me", 19218 "servers.run", 19219 "krasnik.pl", 19220 "leczna.pl", 19221 "lubartow.pl", 19222 "lublin.pl", 19223 "poniatowa.pl", 19224 "swidnik.pl", 19225 "glug.org.uk", 19226 "lug.org.uk", 19227 "lugs.org.uk", 19228 "barsy.bg", 19229 "barsy.club", 19230 "barsycenter.com", 19231 "barsyonline.com", 19232 "barsy.de", 19233 "barsy.dev", 19234 "barsy.eu", 19235 "barsy.gr", 19236 "barsy.in", 19237 "barsy.info", 19238 "barsy.io", 19239 "barsy.me", 19240 "barsy.menu", 19241 "barsyonline.menu", 19242 "barsy.mobi", 19243 "barsy.net", 19244 "barsy.online", 19245 "barsy.org", 19246 "barsy.pro", 19247 "barsy.pub", 19248 "barsy.ro", 19249 "barsy.rs", 19250 "barsy.shop", 19251 "barsyonline.shop", 19252 "barsy.site", 19253 "barsy.store", 19254 "barsy.support", 19255 "barsy.uk", 19256 "barsy.co.uk", 19257 "barsyonline.co.uk", 19258 "*.magentosite.cloud", 19259 "hb.cldmail.ru", 19260 "matlab.cloud", 19261 "modelscape.com", 19262 "mwcloudnonprod.com", 19263 "polyspace.com", 19264 "mayfirst.info", 19265 "mayfirst.org", 19266 "mazeplay.com", 19267 "mcdir.me", 19268 "mcdir.ru", 19269 "vps.mcdir.ru", 19270 "mcpre.ru", 19271 "mediatech.by", 19272 "mediatech.dev", 19273 "hra.health", 19274 "medusajs.app", 19275 "miniserver.com", 19276 "memset.net", 19277 "messerli.app", 19278 "atmeta.com", 19279 "apps.fbsbx.com", 19280 "*.cloud.metacentrum.cz", 19281 "custom.metacentrum.cz", 19282 "flt.cloud.muni.cz", 19283 "usr.cloud.muni.cz", 19284 "meteorapp.com", 19285 "eu.meteorapp.com", 19286 "co.pl", 19287 "*.azurecontainer.io", 19288 "azure-api.net", 19289 "azure-mobile.net", 19290 "azureedge.net", 19291 "azurefd.net", 19292 "azurestaticapps.net", 19293 "1.azurestaticapps.net", 19294 "2.azurestaticapps.net", 19295 "3.azurestaticapps.net", 19296 "4.azurestaticapps.net", 19297 "5.azurestaticapps.net", 19298 "6.azurestaticapps.net", 19299 "7.azurestaticapps.net", 19300 "centralus.azurestaticapps.net", 19301 "eastasia.azurestaticapps.net", 19302 "eastus2.azurestaticapps.net", 19303 "westeurope.azurestaticapps.net", 19304 "westus2.azurestaticapps.net", 19305 "azurewebsites.net", 19306 "cloudapp.net", 19307 "trafficmanager.net", 19308 "blob.core.windows.net", 19309 "servicebus.windows.net", 19310 "routingthecloud.com", 19311 "sn.mynetname.net", 19312 "routingthecloud.net", 19313 "routingthecloud.org", 19314 "csx.cc", 19315 "mydbserver.com", 19316 "webspaceconfig.de", 19317 "mittwald.info", 19318 "mittwaldserver.info", 19319 "typo3server.info", 19320 "project.space", 19321 "modx.dev", 19322 "bmoattachments.org", 19323 "net.ru", 19324 "org.ru", 19325 "pp.ru", 19326 "hostedpi.com", 19327 "caracal.mythic-beasts.com", 19328 "customer.mythic-beasts.com", 19329 "fentiger.mythic-beasts.com", 19330 "lynx.mythic-beasts.com", 19331 "ocelot.mythic-beasts.com", 19332 "oncilla.mythic-beasts.com", 19333 "onza.mythic-beasts.com", 19334 "sphinx.mythic-beasts.com", 19335 "vs.mythic-beasts.com", 19336 "x.mythic-beasts.com", 19337 "yali.mythic-beasts.com", 19338 "cust.retrosnub.co.uk", 19339 "ui.nabu.casa", 19340 "cloud.nospamproxy.com", 19341 "netfy.app", 19342 "netlify.app", 19343 "4u.com", 19344 "nfshost.com", 19345 "ipfs.nftstorage.link", 19346 "ngo.us", 19347 "ngrok.app", 19348 "ngrok-free.app", 19349 "ngrok.dev", 19350 "ngrok-free.dev", 19351 "ngrok.io", 19352 "ap.ngrok.io", 19353 "au.ngrok.io", 19354 "eu.ngrok.io", 19355 "in.ngrok.io", 19356 "jp.ngrok.io", 19357 "sa.ngrok.io", 19358 "us.ngrok.io", 19359 "ngrok.pizza", 19360 "ngrok.pro", 19361 "torun.pl", 19362 "nh-serv.co.uk", 19363 "nimsite.uk", 19364 "mmafan.biz", 19365 "myftp.biz", 19366 "no-ip.biz", 19367 "no-ip.ca", 19368 "fantasyleague.cc", 19369 "gotdns.ch", 19370 "3utilities.com", 19371 "blogsyte.com", 19372 "ciscofreak.com", 19373 "damnserver.com", 19374 "ddnsking.com", 19375 "ditchyourip.com", 19376 "dnsiskinky.com", 19377 "dynns.com", 19378 "geekgalaxy.com", 19379 "health-carereform.com", 19380 "homesecuritymac.com", 19381 "homesecuritypc.com", 19382 "myactivedirectory.com", 19383 "mysecuritycamera.com", 19384 "myvnc.com", 19385 "net-freaks.com", 19386 "onthewifi.com", 19387 "point2this.com", 19388 "quicksytes.com", 19389 "securitytactics.com", 19390 "servebeer.com", 19391 "servecounterstrike.com", 19392 "serveexchange.com", 19393 "serveftp.com", 19394 "servegame.com", 19395 "servehalflife.com", 19396 "servehttp.com", 19397 "servehumour.com", 19398 "serveirc.com", 19399 "servemp3.com", 19400 "servep2p.com", 19401 "servepics.com", 19402 "servequake.com", 19403 "servesarcasm.com", 19404 "stufftoread.com", 19405 "unusualperson.com", 19406 "workisboring.com", 19407 "dvrcam.info", 19408 "ilovecollege.info", 19409 "no-ip.info", 19410 "brasilia.me", 19411 "ddns.me", 19412 "dnsfor.me", 19413 "hopto.me", 19414 "loginto.me", 19415 "noip.me", 19416 "webhop.me", 19417 "bounceme.net", 19418 "ddns.net", 19419 "eating-organic.net", 19420 "mydissent.net", 19421 "myeffect.net", 19422 "mymediapc.net", 19423 "mypsx.net", 19424 "mysecuritycamera.net", 19425 "nhlfan.net", 19426 "no-ip.net", 19427 "pgafan.net", 19428 "privatizehealthinsurance.net", 19429 "redirectme.net", 19430 "serveblog.net", 19431 "serveminecraft.net", 19432 "sytes.net", 19433 "cable-modem.org", 19434 "collegefan.org", 19435 "couchpotatofries.org", 19436 "hopto.org", 19437 "mlbfan.org", 19438 "myftp.org", 19439 "mysecuritycamera.org", 19440 "nflfan.org", 19441 "no-ip.org", 19442 "read-books.org", 19443 "ufcfan.org", 19444 "zapto.org", 19445 "no-ip.co.uk", 19446 "golffan.us", 19447 "noip.us", 19448 "pointto.us", 19449 "stage.nodeart.io", 19450 "*.developer.app", 19451 "noop.app", 19452 "*.northflank.app", 19453 "*.build.run", 19454 "*.code.run", 19455 "*.database.run", 19456 "*.migration.run", 19457 "noticeable.news", 19458 "notion.site", 19459 "dnsking.ch", 19460 "mypi.co", 19461 "n4t.co", 19462 "001www.com", 19463 "myiphost.com", 19464 "forumz.info", 19465 "soundcast.me", 19466 "tcp4.me", 19467 "dnsup.net", 19468 "hicam.net", 19469 "now-dns.net", 19470 "ownip.net", 19471 "vpndns.net", 19472 "dynserv.org", 19473 "now-dns.org", 19474 "x443.pw", 19475 "now-dns.top", 19476 "ntdll.top", 19477 "freeddns.us", 19478 "nsupdate.info", 19479 "nerdpol.ovh", 19480 "nyc.mn", 19481 "prvcy.page", 19482 "obl.ong", 19483 "observablehq.cloud", 19484 "static.observableusercontent.com", 19485 "omg.lol", 19486 "cloudycluster.net", 19487 "omniwe.site", 19488 "123webseite.at", 19489 "123website.be", 19490 "simplesite.com.br", 19491 "123website.ch", 19492 "simplesite.com", 19493 "123webseite.de", 19494 "123hjemmeside.dk", 19495 "123miweb.es", 19496 "123kotisivu.fi", 19497 "123siteweb.fr", 19498 "simplesite.gr", 19499 "123homepage.it", 19500 "123website.lu", 19501 "123website.nl", 19502 "123hjemmeside.no", 19503 "service.one", 19504 "simplesite.pl", 19505 "123paginaweb.pt", 19506 "123minsida.se", 19507 "is-a-fullstack.dev", 19508 "is-cool.dev", 19509 "is-not-a.dev", 19510 "localplayer.dev", 19511 "is-local.org", 19512 "opensocial.site", 19513 "opencraft.hosting", 19514 "16-b.it", 19515 "32-b.it", 19516 "64-b.it", 19517 "orsites.com", 19518 "operaunite.com", 19519 "*.customer-oci.com", 19520 "*.oci.customer-oci.com", 19521 "*.ocp.customer-oci.com", 19522 "*.ocs.customer-oci.com", 19523 "*.oraclecloudapps.com", 19524 "*.oraclegovcloudapps.com", 19525 "*.oraclegovcloudapps.uk", 19526 "tech.orange", 19527 "can.re", 19528 "authgear-staging.com", 19529 "authgearapps.com", 19530 "skygearapp.com", 19531 "outsystemscloud.com", 19532 "*.hosting.ovh.net", 19533 "*.webpaas.ovh.net", 19534 "ownprovider.com", 19535 "own.pm", 19536 "*.owo.codes", 19537 "ox.rs", 19538 "oy.lc", 19539 "pgfog.com", 19540 "pagexl.com", 19541 "gotpantheon.com", 19542 "pantheonsite.io", 19543 "*.paywhirl.com", 19544 "*.xmit.co", 19545 "xmit.dev", 19546 "madethis.site", 19547 "srv.us", 19548 "gh.srv.us", 19549 "gl.srv.us", 19550 "lk3.ru", 19551 "mypep.link", 19552 "perspecta.cloud", 19553 "on-web.fr", 19554 "*.upsun.app", 19555 "upsunapp.com", 19556 "ent.platform.sh", 19557 "eu.platform.sh", 19558 "us.platform.sh", 19559 "*.platformsh.site", 19560 "*.tst.site", 19561 "platter-app.com", 19562 "platter-app.dev", 19563 "platterp.us", 19564 "pley.games", 19565 "onporter.run", 19566 "co.bn", 19567 "postman-echo.com", 19568 "pstmn.io", 19569 "mock.pstmn.io", 19570 "httpbin.org", 19571 "prequalifyme.today", 19572 "xen.prgmr.com", 19573 "priv.at", 19574 "protonet.io", 19575 "chirurgiens-dentistes-en-france.fr", 19576 "byen.site", 19577 "pubtls.org", 19578 "pythonanywhere.com", 19579 "eu.pythonanywhere.com", 19580 "qa2.com", 19581 "qcx.io", 19582 "*.sys.qcx.io", 19583 "myqnapcloud.cn", 19584 "alpha-myqnapcloud.com", 19585 "dev-myqnapcloud.com", 19586 "mycloudnas.com", 19587 "mynascloud.com", 19588 "myqnapcloud.com", 19589 "qoto.io", 19590 "qualifioapp.com", 19591 "ladesk.com", 19592 "qbuser.com", 19593 "*.quipelements.com", 19594 "vapor.cloud", 19595 "vaporcloud.io", 19596 "rackmaze.com", 19597 "rackmaze.net", 19598 "cloudsite.builders", 19599 "myradweb.net", 19600 "servername.us", 19601 "web.in", 19602 "in.net", 19603 "myrdbx.io", 19604 "site.rb-hosting.io", 19605 "*.on-rancher.cloud", 19606 "*.on-k3s.io", 19607 "*.on-rio.io", 19608 "ravpage.co.il", 19609 "readthedocs-hosted.com", 19610 "readthedocs.io", 19611 "rhcloud.com", 19612 "instances.spawn.cc", 19613 "onrender.com", 19614 "app.render.com", 19615 "replit.app", 19616 "id.replit.app", 19617 "firewalledreplit.co", 19618 "id.firewalledreplit.co", 19619 "repl.co", 19620 "id.repl.co", 19621 "replit.dev", 19622 "archer.replit.dev", 19623 "bones.replit.dev", 19624 "canary.replit.dev", 19625 "global.replit.dev", 19626 "hacker.replit.dev", 19627 "id.replit.dev", 19628 "janeway.replit.dev", 19629 "kim.replit.dev", 19630 "kira.replit.dev", 19631 "kirk.replit.dev", 19632 "odo.replit.dev", 19633 "paris.replit.dev", 19634 "picard.replit.dev", 19635 "pike.replit.dev", 19636 "prerelease.replit.dev", 19637 "reed.replit.dev", 19638 "riker.replit.dev", 19639 "sisko.replit.dev", 19640 "spock.replit.dev", 19641 "staging.replit.dev", 19642 "sulu.replit.dev", 19643 "tarpit.replit.dev", 19644 "teams.replit.dev", 19645 "tucker.replit.dev", 19646 "wesley.replit.dev", 19647 "worf.replit.dev", 19648 "repl.run", 19649 "resindevice.io", 19650 "devices.resinstaging.io", 19651 "hzc.io", 19652 "adimo.co.uk", 19653 "itcouldbewor.se", 19654 "aus.basketball", 19655 "nz.basketball", 19656 "git-pages.rit.edu", 19657 "rocky.page", 19658 "rub.de", 19659 "ruhr-uni-bochum.de", 19660 "io.noc.ruhr-uni-bochum.de", 19661 "биз.ÑÑÑ", 19662 "ком.ÑÑÑ", 19663 "кÑÑм.ÑÑÑ", 19664 "миÑ.ÑÑÑ", 19665 "мÑк.ÑÑÑ", 19666 "оÑг.ÑÑÑ", 19667 "ÑамаÑа.ÑÑÑ", 19668 "ÑоÑи.ÑÑÑ", 19669 "Ñпб.ÑÑÑ", 19670 "Ñ.ÑÑÑ", 19671 "ras.ru", 19672 "nyat.app", 19673 "180r.com", 19674 "dojin.com", 19675 "sakuratan.com", 19676 "sakuraweb.com", 19677 "x0.com", 19678 "2-d.jp", 19679 "bona.jp", 19680 "crap.jp", 19681 "daynight.jp", 19682 "eek.jp", 19683 "flop.jp", 19684 "halfmoon.jp", 19685 "jeez.jp", 19686 "matrix.jp", 19687 "mimoza.jp", 19688 "ivory.ne.jp", 19689 "mail-box.ne.jp", 19690 "mints.ne.jp", 19691 "mokuren.ne.jp", 19692 "opal.ne.jp", 19693 "sakura.ne.jp", 19694 "sumomo.ne.jp", 19695 "topaz.ne.jp", 19696 "netgamers.jp", 19697 "nyanta.jp", 19698 "o0o0.jp", 19699 "rdy.jp", 19700 "rgr.jp", 19701 "rulez.jp", 19702 "s3.isk01.sakurastorage.jp", 19703 "s3.isk02.sakurastorage.jp", 19704 "saloon.jp", 19705 "sblo.jp", 19706 "skr.jp", 19707 "tank.jp", 19708 "uh-oh.jp", 19709 "undo.jp", 19710 "rs.webaccel.jp", 19711 "user.webaccel.jp", 19712 "websozai.jp", 19713 "xii.jp", 19714 "squares.net", 19715 "jpn.org", 19716 "kirara.st", 19717 "x0.to", 19718 "from.tv", 19719 "sakura.tv", 19720 "*.builder.code.com", 19721 "*.dev-builder.code.com", 19722 "*.stg-builder.code.com", 19723 "*.001.test.code-builder-stg.platform.salesforce.com", 19724 "*.d.crm.dev", 19725 "*.w.crm.dev", 19726 "*.wa.crm.dev", 19727 "*.wb.crm.dev", 19728 "*.wc.crm.dev", 19729 "*.wd.crm.dev", 19730 "*.we.crm.dev", 19731 "*.wf.crm.dev", 19732 "sandcats.io", 19733 "logoip.com", 19734 "logoip.de", 19735 "fr-par-1.baremetal.scw.cloud", 19736 "fr-par-2.baremetal.scw.cloud", 19737 "nl-ams-1.baremetal.scw.cloud", 19738 "cockpit.fr-par.scw.cloud", 19739 "fnc.fr-par.scw.cloud", 19740 "functions.fnc.fr-par.scw.cloud", 19741 "k8s.fr-par.scw.cloud", 19742 "nodes.k8s.fr-par.scw.cloud", 19743 "s3.fr-par.scw.cloud", 19744 "s3-website.fr-par.scw.cloud", 19745 "whm.fr-par.scw.cloud", 19746 "priv.instances.scw.cloud", 19747 "pub.instances.scw.cloud", 19748 "k8s.scw.cloud", 19749 "cockpit.nl-ams.scw.cloud", 19750 "k8s.nl-ams.scw.cloud", 19751 "nodes.k8s.nl-ams.scw.cloud", 19752 "s3.nl-ams.scw.cloud", 19753 "s3-website.nl-ams.scw.cloud", 19754 "whm.nl-ams.scw.cloud", 19755 "cockpit.pl-waw.scw.cloud", 19756 "k8s.pl-waw.scw.cloud", 19757 "nodes.k8s.pl-waw.scw.cloud", 19758 "s3.pl-waw.scw.cloud", 19759 "s3-website.pl-waw.scw.cloud", 19760 "scalebook.scw.cloud", 19761 "smartlabeling.scw.cloud", 19762 "dedibox.fr", 19763 "schokokeks.net", 19764 "gov.scot", 19765 "service.gov.scot", 19766 "scrysec.com", 19767 "client.scrypted.io", 19768 "firewall-gateway.com", 19769 "firewall-gateway.de", 19770 "my-gateway.de", 19771 "my-router.de", 19772 "spdns.de", 19773 "spdns.eu", 19774 "firewall-gateway.net", 19775 "my-firewall.org", 19776 "myfirewall.org", 19777 "spdns.org", 19778 "seidat.net", 19779 "sellfy.store", 19780 "minisite.ms", 19781 "senseering.net", 19782 "servebolt.cloud", 19783 "biz.ua", 19784 "co.ua", 19785 "pp.ua", 19786 "as.sh.cn", 19787 "sheezy.games", 19788 "shiftedit.io", 19789 "myshopblocks.com", 19790 "myshopify.com", 19791 "shopitsite.com", 19792 "shopware.shop", 19793 "shopware.store", 19794 "mo-siemens.io", 19795 "1kapp.com", 19796 "appchizi.com", 19797 "applinzi.com", 19798 "sinaapp.com", 19799 "vipsinaapp.com", 19800 "siteleaf.net", 19801 "small-web.org", 19802 "aeroport.fr", 19803 "avocat.fr", 19804 "chambagri.fr", 19805 "chirurgiens-dentistes.fr", 19806 "experts-comptables.fr", 19807 "medecin.fr", 19808 "notaires.fr", 19809 "pharmacien.fr", 19810 "port.fr", 19811 "veterinaire.fr", 19812 "vp4.me", 19813 "*.snowflake.app", 19814 "*.privatelink.snowflake.app", 19815 "streamlit.app", 19816 "streamlitapp.com", 19817 "try-snowplow.com", 19818 "mafelo.net", 19819 "playstation-cloud.com", 19820 "srht.site", 19821 "apps.lair.io", 19822 "*.stolos.io", 19823 "spacekit.io", 19824 "ind.mom", 19825 "customer.speedpartner.de", 19826 "myspreadshop.at", 19827 "myspreadshop.com.au", 19828 "myspreadshop.be", 19829 "myspreadshop.ca", 19830 "myspreadshop.ch", 19831 "myspreadshop.com", 19832 "myspreadshop.de", 19833 "myspreadshop.dk", 19834 "myspreadshop.es", 19835 "myspreadshop.fi", 19836 "myspreadshop.fr", 19837 "myspreadshop.ie", 19838 "myspreadshop.it", 19839 "myspreadshop.net", 19840 "myspreadshop.nl", 19841 "myspreadshop.no", 19842 "myspreadshop.pl", 19843 "myspreadshop.se", 19844 "myspreadshop.co.uk", 19845 "w-corp-staticblitz.com", 19846 "w-credentialless-staticblitz.com", 19847 "w-staticblitz.com", 19848 "stackhero-network.com", 19849 "runs.onstackit.cloud", 19850 "stackit.gg", 19851 "stackit.rocks", 19852 "stackit.run", 19853 "stackit.zone", 19854 "musician.io", 19855 "novecore.site", 19856 "api.stdlib.com", 19857 "feedback.ac", 19858 "forms.ac", 19859 "assessments.cx", 19860 "calculators.cx", 19861 "funnels.cx", 19862 "paynow.cx", 19863 "quizzes.cx", 19864 "researched.cx", 19865 "tests.cx", 19866 "surveys.so", 19867 "storebase.store", 19868 "storipress.app", 19869 "storj.farm", 19870 "strapiapp.com", 19871 "media.strapiapp.com", 19872 "vps-host.net", 19873 "atl.jelastic.vps-host.net", 19874 "njs.jelastic.vps-host.net", 19875 "ric.jelastic.vps-host.net", 19876 "streak-link.com", 19877 "streaklinks.com", 19878 "streakusercontent.com", 19879 "soc.srcf.net", 19880 "user.srcf.net", 19881 "utwente.io", 19882 "temp-dns.com", 19883 "supabase.co", 19884 "supabase.in", 19885 "supabase.net", 19886 "syncloud.it", 19887 "dscloud.biz", 19888 "direct.quickconnect.cn", 19889 "dsmynas.com", 19890 "familyds.com", 19891 "diskstation.me", 19892 "dscloud.me", 19893 "i234.me", 19894 "myds.me", 19895 "synology.me", 19896 "dscloud.mobi", 19897 "dsmynas.net", 19898 "familyds.net", 19899 "dsmynas.org", 19900 "familyds.org", 19901 "direct.quickconnect.to", 19902 "vpnplus.to", 19903 "mytabit.com", 19904 "mytabit.co.il", 19905 "tabitorder.co.il", 19906 "taifun-dns.de", 19907 "ts.net", 19908 "*.c.ts.net", 19909 "gda.pl", 19910 "gdansk.pl", 19911 "gdynia.pl", 19912 "med.pl", 19913 "sopot.pl", 19914 "taveusercontent.com", 19915 "p.tawk.email", 19916 "p.tawkto.email", 19917 "site.tb-hosting.com", 19918 "edugit.io", 19919 "s3.teckids.org", 19920 "telebit.app", 19921 "telebit.io", 19922 "*.telebit.xyz", 19923 "*.firenet.ch", 19924 "*.svc.firenet.ch", 19925 "reservd.com", 19926 "thingdustdata.com", 19927 "cust.dev.thingdust.io", 19928 "reservd.dev.thingdust.io", 19929 "cust.disrec.thingdust.io", 19930 "reservd.disrec.thingdust.io", 19931 "cust.prod.thingdust.io", 19932 "cust.testing.thingdust.io", 19933 "reservd.testing.thingdust.io", 19934 "tickets.io", 19935 "arvo.network", 19936 "azimuth.network", 19937 "tlon.network", 19938 "torproject.net", 19939 "pages.torproject.net", 19940 "townnews-staging.com", 19941 "12hp.at", 19942 "2ix.at", 19943 "4lima.at", 19944 "lima-city.at", 19945 "12hp.ch", 19946 "2ix.ch", 19947 "4lima.ch", 19948 "lima-city.ch", 19949 "trafficplex.cloud", 19950 "de.cool", 19951 "12hp.de", 19952 "2ix.de", 19953 "4lima.de", 19954 "lima-city.de", 19955 "1337.pictures", 19956 "clan.rip", 19957 "lima-city.rocks", 19958 "webspace.rocks", 19959 "lima.zone", 19960 "*.transurl.be", 19961 "*.transurl.eu", 19962 "site.transip.me", 19963 "*.transurl.nl", 19964 "tuxfamily.org", 19965 "dd-dns.de", 19966 "dray-dns.de", 19967 "draydns.de", 19968 "dyn-vpn.de", 19969 "dynvpn.de", 19970 "mein-vigor.de", 19971 "my-vigor.de", 19972 "my-wan.de", 19973 "syno-ds.de", 19974 "synology-diskstation.de", 19975 "synology-ds.de", 19976 "diskstation.eu", 19977 "diskstation.org", 19978 "typedream.app", 19979 "pro.typeform.com", 19980 "*.uberspace.de", 19981 "uber.space", 19982 "hk.com", 19983 "inc.hk", 19984 "ltd.hk", 19985 "hk.org", 19986 "it.com", 19987 "unison-services.cloud", 19988 "virtual-user.de", 19989 "virtualuser.de", 19990 "name.pm", 19991 "sch.tf", 19992 "biz.wf", 19993 "sch.wf", 19994 "org.yt", 19995 "rs.ba", 19996 "bielsko.pl", 19997 "upli.io", 19998 "urown.cloud", 19999 "dnsupdate.info", 20000 "us.org", 20001 "v.ua", 20002 "express.val.run", 20003 "web.val.run", 20004 "vercel.app", 20005 "v0.build", 20006 "vercel.dev", 20007 "vusercontent.net", 20008 "now.sh", 20009 "2038.io", 20010 "router.management", 20011 "v-info.info", 20012 "voorloper.cloud", 20013 "*.vultrobjects.com", 20014 "wafflecell.com", 20015 "webflow.io", 20016 "webflowtest.io", 20017 "*.webhare.dev", 20018 "bookonline.app", 20019 "hotelwithflight.com", 20020 "reserve-online.com", 20021 "reserve-online.net", 20022 "cprapid.com", 20023 "pleskns.com", 20024 "wp2.host", 20025 "pdns.page", 20026 "plesk.page", 20027 "wpsquared.site", 20028 "*.wadl.top", 20029 "remotewd.com", 20030 "box.ca", 20031 "pages.wiardweb.com", 20032 "toolforge.org", 20033 "wmcloud.org", 20034 "wmflabs.org", 20035 "wdh.app", 20036 "panel.gg", 20037 "daemon.panel.gg", 20038 "wixsite.com", 20039 "wixstudio.com", 20040 "editorx.io", 20041 "wixstudio.io", 20042 "wix.run", 20043 "messwithdns.com", 20044 "woltlab-demo.com", 20045 "myforum.community", 20046 "community-pro.de", 20047 "diskussionsbereich.de", 20048 "community-pro.net", 20049 "meinforum.net", 20050 "affinitylottery.org.uk", 20051 "raffleentry.org.uk", 20052 "weeklylottery.org.uk", 20053 "wpenginepowered.com", 20054 "js.wpenginepowered.com", 20055 "half.host", 20056 "xnbay.com", 20057 "u2.xnbay.com", 20058 "u2-local.xnbay.com", 20059 "cistron.nl", 20060 "demon.nl", 20061 "xs4all.space", 20062 "yandexcloud.net", 20063 "storage.yandexcloud.net", 20064 "website.yandexcloud.net", 20065 "official.academy", 20066 "yolasite.com", 20067 "yombo.me", 20068 "ynh.fr", 20069 "nohost.me", 20070 "noho.st", 20071 "za.net", 20072 "za.org", 20073 "zap.cloud", 20074 "zeabur.app", 20075 "bss.design", 20076 "basicserver.io", 20077 "virtualserver.io", 20078 "enterprisecloud.nu" 20079], Q = K.reduce( 20080 (e, s) => { 20081 const c = s.replace(/^(\*\.|\!)/, ""), o = A.toASCII(c), t = s.charAt(0); 20082 if (e.has(o)) 20083 throw new Error(`Multiple rules found for ${s} (${o})`); 20084 return e.set(o, { 20085 rule: s, 20086 suffix: c, 20087 punySuffix: o, 20088 wildcard: t === "*", 20089 exception: t === "!" 20090 }), e; 20091 }, 20092 /* @__PURE__ */ new Map() 20093), X = (e) => { 20094 const c = A.toASCII(e).split("."); 20095 for (let o = 0; o < c.length; o++) { 20096 const t = c.slice(o).join("."), d = Q.get(t); 20097 if (d) 20098 return d; 20099 } 20100 return null; 20101}, Y = { 20102 DOMAIN_TOO_SHORT: "Domain name too short.", 20103 DOMAIN_TOO_LONG: "Domain name too long. It should be no more than 255 chars.", 20104 LABEL_STARTS_WITH_DASH: "Domain name label can not start with a dash.", 20105 LABEL_ENDS_WITH_DASH: "Domain name label can not end with a dash.", 20106 LABEL_TOO_LONG: "Domain name label should be at most 63 chars long.", 20107 LABEL_TOO_SHORT: "Domain name label should be at least 1 character long.", 20108 LABEL_INVALID_CHARS: "Domain name label can only contain alphanumeric characters or dashes." 20109}, Z = (e) => { 20110 const s = A.toASCII(e); 20111 if (s.length < 1) 20112 return "DOMAIN_TOO_SHORT"; 20113 if (s.length > 255) 20114 return "DOMAIN_TOO_LONG"; 20115 const c = s.split("."); 20116 let o; 20117 for (let t = 0; t < c.length; ++t) { 20118 if (o = c[t], !o.length) 20119 return "LABEL_TOO_SHORT"; 20120 if (o.length > 63) 20121 return "LABEL_TOO_LONG"; 20122 if (o.charAt(0) === "-") 20123 return "LABEL_STARTS_WITH_DASH"; 20124 if (o.charAt(o.length - 1) === "-") 20125 return "LABEL_ENDS_WITH_DASH"; 20126 if (!/^[a-z0-9\-_]+$/.test(o)) 20127 return "LABEL_INVALID_CHARS"; 20128 } 20129}, O = (e) => { 20130 if (typeof e != "string") 20131 throw new TypeError("Domain name must be a string."); 20132 let s = e.slice(0).toLowerCase(); 20133 s.charAt(s.length - 1) === "." && (s = s.slice(0, s.length - 1)); 20134 const c = Z(s); 20135 if (c) 20136 return { 20137 input: e, 20138 error: { 20139 message: Y[c], 20140 code: c 20141 } 20142 }; 20143 const o = { 20144 input: e, 20145 tld: null, 20146 sld: null, 20147 domain: null, 20148 subdomain: null, 20149 listed: !1 20150 }, t = s.split("."); 20151 if (t[t.length - 1] === "local") 20152 return o; 20153 const d = () => (/xn--/.test(s) && (o.domain && (o.domain = A.toASCII(o.domain)), o.subdomain && (o.subdomain = A.toASCII(o.subdomain))), o), z = X(s); 20154 if (!z) 20155 return t.length < 2 ? o : (o.tld = t.pop(), o.sld = t.pop(), o.domain = [o.sld, o.tld].join("."), t.length && (o.subdomain = t.pop()), d()); 20156 o.listed = !0; 20157 const y = z.suffix.split("."), g = t.slice(0, t.length - y.length); 20158 return z.exception && g.push(y.shift()), o.tld = y.join("."), !g.length || (z.wildcard && (y.unshift(g.pop()), o.tld = y.join(".")), !g.length) || (o.sld = g.pop(), o.domain = [o.sld, o.tld].join("."), g.length && (o.subdomain = g.join("."))), d(); 20159}, aa = (e) => e && O(e).domain || null, oa = (e) => { 20160 const s = O(e); 20161 return !!(s.domain && s.listed); 20162}, na = { parse: O, get: aa, isValid: oa };
20163 20164 20165 20166/***/ }), 20167 20168/***/ 67536: 20169/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20170 20171"use strict"; 20172/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20173/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 20174/* harmony export */ }); 20175var raf = function raf(callback) { 20176 return +setTimeout(callback, 16); 20177}; 20178var caf = function caf(num) { 20179 return clearTimeout(num); 20180}; 20181if (typeof window !== 'undefined' && 'requestAnimationFrame' in window) { 20182 raf = function raf(callback) { 20183 return window.requestAnimationFrame(callback); 20184 }; 20185 caf = function caf(handle) { 20186 return window.cancelAnimationFrame(handle); 20187 }; 20188} 20189var rafUUID = 0; 20190var rafIds = new Map(); 20191function cleanup(id) { 20192 rafIds.delete(id); 20193} 20194var wrapperRaf = function wrapperRaf(callback) { 20195 var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; 20196 rafUUID += 1; 20197 var id = rafUUID; 20198 function callRef(leftTimes) { 20199 if (leftTimes === 0) { 20200 // Clean up 20201 cleanup(id); 20202 20203 // Trigger 20204 callback(); 20205 } else { 20206 // Next raf 20207 var realId = raf(function () { 20208 callRef(leftTimes - 1); 20209 }); 20210 20211 // Bind real raf id 20212 rafIds.set(id, realId); 20213 } 20214 } 20215 callRef(times); 20216 return id; 20217}; 20218wrapperRaf.cancel = function (id) { 20219 var realId = rafIds.get(id); 20220 cleanup(id); 20221 return caf(realId); 20222}; 20223if (false) // removed by dead control flow 20224{} 20225/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (wrapperRaf); 20226 20227/***/ }), 20228 20229/***/ 69055: 20230/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20231 20232"use strict"; 20233/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20234/* harmony export */ A: () => (/* binding */ useIsQk) 20235/* harmony export */ }); 20236function useIsQk(server_siteCheck) { 20237 var _a, _b; 20238 if (typeof window === 'undefined') return server_siteCheck ? ((_a = server_siteCheck === null || server_siteCheck === void 0 ? void 0 : server_siteCheck.isShow) === null || _a === void 0 ? void 0 : _a.call(server_siteCheck, 'global-qkff')) === false : false;
20239 return ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.isShow('global-qkff')) === false; 20240} 20241 20242/***/ }), 20243 20244/***/ 69740: 20245/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20246 20247"use strict"; 20248/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20249/* harmony export */ A: () => (/* binding */ _objectSpread2) 20250/* harmony export */ }); 20251/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24586); 20252 20253function ownKeys(e, r) { 20254 var t = Object.keys(e); 20255 if (Object.getOwnPropertySymbols) { 20256 var o = Object.getOwnPropertySymbols(e); 20257 r && (o = o.filter(function (r) { 20258 return Object.getOwnPropertyDescriptor(e, r).enumerable; 20259 })), t.push.apply(t, o); 20260 } 20261 return t; 20262} 20263function _objectSpread2(e) { 20264 for (var r = 1; r < arguments.length; r++) { 20265 var t = null != arguments[r] ? arguments[r] : {}; 20266 r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { 20267 (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e, r, t[r]); 20268 }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { 20269 Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); 20270 }); 20271 } 20272 return e; 20273} 20274 20275 20276/***/ }), 20277 20278/***/ 70297: 20279/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20280 20281"use strict"; 20282/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20283/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 20284/* harmony export */ }); 20285/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 20286/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 20287/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 20288/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56003); 20289/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__); 20290/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(47169); 20291/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84445); 20292/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19284); 20293/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50184); 20294/* harmony import */ var _useDom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(74234); 20295/* harmony import */ var _useScrollLocker__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(6553); 20296/* harmony import */ var _mock__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(71161); 20297 20298 20299 20300 20301 20302 20303 20304 20305 20306 20307var getPortalContainer = function getPortalContainer(getContainer) { 20308 if (getContainer === false) { 20309 return false; 20310 } 20311 if (!(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)() || !getContainer) { 20312 return null; 20313 } 20314 if (typeof getContainer === 'string') { 20315 return document.querySelector(getContainer); 20316 } 20317 if (typeof getContainer === 'function') { 20318 return getContainer(); 20319 } 20320 return getContainer; 20321}; 20322var Portal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(function (props, ref) { 20323 var open = props.open, 20324 autoLock = props.autoLock, 20325 getContainer = props.getContainer, 20326 debug = props.debug, 20327 _props$autoDestroy = props.autoDestroy, 20328 autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy, 20329 children = props.children; 20330 var _React$useState = react__WEBPACK_IMPORTED_MODULE_1__.useState(open), 20331 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 20332 shouldRender = _React$useState2[0], 20333 setShouldRender = _React$useState2[1]; 20334 var mergedRender = shouldRender || open; 20335 20336 // ========================= Warning ========================= 20337 if (false) // removed by dead control flow 20338{} 20339
20340 // ====================== Should Render ====================== 20341 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 20342 if (autoDestroy || open) { 20343 setShouldRender(open); 20344 } 20345 }, [open, autoDestroy]); 20346 20347 // ======================== Container ======================== 20348 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_1__.useState(function () { 20349 return getPortalContainer(getContainer); 20350 }), 20351 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState3, 2), 20352 innerContainer = _React$useState4[0], 20353 setInnerContainer = _React$useState4[1]; 20354 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 20355 var customizeContainer = getPortalContainer(getContainer); 20356 20357 // Tell component that we check this in effect which is safe to be `null` 20358 setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null); 20359 }); 20360 var _useDom = (0,_useDom__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(mergedRender && !innerContainer, debug), 20361 _useDom2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useDom, 2), 20362 defaultContainer = _useDom2[0], 20363 queueCreate = _useDom2[1]; 20364 var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; 20365 20366 // ========================= Locker ========================== 20367 (0,_useScrollLocker__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(autoLock && open && (0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)() && (mergedContainer === defaultContainer || mergedContainer === document.body)); 20368 20369 // =========================== Ref =========================== 20370 var childRef = null; 20371 if (children && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__/* .supportRef */ .f3)(children) && ref) { 20372 var _ref = children; 20373 childRef = _ref.ref; 20374 } 20375 var mergedRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__/* .useComposeRef */ .xK)(childRef, ref); 20376 20377 // ========================= Render ========================== 20378 // Do not render when nothing need render 20379 // When innerContainer is `undefined`, it may not ready since user use ref in the same render 20380 if (!mergedRender || !(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)() || innerContainer === undefined) { 20381 return null; 20382 } 20383 20384 // Render inline 20385 var renderInline = mergedContainer === false || (0,_mock__WEBPACK_IMPORTED_MODULE_9__/* .inlineMock */ .O)(); 20386 var reffedChildren = children; 20387 if (ref) { 20388 reffedChildren = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(children, { 20389 ref: mergedRef 20390 }); 20391 } 20392 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_Context__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Provider, { 20393 value: queueCreate 20394 }, renderInline ? reffedChildren : /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)(reffedChildren, mergedContainer)); 20395}); 20396if (false) // removed by dead control flow 20397{} 20398/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Portal); 20399 20400/***/ }), 20401 20402/***/ 71161: 20403/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20404 20405"use strict"; 20406/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20407/* harmony export */ O: () => (/* binding */ inlineMock) 20408/* harmony export */ }); 20409/* unused harmony export inline */ 20410var inline = false; 20411function inlineMock(nextInline) { 20412 if (typeof nextInline === 'boolean') { 20413 inline = nextInline; 20414 } 20415 return inline; 20416} 20417 20418/***/ }), 20419 20420/***/ 71850: 20421/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20422 20423"use strict"; 20424/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20425/* harmony export */ A: () => (/* binding */ useIsMyCJ), 20426/* harmony export */ h: () => (/* binding */ isMyCjPageCheck) 20427/* harmony export */ }); 20428/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44148); 20429/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 20430/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 20431 20432 20433var isMyCjPageCheck = function isMyCjPageCheck(path) { 20434 return path.startsWith('/my.html') || path.startsWith('/mine/'); 20435}; 20436function useIsMyCJ() { 20437 var path = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__/* .useGlobalProps */ .v)().path; 20438 var isMyCJPage = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () { 20439 return isMyCjPageCheck(path); 20440 }, [path]); 20441 var isOld = path.startsWith('/my.html'); 20442 var isNew = path.startsWith('/mine/'); 20443 return { 20444 isMyCJPage: isMyCJPage, 20445 isOld: isOld, 20446 isNew: isNew 20447 }; 20448} 20449 20450/***/ }), 20451 20452/***/ 72715: 20453/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20454 20455"use strict"; 20456/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20457/* harmony export */ A: () => (/* binding */ _getPrototypeOf) 20458/* harmony export */ }); 20459function _getPrototypeOf(t) { 20460 return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { 20461 return t.__proto__ || Object.getPrototypeOf(t); 20462 }, _getPrototypeOf(t); 20463} 20464 20465 20466/***/ }), 20467 20468/***/ 72777: 20469/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20470 20471"use strict"; 20472/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20473/* harmony export */ cc: () => (/* binding */ getOtherCookies) 20474/* harmony export */ }); 20475/* unused harmony exports getWarehouses, getShowAuthorPlatform, getCurrencys, getQueryParams */ 20476/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62934); 20477/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4703); 20478/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 20479/* harmony import */ var _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84266); 20480/* harmony import */ var _common_get_cookies__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74372); 20481var __assign = undefined && undefined.__assign || function () { 20482 __assign = Object.assign || function (t) { 20483 for (var s, i = 1, n = arguments.length; i < n; i++) { 20484 s = arguments[i]; 20485 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 20486 } 20487 return t; 20488 }; 20489 return __assign.apply(this, arguments); 20490}; 20491var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 20492 function adopt(value) { 20493 return value instanceof P ? value : new P(function (resolve) { 20494 resolve(value); 20495 }); 20496 } 20497 return new (P || (P = Promise))(function (resolve, reject) { 20498 function fulfilled(value) {
20499 try { 20500 step(generator.next(value)); 20501 } catch (e) { 20502 reject(e); 20503 } 20504 } 20505 function rejected(value) { 20506 try { 20507 step(generator["throw"](value)); 20508 } catch (e) { 20509 reject(e); 20510 } 20511 } 20512 function step(result) { 20513 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 20514 } 20515 step((generator = generator.apply(thisArg, _arguments || [])).next()); 20516 }); 20517}; 20518var __generator = undefined && undefined.__generator || function (thisArg, body) { 20519 var _ = { 20520 label: 0, 20521 sent: function sent() { 20522 if (t[0] & 1) throw t[1]; 20523 return t[1]; 20524 }, 20525 trys: [], 20526 ops: [] 20527 }, 20528 f, 20529 y, 20530 t, 20531 g; 20532 return g = { 20533 next: verb(0), 20534 "throw": verb(1), 20535 "return": verb(2) 20536 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 20537 return this; 20538 }), g; 20539 function verb(n) { 20540 return function (v) { 20541 return step([n, v]); 20542 }; 20543 } 20544 function step(op) { 20545 if (f) throw new TypeError("Generator is already executing."); 20546 while (g && (g = 0, op[0] && (_ = 0)), _) try { 20547 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 20548 if (y = 0, t) op = [op[0] & 2, t.value]; 20549 switch (op[0]) { 20550 case 0: 20551 case 1: 20552 t = op; 20553 break; 20554 case 4: 20555 _.label++; 20556 return { 20557 value: op[1], 20558 done: false 20559 }; 20560 case 5: 20561 _.label++; 20562 y = op[1]; 20563 op = [0]; 20564 continue; 20565 case 7: 20566 op = _.ops.pop(); 20567 _.trys.pop(); 20568 continue; 20569 default: 20570 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 20571 _ = 0; 20572 continue; 20573 } 20574 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 20575 _.label = op[1]; 20576 break; 20577 } 20578 if (op[0] === 6 && _.label < t[1]) { 20579 _.label = t[1]; 20580 t = op; 20581 break; 20582 } 20583 if (t && _.label < t[2]) { 20584 _.label = t[2]; 20585 _.ops.push(op); 20586 break; 20587 } 20588 if (t[2]) _.ops.pop(); 20589 _.trys.pop(); 20590 continue; 20591 } 20592 op = body.call(thisArg, _); 20593 } catch (e) { 20594 op = [6, e]; 20595 y = 0; 20596 } finally { 20597 f = t = 0; 20598 } 20599 if (op[0] & 5) throw op[1]; 20600 return { 20601 value: op[0] ? op[1] : void 0, 20602 done: true 20603 }; 20604 } 20605}; 20606 20607 20608 20609 20610 20611var getWarehouses = function getWarehouses(_a) { 20612 var ctx = _a.ctx,
20613 $axios = _a.$axios, 20614 lng = _a.lng; 20615 return __awaiter(void 0, void 0, void 0, function () { 20616 var _b, err, data; 20617 return __generator(this, function (_c) { 20618 switch (_c.label) { 20619 case 0: 20620 return [4, getWarehouseList({ 20621 ctx: ctx, 20622 $axios: $axios, 20623 lng: lng 20624 })]; 20625 case 1: 20626 _b = _c.sent(), err = _b[0], data = _b[1]; 20627 if (!err && data) return [2, data]; 20628 return [2, []]; 20629 } 20630 }); 20631 }); 20632}; 20633var getShowAuthorPlatform = function getShowAuthorPlatform(_a) { 20634 var ctx = _a.ctx, 20635 $axios = _a.$axios, 20636 token = _a.token; 20637 return __awaiter(void 0, void 0, void 0, function () { 20638 var showAuthorizeObject, platformKeys, data, _b, _i, data_1, element, item; 20639 var _c; 20640 return __generator(this, function (_d) { 20641 switch (_d.label) { 20642 case 0: 20643 showAuthorizeObject = __assign({}, showAuthorizeDefaultData); 20644 platformKeys = []; 20645 if (!ctx) return [3, 1]; 20646 _b = (_c = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _c === void 0 ? void 0 : _c.platformShowList; 20647 return [3, 3]; 20648 case 1: 20649 return [4, getAuthorizeShowList($axios)]; 20650 case 2: 20651 _b = _d.sent(); 20652 _d.label = 3; 20653 case 3: 20654 data = _b; 20655 if (data && data.length > 0) { 20656 for (_i = 0, data_1 = data; _i < data_1.length; _i++) { 20657 element = data_1[_i]; 20658 item = element; 20659 if (showAuthorizeObject[item.shopPlatformType]) { 20660 showAuthorizeObject[item.shopPlatformType].isAuthor = item.isAuthor; 20661 showAuthorizeObject[item.shopPlatformType].isShow = item.isShow; 20662 platformKeys.push(item.shopPlatformType); 20663 } 20664 } 20665 } 20666 return [2, { 20667 showAuthorizeObject: showAuthorizeObject, 20668 platformKeys: platformKeys 20669 }]; 20670 } 20671 }); 20672 }); 20673}; 20674var getCurrencys = function getCurrencys(_a) { 20675 var $axios = _a.$axios, 20676 siteCheck = _a.siteCheck; 20677 return __awaiter(void 0, void 0, void 0, function () { 20678 function request() { 20679 var _a; 20680 return __awaiter(this, void 0, void 0, function () { 20681 return __generator(this, function (_b) { 20682 switch (_b.label) { 20683 case 0: 20684 if (!is1688(siteCheck)) return [3, 2]; 20685 return [4, getThCountryData($axios, (_a = siteCheck.data('name')) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase())]; 20686 case 1: 20687 return [2, _b.sent()]; 20688 case 2: 20689 return [4, getCountryData($axios)]; 20690 case 3: 20691 return [2, _b.sent()]; 20692 } 20693 }); 20694 }); 20695 } 20696 var currencys, currentTime; 20697 return __generator(this, function (_b) { 20698 switch (_b.label) { 20699 case 0: 20700 currencys = {}; 20701 if (!isBrowser) return [3, 3]; 20702 currentTime = new Date().getTime(); 20703 currencys = store.get('@country/data', { 20704 parse: true 20705 }); 20706 if ((currencys === null || currencys === void 0 ? void 0 : currencys.updateTime) - 1723432631219 < 0) { 20707 currencys = null; 20708 } 20709 if (!(!currencys || currentTime - (currencys.updateTime || 0) > 60 * 60 * 24 * 1000)) return [3, 2]; 20710 return [4, request()]; 20711 case 1: 20712 currencys = _b.sent(); 20713 store.set('@country/data', __assign(__assign({}, currencys), { 20714 updateTime: currentTime 20715 })); 20716 _b.label = 2; 20717 case 2: 20718 return [3, 5]; 20719 case 3: 20720 return [4, request()]; 20721 case 4: 20722 currencys = _b.sent(); 20723 _b.label = 5; 20724 case 5: 20725 return [2, currencys]; 20726 } 20727 }); 20728 }); 20729}; 20730var getQueryParams = function getQueryParams(_a) { 20731 var ctx = _a.ctx; 20732 var querySearch = isBrowser ? getQueryVariable() : ctx === null || ctx === void 0 ? void 0 : ctx.query; 20733 return querySearch !== null && querySearch !== void 0 ? querySearch : {}; 20734}; 20735var getOtherCookies = function getOtherCookies(_a) { 20736 var ctx = _a.ctx; 20737 return (0,_common_get_cookies__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(ctx, [{ 20738 name: 'lng' 20739 }, { 20740 name: 'shopPlatformTypesList' 20741 }, { 20742 name: 'currency' 20743 }, { 20744 name: 'SHOWMESSAGE' 20745 }, { 20746 name: 'cjLoginToken' 20747 }, { 20748 name: 'cur' 20749 }, { 20750 name: 'country' 20751 }, { 20752 name: 'searchSku' 20753 }]); 20754}; 20755 20756/***/ }), 20757 20758/***/ 72880: 20759/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20760 20761"use strict"; 20762/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20763/* harmony export */ A: () => (/* binding */ _nonIterableSpread) 20764/* harmony export */ }); 20765function _nonIterableSpread() { 20766 throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); 20767} 20768 20769 20770/***/ }), 20771 20772/***/ 73688: 20773/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20774 20775"use strict"; 20776/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20777/* harmony export */ J1: () => (/* binding */ supportTransition), 20778/* harmony export */ Vc: () => (/* binding */ animationEndName), 20779/* harmony export */ by: () => (/* binding */ getTransitionName), 20780/* harmony export */ m8: () => (/* binding */ transitionEndName) 20781/* harmony export */ }); 20782/* unused harmony exports getVendorPrefixes, getVendorPrefixedEventName */ 20783/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545);
20784/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 20785 20786 20787// ================= Transition ================= 20788// Event wrapper. Copy from react source code 20789function makePrefixMap(styleProp, eventName) { 20790 var prefixes = {}; 20791 prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); 20792 prefixes["Webkit".concat(styleProp)] = "webkit".concat(eventName); 20793 prefixes["Moz".concat(styleProp)] = "moz".concat(eventName); 20794 prefixes["ms".concat(styleProp)] = "MS".concat(eventName); 20795 prefixes["O".concat(styleProp)] = "o".concat(eventName.toLowerCase()); 20796 return prefixes; 20797} 20798function getVendorPrefixes(domSupport, win) { 20799 var prefixes = { 20800 animationend: makePrefixMap('Animation', 'AnimationEnd'), 20801 transitionend: makePrefixMap('Transition', 'TransitionEnd') 20802 }; 20803 if (domSupport) { 20804 if (!('AnimationEvent' in win)) { 20805 delete prefixes.animationend.animation; 20806 } 20807 if (!('TransitionEvent' in win)) { 20808 delete prefixes.transitionend.transition; 20809 } 20810 } 20811 return prefixes; 20812} 20813var vendorPrefixes = getVendorPrefixes((0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(), typeof window !== 'undefined' ? window : {}); 20814var style = {}; 20815if ((0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)()) { 20816 var _document$createEleme = document.createElement('div'); 20817 style = _document$createEleme.style; 20818} 20819var prefixedEventNames = {}; 20820function getVendorPrefixedEventName(eventName) { 20821 if (prefixedEventNames[eventName]) { 20822 return prefixedEventNames[eventName]; 20823 } 20824 var prefixMap = vendorPrefixes[eventName]; 20825 if (prefixMap) { 20826 var stylePropList = Object.keys(prefixMap); 20827 var len = stylePropList.length; 20828 for (var i = 0; i < len; i += 1) { 20829 var styleProp = stylePropList[i]; 20830 if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) { 20831 prefixedEventNames[eventName] = prefixMap[styleProp]; 20832 return prefixedEventNames[eventName]; 20833 } 20834 } 20835 } 20836 return ''; 20837} 20838var internalAnimationEndName = getVendorPrefixedEventName('animationend'); 20839var internalTransitionEndName = getVendorPrefixedEventName('transitionend'); 20840var supportTransition = !!(internalAnimationEndName && internalTransitionEndName); 20841var animationEndName = internalAnimationEndName || 'animationend'; 20842var transitionEndName = internalTransitionEndName || 'transitionend'; 20843function getTransitionName(transitionName, transitionType) { 20844 if (!transitionName) return null; 20845 if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(transitionName) === 'object') { 20846 var type = transitionType.replace(/-\w/g, function (match) { 20847 return match[1].toUpperCase(); 20848 }); 20849 return transitionName[type]; 20850 } 20851 return "".concat(transitionName, "-").concat(transitionType); 20852} 20853 20854/***/ }), 20855 20856/***/ 74234: 20857/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20858 20859"use strict"; 20860/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20861/* harmony export */ A: () => (/* binding */ useDom) 20862/* harmony export */ }); 20863/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75153); 20864/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79082); 20865/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 20866/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 20867/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84238); 20868/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47169); 20869/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50184); 20870 20871 20872 20873 20874 20875 20876var EMPTY_LIST = []; 20877 20878/** 20879 * Will add `div` to document. Nest call will keep order 20880 * @param render Render DOM in document 20881 */ 20882function useDom(render, debug) { 20883 var _React$useState = react__WEBPACK_IMPORTED_MODULE_2__.useState(function () {
20884 if (!(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)()) { 20885 return null; 20886 } 20887 var defaultEle = document.createElement('div'); 20888 if (false) // removed by dead control flow 20889{} 20890 return defaultEle; 20891 }), 20892 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState, 1), 20893 ele = _React$useState2[0]; 20894 20895 // ========================== Order ========================== 20896 var appendedRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false); 20897 var queueCreate = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Context__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A); 20898 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_2__.useState(EMPTY_LIST), 20899 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState3, 2), 20900 queue = _React$useState4[0], 20901 setQueue = _React$useState4[1]; 20902 var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) { 20903 setQueue(function (origin) { 20904 var newQueue = [appendFn].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(origin)); 20905 return newQueue; 20906 }); 20907 }); 20908 20909 // =========================== DOM =========================== 20910 function append() { 20911 if (!ele.parentElement) { 20912 document.body.appendChild(ele); 20913 } 20914 appendedRef.current = true; 20915 } 20916 function cleanup() { 20917 var _ele$parentElement; 20918 (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele); 20919 appendedRef.current = false; 20920 } 20921 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 20922 if (render) { 20923 if (queueCreate) { 20924 queueCreate(append); 20925 } else { 20926 append(); 20927 } 20928 } else { 20929 cleanup(); 20930 } 20931 return cleanup; 20932 }, [render]); 20933 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 20934 if (queue.length) { 20935 queue.forEach(function (appendFn) { 20936 return appendFn(); 20937 }); 20938 setQueue(EMPTY_LIST); 20939 } 20940 }, [queue]); 20941 return [ele, mergedQueueCreate]; 20942} 20943 20944/***/ }), 20945 20946/***/ 74372: 20947/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20948 20949"use strict"; 20950/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20951/* harmony export */ A: () => (/* binding */ getCookies) 20952/* harmony export */ }); 20953/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93584); 20954/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3478); 20955 20956 20957function getCookies(ctx, names) { 20958 var obj = {}; 20959 var customCookies = ctx ? ctx.customCookies || {} : {}; 20960 names.forEach(function (_) { 20961 var name = _.name; 20962 var value = ctx ? customCookies[name] ? customCookies[name] : ctx === null || ctx === void 0 ? void 0 : ctx.cookies.get(name, { 20963 signed: false 20964 }) : js_cookie__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.get(name); 20965 if (_.decode) { 20966 try { 20967 value = js_base64__WEBPACK_IMPORTED_MODULE_0__/* .Base64 */ .o4.decode(value || ''); 20968 } catch (_a) { 20969 console.log('base64è§£ææ¥é', value); 20970 } 20971 } 20972 value = _.parse ? JSON.parse(value || '') : value; 20973 obj[name] = value !== null && value !== void 0 ? value : ''; 20974 }); 20975 return obj !== null && obj !== void 0 ? obj : {}; 20976} 20977 20978/***/ }), 20979 20980/***/ 74430: 20981/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20982 20983"use strict"; 20984/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20985/* harmony export */ A: () => (/* binding */ _iterableToArray) 20986/* harmony export */ }); 20987function _iterableToArray(r) { 20988 if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); 20989} 20990 20991 20992/***/ }), 20993 20994/***/ 74568: 20995/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20996 20997"use strict"; 20998/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20999/* harmony export */ o: () => (/* binding */ Context) 21000/* harmony export */ }); 21001/* unused harmony export default */ 21002/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 21003/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 21004 21005var _excluded = (/* unused pure expression or super */ null && (["children"])); 21006 21007var Context = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({}); 21008function MotionProvider(_ref) { 21009 var children = _ref.children, 21010 props = _objectWithoutProperties(_ref, _excluded); 21011 return /*#__PURE__*/React.createElement(Context.Provider, { 21012 value: props 21013 }, children); 21014} 21015 21016/***/ }), 21017 21018/***/ 74967: 21019/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 21020 21021/** Detect free variable `global` from Node.js. */ 21022var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; 21023 21024module.exports = freeGlobal; 21025 21026 21027/***/ }), 21028 21029/***/ 75153: 21030/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 21031 21032"use strict"; 21033/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21034/* harmony export */ A: () => (/* binding */ _toConsumableArray) 21035/* harmony export */ }); 21036/* harmony import */ var _arrayWithoutHoles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23492); 21037/* harmony import */ var _iterableToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74430); 21038/* harmony import */ var _unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27985); 21039/* harmony import */ var _nonIterableSpread_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72880); 21040 21041 21042 21043 21044function _toConsumableArray(r) { 21045 return (0,_arrayWithoutHoles_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r) || (0,_iterableToArray_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(r) || (0,_unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(r) || (0,_nonIterableSpread_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(); 21046} 21047 21048 21049/***/ }), 21050 21051/***/ 75476: 21052/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21053 21054"use strict"; 21055/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21056/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21057/* harmony export */ }); 21058/* unused harmony export resetUuid */ 21059/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 21060/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 21061/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 21062/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 21063 21064 21065 21066function getUseId() { 21067 // We need fully clone React function here to avoid webpack warning React 17 do not export `useId` 21068 var fullClone = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, react__WEBPACK_IMPORTED_MODULE_2__); 21069 return fullClone.useId; 21070} 21071var uuid = 0; 21072 21073/** @private Note only worked in develop env. Not work in production. */ 21074function resetUuid() { 21075 if (false) // removed by dead control flow 21076{} 21077} 21078var useOriginId = getUseId(); 21079/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useOriginId ? 21080// Use React `useId` 21081function useId(id) { 21082 var reactId = useOriginId(); 21083
21084 // Developer passed id is single source of truth 21085 if (id) { 21086 return id; 21087 } 21088 21089 // Test env always return mock id 21090 if (false) // removed by dead control flow 21091{} 21092 return reactId; 21093} : 21094// Use compatible of `useId` 21095function useCompatId(id) { 21096 // Inner id for accessibility usage. Only work in client side 21097 var _React$useState = react__WEBPACK_IMPORTED_MODULE_2__.useState('ssr-id'), 21098 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 21099 innerId = _React$useState2[0], 21100 setInnerId = _React$useState2[1]; 21101 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 21102 var nextId = uuid; 21103 uuid += 1; 21104 setInnerId("rc_unique_".concat(nextId)); 21105 }, []); 21106 21107 // Developer passed id is single source of truth 21108 if (id) { 21109 return id; 21110 } 21111 21112 // Test env always return mock id 21113 if (false) // removed by dead control flow 21114{} 21115 21116 // Return react native id or inner id 21117 return innerId; 21118}); 21119 21120/***/ }), 21121 21122/***/ 76293: 21123/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21124 21125"use strict"; 21126/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21127/* harmony export */ A: () => (/* binding */ useStatus) 21128/* harmony export */ }); 21129/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 21130/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24586); 21131/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 21132/* harmony import */ var rc_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(99973); 21133/* harmony import */ var rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39348); 21134/* harmony import */ var rc_util_es_hooks_useSyncState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(86597); 21135/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15442); 21136/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__); 21137/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(45480); 21138/* harmony import */ var _useDomMotionEvents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1680); 21139/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25893); 21140/* harmony import */ var _useStepQueue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(78422); 21141 21142 21143 21144 21145 21146 21147 21148 21149 21150 21151 21152 21153function useStatus(supportMotion, visible, getElement, _ref) { 21154 var _ref$motionEnter = _ref.motionEnter, 21155 motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter, 21156 _ref$motionAppear = _ref.motionAppear, 21157 motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear, 21158 _ref$motionLeave = _ref.motionLeave, 21159 motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave, 21160 motionDeadline = _ref.motionDeadline, 21161 motionLeaveImmediately = _ref.motionLeaveImmediately, 21162 onAppearPrepare = _ref.onAppearPrepare, 21163 onEnterPrepare = _ref.onEnterPrepare, 21164 onLeavePrepare = _ref.onLeavePrepare, 21165 onAppearStart = _ref.onAppearStart, 21166 onEnterStart = _ref.onEnterStart, 21167 onLeaveStart = _ref.onLeaveStart, 21168 onAppearActive = _ref.onAppearActive, 21169 onEnterActive = _ref.onEnterActive, 21170 onLeaveActive = _ref.onLeaveActive, 21171 onAppearEnd = _ref.onAppearEnd, 21172 onEnterEnd = _ref.onEnterEnd, 21173 onLeaveEnd = _ref.onLeaveEnd, 21174 onVisibleChanged = _ref.onVisibleChanged; 21175 // Used for outer render usage to avoid `visible: false & status: none` to render nothing 21176 var _useState = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(), 21177 _useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useState, 2), 21178 asyncVisible = _useState2[0], 21179 setAsyncVisible = _useState2[1]; 21180 var _useSyncState = (0,rc_util_es_hooks_useSyncState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF), 21181 _useSyncState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useSyncState, 2), 21182 getStatus = _useSyncState2[0], 21183 setStatus = _useSyncState2[1]; 21184 var _useState3 = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(null), 21185 _useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useState3, 2), 21186 style = _useState4[0], 21187 setStyle = _useState4[1]; 21188 var currentStatus = getStatus(); 21189 var mountedRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(false); 21190 var deadlineRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(null); 21191 21192 // =========================== Dom Node =========================== 21193 function getDomElement() { 21194 return getElement(); 21195 } 21196
21197 // ========================== Motion End ========================== 21198 var activeRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(false); 21199 21200 /** 21201 * Clean up status & style 21202 */ 21203 function updateMotionEndStatus() { 21204 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21205 setStyle(null, true); 21206 } 21207 var onInternalMotionEnd = (0,rc_util__WEBPACK_IMPORTED_MODULE_3__/* .useEvent */ ._q)(function (event) { 21208 var status = getStatus(); 21209 // Do nothing since not in any transition status. 21210 // This may happen when `motionDeadline` trigger. 21211 if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21212 return; 21213 } 21214 var element = getDomElement(); 21215 if (event && !event.deadline && event.target !== element) { 21216 // event exists 21217 // not initiated by deadline 21218 // transitionEnd not fired by inner elements 21219 return; 21220 } 21221 var currentActive = activeRef.current; 21222 var canEnd; 21223 if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv && currentActive) { 21224 canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event); 21225 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd && currentActive) { 21226 canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event); 21227 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp && currentActive) { 21228 canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event); 21229 } 21230 21231 // Only update status when `canEnd` and not destroyed 21232 if (currentActive && canEnd !== false) { 21233 updateMotionEndStatus(); 21234 } 21235 }); 21236 var _useDomMotionEvents = (0,_useDomMotionEvents__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(onInternalMotionEnd), 21237 _useDomMotionEvents2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useDomMotionEvents, 1), 21238 patchMotionEvents = _useDomMotionEvents2[0]; 21239 21240 // ============================= Step ============================= 21241 var getEventHandlers = function getEventHandlers(targetStatus) { 21242 switch (targetStatus) { 21243 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv: 21244 return (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px, onAppearPrepare), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_START */ .Mv, onAppearStart), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_ACTIVE */ .m7, onAppearActive); 21245 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd: 21246 return (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px, onEnterPrepare), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_START */ .Mv, onEnterStart), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_ACTIVE */ .m7, onEnterActive); 21247 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp: 21248 return (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px, onLeavePrepare), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_START */ .Mv, onLeaveStart), _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_ACTIVE */ .m7, onLeaveActive); 21249 default: 21250 return {}; 21251 } 21252 }; 21253 var eventHandlers = react__WEBPACK_IMPORTED_MODULE_6__.useMemo(function () { 21254 return getEventHandlers(currentStatus); 21255 }, [currentStatus]);
21256 var _useStepQueue = (0,_useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay)(currentStatus, !supportMotion, function (newStep) { 21257 // Only prepare step can be skip 21258 if (newStep === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px) { 21259 var onPrepare = eventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px]; 21260 if (!onPrepare) { 21261 return _useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .SkipStep */ .es; 21262 } 21263 return onPrepare(getDomElement()); 21264 } 21265 21266 // Rest step is sync update 21267 if (step in eventHandlers) { 21268 var _eventHandlers$step; 21269 setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null); 21270 } 21271 if (step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_ACTIVE */ .m7 && currentStatus !== _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21272 // Patch events when motion needed 21273 patchMotionEvents(getDomElement()); 21274 if (motionDeadline > 0) { 21275 clearTimeout(deadlineRef.current); 21276 deadlineRef.current = setTimeout(function () { 21277 onInternalMotionEnd({ 21278 deadline: true 21279 }); 21280 }, motionDeadline); 21281 } 21282 } 21283 if (step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARED */ .LV) { 21284 updateMotionEndStatus(); 21285 } 21286 return _useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .DoStep */ .qB; 21287 }), 21288 _useStepQueue2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useStepQueue, 2), 21289 startStep = _useStepQueue2[0], 21290 step = _useStepQueue2[1]; 21291 var active = (0,_useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .isActive */ .$m)(step); 21292 activeRef.current = active; 21293 21294 // ============================ Status ============================ 21295 var visibleRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(null); 21296 21297 // Update with new status 21298 (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(function () { 21299 // When use Suspense, the `visible` will repeat trigger, 21300 // But not real change of the `visible`, we need to skip it. 21301 // https://github.com/ant-design/ant-design/issues/44379 21302 if (mountedRef.current && visibleRef.current === visible) { 21303 return; 21304 } 21305 setAsyncVisible(visible); 21306 var isMounted = mountedRef.current; 21307 mountedRef.current = true; 21308 21309 // if (!supportMotion) { 21310 // return; 21311 // } 21312 21313 var nextStatus; 21314 21315 // Appear 21316 if (!isMounted && visible && motionAppear) { 21317 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv; 21318 } 21319 21320 // Enter 21321 if (isMounted && visible && motionEnter) { 21322 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd; 21323 } 21324 21325 // Leave 21326 if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) { 21327 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp; 21328 } 21329 var nextEventHandlers = getEventHandlers(nextStatus); 21330 21331 // Update to next status 21332 if (nextStatus && (supportMotion || nextEventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px])) { 21333 setStatus(nextStatus); 21334 startStep(); 21335 } else { 21336 // Set back in case no motion but prev status has prepare step 21337 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21338 } 21339 visibleRef.current = visible; 21340 }, [visible]); 21341 21342 // ============================ Effect ============================ 21343 // Reset when motion changed 21344 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21345 if ( 21346 // Cancel appear 21347 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv && !motionAppear || 21348 // Cancel enter 21349 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd && !motionEnter || 21350 // Cancel leave 21351 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp && !motionLeave) { 21352 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21353 } 21354 }, [motionAppear, motionEnter, motionLeave]); 21355 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21356 return function () { 21357 mountedRef.current = false;
21358 clearTimeout(deadlineRef.current); 21359 }; 21360 }, []); 21361 21362 // Trigger `onVisibleChanged` 21363 var firstMountChangeRef = react__WEBPACK_IMPORTED_MODULE_6__.useRef(false); 21364 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21365 // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged 21366 if (asyncVisible) { 21367 firstMountChangeRef.current = true; 21368 } 21369 if (asyncVisible !== undefined && currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21370 // Skip first render is invisible since it's nothing changed 21371 if (firstMountChangeRef.current || asyncVisible) { 21372 onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible); 21373 } 21374 firstMountChangeRef.current = true; 21375 } 21376 }, [asyncVisible, currentStatus]); 21377 21378 // ============================ Styles ============================ 21379 var mergedStyle = style; 21380 if (eventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px] && step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_START */ .Mv) { 21381 mergedStyle = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({ 21382 transition: 'none' 21383 }, mergedStyle); 21384 } 21385 return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible]; 21386} 21387 21388/***/ }), 21389 21390/***/ 77326: 21391/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21392 21393"use strict"; 21394/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21395/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21396/* harmony export */ }); 21397/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 21398/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 21399/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 21400/* harmony import */ var rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41747); 21401/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84445); 21402/* harmony import */ var _SingleObserver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47689); 21403/* harmony import */ var _Collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23660); 21404/* harmony import */ var _utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22616); 21405 21406 21407 21408 21409 21410 21411var INTERNAL_PREFIX_KEY = 'rc-observer-key'; 21412 21413 21414function ResizeObserver(props, ref) { 21415 var children = props.children; 21416 var childNodes = typeof children === 'function' ? [children] : (0,rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(children); 21417 if (false) // removed by dead control flow 21418{} 21419 return childNodes.map(function (child, index) { 21420 var key = (child === null || child === void 0 ? void 0 : child.key) || "".concat(INTERNAL_PREFIX_KEY, "-").concat(index); 21421 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_SingleObserver__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, props, { 21422 key: key, 21423 ref: index === 0 ? ref : undefined 21424 }), child); 21425 }); 21426} 21427var RefResizeObserver = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(ResizeObserver); 21428if (false) // removed by dead control flow 21429{} 21430RefResizeObserver.Collection = _Collection__WEBPACK_IMPORTED_MODULE_5__/* .Collection */ .p; 21431/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefResizeObserver); 21432 21433/***/ }), 21434 21435/***/ 77427: 21436/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21437 21438"use strict"; 21439/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21440/* harmony export */ Q: () => (/* binding */ createInstance) 21441/* harmony export */ }); 21442/* unused harmony export urlAddSlash */ 21443/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62742); 21444/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 21445/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12097); 21446/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 21447/* harmony import */ var _cj_href__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84963); 21448/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93584); 21449/* harmony import */ var _common_toast__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50937); 21450var __assign = undefined && undefined.__assign || function () { 21451 __assign = Object.assign || function (t) { 21452 for (var s, i = 1, n = arguments.length; i < n; i++) { 21453 s = arguments[i]; 21454 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 21455 } 21456 return t; 21457 }; 21458 return __assign.apply(this, arguments); 21459}; 21460var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 21461 function adopt(value) { 21462 return value instanceof P ? value : new P(function (resolve) { 21463 resolve(value); 21464 }); 21465 } 21466 return new (P || (P = Promise))(function (resolve, reject) { 21467 function fulfilled(value) {
21468 try { 21469 step(generator.next(value)); 21470 } catch (e) { 21471 reject(e); 21472 } 21473 } 21474 function rejected(value) { 21475 try { 21476 step(generator["throw"](value)); 21477 } catch (e) { 21478 reject(e); 21479 } 21480 } 21481 function step(result) { 21482 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 21483 } 21484 step((generator = generator.apply(thisArg, _arguments || [])).next()); 21485 }); 21486}; 21487var __generator = undefined && undefined.__generator || function (thisArg, body) { 21488 var _ = { 21489 label: 0, 21490 sent: function sent() { 21491 if (t[0] & 1) throw t[1]; 21492 return t[1]; 21493 }, 21494 trys: [], 21495 ops: [] 21496 }, 21497 f, 21498 y, 21499 t, 21500 g; 21501 return g = { 21502 next: verb(0), 21503 "throw": verb(1), 21504 "return": verb(2) 21505 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 21506 return this; 21507 }), g; 21508 function verb(n) { 21509 return function (v) { 21510 return step([n, v]); 21511 }; 21512 } 21513 function step(op) { 21514 if (f) throw new TypeError("Generator is already executing."); 21515 while (g && (g = 0, op[0] && (_ = 0)), _) try { 21516 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 21517 if (y = 0, t) op = [op[0] & 2, t.value]; 21518 switch (op[0]) { 21519 case 0: 21520 case 1: 21521 t = op; 21522 break; 21523 case 4: 21524 _.label++; 21525 return { 21526 value: op[1], 21527 done: false 21528 }; 21529 case 5: 21530 _.label++; 21531 y = op[1]; 21532 op = [0]; 21533 continue; 21534 case 7: 21535 op = _.ops.pop(); 21536 _.trys.pop(); 21537 continue; 21538 default: 21539 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 21540 _ = 0; 21541 continue; 21542 } 21543 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 21544 _.label = op[1]; 21545 break; 21546 } 21547 if (op[0] === 6 && _.label < t[1]) { 21548 _.label = t[1]; 21549 t = op; 21550 break; 21551 } 21552 if (t && _.label < t[2]) { 21553 _.label = t[2]; 21554 _.ops.push(op); 21555 break; 21556 } 21557 if (t[2]) _.ops.pop(); 21558 _.trys.pop(); 21559 continue; 21560 } 21561 op = body.call(thisArg, _); 21562 } catch (e) { 21563 op = [6, e]; 21564 y = 0; 21565 } finally { 21566 f = t = 0; 21567 } 21568 if (op[0] & 5) throw op[1]; 21569 return { 21570 value: op[0] ? op[1] : void 0, 21571 done: true 21572 }; 21573 } 21574}; 21575var __rest = undefined && undefined.__rest || function (s, e) { 21576 var t = {}; 21577 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 21578 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 21579 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 21580 } 21581 return t; 21582}; 21583 21584 21585 21586 21587 21588 21589function resDataProcess(data) { 21590 var _a; 21591 var _data = data; 21592 try { 21593 if (typeof data.result === 'string') { 21594 _data.result = JSON.parse(data.result); 21595 } 21596 } catch (e) { 21597 console.error('resDataProcess error:', (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : ''); 21598 } 21599 return _data; 21600} 21601var To = function To(promise) { 21602 return promise.then(function (res) { 21603 return [null, res]; 21604 })["catch"](function (err) { 21605 return [err]; 21606 }); 21607}; 21608var urlAddSlash = function urlAddSlash(url) { 21609 return (url === null || url === void 0 ? void 0 : url.startsWith('http')) ? url : (url === null || url === void 0 ? void 0 : url.startsWith('/')) ? url : "/".concat(url); 21610}; 21611var createInstance = function createInstance(token, getDomainByUrl) { 21612 return function (_a) { 21613 return __awaiter(void 0, void 0, void 0, function () { 21614 var requestErrorCount, error, response, _request, data, result; 21615 var url = _a.url, 21616 otherConfig = __rest(_a, ["url"]); 21617 return __generator(this, function (_b) { 21618 switch (_b.label) { 21619 case 0: 21620 requestErrorCount = 0; 21621 error = null; 21622 response = null; 21623 _request = function request() { 21624 return __awaiter(void 0, void 0, Promise, function () { 21625 var apiUrl, callerHeaders; 21626 var _a; 21627 var _b, _c, _d; 21628 return __generator(this, function (_e) { 21629 switch (_e.label) { 21630 case 0: 21631 apiUrl = (0,_index__WEBPACK_IMPORTED_MODULE_2__/* .useVipPrefix */ .Bz)({ 21632 url: url 21633 }); 21634 if (getDomainByUrl) { 21635 apiUrl = getDomainByUrl(apiUrl); 21636 } else { 21637 apiUrl = urlAddSlash(apiUrl); 21638 } 21639 callerHeaders = otherConfig.headers || {}; 21640 return [4, To(axios__WEBPACK_IMPORTED_MODULE_0___default()(__assign(__assign({ 21641 url: apiUrl, 21642 timeout: 15000 21643 }, otherConfig), { 21644 headers: __assign(__assign({ 21645 Accept: 'application/json;charset=utf-8', 21646 'Content-Type': 'application/json;charset=utf-8' 21647 }, callerHeaders), { 21648 token: ((_b = callerHeaders.token) !== null && _b !== void 0 ? _b : !_index__WEBPACK_IMPORTED_MODULE_2__/* .isBrowser */ .Bd ? token : _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.info('token')) || '', 21649 'cj-area': ((_c = callerHeaders['cj-area']) !== null && _c !== void 0 ? _c : !_index__WEBPACK_IMPORTED_MODULE_2__/* .isBrowser */ .Bd ? process.env.areacode : window.__AREACODE__) || '000000' 21650 }) 21651 })))]; 21652 case 1: 21653 _a = _e.sent(), error = _a[0], response = _a[1]; 21654 if (error || ((_d = otherConfig === null || otherConfig === void 0 ? void 0 : otherConfig.isRetry) === null || _d === void 0 ? void 0 : _d.call(otherConfig, response === null || response === void 0 ? void 0 : response.data))) { 21655 if (requestErrorCount < 2) { 21656 requestErrorCount++; 21657 return [2, _request()]; 21658 } 21659 } 21660 return [2]; 21661 } 21662 }); 21663 }); 21664 }; 21665 return [4, _request()]; 21666 case 1: 21667 _b.sent(); 21668 if ((response === null || response === void 0 ? void 0 : response.status) === 200) { 21669 data = response.data; 21670 if (data.data === null) data.data = {}; 21671 result = resDataProcess(data); 21672 clearLoginStoreInfo(url, result); 21673 clearBlockedUser(result); 21674 return [2, [null, result]]; 21675 } 21676 return [2, [error]]; 21677 } 21678 }); 21679 }); 21680 }; 21681}; 21682function clearLoginStoreInfo(url, response) { 21683 var _a; 21684 if (typeof window === 'undefined') return; 21685 var codeNoLogin = (response === null || response === void 0 ? void 0 : response.code) == 601; 21686 var noLogin = (response === null || response === void 0 ? void 0 : response.message) == 'Sorry, you are not logged in'; 21687 if (noLogin || codeNoLogin) { 21688 console.error('mf-component: è¯·æ±æ¥å£è·³åºç»å½=>', url, JSON.stringify(__assign({}, response || {}))); 21689 window.__Sentry__ && window.__Sentry__.withScope(function (scope) { 21690 scope.setTags({ 21691 apiUrl: url, 21692 apiError: true, 21693 errorType: 'client', 21694 isToCJ: !!_common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.info('loginfromerp') 21695 }); 21696 scope.setExtras({ 21697 request: { 21698 url: url 21699 }, 21700 response: response 21701 }); 21702 window.__Sentry__.captureMessage("\u8BF7\u6C42\u63A5\u53E3\u8DF3\u51FA\u767B\u5F55(\u662F\u5426tocj\uFF1A".concat(!!_common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.info('loginfromerp'), ")")); 21703 }); 21704 var isInternalAccount = window.loginInfoController.info('internalAccount'); 21705 _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.clear(); 21706 (0,_common_toast__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(response === null || response === void 0 ? void 0 : response.message); 21707 if (isInternalAccount) { 21708 window.location.href = '/authority-login.html'; 21709 return; 21710 } 21711 if (location.pathname.indexOf('my.html') > -1 || location.pathname.indexOf('mine') > -1) { 21712 var loginHref = '/login.html'; 21713 if ((_a = window.siteCheck) === null || _a === void 0 ? void 0 : _a.isSite('CJ')) { 21714 loginHref = (0,_cj_href__WEBPACK_IMPORTED_MODULE_3__/* .cjHref */ .F)(loginHref); 21715 } 21716 return location.href = "".concat(loginHref, "?target=") + js_base64__WEBPACK_IMPORTED_MODULE_4__/* .Base64 */ .o4.encode(location.href); 21717 } 21718 location.reload(); 21719 } 21720} 21721function clearBlockedUser(response) { 21722 var _a; 21723 if (typeof window === 'undefined') return; 21724 var codeBlocked = (response === null || response === void 0 ? void 0 : response.code) == 8880014; 21725 if (codeBlocked) { 21726 _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.clear(); 21727 var href = "/mine/intercept"; 21728 if ((_a = window.siteCheck) === null || _a === void 0 ? void 0 : _a.isSite('CJ')) { 21729 href = (0,_cj_href__WEBPACK_IMPORTED_MODULE_3__/* .cjHref */ .F)(href); 21730 } 21731 location.href = href; 21732 } 21733} 21734 21735/***/ }), 21736 21737/***/ 77517: 21738/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21739 21740"use strict"; 21741/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21742/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21743/* harmony export */ }); 21744// extracted by mini-css-extract-plugin 21745/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"tooltipOverlayBox":"tooltipOverlayBox--VYaHT","light":"light--gjfAs"}); 21746 21747/***/ }), 21748 21749/***/ 78068: 21750/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21751 21752"use strict"; 21753/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21754/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__) 21755/* harmony export */ }); 21756/* unused harmony exports defaultUserMenu, helpMenuList */ 21757/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 21758/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(77427); 21759/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 21760var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 21761 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 21762 if (ar || !(i in from)) { 21763 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 21764 ar[i] = from[i]; 21765 } 21766 } 21767 return to.concat(ar || Array.prototype.slice.call(from)); 21768}; 21769 21770 21771 21772var defaultUserMenu = function defaultUserMenu(isCommonTop, i18next, getDomainByUrl, isQk, siteCheck) { 21773 return __spreadArray(__spreadArray([{ 21774 icon: 'gerenzhongxin', 21775 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-profile') : 'Profile', 21776 code: 'mycj_profile', 21777 route: '/my.html#/profile' 21778 }, { 21779 icon: 'zhanghu', 21780 code: 'mycj_wallet', 21781 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-wallet') : 'Wallet', 21782 route: '/mine/wallet' 21783 }], isQk ? [] : __spreadArray(__spreadArray([{ 21784 icon: 'wuliu', 21785 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-tool') : 'Tool', 21786 children: __spreadArray(__spreadArray([], siteCheck && siteCheck.isShow('header-track-orders') ? [{ 21787 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-track-orders') : 'Track Orders', 21788 route: siteCheck && siteCheck.isShow('global-vp') ? 'https://cjpacket.com/' : 'https://cjpacket.com/', 21789 target: '_blank' 21790 }] : [], true), siteCheck && siteCheck.isShow('header-shipping-calculation') ? [{ 21791 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-shipping-calculation') : 'Shipping Calculation', 21792 route: '/calculation.html', 21793 target: '_blank' 21794 }] : [], true) 21795 }], siteCheck && siteCheck.isShow('header-user-account') ? [{ 21796 icon: 'zizhanghu', 21797 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-account') : 'Account', 21798 code: 'mycj_account', 21799 route: '/my.html#/accountManage' 21800 }] : [], true), siteCheck && siteCheck.isShow('header-user-affiliate') ? [{ 21801 icon: 'fenxiaoicon', 21802 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-affiliate') : 'Affiliate', 21803 route: 'https://affiliate.cjdropshipping.com/', 21804 target: '_blank' 21805 }] : [], true), true), [{ 21806 icon: 'tuichu', 21807 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-log-out') : 'Log out', 21808 loginOut: function loginOut() { 21809 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('token'); 21810 var isInternalAccount = window.loginInfoController.info('internalAccount'); 21811 var myAxios = (0,_common_request__WEBPACK_IMPORTED_MODULE_1__/* .createInstance */ .Q)(token, getDomainByUrl); 21812 myAxios({ 21813 url: 'userCenterForeignWeb/foreign/signOut', 21814 method: 'POST', 21815 data: { 21816 token: token 21817 } 21818 }).then(function () { 21819 (0,_common__WEBPACK_IMPORTED_MODULE_2__/* .removeLogin */ ._$)(); 21820 if (isInternalAccount) { 21821 window.location.href = '/authority-login.html'; 21822 return; 21823 } 21824 location.href = '/'; 21825 }); 21826 } 21827 }], false); 21828}; 21829function getElitesUrl() { 21830 var t = Date.now(); 21831 var url = 'https://elites.cjdropshipping.com/cross'; 21832 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('token'); 21833 if (token) { 21834 try { 21835 url = "".concat(url, "?_t=").concat(t, "&token=").concat(token); 21836 } catch (err) { 21837 console.error('ElitesUrl token decode err', err); 21838 } 21839 } 21840 return url; 21841} 21842var helpMenuList = function helpMenuList(isCommonTop, i18next, tipNumber, siteCheck) { 21843 return __spreadArray(__spreadArray([{ 21844 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-ticket') : 'Ticket', 21845 icon: 'ticket', 21846 code: 'mycj_ticket', 21847 route: '/mine/ticket', 21848 isShowTips: true, 21849 tipNum: tipNumber 21850 }, { 21851 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-help-center') : 'Help Center', 21852 icon: 'tutorial', 21853 route: '/help-center', 21854 target: '_blank' 21855 }], siteCheck && siteCheck.isShow('header-help-elites') ? [{ 21856 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-elites') : 'Elites', 21857 icon: 'elites', 21858 code: 'mycj_elites', 21859 route: getElitesUrl(), 21860 target: '_blank' 21861 }] : [], true), siteCheck && siteCheck.isShow('header-help-blog') ? [{ 21862 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-blog') : 'Blog', 21863 icon: 'boke', 21864 route: 'https://www.cjdropshipping.com/blogs', 21865 target: '_blank' 21866 }] : [], true); 21867}; 21868var createAuthTree = function createAuthTree() { 21869 var userMenu = defaultUserMenu(false); 21870 var helpMenu = helpMenuList(false); 21871 var authMapByRoute = []; 21872 var _fun = function fun(list) { 21873 return list.map(function (l) { 21874 if (l.route && l.code) authMapByRoute.push({ 21875 name: l.name, 21876 code: l.code, 21877 route: l.route 21878 }); 21879 return { 21880 name: l.name, 21881 code: l.code, 21882 route: l.route, 21883 children: l.children && _fun(l.children) 21884 }; 21885 }); 21886 }; 21887 return [[{ 21888 name: 'Management', 21889 children: _fun(userMenu) 21890 }, { 21891 name: 'Support Center', 21892 children: _fun(helpMenu) 21893 }], authMapByRoute]; 21894}; 21895/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAut
21895hTree); 21896 21897/***/ }), 21898 21899/***/ 78422: 21900/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21901 21902"use strict"; 21903/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21904/* harmony export */ $m: () => (/* binding */ isActive), 21905/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 21906/* harmony export */ es: () => (/* binding */ SkipStep), 21907/* harmony export */ qB: () => (/* binding */ DoStep) 21908/* harmony export */ }); 21909/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 21910/* harmony import */ var rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39348); 21911/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 21912/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 21913/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45480); 21914/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25893); 21915/* harmony import */ var _useNextFrame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20181); 21916 21917 21918 21919 21920 21921 21922var FULL_STEP_QUEUE = [_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARE */ .px, _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_START */ .Mv, _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVE */ .m7, _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVATED */ .Hs]; 21923var SIMPLE_STEP_QUEUE = [_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARE */ .px, _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARED */ .LV]; 21924 21925/** Skip current step */ 21926var SkipStep = false; 21927/** Current step should be update in */ 21928var DoStep = true; 21929function isActive(step) { 21930 return step === _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVE */ .m7 || step === _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVATED */ .Hs; 21931} 21932/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (status, prepareOnly, callback) { 21933 var _useState = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_NONE */ .cE), 21934 _useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useState, 2), 21935 step = _useState2[0], 21936 setStep = _useState2[1]; 21937 var _useNextFrame = (0,_useNextFrame__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(), 21938 _useNextFrame2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useNextFrame, 2), 21939 nextFrame = _useNextFrame2[0], 21940 cancelNextFrame = _useNextFrame2[1]; 21941 function startQueue() { 21942 setStep(_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARE */ .px, true); 21943 } 21944 var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE; 21945 (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(function () { 21946 if (step !== _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_NONE */ .cE && step !== _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVATED */ .Hs) { 21947 var index = STEP_QUEUE.indexOf(step); 21948 var nextStep = STEP_QUEUE[index + 1]; 21949 var result = callback(step); 21950 if (result === SkipStep) { 21951 // Skip when no needed 21952 setStep(nextStep, true); 21953 } else if (nextStep) { 21954 // Do as frame for step update 21955 nextFrame(function (info) { 21956 function doNext() { 21957 // Skip since current queue is ood 21958 if (info.isCanceled()) return; 21959 setStep(nextStep, true); 21960 } 21961 if (result === true) { 21962 doNext(); 21963 } else { 21964 // Only promise should be async 21965 Promise.resolve(result).then(doNext); 21966 } 21967 }); 21968 } 21969 } 21970 }, [status, step]); 21971 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 21972 return function () { 21973 cancelNextFrame(); 21974 }; 21975 }, []); 21976 return [startQueue, step]; 21977}); 21978 21979/***/ }), 21980 21981/***/ 78942: 21982/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 21983 21984var freeGlobal = __webpack_require__(74967); 21985 21986/** Detect free variable `self`. */ 21987var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 21988 21989/** Used as a reference to the global object. */ 21990var root = freeGlobal || freeSelf || Function('return this')(); 21991 21992module.exports = root; 21993 21994 21995/***/ }), 21996 21997/***/ 78977: 21998/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21999 22000"use strict"; 22001/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22002/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 22003/* harmony export */ }); 22004/* unused harmony export generateTrigger */ 22005/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 22006/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79082); 22007/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39850); 22008/* harmony import */ var _rc_component_portal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42963); 22009/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 22010/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 22011/* harmony import */ var rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77326); 22012/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28299); 22013/* harmony import */ var rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(49116); 22014/* harmony import */ var rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9449); 22015/* harmony import */ var rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(75476); 22016/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(84238); 22017/* harmony import */ var rc_util_es_isMobile__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(26651); 22018/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(15442); 22019/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__); 22020/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(59788); 22021/* harmony import */ var _TriggerWrapper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(36694); 22022/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(85086); 22023/* harmony import */ var _hooks_useAction__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(48043); 22024/* harmony import */ var _hooks_useAlign__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(24628); 22025/* harmony import */ var _hooks_useWatch__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(66318); 22026/* harmony import */ var _hooks_useWinClick__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(46783); 22027/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(61225); 22028 22029 22030 22031var _excluded = ["prefixCls", "children", "action", "showAction", "hideAction", "popupVisible", "defaultPopupVisible", "onPopupVisibleChange", "afterPopupVisibleChange", "mouseEnterDelay", "mouseLeaveDelay", "focusDelay", "blurDelay", "mask", "maskClosable", "getPopupContainer", "forceRender", "autoDestroy", "destroyPopupOnHide", "popup", "popupClassName", "popupStyle", "popupPlacement", "builtinPlacements", "popupAlign", "zIndex", "stretch", "getPopupClassNameFromAlign", "fresh", "alignPoint", "onPopupClick", "onPopupAlign", "arrow", "popupMotion", "maskMotion", "popupTransitionName", "popupAnimation", "maskTransitionName", "maskAnimation", "className", "getTriggerDOMNode"]; 22032 22033 22034 22035 22036 22037 22038 22039 22040 22041 22042 22043 22044 22045 22046 22047 22048 22049 22050 22051// Removed Props List 22052// Seems this can be auto 22053// getDocument?: (element?: HTMLElement) => Document; 22054 22055// New version will not wrap popup with `rc-trigger-popup-content` when multiple children 22056 22057function generateTrigger() { 22058 var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _rc_component_portal__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A; 22059 var Trigger = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.forwardRef(function (props, ref) { 22060 var _props$prefixCls = props.prefixCls, 22061 prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls, 22062 children = props.children, 22063 _props$action = props.action, 22064 action = _props$action === void 0 ? 'hover' : _props$action, 22065 showAction = props.showAction, 22066 hideAction = props.hideAction, 22067 popupVisible = props.popupVisible, 22068 defaultPopupVisible = props.defaultPopupVisible, 22069 onPopupVisibleChange = props.onPopupVisibleChange, 22070 afterPopupVisibleChange = props.afterPopupVisibleChange, 22071 mouseEnterDelay = props.mouseEnterDelay, 22072 _props$mouseLeaveDela = props.mouseLeaveDelay,
22073 mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, 22074 focusDelay = props.focusDelay, 22075 blurDelay = props.blurDelay, 22076 mask = props.mask, 22077 _props$maskClosable = props.maskClosable, 22078 maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable, 22079 getPopupContainer = props.getPopupContainer, 22080 forceRender = props.forceRender, 22081 autoDestroy = props.autoDestroy, 22082 destroyPopupOnHide = props.destroyPopupOnHide, 22083 popup = props.popup, 22084 popupClassName = props.popupClassName, 22085 popupStyle = props.popupStyle, 22086 popupPlacement = props.popupPlacement, 22087 _props$builtinPlaceme = props.builtinPlacements, 22088 builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme, 22089 popupAlign = props.popupAlign, 22090 zIndex = props.zIndex, 22091 stretch = props.stretch, 22092 getPopupClassNameFromAlign = props.getPopupClassNameFromAlign, 22093 fresh = props.fresh, 22094 alignPoint = props.alignPoint, 22095 onPopupClick = props.onPopupClick, 22096 onPopupAlign = props.onPopupAlign, 22097 arrow = props.arrow, 22098 popupMotion = props.popupMotion, 22099 maskMotion = props.maskMotion, 22100 popupTransitionName = props.popupTransitionName, 22101 popupAnimation = props.popupAnimation, 22102 maskTransitionName = props.maskTransitionName, 22103 maskAnimation = props.maskAnimation, 22104 className = props.className, 22105 getTriggerDOMNode = props.getTriggerDOMNode, 22106 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(props, _excluded); 22107 var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false; 22108 22109 // =========================== Mobile =========================== 22110 var _React$useState = react__WEBPACK_IMPORTED_MODULE_12__.useState(false), 22111 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState, 2), 22112 mobile = _React$useState2[0], 22113 setMobile = _React$useState2[1]; 22114 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22115 setMobile((0,rc_util_es_isMobile__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A)()); 22116 }, []); 22117 22118 // ========================== Context =========================== 22119 var subPopupElements = react__WEBPACK_IMPORTED_MODULE_12__.useRef({}); 22120 var parentContext = react__WEBPACK_IMPORTED_MODULE_12__.useContext(_context__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .A); 22121 var context = react__WEBPACK_IMPORTED_MODULE_12__.useMemo(function () { 22122 return { 22123 registerSubPopup: function registerSubPopup(id, subPopupEle) { 22124 subPopupElements.current[id] = subPopupEle; 22125 parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle); 22126 } 22127 }; 22128 }, [parentContext]); 22129 22130 // =========================== Popup ============================ 22131 var id = (0,rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(); 22132 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22133 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState3, 2), 22134 popupEle = _React$useState4[0], 22135 setPopupEle = _React$useState4[1]; 22136 22137 // Used for forwardRef popup. Not use internal 22138 var externalPopupRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(null); 22139 var setPopupRef = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (node) { 22140 externalPopupRef.current = node; 22141 if ((0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__/* .isDOM */ .fk)(node) && popupEle !== node) { 22142 setPopupEle(node); 22143 } 22144 parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node); 22145 }); 22146 22147 // =========================== Target =========================== 22148 // Use state to control here since `useRef` update not trigger render 22149 var _React$useState5 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22150 _React$useState6 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState5, 2), 22151 targetEle = _React$useState6[0], 22152 setTargetEle = _React$useState6[1]; 22153 22154 // Used for forwardRef target. Not use internal 22155 var externalForwardRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(null); 22156 var setTargetRef = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (node) { 22157 if ((0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__/* .isDOM */ .fk)(node) && targetEle !== node) { 22158 setTargetEle(node); 22159 externalForwardRef.current = node; 22160 } 22161 }); 22162 22163 // ========================== Children ========================== 22164 var child = react__WEBPACK_IMPORTED_MODULE_12__.Children.only(children); 22165 var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {}; 22166 var cloneProps = {}; 22167 var inPopupOrChild = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (ele) { 22168 var _getShadowRoot, _getShadowRoot2; 22169 var childDOM = targetEle; 22170 return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = (0,rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_7__/* .getShadowRoot */ .j)(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = (0,rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_7__/* .getShadowRoot */ .j)(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) { 22171 return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle; 22172 }); 22173 }); 22174 22175 // =========================== Motion =========================== 22176 var mergePopupMotion = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getMotion */ .Vu)(prefixCls, popupMotion, popupAnimation, popupTransitionName); 22177 var mergeMaskMotion = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getMotion */ .Vu)(prefixCls, maskMotion, maskAnimation, maskTransitionName); 22178 22179 // ============================ Open ============================ 22180 var _React$useState7 = react__WEBPACK_IMPORTED_MODULE_12__.useState(defaultPopupVisible || false), 22181 _React$useState8 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState7, 2), 22182 internalOpen = _React$useState8[0], 22183 setInternalOpen = _React$useState8[1]; 22184 22185 // Render still use props as first priority 22186 var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen; 22187 22188 // We use effect sync here in case `popupVisible` back to `undefined` 22189 var setMergedOpen = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (nextOpen) { 22190 if (popupVisible === undefined) { 22191 setInternalOpen(nextOpen); 22192 } 22193 }); 22194 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22195 setInternalOpen(popupVisible || false); 22196 }, [popupVisible]); 22197 var openRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(mergedOpen); 22198 openRef.current = mergedOpen; 22199 var lastTriggerRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef([]); 22200 lastTriggerRef.current = []; 22201 var internalTriggerOpen = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (nextOpen) { 22202 var _lastTriggerRef$curre; 22203 setMergedOpen(nextOpen); 22204 22205 // Enter or Pointer will both trigger open state change 22206 // We only need take one to avoid duplicated change event trigger 22207 // Use `lastTriggerRef` to record last open type 22208 if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) { 22209 lastTriggerRef.current.push(nextOpen); 22210 onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen); 22211 } 22212 }); 22213 22214 // Trigger for delay 22215 var delayRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef();
22216 var clearDelay = function clearDelay() { 22217 clearTimeout(delayRef.current); 22218 }; 22219 var triggerOpen = function triggerOpen(nextOpen) { 22220 var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 22221 clearDelay(); 22222 if (delay === 0) { 22223 internalTriggerOpen(nextOpen); 22224 } else { 22225 delayRef.current = setTimeout(function () { 22226 internalTriggerOpen(nextOpen); 22227 }, delay * 1000); 22228 } 22229 }; 22230 react__WEBPACK_IMPORTED_MODULE_12__.useEffect(function () { 22231 return clearDelay; 22232 }, []); 22233 22234 // ========================== Motion ============================ 22235 var _React$useState9 = react__WEBPACK_IMPORTED_MODULE_12__.useState(false), 22236 _React$useState10 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState9, 2), 22237 inMotion = _React$useState10[0], 22238 setInMotion = _React$useState10[1]; 22239 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function (firstMount) { 22240 if (!firstMount || mergedOpen) { 22241 setInMotion(true); 22242 } 22243 }, [mergedOpen]); 22244 var _React$useState11 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22245 _React$useState12 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState11, 2), 22246 motionPrepareResolve = _React$useState12[0], 22247 setMotionPrepareResolve = _React$useState12[1]; 22248 22249 // =========================== Align ============================ 22250 var _React$useState13 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22251 _React$useState14 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState13, 2), 22252 mousePos = _React$useState14[0], 22253 setMousePos = _React$useState14[1]; 22254 var setMousePosByEvent = function setMousePosByEvent(event) { 22255 setMousePos([event.clientX, event.clientY]); 22256 }; 22257 var _useAlign = (0,_hooks_useAlign__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .A)(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign), 22258 _useAlign2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_useAlign, 11), 22259 ready = _useAlign2[0], 22260 offsetX = _useAlign2[1], 22261 offsetY = _useAlign2[2], 22262 offsetR = _useAlign2[3], 22263 offsetB = _useAlign2[4], 22264 arrowX = _useAlign2[5], 22265 arrowY = _useAlign2[6], 22266 scaleX = _useAlign2[7], 22267 scaleY = _useAlign2[8], 22268 alignInfo = _useAlign2[9], 22269 onAlign = _useAlign2[10]; 22270 var _useAction = (0,_hooks_useAction__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .A)(mobile, action, showAction, hideAction), 22271 _useAction2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_useAction, 2), 22272 showActions = _useAction2[0], 22273 hideActions = _useAction2[1]; 22274 var clickToShow = showActions.has('click'); 22275 var clickToHide = hideActions.has('click') || hideActions.has('contextMenu'); 22276 var triggerAlign = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function () { 22277 if (!inMotion) { 22278 onAlign(); 22279 } 22280 }); 22281 var onScroll = function onScroll() { 22282 if (openRef.current && alignPoint && clickToHide) { 22283 triggerOpen(false); 22284 } 22285 }; 22286 (0,_hooks_useWatch__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .A)(mergedOpen, targetEle, popupEle, triggerAlign, onScroll); 22287 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22288 triggerAlign(); 22289 }, [mousePos, popupPlacement]); 22290 22291 // When no builtinPlacements and popupAlign changed 22292 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22293 if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) { 22294 triggerAlign(); 22295 } 22296 }, [JSON.stringify(popupAlign)]); 22297 var alignedClassName = react__WEBPACK_IMPORTED_MODULE_12__.useMemo(function () { 22298 var baseClassName = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getAlignPopupClassName */ .H1)(builtinPlacements, prefixCls, al
22298ignInfo, alignPoint); 22299 return classnames__WEBPACK_IMPORTED_MODULE_4___default()(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo)); 22300 }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]); 22301 22302 // ============================ Refs ============================ 22303 react__WEBPACK_IMPORTED_MODULE_12__.useImperativeHandle(ref, function () { 22304 return { 22305 nativeElement: externalForwardRef.current, 22306 popupElement: externalPopupRef.current, 22307 forceAlign: triggerAlign 22308 }; 22309 }); 22310 22311 // ========================== Stretch =========================== 22312 var _React$useState15 = react__WEBPACK_IMPORTED_MODULE_12__.useState(0), 22313 _React$useState16 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState15, 2), 22314 targetWidth = _React$useState16[0], 22315 setTargetWidth = _React$useState16[1]; 22316 var _React$useState17 = react__WEBPACK_IMPORTED_MODULE_12__.useState(0), 22317 _React$useState18 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState17, 2), 22318 targetHeight = _React$useState18[0], 22319 setTargetHeight = _React$useState18[1]; 22320 var syncTargetSize = function syncTargetSize() { 22321 if (stretch && targetEle) { 22322 var rect = targetEle.getBoundingClientRect(); 22323 setTargetWidth(rect.width); 22324 setTargetHeight(rect.height); 22325 } 22326 }; 22327 var onTargetResize = function onTargetResize() { 22328 syncTargetSize(); 22329 triggerAlign(); 22330 }; 22331 22332 // ========================== Motion ============================ 22333 var onVisibleChanged = function onVisibleChanged(visible) { 22334 setInMotion(false); 22335 onAlign(); 22336 afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible); 22337 }; 22338 22339 // We will trigger align when motion is in prepare 22340 var onPrepare = function onPrepare() { 22341 return new Promise(function (resolve) { 22342 syncTargetSize(); 22343 setMotionPrepareResolve(function () { 22344 return resolve; 22345 }); 22346 }); 22347 }; 22348 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22349 if (motionPrepareResolve) { 22350 onAlign(); 22351 motionPrepareResolve(); 22352 setMotionPrepareResolve(null); 22353 } 22354 }, [motionPrepareResolve]); 22355 22356 // =========================== Action =========================== 22357 /** 22358 * Util wrapper for trigger action 22359 */ 22360 function wrapperAction(eventName, nextOpen, delay, preEvent) { 22361 cloneProps[eventName] = function (event) { 22362 var _originChildProps$eve; 22363 preEvent === null || preEvent === void 0 || preEvent(event); 22364 triggerOpen(nextOpen, delay); 22365 22366 // Pass to origin 22367 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 22368 args[_key - 1] = arguments[_key]; 22369 } 22370 (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args)); 22371 }; 22372 } 22373 22374 // ======================= Action: Click ======================== 22375 if (clickToShow || clickToHide) { 22376 cloneProps.onClick = function (event) { 22377 var _originChildProps$onC; 22378 if (openRef.current && clickToHide) { 22379 triggerOpen(false); 22380 } else if (!openRef.current && clickToShow) { 22381 setMousePosByEvent(event); 22382 triggerOpen(true); 22383 } 22384 22385 // Pass to origin 22386 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 22387 args[_key2 - 1] = arguments[_key2]; 22388 } 22389 (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args)); 22390 }; 22391 } 22392 22393 // Click to hide is special action since click popup element should not hide 22394 var onPopupPointerDown = (0,_hooks_useWinClick__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .A)(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen); 22395 22396 // ======================= Action: Hover ======================== 22397 var hoverToShow = showActions.has('hover'); 22398 var hoverToHide = hideActions.has('hover'); 22399 var onPopupMouseEnter; 22400 var onPopupMouseLeave; 22401 if (hoverToShow) { 22402 // Compatible with old browser which not support pointer event 22403 wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) { 22404 setMousePosByEvent(event); 22405 }); 22406 wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) { 22407 setMousePosByEvent(event); 22408 }); 22409 onPopupMouseEnter = function onPopupMouseEnter(event) { 22410 // Only trigger re-open when popup is visible 22411 if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) { 22412 triggerOpen(true, mouseEnterDelay); 22413 } 22414 }; 22415 22416 // Align Point 22417 if (alignPoint) { 22418 cloneProps.onMouseMove = function (event) { 22419 var _originChildProps$onM; 22420 // setMousePosByEvent(event); 22421 (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event); 22422 }; 22423 } 22424 } 22425 if (hoverToHide) { 22426 wrapperAction('onMouseLeave', false, mouseLeaveDelay); 22427 wrapperAction('onPointerLeave', false, mouseLeaveDelay); 22428 onPopupMouseLeave = function onPopupMouseLeave() { 22429 triggerOpen(false, mouseLeaveDelay); 22430 }; 22431 } 22432 22433 // ======================= Action: Focus ======================== 22434 if (showActions.has('focus')) { 22435 wrapperAction('onFocus', true, focusDelay); 22436 } 22437 if (hideActions.has('focus')) { 22438 wrapperAction('onBlur', false, blurDelay); 22439 } 22440 22441 // ==================== Action: ContextMenu ===================== 22442 if (showActions.has('contextMenu')) { 22443 cloneProps.onContextMenu = function (event) { 22444 var _originChildProps$onC2; 22445 if (openRef.current && hideActions.has('contextMenu')) { 22446 triggerOpen(false); 22447 } else { 22448 setMousePosByEvent(event); 22449 triggerOpen(true); 22450 } 22451 event.preventDefault(); 22452 22453 // Pass to origin 22454 for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { 22455 args[_key3 - 1] = arguments[_key3]; 22456 } 22457 (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args)); 22458 }; 22459 } 22460 22461 // ========================= ClassName ========================== 22462 if (className) { 22463 cloneProps.className = classnames__WEBPACK_IMPORTED_MODULE_4___default()(originChildProps.className, className); 22464 } 22465 22466 // ============================ Perf ============================ 22467 var renderedRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(false); 22468 renderedRef.current || (renderedRef.current = forceRender || mergedOpen || inMotion); 22469 22470 // =========================== Render =========================== 22471 var mergedChildrenProps = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, originChildProps), cloneProps); 22472 22473 // Pass props into cloneProps for nest usage 22474 var passedProps = {}; 22475 var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur']; 22476 passedEventList.forEach(function (eventName) { 22477 if (restProps[eventName]) { 22478 passedProps[eventName] = function () { 22479 var _mergedChildrenProps$; 22480 for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
22481 args[_key4] = arguments[_key4]; 22482 } 22483 (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args)); 22484 restProps[eventName].apply(restProps, args); 22485 }; 22486 } 22487 }); 22488 22489 // Child Node 22490 var triggerNode = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.cloneElement(child, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, mergedChildrenProps), passedProps)); 22491 var arrowPos = { 22492 x: arrowX, 22493 y: arrowY 22494 }; 22495 var innerArrow = arrow ? (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, arrow !== true ? arrow : {}) : null; 22496 22497 // Render 22498 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(react__WEBPACK_IMPORTED_MODULE_12__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, { 22499 disabled: !mergedOpen, 22500 ref: setTargetRef, 22501 onResize: onTargetResize 22502 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_TriggerWrapper__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .A, { 22503 getTriggerDOMNode: getTriggerDOMNode 22504 }, triggerNode)), renderedRef.current && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_context__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .A.Provider, { 22505 value: context 22506 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_Popup__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .A, { 22507 portal: PortalComponent, 22508 ref: setPopupRef, 22509 prefixCls: prefixCls, 22510 popup: popup, 22511 className: classnames__WEBPACK_IMPORTED_MODULE_4___default()(popupClassName, alignedClassName), 22512 style: popupStyle, 22513 target: targetEle, 22514 onMouseEnter: onPopupMouseEnter, 22515 onMouseLeave: onPopupMouseLeave 22516 // https://github.com/ant-design/ant-design/issues/43924 22517 , 22518 onPointerEnter: onPopupMouseEnter, 22519 zIndex: zIndex 22520 // Open 22521 , 22522 open: mergedOpen, 22523 keepDom: inMotion, 22524 fresh: fresh 22525 // Click 22526 , 22527 onClick: onPopupClick, 22528 onPointerDownCapture: onPopupPointerDown 22529 // Mask 22530 , 22531 mask: mask 22532 // Motion 22533 , 22534 motion: mergePopupMotion, 22535 maskMotion: mergeMaskMotion, 22536 onVisibleChanged: onVisibleChanged, 22537 onPrepare: onPrepare 22538 // Portal 22539 , 22540 forceRender: forceRender, 22541 autoDestroy: mergedAutoDestroy, 22542 getPopupContainer: getPopupContainer 22543 // Arrow 22544 , 22545 align: alignInfo, 22546 arrow: innerArrow, 22547 arrowPos: arrowPos 22548 // Align 22549 , 22550 ready: ready, 22551 offsetX: offsetX, 22552 offsetY: offsetY, 22553 offsetR: offsetR, 22554 offsetB: offsetB, 22555 onAlign: triggerAlign 22556 // Stretch 22557 , 22558 stretch: stretch, 22559 targetWidth: targetWidth / scaleX, 22560 targetHeight: targetHeight / scaleY 22561 }))); 22562 }); 22563 if (false) // removed by dead control flow 22564{} 22565 return Trigger; 22566} 22567/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (generateTrigger(_rc_component_portal__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)); 22568 22569/***/ }), 22570 22571/***/ 79082: 22572/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 22573 22574"use strict"; 22575/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22576/* harmony export */ A: () => (/* binding */ _slicedToArray) 22577/* harmony export */ }); 22578/* harmony import */ var _arrayWithHoles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96488); 22579/* harmony import */ var _iterableToArrayLimit_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23171); 22580/* harmony import */ var _unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27985); 22581/* harmony import */ var _nonIterableRest_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5405); 22582 22583 22584 22585 22586function _slicedToArray(r, e) { 22587 return (0,_arrayWithHoles_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(r) || (0,_iterableToArrayLimit_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(r, e) || (0,_unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(r, e) || (0,_nonIterableRest_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(); 22588} 22589 22590 22591/***/ }), 22592 22593/***/ 79191: 22594/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22595 22596"use strict"; 22597/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22598/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 22599/* harmony export */ E: () => (/* binding */ STORAGE_GUIDE_DATA) 22600/* harmony export */ }); 22601/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 22602/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44148); 22603/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 22604/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 22605/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77427); 22606var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 22607 function adopt(value) { 22608 return value instanceof P ? value : new P(function (resolve) { 22609 resolve(value); 22610 }); 22611 } 22612 return new (P || (P = Promise))(function (resolve, reject) { 22613 function fulfilled(value) {
22614 try { 22615 step(generator.next(value)); 22616 } catch (e) { 22617 reject(e); 22618 } 22619 } 22620 function rejected(value) { 22621 try { 22622 step(generator["throw"](value)); 22623 } catch (e) { 22624 reject(e); 22625 } 22626 } 22627 function step(result) { 22628 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 22629 } 22630 step((generator = generator.apply(thisArg, _arguments || [])).next()); 22631 }); 22632}; 22633var __generator = undefined && undefined.__generator || function (thisArg, body) { 22634 var _ = { 22635 label: 0, 22636 sent: function sent() { 22637 if (t[0] & 1) throw t[1]; 22638 return t[1]; 22639 }, 22640 trys: [], 22641 ops: [] 22642 }, 22643 f, 22644 y, 22645 t, 22646 g; 22647 return g = { 22648 next: verb(0), 22649 "throw": verb(1), 22650 "return": verb(2) 22651 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 22652 return this; 22653 }), g; 22654 function verb(n) { 22655 return function (v) { 22656 return step([n, v]); 22657 }; 22658 } 22659 function step(op) { 22660 if (f) throw new TypeError("Generator is already executing."); 22661 while (g && (g = 0, op[0] && (_ = 0)), _) try { 22662 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 22663 if (y = 0, t) op = [op[0] & 2, t.value]; 22664 switch (op[0]) { 22665 case 0: 22666 case 1: 22667 t = op; 22668 break; 22669 case 4: 22670 _.label++; 22671 return { 22672 value: op[1], 22673 done: false 22674 }; 22675 case 5: 22676 _.label++; 22677 y = op[1]; 22678 op = [0]; 22679 continue; 22680 case 7: 22681 op = _.ops.pop(); 22682 _.trys.pop(); 22683 continue; 22684 default: 22685 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 22686 _ = 0; 22687 continue; 22688 } 22689 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 22690 _.label = op[1]; 22691 break; 22692 } 22693 if (op[0] === 6 && _.label < t[1]) { 22694 _.label = t[1]; 22695 t = op; 22696 break; 22697 } 22698 if (t && _.label < t[2]) { 22699 _.label = t[2]; 22700 _.ops.push(op); 22701 break; 22702 } 22703 if (t[2]) _.ops.pop(); 22704 _.trys.pop(); 22705 continue; 22706 } 22707 op = body.call(thisArg, _); 22708 } catch (e) { 22709 op = [6, e]; 22710 y = 0; 22711 } finally { 22712 f = t = 0; 22713 } 22714 if (op[0] & 5) throw op[1]; 22715 return { 22716 value: op[0] ? op[1] : void 0, 22717 done: true 22718 }; 22719 } 22720}; 22721 22722 22723 22724 22725var STORAGE_GUIDE_DATA = 'cj_guide_data'; 22726var useGuidShow = function useGuidShow(_a) { 22727 var _b = _a === void 0 ? {} : _a, 22728 _c = _b.getDomainByUrl, 22729 getDomainByUrl = _c === void 0 ? function (v) { 22730 return v; 22731 } : _c; 22732 var loginInfo = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_1__/* .useGlobalProps */ .v)().loginInfo; 22733 var _d = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false), 22734 loading = _d[0], 22735 setLoading = _d[1]; 22736 var axios = (0,_common_request__WEBPACK_IMPORTED_MODULE_3__/* .createInstance */ .Q)(); 22737 var getIsShow = function getIsShow() { 22738 return __awaiter(void 0, void 0, void 0, function () { 22739 var data, _a, res; 22740 return __generator(this, function (_b) { 22741 switch (_b.label) { 22742 case 0: 22743 data = _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(STORAGE_GUIDE_DATA); 22744 if (data) return [2]; 22745 setLoading(true); 22746 return [4, axios({ 22747 method: 'POST', 22748 url: 'chat-web/app/message/guide/getDspGuideNodeByLoginName', 22749 data: { 22750 accLoginName: loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.loginName 22751 } 22752 })]; 22753 case 1: 22754 _a = _b.sent(), res = _a[1]; 22755 setLoading(false); 22756 if (res === null || res === void 0 ? void 0 : res.data) { 22757 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set(STORAGE_GUIDE_DATA, res.data); 22758 } 22759 return [2]; 22760 } 22761 }); 22762 }); 22763 }; 22764 return { 22765 loading: loading, 22766 getIsShow: getIsShow 22767 }; 22768}; 22769/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useGuidShow); 22770 22771/***/ }), 22772 22773/***/ 79328: 22774/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22775 22776"use strict"; 22777/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22778/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 22779/* harmony export */ }); 22780/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "assets/nav-bg.38bd807e.png"); 22781 22782/***/ }), 22783 22784/***/ 79824: 22785/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 22786 22787"use strict"; 22788/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22789/* harmony export */ A: () => (/* binding */ toPrimitive) 22790/* harmony export */ }); 22791/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 22792 22793function toPrimitive(t, r) { 22794 if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t) || !t) return t; 22795 var e = t[Symbol.toPrimitive]; 22796 if (void 0 !== e) { 22797 var i = e.call(t, r || "default"); 22798 if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(i)) return i; 22799 throw new TypeError("@@toPrimitive must return a primitive value."); 22800 } 22801 return ("string" === r ? String : Number)(t); 22802} 22803 22804 22805/***/ }), 22806 22807/***/ 80129: 22808/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22809 22810"use strict"; 22811/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22812/* harmony export */ A: () => (/* binding */ contains) 22813/* harmony export */ }); 22814function contains(root, n) { 22815 if (!root) { 22816 return false;
22817 } 22818 22819 // Use native if support 22820 if (root.contains) { 22821 return root.contains(n); 22822 } 22823 22824 // `document.contains` not support with IE11 22825 var node = n; 22826 while (node) { 22827 if (node === root) { 22828 return true; 22829 } 22830 node = node.parentNode; 22831 } 22832 return false; 22833} 22834 22835/***/ }), 22836 22837/***/ 80547: 22838/***/ ((module) => { 22839 22840/** 22841 * Checks if `value` is object-like. A value is object-like if it's not `null` 22842 * and has a `typeof` result of "object". 22843 * 22844 * @static 22845 * @memberOf _ 22846 * @since 4.0.0 22847 * @category Lang 22848 * @param {*} value The value to check. 22849 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 22850 * @example 22851 * 22852 * _.isObjectLike({}); 22853 * // => true 22854 * 22855 * _.isObjectLike([1, 2, 3]); 22856 * // => true 22857 * 22858 * _.isObjectLike(_.noop); 22859 * // => false 22860 * 22861 * _.isObjectLike(null); 22862 * // => false 22863 */ 22864function isObjectLike(value) { 22865 return value != null && typeof value == 'object'; 22866} 22867 22868module.exports = isObjectLike; 22869 22870 22871/***/ }), 22872 22873/***/ 80745: 22874/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22875 22876"use strict"; 22877/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22878/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 22879/* harmony export */ }); 22880/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 22881/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 22882 22883var PopupContent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.memo(function (_ref) { 22884 var children = _ref.children; 22885 return children; 22886}, function (_, next) { 22887 return next.cache; 22888}); 22889if (false) // removed by dead control flow 22890{} 22891/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PopupContent); 22892 22893/***/ }), 22894 22895/***/ 81002: 22896/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22897 22898"use strict"; 22899/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22900/* harmony export */ Bd: () => (/* binding */ isBrowser), 22901/* harmony export */ Bz: () => (/* binding */ useVipPrefix), 22902/* harmony export */ Fr: () => (/* binding */ isMobile), 22903/* harmony export */ G3: () => (/* binding */ is1688), 22904/* harmony export */ GA: () => (/* binding */ statusCode200), 22905/* harmony export */ JE: () => (/* binding */ getQueryVariable), 22906/* harmony export */ Me: () => (/* binding */ httpsOptionsConfig), 22907/* harmony export */ SR: () => (/* binding */ getTopDomain), 22908/* harmony export */ Wc: () => (/* reexport safe */ _cookies_refact__WEBPACK_IMPORTED_MODULE_0__.W), 22909/* harmony export */ Wg: () => (/* binding */ unlockBodyScroll), 22910/* harmony export */ _$: () => (/* binding */ removeLogin), 22911/* harmony export */ cH: () => (/* binding */ isInViewport), 22912/* harmony export */ dn: () => (/* binding */ isSafeUser), 22913/* harmony export */ gQ: () => (/* binding */ handleAuthUrl), 22914/* harmony export */ hQ: () => (/* binding */ getRouteHref), 22915/* harmony export */ kJ: () => (/* binding */ isMobileFun), 22916/* harmony export */ sg: () => (/* binding */ debounce), 22917/* harmony export */ t_: () => (/* binding */ isShowNewFeatures), 22918/* harmony export */ zI: () => (/* binding */ lockBodyScroll) 22919/* harmony export */ }); 22920/* unused harmony exports isSupportWebpFun, IMG_SIZE, HTTPS_PREFIX, isTabletFun, jumpMobileFun, handleServiceItemClick, cartesian, cookieGenerator, cookieParser, isPageType, toUnitShow, getProductHref, priceFormat, ratePrice, joinVideoScreenUrl, isNodeExist, isVip, goLogin, uniqueArr, isShowNewInventory, isOldNewInventory, isOldInventory, getVideoScreen, getSecureSameSiteCookiesOptions, isSku, setSearchSku, getVolume, getStandard, qsImageHostChange, goSupplierShopPage */ 22921/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(93584); 22922/* harmony import */ var _cookies_refact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84873); 22923/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12097); 22924/* harmony import */ var _authority_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25435); 22925/* harmony import */ var psl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67399); 22926/* harmony import */ var _replace_prefix_for_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20000); 22927 22928 22929 22930 22931 22932 22933 22934var getRouteHref = function getRouteHref(router) { 22935 if (!router.route) return '#'; 22936 if (!(0,_authority_utils__WEBPACK_IMPORTED_MODULE_2__/* .hasAuth */ .Vm)({ 22937 code: router.code 22938 })) return _authority_utils__WEBPACK_IMPORTED_MODULE_2__/* .noAuthPath */ .Z7; 22939 return router.route; 22940};
22941function getTopDomain(host) { 22942 if (host === void 0) { 22943 host = location === null || location === void 0 ? void 0 : location.hostname; 22944 } 22945 var ip_pattern = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; 22946 if (ip_pattern.test(host)) { 22947 return host; 22948 } 22949 var domain = ''; 22950 var p = psl__WEBPACK_IMPORTED_MODULE_3__/* ["default"].parse */ .Ay.parse(host); 22951 if (p.listed) { 22952 domain = p.domain; 22953 } else { 22954 domain = host; 22955 } 22956 return domain === 'localhost' ? domain : ".".concat(domain); 22957} 22958function statusCode200(data) { 22959 var errormsg = 'api request error!'; 22960 if (!data) { 22961 return [errormsg]; 22962 } 22963 if (data.success) { 22964 return [null, data.data]; 22965 } 22966 return +data.statusCode === 200 ? [null, data.result] : [data.message || errormsg]; 22967} 22968var isBrowser = typeof window != 'undefined'; 22969var getQueryVariable = function getQueryVariable(name) { 22970 var _a; 22971 try { 22972 var searchParams = new URLSearchParams(location.search); 22973 var query = Array.from(searchParams.entries()).reduce(function (obj, _a) { 22974 var key = _a[0], 22975 value = _a[1]; 22976 obj[key] = value; 22977 return obj; 22978 }, {}); 22979 if (name) { 22980 return (_a = query[name]) !== null && _a !== void 0 ? _a : ''; 22981 } 22982 return query; 22983 } catch (e) { 22984 return name ? '' : {}; 22985 } 22986}; 22987function debounce(fn, wait, immediate) { 22988 if (immediate === void 0) { 22989 immediate = false; 22990 } 22991 var timer, 22992 startTimeStamp = 0; 22993 var context, args; 22994 var _run = function run(timerInterval) { 22995 timer = setTimeout(function () { 22996 var now = Date.now(); 22997 var interval = now - startTimeStamp; 22998 if (interval < timerInterval) { 22999 startTimeStamp = now; 23000 _run(wait - interval); 23001 } else { 23002 if (!immediate) { 23003 fn.apply(context, args); 23004 } 23005 clearTimeout(timer); 23006 timer = null; 23007 } 23008 }, timerInterval); 23009 }; 23010 return function () { 23011 context = this; 23012 args = arguments; 23013 var now = Date.now(); 23014 startTimeStamp = now; 23015 if (!timer) { 23016 if (immediate) { 23017 fn.apply(context, args); 23018 } 23019 _run(wait); 23020 } 23021 }; 23022} 23023function isSupportWebpFun() { 23024 if (typeof window === 'undefined') return false; 23025 try { 23026 return document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0; 23027 } catch (err) { 23028 return false; 23029 } 23030} 23031var isSupportWebp = isSupportWebpFun(); 23032var IMG_SIZE = function IMG_SIZE(url) { 23033 var args = []; 23034 for (var _i = 1; _i < arguments.length; _i++) { 23035 args[_i - 1] = arguments[_i]; 23036 } 23037 if (isBrowser && is1688()) return url; 23038 if (typeof url !== 'string' || !url.trim()) return url; 23039 if (url.indexOf('data:image') > -1) return url; 23040 try { 23041 var _url = new URL(url); 23042 if (_url.searchParams.size > 0) { 23043 _url.search = ''; 23044 } 23045 var webpT = 'image/format,webp,'; 23046 var json = {}; 23047 var size = 200; 23048 var xOssProcess = "".concat(isSupportWebp ? webpT : '', "image/resize,m_fill,m_pad"); 23049 if (args.length === 1) json = { 23050 w: args[0] 23051 };else if (args.length === 2) json = { 23052 w: args[0], 23053 h: args[1] 23054 };else { 23055 json = { 23056 w: size, 23057 h: size 23058 }; 23059 } 23060 for (var k in json) xOssProcess += ",".concat(k, "_").concat(json[k]); 23061 _url.search = "?x-oss-process=".concat(xOssProcess); 23062 return HTTPS_PREFIX(_url.toString()); 23063 } catch (e) { 23064 console.error("\u56FE\u7247url: ".concat(url, " \u5904\u7406\u62A5\u9519"), JSON.stringify(e)); 23065 return url; 23066 } 23067}; 23068var HTTPS_PREFIX = function HTTPS_PREFIX(url) { 23069 var str = url; 23070 if (!(str === null || str === void 0 ? void 0 : str.startsWith('https'))) { 23071 var suffix = str.replace(/^http:\/\//, ''); 23072 str = "https://".concat(suffix); 23073 } 23074 return str; 23075}; 23076var handleAuthUrl = function handleAuthUrl(url) { 23077 var _href = url; 23078 if (_href.indexOf('my.html') > -1 || _href.indexOf('mine') > -1) { 23079 _href = "/login.html?target=".concat(js_base64__WEBPACK_IMPORTED_MODULE_5__/* .Base64 */ .o4.encode(url)); 23080 } 23081 return _href; 23082}; 23083var isMobileFun = function isMobileFun() { 23084 return window.innerWidth < 700; 23085}; 23086var isTabletFun = function isTabletFun() { 23087 return window.innerWidth > 700 && window.innerWidth < 1200; 23088}; 23089var jumpMobileFun = function jumpMobileFun(_a) { 23090 var _b; 23091 var url = _a.url, 23092 _c = _a._back_url, 23093 _back_url = _c === void 0 ? window.location.href : _c, 23094 _source_url = _a._source_url, 23095 isLogin = _a.isLogin, 23096 _d = _a.shouldJump, 23097 shouldJump = _d === void 0 ? true : _d, 23098 _e = _a.openInNewTab, 23099 openInNewTab = _e === void 0 ? false : _e, 23100 _f = _a.noBackUrl, 23101 noBackUrl = _f === void 0 ? false : _f; 23102 var m_host = (_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('m-host'); 23103 if (!m_host || !url) { 23104 return shouldJump ? undefined : ''; 23105 } 23106 var m_url = "".concat(m_host).concat(url); 23107 if (isLogin) { 23108 if (shouldJump) { 23109 if (openInNewTab) { 23110 window.open("".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)), '_blank'); 23111 } else { 23112 window.location.href = "".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)); 23113 } 23114 return; 23115 } 23116 return "".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)); 23117 } 23118 var loginUrl = "".concat(m_host, "/login-register?_source_url=").concat(_source_url || m_url).concat(noBackUrl ? '' : "&_back_url=".concat(_back_url)); 23119 if (shouldJump) { 23120 if (openInNewTab) { 23121 window.open(loginUrl, '_blank'); 23122 } else { 23123 window.location.href = loginUrl; 23124 } 23125 return; 23126 } 23127 return loginUrl; 23128}; 23129var originalStyles = { 23130 html: { 23131 overflow: '', 23132 position: '', 23133 top: '', 23134 width: '' 23135 }, 23136 body: { 23137 overflow: '', 23138 position: '', 23139 top: '', 23140 width: '' 23141 } 23142};
23143var isLocked = false; 23144var lockedScrollY = 0; 23145var lockBodyScroll = function lockBodyScroll() { 23146 if (isLocked) return; 23147 var html = document.documentElement; 23148 var body = document.body; 23149 originalStyles.html = { 23150 overflow: html.style.overflow, 23151 position: html.style.position, 23152 top: html.style.top, 23153 width: html.style.width 23154 }; 23155 originalStyles.body = { 23156 overflow: body.style.overflow, 23157 position: body.style.position, 23158 top: body.style.top, 23159 width: body.style.width 23160 }; 23161 lockedScrollY = window.scrollY || window.pageYOffset; 23162 html.style.overflow = 'hidden'; 23163 html.style.position = 'fixed'; 23164 html.style.top = "-".concat(lockedScrollY, "px"); 23165 html.style.width = '100%'; 23166 body.style.overflow = 'hidden'; 23167 body.style.position = 'fixed'; 23168 body.style.top = "-".concat(lockedScrollY, "px"); 23169 body.style.width = '100%'; 23170 if (/iPad|iPhone|iPod/.test(navigator.userAgent)) { 23171 body.style.position = 'fixed'; 23172 body.style.top = "-".concat(lockedScrollY, "px"); 23173 } 23174 isLocked = true; 23175}; 23176var unlockBodyScroll = function unlockBodyScroll() { 23177 if (!isLocked) return; 23178 var html = document.documentElement; 23179 var body = document.body; 23180 html.style.overflow = originalStyles.html.overflow; 23181 html.style.position = originalStyles.html.position; 23182 html.style.top = originalStyles.html.top; 23183 html.style.width = originalStyles.html.width; 23184 body.style.overflow = originalStyles.body.overflow; 23185 body.style.position = originalStyles.body.position; 23186 body.style.top = originalStyles.body.top; 23187 body.style.width = originalStyles.body.width; 23188 window.scrollTo(0, lockedScrollY); 23189 isLocked = false; 23190}; 23191var handleServiceItemClick = function handleServiceItemClick(service) { 23192 if (isMobileFun()) { 23193 if (service.isThirdLink) { 23194 if (service.openInNewTab) { 23195 window.open(service.mlink, '_blank'); 23196 } else { 23197 window.location.href = service.mlink; 23198 } 23199 return; 23200 } 23201 jumpMobileFun({ 23202 url: service.mlink, 23203 _back_url: window.location.href, 23204 isLogin: true, 23205 openInNewTab: service.openInNewTab 23206 }); 23207 return; 23208 } 23209 if (service.openInNewTab) { 23210 window.open(service.link, '_blank'); 23211 } else { 23212 window.location.href = service.link; 23213 } 23214}; 23215var removeLogin = function removeLogin() { 23216 var _a; 23217 (_a = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A === null || _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A === void 0 ? void 0 : _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.clear) === null || _a === void 0 ? void 0 : _a.call(_common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A); 23218}; 23219function cartesian(arr) { 23220 if (arr.length < 2) return arr[0] || []; 23221 return [].reduce.call(arr, function (col, set) { 23222 var res = []; 23223 col.forEach(function (c) { 23224 set.forEach(function (s) { 23225 var t = [].concat(Array.isArray(c) ? c : [c]); 23226 t.push(s); 23227 res.push(t); 23228 }); 23229 }); 23230 return res; 23231 }); 23232} 23233var cookieGenerator = function cookieGenerator(cookie) { 23234 if (cookie === void 0) { 23235 cookie = {}; 23236 } 23237 var arr = Object.keys(cookie).filter(function (k) { 23238 return cookie[k]; 23239 }).map(function (k) { 23240 var v = cookie[k]; 23241 return "".concat(k, "=").concat(v); 23242 }); 23243 return arr.join(';'); 23244}; 23245var cookieParser = function cookieParser(cookie) { 23246 var r = null; 23247 if (!cookie) { 23248 return null; 23249 } 23250 try { 23251 var tmp = decodeURIComponent(cookie); 23252 var arr = tmp.split(';'); 23253 var obj_1 = {}; 23254 arr.forEach(function (_) { 23255 var t = _.split('='); 23256 obj_1[t[0]] = t[1]; 23257 }); 23258 r = obj_1; 23259 return r; 23260 } catch (error) { 23261 console.log('error', error); 23262 } 23263}; 23264var isPageType = function isPageType(_path) { 23265 var path = _path; 23266 switch (path) { 23267 case '/': 23268 path = '/home.html'; 23269 break; 23270 default: 23271 break; 23272 } 23273 return { 23274 isHome: ['/home.html'].includes(path) 23275 }; 23276}; 23277var toUnitShow = function toUnitShow(num) { 23278 if (isNaN(num) || !num || num == null || num <= 0) return 0; 23279 if (num < 1000) return num; 23280 if (num < 100000) return "".concat((num / 1000).toFixed(1), "K"); 23281 return "99K+"; 23282}; 23283var getProductHref = function getProductHref(id, name) { 23284 if (name === void 0) { 23285 name = ''; 23286 } 23287 function urlQueryFormat(url, encode) { 23288 if (url === void 0) { 23289 url = ''; 23290 } 23291 if (encode === void 0) { 23292 encode = true; 23293 } 23294 var _url = String(url); 23295 _url = _url.toLocaleLowerCase(); 23296 function _(reg, value) { 23297 if (value === void 0) { 23298 value = ''; 23299 } 23300 _url = _url.replace(reg, value); 23301 } 23302 _(/,/g); 23303 _(/( )?&/g); 23304 _(/'/g); 23305 _(/\?/g); 23306 _(/ /g, '-'); 23307 _url = encode ? encodeURIComponent(_url) : decodeURIComponent(_url); 23308 return _url; 23309 } 23310 return "/product/".concat(urlQueryFormat(name), "-p-").concat(id, ".html"); 23311}; 23312function priceFormat(price) { 23313 if (!price) return '0.00'; 23314 var _price = price.replace('--', '-'); 23315 var arr = _price.split('-'); 23316 if (arr.length == 1) { 23317 return "".concat(Number(arr[0]).toFixed(2)); 23318 } else { 23319 return "".concat(Number(arr[0]).toFixed(2), "-").concat(Number(arr[1]).toFixed(2)); 23320 } 23321} 23322function ratePrice(price, rate) { 23323 if (rate === void 0) { 23324 rate = 1; 23325 } 23326 var resultPrice = price * rate; 23327 return resultPrice.toFixed(2); 23328} 23329var joinVideoScreenUrl = function joinVideoScreenUrl(url, size) { 23330 if (size === void 0) { 23331 size = []; 23332 } 23333 var joinTemp = []; 23334 size[0] && joinTemp.push("w_".concat(size[0])); 23335 size[1] && joinTemp.push("h_".concat(size[1])); 23336 var joinStr = joinTemp.join(',');
23337 return "".concat(url, "?x-oss-process=video/snapshot,t_1,m_fast") + (joinStr ? ",".concat(joinStr) : ''); 23338}; 23339function isNodeExist(node) { 23340 if (!node) return false; 23341 return document.contains(node); 23342} 23343function isVip() { 23344 return loginInfoController.info('vip') == '1' && document.body.classList.contains('vip'); 23345} 23346function goLogin(url) { 23347 if (url === void 0) { 23348 url = ''; 23349 } 23350 var goUrl = url; 23351 if (!goUrl) { 23352 goUrl = location.origin + location.pathname + '?' + location.search; 23353 } 23354 location.href = '/login.html?target=' + Base64.encode(goUrl); 23355} 23356function uniqueArr(arr, key) { 23357 if (key === void 0) { 23358 key = ''; 23359 } 23360 var res = new Map(); 23361 return arr.filter(function (a) { 23362 var _key = key ? a[key] : a; 23363 return !res.has(_key) && res.set(_key, 1); 23364 }); 23365} 23366function isInViewport(el, offsetHeight) { 23367 if (offsetHeight === void 0) { 23368 offsetHeight = 0; 23369 } 23370 if (!el) return true; 23371 var rect = el.getBoundingClientRect(); 23372 return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) - offsetHeight && rect.right <= (window.innerWidth || document.documentElement.clientWidth); 23373} 23374function isSafeUser(SHOWMESSAGE, token) { 23375 var _a; 23376 if (SHOWMESSAGE === void 0) { 23377 SHOWMESSAGE = ''; 23378 } 23379 if (token === void 0) { 23380 token = ''; 23381 } 23382 if (typeof window !== 'undefined') { 23383 return ((_a = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('S')) > -1 && !!_cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('token'); 23384 } 23385 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('S')) > -1 && !!token; 23386} 23387var noReplaceUrl = ['/order-center/proxyOrder/saveOrder/excelImportOrder', '/order-center/proxyOrder/saveOrder/excelImportOrderV2', '/order-center/proxyOrder/saveOrder/excelImportOrderV3', '/order-center/proxyOrder/saveOrder/excelImportOrderV4']; 23388function useVipPrefix(_a) { 23389 var _b; 23390 var _c = _a === void 0 ? {} : _a, 23391 _d = _c.SHOWMESSAGE, 23392 SHOWMESSAGE = _d === void 0 ? '' : _d, 23393 _e = _c.token, 23394 token = _e === void 0 ? '' : _e, 23395 _f = _c.url, 23396 url = _f === void 0 ? '' : _f; 23397 if (!url || url.startsWith('http')) return url; 23398 var hasPreLine = url === null || url === void 0 ? void 0 : url.startsWith('/'); 23399 var diagonalLineUrl = hasPreLine ? url : "/".concat(url); 23400 if (noReplaceUrl.some(function (u) { 23401 return u === diagonalLineUrl; 23402 })) return url; 23403 var prefix = (_b = diagonalLineUrl === null || diagonalLineUrl === void 0 ? void 0 : diagonalLineUrl.split('/')) === null || _b === void 0 ? void 0 : _b[1]; 23404 var _g = _replace_prefix_for_api__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A[prefix] || {}, 23405 normalPrefix = _g.normal, 23406 vipPrefix = _g.vip; 23407 var _SHOWMESSAGE = SHOWMESSAGE; 23408 var _token = token; 23409 if (typeof window !== 'undefined') { 23410 _SHOWMESSAGE = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('SHOWMESSAGE') || ''; 23411 _token = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('token') || ''; 23412 } 23413 var needReplace = (_SHOWMESSAGE === null || _SHOWMESSAGE === void 0 ? void 0 : _SHOWMESSAGE.indexOf('V')) > -1 && !!_token; 23414 if (needReplace && vipPrefix) return url.replace("".concat(prefix), "".concat(vipPrefix)); 23415 if (normalPrefix) return url.replace("".concat(prefix), "".concat(normalPrefix)); 23416 return url; 23417} 23418function isMobile(ctx) { 23419 var _a; 23420 if (ctx === void 0) { 23421 ctx = null; 23422 } 23423 if (ctx) { 23424 var ua = ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.req) === null || _a === void 0 ? void 0 : _a.headers['user-agent']) || ''; 23425 return /Mobile|mobile|android|iphone|ipod|phone|blackberry|windows phone|ipad/i.test(ua); 23426 } 23427 if (typeof window === 'undefined') return false; 23428 return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); 23429} 23430function isShowNewInventory(SHOWMESSAGE) { 23431 var _a, _b; 23432 if (SHOWMESSAGE === void 0) { 23433 SHOWMESSAGE = ''; 23434 } 23435 if (typeof window !== 'undefined') { 23436 return ((_a = Cookies.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('K')) > -1 && ((_b = Cookies.get('SHOWMESSAGE')) === null || _b === void 0 ? void 0 : _b.indexOf('k')) === -1; 23437 } 23438 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) > -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) === -1; 23439} 23440function isOldNewInventory(SHOWMESSAGE) { 23441 var _a, _b; 23442 if (SHOWMESSAGE === void 0) { 23443 SHOWMESSAGE = ''; 23444 } 23445 if (typeof window !== 'undefined') { 23446 return ((_a = Cookies.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('K')) > -1 && ((_b = Cookies.get('SHOWMESSAGE')) === null || _b === void 0 ? void 0 : _b.indexOf('k')) > -1; 23447 } 23448 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) > -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) > -1; 23449} 23450function isOldInventory(SHOWMESSAGE) { 23451 var _a, _b; 23452 if (SHOWMESSAGE === void 0) { 23453 SHOWMESSAGE = ''; 23454 } 23455 if (typeof window !== 'undefined') { 23456 return ((_a = Cookies.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('K')) === -1 && ((_b = Cookies.get('SHOWMESSAGE')) === null || _b === void 0 ? void 0 : _b.indexOf('k')) > -1; 23457 } 23458 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) === -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) > -1; 23459}
23460var parseSize = function parseSize(targetSize, size) { 23461 var t_width = targetSize[0], 23462 t_height = targetSize[1]; 23463 var width = size[0], 23464 height = size[1]; 23465 var newWidth = 0, 23466 newHeight = 0; 23467 var targetRatio = t_width / t_height; 23468 var ratio = width / height; 23469 if (targetRatio > ratio) { 23470 newWidth = ratio * t_height; 23471 newHeight = t_height; 23472 } else { 23473 newWidth = t_width; 23474 newHeight = t_width / ratio; 23475 } 23476 return [parseInt(newWidth + ''), parseInt(newHeight + '')]; 23477}; 23478function getVideoScreen(url, size) { 23479 if (size === void 0) { 23480 size = [200, 200]; 23481 } 23482 var _a = parseSize(size, [200, 200]), 23483 width = _a[0], 23484 height = _a[1]; 23485 return new Promise(function (resolve) { 23486 var video = document.createElement('video'); 23487 video.crossOrigin = 'anonymous'; 23488 video.src = url; 23489 video.width = width; 23490 video.height = height; 23491 video.preload = 'auto'; 23492 video.currentTime = 2; 23493 video.onloadeddata = function () { 23494 var canvas = document.createElement('canvas'); 23495 var t_w = size[0]; 23496 var t_h = size[1]; 23497 canvas.width = t_w; 23498 canvas.height = t_h; 23499 var x = 0; 23500 var y = 0; 23501 if (t_w === width) { 23502 y = (t_h - height) / 2; 23503 } else { 23504 x = (t_w - width) / 2; 23505 } 23506 var ctx = canvas.getContext('2d'); 23507 ctx.drawImage(video, x, y, canvas.width, canvas.height); 23508 ctx.fillStyle = '#000'; 23509 var fileType = 'image/jpeg'; 23510 var base64Url = canvas.toDataURL(fileType); 23511 resolve(base64Url); 23512 }; 23513 }); 23514} 23515function is1688(_siteCheck) { 23516 var siteCheck = _siteCheck !== null && _siteCheck !== void 0 ? _siteCheck : window === null || window === void 0 ? void 0 : window.siteCheck; 23517 return (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('TH', 'CF')) || (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('EX')) || (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('AR')) || (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('RU')) || (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('FT')); 23518} 23519function getSecureSameSiteCookiesOptions() { 23520 var cookieOptions = {}; 23521 if (false) // removed by dead control flow 23522{} 23523 cookieOptions.secure = true; 23524 cookieOptions.sameSite = 'None'; 23525 return cookieOptions; 23526} 23527function isSku(value) { 23528 var regSKU = /^[A-Za-z]{4}[A-Za-z0-9]*[0-9]{2}[A-Za-z]{2}$/; 23529 var regOldSKU = /^CJ[0-9A-Za-z]{3,11}-[0-9A-Za-z+]+.*$/; 23530 var packageSKU = /^BZ[0-9A-Za-z]{3,11}-[0-9A-Za-z+]+.*$/; 23531 return regSKU.test(value) || regOldSKU.test(value) || packageSKU.test(value); 23532} 23533function setSearchSku(value) { 23534 if (value === void 0) { 23535 value = ''; 23536 } 23537 if (value && isSku(value)) { 23538 Cookies.set('searchSku', value); 23539 } else { 23540 Cookies.remove('searchSku'); 23541 } 23542} 23543function isShowNewFeatures() { 23544 var maxNewTime = new Date('2025/5/20').getTime(); 23545 var cacheNew = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('view-cogs'); 23546 var isShowNew = new Date().getTime() < maxNewTime && !cacheNew; 23547 return isShowNew; 23548} 23549function getVolume(_long, width, height, number) { 23550 _long = parseFloat(_long) || 0; 23551 width = parseFloat(width) || 0; 23552 height = parseFloat(height) || 0; 23553 number = parseInt(number) || 0; 23554 return _long * width * height * number; 23555} 23556function getStandard(name, content) { 23557 var reg = RegExp(name + '=(\\d+)', 'gi'); 23558 var result = reg.exec(content); 23559 return Array.isArray(result) ? parseInt(result[1]) / 10 : null; 23560} 23561function qsImageHostChange(url) { 23562 return url.replace(/https:\/\/oss-cf.cjdropshipping.com/g, 'https://oss-cf.yesourcing.com'); 23563} 23564function httpsOptionsConfig() { 23565 if (typeof window !== 'undefined' && location.href.includes('offline.pre')) { 23566 return {}; 23567 } 23568 return { 23569 secure: true, 23570 sameSite: 'None' 23571 }; 23572} 23573function goSupplierShopPage(shopId, domainName, siteName, openInNewTab) { 23574 if (siteName === void 0) { 23575 siteName = 'cj'; 23576 } 23577 if (openInNewTab === void 0) { 23578 openInNewTab = false; 23579 } 23580 var host = {"qs":"https://shop.qksource.com","cj":"https://shop.cjdropshipping.com"}[siteName]; 23581 if (domainName) { 23582 var hasDev = /dev-/.test(host); 23583 host = host.replace(/(dev-)?shop/i, (hasDev ? 'dev-' : '') + domainName); 23584 if (openInNewTab) { 23585 window.open(host, '_blank'); 23586 } else { 23587 location.href = host; 23588 } 23589 return; 23590 } 23591 if (openInNewTab) { 23592 window.open("/seller/".concat(shopId), '_blank'); 23593 } else { 23594 location.href = "/seller/".concat(shopId); 23595 } 23596} 23597 23598/***/ }), 23599 23600/***/ 81943: 23601/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23602 23603"use strict"; 23604/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23605/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 23606/* harmony export */ DD: () => (/* binding */ menuPath), 23607/* harmony export */ T_: () => (/* binding */ menus), 23608/* harmony export */ Yn: () => (/* binding */ getPath) 23609/* harmony export */ }); 23610/* unused harmony export menuNames */ 23611/* harmony import */ var _common_platform_show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37597); 23612var __assign = undefined && undefined.__assign || function () { 23613 __assign = Object.assign || function (t) { 23614 for (var s, i = 1, n = arguments.length; i < n; i++) { 23615 s = arguments[i]; 23616 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 23617 } 23618 return t; 23619 }; 23620 return __assign.apply(this, arguments); 23621}; 23622var _a; 23623 23624var menus = [{ 23625 name: 'Catalog', 23626 nameTrans: function nameTrans() { 23627 return "".concat(window.i18next.t("common-mycj-menu-catalog", 'Catalog')); 23628 }, 23629 iconclass: 'Catalog', 23630 active: true, 23631 childs: [], 23632 route: '/list/wholesale-all-categories-l-all.html' 23633}, { 23634 name: 'Products', 23635 nameTrans: function nameTrans() { 23636 return "".concat(window.i18next.t("common-mycj-menu-products", 'Products')); 23637 }, 23638 iconclass: 'Products', 23639 active: false,
23640 code: 'mycj_products', 23641 childs: [{ 23642 name: 'My Products', 23643 nameTrans: function nameTrans() { 23644 return "".concat(window.i18next.t("common-mycj-menu-my-products", 'My Products')); 23645 }, 23646 code: 'mycj_my_products', 23647 route: '/mine/myQuotation', 23648 active: false 23649 }, { 23650 name: 'My Upsell', 23651 nameTrans: function nameTrans() { 23652 return "".concat(window.i18next.t("common-mycj-menu-my-upsell", 'My Upsell')); 23653 }, 23654 code: 'mycj_my_upsell', 23655 route: '/mine/myUpsell', 23656 active: false 23657 }, { 23658 name: 'Store Products', 23659 nameTrans: function nameTrans() { 23660 return "".concat(window.i18next.t("common-mycj-menu-store-products", 'Store Products')); 23661 }, 23662 code: 'mycj_store_products', 23663 route: '/mine/products/connection', 23664 active: false, 23665 tip: function tip() { 23666 return window.i18next.t("common-mycj-menu-store-products-tip"); 23667 } 23668 }] 23669}, { 23670 name: 'Orders', 23671 nameTrans: function nameTrans() { 23672 return "".concat(window.i18next.t("common-mycj-menu-orders", 'Orders')); 23673 }, 23674 iconclass: 'Orders1', 23675 active: false, 23676 code: 'mycj_orders', 23677 childs: [{ 23678 name: 'Store Orders', 23679 nameTrans: function nameTrans() { 23680 return "".concat(window.i18next.t("common-mycj-menu-store-orders", 'Store Orders')); 23681 }, 23682 active: false, 23683 code: 'mycj_store_orders', 23684 route: '/mine/dropshipping/zestyOrder' 23685 }, { 23686 name: 'Disputes', 23687 nameTrans: function nameTrans() { 23688 return "".concat(window.i18next.t("common-mycj-menu-disputes", 'Disputes')); 23689 }, 23690 code: 'mycj_disputes', 23691 route: '/mine/dispute/list', 23692 active: false 23693 }, { 23694 name: 'Undelivered Orders', 23695 nameTrans: function nameTrans() { 23696 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders", 'Undelivered Orders')); 23697 }, 23698 code: 'mycj_undelivered_orders', 23699 route: '/mine/undeliveredOrder', 23700 active: false 23701 }] 23702}, { 23703 name: 'Tracking', 23704 nameTrans: function nameTrans() { 23705 return "".concat(window.i18next.t("common-mycj-menu-tracking", 'Tracking')); 23706 }, 23707 iconclass: 'Tracking', 23708 active: false, 23709 code: 'mycj_tracking', 23710 childs: [{ 23711 name: 'Tracking List', 23712 nameTrans: function nameTrans() { 23713 return "".concat(window.i18next.t("common-mycj-menu-tracking-list", 'Tracking List')); 23714 }, 23715 active: false, 23716 code: 'mycj_tracking', 23717 route: '/mine/tracking' 23718 }, { 23719 name: 'Tracking Changes', 23720 nameTrans: function nameTrans() { 23721 return "".concat(window.i18next.t("common-mycj-menu-tracking-changes", 'Tracking Changes')); 23722 }, 23723 active: false, 23724 code: 'mycj_tracking_changes', 23725 route: '/mine/tracking/changes' 23726 }] 23727}, { 23728 name: 'Authorization', 23729 nameTrans: function nameTrans() { 23730 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 23731 }, 23732 iconclass: 'Authorization', 23733 active: false, 23734 special: true, 23735 code: 'mycj_authorization', 23736 childs: [__assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_0__/* .PLATFORM */ .i9.api), { 23737 nameTrans: function nameTrans() { 23738 return "".concat(window.i18next.t("common-mycj-menu-api")); 23739 }, 23740 version: 2, 23741 type: 'authorize', 23742 active: false 23743 })] 23744}, { 23745 name: "My ".concat(typeof window !== 'undefined' && ((_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name'))), 23746 nameVal: "My CJ", 23747 nameTrans: function nameTrans() { 23748 var _a; 23749 return window.i18next.t("common-mycj-my-site", { 23750 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('full-name') 23751 }); 23752 }, 23753 iconclass: 'a-MyCJZesty', 23754 active: false, 23755 childs: [{ 23756 name: 'Dashboard', 23757 nameTrans: function nameTrans() { 23758 return "".concat(window.i18next.t("common-mycj-menu-dashboard", 'Dashboard')); 23759 }, 23760 code: 'mycj_dashboard', 23761 route: '/mine/zestyDashboard', 23762 active: false 23763 }, { 23764 name: 'Profile', 23765 nameTrans: function nameTrans() { 23766 return "".concat(window.i18next.t("common-mycj-menu-profile")); 23767 }, 23768 code: 'mycj_profile', 23769 route: '/my.html#/profile/info', 23770 active: false 23771 }, { 23772 name: 'Wallet', 23773 nameTrans: function nameTrans() { 23774 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 23775 }, 23776 code: 'mycj_wallet', 23777 route: '/mine/wallet', 23778 active: false 23779 }, { 23780 name: 'Ticket', 23781 nameTrans: function nameTrans() { 23782 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 23783 }, 23784 code: 'mycj_ticket', 23785 route: '/mine/ticket', 23786 active: false 23787 }, { 23788 name: 'Sub-account', 23789 nameTrans: function nameTrans() { 23790 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 23791 }, 23792 code: 'mycj_sub_account', 23793 route: '/my.html#/accountManage', 23794 active: false 23795 }, { 23796 name: 'Export List', 23797 nameTrans: function nameTrans() { 23798 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 23799 }, 23800 iconclass: 'liwuicon_', 23801 code: 'mycj_export_list', 23802 route: '/mine/exportList', 23803 active: false 23804 }, { 23805 name: 'Warehouse Operation Video', 23806 nameTrans: function nameTrans() { 23807 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 23808 }, 23809 code: 'mycj_order-video', 23810 route: '/mine/orderVideo', 23811 active: false 23812 }] 23813}]; 23814var menuPath = {}; 23815var menuNames = {}; 23816function loops(list, parent) { 23817 return (list || []).map(function (_a) { 23818 var route = _a.route, 23819 childs = _a.childs, 23820 name = _a.name, 23821 version = _a.version; 23822 var _route = route; 23823 var node = menuNames[name] = menuPath[_route] = { 23824 parent: parent, 23825 name: name, 23826 version: version, 23827 route: _route 23828 }; 23829 node['childs'] = loops(childs, node); 23830 return node; 23831 }); 23832} 23833function getPath(name) { 23834 var obj = menuNames[name]; 23835 var arr = []; 23836 while (obj && obj.name) { 23837 if (obj.childs && obj.childs[0]) { 23838 arr.push(obj.name); 23839 } else { 23840 arr.push(obj.name); 23841 } 23842 if (!obj.parent) break; 23843 obj = obj.parent; 23844 } 23845 return arr; 23846} 23847loops(menus, null); 23848var createAuthTree = function createAuthTree() { 23849 var authMapByRoute = []; 23850 var _fun = function fun(list) { 23851 return list.map(function (l) { 23852 if (l.route && l.code) authMapByRoute.push({ 23853 name: l.name, 23854 code: l.code, 23855 route: l.route 23856 }); 23857 return { 23858 name: l.name, 23859 code: l.code, 23860 route: l.route, 23861 children: l.childs && _fun(l.childs) 23862 }; 23863 }); 23864 };
23865 return [_fun(menus), authMapByRoute]; 23866}; 23867/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAuthTree); 23868 23869/***/ }), 23870 23871/***/ 82058: 23872/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23873 23874"use strict"; 23875/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23876/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23877/* harmony export */ }); 23878/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44148); 23879 23880/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () { 23881 var siteCheck = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__/* .useGlobalProps */ .v)().siteCheck; 23882 return siteCheck; 23883}); 23884 23885/***/ }), 23886 23887/***/ 84238: 23888/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23889 23890"use strict"; 23891/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23892/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23893/* harmony export */ }); 23894/* unused harmony export useLayoutUpdateEffect */ 23895/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 23896/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23897/* harmony import */ var _Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 23898 23899 23900 23901/** 23902 * Wrap `React.useLayoutEffect` which will not throw warning message in test env 23903 */ 23904var useInternalLayoutEffect = true && (0,_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)() ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect; 23905var useLayoutEffect = function useLayoutEffect(callback, deps) { 23906 var firstMountRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(true); 23907 useInternalLayoutEffect(function () { 23908 return callback(firstMountRef.current); 23909 }, deps); 23910 23911 // We tell react that first mount has passed 23912 useInternalLayoutEffect(function () { 23913 firstMountRef.current = false; 23914 return function () { 23915 firstMountRef.current = true; 23916 }; 23917 }, []); 23918}; 23919var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) { 23920 useLayoutEffect(function (firstMount) { 23921 if (!firstMount) { 23922 return callback(); 23923 } 23924 }, deps); 23925}; 23926/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useLayoutEffect); 23927 23928/***/ }), 23929 23930/***/ 84266: 23931/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23932 23933"use strict"; 23934/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23935/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23936/* harmony export */ }); 23937/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 23938 shopify: { 23939 Title: 'Shopify', 23940 value: 'shopify', 23941 otherValue: [], 23942 isAuthor: true, 23943 isShow: true 23944 }, 23945 wed2c: { 23946 Title: 'WED2C', 23947 value: 'wed2c', 23948 otherValue: [], 23949 isAuthor: true, 23950 isShow: true 23951 }, 23952 temu: { 23953 Title: 'Temu', 23954 value: 'temu', 23955 otherValue: [], 23956 isAuthor: true, 23957 isShow: true 23958 }, 23959 temu_us_local: { 23960 Title: 'Temu US Local', 23961 value: 'temu_us_local', 23962 otherValue: [], 23963 isAuthor: true, 23964 isShow: true 23965 }, 23966 temu_certified_overseas: { 23967 Title: 'Temu Cooperative Warehouse', 23968 value: 'temu_certified_overseas', 23969 otherValue: [], 23970 isAuthor: true, 23971 isShow: true 23972 }, 23973 shein: { 23974 Title: 'Shein', 23975 value: 'shein', 23976 otherValue: [], 23977 isAuthor: true, 23978 isShow: true 23979 }, 23980 whop: { 23981 Title: 'Whop', 23982 value: 'whop', 23983 otherValue: [], 23984 isAuthor: true, 23985 isShow: true 23986 }, 23987 tiktok: { 23988 Title: 'TikTok', 23989 value: 'tikTok', 23990 otherValue: [], 23991 isAuthor: true, 23992 isShow: true 23993 }, 23994 tiktok_us: { 23995 Title: 'TikTok_US', 23996 value: 'TikTok_US', 23997 otherValue: [], 23998 isAuthor: true, 23999 isShow: true 24000 }, 24001 tiktok_us_cross: { 24002 Title: 'TikTok_US_Cross', 24003 value: 'TikTok_US_Cross', 24004 otherValue: [], 24005 isAuthor: true, 24006 isShow: true 24007 }, 24008 woocommerce: { 24009 Title: 'Woocommerce', 24010 value: 'woocommerce', 24011 otherValue: [], 24012 isAuthor: true, 24013 isShow: true 24014 }, 24015 ebay: { 24016 Title: 'Ebay', 24017 value: 'ebay', 24018 otherValue: [], 24019 isAuthor: true, 24020 isShow: true 24021 }, 24022 api: { 24023 Title: 'API', 24024 value: 'api', 24025 otherValue: ['CJ API', 'cj api'], 24026 isAuthor: true, 24027 isShow: true 24028 }, 24029 etsy: { 24030 Title: 'Etsy', 24031 value: 'etsy', 24032 otherValue: [], 24033 isAuthor: true, 24034 isShow: true 24035 }, 24036 aliexpress: { 24037 Title: 'AliExpress', 24038 value: 'aliexpress', 24039 otherValue: [], 24040 isAuthor: true, 24041 isShow: true 24042 }, 24043 wix: { 24044 Title: 'Wix', 24045 value: 'wix', 24046 otherValue: [], 24047 isAuthor: true, 24048 isShow: true 24049 }, 24050 lazada: { 24051 Title: 'Lazada', 24052 value: 'lazada', 24053 otherValue: [], 24054 isAuthor: false, 24055 isShow: false 24056 }, 24057 shopee: { 24058 Title: 'Shopee', 24059 value: 'shopee', 24060 otherValue: [], 24061 isAuthor: false, 24062 isShow: false 24063 }, 24064 squarespace: { 24065 Title: 'Squarespace', 24066 value: 'squarespace', 24067 otherValue: [], 24068 isAuthor: true, 24069 isShow: true 24070 }, 24071 shoplazza: { 24072 Title: 'Shoplazza', 24073 value: 'shoplazza', 24074 otherValue: [], 24075 isAuthor: true, 24076 isShow: true 24077 }, 24078 magento: { 24079 Title: 'Magento', 24080 value: 'magento', 24081 otherValue: [], 24082 isAuthor: true, 24083 isShow: true 24084 }, 24085 bigcommerce: { 24086 Title: 'Bigcommerce', 24087 value: 'bigcommerce', 24088 otherValue: [], 24089 isAuthor: true, 24090 isShow: true 24091 }, 24092 prestashop: { 24093 Title: 'PrestaShop', 24094 value: 'prestaShop', 24095 otherValue: [], 24096 isAuthor: true, 24097 isShow: true 24098 }, 24099 allvalue: { 24100 Title: 'AllValue', 24101 value: 'allValue', 24102 otherValue: [], 24103 isAuthor: true, 24104 isShow: true 24105 }, 24106 nuvemshop: { 24107 Title: 'Nuvemshop', 24108 value: 'nuvemshop', 24109 otherValue: [], 24110 isAuthor: false, 24111 isShow: false 24112 }, 24113 shipstation: { 24114 Title: 'Shipstation', 24115 value: 'shipstation', 24116 otherValue: [], 24117 isAuthor: true, 24118 isShow: true 24119 }, 24120 mercado: { 24121 Title: 'Mercado', 24122 value: 'mercado', 24123 otherValue: [], 24124 isAuthor: true, 24125 isShow: true 24126 }, 24127 others: { 24128 Title: 'Others', 24129 value: 'others', 24130 otherValue: [], 24131 isAuthor: false, 24132 isShow: false 24133 }, 24134 mabang: { 24135 Title: 'MabangERP', 24136 value: 'mabang', 24137 otherValue: [], 24138 isAuthor: true, 24139 isShow: true 24140 }, 24141 miaoshou: { 24142 Title: '妿ERP', 24143 value: 'miaoshou', 24144 otherValue: [], 24145 isAuthor: true, 24146 isShow: true 24147 } 24148}); 24149 24150/***/ }), 24151 24152/***/ 84445: 24153/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24154 24155"use strict"; 24156/* unused harmony exports preMessage, warning, note, resetWarned, call, warningOnce, noteOnce */ 24157/* eslint-disable no-console */ 24158var warned = {}; 24159var preWarningFns = []; 24160 24161/** 24162 * Pre warning enable you to parse content before console.error. 24163 * Modify to null will prevent warning. 24164 */ 24165var preMessage = function preMessage(fn) { 24166 preWarningFns.push(fn); 24167}; 24168 24169/** 24170 * Warning if condition not match. 24171 * @param valid Condition 24172 * @param message Warning message 24173 * @example 24174 * ```js 24175 * warning(false, 'some error'); // print some error 24176 * warning(true, 'some error'); // print nothing 24177 * warning(1 === 2, 'some error'); // print some error 24178 * ``` 24179 */ 24180function warning(valid, message) { 24181 if (false) // removed by dead control flow
24182{ var finalMessage; } 24183} 24184 24185/** @see Similar to {@link warning} */ 24186function note(valid, message) { 24187 if (false) // removed by dead control flow 24188{ var finalMessage; } 24189} 24190function resetWarned() { 24191 warned = {}; 24192} 24193function call(method, valid, message) { 24194 if (!valid && !warned[message]) { 24195 method(false, message); 24196 warned[message] = true; 24197 } 24198} 24199 24200/** @see Same as {@link warning}, but only warn once for the same message */ 24201function warningOnce(valid, message) { 24202 call(warning, valid, message); 24203} 24204 24205/** @see Same as {@link warning}, but only warn once for the same message */ 24206function noteOnce(valid, message) { 24207 call(note, valid, message); 24208} 24209warningOnce.preMessage = preMessage; 24210warningOnce.resetWarned = resetWarned; 24211warningOnce.noteOnce = noteOnce; 24212/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (warningOnce))); 24213 24214/***/ }), 24215 24216/***/ 84873: 24217/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24218 24219"use strict"; 24220/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24221/* harmony export */ W: () => (/* reexport safe */ js_cookie__WEBPACK_IMPORTED_MODULE_0__.A) 24222/* harmony export */ }); 24223/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3478); 24224/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 24225var __assign = undefined && undefined.__assign || function () { 24226 __assign = Object.assign || function (t) { 24227 for (var s, i = 1, n = arguments.length; i < n; i++) { 24228 s = arguments[i]; 24229 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 24230 } 24231 return t; 24232 }; 24233 return __assign.apply(this, arguments); 24234}; 24235 24236 24237js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set = function (set) { 24238 return function (key, value, options) { 24239 if (options === void 0) { 24240 options = {}; 24241 } 24242 var _options = __assign({ 24243 path: '/', 24244 domain: (0,___WEBPACK_IMPORTED_MODULE_1__/* .getTopDomain */ .SR)(), 24245 expires: 3 24246 }, options); 24247 return set.apply(this, [key, value, _options]); 24248 }; 24249}(js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set); 24250js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.remove = function (remove) { 24251 return function (key, options) { 24252 if (options === void 0) { 24253 options = {}; 24254 } 24255 var _options = __assign({ 24256 path: '/', 24257 domain: (0,___WEBPACK_IMPORTED_MODULE_1__/* .getTopDomain */ .SR)(), 24258 expires: -1 24259 }, options); 24260 return remove.apply(this, [key, _options]); 24261 }; 24262}(js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.remove); 24263 24264 24265/***/ }), 24266 24267/***/ 84963: 24268/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24269 24270"use strict"; 24271/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24272/* harmony export */ F: () => (/* binding */ cjHref) 24273/* harmony export */ }); 24274/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 24275 24276var cjHref = function cjHref(href, host) { 24277 var _a; 24278 if (href.indexOf('http') > -1 || href == '#') return href; 24279 var domain = host ? (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .getTopDomain */ .SR)(host) : (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .getTopDomain */ .SR)(); 24280 var cjTestDomain = 'http://www.cjdropshipping.offline.pre.com'; 24281 var todo = { 24282 localhost: cjTestDomain, 24283 '.pre.com': cjTestDomain, 24284 '.pre.cn': cjTestDomain, 24285 '.cjdropshipping.com': 'https://www.cjdropshipping.com', 24286 '.cjdropshipping.cn': 'https://app.cjdropshipping.cn', 24287 '.cj.com': cjTestDomain 24288 }; 24289 if (domain.indexOf('localhost') > -1) domain = 'localhost'; 24290 var centerText = '/'; 24291 if (href.startsWith('/')) centerText = ''; 24292 return ((_a = todo[domain]) !== null && _a !== void 0 ? _a : '') + centerText + href; 24293}; 24294 24295/***/ }), 24296 24297/***/ 85086: 24298/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24299 24300"use strict"; 24301/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24302/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24303/* harmony export */ }); 24304/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 24305/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24306 24307var TriggerContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); 24308/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TriggerContext); 24309 24310/***/ }), 24311 24312/***/ 86284: 24313/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24314 24315"use strict"; 24316/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24317/* harmony export */ A: () => (/* binding */ _arrayLikeToArray) 24318/* harmony export */ }); 24319function _arrayLikeToArray(r, a) { 24320 (null == a || a > r.length) && (a = r.length); 24321 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; 24322 return n; 24323} 24324 24325 24326/***/ }), 24327 24328/***/ 86403: 24329/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 24330 24331var trimmedEndIndex = __webpack_require__(62945); 24332 24333/** Used to match leading whitespace. */ 24334var reTrimStart = /^\s+/; 24335 24336/** 24337 * The base implementation of `_.trim`. 24338 * 24339 * @private 24340 * @param {string} string The string to trim. 24341 * @returns {string} Returns the trimmed string. 24342 */ 24343function baseTrim(string) { 24344 return string
24345 ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') 24346 : string; 24347} 24348 24349module.exports = baseTrim; 24350 24351 24352/***/ }), 24353 24354/***/ 86488: 24355/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24356 24357"use strict"; 24358/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24359/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24360/* harmony export */ }); 24361/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23294); 24362/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93607); 24363 24364 24365 24366/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_Tooltip__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A); 24367 24368/***/ }), 24369 24370/***/ 86597: 24371/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24372 24373"use strict"; 24374/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24375/* harmony export */ A: () => (/* binding */ useSyncState) 24376/* harmony export */ }); 24377/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 24378/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24379/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24380/* harmony import */ var _useEvent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9449); 24381 24382 24383 24384/** 24385 * Same as React.useState but will always get latest state. 24386 * This is useful when React merge multiple state updates into one. 24387 * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React. 24388 */ 24389function useSyncState(defaultValue) { 24390 var _React$useReducer = react__WEBPACK_IMPORTED_MODULE_1__.useReducer(function (x) { 24391 return x + 1; 24392 }, 0), 24393 _React$useReducer2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useReducer, 2), 24394 forceUpdate = _React$useReducer2[1]; 24395 var currentValueRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(defaultValue); 24396 var getValue = (0,_useEvent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(function () { 24397 return currentValueRef.current; 24398 }); 24399 var setValue = (0,_useEvent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(function (updater) { 24400 currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater; 24401 forceUpdate(); 24402 }); 24403 return [getValue, setValue]; 24404} 24405 24406/***/ }), 24407 24408/***/ 87379: 24409/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 24410 24411var Symbol = __webpack_require__(65650), 24412 getRawTag = __webpack_require__(8870), 24413 objectToString = __webpack_require__(29005); 24414 24415/** `Object#toString` result references. */ 24416var nullTag = '[object Null]', 24417 undefinedTag = '[object Undefined]'; 24418 24419/** Built-in value references. */ 24420var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 24421 24422/** 24423 * The base implementation of `getTag` without fallbacks for buggy environments. 24424 * 24425 * @private 24426 * @param {*} value The value to query. 24427 * @returns {string} Returns the `toStringTag`. 24428 */ 24429function baseGetTag(value) { 24430 if (value == null) { 24431 return value === undefined ? undefinedTag : nullTag; 24432 } 24433 return (symToStringTag && symToStringTag in Object(value)) 24434 ? getRawTag(value) 24435 : objectToString(value); 24436} 24437 24438module.exports = baseGetTag; 24439 24440 24441/***/ }), 24442 24443/***/ 89575: 24444/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24445 24446"use strict"; 24447/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24448/* harmony export */ A: () => (/* binding */ _extends) 24449/* harmony export */ }); 24450function _extends() { 24451 return _extends = Object.assign ? Object.assign.bind() : function (n) { 24452 for (var e = 1; e < arguments.length; e++) { 24453 var t = arguments[e]; 24454 for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); 24455 } 24456 return n; 24457 }, _extends.apply(null, arguments); 24458} 24459 24460 24461/***/ }), 24462 24463/***/ 89614: 24464/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24465 24466"use strict"; 24467/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24468/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24469/* harmony export */ }); 24470/* unused harmony export genCSSMotion */ 24471/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24586); 24472/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 24473/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 24474/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17545); 24475/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 24476/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 24477/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28299); 24478/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19284); 24479/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15442); 24480/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__); 24481/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(74568); 24482/* harmony import */ var _DomWrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(40484); 24483/* harmony import */ var _hooks_useStatus__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(76293); 24484/* harmony import */ var _hooks_useStepQueue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(78422); 24485/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(45480); 24486/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(73688); 24487 24488 24489 24490 24491/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */ 24492 24493 24494 24495 24496 24497 24498 24499 24500 24501 24502 24503/** 24504 * `transitionSupport` is used for none transition test case. 24505 * Default we use browser transition event support check. 24506 */ 24507function genCSSMotion(config) { 24508 var transitionSupport = config; 24509 if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(config) === 'object') { 24510 transitionSupport = config.transitionSupport; 24511 } 24512 function isSupportTransition(props, contextMotion) { 24513 return !!(props.motionName && transitionSupport && contextMotion !== false); 24514 } 24515 var CSSMotion = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.forwardRef(function (props, ref) { 24516 var _props$visible = props.visible, 24517 visible = _props$visible === void 0 ? true : _props$visible, 24518 _props$removeOnLeave = props.removeOnLeave, 24519 removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave, 24520 forceRender = props.forceRender, 24521 children = props.children, 24522 motionName = props.motionName, 24523 leavedClassName = props.leavedClassName, 24524 eventProps = props.eventProps; 24525 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_7__.useContext(_context__WEBPACK_IMPORTED_MODULE_8__/* .Context */ .o), 24526 contextMotion = _React$useContext.motion; 24527 var supportMotion = isSupportTransition(props, contextMotion); 24528 24529 // Ref to the react node, it may be a HTMLElement 24530 var nodeRef = (0,react__WEBPACK_IMPORTED_MODULE_7__.useRef)(); 24531 // Ref to the dom wrapper in case ref can not pass to HTMLElement 24532 var wrapperNodeRef = (0,react__WEBPACK_IMPORTED_MODULE_7__.useRef)(); 24533 function getDomElement() {
24534 try { 24535 // Here we're avoiding call for findDOMNode since it's deprecated 24536 // in strict mode. We're calling it only when node ref is not 24537 // an instance of DOM HTMLElement. Otherwise use 24538 // findDOMNode as a final resort 24539 return nodeRef.current instanceof HTMLElement ? nodeRef.current : (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Ay)(wrapperNodeRef.current); 24540 } catch (e) { 24541 // Only happen when `motionDeadline` trigger but element removed. 24542 return null; 24543 } 24544 } 24545 var _useStatus = (0,_hooks_useStatus__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(supportMotion, visible, getDomElement, props), 24546 _useStatus2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useStatus, 4), 24547 status = _useStatus2[0], 24548 statusStep = _useStatus2[1], 24549 statusStyle = _useStatus2[2], 24550 mergedVisible = _useStatus2[3]; 24551 24552 // Record whether content has rendered 24553 // Will return null for un-rendered even when `removeOnLeave={false}` 24554 var renderedRef = react__WEBPACK_IMPORTED_MODULE_7__.useRef(mergedVisible); 24555 if (mergedVisible) { 24556 renderedRef.current = true; 24557 } 24558 24559 // ====================== Refs ====================== 24560 var setNodeRef = react__WEBPACK_IMPORTED_MODULE_7__.useCallback(function (node) { 24561 nodeRef.current = node; 24562 (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .fillRef */ .Xf)(ref, node); 24563 }, [ref]); 24564 24565 // ===================== Render ===================== 24566 var motionChildren; 24567 var mergedProps = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, eventProps), {}, { 24568 visible: visible 24569 }); 24570 if (!children) { 24571 // No children 24572 motionChildren = null; 24573 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STATUS_NONE */ .SF) { 24574 // Stable children 24575 if (mergedVisible) { 24576 motionChildren = children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, mergedProps), setNodeRef); 24577 } else if (!removeOnLeave && renderedRef.current && leavedClassName) { 24578 motionChildren = children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, mergedProps), {}, { 24579 className: leavedClassName 24580 }), setNodeRef); 24581 } else if (forceRender || !removeOnLeave && !leavedClassName) { 24582 motionChildren = children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, mergedProps), {}, { 24583 style: { 24584 display: 'none' 24585 } 24586 }), setNodeRef); 24587 } else { 24588 motionChildren = null; 24589 } 24590 } else { 24591 // In motion 24592 var statusSuffix; 24593 if (statusStep === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STEP_PREPARE */ .px) { 24594 statusSuffix = 'prepare'; 24595 } else if ((0,_hooks_useStepQueue__WEBPACK_IMPORTED_MODULE_11__/* .isActive */ .$m)(statusStep)) { 24596 statusSuffix = 'active'; 24597 } else if (statusStep === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STEP_START */ .Mv) { 24598 statusSuffix = 'start'; 24599 } 24600 var motionCls = (0,_util_motion__WEBPACK_IMPORTED_MODULE_13__/* .getTransitionName */ .by)(motionName, "".concat(status, "-").concat(statusSuffix)); 24601 motionChildren = children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, mergedProps), {}, { 24602 className: classnames__WEBPACK_IMPORTED_MODULE_4___default()((0,_util_motion__WEBPACK_IMPORTED_MODULE_13__/* .getTransitionName */ .by)(motionName, status), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, motionCls, motionCls && statusSuffix), motionName, typeof motionName === 'string')), 24603 style: statusStyle 24604 }), setNodeRef); 24605 } 24606 24607 // Auto inject ref if child node not have `ref` props 24608 if ( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.isValidElement(motionChildren) && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .supportRef */ .f3)(motionChildren)) { 24609 var originNodeRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .getNodeRef */ .A9)(motionChildren); 24610 if (!originNodeRef) { 24611 motionChildren = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.cloneElement(motionChildren, {
24612 ref: setNodeRef 24613 }); 24614 } 24615 } 24616 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(_DomWrapper__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A, { 24617 ref: wrapperNodeRef 24618 }, motionChildren); 24619 }); 24620 CSSMotion.displayName = 'CSSMotion'; 24621 return CSSMotion; 24622} 24623/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (genCSSMotion(_util_motion__WEBPACK_IMPORTED_MODULE_13__/* .supportTransition */ .J1)); 24624 24625/***/ }), 24626 24627/***/ 90857: 24628/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24629 24630"use strict"; 24631/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24632/* harmony export */ A: () => (/* binding */ _createSuper) 24633/* harmony export */ }); 24634/* harmony import */ var _getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72715); 24635/* harmony import */ var _isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49105); 24636/* harmony import */ var _possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95309); 24637 24638 24639 24640function _createSuper(t) { 24641 var r = (0,_isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(); 24642 return function () { 24643 var e, 24644 o = (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t); 24645 if (r) { 24646 var s = (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this).constructor; 24647 e = Reflect.construct(o, arguments, s); 24648 } else e = o.apply(this, arguments); 24649 return (0,_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(this, e); 24650 }; 24651} 24652 24653 24654/***/ }), 24655 24656/***/ 92252: 24657/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24658 24659"use strict"; 24660/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24661/* harmony export */ A: () => (/* binding */ useMyCjReactRoute) 24662/* harmony export */ }); 24663/* harmony import */ var _hook_use_is_mycj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71850); 24664/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24665/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24666 24667 24668function useMyCjReactRoute() { 24669 var isNew = (0,_hook_use_is_mycj__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)().isNew; 24670 var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true), 24671 isNewCogs = _a[0], 24672 setIsNewCogs = _a[1]; 24673 var changeRoute = function changeRoute(routeName) { 24674 var route = routeName.replace(/\/mine/, ''); 24675 window.dispatchEvent(new CustomEvent('onUmiChangeRoute', { 24676 detail: route 24677 })); 24678 }; 24679 var viewCogs = function viewCogs(childMenu) { 24680 window.addEventListener('viewcogs', function (e) { 24681 setIsNewCogs(e.detail); 24682 console.log(childMenu.isNew, 'childMenu.isNew'); 24683 }); 24684 }; 24685 var isMyCjRoute = function isMyCjRoute(route) { 24686 return (route === null || route === void 0 ? void 0 : route.indexOf('mine')) > -1; 24687 }; 24688 var canUseNewMyCjRouteJump = function canUseNewMyCjRouteJump(route) { 24689 return isMyCjRoute(route) && isNew; 24690 }; 24691 var getAProps = function getAProps(route) { 24692 if (isMyCjRoute(route) && isNew) { 24693 return { 24694 onClick: function onClick(e) { 24695 e.preventDefault(); 24696 changeRoute(route); 24697 } 24698 }; 24699 } 24700 return {}; 24701 }; 24702 return { 24703 changeRoute: changeRoute, 24704 getAProps: getAProps, 24705 canUseNewMyCjRouteJump: canUseNewMyCjRouteJump, 24706 viewCogs: viewCogs, 24707 isNewCogs: isNewCogs 24708 }; 24709} 24710 24711/***/ }), 24712 24713/***/ 92513: 24714/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24715 24716"use strict"; 24717/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24718/* harmony export */ p: () => (/* binding */ getAxios), 24719/* harmony export */ q: () => (/* binding */ useAxios) 24720/* harmony export */ }); 24721/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77427); 24722/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24723/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24724 24725 24726var getAxios = function getAxios(token, getDomainByUrl) { 24727 if (token === void 0) { 24728 token = ''; 24729 } 24730 return (0,_common_request__WEBPACK_IMPORTED_MODULE_0__/* .createInstance */ .Q)(token, getDomainByUrl); 24731}; 24732var useAxios = function useAxios(getDomainByUrl) { 24733 return (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () { 24734 return (0,_common_request__WEBPACK_IMPORTED_MODULE_0__/* .createInstance */ .Q)('', getDomainByUrl); 24735 }, []); 24736}; 24737 24738/***/ }), 24739 24740/***/ 92575: 24741/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24742 24743"use strict"; 24744/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24745/* harmony export */ A: () => (/* binding */ useIsAiChat) 24746/* harmony export */ }); 24747/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 24748 24749function hashCode(str) { 24750 var hash = 0; 24751 for (var i = 0; i < str.length; i++) { 24752 var _char = str.charCodeAt(i); 24753 hash = (hash << 5) - hash + _char | 0; 24754 } 24755 return Math.abs(hash); 24756} 24757function useIsAiChat(server_siteCheck) { 24758 var _a, _b, _c, _d, _e, _f, _g; 24759 var siteCheck = typeof window !== 'undefined' ? window === null || window === void 0 ? void 0 : window.siteCheck : server_siteCheck; 24760 var userId = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('userId') || ''; 24761 if (!siteCheck) return false;
24762 if (!((_a = siteCheck.isSite) === null || _a === void 0 ? void 0 : _a.call(siteCheck, 'CJ'))) return false; 24763 if (((_b = siteCheck.isShow) === null || _b === void 0 ? void 0 : _b.call(siteCheck, 'use-old-chat')) === true) return false; 24764 if (((_c = siteCheck.isShow) === null || _c === void 0 ? void 0 : _c.call(siteCheck, 'use-ai-chat-full-user')) === true) return true; 24765 var aiChatUsers = ((_d = siteCheck.data) === null || _d === void 0 ? void 0 : _d.call(siteCheck, 'ai-chat-users')) || []; 24766 if (aiChatUsers.length > 0) { 24767 var customerNo = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('num') || ''; 24768 if (customerNo && aiChatUsers.includes(customerNo)) { 24769 return true; 24770 } 24771 } 24772 var useHash = ((_e = siteCheck.isShow) === null || _e === void 0 ? void 0 : _e.call(siteCheck, 'ai-chat-use-hash')) === true; 24773 if (!userId || !useHash) return false; 24774 var threshold = (_g = (_f = siteCheck.data) === null || _f === void 0 ? void 0 : _f.call(siteCheck, 'ai-chat-hash-threshold')) !== null && _g !== void 0 ? _g : 5; 24775 var level = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('moneyLevelType'); 24776 if (!level) return false; 24777 if (level && Number(level) < 2) { 24778 return hashCode(String(userId)) % 100 < threshold; 24779 } 24780 return false; 24781} 24782 24783/***/ }), 24784 24785/***/ 93584: 24786/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24787 24788"use strict"; 24789/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24790/* harmony export */ D4: () => (/* binding */ decode), 24791/* harmony export */ lF: () => (/* binding */ encode), 24792/* harmony export */ o4: () => (/* binding */ gBase64) 24793/* harmony export */ }); 24794/* unused harmony exports version, VERSION, atob, atobPolyfill, btoa, btoaPolyfill, fromBase64, toBase64, utob, encodeURI, encodeURL, btou, isValid, fromUint8Array, toUint8Array, extendString, extendUint8Array, extendBuiltins */ 24795/** 24796 * base64.ts 24797 * 24798 * Licensed under the BSD 3-Clause License. 24799 * http://opensource.org/licenses/BSD-3-Clause 24800 * 24801 * References: 24802 * http://en.wikipedia.org/wiki/Base64 24803 * 24804 * @author Dan Kogai (https://github.com/dankogai) 24805 */ 24806const version = '3.7.7'; 24807/** 24808 * @deprecated use lowercase `version`. 24809 */ 24810const VERSION = version; 24811const _hasBuffer = typeof Buffer === 'function'; 24812const _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; 24813const _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; 24814const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; 24815const b64chs = Array.prototype.slice.call(b64ch); 24816const b64tab = ((a) => { 24817 let tab = {}; 24818 a.forEach((c, i) => tab[c] = i); 24819 return tab; 24820})(b64chs); 24821const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; 24822const _fromCC = String.fromCharCode.bind(String); 24823const _U8Afrom = typeof Uint8Array.from === 'function' 24824 ? Uint8Array.from.bind(Uint8Array) 24825 : (it) => new Uint8Array(Array.prototype.slice.call(it, 0)); 24826const _mkUriSafe = (src) => src 24827 .replace(/=/g, '').replace(/[+\/]/g, (m0) => m0 == '+' ? '-' : '_'); 24828const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ''); 24829/** 24830 * polyfill version of `btoa` 24831 */ 24832const btoaPolyfill = (bin) => { 24833 // console.log('polyfilled'); 24834 let u32, c0, c1, c2, asc = ''; 24835 const pad = bin.length % 3; 24836 for (let i = 0; i < bin.length;) { 24837 if ((c0 = bin.charCodeAt(i++)) > 255 || 24838 (c1 = bin.charCodeAt(i++)) > 255 || 24839 (c2 = bin.charCodeAt(i++)) > 255) 24840 throw new TypeError('invalid character found'); 24841 u32 = (c0 << 16) | (c1 << 8) | c2; 24842 asc += b64chs[u32 >> 18 & 63] 24843 + b64chs[u32 >> 12 & 63] 24844 + b64chs[u32 >> 6 & 63] 24845 + b64chs[u32 & 63]; 24846 } 24847 return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; 24848}; 24849/** 24850 * does what `window.btoa` of web browsers do. 24851 * @param {String} bin binary string 24852 * @returns {string} Base64-encoded string 24853 */ 24854const _btoa = typeof btoa === 'function' ? (bin) => btoa(bin) 24855 : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64') 24856 : btoaPolyfill; 24857const _fromUint8Array = _hasBuffer 24858 ? (u8a) => Buffer.from(u8a).toString('base64') 24859 : (u8a) => { 24860 // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 24861 const maxargs = 0x1000; 24862 let strs = []; 24863 for (let i = 0, l = u8a.length; i < l; i += maxargs) { 24864 strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); 24865 } 24866 return _btoa(strs.join('')); 24867 }; 24868/** 24869 * converts a Uint8Array to a Base64 string. 24870 * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 24871 * @returns {string} Base64 string 24872 */ 24873const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); 24874// This trick is found broken https://github.com/dankogai/js-base64/issues/130 24875// const utob = (src: string) => unescape(encodeURIComponent(src)); 24876// reverting good old fationed regexp 24877const cb_utob = (c) => { 24878 if (c.length < 2) {
vendor: 4,637 bytes, lines 24879-25007
24879 var cc = c.charCodeAt(0); 24880 return cc < 0x80 ? c 24881 : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) 24882 + _fromCC(0x80 | (cc & 0x3f))) 24883 : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) 24884 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 24885 + _fromCC(0x80 | (cc & 0x3f))); 24886 } 24887 else { 24888 var cc = 0x10000 24889 + (c.charCodeAt(0) - 0xD800) * 0x400 24890 + (c.charCodeAt(1) - 0xDC00); 24891 return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) 24892 + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) 24893 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 24894 + _fromCC(0x80 | (cc & 0x3f))); 24895 } 24896}; 24897const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; 24898/** 24899 * @deprecated should have been internal use only. 24900 * @param {string} src UTF-8 string 24901 * @returns {string} UTF-16 string 24902 */ 24903const utob = (u) => u.replace(re_utob, cb_utob); 24904// 24905const _encode = _hasBuffer 24906 ? (s) => Buffer.from(s, 'utf8').toString('base64') 24907 : _TE 24908 ? (s) => _fromUint8Array(_TE.encode(s)) 24909 : (s) => _btoa(utob(s)); 24910/** 24911 * converts a UTF-8-encoded string to a Base64 string. 24912 * @param {boolean} [urlsafe] if `true` make the result URL-safe 24913 * @returns {string} Base64 string 24914 */ 24915const encode = (src, urlsafe = false) => urlsafe 24916 ? _mkUriSafe(_encode(src)) 24917 : _encode(src); 24918/** 24919 * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. 24920 * @returns {string} Base64 string 24921 */ 24922const encodeURI = (src) => encode(src, true); 24923// This trick is found broken https://github.com/dankogai/js-base64/issues/130 24924// const btou = (src: string) => decodeURIComponent(escape(src)); 24925// reverting good old fationed regexp 24926const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; 24927const cb_btou = (cccc) => { 24928 switch (cccc.length) { 24929 case 4: 24930 var cp = ((0x07 & cccc.charCodeAt(0)) << 18) 24931 | ((0x3f & cccc.charCodeAt(1)) << 12) 24932 | ((0x3f & cccc.charCodeAt(2)) << 6) 24933 | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; 24934 return (_fromCC((offset >>> 10) + 0xD800) 24935 + _fromCC((offset & 0x3FF) + 0xDC00)); 24936 case 3: 24937 return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) 24938 | ((0x3f & cccc.charCodeAt(1)) << 6) 24939 | (0x3f & cccc.charCodeAt(2))); 24940 default: 24941 return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) 24942 | (0x3f & cccc.charCodeAt(1))); 24943 } 24944}; 24945/** 24946 * @deprecated should have been internal use only. 24947 * @param {string} src UTF-16 string 24948 * @returns {string} UTF-8 string 24949 */ 24950const btou = (b) => b.replace(re_btou, cb_btou); 24951/** 24952 * polyfill version of `atob` 24953 */ 24954const atobPolyfill = (asc) => { 24955 // console.log('polyfilled'); 24956 asc = asc.replace(/\s+/g, ''); 24957 if (!b64re.test(asc)) 24958 throw new TypeError('malformed base64.'); 24959 asc += '=='.slice(2 - (asc.length & 3)); 24960 let u24, bin = '', r1, r2; 24961 for (let i = 0; i < asc.length;) { 24962 u24 = b64tab[asc.charAt(i++)] << 18 24963 | b64tab[asc.charAt(i++)] << 12 24964 | (r1 = b64tab[asc.charAt(i++)]) << 6 24965 | (r2 = b64tab[asc.charAt(i++)]); 24966 bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) 24967 : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) 24968 : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); 24969 } 24970 return bin; 24971}; 24972/** 24973 * does what `window.atob` of web browsers do. 24974 * @param {String} asc Base64-encoded string 24975 * @returns {string} binary string 24976 */ 24977const _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc)) 24978 : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary') 24979 : atobPolyfill; 24980// 24981const _toUint8Array = _hasBuffer 24982 ? (a) => _U8Afrom(Buffer.from(a, 'base64')) 24983 : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0))); 24984/** 24985 * converts a Base64 string to a Uint8Array. 24986 */ 24987const toUint8Array = (a) => _toUint8Array(_unURI(a)); 24988// 24989const _decode = _hasBuffer 24990 ? (a) => Buffer.from(a, 'base64').toString('utf8') 24991 : _TD 24992 ? (a) => _TD.decode(_toUint8Array(a)) 24993 : (a) => btou(_atob(a)); 24994const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/')); 24995/** 24996 * converts a Base64 string to a UTF-8 string. 24997 * @param {String} src Base64 string. Both normal and URL-safe are supported 24998 * @returns {string} UTF-8 string 24999 */ 25000const decode = (src) => _decode(_unURI(src)); 25001/** 25002 * check if a value is a valid Base64 string 25003 * @param {String} src a value to check 25004 */ 25005const isValid = (src) => { 25006 if (typeof src !== 'string') 25007 return false;
25008 const s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); 25009 return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); 25010}; 25011// 25012const _noEnum = (v) => { 25013 return { 25014 value: v, enumerable: false, writable: true, configurable: true 25015 }; 25016}; 25017/** 25018 * extend String.prototype with relevant methods 25019 */ 25020const extendString = function () { 25021 const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body)); 25022 _add('fromBase64', function () { return decode(this); }); 25023 _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); 25024 _add('toBase64URI', function () { return encode(this, true); }); 25025 _add('toBase64URL', function () { return encode(this, true); }); 25026 _add('toUint8Array', function () { return toUint8Array(this); }); 25027}; 25028/** 25029 * extend Uint8Array.prototype with relevant methods 25030 */ 25031const extendUint8Array = function () { 25032 const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); 25033 _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); 25034 _add('toBase64URI', function () { return fromUint8Array(this, true); }); 25035 _add('toBase64URL', function () { return fromUint8Array(this, true); }); 25036}; 25037/** 25038 * extend Builtin prototypes with relevant methods 25039 */ 25040const extendBuiltins = () => { 25041 extendString(); 25042 extendUint8Array(); 25043}; 25044const gBase64 = { 25045 version: version, 25046 VERSION: VERSION, 25047 atob: _atob, 25048 atobPolyfill: atobPolyfill, 25049 btoa: _btoa, 25050 btoaPolyfill: btoaPolyfill, 25051 fromBase64: decode, 25052 toBase64: encode, 25053 encode: encode, 25054 encodeURI: encodeURI, 25055 encodeURL: encodeURI, 25056 utob: utob, 25057 btou: btou, 25058 decode: decode, 25059 isValid: isValid, 25060 fromUint8Array: fromUint8Array, 25061 toUint8Array: toUint8Array, 25062 extendString: extendString, 25063 extendUint8Array: extendUint8Array, 25064 extendBuiltins: extendBuiltins 25065}; 25066// makecjs:CUT // 25067 25068 25069 25070 25071 25072 25073 25074 25075 25076 25077 25078 25079 25080 25081 25082 25083 25084 25085 25086 25087// and finally, 25088 25089 25090 25091/***/ }), 25092 25093/***/ 93607: 25094/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25095 25096"use strict"; 25097/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25098/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25099/* harmony export */ }); 25100/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 25101/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 25102/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39850); 25103/* harmony import */ var _rc_component_trigger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(78977); 25104/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 25105/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 25106/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15442); 25107/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__); 25108/* harmony import */ var _placements__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46538); 25109/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23294); 25110/* harmony import */ var rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(75476); 25111 25112 25113 25114var _excluded = ["overlayClassName", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle", "prefixCls", "children", "onVisibleChange", "afterVisibleChange", "transitionName", "animation", "motion", "placement", "align", "destroyTooltipOnHide", "defaultVisible", "getTooltipContainer", "overlayInnerStyle", "arrowContent", "overlay", "id", "showArrow", "classNames", "styles"]; 25115 25116 25117 25118 25119 25120 25121 25122var Tooltip = function Tooltip(props, ref) { 25123 var overlayClassName = props.overlayClassName, 25124 _props$trigger = props.trigger, 25125 trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger, 25126 _props$mouseEnterDela = props.mouseEnterDelay, 25127 mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela, 25128 _props$mouseLeaveDela = props.mouseLeaveDelay,
25129 mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, 25130 overlayStyle = props.overlayStyle, 25131 _props$prefixCls = props.prefixCls, 25132 prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls, 25133 children = props.children, 25134 onVisibleChange = props.onVisibleChange, 25135 afterVisibleChange = props.afterVisibleChange, 25136 transitionName = props.transitionName, 25137 animation = props.animation, 25138 motion = props.motion, 25139 _props$placement = props.placement, 25140 placement = _props$placement === void 0 ? 'right' : _props$placement, 25141 _props$align = props.align, 25142 align = _props$align === void 0 ? {} : _props$align, 25143 _props$destroyTooltip = props.destroyTooltipOnHide, 25144 destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip, 25145 defaultVisible = props.defaultVisible, 25146 getTooltipContainer = props.getTooltipContainer, 25147 overlayInnerStyle = props.overlayInnerStyle, 25148 arrowContent = props.arrowContent, 25149 overlay = props.overlay, 25150 id = props.id, 25151 _props$showArrow = props.showArrow, 25152 showArrow = _props$showArrow === void 0 ? true : _props$showArrow, 25153 tooltipClassNames = props.classNames, 25154 tooltipStyles = props.styles, 25155 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(props, _excluded); 25156 var mergedId = (0,rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(id); 25157 var triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_5__.useRef)(null); 25158 (0,react__WEBPACK_IMPORTED_MODULE_5__.useImperativeHandle)(ref, function () { 25159 return triggerRef.current; 25160 }); 25161 var extraProps = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, restProps); 25162 if ('visible' in props) { 25163 extraProps.popupVisible = props.visible; 25164 } 25165 var getPopupElement = function getPopupElement() { 25166 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(_Popup__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, { 25167 key: "content", 25168 prefixCls: prefixCls, 25169 id: mergedId, 25170 bodyClassName: tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body, 25171 overlayInnerStyle: (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, overlayInnerStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.body) 25172 }, overlay); 25173 }; 25174 var getChildren = function getChildren() { 25175 var child = react__WEBPACK_IMPORTED_MODULE_5__.Children.only(children); 25176 var originalProps = (child === null || child === void 0 ? void 0 : child.props) || {}; 25177 var childProps = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, originalProps), {}, { 25178 'aria-describedby': overlay ? mergedId : null 25179 }); 25180 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.cloneElement(children, childProps); 25181 }; 25182 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(_rc_component_trigger__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({ 25183 popupClassName: classnames__WEBPACK_IMPORTED_MODULE_4___default()(overlayClassName, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root), 25184 prefixCls: prefixCls, 25185 popup: getPopupElement, 25186 action: trigger, 25187 builtinPlacements: _placements__WEBPACK_IMPORTED_MODULE_6__/* .placements */ .D, 25188 popupPlacement: placement, 25189 ref: triggerRef, 25190 popupAlign: align, 25191 getPopupContainer: getTooltipContainer, 25192 onPopupVisibleChange: onVisibleChange, 25193 afterPopupVisibleChange: afterVisibleChange, 25194 popupTransitionName: transitionName, 25195 popupAnimation: animation, 25196 popupMotion: motion, 25197 defaultPopupVisible: defaultVisible, 25198 autoDestroy: destroyTooltipOnHide, 25199 mouseLeaveDelay: mouseLeaveDelay, 25200 popupStyle: (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, overlayStyle), tooltipStyles === null || tooltipStyles === void 0 ? void 0 : tooltipStyles.root), 25201 mouseEnterDelay: mouseEnterDelay, 25202 arrow: showArrow 25203 }, extraProps), getChildren()); 25204}; 25205/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_5__.forwardRef)(Tooltip)); 25206 25207/***/ }), 25208 25209/***/ 94495: 25210/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 25211 25212var root = __webpack_require__(78942); 25213 25214/** 25215 * Gets the timestamp of the number of milliseconds that have elapsed since 25216 * the Unix epoch (1 January 1970 00:00:00 UTC). 25217 * 25218 * @static 25219 * @memberOf _ 25220 * @since 2.4.0 25221 * @category Date 25222 * @returns {number} Returns the timestamp. 25223 * @example 25224 * 25225 * _.defer(function(stamp) { 25226 * console.log(_.now() - stamp); 25227 * }, _.now()); 25228 * // => Logs the number of milliseconds it took for the deferred invocation. 25229 */ 25230var now = function() { 25231 return root.Date.now(); 25232}; 25233 25234module.exports = now; 25235 25236 25237/***/ }), 25238 25239/***/ 95092: 25240/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25241 25242"use strict"; 25243/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25244/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25245/* harmony export */ }); 25246/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 25247 25248var useIsVip = function useIsVip() { 25249 var isVip = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('vip') == '1'; 25250 return isVip; 25251}; 25252/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useIsVip); 25253 25254/***/ }), 25255 25256/***/ 95309: 25257/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 25258 25259"use strict"; 25260/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25261/* harmony export */ A: () => (/* binding */ _possibleConstructorReturn) 25262/* harmony export */ }); 25263/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 25264/* harmony import */ var _assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2474); 25265 25266 25267function _possibleConstructorReturn(t, e) { 25268 if (e && ("object" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e) || "function" == typeof e)) return e; 25269 if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); 25270 return (0,_assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(t); 25271} 25272 25273 25274/***/ }), 25275 25276/***/ 96488: 25277/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 25278 25279"use strict"; 25280/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25281/* harmony export */ A: () => (/* binding */ _arrayWithHoles) 25282/* harmony export */ }); 25283function _arrayWithHoles(r) { 25284 if (Array.isArray(r)) return r; 25285} 25286 25287 25288/***/ }), 25289 25290/***/ 96551: 25291/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25292 25293"use strict"; 25294/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25295/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25296/* harmony export */ }); 25297/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 25298 common: { 25299 module: { 25300 'mycj-menu': { 25301 'print-on-demand': false, 25302 orders: { 25303 'undelivered-orders': false, 25304 'orders-tracking': false 25305 }, 25306 'store-authorization': { 25307 wed2c: false 25308 }, 25309 'my-cj': { 25310 customization: false, 25311 'my-photography': false, 25312 dashboard: false, 25313 sourcing: false 25314 } 25315 }, 25316 'mycj-header': { 25317 notice: false 25318 }, 25319 header: { 25320 'check-list': false, 25321 'support-center': false, 25322 'user-account': false, 25323 'cart-count': false, 25324 'search-queue': false, 25325 'video-selection': false 25326 }, 25327 'product-video': { 25328 'sell-and-earn': false, 25329 purchase: false, 25330 customize: false 25331 }, 25332 'photography-request': false, 25333 'chat-body': false 25334 } 25335 }, 25336 '/product': { 25337 module: { 25338 productdetail: { 25339 counseling: false, 25340 'photography-request': false, 25341 customize: false, 25342 reviews: false, 25343 'sell-and-earn': false, 25344 design: false, 25345 connect: false 25346 } 25347 } 25348 } 25349}); 25350 25351/***/ }), 25352 25353/***/ 98331: 25354/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25355 25356"use strict"; 25357/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25358/* harmony export */ $: () => (/* binding */ isBodyOverflowing) 25359/* harmony export */ }); 25360/** 25361 * Test usage export. Do not use in your production 25362 */ 25363function isBodyOverflowing() { 25364 return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; 25365} 25366 25367/***/ }), 25368 25369/***/ 99126: 25370/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25371 25372"use strict"; 25373/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25374/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25375/* harmony export */ }); 25376/** 25377 * A collection of shims that provide minimal functionality of the ES6 collections. 25378 * 25379 * These implementations are not meant to be used outside of the ResizeObserver 25380 * modules as they cover only a limited range of use cases. 25381 */ 25382/* eslint-disable require-jsdoc, valid-jsdoc */ 25383var MapShim = (function () { 25384 if (typeof Map !== 'undefined') { 25385 return Map; 25386 } 25387 /** 25388 * Returns index in provided array that matches the specified key. 25389 * 25390 * @param {Array<Array>} arr 25391 * @param {*} key 25392 * @returns {number} 25393 */ 25394 function getIndex(arr, key) { 25395 var result = -1; 25396 arr.some(function (entry, index) { 25397 if (entry[0] === key) { 25398 result = index; 25399 return true; 25400 } 25401 return false; 25402 }); 25403 return result; 25404 } 25405 return /** @class */ (function () { 25406 function class_1() { 25407 this.__entries__ = []; 25408 } 25409 Object.defineProperty(class_1.prototype, "size", { 25410 /** 25411 * @returns {boolean} 25412 */ 25413 get: function () { 25414 return this.__entries__.length; 25415 }, 25416 enumerable: true, 25417 configurable: true 25418 }); 25419 /** 25420 * @param {*} key 25421 * @returns {*} 25422 */ 25423 class_1.prototype.get = function (key) { 25424 var index = getIndex(this.__entries__, key); 25425 var entry = this.__entries__[index]; 25426 return entry && entry[1]; 25427 }; 25428 /** 25429 * @param {*} key 25430 * @param {*} value 25431 * @returns {void} 25432 */ 25433 class_1.prototype.set = function (key, value) { 25434 var index = getIndex(this.__entries__, key); 25435 if (~index) { 25436 this.__entries__[index][1] = value; 25437 } 25438 else { 25439 this.__entries__.push([key, value]); 25440 } 25441 }; 25442 /** 25443 * @param {*} key 25444 * @returns {void} 25445 */ 25446 class_1.prototype.delete = function (key) { 25447 var entries = this.__entries__; 25448 var index = getIndex(entries, key); 25449 if (~index) {
vendor: 1,332 bytes, lines 25450-25490
25450 entries.splice(index, 1); 25451 } 25452 }; 25453 /** 25454 * @param {*} key 25455 * @returns {void} 25456 */ 25457 class_1.prototype.has = function (key) { 25458 return !!~getIndex(this.__entries__, key); 25459 }; 25460 /** 25461 * @returns {void} 25462 */ 25463 class_1.prototype.clear = function () { 25464 this.__entries__.splice(0); 25465 }; 25466 /** 25467 * @param {Function} callback 25468 * @param {*} [ctx=null] 25469 * @returns {void} 25470 */ 25471 class_1.prototype.forEach = function (callback, ctx) { 25472 if (ctx === void 0) { ctx = null; } 25473 for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) { 25474 var entry = _a[_i]; 25475 callback.call(ctx, entry[1], entry[0]); 25476 } 25477 }; 25478 return class_1; 25479 }()); 25480})(); 25481 25482/** 25483 * Detects whether window and document objects are available in current environment. 25484 */ 25485var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; 25486 25487// Returns global object of a current environment. 25488var global$1 = (function () { 25489 if (typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.Math === Math) { 25490 return __webpack_require__.g
vendor: 30,103 bytes, lines 25490-26302
25490; 25491 } 25492 if (typeof self !== 'undefined' && self.Math === Math) { 25493 return self; 25494 } 25495 if (typeof window !== 'undefined' && window.Math === Math) { 25496 return window; 25497 } 25498 // eslint-disable-next-line no-new-func 25499 return Function('return this')(); 25500})(); 25501 25502/** 25503 * A shim for the requestAnimationFrame which falls back to the setTimeout if 25504 * first one is not supported. 25505 * 25506 * @returns {number} Requests' identifier. 25507 */ 25508var requestAnimationFrame$1 = (function () { 25509 if (typeof requestAnimationFrame === 'function') { 25510 // It's required to use a bounded function because IE sometimes throws 25511 // an "Invalid calling object" error if rAF is invoked without the global 25512 // object on the left hand side. 25513 return requestAnimationFrame.bind(global$1); 25514 } 25515 return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); }; 25516})(); 25517 25518// Defines minimum timeout before adding a trailing call. 25519var trailingTimeout = 2; 25520/** 25521 * Creates a wrapper function which ensures that provided callback will be 25522 * invoked only once during the specified delay period. 25523 * 25524 * @param {Function} callback - Function to be invoked after the delay period. 25525 * @param {number} delay - Delay after which to invoke callback. 25526 * @returns {Function} 25527 */ 25528function throttle (callback, delay) { 25529 var leadingCall = false, trailingCall = false, lastCallTime = 0; 25530 /** 25531 * Invokes the original callback function and schedules new invocation if 25532 * the "proxy" was called during current request. 25533 * 25534 * @returns {void} 25535 */ 25536 function resolvePending() { 25537 if (leadingCall) { 25538 leadingCall = false; 25539 callback(); 25540 } 25541 if (trailingCall) { 25542 proxy(); 25543 } 25544 } 25545 /** 25546 * Callback invoked after the specified delay. It will further postpone 25547 * invocation of the original function delegating it to the 25548 * requestAnimationFrame. 25549 * 25550 * @returns {void} 25551 */ 25552 function timeoutCallback() { 25553 requestAnimationFrame$1(resolvePending); 25554 } 25555 /** 25556 * Schedules invocation of the original function. 25557 * 25558 * @returns {void} 25559 */ 25560 function proxy() { 25561 var timeStamp = Date.now(); 25562 if (leadingCall) { 25563 // Reject immediately following calls. 25564 if (timeStamp - lastCallTime < trailingTimeout) { 25565 return; 25566 } 25567 // Schedule new call to be in invoked when the pending one is resolved. 25568 // This is important for "transitions" which never actually start 25569 // immediately so there is a chance that we might miss one if change 25570 // happens amids the pending invocation. 25571 trailingCall = true; 25572 } 25573 else { 25574 leadingCall = true; 25575 trailingCall = false; 25576 setTimeout(timeoutCallback, delay); 25577 } 25578 lastCallTime = timeStamp; 25579 } 25580 return proxy; 25581} 25582 25583// Minimum delay before invoking the update of observers. 25584var REFRESH_DELAY = 20; 25585// A list of substrings of CSS properties used to find transition events that 25586// might affect dimensions of observed elements. 25587var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; 25588// Check if MutationObserver is available. 25589var mutationObserverSupported = typeof MutationObserver !== 'undefined'; 25590/** 25591 * Singleton controller class which handles updates of ResizeObserver instances. 25592 */ 25593var ResizeObserverController = /** @class */ (function () { 25594 /** 25595 * Creates a new instance of ResizeObserverController. 25596 * 25597 * @private 25598 */ 25599 function ResizeObserverController() { 25600 /** 25601 * Indicates whether DOM listeners have been added. 25602 * 25603 * @private {boolean} 25604 */ 25605 this.connected_ = false; 25606 /** 25607 * Tells that controller has subscribed for Mutation Events. 25608 * 25609 * @private {boolean} 25610 */ 25611 this.mutationEventsAdded_ = false; 25612 /** 25613 * Keeps reference to the instance of MutationObserver. 25614 * 25615 * @private {MutationObserver} 25616 */ 25617 this.mutationsObserver_ = null; 25618 /** 25619 * A list of connected observers. 25620 * 25621 * @private {Array<ResizeObserverSPI>} 25622 */ 25623 this.observers_ = []; 25624 this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); 25625 this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); 25626 } 25627 /** 25628 * Adds observer to observers list. 25629 * 25630 * @param {ResizeObserverSPI} observer - Observer to be added. 25631 * @returns {void} 25632 */ 25633 ResizeObserverController.prototype.addObserver = function (observer) { 25634 if (!~this.observers_.indexOf(observer)) { 25635 this.observers_.push(observer); 25636 } 25637 // Add listeners if they haven't been added yet. 25638 if (!this.connected_) { 25639 this.connect_(); 25640 } 25641 }; 25642 /** 25643 * Removes observer from observers list. 25644 * 25645 * @param {ResizeObserverSPI} observer - Observer to be removed. 25646 * @returns {void} 25647 */ 25648 ResizeObserverController.prototype.removeObserver = function (observer) { 25649 var observers = this.observers_; 25650 var index = observers.indexOf(observer); 25651 // Remove observer if it's present in registry. 25652 if (~index) { 25653 observers.splice(index, 1); 25654 } 25655 // Remove listeners if controller has no connected observers. 25656 if (!observers.length && this.connected_) { 25657 this.disconnect_(); 25658 } 25659 }; 25660 /** 25661 * Invokes the update of observers. It will continue running updates insofar 25662 * it detects changes. 25663 * 25664 * @returns {void} 25665 */ 25666 ResizeObserverController.prototype.refresh = function () { 25667 var changesDetected = this.updateObservers_(); 25668 // Continue running updates if changes have been detected as there might 25669 // be future ones caused by CSS transitions. 25670 if (changesDetected) { 25671 this.refresh(); 25672 } 25673 }; 25674 /** 25675 * Updates every observer from observers list and notifies them of queued 25676 * entries. 25677 * 25678 * @private 25679 * @returns {boolean} Returns "true" if any observer has detected changes in 25680 * dimensions of it's elements. 25681 */ 25682 ResizeObserverController.prototype.updateObservers_ = function () { 25683 // Collect observers that have active observations. 25684 var activeObservers = this.observers_.filter(function (observer) { 25685 return observer.gatherActive(), observer.hasActive(); 25686 }); 25687 // Deliver notifications in a separate cycle in order to avoid any 25688 // collisions between observers, e.g. when multiple instances of 25689 // ResizeObserver are tracking the same element and the callback of one 25690 // of them changes content dimensions of the observed target. Sometimes 25691 // this may result in notifications being blocked for the rest of observers. 25692 activeObservers.forEach(function (observer) { return observer.broadcastActive(); }); 25693 return activeObservers.length > 0; 25694 }; 25695 /** 25696 * Initializes DOM listeners. 25697 * 25698 * @private 25699 * @returns {void} 25700 */ 25701 ResizeObserverController.prototype.connect_ = function () { 25702 // Do nothing if running in a non-browser environment or if listeners 25703 // have been already added. 25704 if (!isBrowser || this.connected_) { 25705 return; 25706 } 25707 // Subscription to the "Transitionend" event is used as a workaround for 25708 // delayed transitions. This way it's possible to capture at least the 25709 // final state of an element. 25710 document.addEventListener('transitionend', this.onTransitionEnd_); 25711 window.addEventListener('resize', this.refresh); 25712 if (mutationObserverSupported) { 25713 this.mutationsObserver_ = new MutationObserver(this.refresh); 25714 this.mutationsObserver_.observe(document, { 25715 attributes: true, 25716 childList: true, 25717 characterData: true, 25718 subtree: true 25719 }); 25720 } 25721 else { 25722 document.addEventListener('DOMSubtreeModified', this.refresh); 25723 this.mutationEventsAdded_ = true; 25724 } 25725 this.connected_ = true; 25726 }; 25727 /** 25728 * Removes DOM listeners. 25729 * 25730 * @private 25731 * @returns {void} 25732 */ 25733 ResizeObserverController.prototype.disconnect_ = function () { 25734 // Do nothing if running in a non-browser environment or if listeners 25735 // have been already removed. 25736 if (!isBrowser || !this.connected_) { 25737 return; 25738 } 25739 document.removeEventListener('transitionend', this.onTransitionEnd_); 25740 window.removeEventListener('resize', this.refresh); 25741 if (this.mutationsObserver_) { 25742 this.mutationsObserver_.disconnect(); 25743 } 25744 if (this.mutationEventsAdded_) { 25745 document.removeEventListener('DOMSubtreeModified', this.refresh); 25746 } 25747 this.mutationsObserver_ = null; 25748 this.mutationEventsAdded_ = false; 25749 this.connected_ = false; 25750 }; 25751 /** 25752 * "Transitionend" event handler. 25753 * 25754 * @private 25755 * @param {TransitionEvent} event 25756 * @returns {void} 25757 */ 25758 ResizeObserverController.prototype.onTransitionEnd_ = function (_a) { 25759 var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b; 25760 // Detect whether transition may affect dimensions of an element. 25761 var isReflowProperty = transitionKeys.some(function (key) { 25762 return !!~propertyName.indexOf(key); 25763 }); 25764 if (isReflowProperty) { 25765 this.refresh(); 25766 } 25767 }; 25768 /** 25769 * Returns instance of the ResizeObserverController. 25770 * 25771 * @returns {ResizeObserverController} 25772 */ 25773 ResizeObserverController.getInstance = function () { 25774 if (!this.instance_) { 25775 this.instance_ = new ResizeObserverController(); 25776 } 25777 return this.instance_; 25778 }; 25779 /** 25780 * Holds reference to the controller's instance. 25781 * 25782 * @private {ResizeObserverController} 25783 */ 25784 ResizeObserverController.instance_ = null; 25785 return ResizeObserverController; 25786}()); 25787 25788/** 25789 * Defines non-writable/enumerable properties of the provided target object. 25790 * 25791 * @param {Object} target - Object for which to define properties. 25792 * @param {Object} props - Properties to be defined. 25793 * @returns {Object} Target object. 25794 */ 25795var defineConfigurable = (function (target, props) { 25796 for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) { 25797 var key = _a[_i]; 25798 Object.defineProperty(target, key, { 25799 value: props[key], 25800 enumerable: false, 25801 writable: false, 25802 configurable: true 25803 }); 25804 } 25805 return target; 25806}); 25807 25808/** 25809 * Returns the global object associated with provided element. 25810 * 25811 * @param {Object} target 25812 * @returns {Object} 25813 */ 25814var getWindowOf = (function (target) { 25815 // Assume that the element is an instance of Node, which means that it 25816 // has the "ownerDocument" property from which we can retrieve a 25817 // corresponding global object. 25818 var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; 25819 // Return the local global object if it's not possible extract one from 25820 // provided element. 25821 return ownerGlobal || global$1; 25822}); 25823 25824// Placeholder of an empty content rectangle. 25825var emptyRect = createRectInit(0, 0, 0, 0); 25826/** 25827 * Converts provided string to a number. 25828 * 25829 * @param {number|string} value 25830 * @returns {number} 25831 */ 25832function toFloat(value) { 25833 return parseFloat(value) || 0; 25834} 25835/** 25836 * Extracts borders size from provided styles. 25837 * 25838 * @param {CSSStyleDeclaration} styles 25839 * @param {...string} positions - Borders positions (top, right, ...) 25840 * @returns {number} 25841 */ 25842function getBordersSize(styles) { 25843 var positions = []; 25844 for (var _i = 1; _i < arguments.length; _i++) { 25845 positions[_i - 1] = arguments[_i]; 25846 } 25847 return positions.reduce(function (size, position) { 25848 var value = styles['border-' + position + '-width']; 25849 return size + toFloat(value); 25850 }, 0); 25851} 25852/** 25853 * Extracts paddings sizes from provided styles. 25854 * 25855 * @param {CSSStyleDeclaration} styles 25856 * @returns {Object} Paddings box. 25857 */ 25858function getPaddings(styles) { 25859 var positions = ['top', 'right', 'bottom', 'left']; 25860 var paddings = {}; 25861 for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { 25862 var position = positions_1[_i]; 25863 var value = styles['padding-' + position]; 25864 paddings[position] = toFloat(value); 25865 } 25866 return paddings; 25867} 25868/** 25869 * Calculates content rectangle of provided SVG element. 25870 * 25871 * @param {SVGGraphicsElement} target - Element content rectangle of which needs 25872 * to be calculated. 25873 * @returns {DOMRectInit} 25874 */ 25875function getSVGContentRect(target) { 25876 var bbox = target.getBBox(); 25877 return createRectInit(0, 0, bbox.width, bbox.height); 25878} 25879/** 25880 * Calculates content rectangle of provided HTMLElement. 25881 * 25882 * @param {HTMLElement} target - Element for which to calculate the content rectangle. 25883 * @returns {DOMRectInit} 25884 */ 25885function getHTMLElementContentRect(target) { 25886 // Client width & height properties can't be 25887 // used exclusively as they provide rounded values. 25888 var clientWidth = target.clientWidth, clientHeight = target.clientHeight; 25889 // By this condition we can catch all non-replaced inline, hidden and 25890 // detached elements. Though elements with width & height properties less 25891 // than 0.5 will be discarded as well. 25892 // 25893 // Without it we would need to implement separate methods for each of 25894 // those cases and it's not possible to perform a precise and performance 25895 // effective test for hidden elements. E.g. even jQuery's ':visible' filter 25896 // gives wrong results for elements with width & height less than 0.5. 25897 if (!clientWidth && !clientHeight) { 25898 return emptyRect; 25899 } 25900 var styles = getWindowOf(target).getComputedStyle(target); 25901 var paddings = getPaddings(styles); 25902 var horizPad = paddings.left + paddings.right; 25903 var vertPad = paddings.top + paddings.bottom; 25904 // Computed styles of width & height are being used because they are the 25905 // only dimensions available to JS that contain non-rounded values. It could 25906 // be possible to utilize the getBoundingClientRect if only it's data wasn't 25907 // affected by CSS transformations let alone paddings, borders and scroll bars. 25908 var width = toFloat(styles.width), height = toFloat(styles.height); 25909 // Width & height include paddings and borders when the 'border-box' box 25910 // model is applied (except for IE). 25911 if (styles.boxSizing === 'border-box') { 25912 // Following conditions are required to handle Internet Explorer which 25913 // doesn't include paddings and borders to computed CSS dimensions. 25914 // 25915 // We can say that if CSS dimensions + paddings are equal to the "client" 25916 // properties then it's either IE, and thus we don't need to subtract 25917 // anything, or an element merely doesn't have paddings/borders styles. 25918 if (Math.round(width + horizPad) !== clientWidth) { 25919 width -= getBordersSize(styles, 'left', 'right') + horizPad; 25920 } 25921 if (Math.round(height + vertPad) !== clientHeight) { 25922 height -= getBordersSize(styles, 'top', 'bottom') + vertPad; 25923 } 25924 } 25925 // Following steps can't be applied to the document's root element as its 25926 // client[Width/Height] properties represent viewport area of the window. 25927 // Besides, it's as well not necessary as the <html> itself neither has 25928 // rendered scroll bars nor it can be clipped. 25929 if (!isDocumentElement(target)) { 25930 // In some browsers (only in Firefox, actually) CSS width & height 25931 // include scroll bars size which can be removed at this step as scroll 25932 // bars are the only difference between rounded dimensions + paddings 25933 // and "client" properties, though that is not always true in Chrome. 25934 var vertScrollbar = Math.round(width + horizPad) - clientWidth; 25935 var horizScrollbar = Math.round(height + vertPad) - clientHeight; 25936 // Chrome has a rather weird rounding of "client" properties. 25937 // E.g. for an element with content width of 314.2px it sometimes gives 25938 // the client width of 315px and for the width of 314.7px it may give 25939 // 314px. And it doesn't happen all the time. So just ignore this delta 25940 // as a non-relevant. 25941 if (Math.abs(vertScrollbar) !== 1) { 25942 width -= vertScrollbar; 25943 } 25944 if (Math.abs(horizScrollbar) !== 1) { 25945 height -= horizScrollbar; 25946 } 25947 } 25948 return createRectInit(paddings.left, paddings.top, width, height); 25949} 25950/** 25951 * Checks whether provided element is an instance of the SVGGraphicsElement. 25952 * 25953 * @param {Element} target - Element to be checked. 25954 * @returns {boolean} 25955 */ 25956var isSVGGraphicsElement = (function () { 25957 // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement 25958 // interface. 25959 if (typeof SVGGraphicsElement !== 'undefined') { 25960 return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; }; 25961 } 25962 // If it's so, then check that element is at least an instance of the 25963 // SVGElement and that it has the "getBBox" method. 25964 // eslint-disable-next-line no-extra-parens 25965 return function (target) { return (target instanceof getWindowOf(target).SVGElement && 25966 typeof target.getBBox === 'function'); }; 25967})(); 25968/** 25969 * Checks whether provided element is a document element (<html>). 25970 * 25971 * @param {Element} target - Element to be checked. 25972 * @returns {boolean} 25973 */ 25974function isDocumentElement(target) { 25975 return target === getWindowOf(target).document.documentElement; 25976} 25977/** 25978 * Calculates an appropriate content rectangle for provided html or svg element. 25979 * 25980 * @param {Element} target - Element content rectangle of which needs to be calculated. 25981 * @returns {DOMRectInit} 25982 */ 25983function getContentRect(target) { 25984 if (!isBrowser) { 25985 return emptyRect; 25986 } 25987 if (isSVGGraphicsElement(target)) { 25988 return getSVGContentRect(target); 25989 } 25990 return getHTMLElementContentRect(target); 25991} 25992/** 25993 * Creates rectangle with an interface of the DOMRectReadOnly. 25994 * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly 25995 * 25996 * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions. 25997 * @returns {DOMRectReadOnly} 25998 */ 25999function createReadOnlyRect(_a) { 26000 var x = _a.x, y = _a.y, width = _a.width, height = _a.height; 26001 // If DOMRectReadOnly is available use it as a prototype for the rectangle. 26002 var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object; 26003 var rect = Object.create(Constr.prototype); 26004 // Rectangle's properties are not writable and non-enumerable. 26005 defineConfigurable(rect, { 26006 x: x, y: y, width: width, height: height, 26007 top: y, 26008 right: x + width, 26009 bottom: height + y, 26010 left: x 26011 }); 26012 return rect; 26013} 26014/** 26015 * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates. 26016 * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit 26017 * 26018 * @param {number} x - X coordinate. 26019 * @param {number} y - Y coordinate. 26020 * @param {number} width - Rectangle's width. 26021 * @param {number} height - Rectangle's height. 26022 * @returns {DOMRectInit} 26023 */ 26024function createRectInit(x, y, width, height) { 26025 return { x: x, y: y, width: width, height: height }; 26026} 26027 26028/** 26029 * Class that is responsible for computations of the content rectangle of 26030 * provided DOM element and for keeping track of it's changes. 26031 */ 26032var ResizeObservation = /** @class */ (function () { 26033 /** 26034 * Creates an instance of ResizeObservation. 26035 * 26036 * @param {Element} target - Element to be observed. 26037 */ 26038 function ResizeObservation(target) { 26039 /** 26040 * Broadcasted width of content rectangle. 26041 * 26042 * @type {number} 26043 */ 26044 this.broadcastWidth = 0; 26045 /** 26046 * Broadcasted height of content rectangle. 26047 * 26048 * @type {number} 26049 */ 26050 this.broadcastHeight = 0; 26051 /** 26052 * Reference to the last observed content rectangle. 26053 * 26054 * @private {DOMRectInit} 26055 */ 26056 this.contentRect_ = createRectInit(0, 0, 0, 0); 26057 this.target = target; 26058 } 26059 /** 26060 * Updates content rectangle and tells whether it's width or height properties 26061 * have changed since the last broadcast. 26062 * 26063 * @returns {boolean} 26064 */ 26065 ResizeObservation.prototype.isActive = function () { 26066 var rect = getContentRect(this.target); 26067 this.contentRect_ = rect; 26068 return (rect.width !== this.broadcastWidth || 26069 rect.height !== this.broadcastHeight); 26070 }; 26071 /** 26072 * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data 26073 * from the corresponding properties of the last observed content rectangle. 26074 * 26075 * @returns {DOMRectInit} Last observed content rectangle. 26076 */ 26077 ResizeObservation.prototype.broadcastRect = function () { 26078 var rect = this.contentRect_; 26079 this.broadcastWidth = rect.width; 26080 this.broadcastHeight = rect.height; 26081 return rect; 26082 }; 26083 return ResizeObservation; 26084}()); 26085 26086var ResizeObserverEntry = /** @class */ (function () { 26087 /** 26088 * Creates an instance of ResizeObserverEntry. 26089 * 26090 * @param {Element} target - Element that is being observed. 26091 * @param {DOMRectInit} rectInit - Data of the element's content rectangle. 26092 */ 26093 function ResizeObserverEntry(target, rectInit) { 26094 var contentRect = createReadOnlyRect(rectInit); 26095 // According to the specification following properties are not writable 26096 // and are also not enumerable in the native implementation. 26097 // 26098 // Property accessors are not being used as they'd require to define a 26099 // private WeakMap storage which may cause memory leaks in browsers that 26100 // don't support this type of collections. 26101 defineConfigurable(this, { target: target, contentRect: contentRect }); 26102 } 26103 return ResizeObserverEntry; 26104}()); 26105 26106var ResizeObserverSPI = /** @class */ (function () { 26107 /** 26108 * Creates a new instance of ResizeObserver. 26109 * 26110 * @param {ResizeObserverCallback} callback - Callback function that is invoked 26111 * when one of the observed elements changes it's content dimensions. 26112 * @param {ResizeObserverController} controller - Controller instance which 26113 * is responsible for the updates of observer. 26114 * @param {ResizeObserver} callbackCtx - Reference to the public 26115 * ResizeObserver instance which will be passed to callback function. 26116 */ 26117 function ResizeObserverSPI(callback, controller, callbackCtx) { 26118 /** 26119 * Collection of resize observations that have detected changes in dimensions 26120 * of elements. 26121 * 26122 * @private {Array<ResizeObservation>} 26123 */ 26124 this.activeObservations_ = []; 26125 /** 26126 * Registry of the ResizeObservation instances. 26127 * 26128 * @private {Map<Element, ResizeObservation>} 26129 */ 26130 this.observations_ = new MapShim(); 26131 if (typeof callback !== 'function') { 26132 throw new TypeError('The callback provided as parameter 1 is not a function.'); 26133 } 26134 this.callback_ = callback; 26135 this.controller_ = controller; 26136 this.callbackCtx_ = callbackCtx; 26137 } 26138 /** 26139 * Starts observing provided element. 26140 * 26141 * @param {Element} target - Element to be observed. 26142 * @returns {void} 26143 */ 26144 ResizeObserverSPI.prototype.observe = function (target) { 26145 if (!arguments.length) { 26146 throw new TypeError('1 argument required, but only 0 present.'); 26147 } 26148 // Do nothing if current environment doesn't have the Element interface. 26149 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 26150 return; 26151 } 26152 if (!(target instanceof getWindowOf(target).Element)) { 26153 throw new TypeError('parameter 1 is not of type "Element".'); 26154 } 26155 var observations = this.observations_; 26156 // Do nothing if element is already being observed. 26157 if (observations.has(target)) { 26158 return; 26159 } 26160 observations.set(target, new ResizeObservation(target)); 26161 this.controller_.addObserver(this); 26162 // Force the update of observations. 26163 this.controller_.refresh(); 26164 }; 26165 /** 26166 * Stops observing provided element. 26167 * 26168 * @param {Element} target - Element to stop observing. 26169 * @returns {void} 26170 */ 26171 ResizeObserverSPI.prototype.unobserve = function (target) { 26172 if (!arguments.length) { 26173 throw new TypeError('1 argument required, but only 0 present.'); 26174 } 26175 // Do nothing if current environment doesn't have the Element interface. 26176 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 26177 return; 26178 } 26179 if (!(target instanceof getWindowOf(target).Element)) { 26180 throw new TypeError('parameter 1 is not of type "Element".'); 26181 } 26182 var observations = this.observations_; 26183 // Do nothing if element is not being observed. 26184 if (!observations.has(target)) { 26185 return; 26186 } 26187 observations.delete(target); 26188 if (!observations.size) { 26189 this.controller_.removeObserver(this); 26190 } 26191 }; 26192 /** 26193 * Stops observing all elements. 26194 * 26195 * @returns {void} 26196 */ 26197 ResizeObserverSPI.prototype.disconnect = function () { 26198 this.clearActive(); 26199 this.observations_.clear(); 26200 this.controller_.removeObserver(this); 26201 }; 26202 /** 26203 * Collects observation instances the associated element of which has changed 26204 * it's content rectangle. 26205 * 26206 * @returns {void} 26207 */ 26208 ResizeObserverSPI.prototype.gatherActive = function () { 26209 var _this = this; 26210 this.clearActive(); 26211 this.observations_.forEach(function (observation) { 26212 if (observation.isActive()) { 26213 _this.activeObservations_.push(observation); 26214 } 26215 }); 26216 }; 26217 /** 26218 * Invokes initial callback function with a list of ResizeObserverEntry 26219 * instances collected from active resize observations. 26220 * 26221 * @returns {void} 26222 */ 26223 ResizeObserverSPI.prototype.broadcastActive = function () { 26224 // Do nothing if observer doesn't have active observations. 26225 if (!this.hasActive()) { 26226 return; 26227 } 26228 var ctx = this.callbackCtx_; 26229 // Create ResizeObserverEntry instance for every active observation. 26230 var entries = this.activeObservations_.map(function (observation) { 26231 return new ResizeObserverEntry(observation.target, observation.broadcastRect()); 26232 }); 26233 this.callback_.call(ctx, entries, ctx); 26234 this.clearActive(); 26235 }; 26236 /** 26237 * Clears the collection of active observations. 26238 * 26239 * @returns {void} 26240 */ 26241 ResizeObserverSPI.prototype.clearActive = function () { 26242 this.activeObservations_.splice(0); 26243 }; 26244 /** 26245 * Tells whether observer has active observations. 26246 * 26247 * @returns {boolean} 26248 */ 26249 ResizeObserverSPI.prototype.hasActive = function () { 26250 return this.activeObservations_.length > 0; 26251 }; 26252 return ResizeObserverSPI; 26253}()); 26254 26255// Registry of internal observers. If WeakMap is not available use current shim 26256// for the Map collection as it has all required methods and because WeakMap 26257// can't be fully polyfilled anyway. 26258var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim(); 26259/** 26260 * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation 26261 * exposing only those methods and properties that are defined in the spec. 26262 */ 26263var ResizeObserver = /** @class */ (function () { 26264 /** 26265 * Creates a new instance of ResizeObserver. 26266 * 26267 * @param {ResizeObserverCallback} callback - Callback that is invoked when 26268 * dimensions of the observed elements change. 26269 */ 26270 function ResizeObserver(callback) { 26271 if (!(this instanceof ResizeObserver)) { 26272 throw new TypeError('Cannot call a class as a function.'); 26273 } 26274 if (!arguments.length) { 26275 throw new TypeError('1 argument required, but only 0 present.'); 26276 } 26277 var controller = ResizeObserverController.getInstance(); 26278 var observer = new ResizeObserverSPI(callback, controller, this); 26279 observers.set(this, observer); 26280 } 26281 return ResizeObserver; 26282}()); 26283// Expose public methods of ResizeObserver. 26284[ 26285 'observe', 26286 'unobserve', 26287 'disconnect' 26288].forEach(function (method) { 26289 ResizeObserver.prototype[method] = function () { 26290 var _a; 26291 return (_a = observers.get(this))[method].apply(_a, arguments); 26292 }; 26293}); 26294 26295var index = (function () { 26296 // Export existing implementation if available. 26297 if (typeof global$1.ResizeObserver !== 'undefined') { 26298 return global$1.ResizeObserver; 26299 } 26300 return ResizeObserver; 26301})(); 26302
vendor: 2,894 bytes, lines 26303-26312
26303/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (index); 26304 26305 26306/***/ }), 26307 26308/***/ 99437: 26309/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 26310 26311/*! For license information please see index.js.LICENSE.txt */ 26312!function(e,t){ true?module.exports=t(__webpack_require__(15442),__webpack_require__(56003)):0}(this,((e,t)=>(()=>{"use strict";var r={320:e=>{var t=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(e){n[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(e){return!1}}()?Object.assign:function(e,a){for(var i,l,u=o(e),s=1;s<arguments.length;s++){for(var c in i=Object(arguments[s]))r.call(i,c)&&(u[c]=i[c]);if(t){l=t(i);for(var f=0;f<l.length;f++)n.call(i,l[f])&&(u[l[f]]=i[l[f]])}}return u}},418:(e,t,r)=>{var n=r(320),o=r(787);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,r=1;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i="function"==typeof Symbol&&Symbol.for,l=i?Symbol.for("react.portal"):60106,u=i?Symbol.for("react.fragment"):60107,s=i?Symbol.for("react.strict_mode"):60108,c=i?Symbol.for("react.profiler"):60114,f=i?Symbol.for("react.provider"):60109,p=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.concurrent_mode"):60111,h=i?Symbol.for("react.forward_ref"):60112,m=i?Symbol.for("react.suspense"):60113,y=i?Symbol.for("react.suspense_list"):60120,v=i?Symbol.for("react.memo"):60115,w=i?Symbol.for("react.lazy"):60116,g=i?Symbol.for("react.block"):60121,b=i?Symbol.for("react.fundamental"):60117,x=i?Symbol.for("react.scope"):60119;function k(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case u:return"Fragment";case l:return"Portal";case c:return"Profiler";case s:return"StrictMode";case m:return"Suspense";case y:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case p:return"Context.Consumer";case f:return"Context.Provider";case h:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case v:return k(e.type);case g:return k(e.render);case w:if(e=1===e._status?e._result:null)return k(e)}return null}
vendor: 17,618 bytes, line 26312
26312var S=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;S.hasOwnProperty("ReactCurrentDispatcher")||(S.ReactCurrentDispatcher={current:null}),S.hasOwnProperty("ReactCurrentBatchConfig")||(S.ReactCurrentBatchConfig={suspense:null});var E={};function C(e,t){for(var r=0|e._threadCount;r<=t;r++)e[r]=e._currentValue2,e._threadCount=r+1}for(var O=new Uint16Array(16),F=0;15>F;F++)O[F]=F+1;O[15]=0;var D=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,_=Object.prototype.hasOwnProperty,N={},I={};function j(e){return!!_.call(I,e)||!_.call(N,e)&&(D.test(e)?I[e]=!0:(N[e]=!0,!1))}function P(e,t,r,n,o,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=n,this.attributeNamespace=o,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=a}var M={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){M[e]=new P(e,0,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];M[t]=new P(t,1,!1,e[1],null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){M[e]=new P(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){M[e]=new P(e,2,!1,e,null,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){M[e]=new P(e,3,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){M[e]=new P(e,3,!0,e,null,!1)})),["capture","download"].forEach((function(e){M[e]=new P(e,4,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){M[e]=new P(e,6,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){M[e]=new P(e,5,!1,e.toLowerCase(),null,!1)}));var R=/[\-:]([a-z])/g;function z(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(R,z);M[t]=new P(t,1,!1,e,null,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(R,z);M[t]=new P(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(R,z);M[t]=new P(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){M[e]=new P(e,1,!1,e.toLowerCase(),null,!1)})),M.xlinkHref=new P("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){M[e]=new P(e,1,!1,e.toLowerCase(),null,!0)}));var T=/["'&<>]/;function L(e){if("boolean"==typeof e||"number"==typeof e)return""+e;e=""+e;var t=T.exec(e);if(t){var r,n="",o=0;for(r=t.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:t=""";break;case 38:t="&";break;case 39:t="'";break;case 60:t="<";break;case 62:t=">";break;default:continue}o!==r&&(n+=e.substring(o,r)),o=r+1,n+=t}e=o!==r?n+e.substring(o,r):n}return e}function V(e,t){var r,n=M.hasOwnProperty(e)?M[e]:null;return(r="style"!==e)&&(r=null!==n?0===n.type:2<e.length&&("o"===e[0]||"O"===e[0])&&("n"===e[1]||"N"===e[1])),r||function(e,t,r,n){if(null==t||function(e,t,r,n){if(null!==r&&0===r.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return null!==r?!r.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e;default:return!1}}(e,t,r))return!0;if(null!==r)switch(r.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(e,t,n)?"":null!==n?(e=n.attributeName,3===(r=n.type)||4===r&&!0===t?e+'=""':(n.sanitizeURL&&(t=""+t),e+'="'+L(t)+'"')):j(e)?e+'="'+L(t)+'"':""}var A="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},W=null,q=null,$=null,H=!1,U=!1,B=null,G=0;function Z(){if(null===W)throw Error(a(321));return W}function X(){if(0<G)throw Error(a(312));return{memoizedState:null,queue:null,next:null}}function Y(){return null===$?null===q?(H=!1,q=$=X()):(H=!0,$=q):null===$.next?(H=!1,$=$.next=X()):(H=!0,$=$.next),$}function J(e,t,r,n){for(;U;)U=!1,G+=1,$=null,r=e(t,n);return q=W=null,G=0,$=B=null,r}function K(e,t){return"function"==typeof t?t(e):t}function Q(e,t,r){if(W=Z(),$=Y(),H){var n=$.queue;if(t=n.dispatch,null!==B&&void 0!==(r=B.get(n))){B.delete(n),n=$.memoizedState;do{n=e(n,r.action),r=r.next}while(null!==r);return $.memoizedState=n,[n,t]}return[$.memoizedState,t]}return e=e===K?"function"==typeof t?t():t:void 0!==r?r(t):t,$.memoizedState=e,e=(e=$.queue={last:null,dispatch:null}).dispatch=ee.bind(null,W,e),[$.memoizedState,e]}function ee(e,t,r){if(!(25>G))throw Error(a(301));if(e===W)if(U=!0,e={action:r,next:null},null===B&&(B=new Map),void 0===(r=B.get(t)))B.set(t,e);else{for(t=r;null!==t.next;)t=t.next;t.next=e}}function te(){}var re=0,ne={readContext:function(e){var t=re;return C(e,t),e[t]},useContext:function(e){Z();var t=re;return C(e,t),e[t]},useMemo:function(e,t){if(W=Z(),t=void 0===t?null:t,null!==($=Y())){var r=$.memoizedState;if(null!==r&&null!==t){e:{var n=r[1];if(null===n)n=!1;else{for(var o=0;o<n.length&&o<t.length;o++)if(!A(t[o],n[o])){n=!1;break e}n=!0}}if(n)return r[0]}}return e=e(),$.memoizedState=[e,t],e},useReducer:Q,useRef:function(e){W=Z();var t=($=Y()).memoizedState;return null===t?(e={current:e},$.memoizedState=e):t},useState:function(e){return Q(K,e)},useLayoutEffect:function(){},useCallback:function(e){return e},useImperativeHandle:te,useEffect:te,useDebugValue:te,useResponder:function(e,t){return{props:t,responder:e}},useDeferredValue:function(e){return Z(),e},useTransition:function(){return Z(),[function(e){e()},!1]}},oe="http://www.w3.org/1999/xhtml";function ae(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}var ie={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},le=n({menuitem:!0},ie),ue={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},se=["Webkit","ms","Moz","O"];Object.keys(ue).forEach((function(e){se.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ue[t]=ue[e]}))}));var ce=/([A-Z])/g,fe=/^ms-/,pe=o.Children.toArray,de=S.ReactCurrentDispatcher,he={listing:!0,pre:!0,textarea:!0},me=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,ye={},ve={},we=Object.prototype.hasOwnProperty,ge={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null,suppressHydrationWarning:null};function be(e,t){if(void 0===e)throw Error(a(152,k(t)||"Component"))}var xe=function(){function e(e,t){o.isValidElement(e)?e.type!==u?e=[e]:(e=e.props.children,e=o.isValidElement(e)?[e]:pe(e)):e=pe(e),e={type:null,domNamespace:oe,children:e,childIndex:0,context:E,footer:""};var r=O[0];if(0===r){var n=O,i=2*(r=n.length);if(!(65536>=i))throw Error(a(304));var l=new Uint16Array(i);for(l.set(n),(O=l)[0]=r+1,n=r;n<i-1;n++)O[n]=n+1;O[i-1]=0}else O[0]=O[r];this.threadID=r,this.stack=[e],this.exhausted=!1,this.currentSelectValue=null,this.previousWasTextNode=!1,this.makeStaticMarkup=t,this.suspenseDepth=0,this.contextIndex=-1,this.contextStack=[],this.contextValueStack=[]}var t=e.prototype;return t.destroy=function(){if(!this.exhausted){this.exhausted=!0,this.clearProviders();var e=this.threadID;O[e]=O[0],O[0]=e}},t.pushProvider=function(e){var t=++this.contextIndex,r=e.type._context,n=this.threadID;C(r,n);var o=r[n];this.contextStack[t]=r,this.contextValueStack[t]=o,r[n]=e.props.value},t.popProvider=function(){var e=this.contextIndex,t=this.contextStack[e],r=this.contextValueStack[e];this.contextStack[e]=null,this.contextValueStack[e]=null,this.contextIndex--,t[this.threadID]=r},t.clearProviders=function(){for(var e=this.contextIndex;0<=e;e--)this.contextStack[e][this.threadID]=this.contextValueStack[e]},t.read=function(e){if(this.exhausted)return null;var t=re;re=this.threadID;var r=de.current;de.current=ne;try{for(var n=[""],o=!1;n[0].length<e;){if(0===this.stack.length){this.exhausted=!0;var i=this.threadID;O[i]=O[0],O[0]=i;break}var l=this.stack[this.stack.length-1];if(o||l.childIndex>=l.children.length){var u=l.footer;if(""!==u&&(this.previousWasTextNode=!1),this.stack.pop(),"select"===l.type)this.currentSelectValue=null;else if(null!=l.type&&null!=l.type.type&&l.type.type.$$typeof===f)this.popProvider(l.type);else if(l.type===m){this.suspenseDepth--;var s=n.pop();if(o){o=!1;var c=l.fallbackFrame;if(!c)throw Error(a(303));this.stack.push(c),n[this.suspenseDepth]+="\x3c!--$!--\x3e";continue}n[this.suspenseDepth]+=s}n[this.suspenseDepth]+=u}else{var p=l.children[l.childIndex++],d="";try{d+=this.render(p,l.context,l.domNamespace)}catch(e){if(null!=e&&"function"==typeof e.then)throw Error(a(294));throw e}n.length<=this.suspenseDepth&&n.push(""),n[this.suspenseDepth]+=d}}return n[0]}finally{de.current=r,re=t}},t.render=function(e,t,r){if("string"==typeof e||"number"==typeof e)return""==(r=""+e)?"":this.makeStaticMarkup?L(r):this.previousWasTextNode?"\x3c!-- --\x3e"+L(r):(this.previousWasTextNode=!0,L(r));if(e=(t=function(e,t,r){function i(o,i){var l=i.prototype&&i.prototype.isReactComponent,u=function(e,t,r,n){if(n&&"object"==typeof(n=e.contextType)&&null!==n)return C(n,r),n[r];if(e=e.contextTypes){for(var o in r={},e)r[o]=t[o];t=r}else t=E;return t}(i,t,r,l),s=[],c=!1,f={isMounted:function(){return!1},enqueueForceUpdate:function(){if(null===s)return null},enqueueReplaceState:function(e,t){c=!0,s=[t]},enqueueSetState:function(e,t){if(null===s)return null;s.push(t)}};if(l){if(l=new i(o.props,u,f),"function"==typeof i.getDerivedStateFromProps){var p=i.getDerivedStateFromProps.call(null,o.props,l.state);null!=p&&(l.state=n({},l.state,p))}}else if(W={},l=i(o.props,u,f),null==(l=J(i,o.props,l,u))||null==l.render)return void be(e=l,i);if(l.props=o.props,l.context=u,l.updater=f,void 0===(f=l.state)&&(l.state=f=null),"function"==typeof l.UNSAFE_componentWillMount||"function"==typeof l.componentWillMount)if("function"==typeof l.componentWillMount&&"function"!=typeof i.getDerivedStateFromProps&&l.componentWillMount(),"function"==typeof l.UNSAFE_componentWillMount&&"function"!=typeof i.getDerivedStateFromProps&&l.UNSAFE_componentWillMount(),s.length){f=s;var d=c;if(s=null,c=!1,d&&1===f.length)l.state=f[0];else{p=d?f[0]:l.state;var h=!0;for(d=d?1:0;d<f.length;d++){var m=f[d];null!=(m="function"==typeof m?m.call(l,p,o.props,u):m)&&(h?(h=!1,p=n({},p,m)):n(p,m))}l.state=p}}else s=null;if(be(e=l.render(),i),"function"==typeof l.getChildContext&&"object"==typeof(o=i.childContextTypes)){var y=l.getChildContext();for(var v in y)if(!(v in o))throw Error(a(108,k(i)||"Unknown",v))}y&&(t=n({},t,y))}for(;o.isValidElement(e);){var l=e,u=l.type;if("function"!=typeof u)break;i(l,u)}return{child:e,context:t}}(e,t,this.threadID)).child,t=t.context,null===e||!1===e)return"";if(!o.isValidElement(e)){if(null!=e&&null!=e.$$typeof){if((r=e.$$typeof)===l)throw Error(a(257));throw Error(a(258,r.toString()))}return e=pe(e),this.stack.push({type:null,domNamespace:r,children:e,childIndex:0,context:t,footer:""}),""}var i=e.type;if("string"==typeof i)return this.renderDOM(e,t,r);switch(i){case s:case d:case c:case y:case u:return e=pe(e.props.children),this.stack.push({type:null,domNamespace:r,children:e,childIndex:0,context:t,footer:""}),"";case m:throw Error(a(294))}if("object"==typeof i&&null!==i)switch(i.$$typeof){case h:W={};var g=i.render(e.props,e.ref);return g=J(i.render,e.props,g,e.ref),g=pe(g),this.stack.push({type:null,domNamespace:r,children:g,childIndex:0,context:t,footer:""}),"";case v:return e=[o.createElement(i.type,n({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:r,children:e,childIndex:0,context:t,footer:""}),"";case f:return r={type:e,domNamespace:r,children:i=pe(e.props.children),childIndex:0,context:t,footer:""},this.pushProvider(e),this.stack.push(r),"";case p:i=e.type,g=e.props;var S=this.threadID;return C(i,S),i=pe(g.children(i[S])),this.stack.push({type:e,domNamespace:r,children:i,childIndex:0,context:t,footer:""}),"";case b:throw Error(a(338));case w:switch(function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i=e.type),i._status){case 1:return e=[o.createElement(i._result,n({ref:e.ref},e.props))],this.stack.push({type:null,domNamespace:r,children:e,childIndex:0,context:t,footer:""}),"";case 2:throw i._result;default:throw Error(a(295))}case x:throw Error(a(343))}throw Error(a(130,null==i?i:typeof i,""))},t.renderDOM=function(e,t,r){var i=e.type.toLowerCase();if(r===oe&&ae(i),!ye.hasOwnProperty(i)){if(!me.test(i))throw Error(a(65,i));ye[i]=!0}var l=e.props;if("input"===i)l=n({type:void 0},l,{defaultChecked:void 0,defaultValue:void 0,value:null!=l.value?l.value:l.defaultValue,checked:null!=l.checked?l.checked:l.defaultChecked});else if("textarea"===i){var u=l.value;if(null==u){u=l.defaultValue;var s=l.children;if(null!=s){if(null!=u)throw Error(a(92));if(Array.isArray(s)){if(!(1>=s.length))throw Error(a(93));s=s[0]}u=""+s}null==u&&(u="")}l=n({},l,{value:void 0,children:""+u})}else if("select"===i)this.currentSelectValue=null!=l.value?l.value:l.defaultValue,l=n({},l,{value:void 0});else if("option"===i){s=this.currentSelectValue;var c=function(e){if(null==e)return e;var t="";return o.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(l.children);if(null!=s){var f=null!=l.value?l.value+"":c;if(u=!1,Array.isArray(s)){for(var p=0;p<s.length;p++)if(""+s[p]===f){u=!0;break}}else u=""+s===f;l=n({selected:void 0,children:void 0},l,{selected:u,children:c})}}if(u=l){if(le[i]&&(null!=u.children||null!=u.dangerouslySetInnerHTML))throw Error(a(137,i,""));if(null!=u.dangerouslySetInnerHTML){if(null!=u.children)throw Error(a(60));if("object"!=typeof u.dangerouslySetInnerHTML||!("__html"in u.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=u.style&&"object"!=typeof u.style)throw Error(a(62,""))}for(b in u=l,s=this.makeStaticMarkup,c=1===this.stack.length,f="<"+e.type,u)if(we.call(u,b)){var d=u[b];if(null!=d){if("style"===b){p=void 0;var h="",m="";for(p in d)if(d.hasOwnProperty(p)){var y=0===p.indexOf("--"),v=d[p];if(null!=v){if(y)var w=p;else if(w=p,ve.hasOwnProperty(w))w=ve[w];else{var g=w.replace(ce,"-$1").toLowerCase().replace(fe,"-ms-");w=ve[w]=g}h+=m+w+":",m=p,h+=y=null==v||"boolean"==typeof v||""===v?"":y||"number"!=typeof v||0===v||ue.hasOwnProperty(m)&&ue[m]?(""+v).trim():v+"px",m=";"}}d=h||null}p=null;e:if(y=i,v=u,-1===y.indexOf("-"))y="string"==typeof v.is;else switch(y){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":y=!1;break e;default:y=!0}y?ge.hasOwnProperty(b)||(p=j(p=b)&&null!=d?p+'="'+L(d)+'"':""):p=V(b,d),p&&(f+=" "+p)}}s||c&&(f+=' data-reactroot=""');var b=f;u="",ie.hasOwnProperty(i)?b+="/>":(b+=">",u="</"+e.type+">");e:{if(null!=(s=l.dangerouslySetInnerHTML)){if(null!=s.__html){s=s.__html;break e}}else if("string"==typeof(s=l.children)||"number"==typeof s){s=L(s);break e}s=null}return null!=s?(l=[],he.hasOwnProperty(i)&&"\n"===s.charAt(0)&&(b+="\n"),b+=s):l=pe(l.children),e=e.type,r=null==r||"http://www.w3.org/1999/xhtml"===r?ae(e):"http://www.w3.org/2000/svg"===r&&"foreignObject"===e?"http://www.w3.org/1999/xhtml":r,this.stack.push({domNamespace:r,type:i,children:l,childIndex:0,context:t,footer
26312:u}),this.previousWasTextNode=!1,b},e}(),ke={renderToString:function(e){e=new xe(e,!1);try{return e.read(1/0)}finally{e.destroy()}},renderToStaticMarkup:function(e){e=new xe(e,!0);try{return e.read(1/0)}finally{e.destroy()}},renderToNodeStream:function(){throw Error(a(207))},renderToStaticNodeStream:function(){throw Error(a(208))},version:"16.14.0"};e.exports=ke.default||ke},90:(e,t,r)=>{e.exports=r(418)},787:t=>{t.exports=e},156:e=>{e.exports=t}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={exports:{}};return r[e](a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{o.r(a),o.d(a,{DynamicComponent:()=>f,mfEvent:()=>e,reactSSRC:()=>b,renderComponent:()=>p,renderHydrate:()=>v,renderNormal:()=>y,renderString:()=>w,setGlobalConfig:()=>c});var e={};o.r(e),o.d(e,{$emit:()=>x,$on:()=>k});var t=o(787),r=o.n(t),n=o(156),i=o.n(n),l=function(){return l=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},l.apply(this,arguments)},u=null,s=null;function c(e,t){u&&s||(u=e,s=t)}var f=function(e){var t,n=function(e){var t=r().useState(!1),n=t[0],o=t[1],a=r().useState(!1),i=a[0],l=a[1];return r().useEffect((function(){if(e.url){var t=document.createElement("script");return t.src=e.url,t.type="text/javascript",t.async=!0,o(!1),l(!1),t.onload=function(){console.log("Dynamic Script Loaded: ".concat(e.url)),o(!0)},t.onerror=function(){console.error("Dynamic Script Error: ".concat(e.url)),o(!1),l(!0)},document.head.appendChild(t),function(){console.log("Dynamic Script Removed: ".concat(e.url)),document.head.removeChild(t)}}}),[e.url]),{ready:n,failed:i}}({url:e.system&&e.system.url}),o=n.ready,a=n.failed;if(!e.system)return e.skeletonNode?e.skeletonNode:r().createElement("h2",null,"Not system specified");if(!o)return e.skeletonNode?e.skeletonNode:r().createElement("h2",null,"Loa
26312ding dynamic script: ",e.system.url);if(a)return e.failedNode?e.failedNode:r().createElement("h2",null,"Failed to load dynamic script: ",e.system.url);var i=r().lazy(function(e,t){var r=this;return function(){return n=r,o=void 0,i=function(){return function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,l])}}}(this,(function(r){switch(r.label){case 0:if(!u||!s)throw new Error("you must use webpack module federation plugin before use dynamic component");return[4,u("default")];case 1:return r.sent(),[4,window[e].init(s.default)];case 2:return r.sent(),[4,window[e].get(t)];case 3:return[2,r.sent()()]}}))},new((a=void 0)||(a=Promise))((function(e,t){function r(e){try{u(i.next(e))}catch(e){t(e)}}function l(e){try{u(i.throw(e))}catch(e){t(e)}}function u(t){var n;t.done?e(t.value):(n=t.value,n instanceof a?n:new a((function(e){e(n)}))).then(r,l)}u((i=i.apply(n,o||[])).next())}));// removed by dead control flow 26313{ var n, o, a, i; }}}(e.system.scope,e.system.module)),c=null!==(t=e.skeletonNode)&&void 0!==t?t:r().createElement("span",null,"load dynamic component");return r().createElement(r().Suspense,{fallback:c},r().createElement(i,l({},e.data)))};function p(e){var t=e.el,n=e.data,o=e.system,a=e.component;if(!t)throw new Error("el is required");var u=function(){return r().createElement(f,{system:o,data:n})};o||(u=function(){return r().createElement(a,l({},n))}),i().render(r().createElement(u,null),document.getElementById(t))}var d=o(90),h=function(){return h=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},h.apply(this,arguments)},m=function(e){return function(t){var n=t.el,o=t.component,a=t.data,i=document.getElementById(n);e(r().createElement(o,h({},a)),i)}},y=m(n.render),v=m(n.hydrate),w=function(e,t){void 0===t&&(t={});var n=new Set,o=(0,d.renderToString)(r().createElement(e,h({},t,{insertCss:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return e.forEach((function(e){return""}))}})));return{html:o,css:n}},g=function(){return g=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},g.apply(this,arguments)},b=function(e){var n=e.Component,o=e.variableName;return function(e){var a=(0,t.useState)(g({},null===window||void 0===window?void 0:window[o])),i=a[0],l=a[1];return(0,t.useEffect)((function(){o&&(null===window||void 0===window?void 0:window[o])?l(window[o]):n.getInitialProps(g({},e)).then((function(e){l(g({},e))}))}),[]),r().createElement(n,g({},i))}},x=function(e,t){var r=new CustomEvent(e,{detail:t,bubbles:!0});window.dispatchEvent(r)},k=function(e,t){window.addEventListener(e,(function(e){t&&t(e.detail)}))}})(),a})())); 26314 26315/***/ }), 26316 26317/***/ 99973: 26318/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 26319 26320"use strict"; 26321/* harmony export */ __webpack_require__.d(__webpack_exports__, { 26322/* harmony export */ _q: () => (/* reexport safe */ _hooks_useEvent__WEBPACK_IMPORTED_MODULE_0__.A) 26323/* harmony export */ }); 26324/* harmony import */ var _hooks_useEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9449); 26325/* harmony import */ var _hooks_useMergedState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64948); 26326/* harmony import */ var _ref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19284); 26327/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53795); 26328/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84445); 26329 26330 26331 26332 26333 26334 26335 26336/***/ }) 26337 26338/******/ }); 26339/************************************************************************/ 26340/******/ // The module cache 26341/******/ var __webpack_module_cache__ = {}; 26342/******/ 26343/******/ // The require function 26344/******/ function __webpack_require__(moduleId) { 26345/******/ // Check if module is in cache 26346/******/ var cachedModule = __webpack_module_cache__[moduleId]; 26347/******/ if (cachedModule !== undefined) { 26348/******/ return cachedModule.exports; 26349/******/ } 26350/******/ // Create a new module (and put it into the cache) 26351/******/ var module = __webpack_module_cache__[moduleId] = { 26352/******/ // no module.id needed 26353/******/ // no module.loaded needed 26354/******/ exports: {} 26355/******/ }; 26356/******/ 26357/******/ // Execute the module function 26358/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 26359/******/ 26360/******/ // Return the exports of the module 26361/******/ return module.exports; 26362/******/ } 26363/******/ 26364/******/ // expose the modules object (__webpack_modules__) 26365/******/ __webpack_require__.m = __webpack_modules__; 26366/******/ 26367/************************************************************************/ 26368/******/ /* webpack/runtime/compat get default export */ 26369/******/ (() => { 26370/******/ // getDefaultExport function for compatibility with non-harmony modules 26371/******/ __webpack_require__.n = (module) => {
vendor: 5,836 bytes, lines 26372-26502
26372/******/ var getter = module && module.__esModule ? 26373/******/ () => (module['default']) : 26374/******/ () => (module); 26375/******/ __webpack_require__.d(getter, { a: getter }); 26376/******/ return getter; 26377/******/ }; 26378/******/ })(); 26379/******/ 26380/******/ /* webpack/runtime/create fake namespace object */ 26381/******/ (() => { 26382/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__); 26383/******/ var leafPrototypes; 26384/******/ // create a fake namespace object 26385/******/ // mode & 1: value is a module id, require it 26386/******/ // mode & 2: merge all properties of value into the ns 26387/******/ // mode & 4: return value when already ns object 26388/******/ // mode & 16: return value when it's Promise-like 26389/******/ // mode & 8|1: behave like require 26390/******/ __webpack_require__.t = function(value, mode) { 26391/******/ if(mode & 1) value = this(value); 26392/******/ if(mode & 8) return value; 26393/******/ if(typeof value === 'object' && value) { 26394/******/ if((mode & 4) && value.__esModule) return value; 26395/******/ if((mode & 16) && typeof value.then === 'function') return value; 26396/******/ } 26397/******/ var ns = Object.create(null); 26398/******/ __webpack_require__.r(ns); 26399/******/ var def = {}; 26400/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)]; 26401/******/ for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) { 26402/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key]))); 26403/******/ } 26404/******/ def['default'] = () => (value); 26405/******/ __webpack_require__.d(ns, def); 26406/******/ return ns; 26407/******/ }; 26408/******/ })(); 26409/******/ 26410/******/ /* webpack/runtime/define property getters */ 26411/******/ (() => { 26412/******/ // define getter functions for harmony exports 26413/******/ __webpack_require__.d = (exports, definition) => { 26414/******/ for(var key in definition) { 26415/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 26416/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 26417/******/ } 26418/******/ } 26419/******/ }; 26420/******/ })(); 26421/******/ 26422/******/ /* webpack/runtime/ensure chunk */ 26423/******/ (() => { 26424/******/ __webpack_require__.f = {}; 26425/******/ // This file contains only the entry chunk. 26426/******/ // The chunk loading function for additional chunks 26427/******/ __webpack_require__.e = (chunkId) => { 26428/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { 26429/******/ __webpack_require__.f[key](chunkId, promises); 26430/******/ return promises; 26431/******/ }, [])); 26432/******/ }; 26433/******/ })(); 26434/******/ 26435/******/ /* webpack/runtime/get javascript chunk filename */ 26436/******/ (() => { 26437/******/ // This function allow to reference async chunks 26438/******/ __webpack_require__.u = (chunkId) => { 26439/******/ // return url for filenames based on template 26440/******/ return "" + chunkId + "." + {"326":"4bc08576","406":"1c8ef3fc","1261":"b693357c","1554":"3e96d156","2440":"3e7d73ab","4639":"5d1f2843","5503":"37fabb60","5579":"52682a8b","5772":"bd672acd","6164":"27d93440","9506":"badb7e25"}[chunkId] + ".js"; 26441/******/ }; 26442/******/ })(); 26443/******/ 26444/******/ /* webpack/runtime/get mini-css chunk filename */ 26445/******/ (() => { 26446/******/ // This function allow to reference async chunks 26447/******/ __webpack_require__.miniCssF = (chunkId) => { 26448/******/ // return url for filenames based on template 26449/******/ return "" + chunkId + "." + {"326":"5a7b3210","2440":"f5b2275a","5579":"2b74cea0","6164":"813fff74"}[chunkId] + ".css"; 26450/******/ }; 26451/******/ })(); 26452/******/ 26453/******/ /* webpack/runtime/global */ 26454/******/ (() => { 26455/******/ __webpack_require__.g = (function() { 26456/******/ if (typeof globalThis === 'object') return globalThis; 26457/******/ try { 26458/******/ return this || new Function('return this')(); 26459/******/ } catch (e) { 26460/******/ if (typeof window === 'object') return window; 26461/******/ } 26462/******/ })(); 26463/******/ })(); 26464/******/ 26465/******/ /* webpack/runtime/hasOwnProperty shorthand */ 26466/******/ (() => { 26467/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 26468/******/ })(); 26469/******/ 26470/******/ /* webpack/runtime/load script */ 26471/******/ (() => { 26472/******/ var inProgress = {}; 26473/******/ var dataWebpackPrefix = "@cckj/mf-mycj-components:"; 26474/******/ // loadScript function to load a script via script tag 26475/******/ __webpack_require__.l = (url, done, key, chunkId) => { 26476/******/ if(inProgress[url]) { inProgress[url].push(done); return; } 26477/******/ var script, needAttach; 26478/******/ if(key !== undefined) { 26479/******/ var scripts = document.getElementsByTagName("script"); 26480/******/ for(var i = 0; i < scripts.length; i++) { 26481/******/ var s = scripts[i]; 26482/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } 26483/******/ } 26484/******/ } 26485/******/ if(!script) { 26486/******/ needAttach = true; 26487/******/ script = document.createElement('script'); 26488/******/ 26489/******/ script.charset = 'utf-8'; 26490/******/ script.timeout = 120; 26491/******/ if (__webpack_require__.nc) { 26492/******/ script.setAttribute("nonce", __webpack_require__.nc); 26493/******/ } 26494/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); 26495/******/ 26496/******/ script.src = url; 26497/******/ } 26498/******/ inProgress[url] = [done]; 26499/******/ var onScriptComplete = (prev, event) => { 26500/******/ // avoid mem leaks in IE. 26501/******/ script.onerror = script.onload = null; 26502/******/ clearTimeout(timeout);
26503/******/ var doneFns = inProgress[url]; 26504/******/ delete inProgress[url]; 26505/******/ script.parentNode && script.parentNode.removeChild(script); 26506/******/ doneFns && doneFns.forEach((fn) => (fn(event))); 26507/******/ if(prev) return prev(event); 26508/******/ } 26509/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); 26510/******/ script.onerror = onScriptComplete.bind(null, script.onerror); 26511/******/ script.onload = onScriptComplete.bind(null, script.onload); 26512/******/ needAttach && document.head.appendChild(script); 26513/******/ }; 26514/******/ })(); 26515/******/ 26516/******/ /* webpack/runtime/make namespace object */ 26517/******/ (() => { 26518/******/ // define __esModule on exports 26519/******/ __webpack_require__.r = (exports) => { 26520/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 26521/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 26522/******/ } 26523/******/ Object.defineProperty(exports, '__esModule', { value: true }); 26524/******/ }; 26525/******/ })(); 26526/******/ 26527/******/ /* webpack/runtime/publicPath */ 26528/******/ (() => { 26529/******/ __webpack_require__.p = "https://sv-resource.oss-accelerate.aliyuncs.com/mf-components-v3/"; 26530/******/ })(); 26531/******/ 26532/******/ /* webpack/runtime/css loading */ 26533/******/ (() => { 26534/******/ if (typeof document === "undefined") return; 26535/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => { 26536/******/ var linkTag = document.createElement("link"); 26537/******/ 26538/******/ linkTag.rel = "stylesheet"; 26539/******/ linkTag.type = "text/css"; 26540/******/ if (__webpack_require__.nc) { 26541/******/ linkTag.nonce = __webpack_require__.nc; 26542/******/ } 26543/******/ var onLinkComplete = (event) => { 26544/******/ // avoid mem leaks. 26545/******/ linkTag.onerror = linkTag.onload = null; 26546/******/ if (event.type === 'load') { 26547/******/ resolve(); 26548/******/ } else { 26549/******/ var errorType = event && event.type; 26550/******/ var realHref = event && event.target && event.target.href || fullhref; 26551/******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + errorType + ": " + realHref + ")"); 26552/******/ err.name = "ChunkLoadError"; 26553/******/ err.code = "CSS_CHUNK_LOAD_FAILED"; 26554/******/ err.type = errorType; 26555/******/ err.request = realHref; 26556/******/ if (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag) 26557/******/ reject(err); 26558/******/ } 26559/******/ } 26560/******/ linkTag.onerror = linkTag.onload = onLinkComplete; 26561/******/ linkTag.href = fullhref; 26562/******/ 26563/******/ 26564/******/ if (oldTag) { 26565/******/ oldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling); 26566/******/ } else { 26567/******/ document.head.appendChild(linkTag); 26568/******/ } 26569/******/ return linkTag; 26570/******/ }; 26571/******/ var findStylesheet = (href, fullhref) => { 26572/******/ var existingLinkTags = document.getElementsByTagName("link"); 26573/******/ for(var i = 0; i < existingLinkTags.length; i++) { 26574/******/ var tag = existingLinkTags[i]; 26575/******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href"); 26576/******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return tag; 26577/******/ } 26578/******/ var existingStyleTags = document.getElementsByTagName("style"); 26579/******/ for(var i = 0; i < existingStyleTags.length; i++) { 26580/******/ var tag = existingStyleTags[i]; 26581/******/ var dataHref = tag.getAttribute("data-href"); 26582/******/ if(dataHref === href || dataHref === fullhref) return tag; 26583/******/ } 26584/******/ }; 26585/******/ var loadStylesheet = (chunkId) => { 26586/******/ return new Promise((resolve, reject) => { 26587/******/ var href = __webpack_require__.miniCssF(chunkId); 26588/******/ var fullhref = __webpack_require__.p + href; 26589/******/ if(findStylesheet(href, fullhref)) return resolve(); 26590/******/ createStylesheet(chunkId, fullhref, null, resolve, reject); 26591/******/ }); 26592/******/ } 26593/******/ // object to store loaded CSS chunks 26594/******/ var installedCssChunks = { 26595/******/ 6488: 0, 26596/******/ 7420: 0, 26597/******/ 8430: 0 26598/******/ }; 26599/******/ 26600/******/ __webpack_require__.f.miniCss = (chunkId, promises) => { 26601/******/ var cssChunks = {"326":1,"2440":1,"5579":1,"6164":1}; 26602/******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]); 26603/******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) { 26604/******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => { 26605/******/ installedCssChunks[chunkId] = 0; 26606/******/ }, (e) => { 26607/******/ delete installedCssChunks[chunkId]; 26608/******/ throw e; 26609/******/ })); 26610/******/ } 26611/******/ }; 26612/******/ 26613/******/ // no hmr 26614/******/ 26615/******/ // no prefetching 26616/******/ 26617/******/ // no preloaded
vendor: 4,947 bytes, lines 26618-26729
26618/******/ })(); 26619/******/ 26620/******/ /* webpack/runtime/jsonp chunk loading */ 26621/******/ (() => { 26622/******/ // no baseURI 26623/******/ 26624/******/ // object to store loaded and loading chunks 26625/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 26626/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 26627/******/ var installedChunks = { 26628/******/ 6488: 0, 26629/******/ 7420: 0, 26630/******/ 8430: 0 26631/******/ }; 26632/******/ 26633/******/ __webpack_require__.f.j = (chunkId, promises) => { 26634/******/ // JSONP chunk loading for javascript 26635/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; 26636/******/ if(installedChunkData !== 0) { // 0 means "already installed". 26637/******/ 26638/******/ // a Promise means "currently loading". 26639/******/ if(installedChunkData) { 26640/******/ promises.push(installedChunkData[2]); 26641/******/ } else { 26642/******/ if(true) { // all chunks have JS 26643/******/ // setup Promise in chunk cache 26644/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); 26645/******/ promises.push(installedChunkData[2] = promise); 26646/******/ 26647/******/ // start chunk loading 26648/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); 26649/******/ // create error before stack unwound to get useful stacktrace later 26650/******/ var error = new Error(); 26651/******/ var loadingEnded = (event) => { 26652/******/ if(__webpack_require__.o(installedChunks, chunkId)) { 26653/******/ installedChunkData = installedChunks[chunkId]; 26654/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; 26655/******/ if(installedChunkData) { 26656/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); 26657/******/ var realSrc = event && event.target && event.target.src; 26658/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; 26659/******/ error.name = 'ChunkLoadError'; 26660/******/ error.type = errorType; 26661/******/ error.request = realSrc; 26662/******/ installedChunkData[1](error); 26663/******/ } 26664/******/ } 26665/******/ }; 26666/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); 26667/******/ } 26668/******/ } 26669/******/ } 26670/******/ }; 26671/******/ 26672/******/ // no prefetching 26673/******/ 26674/******/ // no preloaded 26675/******/ 26676/******/ // no HMR 26677/******/ 26678/******/ // no HMR manifest 26679/******/ 26680/******/ // no on chunks loaded 26681/******/ 26682/******/ // install a JSONP callback for chunk loading 26683/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 26684/******/ var [chunkIds, moreModules, runtime] = data; 26685/******/ // add "moreModules" to the modules object, 26686/******/ // then flag all "chunkIds" as loaded and fire callback 26687/******/ var moduleId, chunkId, i = 0; 26688/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 26689/******/ for(moduleId in moreModules) { 26690/******/ if(__webpack_require__.o(moreModules, moduleId)) { 26691/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 26692/******/ } 26693/******/ } 26694/******/ if(runtime) var result = runtime(__webpack_require__); 26695/******/ } 26696/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 26697/******/ for(;i < chunkIds.length; i++) { 26698/******/ chunkId = chunkIds[i]; 26699/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 26700/******/ installedChunks[chunkId][0](); 26701/******/ } 26702/******/ installedChunks[chunkId] = 0; 26703/******/ } 26704/******/ 26705/******/ } 26706/******/ 26707/******/ var chunkLoadingGlobal = this["webpackChunk_cckj_mf_mycj_components"] = this["webpackChunk_cckj_mf_mycj_components"] || []; 26708/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 26709/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 26710/******/ })(); 26711/******/ 26712/************************************************************************/ 26713var __webpack_exports__ = {}; 26714// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 26715(() => { 26716"use strict"; 26717/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44190); 26718 26719(function setRuntimePublicPath() { 26720 var host = _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay && _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.host; 26721 if (host) { 26722 __webpack_require__.p = String(host).replace(/\/+$/, '') + '/mf-components-v3/'; 26723 } 26724})(); 26725})(); 26726 26727// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 26728(() => { 26729"use strict";
26730// ESM COMPAT FLAG 26731__webpack_require__.r(__webpack_exports__); 26732 26733// EXPORTS 26734__webpack_require__.d(__webpack_exports__, { 26735 "default": () => (/* binding */ Menu_Menu), 26736 fetchAuth: () => (/* reexport */ authority_utils/* fetchAuth */.tw), 26737 goNoAuthPath: () => (/* reexport */ authority_utils/* goNoAuthPath */.lU), 26738 hasAuth: () => (/* reexport */ authority_utils/* hasAuth */.Vm) 26739}); 26740 26741// EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} 26742var external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(15442); 26743var external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_); 26744// EXTERNAL MODULE: ./src/common/index.ts 26745var common = __webpack_require__(81002); 26746// EXTERNAL MODULE: ./src/universalComps/Iconfont/index.tsx 26747var Iconfont = __webpack_require__(12191); 26748// EXTERNAL MODULE: ./src/common/login-info-controller.ts 26749var login_info_controller = __webpack_require__(12097); 26750;// ./src/components/Menu/hooks/useIsShowMenuItem.ts 26751 26752var useIsShowOrangeConnex = function useIsShowOrangeConnex(routerName) { 26753 if (!/orangeconnex/i.test(routerName)) return true; 26754 var flag = login_info_controller/* default */.A.info('loginName') == 'EbayOC001'; 26755 return flag; 26756}; 26757var useIsShowMiaoshou = function useIsShowMiaoshou(routerName, siteCheck) { 26758 if (!/miaoshou/i.test(routerName)) return true; 26759 var flag = (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJCN')) || siteCheck.isSite('CJ') && (window === null || window === void 0 ? void 0 : window.isChina); 26760 return flag; 26761}; 26762var popoverFixed = function popoverFixed(boxDom) { 26763 var popoverDom = boxDom === null || boxDom === void 0 ? void 0 : boxDom.getElementsByClassName('popoverDom')[0]; 26764 var height = popoverDom === null || popoverDom === void 0 ? void 0 : popoverDom.clientHeight; 26765 var getBoundingClientRect = boxDom.getBoundingClientRect(); 26766 if (!popoverDom) return; 26767 popoverDom.style.position = 'fixed'; 26768 popoverDom.style.left = getBoundingClientRect.left + boxDom.offsetWidth / 2 + 'px'; 26769 popoverDom.style.top = getBoundingClientRect.top - height + 'px'; 26770 popoverDom.style.bottom = 'auto'; 26771}; 26772var isShowAuthorizeType = function isShowAuthorizeType(showAuthorizeListData, routeName) { 26773 if (showAuthorizeListData === void 0) { 26774 showAuthorizeListData = {}; 26775 } 26776 var type = String(routeName).toLocaleLowerCase(); 26777 if (showAuthorizeListData[type]) { 26778 return showAuthorizeListData[type].isAuthor; 26779 } else { 26780 for (var key in showAuthorizeListData) { 26781 if (Object.prototype.hasOwnProperty.call(showAuthorizeListData, key) && showAuthorizeListData[key].otherValue.includes(type)) { 26782 return showAuthorizeListData[key].isAuthor; 26783 } 26784 } 26785 } 26786 return true; 26787}; 26788// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsVip.ts 26789var useIsVip = __webpack_require__(95092); 26790;// ./src/components/Menu/MenuCollapsed/index.less 26791// extracted by mini-css-extract-plugin 26792/* harmony default export */ const Menu_MenuCollapsed = ({"menuCollapsed":"menuCollapsed--b_k3E","zs":"zs--rCLA8","subMenu":"subMenu--WLGbc","activeLeftLine":"activeLeftLine--YOCDq","box":"box--xSm1_","active":"active--dUYom","icon":"icon--vjhqg","fixedTitle":"fixedTitle--PftDx","arrow":"arrow--AEWrh","childBox":"childBox--FWuuo","lastActive":"lastActive--ViUl3","cjSpecial":"cjSpecial--f8xaJ","menuDivider":"menuDivider--aNIge","childItem":"childItem--SnOOe","childItemBox":"childItemBox--TH0SS","name":"name--eNgvs","nameTitle":"nameTitle--ux0Zn","addStoreBox":"addStoreBox--jdia3","arrowRight":"arrowRight--E_xic","addIcon":"addIcon--zC9yb","childItemThree":"childItemThree--Y4Jx_","childItemBoxThree":"childItemBoxThree--SAGhO","nameThree":"nameThree--wZduG","specialMenuItem":"specialMenuItem--mE_CB","newfeatures":"newfeatures--PC3lP"}); 26793// EXTERNAL MODULE: ../../node_modules/classnames/index.js 26794var classnames = __webpack_require__(53373); 26795var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 26796// EXTERNAL MODULE: ./src/hook/use-platform-href.ts 26797var use_platform_href = __webpack_require__(50137); 26798// EXTERNAL MODULE: ./src/components/Menu/hooks/useMyCjReactRoute.ts 26799var useMyCjReactRoute = __webpack_require__(92252); 26800;// ./src/components/Menu/MenuNormal/index.less 26801// extracted by mini-css-extract-plugin 26802/* harmony default export */ const Menu_MenuNormal = ({"menuNormal":"menuNormal--gsYO8","subMenu":"subMenu--z6J6p","box":"box--yZN6g","zs":"zs--OHCP7","left":"left--x__zs","title":"title--BkhmX","active":"active--JjwvC","activeLeftLine":"activeLeftLine--UdWBB","arrow":"arrow--TsouQ","expand":"expand--c1Tbh","popover":"popover--sI3_q","popoverBox":"popoverBox--FjnYQ","text":"text--cy6yi","reverseTriangle":"reverseTriangle--cl3I1","childsBox":"childsBox--JzrE3","menuDivider":"menuDivider--DEr8g","specialMenuItem":"specialMenuItem--_POsH","MenuItem":"MenuItem--LMN0B","titleSpan":"titleSpan--Og1GR","addStoreBox":"addStoreBox--lCxL4","addIcon":"addIcon--hdTkF","activeLeftLineMenuItem":"activeLeftLineMenuItem--YvMU6","childBoxThree":"childBoxThree--v428M","threeMenu":"threeMenu--sKPxL","newfeatures":"newfeatures--BHtjS","menuTip":"menuTip--qyPbc"}); 26803;// ./src/components/Menu/hooks/useMenuChilds.ts 26804function useMenuChilds(_a) { 26805 var selector = _a.selector, 26806 _b = _a.useNewLogic, 26807 useNewLogic = _b === void 0 ? false : _b; 26808 var handlerMouseMove = function handlerMouseMove(e, addTop, isCjSpecial) { 26809 if (addTop === void 0) { 26810 addTop = 0; 26811 } 26812 var shouldUseNewLogic = isCjSpecial !== undefined ? isCjSpecial : useNewLogic; 26813 var target = e.currentTarget; 26814 var specialMenuBox = target.querySelector(selector); 26815 var rect = target.getBoundingClientRect(); 26816 if (!specialMenuBox) return; 26817 if (shouldUseNewLogic) { 26818 specialMenuBox.style.position = 'fixed'; 26819 specialMenuBox.style.left = "".concat(rect.left + target.offsetWidth, "px"); 26820 specialMenuBox.style.display = 'block'; 26821 specialMenuBox.style.visibility = 'hidden'; 26822 var windowHeight_1 = window.innerHeight; 26823 specialMenuBox.style.maxHeight = "".concat(windowHeight_1, "px"); 26824 specialMenuBox.style.overflow = 'auto'; 26825 specialMenuBox.style.overflowY = 'auto'; 26826 specialMenuBox.style.overflowX = 'hidden'; 26827 requestAnimationFrame(function () { 26828 requestAnimationFrame(function () { 26829 var boxHeight = specialMenuBox.scrollHeight; 26830 var actualHeight = Math.min(boxHeight, windowHeight_1); 26831 var top = rect.top - 10 + addTop; 26832 if (top + actualHeight > windowHeight_1) { 26833 top = windowHeight_1 - actualHeight; 26834 if (top < 0) { 26835 top = 0; 26836 } 26837 } 26838 if (top < 0) { 26839 top = 0; 26840 } 26841 specialMenuBox.style.top = "".concat(top, "px"); 26842 specialMenuBox.style.visibility = 'visible'; 26843 }); 26844 }); 26845 } else { 26846 specialMenuBox.style.position = 'fixed'; 26847 specialMenuBox.style.left = "".concat(rect.left + target.offsetWidth, "px"); 26848 var windowHeight = window.innerHeight; 26849 var boxHeight = specialMenuBox.offsetHeight; 26850 if (boxHeight + rect.top > windowHeight) { 26851 specialMenuBox.style.top = "".concat(windowHeight - boxHeight, "px"); 26852 } else { 26853 specialMenuBox.style.top = "".concat(rect.top - 10 + addTop, "px"); 26854 } 26855 specialMenuBox.style.display = 'block'; 26856 } 26857 }; 26858 var handlerMouseLeave = function handlerMouseLeave(target) { 26859 var childBoxThree = target.querySelector(selector); 26860 if (!childBoxThree) return; 26861 childBoxThree.style.display = 'none'; 26862 childBoxThree.style.maxHeight = ''; 26863 childBoxThree.style.overflowY = ''; 26864 childBoxThree.style.overflow = ''; 26865 childBoxThree.style.overflowX = ''; 26866 childBoxThree.style.visibility = ''; 26867 }; 26868 return { 26869 handlerMouseMove: handlerMouseMove, 26870 handlerMouseLeave: handlerMouseLeave 26871 }; 26872} 26873// EXTERNAL MODULE: ./src/universalComps/Tooltip/index.tsx 26874var Tooltip = __webpack_require__(59912); 26875// EXTERNAL MODULE: ./src/components/Menu/MenuNormal/MultipleMenuItem.tsx + 3 modules 26876var MultipleMenuItem = __webpack_require__(16754); 26877// EXTERNAL MODULE: ./src/common/gtag.ts 26878var gtag = __webpack_require__(11543); 26879;// ./src/components/ExtensionGuide/detect.ts 26880var CRX_ATTR = 'data-cjcrx'; 26881var CRX_INSTALLED_VALUE = 'addYes'; 26882var EXTENSION_STORE_URL = 'https://chrome.google.com/webstore/detail/cjdropshipping/mbndljkgaoailfnpeodnlejigmkdpokb?utm_source=chrome-ntp-icon'; 26883var SOURCE_PLATFORM_URLS = { 26884 '1688': 'https://www.1688.com/',
26885 taobao: 'https://www.taobao.com/', 26886 aliexpress: 'https://alitems.com/g/1e8d11449400282ca80416525dc3e8/', 26887 ebay: 'https://www.ebay.com/' 26888}; 26889var isExtensionInstalled = function isExtensionInstalled() { 26890 var _a; 26891 return ((_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.getAttribute(CRX_ATTR)) === CRX_INSTALLED_VALUE; 26892}; 26893var DEFAULT_WAIT_MS = 3000; 26894var defaultWaitMs = function defaultWaitMs() { 26895 try { 26896 var raw = typeof process !== 'undefined' && process.env && process.env.EXT_GUIDE_WAIT_MS; 26897 var n = Number(raw); 26898 return raw && !Number.isNaN(n) && n >= 0 ? n : DEFAULT_WAIT_MS; 26899 } catch (e) { 26900 return DEFAULT_WAIT_MS; 26901 } 26902}; 26903var detect_waitForExtension = function waitForExtension(timeoutMs) { 26904 if (timeoutMs === void 0) { 26905 timeoutMs = defaultWaitMs(); 26906 } 26907 return new Promise(function (resolve) { 26908 if (isExtensionInstalled()) return resolve(true); 26909 if (typeof MutationObserver === 'undefined' || !(document === null || document === void 0 ? void 0 : document.body)) return resolve(false); 26910 var settled = false; 26911 var finish = function finish(installed) { 26912 if (settled) return; 26913 settled = true; 26914 observer.disconnect(); 26915 document.removeEventListener('DOMContentLoaded', check); 26916 window.removeEventListener('load', check); 26917 clearTimeout(timer); 26918 resolve(installed); 26919 }; 26920 var check = function check() { 26921 if (isExtensionInstalled()) finish(true); 26922 }; 26923 var observer = new MutationObserver(check); 26924 observer.observe(document.body, { 26925 attributes: true, 26926 attributeFilter: [CRX_ATTR] 26927 }); 26928 document.addEventListener('DOMContentLoaded', check); 26929 window.addEventListener('load', check); 26930 var timer = setTimeout(function () { 26931 return finish(false); 26932 }, timeoutMs); 26933 }); 26934}; 26935var isChromeBrowser = function isChromeBrowser() { 26936 return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 26937}; 26938var detect_isAllowedTargetUrl = function isAllowedTargetUrl(url) { 26939 return !!url && Object.values(SOURCE_PLATFORM_URLS).indexOf(url) > -1; 26940}; 26941// EXTERNAL MODULE: external {"root":"ReactDOM","commonjs2":"react-dom","commonjs":"react-dom","amd":"react-dom"} 26942var external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(56003); 26943var external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_); 26944// EXTERNAL MODULE: ./src/universalComps/button/index.tsx 26945var universalComps_button = __webpack_require__(37183); 26946;// ./src/components/ExtensionGuide/storage.ts 26947var RESUME_STORAGE_KEY = 'sourcingUrl'; 26948var saveResumeUrl = function saveResumeUrl(targetUrl) { 26949 try { 26950 sessionStorage.setItem(RESUME_STORAGE_KEY, targetUrl); 26951 } catch (e) {} 26952}; 26953var storage_takeResumeUrl = function takeResumeUrl() { 26954 try { 26955 var value = sessionStorage.getItem(RESUME_STORAGE_KEY); 26956 sessionStorage.removeItem(RESUME_STORAGE_KEY); 26957 return value; 26958 } catch (e) { 26959 return null; 26960 } 26961}; 26962;// ./src/components/ExtensionGuide/index.less 26963// extracted by mini-css-extract-plugin 26964/* harmony default export */ const ExtensionGuide = ({"mask":"mask--rGfYk","box":"box--l7olb","title":"title--QbR7E","text":"text--eByoV","footer":"footer--yKQKt","btn":"btn--a0nM5"}); 26965;// ./src/components/ExtensionGuide/ExtensionGuideModal.tsx 26966 26967 26968 26969 26970 26971var COPY = { 26972 install: { 26973 title: function title() { 26974 return window.i18next.t('common-top-install-cj-chrome-extension', 'Install CJ Chrome Extension'); 26975 }, 26976 text: function text() { 26977 return window.i18next.t('common-top-we-found-you-have-not-installed-cj-chrome-extension-do-you-want-to-install-it', 'We found you have not installed CJ Chrome Extension, do you want to install it?'); 26978 } 26979 }, 26980 refresh: { 26981 title: function title() { 26982 return window.i18next.t('common-top-refresh-page-required', 'Refresh Page Required:'); 26983 }, 26984 text: function text() { 26985 return window.i18next.t('common-top-if-you-had-installed-the-extension-please-click-refresh-button', 'If you had installed the extension, please click Refresh button.'); 26986 } 26987 }, 26988 noChrome: { 26989 title: function title() { 26990 return window.i18next.t('common-top-browser-not-supported', 'Browser Not Supported'); 26991 }, 26992 text: function text() { 26993 return window.i18next.t('common-top-cj-chrome-extension-is-only-available-on-google-chrome', 'CJ Chrome Extension is only available on Google Chrome. Please switch to Chrome and try again.'); 26994 } 26995 }, 26996 resume: { 26997 title: function title() { 26998 return window.i18next.t('common-top-extension-ready', 'CJ Chrome Extension Is Ready'); 26999 }, 27000 text: function text() { 27001 return window.i18next.t('common-top-extension-ready-continue-to-the-platform-you
27001-selected', 'The extension is installed. Continue to the platform you selected.'); 27002 } 27003 } 27004}; 27005var ExtensionGuideModal = function ExtensionGuideModal(_a) { 27006 var targetUrl = _a.targetUrl, 27007 onClose = _a.onClose, 27008 initialStep = _a.initialStep; 27009 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(initialStep || (isChromeBrowser() ? 'install' : 'noChrome')), 27010 step = _b[0], 27011 setStep = _b[1]; 27012 var handleInstall = function handleInstall() { 27013 window.open(EXTENSION_STORE_URL, '_blank', 'noreferrer'); 27014 setStep('refresh'); 27015 }; 27016 var handleRefresh = function handleRefresh() { 27017 if (targetUrl) saveResumeUrl(targetUrl); 27018 onClose(); 27019 window.location.reload(); 27020 }; 27021 var handleContinue = function handleContinue() { 27022 if (targetUrl) window.open(targetUrl, '_blank', 'noreferrer'); 27023 onClose(); 27024 }; 27025 var copy = COPY[step]; 27026 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27027 className: ExtensionGuide.mask, 27028 "data-testid": "extension-guide-modal", 27029 onClick: function onClick(e) { 27030 if (e.target === e.currentTarget) onClose(); 27031 } 27032 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27033 className: ExtensionGuide.box 27034 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("h3", { 27035 className: ExtensionGuide.title, 27036 "data-testid": "extension-guide-title" 27037 }, copy.title()), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("p", { 27038 className: ExtensionGuide.text, 27039 "data-testid": "extension-guide-text" 27040 }, copy.text()), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27041 className: ExtensionGuide.footer 27042 }, step === 'install' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27043 type: "primary", 27044 title: window.i18next.t('common-top-install-now', 'Install Now'), 27045 onClick: handleInstall, 27046 className: ExtensionGuide.btn, 27047 "data-testid": "extension-guide-install", 27048 "data-gtag-element": "plugin_install" 27049 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27050 type: "ghost", 27051 title: window.i18next.t('common-top-cancel', 'Cancel'), 27052 onClick: onClose, 27053 className: ExtensionGuide.btn, 27054 "data-testid": "extension-guide-cancel", 27055 "data-gtag-element": "plugin_modal_cancel" 27056 }))), step === 'refresh' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27057 type: "primary", 27058 title: window.i18next.t('common-top-refresh', 'Refresh'), 27059 onClick: handleRefresh, 27060 className: ExtensionGuide.btn, 27061 "data-testid": "extension-guide-refresh", 27062 "data-gtag-element": "plugin_refresh" 27063 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27064 type: "ghost", 27065 title: window.i18next.t('common-top-later', 'Later'), 27066 onClick: onClose, 27067 className: ExtensionGuide.btn, 27068 "data-testid": "extension-guide-later", 27069 "data-gtag-element": "plugin_refresh_later" 27070 }))), step === 'resume' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27071 type: "primary", 27072 title: window.i18next.t('common-top-continue', 'Continue'), 27073 onClick: handleContinue, 27074 className: ExtensionGuide.btn, 27075 "data-testid": "extension-guide-continue", 27076 "data-gtag-element": "plugin_resume_continue" 27077 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27078 type: "ghost", 27079 title: window.i18next.t('common-top-later', 'Later'), 27080 onClick: onClose, 27081 className: ExtensionGuide.btn, 27082 "data-testid": "extension-guide-later", 27083 "data-gtag-element": "plugin_resume_later" 27084 }))), step === 'noChrome' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27085 type: "primary", 27086 title: window.i18next.t('common-top-close', 'Close'), 27087 onClick: onClose, 27088 className: ExtensionGuide.btn, 27089 "data-testid": "extension-guide-close", 27090 "data-gtag-element": "plugin_no_chrome_close" 27091 }))))); 27092}; 27093/* harmony default export */ const ExtensionGuide_ExtensionGuideModal = (ExtensionGuideModal); 27094;// ./src/components/ExtensionGuide/show.tsx 27095 27096 27097 27098 27099var SINGLETON_KEY = '__CJ_EXTENSION_GUIDE_CONTAINER__'; 27100var getActiveContainer = function getActiveContainer() { 27101 var container = window[SINGLETON_KEY]; 27102 return container && container.isConnected ? container : null; 27103};
27104var mount = function mount(targetUrl, initialStep) { 27105 if (getActiveContainer()) return; 27106 var container = document.createElement('div'); 27107 document.body.appendChild(container); 27108 window[SINGLETON_KEY] = container; 27109 var close = function close() { 27110 external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default().unmountComponentAtNode(container); 27111 if (container.parentNode) container.parentNode.removeChild(container); 27112 window[SINGLETON_KEY] = null; 27113 }; 27114 external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default().render(/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(ExtensionGuide_ExtensionGuideModal, { 27115 targetUrl: targetUrl, 27116 initialStep: initialStep, 27117 onClose: close 27118 }), container); 27119}; 27120var show_showExtensionGuide = function showExtensionGuide(targetUrl) { 27121 if (isExtensionInstalled()) { 27122 if (targetUrl) window.open(targetUrl, '_blank', 'noreferrer'); 27123 return; 27124 } 27125 mount(targetUrl); 27126}; 27127var show_showResumePrompt = function showResumePrompt(targetUrl) { 27128 mount(targetUrl, 'resume'); 27129}; 27130;// ./src/components/ExtensionGuide/resume.ts 27131 27132 27133 27134 27135var consumeResumeUrl = function consumeResumeUrl() { 27136 var targetUrl = takeResumeUrl(); 27137 if (!isAllowedTargetUrl(targetUrl)) return; 27138 waitForExtension().then(function (installed) { 27139 if (installed) { 27140 showResumePrompt(targetUrl); 27141 } else { 27142 showExtensionGuide(targetUrl); 27143 } 27144 }); 27145}; 27146;// ./src/components/ExtensionGuide/menu.ts 27147 27148 27149var interceptExtensionMenuClick = function interceptExtensionMenuClick(event, menu) { 27150 var _a; 27151 if (!(menu === null || menu === void 0 ? void 0 : menu.requireExtension)) return false; 27152 if (!detect_isAllowedTargetUrl(menu.route)) return false; 27153 if (isExtensionInstalled()) return false; 27154 (_a = event === null || event === void 0 ? void 0 : event.preventDefault) === null || _a === void 0 ? void 0 : _a.call(event); 27155 show_showExtensionGuide(menu.route); 27156 return true; 27157}; 27158;// ./src/components/ExtensionGuide/index.ts 27159 27160 27161 27162 27163;// ./src/components/Menu/MenuNormal/MenuItem.tsx 27164var __assign = undefined && undefined.__assign || function () { 27165 __assign = Object.assign || function (t) { 27166 for (var s, i = 1, n = arguments.length; i < n; i++) { 27167 s = arguments[i]; 27168 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27169 } 27170 return t; 27171 }; 27172 return __assign.apply(this, arguments); 27173}; 27174 27175 27176 27177 27178 27179 27180 27181 27182 27183 27184 27185 27186 27187 27188var TipWrap = function TipWrap(_a) { 27189 var children = _a.children, 27190 tip = _a.tip; 27191 if (!tip) return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, children); 27192 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Tooltip/* default */.A, { 27193 content: tip, 27194 className: Menu_MenuNormal.menuTip, 27195 immediateHide: true, 27196 noImmediateShow: true, 27197 noImmediateShowDelay: 300 27198 }, children); 27199}; 27200var MenuItem = function MenuItem(_a) { 27201 var _b, _c; 27202 var _d, _e; 27203 var childMenu = _a.childMenu, 27204 isActive = _a.isActive, 27205 _f = _a.showAuthorizeListData, 27206 showAuthorizeListData = _f === void 0 ? {} : _f, 27207 isSpecial = _a.isSpecial; 27208 var isVip = (0,useIsVip/* default */.A)(); 27209 var isShowOrange = useIsShowOrangeConnex(childMenu.name); 27210 var isShowAuthorize = isShowAuthorizeType(showAuthorizeListData, childMenu.name); 27211 var hookMenusChilds = useMenuChilds({ 27212 selector: '.childBoxThree' 27213 }); 27214 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 27215 hookMyCjRoute.viewCogs(childMenu); 27216 var isPopover = !!(childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip); 27217 var isShowNew = (0,common/* isShowNewFeatures */.t_)() && hookMyCjRoute.isNewCogs; 27218 var hasChilds = childMenu.childs && childMenu.childs.length > 0; 27219 var platformHref = (0,use_platform_href/* default */.A)(); 27220 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 27221 var isZesty = window.siteCheck.isSite('ZS'); 27222 if (!isShowOrange || !isShowAuthorize) return null; 27223 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27224 className: classnames_default()(Menu_MenuNormal.MenuItem, (_b = {}, _b[Menu_MenuNormal.vip] = isVip, _b[Menu_MenuNormal.zs] = isZesty, _b)), 27225 onMouseEnter: function onMouseEnter(event) { 27226 leaveTimer.current && clearTimeout(leaveTimer.current); 27227 hasChilds && hookMenusChilds.handlerMouseMove(event); 27228 }, 27229 onMouseLeave: function onMouseLeave(event) { 27230 var target = event.currentTarget; 27231 leaveTimer.current = setTimeout(function () { 27232 hasChilds && hookMenusChilds.handlerMouseLeave(target); 27233 }, 200); 27234 } 27235 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(TipWrap, { 27236 tip: ((_d = childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip) === null || _d === void 0 ? void 0 : _d.call(childMenu)) || '' 27237 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27238 className: classnames_default()(Menu_MenuNormal.box, (_c = {}, _c[Menu_MenuNormal.active] = isActive(childMenu.name), _c[Menu_MenuNormal.zs] = isZesty, _c)), 27239 onClick: function onClick(e) { 27240 e.stopPropagation(); 27241 }, 27242 onMouseMove: function onMouseMove(event) { 27243 if (isPopover) { 27244 popoverFixed(event.currentTarget); 27245 } 27246 }, 27247 "data-route": childMenu.name, 27248 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27249 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27250 className: Menu_MenuNormal.title 27251 }
27251, hasChilds && !childMenu.route && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27252 className: Menu_MenuNormal.titleSpan 27253 }, childMenu.nameTrans())), hasChilds && childMenu.route && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({ 27254 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27255 target: childMenu.target || '_self' 27256 }, hookMyCjRoute.getAProps(childMenu.route)), childMenu.nameTrans())), !hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({ 27257 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27258 target: childMenu.target || '_self' 27259 }, hookMyCjRoute.getAProps(childMenu.route), childMenu.trackingClick ? { 27260 'data-tracking-element-click': childMenu.trackingClick 27261 } : {}, { 27262 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27263 }), isSpecial ? (0,MultipleMenuItem/* showName */.$)({
27264 key: childMenu.key, 27265 name: (_e = childMenu.nameTrans) === null || _e === void 0 ? void 0 : _e.call(childMenu), 27266 count: childMenu.count 27267 }) : childMenu.nameTrans(), childMenu.isNew && isShowNew && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27268 className: Menu_MenuNormal.newfeatures 27269 }, "New")))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27270 className: classnames_default()(Menu_MenuNormal.arrow), 27271 style: { 27272 transform: 'rotate(-90deg)' 27273 } 27274 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 27275 type: "xiangxia" 27276 }))), isZesty && isActive(childMenu.name) && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27277 className: Menu_MenuNormal.activeLeftLineMenuItem 27278 }))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27279 className: classnames_default()(Menu_MenuNormal.childBoxThree, 'childBoxThree') 27280 }, childMenu.childs.map(function (threeMenu) { 27281 var _a; 27282 if (typeof threeMenu.isHide === 'function' ? threeMenu.isHide() : threeMenu.isHide) return null; 27283 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27284 key: threeMenu.name, 27285 className: classnames_default()(Menu_MenuNormal.threeMenu, (_a = {}, _a[Menu_MenuNormal.active] = isActive(threeMenu.name), _a)), 27286 onClick: function onClick(e) { 27287 e.stopPropagation(); 27288 } 27289 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({
27290 href: platformHref((0,common/* getRouteHref */.hQ)(threeMenu)), 27291 target: threeMenu.target || '_self' 27292 }, hookMyCjRoute.getAProps(threeMenu.route), { 27293 "data-gtag-element": (0,gtag/* toGtagElement */.l)(threeMenu.name), 27294 onClick: function onClick(e) { 27295 var _a, _b; 27296 if (interceptExtensionMenuClick(e, threeMenu)) return; 27297 (_b = (_a = hookMyCjRoute.getAProps(threeMenu.route)).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e); 27298 } 27299 }), threeMenu.nameTrans())); 27300 })))); 27301}; 27302/* harmony default export */ const MenuNormal_MenuItem = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuItem)); 27303// EXTERNAL MODULE: ./src/hook/use-site-check.ts 27304var use_site_check = __webpack_require__(82058); 27305;// ./src/components/Menu/MenuCollapsed/MenuItem.tsx 27306var MenuItem_assign = undefined && undefined.__assign || function () { 27307 MenuItem_assign = Object.assign || function (t) { 27308 for (var s, i = 1, n = arguments.length; i < n; i++) { 27309 s = arguments[i]; 27310 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27311 } 27312 return t; 27313 }; 27314 return MenuItem_assign.apply(this, arguments); 27315}; 27316var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 27317 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 27318 if (ar || !(i in from)) { 27319 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 27320 ar[i] = from[i]; 27321 } 27322 } 27323 return to.concat(ar || Array.prototype.slice.call(from)); 27324}; 27325 27326 27327 27328 27329 27330 27331 27332 27333 27334 27335 27336 27337 27338 27339 27340var MenuItem_MenuItem = function MenuItem(_a) { 27341 var _b, _c, _d, _e; 27342 var _f, _g; 27343 var childMenu = _a.childMenu, 27344 isActive = _a.isActive, 27345 showAuthorizeListData = _a.showAuthorizeListData, 27346 isSpecial = _a.isSpecial; 27347 var isVip = (0,useIsVip/* default */.A)(); 27348 var siteCheck = (0,use_site_check/* default */.A)(); 27349 var isShowOrange = useIsShowOrangeConnex(childMenu.name); 27350 var isShowAuthorize = isShowAuthorizeType(showAuthorizeListData, childMenu.name); 27351 var isZesty = siteCheck.isSite('ZS'); 27352 var _h = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([classnames_default()(Menu_MenuCollapsed.childBox, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b))]), 27353 threeClass = _h[0], 27354 setThreeClass = _h[1]; 27355 var hookMenusChilds = useMenuChilds({ 27356 selector: '.childBoxThree', 27357 useNewLogic: true 27358 }); 27359 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 27360 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 27361 hookMyCjRoute.viewCogs(childMenu); 27362 var hasChilds = childMenu.childs && childMenu.childs.length > 0; 27363 var platformHref = (0,use_platform_href/* default */.A)(); 27364 var isShowNew = (0,common/* isShowNewFeatures */.t_)() && hookMyCjRoute.isNewCogs; 27365 var childCurrentRoute = (childMenu === null || childMenu === void 0 ? void 0 : childMenu.name) || ''; 27366 if (!isShowOrange || !isShowAuthorize) return null; 27367 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27368 className: classnames_default()(Menu_MenuCollapsed.childItem, (_c = {}, _c[Menu_MenuCollapsed.vip] = isVip, _c[Menu_MenuCollapsed.active] = isActive(childCurrentRoute), _c[Menu_MenuCollapsed.zs] = isZesty, _c)), 27369 onMouseEnter: function onMouseEnter(event) { 27370 leaveTimer.current && clearTimeout(leaveTimer.current); 27371 setThreeClass(__spreadArray(__spreadArray([], threeClass, true), [Menu_MenuCollapsed.active], false)); 27372 hasChilds && hookMenusChilds.handlerMouseMove(event); 27373 }, 27374 onMouseLeave: function onMouseLeave(event) { 27375 var target = event.currentTarget; 27376 setThreeClass(__spreadArray([], threeClass.filter(function (_) { 27377 return _ !== Menu_MenuCollapsed.active; 27378 }), true)); 27379 leaveTimer.current = setTimeout(function () { 27380 hasChilds && hookMenusChilds.handlerMouseLeave(target); 27381 }, 200); 27382 }, 27383 onClick: function onClick(e) { 27384 e.stopPropagation(); 27385 if (childMenu.name === childCurrentRoute) return; 27386 } 27387 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(TipWrap, { 27388 tip: ((_f = childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip) === null || _f === void 0 ? void 0 : _f.call(childMenu)) || '' 27389 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27390 className: Menu_MenuCollapsed.childItemBox 27391 }
27391, hasChilds && !childMenu.route ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27392 className: classnames_default()(Menu_MenuCollapsed.nameTitle, (_d = {}, _d[Menu_MenuCollapsed.zs] = isZesty, _d)) 27393 }, childMenu.nameTrans())) : (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MenuItem_assign({ 27394 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27395 className: classnames_default()(hasChilds ? Menu_MenuCollapsed.nameTitle : Menu_MenuCollapsed.name, (_e = {}, _e[Menu_MenuCollapsed.zs] = isZesty, _e)), 27396 target: childMenu.target || '_self' 27397 }, hookMyCjRoute.getAProps(childMenu.route), childMenu.trackingClick ? { 27398 'data-tracking-element-click': childMenu.trackingClick 27399 } : {}, { 27400 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27401 }), isSpecial ? (0,MultipleMenuItem/* showName */.$)({ 27402 key: childMenu.key, 27403 name: (_g = childMenu.nameTrans) === null || _g === void 0 ? void 0 : _g.call(childMenu), 27404 count: childMenu.count 27405 }) : childMenu.nameTrans(), childMenu.isNew && isShowNew && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27406 className: Menu_MenuCollapsed.newfeatures 27407 }, "New"))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27408 className: Menu_MenuCollapsed.arrowRight 27409 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 27410 type: "jiantou_you" 27411 }))))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27412 className: classnames_default()(threeClass.join(' '), 'childBoxThree') 27413 }, childMenu.childs.map(function (threeMenu) { 27414 var _a, _b; 27415 if (typeof threeMenu.isHide === 'function' ? threeMenu.isHide() : threeMenu.isHide) return null; 27416 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27417 key: threeMenu.name, 27418 className: classnames_default()(Menu_MenuCollapsed.childItemThree, (_a = {}, _a[Menu_MenuCollapsed.active] = isActive(threeMenu.name), _a[Menu_MenuCollapsed.vip] = isVip, _a)), 27419 onClick: function onClick(e) { 27420 e.stopPropagation(); 27421 } 27422 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27423 className: Menu_MenuCollapsed.childItemBoxThree 27424 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MenuItem_assign({
27425 href: platformHref((0,common/* getRouteHref */.hQ)(threeMenu)), 27426 className: classnames_default()(Menu_MenuCollapsed.nameThree, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b)), 27427 target: threeMenu.target || '_self' 27428 }, hookMyCjRoute.getAProps(threeMenu.route), { 27429 "data-gtag-element": (0,gtag/* toGtagElement */.l)(threeMenu.name), 27430 onClick: function onClick(e) { 27431 var _a, _b; 27432 if (interceptExtensionMenuClick(e, threeMenu)) return; 27433 (_b = (_a = hookMyCjRoute.getAProps(threeMenu.route)).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e); 27434 } 27435 }), threeMenu.nameTrans()))); 27436 })))); 27437}; 27438/* harmony default export */ const MenuCollapsed_MenuItem = (MenuItem_MenuItem); 27439// EXTERNAL MODULE: ./src/common/cj-href.ts 27440var cj_href = __webpack_require__(84963); 27441// EXTERNAL MODULE: ./src/components/CjHeader/hooks/use-parent-platform.ts 27442var use_parent_platform = __webpack_require__(6925); 27443// EXTERNAL MODULE: ./src/common/oss-controller.ts 27444var oss_controller = __webpack_require__(44190); 27445// EXTERNAL MODULE: ./src/components/CjHeader/services.ts 27446var services = __webpack_require__(62934); 27447// EXTERNAL MODULE: ./src/components/CjHeader/const/show-authorize-list.ts 27448var show_authorize_list = __webpack_require__(84266); 27449;// ./src/components/CjHeader/const/show-authorize-all-list.ts 27450var show_authorize_all_list_assign = undefined && undefined.__assign || function () { 27451 show_authorize_all_list_assign = Object.assign || function (t) { 27452 for (var s, i = 1, n = arguments.length; i < n; i++) { 27453 s = arguments[i]; 27454 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27455 } 27456 return t; 27457 }; 27458 return show_authorize_all_list_assign.apply(this, arguments); 27459}; 27460var __rest = undefined && undefined.__rest || function (s, e) { 27461 var t = {}; 27462 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 27463 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 27464 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 27465 } 27466 return t; 27467}; 27468 27469var mabang = show_authorize_list/* default */.A.mabang, 27470 otherShowAuthorizeList = __rest(show_authorize_list/* default */.A, ["mabang"]); 27471/* harmony default export */ const show_authorize_all_list = (show_authorize_all_list_assign(show_authorize_all_list_assign({}, otherShowAuthorizeList), { 27472 others: { 27473 Title: 'Others', 27474 value: 'others', 27475 otherValue: [], 27476 isAuthor: true, 27477 isShow: true 27478 }, 27479 mabang: mabang 27480})); 27481// EXTERNAL MODULE: ../../node_modules/js-cookie/dist/js.cookie.mjs 27482var js_cookie = __webpack_require__(3478); 27483// EXTERNAL MODULE: ./src/common/platform-show.ts 27484var platform_show = __webpack_require__(37597); 27485;// ./src/components/Menu/bar.config.cf.ts 27486var bar_config_cf_assign = undefined && undefined.__assign || function () { 27487 bar_config_cf_assign = Object.assign || function (t) { 27488 for (var s, i = 1, n = arguments.length; i < n; i++) { 27489 s = arguments[i]; 27490 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27491 } 27492 return t; 27493 }; 27494 return bar_config_cf_assign.apply(this, arguments); 27495}; 27496var _a, _b; 27497 27498 27499var isNewUser = ((_a = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('N')) > -1 || !js_cookie/* default */.A.get('token'); 27500var isWarehouseOperationVideoUser = function isWarehouseOperationVideoUser() { 27501 return true; 27502}; 27503var hideMyQuotationMenu = function hideMyQuotationMenu() { 27504 var _a, _b; 27505 var flag = true; 27506 if (typeof window !== 'undefined') { 27507 var cjNum = (_a = window === null || window === void 0 ? void 0 : window.loginInfoController) === null || _a === void 0 ? void 0 : _a.info('num'); 27508 var users = ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('my-quotation-users')) || []; 27509 if (!users.includes('CJ10001')) { 27510 users.push('CJ10001'); 27511 } 27512 flag = !users.includes(cjNum); 27513 } 27514 return flag; 27515}; 27516var menus = [{ 27517 name: 'Orders', 27518 nameTrans: function nameTrans() { 27519 return "".concat(window.i18next.t("common-mycj-menu-3pl-orders", 'Orders')); 27520 }, 27521 iconclass: 'bianzu41', 27522 active: false,
27523 code: 'mycj_orders', 27524 childs: [{ 27525 name: 'Sales Orders', 27526 nameTrans: function nameTrans() { 27527 return "".concat(window.i18next.t("common-mycj-menu-3pl-sales-orders", 'Sales Orders')); 27528 }, 27529 active: false, 27530 code: 'mycj_sales_orders', 27531 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 27532 }, { 27533 name: 'Inventory Orders', 27534 nameTrans: function nameTrans() { 27535 return "".concat(window.i18next.t("common-mycj-menu-3pl-inventory-orders", 'Inventory Orders')); 27536 }, 27537 active: false, 27538 code: 'mycj_inventory_orders', 27539 route: '/mine/purchase/purchaseList?orderType=2' 27540 }] 27541}, { 27542 name: 'Fulfillment', 27543 nameTrans: function nameTrans() { 27544 return "".concat(window.i18next.t("common-mycj-menu-3pl-orders-fulfillment", 'Fulfillment Tracking')); 27545 }, 27546 iconclass: 'lvyue', 27547 active: false, 27548 code: 'mycj_orders_fulfillment', 27549 childs: [{ 27550 name: 'Fulfillment Status', 27551 nameTrans: function nameTrans() { 27552 return "".concat(window.i18next.t("common-mycj-menu-3pl-fulfillment-status", 'Fulfillment Status')); 27553 }, 27554 code: 'mycj_orders_tracking', 27555 route: '/mine/orderTracing/list', 27556 active: false 27557 }, { 27558 name: 'Undelivered Orders', 27559 nameTrans: function nameTrans() { 27560 return "".concat(window.i18next.t("common-mycj-menu-3pl-undelivered-orders", 'Undelivered Orders')); 27561 }, 27562 code: 'mycj_undelivered_orders', 27563 route: '/mine/undeliveredOrder', 27564 active: false 27565 }, { 27566 name: 'Disputes', 27567 nameTrans: function nameTrans() { 27568 return "".concat(window.i18next.t("common-mycj-menu-3pl-disputes", 'Disputes')); 27569 }, 27570 code: 'mycj_disputes', 27571 route: '/mine/dispute/list', 27572 active: false 27573 }] 27574}, { 27575 name: 'Products', 27576 nameTrans: function nameTrans() { 27577 return "".concat(window.i18next.t("common-mycj-menu-3pl-products", 'Products')); 27578 }, 27579 iconclass: 'bianzu62', 27580 active: false, 27581 code: 'mycj_products', 27582 childs: [{ 27583 name: 'My Products', 27584 nameTrans: function nameTrans() { 27585 return "".concat(window.i18next.t("common-mycj-menu-3pl-my-products", 'My Products')); 27586 }, 27587 code: 'mycj_3pl_products', 27588 route: '/my.html#/products-connection/goods', 27589 active: false 27590 }, { 27591 name: 'Store Products', 27592 nameTrans: function nameTrans() { 27593 return "".concat(window.i18next.t("common-mycj-menu-3pl-store-products", 'Store Products')); 27594 }, 27595 code: 'mycj_store_products', 27596 route: '/mine/products/connection', 27597 active: false, 27598 tip: function tip() { 27599 return window.i18next.t("common-mycj-menu-3pl-store-products-tip", 'Check here for your store products, where you can make product connections.'); 27600 } 27601 }, { 27602 name: 'Custom Packaging', 27603 nameTrans: function nameTrans() { 27604 return "".concat(window.i18next.t("common-mycj-menu-3pl-custom-packaging", 'Custom Packaging')); 27605 }, 27606 code: 'mycj_custom_packaging', 27607 route: '/my.html#/regular-packaging', 27608 active: false, 27609 tip: function tip() { 27610 return window.i18next.t("common-mycj-menu-3pl-custom-packaging-tip", 'Purchase or design packaging and connect packages with your products.'); 27611 } 27612 }] 27613}, { 27614 name: 'Inventory', 27615 nameTrans: function nameTrans() { 27616 return "".concat(window.i18next.t("common-mycj-menu-3pl-inventory", 'Inventory')); 27617 }, 27618 iconclass: 'shouyecangku1', 27619 active: false, 27620 code: 'mycj_products', 27621 childs: [{ 27622 name: 'My Inventory', 27623 nameTrans: function nameTrans() { 27624 return "".concat(window.i18next.t("common-mycj-menu-3pl-my-inventory", 'My Inventory')); 27625 }, 27626 code: 'mycj_my_inventory', 27627 route: '/mine/myInventoryNew/productInventory', 27628 active: false, 27629 tip: function tip() { 27630 return window.i18next.t("common-mycj-menu-3pl-my-inventory-tip", 'Check your inventory here if you have brought private inventory, packaging, or deposit inventory.'); 27631 } 27632 }, { 27633 name: 'Inventory Planner', 27634 nameTrans: function nameTrans() { 27635 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 27636 }, 27637 code: 'mycj_inventory_planner', 27638 route: '/mine/inventoryPlanner', 27639 active: false 27640 }, { 27641 name: 'Shipment', 27642 nameTrans: function nameTrans() { 27643 return "".concat(window.i18next.t("common-mycj-menu-3pl-shipment", 'Shipment')); 27644 }, 27645 code: 'mycj_3pl_shipment', 27646 route: '/mine/shipment', 27647 active: false 27648 }] 27649}, { 27650 name: 'Service', 27651 nameTrans: function nameTrans() { 27652 return "".concat(window.i18next.t("common-mycj-menu-3pl-partnership", 'Partnership')); 27653 }, 27654 iconclass: 'bianzu71', 27655 active: false,
27656 code: 'mycj_service', 27657 childs: [{ 27658 name: 'Credit Service', 27659 nameTrans: function nameTrans() { 27660 return "".concat(window.i18next.t("common-mycj-menu-3pl-credit-service", 'Credit Service')); 27661 }, 27662 code: 'mycj_credit_service', 27663 route: '/loancredit', 27664 active: false, 27665 target: '_blank' 27666 }, { 27667 name: 'Affiliate', 27668 nameTrans: function nameTrans() { 27669 return "".concat(window.i18next.t("common-mycj-menu-3pl-affiliate", 'Affiliate')); 27670 }, 27671 code: 'mycj_affiliate', 27672 route: 'https://affiliate.cjdropshipping.com/', 27673 active: false, 27674 target: '_blank' 27675 }] 27676}, { 27677 name: 'Authorization', 27678 nameTrans: function nameTrans() { 27679 return "".concat(window.i18next.t("common-mycj-menu-3pl-authorization-new", 'Apps')); 27680 }, 27681 iconclass: 'dianpushouquan', 27682 active: false, 27683 special: true, 27684 code: 'mycj_authorization', 27685 childs: [bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shopify), { 27686 nameTrans: function nameTrans() { 27687 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 27688 }, 27689 version: 2, 27690 active: false 27691 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 27692 nameTrans: function nameTrans() { 27693 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 27694 }, 27695 version: 2, 27696 active: false 27697 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu), { 27698 nameTrans: function nameTrans() { 27699 return "".concat(window.i18next.t("common-mycj-menu-temu")); 27700 }, 27701 version: 2, 27702 type: 'authorize', 27703 active: false 27704 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 27705 nameTrans: function nameTrans() { 27706 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 27707 }, 27708 version: 2, 27709 type: 'authorize', 27710 active: false 27711 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 27712 nameTrans: function nameTrans() { 27713 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 27714 }, 27715 version: 2, 27716 type: 'authorize', 27717 active: false 27718 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shein), { 27719 nameTrans: function nameTrans() { 27720 return "".concat(window.i18next.t("common-mycj-menu-shein")); 27721 }, 27722 version: 2, 27723 type: 'authorize', 27724 active: false 27725 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.whop), { 27726 nameTrans: function nameTrans() { 27727 return "".concat(window.i18next.t("common-mycj-menu-whop", 'Whop')); 27728 }, 27729 version: 2, 27730 type: 'authorize', 27731 active: false 27732 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 27733 nameTrans: function nameTrans() { 27734 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 27735 }, 27736 version: 2, 27737 type: 'authorize', 27738 active: false 27739 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 27740 nameTrans: function nameTrans() { 27741 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 27742 }, 27743 version: 2, 27744 type: 'authorize', 27745 active: false 27746 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 27747 nameTrans: function nameTrans() { 27748 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 27749 }, 27750 version: 2, 27751 type: 'authorize', 27752 active: false 27753 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 27754 nameTrans: function nameTrans() { 27755 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 27756 }, 27757 version: 2, 27758 type: 'authorize', 27759 active: false 27760 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.ebay), { 27761 nameTrans: function nameTrans() { 27762 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 27763 }, 27764 version: 2, 27765 type: 'authorize', 27766 active: false 27767 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.api), { 27768 nameTrans: function nameTrans() { 27769 return "".concat(window.i18next.t("common-mycj-menu-api")); 27770 }, 27771 version: 2, 27772 type: 'authorize', 27773 active: false 27774 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.etsy), { 27775 nameTrans: function nameTrans() { 27776 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 27777 }, 27778 version: 2, 27779 type: 'authorize', 27780 active: false 27781 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 27782 nameTrans: function nameTrans() { 27783 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 27784 }, 27785 version: 2, 27786 type: 'authorize', 27787 active: false 27788 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.wix), { 27789 nameTrans: function nameTrans() { 27790 return "".concat(window.i18next.t("common-mycj-menu-wix")); 27791 }, 27792 version: 2, 27793 type: 'authorize', 27794 active: false 27795 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.lazada), { 27796 nameTrans: function nameTrans() { 27797 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 27798 }, 27799 version: 2, 27800 type: 'authorize', 27801 active: false 27802 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shopee), { 27803 nameTrans: function nameTrans() { 27804 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 27805 }, 27806 version: 2, 27807 type: 'authorize', 27808 active: false 27809 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 27810 nameTrans: function nameTrans() { 27811 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 27812 }, 27813 version: 2, 27814 type: 'authorize', 27815 active: false 27816 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 27817 nameTrans: function nameTrans() { 27818 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 27819 }, 27820 version: 2, 27821 type: 'authorize', 27822 active: false 27823 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.magento), { 27824 nameTrans: function nameTrans() { 27825 return "".concat(window.i18next.t("common-mycj-menu-magento")); 27826 }, 27827 version: 2, 27828 type: 'authorize', 27829 active: false 27830 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 27831 nameTrans: function nameTrans() { 27832 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 27833 }, 27834 version: 2, 27835 type: 'authorize', 27836 active: false 27837 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 27838 nameTrans: function nameTrans() { 27839 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 27840 }, 27841 version: 2, 27842 type: 'authorize', 27843 active: false 27844 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 27845 nameTrans: function nameTrans() { 27846 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 27847 }, 27848 version: 2, 27849 type: 'authorize', 27850 active: false 27851 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 27852 nameTrans: function nameTrans() { 27853 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 27854 }, 27855 version: 2, 27856 type: 'authorize', 27857 active: false 27858 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.mercado), { 27859 nameTrans: function nameTrans() { 27860 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 27861 }, 27862 version: 2, 27863 type: 'authorize', 27864 active: false 27865 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 27866 nameTrans: function nameTrans() { 27867 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 27868 }, 27869 version: 2, 27870 type: 'authorize', 27871 active: false 27872 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 27873 nameTrans: function nameTrans() { 27874 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 27875 }, 27876 version: 2, 27877 type: 'authorize', 27878 active: false 27879 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORMAll */.Z8.others), { 27880 nameTrans: function nameTrans() { 27881 return "".concat(window.i18next.t("common-mycj-menu-others")); 27882 }, 27883 version: 2, 27884 type: 'authorize', 27885 active: false 27886 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.mabang), { 27887 nameTrans: function nameTrans() { 27888 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 27889 }, 27890 version: 2, 27891 type: 'authorize', 27892 active: false 27893 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.miaoshou), { 27894 nameTrans: function nameTrans() { 27895 return "".concat(window.i18next.t("common-mycj-menu-miaoshou")); 27896 }, 27897 version: 2, 27898 type: 'authorize', 27899 active: false 27900 })] 27901}, { 27902 name: "My ".concat(typeof window !== 'undefined' && ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('name'))), 27903 nameVal: "My CJ", 27904 nameTrans: function nameTrans() { 27905 return window.i18next.t("common-mycj-3pl-my-account", 'My Account'); 27906 }, 27907 iconclass: 'bianzu32', 27908 active: false, 27909 childs: [{ 27910 name: 'Settings', 27911 nameTrans: function nameTrans() { 27912 return "".concat(window.i18next.t("common-mycj-menu-3pl-setting", 'Settings')); 27913 }, 27914 code: 'mycj_profile', 27915 route: '/my.html#/profile/info', 27916 active: false 27917 }, { 27918 name: 'Ticket', 27919 nameTrans: function nameTrans() { 27920 return "".concat(window.i18next.t("common-mycj-menu-3pl-ticket", 'Ticket')); 27921 }, 27922 code: 'mycj_ticket', 27923 route: '/mine/ticket', 27924 active: false 27925 }, { 27926 name: 'Wallet', 27927 nameTrans: function nameTrans() { 27928 return "".concat(window.i18next.t("common-mycj-menu-3pl-wallet", 'Wallet')); 27929 }, 27930 code: 'mycj_wallet', 27931 route: '/mine/wallet', 27932 active: false 27933 }, { 27934 name: 'Export List', 27935 nameTrans: function nameTrans() { 27936 return "".concat(window.i18next.t("common-mycj-menu-3pl-export-list", 'Export List')); 27937 }, 27938 iconclass: 'liwuicon_', 27939 code: 'mycj_export_list', 27940 route: '/mine/exportList', 27941 active: false 27942 }] 27943}]; 27944var menuPath = {}; 27945var menuNames = {}; 27946function loops(list, parent) { 27947 return (list || []).map(function (_a) { 27948 var route = _a.route, 27949 childs = _a.childs, 27950 name = _a.name, 27951 version = _a.version; 27952 var _route = route; 27953 var node = menuNames[name] = menuPath[_route] = { 27954 parent: parent, 27955 name: name, 27956 version: version, 27957 route: _route 27958 }; 27959 node['childs'] = loops(childs, node); 27960 return node; 27961 }); 27962} 27963function getPath(name) { 27964 var obj = menuNames[name]; 27965 var arr = []; 27966 while (obj && obj.name) { 27967 if (obj.childs && obj.childs[0]) { 27968 arr.push(obj.name); 27969 } else { 27970 arr.push(obj.name); 27971 } 27972 if (!obj.parent) break; 27973 obj = obj.parent; 27974 } 27975 return arr; 27976} 27977loops(menus, null); 27978var createAuthTree = function createAuthTree() { 27979 var authMapByRoute = []; 27980 var _fun = function fun(list) { 27981 return list.map(function (l) { 27982 if (l.route && l.code) authMapByRoute.push({ 27983 name: l.name, 27984 code: l.code, 27985 route: l.route 27986 }); 27987 return { 27988 name: l.name, 27989 code: l.code, 27990 route: l.route, 27991 children: l.childs && _fun(l.childs) 27992 }; 27993 }); 27994 };
27995 return [_fun(menus), authMapByRoute]; 27996}; 27997/* harmony default export */ const bar_config_cf = ((/* unused pure expression or super */ null && (createAuthTree))); 27998// EXTERNAL MODULE: ./src/components/Menu/bar.config.ts 27999var bar_config = __webpack_require__(34692); 28000;// ./src/components/Menu/hooks/useShopifyUser.ts 28001 28002function useShopifyUser(server_siteCheck) { 28003 var _a, _b, _c, _d; 28004 var isQSShopify = ((_a = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('B')) > -1; 28005 if (typeof window === 'undefined') return isQSShopify && ((_b = server_siteCheck === null || server_siteCheck === void 0 ? void 0 : server_siteCheck.isSite) === null || _b === void 0 ? void 0 : _b.call(server_siteCheck, 'QS')); 28006 return isQSShopify && ((_d = (_c = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _c === void 0 ? void 0 : _c.isSite) === null || _d === void 0 ? void 0 : _d.call(_c, 'QS')); 28007} 28008// EXTERNAL MODULE: ./src/common/store.ts 28009var store = __webpack_require__(4703); 28010;// ./src/components/Menu/bar.config.qs.ts 28011var bar_config_qs_assign = undefined && undefined.__assign || function () { 28012 bar_config_qs_assign = Object.assign || function (t) { 28013 for (var s, i = 1, n = arguments.length; i < n; i++) { 28014 s = arguments[i]; 28015 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 28016 } 28017 return t; 28018 }; 28019 return bar_config_qs_assign.apply(this, arguments); 28020}; 28021var bar_config_qs_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 28022 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 28023 if (ar || !(i in from)) { 28024 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 28025 ar[i] = from[i]; 28026 } 28027 } 28028 return to.concat(ar || Array.prototype.slice.call(from)); 28029}; 28030var bar_config_qs_a; 28031 28032 28033 28034 28035var isFromErp = store/* default */.A.get('loginfromerp'); 28036var showInventoryOrder = function showInventoryOrder() { 28037 var _a, _b; 28038 if (typeof window === 'undefined') { 28039 return false; 28040 } 28041 var inventoryUser = ((_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('inventory-user')) || []; 28042 var cjNum = (_b = window === null || window === void 0 ? void 0 : window.loginInfoController) === null || _b === void 0 ? void 0 : _b.info('num'); 28043 return inventoryUser.includes(cjNum); 28044}; 28045var bar_config_qs_menus = [{ 28046 name: 'Products', 28047 nameTrans: function nameTrans() { 28048 return "".concat(window.i18next.t("common-mycj-menu-products")); 28049 }, 28050 iconclass: 'zuocedaohangshangpin-QS', 28051 active: false, 28052 code: 'mycj_products', 28053 childs: bar_config_qs_spreadArray([{ 28054 name: 'My Products', 28055 nameTrans: function nameTrans() { 28056 return "".concat(window.i18next.t("common-mycj-menu-my-products")); 28057 }, 28058 code: 'mycj_my_products', 28059 route: '/mine/products/myproducts', 28060 active: false 28061 }, { 28062 name: 'Store Products', 28063 nameTrans: function nameTrans() { 28064 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 28065 }, 28066 code: 'mycj_store_products', 28067 route: '/mine/products/connection', 28068 active: false, 28069 tip: function tip() { 28070 return window.i18next.t("common-mycj-menu-store-products-tip"); 28071 } 28072 }, { 28073 name: 'Listing Records', 28074 nameTrans: function nameTrans() { 28075 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 28076 }, 28077 active: false, 28078 childs: [{ 28079 name: 'Products Records', 28080 nameTrans: function nameTrans() { 28081 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 28082 }, 28083 route: '/my.html#/products-connection/history', 28084 code: 'mycj_products_records', 28085 active: false 28086 }, {
28087 name: 'Video Records', 28088 nameTrans: function nameTrans() { 28089 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 28090 }, 28091 code: 'mycj_video_list', 28092 route: '/mine/listVideos', 28093 active: false 28094 }] 28095 }], isFromErp || showInventoryOrder() ? [{ 28096 name: 'My Inventory', 28097 nameTrans: function nameTrans() { 28098 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 28099 }, 28100 code: 'mycj_my_inventory', 28101 route: '/mine/myInventoryNew/productInventory', 28102 active: false, 28103 tip: function tip() { 28104 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 28105 } 28106 }, { 28107 name: 'Inventory Planner', 28108 nameTrans: function nameTrans() { 28109 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 28110 }, 28111 code: 'mycj_inventory_planner', 28112 route: '/mine/inventoryPlanner', 28113 active: false 28114 }] : [], true) 28115}, { 28116 name: 'Orders', 28117 nameTrans: function nameTrans() { 28118 return "".concat(window.i18next.t("common-mycj-menu-orders")); 28119 }, 28120 iconclass: 'zuocedaohangdingdan-QS', 28121 active: false, 28122 code: 'mycj_orders', 28123 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([{ 28124 name: 'Store Orders', 28125 nameTrans: function nameTrans() { 28126 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 28127 }, 28128 active: false, 28129 code: 'mycj_store_orders', 28130 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 28131 }, { 28132 name: 'Sample Orders', 28133 nameTrans: function nameTrans() { 28134 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 28135 }, 28136 active: false, 28137 code: 'mycj_sample_orders', 28138 route: '/mine/purchase/purchaseList?orderType=1' 28139 }, { 28140 name: 'Wholesale Orders', 28141 nameTrans: function nameTrans() { 28142 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 28143 }, 28144 active: false, 28145 code: 'mycj_wholesale_orders', 28146 route: '/mine/purchase/purchaseList?orderType=3' 28147 }], isFromErp || showInventoryOrder() ? [{ 28148 name: 'Inventory Orders', 28149 nameTrans: function nameTrans() { 28150 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 28151 }, 28152 active: false, 28153 code: 'mycj_inventory_orders', 28154 route: '/mine/purchase/purchaseList?orderType=2' 28155 }] : [], true), [{ 28156 name: 'Undelivered Orders', 28157 nameTrans: function nameTrans() { 28158 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 28159 }, 28160 code: 'mycj_undelivered_orders', 28161 route: '/mine/undeliveredOrder', 28162 active: false 28163 }, { 28164 name: 'Disputes', 28165 nameTrans: function nameTrans() { 28166 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 28167 }, 28168 code: 'mycj_disputes', 28169 route: '/mine/dispute/list', 28170 active: false 28171 }], false) 28172}, { 28173 name: 'Service', 28174 nameTrans: function nameTrans() { 28175 return "".concat(window.i18next.t("common-mycj-menu-service")); 28176 }, 28177 iconclass: 'zuocedaohangfuwu-QS', 28178 active: false, 28179 code: 'mycj_service', 28180 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([], isFromErp ? [{ 28181 name: '3PL Fulfillment', 28182 nameTrans: function nameTrans() { 28183 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 28184 }, 28185 code: 'mycj_3pl', 28186 active: false, 28187 tip: function tip() { 28188 var _a; 28189 return window.i18next.t("common-mycj-menu-3pl-tip", { 28190 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 28191 }); 28192 }, 28193 childs: [{ 28194 name: 'Products', 28195 nameTrans: function nameTrans() { 28196 return "".concat(window.i18next.t("common-mycj-menu-products")); 28197 }, 28198 code: 'mycj_3pl_products', 28199 route: '/my.html#/products-connection/goods', 28200 active: false 28201 }, {
28202 name: 'Shipment', 28203 nameTrans: function nameTrans() { 28204 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 28205 }, 28206 code: 'mycj_3pl_shipment', 28207 route: '/mine/shipment', 28208 active: false 28209 }, { 28210 name: '24h Fulfillment', 28211 nameTrans: function nameTrans() { 28212 return "".concat(window.i18next.t("common-mycj-menu-24h-fulfillment", '24h Fulfillment')); 28213 }, 28214 code: 'mycj_24h_fulfillment', 28215 route: '/fulfillmentservice', 28216 active: false 28217 }] 28218 }] : [], true), [{ 28219 name: 'Sourcing', 28220 nameTrans: function nameTrans() { 28221 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 28222 }, 28223 code: 'mycj_sourcing', 28224 route: '/mine/sourcing/list', 28225 active: false, 28226 tip: function tip() { 28227 return window.i18next.t("common-mycj-menu-sourcing-tip"); 28228 } 28229 }, { 28230 name: 'Custom Packaging', 28231 nameTrans: function nameTrans() { 28232 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 28233 }, 28234 code: 'mycj_custom_packaging', 28235 route: '/my.html#/regular-packaging', 28236 active: false, 28237 tip: function tip() { 28238 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 28239 } 28240 }, { 28241 name: 'Print on Demand', 28242 nameTrans: function nameTrans() { 28243 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 28244 }, 28245 active: false, 28246 tip: function tip() { 28247 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 28248 }, 28249 childs: [{ 28250 name: "Buyer's Design", 28251 nameTrans: function nameTrans() { 28252 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 28253 }, 28254 iconclass: 'maijiaxinxi', 28255 code: 'mycj_buyers_design', 28256 route: '/my.html#/pod/buyer-design', 28257 active: false, 28258 tipName: 'Connected POD products in your store.' 28259 }, { 28260 name: 'Design Myself', 28261 nameTrans: function nameTrans() { 28262 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 28263 }, 28264 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 28265 code: 'mycj_design_myself', 28266 route: '/my.html#/pod/design-myself', 28267 active: false, 28268 tipName: 'Your designed products on CJ.' 28269 }] 28270 }], false) 28271}, { 28272 name: 'Authorization', 28273 nameTrans: function nameTrans() { 28274 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 28275 }, 28276 iconclass: 'zuocedaohangshouquandianpu-QS', 28277 active: false, 28278 special: true, 28279 code: 'mycj_authorization', 28280 childs: [bar_config_qs_assign(bar_config_qs_assign({}, platform_show/* PLATFORM */.i9.shopify), { 28281 nameTrans: function nameTrans() { 28282 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 28283 }, 28284 version: 2, 28285 active: false 28286 })] 28287}, { 28288 name: "My ".concat(typeof window !== 'undefined' && ((bar_config_qs_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || bar_config_qs_a === void 0 ? void 0 : bar_config_qs_a.data('name'))), 28289 nameVal: "My CJ", 28290 nameTrans: function nameTrans() { 28291 var _a; 28292 return window.i18next.t("common-mycj-my-site", { 28293 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 28294 }); 28295 }, 28296 iconclass: 'a-zuocedaohangMYQS-QS', 28297 active: false, 28298 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([{ 28299 name: 'Profile', 28300 nameTrans: function nameTrans() { 28301 return "".concat(window.i18next.t("common-mycj-menu-profile")); 28302 }, 28303 code: 'mycj_profile', 28304 route: '/my.html#/profile/info', 28305 active: false 28306 }, { 28307 name: 'Ticket', 28308 nameTrans: function nameTrans() { 28309 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 28310 }, 28311 code: 'mycj_ticket', 28312 route: '/mine/ticket', 28313 active: false 28314 }], !useShopifyUser() ? [{ 28315 name: 'Wallet', 28316 nameTrans: function nameTrans() { 28317 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 28318 }, 28319 code: 'mycj_wallet', 28320 route: '/mine/wallet', 28321 active: false 28322 }] : [], true), [{ 28323 name: 'Browsing History', 28324 nameTrans: function nameTrans() { 28325 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 28326 }, 28327 code: 'mycj_browsing_history', 28328 route: '/viewHistory', 28329 active: false 28330 }, { 28331 name: 'Export List', 28332 nameTrans: function nameTrans() { 28333 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 28334 }, 28335 iconclass: 'liwuicon_', 28336 code: 'mycj_export_list', 28337 route: '/mine/exportList', 28338 active: false 28339 }, { 28340 name: 'Sub-account', 28341 nameTrans: function nameTrans() { 28342 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 28343 }, 28344 code: 'mycj_sub_account', 28345 route: '/my.html#/accountManage', 28346 active: false 28347 }, {
28348 name: 'Order-video', 28349 nameTrans: function nameTrans() { 28350 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 28351 }, 28352 code: 'mycj_order-video', 28353 route: '/mine/orderVideo', 28354 active: false, 28355 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 28356 }], false) 28357}]; 28358var bar_config_qs_menuPath = {}; 28359var bar_config_qs_menuNames = {}; 28360function bar_config_qs_loops(list, parent) { 28361 return (list || []).map(function (_a) { 28362 var route = _a.route, 28363 childs = _a.childs, 28364 name = _a.name, 28365 version = _a.version; 28366 var _route = route; 28367 var node = bar_config_qs_menuNames[name] = bar_config_qs_menuPath[_route] = { 28368 parent: parent, 28369 name: name, 28370 version: version, 28371 route: _route 28372 }; 28373 node['childs'] = bar_config_qs_loops(childs, node); 28374 return node; 28375 }); 28376} 28377function bar_config_qs_getPath(name) { 28378 var obj = bar_config_qs_menuNames[name]; 28379 var arr = []; 28380 while (obj && obj.name) { 28381 if (obj.childs && obj.childs[0]) { 28382 arr.push(obj.name); 28383 } else { 28384 arr.push(obj.name); 28385 } 28386 if (!obj.parent) break; 28387 obj = obj.parent; 28388 } 28389 return arr; 28390} 28391bar_config_qs_loops(bar_config_qs_menus, null); 28392var bar_config_qs_createAuthTree = function createAuthTree() { 28393 var authMapByRoute = []; 28394 var _fun = function fun(list) { 28395 return list.map(function (l) { 28396 if (l.route && l.code) authMapByRoute.push({ 28397 name: l.name, 28398 code: l.code, 28399 route: l.route 28400 }); 28401 return { 28402 name: l.name, 28403 code: l.code, 28404 route: l.route, 28405 children: l.childs && _fun(l.childs) 28406 }; 28407 }); 28408 }; 28409 return [_fun(bar_config_qs_menus), authMapByRoute]; 28410}; 28411/* harmony default export */ const bar_config_qs = ((/* unused pure expression or super */ null && (bar_config_qs_createAuthTree))); 28412;// ./src/components/CjProductDetail/common/isQs.ts 28413 28414function isQs(siteCheck) { 28415 if (siteCheck === void 0) { 28416 siteCheck = null; 28417 } 28418 if (common/* isBrowser */.Bd) return window.siteCheck.isSite('QS'); 28419 return siteCheck.isSite('QS'); 28420} 28421;// ./src/components/CjProductDetail/common/isAr.ts 28422 28423function isAr(siteCheck) { 28424 if (siteCheck === void 0) { 28425 siteCheck = null; 28426 } 28427 if (isBrowser) return window.siteCheck.isSite('AR'); 28428 return siteCheck.isSite('AR'); 28429} 28430;// ./src/components/CjProductDetail/common/isZs.ts 28431 28432function isZs(siteCheck) { 28433 if (siteCheck === void 0) { 28434 siteCheck = null; 28435 } 28436 if (isBrowser) return window.siteCheck.isSite('ZS'); 28437 return siteCheck.isSite('ZS'); 28438} 28439;// ./src/components/CjProductDetail/common/index.ts 28440 28441 28442 28443 28444;// ./src/components/Menu/hooks/useIsCF.ts 28445function useIsCf(server_siteCheck) { 28446 var _a, _b, _c; 28447 if (typeof window === 'undefined') return server_siteCheck ? ((_a = server_siteCheck === null || server_siteCheck === void 0 ? void 0 : server_siteCheck.data) === null || _a === void 0 ? void 0 : _a.call(server_siteCheck, 'source-name')) === '3pl' : false; 28448 return ((_c = (_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.call(_b, 'source-name')) === '3pl'; 28449} 28450;// ./src/common/deep-clone.ts 28451function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 28452var isObject = function isObject(obj) { 28453 return obj && _typeof(obj) === 'object' && !isArray(obj); 28454}; 28455var isFunction = function isFunction(obj) { 28456 return obj && typeof obj === 'function'; 28457}; 28458var isArray = function isArray(obj) { 28459 return obj && Array.isArray(obj); 28460}; 28461var isRegExp = function isRegExp(obj) { 28462 return obj && obj instanceof RegExp; 28463}; 28464var _deepClone = function deepClone(obj) { 28465 var res; 28466 if (isArray(obj)) { 28467 res = []; 28468 for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) { 28469 var item = obj_1[_i]; 28470 if ((isObject(item) || isArray(item)) && !isRegExp(item)) { 28471 res.push(_deepClone(item)); 28472 } else { 28473 res.push(item); 28474 } 28475 } 28476 } else if (isObject(obj)) { 28477 res = {}; 28478 var _keys = Object.keys(obj); 28479 for (var _a = 0, _keys_1 = _keys; _a < _keys_1.length; _a++) { 28480 var key = _keys_1[_a]; 28481 var item = obj[key]; 28482 if ((isObject(item) || isArray(item)) && !isRegExp(item)) { 28483 res[key] = _deepClone(item); 28484 } else { 28485 res[key] = item; 28486 } 28487 } 28488 } 28489 return res; 28490}; 28491/* harmony default export */ const deep_clone = (_deepClone); 28492// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsZS.ts 28493var useIsZS = __webpack_require__(60488); 28494// EXTERNAL MODULE: ./src/components/Menu/bar.config.zs.ts
28495var bar_config_zs = __webpack_require__(81943); 28496;// ./src/common/platforms-sort-show.ts 28497var platforms_sort_show_assign = undefined && undefined.__assign || function () { 28498 platforms_sort_show_assign = Object.assign || function (t) { 28499 for (var s, i = 1, n = arguments.length; i < n; i++) { 28500 s = arguments[i]; 28501 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 28502 } 28503 return t; 28504 }; 28505 return platforms_sort_show_assign.apply(this, arguments); 28506}; 28507var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 28508 function adopt(value) { 28509 return value instanceof P ? value : new P(function (resolve) { 28510 resolve(value); 28511 }); 28512 } 28513 return new (P || (P = Promise))(function (resolve, reject) { 28514 function fulfilled(value) { 28515 try { 28516 step(generator.next(value)); 28517 } catch (e) { 28518 reject(e); 28519 } 28520 } 28521 function rejected(value) { 28522 try { 28523 step(generator["throw"](value)); 28524 } catch (e) { 28525 reject(e); 28526 } 28527 } 28528 function step(result) { 28529 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 28530 } 28531 step((generator = generator.apply(thisArg, _arguments || [])).next()); 28532 }); 28533}; 28534var __generator = undefined && undefined.__generator || function (thisArg, body) { 28535 var _ = { 28536 label: 0, 28537 sent: function sent() { 28538 if (t[0] & 1) throw t[1]; 28539 return t[1]; 28540 }, 28541 trys: [], 28542 ops: [] 28543 }, 28544 f, 28545 y, 28546 t, 28547 g; 28548 return g = { 28549 next: verb(0), 28550 "throw": verb(1), 28551 "return": verb(2) 28552 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 28553 return this; 28554 }), g; 28555 function verb(n) { 28556 return function (v) { 28557 return step([n, v]); 28558 }; 28559 } 28560 function step(op) { 28561 if (f) throw new TypeError("Generator is already executing."); 28562 while (g && (g = 0, op[0] && (_ = 0)), _) try { 28563 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 28564 if (y = 0, t) op = [op[0] & 2, t.value]; 28565 switch (op[0]) { 28566 case 0: 28567 case 1: 28568 t = op; 28569 break; 28570 case 4: 28571 _.label++; 28572 return { 28573 value: op[1], 28574 done: false 28575 }; 28576 case 5: 28577 _.label++; 28578 y = op[1]; 28579 op = [0]; 28580 continue; 28581 case 7: 28582 op = _.ops.pop(); 28583 _.trys.pop(); 28584 continue; 28585 default: 28586 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 28587 _ = 0; 28588 continue; 28589 } 28590 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 28591 _.label = op[1]; 28592 break; 28593 } 28594 if (op[0] === 6 && _.label < t[1]) { 28595 _.label = t[1]; 28596 t = op; 28597 break; 28598 } 28599 if (t && _.label < t[2]) { 28600 _.label = t[2]; 28601 _.ops.push(op); 28602 break; 28603 } 28604 if (t[2]) _.ops.pop(); 28605 _.trys.pop(); 28606 continue; 28607 } 28608 op = body.call(thisArg, _); 28609 } catch (e) { 28610 op = [6, e]; 28611 y = 0; 28612 } finally { 28613 f = t = 0; 28614 } 28615 if (op[0] & 5) throw op[1]; 28616 return { 28617 value: op[0] ? op[1] : void 0, 28618 done: true 28619 }; 28620 } 28621}; 28622var platforms_sort_show_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 28623 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 28624 if (ar || !(i in from)) { 28625 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 28626 ar[i] = from[i]; 28627 } 28628 } 28629 return to.concat(ar || Array.prototype.slice.call(from)); 28630}; 28631 28632 28633 28634 28635 28636 28637 28638 28639 28640 28641 28642 28643 28644var EBusinessType; 28645(function (EBusinessType) { 28646 EBusinessType[EBusinessType["ERP"] = 0] = "ERP"; 28647 EBusinessType[EBusinessType["CROSS"] = 1] = "CROSS"; 28648})(EBusinessType || (EBusinessType = {})); 28649var PlatformSortShow = function () { 28650 function PlatformSortShow(axios) { 28651 var _a, _b, _c; 28652 this.platforms = []; 28653 this.allPlatforms = []; 28654 this.platformsResponse = []; 28655 this.showAuthorizeData = show_authorize_list/* default */.A; 28656 this.showAuthorizeAllData = show_authorize_all_list;
28657 var initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 28658 if ((0,useIsZS/* default */.A)()) initialMenus = bar_config_zs/* menus */.T_; 28659 if (useIsCf()) initialMenus = menus; 28660 this.platforms = ((_b = (_a = initialMenus === null || initialMenus === void 0 ? void 0 : initialMenus.find(function (ele) { 28661 return ele.name === 'Authorization'; 28662 })) === null || _a === void 0 ? void 0 : _a.childs) === null || _b === void 0 ? void 0 : _b.filter(function (item) { 28663 return !['others'].includes(item.key); 28664 })) || []; 28665 this.allPlatforms = ((_c = initialMenus === null || initialMenus === void 0 ? void 0 : initialMenus.find(function (ele) { 28666 return ele.name === 'Authorization'; 28667 })) === null || _c === void 0 ? void 0 : _c.childs) || []; 28668 this.axios = axios; 28669 } 28670 PlatformSortShow.prototype.handler = function () { 28671 return __awaiter(this, void 0, void 0, function () { 28672 var data, keys, platformCount, i, item; 28673 return __generator(this, function (_a) { 28674 switch (_a.label) { 28675 case 0: 28676 return [4, this.getPlatformsByUser()]; 28677 case 1: 28678 data = _a.sent(); 28679 if (data.length > 0) { 28680 this.platformsResponse = data === null || data === void 0 ? void 0 : data.map(function (ele) { 28681 return platforms_sort_show_assign(platforms_sort_show_assign({}, ele), platform_show/* PLATFORMAll */.Z8[ele.shopPlatformType] || {}); 28682 }); 28683 keys = []; 28684 platformCount = {}; 28685 for (i = 0; i < data.length; i++) { 28686 item = data[i]; 28687 if (this.showAuthorizeAllData[item.shopPlatformType]) { 28688 this.showAuthorizeAllData[item.shopPlatformType].isAuthor = item.isAuthor; 28689 this.showAuthorizeAllData[item.shopPlatformType].isShow = item.isShow; 28690 keys.push(item.shopPlatformType); 28691 platformCount[item.shopPlatformType] = item.count; 28692 } 28693 } 28694 this.modifiedPlatformSort(keys, data, platformCount); 28695 this.handlerFilterPlatforms(); 28696 } 28697 return [2]; 28698 } 28699 }); 28700 }); 28701 }; 28702 PlatformSortShow.prototype.getPlatformsByUser = function () { 28703 return __awaiter(this, void 0, void 0, function () { 28704 var data; 28705 return __generator(this, function (_a) { 28706 switch (_a.label) { 28707 case 0: 28708 return [4, (0,services/* getAuthorizeShowList */.vG)(this.axios)]; 28709 case 1: 28710 data = _a.sent(); 28711 if (!data || (data === null || data === void 0 ? void 0 : data.length) == 0) return [2, []]; 28712 return [2, data]; 28713 } 28714 }); 28715 }); 28716 }; 28717 PlatformSortShow.prototype.modifiedPlatformSort = function (keys, data, platformCount) { 28718 if (keys === void 0) { 28719 keys = []; 28720 } 28721 if (data === void 0) { 28722 data = []; 28723 } 28724 var oldPlatforms = platforms_sort_show_spreadArray([], this.allPlatforms, true); 28725 if (keys.length > 0) { 28726 var temp = []; 28727 var _loop_1 = function _loop_1(i) { 28728 var item = oldPlatforms.find(function (ele) { 28729 if (keys[i] == 'tiktok_us' || keys[i] == 'tiktok_us_cross') { 28730 return ele.name.toLocaleLowerCase().replaceAll('-', '_') == keys[i]; 28731 } 28732 return ele.name.toLocaleLowerCase() == keys[i]; 28733 }); 28734 if (item) { 28735 item.count = keys[i] === 'etsy' ? 0 : platformCount[keys[i]]; 28736 var userData = data.find(function (ele) { 28737 return ele.shopPlatformType == keys[i]; 28738 }); 28739 temp.push(platforms_sort_show_assign({ 28740 businessType: userData === null || userData === void 0 ? void 0 : userData.businessType 28741 }, item)); 28742 } 28743 }; 28744 for (var i = 0; i < keys.length; i++) { 28745 _loop_1(i); 28746 } 28747 this.platforms = platforms_sort_show_spreadArray([], temp, true); 28748 } 28749 }; 28750 PlatformSortShow.prototype.handlerFilterPlatforms = function () { 28751 var _this = this; 28752 var oldPlatforms = platforms_sort_show_spreadArray([], this.platforms, true); 28753 this.platforms = oldPlatforms.filter(function (ele) { 28754 var isShowAuthorize = isShowAuthorizeType(_this.showAuthorizeData, ele.name); 28755 return isShowAuthorize; 28756 }); 28757 this.allPlatforms = oldPlatforms.filter(function (ele) { 28758 var isShowAuthorize = isShowAuthorizeType(_this.showAuthorizeAllData, ele.name); 28759 return isShowAuthorize; 28760 }); 28761 }; 28762 PlatformSortShow.prototype.showAppStore = function () { 28763 var _a, _b; 28764 return __awaiter(this, void 0, void 0, function () { 28765 var data, initialMenus, oldAllPlatforms, temp, _loop_2, this_1, i, shopifyIndex, shopify; 28766 return __generator(this, function (_c) { 28767 switch (_c.label) { 28768 case 0: 28769 return [4, (0,services/* getAppStoreList */.Jv)(this.axios)]; 28770 case 1: 28771 data = _c.sent(); 28772 if ((data === null || data === void 0 ? void 0 : data.length) > 0) { 28773 this.platformsResponse = data === null || data === void 0 ? void 0 : data.filter(function (ele) { 28774 return !!ele.isAuthor; 28775 }).map(function (ele) { 28776 return platforms_sort_show_assign(platforms_sort_show_assign({}, ele), platform_show/* PLATFORMAll */.Z8[ele.shopPlatformType] || {}); 28777 });
28778 initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 28779 oldAllPlatforms = ((_b = (_a = deep_clone(initialMenus)) === null || _a === void 0 ? void 0 : _a.find(function (ele) { 28780 return ele.name === 'Authorization'; 28781 })) === null || _b === void 0 ? void 0 : _b.childs) || []; 28782 temp = []; 28783 _loop_2 = function _loop_2(i) { 28784 var _d = data[i], 28785 isAuthor = _d.isAuthor, 28786 platformCode = _d.platformCode, 28787 count = _d.count; 28788 var platformCodeLower = platformCode === null || platformCode === void 0 ? void 0 : platformCode.toLowerCase(); 28789 if (this_1.showAuthorizeAllData[platformCodeLower]) { 28790 this_1.showAuthorizeAllData[platformCodeLower].isAuthor = isAuthor; 28791 } 28792 var item = oldAllPlatforms.find(function (ele) { 28793 return ele.key == platformCodeLower; 28794 }); 28795 if (item && isAuthor) { 28796 item.count = platformCodeLower === 'etsy' ? 0 : count; 28797 temp.push(platforms_sort_show_assign(platforms_sort_show_assign({}, item), data[i])); 28798 } 28799 }; 28800 this_1 = this; 28801 for (i = 0; i < data.length; i++) { 28802 _loop_2(i); 28803 } 28804 temp.sort(function (a, b) { 28805 if (a.installTime && b.installTime) { 28806 return Number(a.installTime) - Number(b.installTime); 28807 } 28808 return 0; 28809 }); 28810 shopifyIndex = temp.findIndex(function (ele) { 28811 return ele.key === 'shopify'; 28812 }); 28813 if (shopifyIndex > -1) { 28814 shopify = temp.splice(shopifyIndex, 1); 28815 temp.unshift(shopify[0]); 28816 } 28817 this.allPlatforms = platforms_sort_show_spreadArray([], temp, true); 28818 } 28819 return [2]; 28820 } 28821 }); 28822 }); 28823 }; 28824 return PlatformSortShow; 28825}(); 28826/* harmony default export */ const platforms_sort_show = (PlatformSortShow); 28827;// ./src/components/Menu/MenuCollapsed/SubMenu.tsx 28828var SubMenu_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 28829 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 28830 if (ar || !(i in from)) { 28831 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 28832 ar[i] = from[i]; 28833 } 28834 } 28835 return to.concat(ar || Array.prototype.slice.call(from)); 28836}; 28837 28838 28839 28840 28841 28842 28843 28844 28845 28846 28847 28848 28849 28850 28851 28852 28853 28854var SubMenu = function SubMenu(_a) { 28855 var _b, _c, _d; 28856 var _e; 28857 var item = _a.item, 28858 isActive = _a.isActive, 28859 isParentActive = _a.isParentActive, 28860 showAuthorizeListData = _a.showAuthorizeListData, 28861 _f = _a.isLastMenu, 28862 isLastMenu = _f === void 0 ? false : _f, 28863 openAddStore = _a.openAddStore, 28864 openServiceCenter = _a.openServiceCenter; 28865 var siteCheck = (0,use_site_check/* default */.A)(); 28866 var isVip = (0,useIsVip/* default */.A)(); 28867 var isCj = (0,use_parent_platform/* default */.A)().isCj; 28868 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 28869 var isZesty = siteCheck.isSite('ZS'); 28870 var _g = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([classnames_default()(Menu_MenuCollapsed.childBox, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b))]), 28871 childClass = _g[0], 28872 setChildClass = _g[1]; 28873 var hookMenuChilds = useMenuChilds({ 28874 selector: '.specialMenuItem' 28875 }); 28876 var hookMenusNormalChilds = useMenuChilds({ 28877 selector: '.childBoxThree' 28878 }); 28879 var i18next = window === null || window === void 0 ? void 0 : window.i18next; 28880 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 28881 var hasChilds = item.childs && item.childs.length > 0; 28882 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 28883 var normalSpecial = item.special && !isCJSite; 28884 var cjSpecial = item.special && isCJSite; 28885 var getAddTop = function getAddTop(name, childs) { 28886 var _a; 28887 if (name === void 0) { 28888 name = ''; 28889 } 28890 if (childs === void 0) { 28891 childs = []; 28892 } 28893 if (normalSpecial) { 28894 var hasMiaoshou = ((_a = childs.filter(function (child) { 28895 return child.key === 'miaoshou'; 28896 })) === null || _a === void 0 ? void 0 : _a.length) > 0; 28897 return hasMiaoshou ? -50 : 0; 28898 } 28899 return 0; 28900 }; 28901 var hideBodyScroll = function hideBodyScroll(bol) { 28902 if (bol) { 28903 document.body.style.overflow = 'hidden'; 28904 } else { 28905 document.body.style.overflow = 'auto'; 28906 } 28907 }; 28908 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28909 className: classnames_default()(Menu_MenuCollapsed.subMenu, (_c = {}, _c[Menu_MenuCollapsed.active] = isParentActive(item.name), _c[Menu_MenuCollapsed.vip] = isVip, _c[Menu_MenuCollapsed.zs] = isZesty, _c)), 28910 onMouseEnter: function onMouseEnter(e) { 28911 leaveTimer.current && clearTimeout(leaveTimer.current); 28912 setChildClass(SubMenu_spreadArray(SubMenu_spreadArray([], childClass, true), [isLastMenu ? Menu_MenuCollapsed.lastActive : Menu_MenuCollapsed.active, cjSpecial ? Menu_MenuCollapsed.cjSpecial : ''], false)); 28913 var addTop = getAddTop(item.name, item.childs); 28914 hasChilds && normalSpecial && hookMenuChilds.handlerMouseMove(e, addTop); 28915 hasChilds && !normalSpecial && hookMenusNormalChilds.handlerMouseMove(e, 0, cjSpecial); 28916 hideBodyScroll(true); 28917 }, 28918 onMouseLeave: function onMouseLeave(e) { 28919 var target = e.currentTarget; 28920 leaveTimer.current = setTimeout(function () { 28921 setChildClass(SubMenu_spreadArray([], childClass.filter(function (_) { 28922 return _ !== Menu_MenuCollapsed.active; 28923 }).filter(function (_) { 28924 return _ !== Menu_MenuCollapsed.lastActive; 28925 }), true)); 28926 hasChilds && normalSpecial && hookMenuChilds.handlerMouseLeave(target); 28927 hasChilds && !normalSpecial && hookMenusNormalChilds.handlerMouseLeave(target); 28928 }, 200); 28929 hideBodyScroll(false); 28930 } 28931 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28932 className: classnames_default()(Menu_MenuCollapsed.box, (_d = {}, _d[Menu_MenuCollapsed.zs] = isZesty, _d)), 28933 onClick: function onClick() { 28934 if (!hasChilds) { 28935 if (hookMyCjRoute.canUseNewMyCjRouteJump(item.route)) { 28936 return hookMyCjRoute.changeRoute(item.route); 28937 } 28938 var _href = (0,common/* getRouteHref */.hQ)(item); 28939 location.href = isCj ? _href : (0,cj_href/* cjHref */.F)(_href); 28940 } 28941 }, 28942 "data-route": item.name, 28943 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.name) 28944 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28945 type: item.iconclass, 28946 className: Menu_MenuCollapsed.icon 28947 })), !isZesty && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28948 className: Menu_MenuCollapsed.activeLeftLine 28949 }), !hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28950 className: Menu_MenuCollapsed.fixedTitle 28951 }, item.nameTrans(), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28952 className: Menu_MenuCollapsed.arrow 28953 }))), hasChilds && !normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28954 className: classnames_default()(childClass.join(' '), 'childBoxThree') 28955 }, item.special && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28956 className: Menu_MenuCollapsed.childItem, 28957 onClick: openAddStore, 28958 "data-gtag-element": "install_app" 28959 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28960 className: "".concat(Menu_MenuCollapsed.childItemBox, " ").concat(Menu_MenuCollapsed.addStoreBox) 28961 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 28962 className: Menu_MenuCollapsed.name 28963 }, i18next === null || i18next === void 0 ? void 0 : i18next.t('common-mycj-menu-install-app', 'Install App')), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28964 className: Menu_MenuCollapsed.addIcon 28965 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28966 type: "jiahao1" 28967 }))))), item.name === 'Service' && openServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28968 className: Menu_MenuCollapsed.childItem, 28969 onClick: openServiceCenter, 28970 "data-gtag-element": "subscribe_service" 28971 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28972 className: "".concat(Menu_MenuCollapsed.childItemBox, " ").concat(Menu_MenuCollapsed.addStoreBox) 28973 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 28974 className: Menu_MenuCollapsed.name 28975 }, i18next === null || i18next === void 0 ? void 0 : i18next.t('common-mycj-menu-subscribe-service', 'Subscribe Service')), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28976 className: Menu_MenuCollapsed.addIcon 28977 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28978 type: "jiahao1" 28979 }))))), item.childs.map(function (childMenu) { 28980 if (childMenu.isDivider) { 28981 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28982 key: childMenu.name, 28983 className: Menu_MenuCollapsed.menuDivider 28984 }); 28985 } 28986 if (typeof childMenu.isHide === 'function' ? childMenu.isHide() : childMenu.isHide) return null; 28987 if (!siteCheck.isShow("mycj-menu-".concat(item.nameVal || item.name, "-").concat(childMenu.name))) return null; 28988 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuCollapsed_MenuItem, { 28989 key: childMenu.name, 28990 childMenu: childMenu, 28991 isActive: isActive, 28992 showAuthorizeListData: showAuthorizeListData, 28993 isSpecial: item.special 28994 }); 28995 }))), hasChilds && normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28996 className: classnames_default()(Menu_MenuCollapsed.specialMenuItem, 'specialMenuItem') 28997 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MultipleMenuItem/* default */.A, { 28998 list: (_e = item.childs) === null || _e === void 0 ? void 0 : _e.map(function (item) { 28999 return { 29000 key: item.key, 29001 name: item.nameTrans(), 29002 imageUrl: oss_controller/* default */.Ay.join((0,oss_controller/* createPlatform */.Q_)(String(item.imageName || item.name).toLocaleLowerCase())), 29003 count: item.count, 29004 link: isCj ? item.route : (0,cj_href/* cjHref */.F)(item.route), 29005 isActive: isActive(item.name), 29006 isShow: useIsShowOrangeConnex(item.name) && isShowAuthorizeType(showAuthorizeListData, item.name) && useIsShowMiaoshou(item.name, siteCheck), 29007 isErpPlatform: item.businessType === EBusinessType.ERP 29008 }; 29009 }) 29010 })))); 29011}; 29012/* harmony default export */ const MenuCollapsed_SubMenu = (SubMenu); 29013// EXTERNAL MODULE: ./src/components/Menu/assets/nav-bg.png 29014var nav_bg = __webpack_require__(79328); 29015;// ./src/components/Menu/MenuCollapsed/index.tsx 29016 29017 29018 29019 29020 29021 29022var MenuCollapsed = function MenuCollapsed(_a) { 29023 var _b; 29024 var isActive = _a.isActive, 29025 isParentActive = _a.isParentActive, 29026 showAuthorizeListData = _a.showAuthorizeListData, 29027 menus = _a.menus, 29028 openAddStore = _a.openAddStore, 29029 openServiceCenter = _a.openServiceCenter; 29030 var siteCheck = (0,use_site_check/* default */.A)(); 29031 var isZesty = siteCheck.isSite('ZS'); 29032 var menuCollapsedStyle = { 29033 backgroundImage: "url(".concat(siteCheck.data('menu-bg-image') || nav_bg/* default */.A, ")") 29034 }; 29035 if (isZesty) { 29036 menuCollapsedStyle = { 29037 backgroundColor: '#fff' 29038 }; 29039 } 29040 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 29041 className: classnames_default()(Menu_MenuCollapsed.menuCollapsed, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b)), 29042 style: menuCollapsedStyle 29043 }, menus.map(function (menu, i) { 29044 if (!siteCheck.isShow("mycj-menu-".concat(menu.nameVal || menu.name))) return null; 29045 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuCollapsed_SubMenu, { 29046 key: menu.name, 29047 item: menu, 29048 isActive: isActive, 29049 isParentActive: isParentActive, 29050 showAuthorizeListData: showAuthorizeListData, 29051 isLastMenu: i === menus.length - 1, 29052 openAddStore: openAddStore, 29053 openServiceCenter: openServiceCenter 29054 }); 29055 })); 29056}; 29057/* harmony default export */ const components_Menu_MenuCollapsed = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuCollapsed)); 29058// EXTERNAL MODULE: ./src/components/Menu/index.less 29059var Menu = __webpack_require__(65555); 29060// EXTERNAL MODULE: ../../node_modules/js-base64/base64.mjs 29061var base64 = __webpack_require__(93584); 29062;// ./src/components/Menu/bar.config.qk.ts
29063var bar_config_qk_assign = undefined && undefined.__assign || function () { 29064 bar_config_qk_assign = Object.assign || function (t) { 29065 for (var s, i = 1, n = arguments.length; i < n; i++) { 29066 s = arguments[i]; 29067 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 29068 } 29069 return t; 29070 }; 29071 return bar_config_qk_assign.apply(this, arguments); 29072}; 29073var bar_config_qk_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 29074 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 29075 if (ar || !(i in from)) { 29076 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 29077 ar[i] = from[i]; 29078 } 29079 } 29080 return to.concat(ar || Array.prototype.slice.call(from)); 29081}; 29082var bar_config_qk_a, bar_config_qk_b, _c; 29083 29084 29085 29086 29087 29088 29089var bar_config_qk_isFromErp = store/* default */.A.get('loginfromerp'); 29090var isShowProducts = (0,common/* isSafeUser */.dn)() || bar_config_qk_isFromErp; 29091var isShowSourcingAndStoreProducts = function isShowSourcingAndStoreProducts() { 29092 var testUserIds = ['QK2522152', 'QK3056156']; 29093 var specialUserIds = bar_config_qk_spreadArray(['QK37757', 'QK3156419'], testUserIds, true); 29094 return login_info_controller/* default */.A.info('num') && specialUserIds.includes(login_info_controller/* default */.A.info('num')); 29095}; 29096var menus1 = bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29097 name: 'Find Products', 29098 nameTrans: function nameTrans() { 29099 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29100 }, 29101 iconclass: 'cedaohang-soupin', 29102 active: false, 29103 childs: [], 29104 route: '/home.html' 29105}, { 29106 name: 'Orders Creation', 29107 nameTrans: function nameTrans() { 29108 return "".concat(window.i18next.t("common-mycj-menu-orders-creation")); 29109 }, 29110 iconclass: 'qk_chuangjiandingdan', 29111 route: '/mine/dropshipping/untreatedOrder/CreateOrder', 29112 active: false, 29113 childs: [] 29114}], isShowProducts ? [{ 29115 name: 'Products', 29116 nameTrans: function nameTrans() { 29117 return "".concat(window.i18next.t("common-mycj-menu-products")); 29118 }, 29119 iconclass: 'zuocedaohangshangpin-QS', 29120 active: false, 29121 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([], bar_config_qk_isFromErp ? [{ 29122 name: 'Added Products', 29123 nameTrans: function nameTrans() { 29124 return "".concat(window.i18next.t("common-mycj-menu-added-products", 'Added Products')); 29125 }, 29126 code: 'mycj_my_products', 29127 route: '/mine/products/myproducts', 29128 active: false 29129 }] : [], true), bar_config_qk_isFromErp || isShowSourcingAndStoreProducts() ? [{ 29130 name: 'Store Products', 29131 nameTrans: function nameTrans() { 29132 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 29133 }, 29134 iconclass: 'guanlian', 29135 code: 'mycj_store_products', 29136 route: '/mine/products/connection', 29137 active: false, 29138 childs: [] 29139 }] : [], true), (0,common/* isSafeUser */.dn)() ? [{ 29140 name: 'My Inventory', 29141 nameTrans: function nameTrans() { 29142 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 29143 }, 29144 iconclass: 'a-qk_OrdersPicking', 29145 code: 'mycj_my_inventory', 29146 route: '/mine/myInventoryNew/productInventory', 29147 active: false, 29148 childs: [] 29149 }, { 29150 name: 'Inventory Planner', 29151 nameTrans: function nameTrans() { 29152 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 29153 }, 29154 code: 'mycj_inventory_planner', 29155 route: '/mine/inventoryPlanner', 29156 active: false 29157 }] : [], true) 29158}] : [], true), [{ 29159 name: 'Orders', 29160 nameTrans: function nameTrans() { 29161 return "".concat(window.i18next.t("common-mycj-menu-orders")); 29162 }, 29163 iconclass: 'bianzu41', 29164 active: false, 29165 code: 'mycj_orders', 29166 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29167 name: 'Store Orders', 29168 nameTrans: function nameTrans() { 29169 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 29170 }, 29171 active: false, 29172 code: 'mycj_store_orders', 29173 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 29174 }], (0,common/* isSafeUser */.dn)() ? [{ 29175 name: 'Inventory Orders', 29176 nameTrans: function nameTrans() { 29177 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 29178 }, 29179 active: false, 29180 code: 'mycj_inventory_orders', 29181 route: '/mine/purchase/purchaseList?orderType=2' 29182 }] : [], true), [{ 29183 name: 'Undelivered Orders', 29184 nameTrans: function nameTrans() { 29185 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 29186 }, 29187 code: 'mycj_undelivered_orders',
29188 route: '/mine/undeliveredOrder', 29189 active: false 29190 }, { 29191 name: 'Disputes', 29192 nameTrans: function nameTrans() { 29193 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 29194 }, 29195 code: 'mycj_disputes', 29196 route: '/mine/dispute/list', 29197 active: false 29198 }], false) 29199}], false), (0,common/* isSafeUser */.dn)() ? [{ 29200 name: 'Service', 29201 nameTrans: function nameTrans() { 29202 return "".concat(window.i18next.t("common-mycj-menu-service")); 29203 }, 29204 iconclass: 'bianzu71', 29205 active: false, 29206 code: 'mycj_service', 29207 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([], isShowSourcingAndStoreProducts() ? [{ 29208 name: 'Sourcing', 29209 nameTrans: function nameTrans() { 29210 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 29211 }, 29212 code: 'mycj_sourcing', 29213 route: '/mine/sourcing/list', 29214 active: false, 29215 tip: function tip() { 29216 return window.i18next.t("common-mycj-menu-sourcing-tip"); 29217 } 29218 }] : [], true), [{ 29219 name: 'Custom Packaging', 29220 nameTrans: function nameTrans() { 29221 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 29222 }, 29223 code: 'mycj_custom_packaging', 29224 route: '/my.html#/regular-packaging', 29225 active: false, 29226 tip: function tip() { 29227 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 29228 } 29229 }, { 29230 name: '3PL Fulfillment', 29231 nameTrans: function nameTrans() { 29232 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 29233 }, 29234 active: false, 29235 tip: function tip() { 29236 var _a; 29237 return window.i18next.t("common-mycj-menu-3pl-tip", { 29238 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29239 }); 29240 }, 29241 childs: [{ 29242 name: 'Products', 29243 nameTrans: function nameTrans() { 29244 return "".concat(window.i18next.t("common-mycj-menu-products")); 29245 }, 29246 code: 'mycj_3pl_products', 29247 route: '/my.html#/products-connection/goods', 29248 active: false 29249 }, {
29250 name: 'Shipment', 29251 nameTrans: function nameTrans() { 29252 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 29253 }, 29254 code: 'mycj_3pl_shipment', 29255 route: '/mine/shipment', 29256 active: false 29257 }] 29258 }], false) 29259}] : [], true), [{ 29260 name: "My ".concat(typeof window !== 'undefined' && ((bar_config_qk_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || bar_config_qk_a === void 0 ? void 0 : bar_config_qk_a.data('name'))), 29261 nameVal: "My CJ", 29262 nameTrans: function nameTrans() { 29263 var _a; 29264 return window.i18next.t("common-mycj-my-site", { 29265 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29266 }); 29267 }, 29268 iconclass: 'bianzu32', 29269 active: false, 29270 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29271 name: 'Dashboard', 29272 nameTrans: function nameTrans() { 29273 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 29274 }, 29275 code: 'mycj_dashboard', 29276 route: '/my.html#/dashboard', 29277 active: false, 29278 isNew: true 29279 }, { 29280 name: 'Profile', 29281 nameTrans: function nameTrans() { 29282 return "".concat(window.i18next.t("common-mycj-menu-profile")); 29283 }, 29284 code: 'mycj_profile', 29285 route: '/my.html#/profile/info', 29286 active: false 29287 }], login_info_controller/* default */.A.info('num') === 'QK3156419' ? [{ 29288 name: 'Ticket', 29289 nameTrans: function nameTrans() { 29290 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 29291 }, 29292 code: 'mycj_ticket', 29293 route: '/mine/ticket', 29294 active: false 29295 }] : [], true), [{ 29296 name: 'Wallet', 29297 nameTrans: function nameTrans() { 29298 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 29299 }, 29300 code: 'mycj_wallet', 29301 route: '/mine/wallet', 29302 active: false 29303 }, { 29304 name: 'Export List', 29305 nameTrans: function nameTrans() { 29306 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 29307 }, 29308 iconclass: 'liwuicon_', 29309 code: 'mycj_export_list', 29310 route: '/mine/exportList', 29311 active: false 29312 }, { 29313 name: 'Sub-account', 29314 nameTrans: function nameTrans() { 29315 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 29316 }, 29317 code: 'mycj_sub_account', 29318 route: '/my.html#/accountManage', 29319 active: false 29320 }, { 29321 name: 'Order-video', 29322 nameTrans: function nameTrans() { 29323 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 29324 }, 29325 code: 'mycj_order-video', 29326 route: '/mine/orderVideo', 29327 active: false, 29328 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 29329 }], false) 29330}], false); 29331var menus2 = [{ 29332 name: 'Find Products', 29333 nameTrans: function nameTrans() { 29334 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29335 }, 29336 iconclass: 'cedaohang-soupin', 29337 active: false, 29338 childs: [], 29339 route: '/home.html' 29340}, { 29341 name: 'Cart', 29342 nameTrans: function nameTrans() { 29343 return "".concat(window.i18next.t("common-mycj-menu-cart")); 29344 }, 29345 iconclass: 'bianzu51', 29346 active: false, 29347 route: '/mine/purchase/purchaseCart', 29348 childs: [], 29349 code: 'mycj_cart' 29350}, { 29351 name: 'Products', 29352 nameTrans: function nameTrans() { 29353 return "".concat(window.i18next.t("common-mycj-menu-products")); 29354 }, 29355 iconclass: 'bianzu62', 29356 active: false, 29357 code: 'mycj_products', 29358 childs: [{ 29359 name: 'Added Products', 29360 nameTrans: function nameTrans() { 29361 return "".concat(window.i18next.t("common-mycj-menu-added-products", 'Added Products')); 29362 }, 29363 code: 'mycj_my_products', 29364 route: '/mine/products/myproducts', 29365 active: false 29366 }, { 29367 name: 'Store Products', 29368 nameTrans: function nameTrans() { 29369 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 29370 }, 29371 code: 'mycj_store_products', 29372 route: '/mine/products/connection', 29373 active: false, 29374 tip: function tip() { 29375 return window.i18next.t("common-mycj-menu-store-products-tip"); 29376 } 29377 }, { 29378 name: 'Listing Records', 29379 nameTrans: function nameTrans() { 29380 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 29381 }, 29382 active: false, 29383 childs: [{ 29384 name: 'Products Records', 29385 nameTrans: function nameTrans() { 29386 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 29387 }, 29388 route: '/my.html#/products-connection/history', 29389 code: 'mycj_products_records', 29390 active: false 29391 }, {
29392 name: 'Video Records', 29393 nameTrans: function nameTrans() { 29394 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 29395 }, 29396 code: 'mycj_video_list', 29397 route: '/mine/listVideos', 29398 active: false 29399 }] 29400 }, { 29401 name: 'My Inventory', 29402 nameTrans: function nameTrans() { 29403 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 29404 }, 29405 code: 'mycj_my_inventory', 29406 route: '/mine/myInventoryNew/productInventory', 29407 active: false, 29408 tip: function tip() { 29409 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 29410 } 29411 }, { 29412 name: 'Inventory Planner', 29413 nameTrans: function nameTrans() { 29414 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 29415 }, 29416 code: 'mycj_inventory_planner', 29417 route: '/mine/inventoryPlanner', 29418 active: false 29419 }] 29420}, { 29421 name: 'Orders', 29422 nameTrans: function nameTrans() { 29423 return "".concat(window.i18next.t("common-mycj-menu-orders")); 29424 }, 29425 iconclass: 'bianzu41', 29426 active: false, 29427 code: 'mycj_orders', 29428 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29429 name: 'Store Orders', 29430 nameTrans: function nameTrans() { 29431 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 29432 }, 29433 active: false, 29434 code: 'mycj_store_orders', 29435 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 29436 }, { 29437 name: 'Sample Orders', 29438 nameTrans: function nameTrans() { 29439 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 29440 }, 29441 active: false, 29442 code: 'mycj_sample_orders', 29443 route: '/mine/purchase/purchaseList?orderType=1' 29444 }, { 29445 name: 'Wholesale Orders', 29446 nameTrans: function nameTrans() { 29447 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 29448 }, 29449 active: false, 29450 code: 'mycj_wholesale_orders', 29451 route: '/mine/purchase/purchaseList?orderType=3' 29452 }, { 29453 name: 'Inventory Orders', 29454 nameTrans: function nameTrans() { 29455 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 29456 }, 29457 active: false, 29458 code: 'mycj_inventory_orders', 29459 route: '/mine/purchase/purchaseList?orderType=2' 29460 }], (0,common/* isSafeUser */.dn)() ? [{ 29461 name: 'Undelivered Orders', 29462 nameTrans: function nameTrans() { 29463 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 29464 }, 29465 code: 'mycj_undelivered_orders', 29466 route: '/mine/undeliveredOrder', 29467 active: false 29468 }, { 29469 name: 'Fulfillment Status', 29470 nameTrans: function nameTrans() { 29471 return "".concat(window.i18next.t("common-mycj-menu-fulfillment-status")); 29472 }, 29473 code: 'mycj_orders_tracking', 29474 route: '/mine/orderTracing/list', 29475 active: false 29476 }] : [], true), [{ 29477 name: 'Disputes', 29478 nameTrans: function nameTrans() { 29479 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 29480 }, 29481 code: 'mycj_disputes', 29482 route: '/mine/dispute/list', 29483 active: false 29484 }], false) 29485}, { 29486 name: 'Service', 29487 nameTrans: function nameTrans() { 29488 return "".concat(window.i18next.t("common-mycj-menu-service")); 29489 }, 29490 iconclass: 'bianzu71', 29491 active: false, 29492 code: 'mycj_service', 29493 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([], (0,common/* isSafeUser */.dn)() || isShowSourcingAndStoreProducts() ? [{ 29494 name: 'Sourcing', 29495 nameTrans: function nameTrans() { 29496 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 29497 }, 29498 code: 'mycj_sourcing', 29499 route: '/mine/sourcing/list', 29500 active: false, 29501 tip: function tip() { 29502 return window.i18next.t("common-mycj-menu-sourcing-tip"); 29503 } 29504 }] : [], true), [{ 29505 name: 'Custom Packaging', 29506 nameTrans: function nameTrans() { 29507 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 29508 }, 29509 code: 'mycj_custom_packaging', 29510 route: '/my.html#/regular-packaging', 29511 active: false, 29512 tip: function tip() { 29513 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 29514 } 29515 }], false), (0,common/* isSafeUser */.dn)() ? [{ 29516 name: 'Customization', 29517 nameTrans: function nameTrans() { 29518 return "".concat(window.i18next.t("common-mycj-menu-customization")); 29519 }, 29520 code: 'mycj_customization', 29521 route: '/mine/customization', 29522 active: false, 29523 tip: function tip() { 29524 var _a; 29525 return window.i18next.t("common-mycj-menu-customization-tip", { 29526 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29527 }); 29528 } 29529 }, { 29530 name: 'Print on Demand', 29531 nameTrans: function nameTrans() { 29532 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 29533 }, 29534 active: false, 29535 tip: function tip() { 29536 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 29537 }, 29538 childs: [{ 29539 name: 'POD Products', 29540 nameTrans: function nameTrans() { 29541 return "".concat(window.i18next.t("common-mycj-menu-pod-products")); 29542 }, 29543 route: '/printonDemand/home', 29544 active: false 29545 }, {
29546 name: "Buyer's Design", 29547 nameTrans: function nameTrans() { 29548 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 29549 }, 29550 iconclass: 'maijiaxinxi', 29551 code: 'mycj_buyers_design', 29552 route: '/my.html#/pod/buyer-design', 29553 active: false, 29554 tipName: 'Connected POD products in your store.' 29555 }, { 29556 name: 'Design Myself', 29557 nameTrans: function nameTrans() { 29558 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 29559 }, 29560 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 29561 code: 'mycj_design_myself', 29562 route: '/my.html#/pod/design-myself', 29563 active: false, 29564 tipName: 'Your designed products on CJ.' 29565 }] 29566 }] : [], true), [{ 29567 name: '3PL Fulfillment', 29568 nameTrans: function nameTrans() { 29569 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 29570 }, 29571 active: false, 29572 tip: function tip() { 29573 var _a; 29574 return window.i18next.t("common-mycj-menu-3pl-tip", { 29575 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29576 }); 29577 }, 29578 childs: [{ 29579 name: 'Products', 29580 nameTrans: function nameTrans() { 29581 return "".concat(window.i18next.t("common-mycj-menu-products")); 29582 }, 29583 code: 'mycj_3pl_products', 29584 route: '/my.html#/products-connection/goods', 29585 active: false 29586 }, {
29587 name: 'Shipment', 29588 nameTrans: function nameTrans() { 29589 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 29590 }, 29591 code: 'mycj_3pl_shipment', 29592 route: '/mine/shipment', 29593 active: false 29594 }] 29595 }], false) 29596}, { 29597 name: 'Authorization', 29598 nameTrans: function nameTrans() { 29599 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 29600 }, 29601 iconclass: 'dianpushouquan', 29602 active: false, 29603 special: true, 29604 code: 'mycj_authorization', 29605 childs: [bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shopify), { 29606 nameTrans: function nameTrans() { 29607 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 29608 }, 29609 version: 2, 29610 active: false 29611 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 29612 nameTrans: function nameTrans() { 29613 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 29614 }, 29615 version: 2, 29616 active: false 29617 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu), { 29618 nameTrans: function nameTrans() { 29619 return "".concat(window.i18next.t("common-mycj-menu-temu")); 29620 }, 29621 version: 2, 29622 type: 'authorize', 29623 active: false 29624 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 29625 nameTrans: function nameTrans() { 29626 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 29627 }, 29628 version: 2, 29629 type: 'authorize', 29630 active: false 29631 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 29632 nameTrans: function nameTrans() { 29633 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 29634 }, 29635 version: 2, 29636 type: 'authorize', 29637 active: false 29638 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shein), { 29639 nameTrans: function nameTrans() { 29640 return "".concat(window.i18next.t("common-mycj-menu-shein")); 29641 }, 29642 version: 2, 29643 type: 'authorize', 29644 active: false 29645 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.whop), { 29646 nameTrans: function nameTrans() { 29647 return "".concat(window.i18next.t("common-mycj-menu-whop", 'Whop')); 29648 }, 29649 version: 2, 29650 type: 'authorize', 29651 active: false 29652 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 29653 nameTrans: function nameTrans() { 29654 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 29655 }, 29656 version: 2, 29657 type: 'authorize', 29658 active: false 29659 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 29660 nameTrans: function nameTrans() { 29661 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 29662 }, 29663 version: 2, 29664 type: 'authorize', 29665 active: false 29666 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 29667 nameTrans: function nameTrans() { 29668 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 29669 }, 29670 version: 2, 29671 type: 'authorize', 29672 active: false 29673 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 29674 nameTrans: function nameTrans() { 29675 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 29676 }, 29677 version: 2, 29678 type: 'authorize', 29679 active: false 29680 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.ebay), { 29681 nameTrans: function nameTrans() { 29682 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 29683 }, 29684 version: 2, 29685 type: 'authorize', 29686 active: false 29687 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.api), { 29688 nameTrans: function nameTrans() { 29689 return "".concat(window.i18next.t("common-mycj-menu-api")); 29690 }, 29691 version: 2, 29692 type: 'authorize', 29693 active: false 29694 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.etsy), { 29695 nameTrans: function nameTrans() { 29696 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 29697 }, 29698 version: 2, 29699 type: 'authorize', 29700 active: false 29701 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 29702 nameTrans: function nameTrans() { 29703 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 29704 }, 29705 version: 2, 29706 type: 'authorize', 29707 active: false 29708 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.wix), { 29709 nameTrans: function nameTrans() { 29710 return "".concat(window.i18next.t("common-mycj-menu-wix")); 29711 }, 29712 version: 2, 29713 type: 'authorize', 29714 active: false 29715 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.lazada), { 29716 nameTrans: function nameTrans() { 29717 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 29718 }, 29719 version: 2, 29720 type: 'authorize', 29721 active: false 29722 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shopee), { 29723 nameTrans: function nameTrans() { 29724 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 29725 }, 29726 version: 2, 29727 type: 'authorize', 29728 active: false 29729 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 29730 nameTrans: function nameTrans() { 29731 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 29732 }, 29733 version: 2, 29734 type: 'authorize', 29735 active: false 29736 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 29737 nameTrans: function nameTrans() { 29738 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 29739 }, 29740 version: 2, 29741 type: 'authorize', 29742 active: false 29743 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.magento), { 29744 nameTrans: function nameTrans() { 29745 return "".concat(window.i18next.t("common-mycj-menu-magento")); 29746 }, 29747 version: 2, 29748 type: 'authorize', 29749 active: false 29750 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 29751 nameTrans: function nameTrans() { 29752 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 29753 }, 29754 version: 2, 29755 type: 'authorize', 29756 active: false 29757 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 29758 nameTrans: function nameTrans() { 29759 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 29760 }, 29761 version: 2, 29762 type: 'authorize', 29763 active: false 29764 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 29765 nameTrans: function nameTrans() { 29766 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 29767 }, 29768 version: 2, 29769 type: 'authorize', 29770 active: false 29771 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 29772 nameTrans: function nameTrans() { 29773 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 29774 }, 29775 version: 2, 29776 type: 'authorize', 29777 active: false 29778 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.mercado), { 29779 nameTrans: function nameTrans() { 29780 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 29781 }, 29782 version: 2, 29783 type: 'authorize', 29784 active: false 29785 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 29786 nameTrans: function nameTrans() { 29787 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 29788 }, 29789 version: 2, 29790 type: 'authorize', 29791 active: false 29792 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 29793 nameTrans: function nameTrans() { 29794 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 29795 }, 29796 version: 2, 29797 type: 'authorize', 29798 active: false 29799 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.mabang), { 29800 nameTrans: function nameTrans() { 29801 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 29802 }, 29803 version: 2, 29804 type: 'authorize', 29805 active: false 29806 })] 29807}, { 29808 name: "My ".concat(typeof window !== 'undefined' && ((bar_config_qk_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || bar_config_qk_b === void 0 ? void 0 : bar_config_qk_b.data('name'))), 29809 nameVal: "My CJ", 29810 nameTrans: function nameTrans() { 29811 var _a; 29812 return window.i18next.t("common-mycj-my-site", { 29813 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29814 }); 29815 }, 29816 iconclass: 'bianzu32', 29817 active: false, 29818 childs: [{ 29819 name: 'Dashboard', 29820 nameTrans: function nameTrans() { 29821 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 29822 }, 29823 code: 'mycj_dashboard', 29824 route: '/my.html#/dashboard', 29825 active: false, 29826 isNew: true 29827 }, { 29828 name: 'Profile', 29829 nameTrans: function nameTrans() { 29830 return "".concat(window.i18next.t("common-mycj-menu-profile")); 29831 }, 29832 code: 'mycj_profile', 29833 route: '/my.html#/profile/info', 29834 active: false 29835 }, { 29836 name: 'Ticket', 29837 nameTrans: function nameTrans() { 29838 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 29839 }, 29840 code: 'mycj_ticket', 29841 route: '/mine/ticket', 29842 active: false 29843 }, { 29844 name: 'Wallet', 29845 nameTrans: function nameTrans() { 29846 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 29847 }, 29848 code: 'mycj_wallet', 29849 route: '/mine/wallet', 29850 active: false 29851 }, { 29852 name: 'Browsing History', 29853 nameTrans: function nameTrans() { 29854 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 29855 }, 29856 code: 'mycj_browsing_history', 29857 route: '/viewHistory', 29858 active: false 29859 }, { 29860 name: 'Export List', 29861 nameTrans: function nameTrans() { 29862 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 29863 }, 29864 iconclass: 'liwuicon_', 29865 code: 'mycj_export_list', 29866 route: '/mine/exportList', 29867 active: false 29868 }, { 29869 name: 'Sub-account', 29870 nameTrans: function nameTrans() { 29871 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 29872 }, 29873 code: 'mycj_sub_account', 29874 route: '/my.html#/accountManage', 29875 active: false 29876 }, {
29877 name: 'Order-video', 29878 nameTrans: function nameTrans() { 29879 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 29880 }, 29881 code: 'mycj_order-video', 29882 route: '/mine/orderVideo', 29883 active: false, 29884 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 29885 }] 29886}]; 29887var omenus = []; 29888if (((_c = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _c === void 0 ? void 0 : _c.indexOf('Q')) > -1) { 29889 omenus = menus2; 29890} else { 29891 omenus = menus1; 29892} 29893var bar_config_qk_menus = omenus; 29894var bar_config_qk_menuPath = {}; 29895var bar_config_qk_menuNames = {}; 29896function bar_config_qk_loops(list, parent) { 29897 return (list || []).map(function (_a) { 29898 var route = _a.route, 29899 childs = _a.childs, 29900 name = _a.name, 29901 version = _a.version; 29902 var _route = route; 29903 var node = bar_config_qk_menuNames[name] = bar_config_qk_menuPath[_route] = { 29904 parent: parent, 29905 name: name, 29906 version: version, 29907 route: _route 29908 }; 29909 node['childs'] = bar_config_qk_loops(childs, node); 29910 return node; 29911 }); 29912} 29913function bar_config_qk_getPath(name) { 29914 var obj = bar_config_qk_menuNames[name]; 29915 var arr = []; 29916 while (obj && obj.name) { 29917 if (obj.childs && obj.childs[0]) { 29918 arr.push(obj.name); 29919 } else { 29920 arr.push(obj.name); 29921 } 29922 if (!obj.parent) break; 29923 obj = obj.parent; 29924 } 29925 return arr; 29926} 29927bar_config_qk_loops(bar_config_qk_menus, null); 29928var bar_config_qk_createAuthTree = function createAuthTree() { 29929 var authMapByRoute = []; 29930 var _fun = function fun(list) { 29931 return list.map(function (l) { 29932 if (l.route && l.code) authMapByRoute.push({ 29933 name: l.name, 29934 code: l.code, 29935 route: l.route 29936 }); 29937 return { 29938 name: l.name, 29939 code: l.code, 29940 route: l.route, 29941 children: l.childs && _fun(l.childs) 29942 }; 29943 }); 29944 }; 29945 return [_fun(bar_config_qk_menus), authMapByRoute]; 29946}; 29947/* harmony default export */ const bar_config_qk = ((/* unused pure expression or super */ null && (bar_config_qk_createAuthTree))); 29948;// ./src/components/Menu/bar.config.vp.ts 29949var bar_config_vp_assign = undefined && undefined.__assign || function () { 29950 bar_config_vp_assign = Object.assign || function (t) { 29951 for (var s, i = 1, n = arguments.length; i < n; i++) { 29952 s = arguments[i]; 29953 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 29954 } 29955 return t; 29956 }; 29957 return bar_config_vp_assign.apply(this, arguments); 29958}; 29959var bar_config_vp_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 29960 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 29961 if (ar || !(i in from)) { 29962 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 29963 ar[i] = from[i]; 29964 } 29965 } 29966 return to.concat(ar || Array.prototype.slice.call(from)); 29967}; 29968var bar_config_vp_a; 29969 29970 29971 29972var bar_config_vp_menus = [{ 29973 name: 'Find Products', 29974 nameTrans: function nameTrans() { 29975 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29976 }, 29977 iconclass: 'cedaohang-soupin', 29978 active: false, 29979 childs: [], 29980 route: '/home.html' 29981}, { 29982 name: 'Community', 29983 nameTrans: function nameTrans() { 29984 return "".concat(window.i18next.t("common-mycj-menu-community", 'Community')); 29985 }, 29986 iconclass: 'Community', 29987 active: false, 29988 code: 'mycj_community', 29989 childs: [{ 29990 name: 'Agents', 29991 nameTrans: function nameTrans() { 29992 return "".concat(window.i18next.t("common-mycj-menu-agent", 'Agents')); 29993 }, 29994 active: false, 29995 route: '/agents' 29996 }] 29997}, { 29998 name: 'Cart', 29999 nameTrans: function nameTrans() { 30000 return "".concat(window.i18next.t("common-mycj-menu-cart")); 30001 }, 30002 iconclass: 'bianzu51', 30003 active: false, 30004 route: '/mine/purchase/purchaseCart', 30005 childs: [], 30006 code: 'mycj_cart' 30007}, { 30008 name: 'Products', 30009 nameTrans: function nameTrans() { 30010 return "".concat(window.i18next.t("common-mycj-menu-products")); 30011 }, 30012 iconclass: 'bianzu62', 30013 active: false, 30014 code: 'mycj_products', 30015 childs: [{ 30016 name: 'My Products', 30017 nameTrans: function nameTrans() { 30018 return "".concat(window.i18next.t("common-mycj-menu-my-products")); 30019 }, 30020 code: 'mycj_my_products', 30021 route: '/mine/products/myproducts', 30022 active: false 30023 }, { 30024 name: 'Store Products', 30025 nameTrans: function nameTrans() { 30026 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 30027 }, 30028 code: 'mycj_store_products', 30029 route: '/mine/products/connection', 30030 active: false, 30031 tip: function tip() { 30032 return window.i18next.t("common-mycj-menu-store-products-tip"); 30033 } 30034 }, { 30035 name: 'Listing Records', 30036 nameTrans: function nameTrans() { 30037 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 30038 }, 30039 active: false, 30040 childs: [{ 30041 name: 'Products Records', 30042 nameTrans: function nameTrans() { 30043 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 30044 }, 30045 route: '/my.html#/products-connection/history', 30046 code: 'mycj_products_records', 30047 active: false 30048 }, {
30049 name: 'Video Records', 30050 nameTrans: function nameTrans() { 30051 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 30052 }, 30053 code: 'mycj_video_list', 30054 route: '/mine/listVideos', 30055 active: false 30056 }] 30057 }, { 30058 name: 'My Inventory', 30059 nameTrans: function nameTrans() { 30060 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 30061 }, 30062 code: 'mycj_my_inventory', 30063 route: '/mine/myInventoryNew/productInventory', 30064 active: false, 30065 tip: function tip() { 30066 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 30067 } 30068 }, { 30069 name: 'Inventory Planner', 30070 nameTrans: function nameTrans() { 30071 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 30072 }, 30073 code: 'mycj_inventory_planner', 30074 route: '/mine/inventoryPlanner', 30075 active: false 30076 }] 30077}, { 30078 name: 'Orders', 30079 nameTrans: function nameTrans() { 30080 return "".concat(window.i18next.t("common-mycj-menu-orders")); 30081 }, 30082 iconclass: 'bianzu41', 30083 active: false, 30084 code: 'mycj_orders', 30085 childs: bar_config_vp_spreadArray(bar_config_vp_spreadArray([{ 30086 name: 'Store Orders', 30087 nameTrans: function nameTrans() { 30088 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 30089 }, 30090 active: false, 30091 code: 'mycj_store_orders', 30092 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 30093 }, { 30094 name: 'Sample Orders', 30095 nameTrans: function nameTrans() { 30096 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 30097 }, 30098 active: false, 30099 code: 'mycj_sample_orders', 30100 route: '/mine/purchase/purchaseList?orderType=1' 30101 }, { 30102 name: 'Wholesale Orders', 30103 nameTrans: function nameTrans() { 30104 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 30105 }, 30106 active: false, 30107 code: 'mycj_wholesale_orders', 30108 route: '/mine/purchase/purchaseList?orderType=3' 30109 }, { 30110 name: 'Inventory Orders', 30111 nameTrans: function nameTrans() { 30112 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 30113 }, 30114 active: false, 30115 code: 'mycj_inventory_orders', 30116 route: '/mine/purchase/purchaseList?orderType=2' 30117 }], (0,common/* isSafeUser */.dn)() ? [{ 30118 name: 'Undelivered Orders', 30119 nameTrans: function nameTrans() { 30120 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 30121 }, 30122 code: 'mycj_undelivered_orders', 30123 route: '/mine/undeliveredOrder', 30124 active: false 30125 }, { 30126 name: 'Fulfillment Status', 30127 nameTrans: function nameTrans() { 30128 return "".concat(window.i18next.t("common-mycj-menu-fulfillment-status")); 30129 }, 30130 code: 'mycj_orders_tracking', 30131 route: '/mine/orderTracing/list', 30132 active: false 30133 }] : [], true), [{ 30134 name: 'Disputes', 30135 nameTrans: function nameTrans() { 30136 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 30137 }, 30138 code: 'mycj_disputes', 30139 route: '/mine/dispute/list', 30140 active: false 30141 }], false) 30142}, { 30143 name: 'Service', 30144 nameTrans: function nameTrans() { 30145 return "".concat(window.i18next.t("common-mycj-menu-service")); 30146 }, 30147 iconclass: 'bianzu71', 30148 active: false, 30149 code: 'mycj_service', 30150 childs: bar_config_vp_spreadArray(bar_config_vp_spreadArray(bar_config_vp_spreadArray(bar_config_vp_spreadArray([], (0,common/* isSafeUser */.dn)() ? [{ 30151 name: 'Sourcing', 30152 nameTrans: function nameTrans() { 30153 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 30154 }, 30155 code: 'mycj_sourcing', 30156 route: '/mine/sourcing/list', 30157 active: false, 30158 tip: function tip() { 30159 return window.i18next.t("common-mycj-menu-sourcing-tip"); 30160 } 30161 }] : [], true), [{ 30162 name: 'Custom Packaging', 30163 nameTrans: function nameTrans() { 30164 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 30165 }, 30166 code: 'mycj_custom_packaging', 30167 route: '/my.html#/regular-packaging', 30168 active: false, 30169 tip: function tip() { 30170 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 30171 } 30172 }], false), (0,common/* isSafeUser */.dn)() ? [{ 30173 name: 'Customization', 30174 nameTrans: function nameTrans() { 30175 return "".concat(window.i18next.t("common-mycj-menu-customization")); 30176 }, 30177 code: 'mycj_customization', 30178 route: '/mine/customization', 30179 active: false, 30180 tip: function tip() { 30181 var _a; 30182 return window.i18next.t("common-mycj-menu-customization-tip", { 30183 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30184 }); 30185 } 30186 }, { 30187 name: 'Print on Demand', 30188 nameTrans: function nameTrans() { 30189 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 30190 }, 30191 active: false, 30192 tip: function tip() { 30193 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 30194 }, 30195 childs: [{ 30196 name: 'POD Products', 30197 nameTrans: function nameTrans() { 30198 return "".concat(window.i18next.t("common-mycj-menu-pod-products")); 30199 }, 30200 route: '/printonDemand/home', 30201 active: false 30202 }, {
30203 name: "Buyer's Design", 30204 nameTrans: function nameTrans() { 30205 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 30206 }, 30207 iconclass: 'maijiaxinxi', 30208 code: 'mycj_buyers_design', 30209 route: '/my.html#/pod/buyer-design', 30210 active: false, 30211 tipName: 'Connected POD products in your store.' 30212 }, { 30213 name: 'Design Myself', 30214 nameTrans: function nameTrans() { 30215 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 30216 }, 30217 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 30218 code: 'mycj_design_myself', 30219 route: '/my.html#/pod/design-myself', 30220 active: false, 30221 tipName: 'Your designed products on CJ.' 30222 }] 30223 }] : [], true), [{ 30224 name: '3PL Fulfillment', 30225 nameTrans: function nameTrans() { 30226 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 30227 }, 30228 active: false, 30229 tip: function tip() { 30230 var _a; 30231 return window.i18next.t("common-mycj-menu-3pl-tip", { 30232 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30233 }); 30234 }, 30235 childs: [{ 30236 name: 'Products', 30237 nameTrans: function nameTrans() { 30238 return "".concat(window.i18next.t("common-mycj-menu-products")); 30239 }, 30240 code: 'mycj_3pl_products', 30241 route: '/my.html#/products-connection/goods', 30242 active: false 30243 }, {
30244 name: 'Shipment', 30245 nameTrans: function nameTrans() { 30246 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 30247 }, 30248 code: 'mycj_3pl_shipment', 30249 route: '/mine/shipment', 30250 active: false 30251 }] 30252 }], false) 30253}, { 30254 name: 'Authorization', 30255 nameTrans: function nameTrans() { 30256 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 30257 }, 30258 iconclass: 'dianpushouquan', 30259 active: false, 30260 special: true, 30261 code: 'mycj_authorization', 30262 childs: [bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shopify), { 30263 nameTrans: function nameTrans() { 30264 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 30265 }, 30266 version: 2, 30267 active: false 30268 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 30269 nameTrans: function nameTrans() { 30270 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 30271 }, 30272 version: 2, 30273 active: false 30274 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu), { 30275 nameTrans: function nameTrans() { 30276 return "".concat(window.i18next.t("common-mycj-menu-temu")); 30277 }, 30278 version: 2, 30279 type: 'authorize', 30280 active: false 30281 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 30282 nameTrans: function nameTrans() { 30283 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 30284 }, 30285 version: 2, 30286 type: 'authorize', 30287 active: false 30288 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 30289 nameTrans: function nameTrans() { 30290 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 30291 }, 30292 version: 2, 30293 type: 'authorize', 30294 active: false 30295 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shein), { 30296 nameTrans: function nameTrans() { 30297 return "".concat(window.i18next.t("common-mycj-menu-shein")); 30298 }, 30299 version: 2, 30300 type: 'authorize', 30301 active: false 30302 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.whop), { 30303 nameTrans: function nameTrans() { 30304 return "".concat(window.i18next.t("common-mycj-menu-whop", 'Whop')); 30305 }, 30306 version: 2, 30307 type: 'authorize', 30308 active: false 30309 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 30310 nameTrans: function nameTrans() { 30311 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 30312 }, 30313 version: 2, 30314 type: 'authorize', 30315 active: false 30316 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 30317 nameTrans: function nameTrans() { 30318 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 30319 }, 30320 version: 2, 30321 type: 'authorize', 30322 active: false 30323 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 30324 nameTrans: function nameTrans() { 30325 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 30326 }, 30327 version: 2, 30328 type: 'authorize', 30329 active: false 30330 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 30331 nameTrans: function nameTrans() { 30332 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 30333 }, 30334 version: 2, 30335 type: 'authorize', 30336 active: false 30337 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.ebay), { 30338 nameTrans: function nameTrans() { 30339 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 30340 }, 30341 version: 2, 30342 type: 'authorize', 30343 active: false 30344 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.api), { 30345 nameTrans: function nameTrans() { 30346 return "".concat(window.i18next.t("common-mycj-menu-api")); 30347 }, 30348 version: 2, 30349 type: 'authorize', 30350 active: false 30351 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.etsy), { 30352 nameTrans: function nameTrans() { 30353 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 30354 }, 30355 version: 2, 30356 type: 'authorize', 30357 active: false 30358 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 30359 nameTrans: function nameTrans() { 30360 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 30361 }, 30362 version: 2, 30363 type: 'authorize', 30364 active: false 30365 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.wix), { 30366 nameTrans: function nameTrans() { 30367 return "".concat(window.i18next.t("common-mycj-menu-wix")); 30368 }, 30369 version: 2, 30370 type: 'authorize', 30371 active: false 30372 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.lazada), { 30373 nameTrans: function nameTrans() { 30374 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 30375 }, 30376 version: 2, 30377 type: 'authorize', 30378 active: false 30379 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shopee), { 30380 nameTrans: function nameTrans() { 30381 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 30382 }, 30383 version: 2, 30384 type: 'authorize', 30385 active: false 30386 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 30387 nameTrans: function nameTrans() { 30388 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 30389 }, 30390 version: 2, 30391 type: 'authorize', 30392 active: false 30393 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 30394 nameTrans: function nameTrans() { 30395 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 30396 }, 30397 version: 2, 30398 type: 'authorize', 30399 active: false 30400 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.magento), { 30401 nameTrans: function nameTrans() { 30402 return "".concat(window.i18next.t("common-mycj-menu-magento")); 30403 }, 30404 version: 2, 30405 type: 'authorize', 30406 active: false 30407 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 30408 nameTrans: function nameTrans() { 30409 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 30410 }, 30411 version: 2, 30412 type: 'authorize', 30413 active: false 30414 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 30415 nameTrans: function nameTrans() { 30416 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 30417 }, 30418 version: 2, 30419 type: 'authorize', 30420 active: false 30421 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 30422 nameTrans: function nameTrans() { 30423 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 30424 }, 30425 version: 2, 30426 type: 'authorize', 30427 active: false 30428 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 30429 nameTrans: function nameTrans() { 30430 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 30431 }, 30432 version: 2, 30433 type: 'authorize', 30434 active: false 30435 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.mercado), { 30436 nameTrans: function nameTrans() { 30437 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 30438 }, 30439 version: 2, 30440 type: 'authorize', 30441 active: false 30442 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 30443 nameTrans: function nameTrans() { 30444 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 30445 }, 30446 version: 2, 30447 type: 'authorize', 30448 active: false 30449 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 30450 nameTrans: function nameTrans() { 30451 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 30452 }, 30453 version: 2, 30454 type: 'authorize', 30455 active: false 30456 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.mabang), { 30457 nameTrans: function nameTrans() { 30458 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 30459 }, 30460 version: 2, 30461 type: 'authorize', 30462 active: false 30463 })] 30464}, { 30465 name: "My ".concat(typeof window !== 'undefined' && ((bar_config_vp_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || bar_config_vp_a === void 0 ? void 0 : bar_config_vp_a.data('name'))), 30466 nameVal: "My CJ", 30467 nameTrans: function nameTrans() { 30468 var _a; 30469 return window.i18next.t("common-mycj-my-site", { 30470 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('source-name') 30471 }); 30472 }, 30473 iconclass: 'bianzu32', 30474 active: false, 30475 childs: [{ 30476 name: 'Dashboard', 30477 nameTrans: function nameTrans() { 30478 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 30479 }, 30480 code: 'mycj_dashboard', 30481 route: '/my.html#/dashboard', 30482 active: false, 30483 isNew: true 30484 }, { 30485 name: 'Profile', 30486 nameTrans: function nameTrans() { 30487 return "".concat(window.i18next.t("common-mycj-menu-profile")); 30488 }, 30489 code: 'mycj_profile', 30490 route: '/my.html#/profile/info', 30491 active: false 30492 }, { 30493 name: 'Ticket', 30494 nameTrans: function nameTrans() { 30495 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 30496 }, 30497 code: 'mycj_ticket', 30498 route: '/mine/ticket', 30499 active: false 30500 }, { 30501 name: 'Wallet', 30502 nameTrans: function nameTrans() { 30503 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 30504 }, 30505 code: 'mycj_wallet', 30506 route: '/mine/wallet', 30507 active: false 30508 }, { 30509 name: 'Browsing History', 30510 nameTrans: function nameTrans() { 30511 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 30512 }, 30513 code: 'mycj_browsing_history', 30514 route: '/viewHistory', 30515 active: false 30516 }, { 30517 name: 'Export List', 30518 nameTrans: function nameTrans() { 30519 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 30520 }, 30521 iconclass: 'liwuicon_', 30522 code: 'mycj_export_list', 30523 route: '/mine/exportList', 30524 active: false 30525 }, { 30526 name: 'Sub-account', 30527 nameTrans: function nameTrans() { 30528 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 30529 }, 30530 code: 'mycj_sub_account', 30531 route: '/my.html#/accountManage', 30532 active: false 30533 }, {
30534 name: 'Order-video', 30535 nameTrans: function nameTrans() { 30536 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 30537 }, 30538 code: 'mycj_order-video', 30539 route: '/mine/orderVideo', 30540 active: false, 30541 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 30542 }] 30543}]; 30544var bar_config_vp_menuPath = {}; 30545var bar_config_vp_menuNames = {}; 30546function bar_config_vp_loops(list, parent) { 30547 return (list || []).map(function (_a) { 30548 var route = _a.route, 30549 childs = _a.childs, 30550 name = _a.name, 30551 version = _a.version; 30552 var _route = route; 30553 var node = bar_config_vp_menuNames[name] = bar_config_vp_menuPath[_route] = { 30554 parent: parent, 30555 name: name, 30556 version: version, 30557 route: _route 30558 }; 30559 node['childs'] = bar_config_vp_loops(childs, node); 30560 return node; 30561 }); 30562} 30563function bar_config_vp_getPath(name) { 30564 var obj = bar_config_vp_menuNames[name]; 30565 var arr = []; 30566 while (obj && obj.name) { 30567 if (obj.childs && obj.childs[0]) { 30568 arr.push(obj.name); 30569 } else { 30570 arr.push(obj.name); 30571 } 30572 if (!obj.parent) break; 30573 obj = obj.parent; 30574 } 30575 return arr; 30576} 30577bar_config_vp_loops(bar_config_vp_menus, null); 30578var bar_config_vp_createAuthTree = function createAuthTree() { 30579 var authMapByRoute = []; 30580 var _fun = function fun(list) { 30581 return list.map(function (l) { 30582 if (l.route && l.code) authMapByRoute.push({ 30583 name: l.name, 30584 code: l.code, 30585 route: l.route 30586 }); 30587 return { 30588 name: l.name, 30589 code: l.code, 30590 route: l.route, 30591 children: l.childs && _fun(l.childs) 30592 }; 30593 }); 30594 }; 30595 return [_fun(bar_config_vp_menus), authMapByRoute]; 30596}; 30597/* harmony default export */ const bar_config_vp = ((/* unused pure expression or super */ null && (bar_config_vp_createAuthTree))); 30598;// ./src/components/Menu/bar.config.th.ts 30599var bar_config_th_a, bar_config_th_b; 30600 30601 30602var bar_config_th_isNewUser = ((bar_config_th_a = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || bar_config_th_a === void 0 ? void 0 : bar_config_th_a.indexOf('N')) > -1 || !js_cookie/* default */.A.get('token'); 30603var bar_config_th_menus = [{ 30604 name: 'Cart', 30605 nameTrans: function nameTrans() { 30606 return "".concat(window.i18next.t("common-mycj-menu-cart")); 30607 }, 30608 iconclass: 'gouwuche', 30609 active: false, 30610 route: '/mine/purchase/purchaseCart?cartType=3', 30611 childs: [], 30612 code: 'mycj_cart' 30613}, { 30614 name: 'Orders', 30615 nameTrans: function nameTrans() { 30616 return "".concat(window.i18next.t("common-mycj-menu-orders")); 30617 }, 30618 iconclass: 'Orders', 30619 active: false, 30620 code: 'mycj_orders', 30621 childs: [{ 30622 name: 'My Orders', 30623 nameTrans: function nameTrans() { 30624 return "".concat(window.i18next.t("common-mycj-menu-my-orders", 'My Orders')); 30625 }, 30626 active: false, 30627 code: 'mycj_wholesale_orders', 30628 route: '/mine/purchase/purchaseList?orderType=3' 30629 }, { 30630 name: 'Undelivered Orders', 30631 nameTrans: function nameTrans() { 30632 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 30633 }, 30634 code: 'mycj_undelivered_orders', 30635 route: '/mine/undeliveredOrder', 30636 active: false 30637 }, { 30638 name: 'Disputes', 30639 nameTrans: function nameTrans() { 30640 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 30641 }, 30642 code: 'mycj_disputes', 30643 route: '/mine/dispute/list', 30644 active: false 30645 }] 30646}, { 30647 name: "My ".concat(typeof window !== 'undefined' && ((bar_config_th_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || bar_config_th_b === void 0 ? void 0 : bar_config_th_b.data('name'))), 30648 nameVal: "My CJ", 30649 nameTrans: function nameTrans() { 30650 var _a; 30651 return window.i18next.t("common-mycj-my-site", { 30652 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30653 }); 30654 }, 30655 iconclass: 'MonTH', 30656 active: false, 30657 childs: [{ 30658 name: 'Profile', 30659 nameTrans: function nameTrans() { 30660 return "".concat(window.i18next.t("common-mycj-menu-profile")); 30661 }, 30662 code: 'mycj_profile', 30663 route: '/my.html#/profile/info', 30664 active: false 30665 }, { 30666 name: 'Wallet', 30667 nameTrans: function nameTrans() { 30668 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 30669 }, 30670 code: 'mycj_wallet', 30671 route: '/mine/wallet', 30672 active: false 30673 }, {
30674 name: 'Order-video', 30675 nameTrans: function nameTrans() { 30676 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 30677 }, 30678 code: 'mycj_order-video', 30679 route: '/mine/orderVideo', 30680 active: false, 30681 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 30682 }] 30683}]; 30684var bar_config_th_menuPath = {}; 30685var bar_config_th_menuNames = {}; 30686function bar_config_th_loops(list, parent) { 30687 return (list || []).map(function (_a) { 30688 var route = _a.route, 30689 childs = _a.childs, 30690 name = _a.name, 30691 version = _a.version, 30692 nameTrans = _a.nameTrans; 30693 var _route = route; 30694 var node = bar_config_th_menuNames[name] = bar_config_th_menuPath[_route] = { 30695 parent: parent, 30696 nameTrans: nameTrans, 30697 name: name, 30698 version: version, 30699 route: _route 30700 }; 30701 node['childs'] = bar_config_th_loops(childs, node); 30702 return node; 30703 }); 30704} 30705function bar_config_th_getPath(name) { 30706 var obj = bar_config_th_menuNames[name]; 30707 var arr = []; 30708 while (obj && obj.name) { 30709 if (obj.childs && obj.childs[0]) { 30710 arr.push(obj.name); 30711 } else { 30712 arr.push(obj.name); 30713 } 30714 if (!obj.parent) break; 30715 obj = obj.parent; 30716 } 30717 return arr; 30718} 30719function getTransPath(name) { 30720 var obj = bar_config_th_menuNames[name]; 30721 var arr = []; 30722 while (obj && obj.nameTrans) { 30723 if (obj.childs && obj.childs[0]) { 30724 arr.push(obj.nameTrans); 30725 } else { 30726 arr.push(obj.nameTrans); 30727 } 30728 if (!obj.parent) break; 30729 obj = obj.parent; 30730 } 30731 return arr; 30732} 30733bar_config_th_loops(bar_config_th_menus, null); 30734var bar_config_th_createAuthTree = function createAuthTree() { 30735 var authMapByRoute = []; 30736 var _fun = function fun(list) { 30737 return list.map(function (l) { 30738 if (l.route && l.code) authMapByRoute.push({ 30739 name: l.name, 30740 code: l.code, 30741 route: l.route 30742 }); 30743 return { 30744 name: l.name, 30745 code: l.code, 30746 route: l.route, 30747 children: l.childs && _fun(l.childs) 30748 }; 30749 }); 30750 }; 30751 return [_fun(bar_config_th_menus), authMapByRoute]; 30752}; 30753/* harmony default export */ const bar_config_th = ((/* unused pure expression or super */ null && (bar_config_th_createAuthTree))); 30754// EXTERNAL MODULE: ./node_modules/@cckj/mf-tools/dist/index.js 30755var dist = __webpack_require__(99437); 30756;// ./src/components/Menu/hooks/useNoMenuActiveRoute.ts 30757 30758var noMenuRouteConfig = [{ 30759 routes: [/\/improperProductsReport/i, /\/global-warehouses/i, /\/temu-y2-products/i, /\/ready-to-ship/i, /\/list\/(.*?)\.html/i, /\/product\//i, /\/productReport\/list/i, /\/PrintonDemand.html/i, /\/search(.*?).html/i, /\/view-more/i, /\/seller/i, /\/boards.html/i, /\/recommendations/i, /\/zone\//i], 30760 activeMenu: 'Find Products' 30761}, { 30762 routes: [/\/mine\/purchase\/purchaseConfirmation/i], 30763 activeMenu: 'Cart' 30764}, { 30765 routes: [/\/mine\/dropshipping\/orderManage\/orderDetial/i, /\/mine\/orderImport/i], 30766 activeMenu: 'Store Orders' 30767}, { 30768 routes: [/\/mine\/purchase\/detial(.*?)type=1/i, /\/mine\/dispute\/createDispute(.*?)purchaseOrderType=1/i], 30769 activeMenu: 'Sample Orders' 30770}, { 30771 routes: [/\/mine\/purchase\/detial(.*?)type=3/i, /\/mine\/dispute\/createDispute(.*?)purchaseOrderType=3/i], 30772 activeMenu: 'Wholesale Orders' 30773}, { 30774 routes: [/\/mine\/purchase\/detial(.*?)type=(2|4)/i, /\/mine\/purchase\/purchaseList(.*?)orderType=4/i], 30775 activeMenu: 'Inventory Orders' 30776}, { 30777 routes: [/\/mine\/orderTracing\/detail/i], 30778 activeMenu: 'Fulfillment Status' 30779}, { 30780 routes: [/\/mine\/sourcing\/postSourcing/i, /\/mine\/quickSourcing/i], 30781 activeMenu: 'Sourcing' 30782}, { 30783 routes: [/\/mine\/marketing\/cards/i, /\/my.html#\/all-message/i, /\/points-mall/i], 30784 activeMenu: 'Home' 30785}, { 30786 routes: [/\/viewHistory/i], 30787 activeMenu: 'Browsing History' 30788}, { 30789 routes: [/\/mine\/myInventoryNew/i, /\/mine\/myInventory\/deposit\?type=2/i, /\/mine\/myInventory\/depositBySPU\?type=2/i
30789], 30790 activeMenu: 'My Inventory' 30791}]; 30792function useNoMenuActiveRoute(_a) { 30793 var setActive = _a.setActive, 30794 _b = _a.autoRun, 30795 autoRun = _b === void 0 ? true : _b; 30796 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30797 if (!autoRun) return; 30798 noMenuRouteConfig.some(function (config) { 30799 var path = location.href; 30800 var match = config.routes.find(function (_) { 30801 return _.test(path); 30802 }); 30803 if (match) { 30804 setActive(config.activeMenu); 30805 } 30806 return match; 30807 }); 30808 }, []); 30809} 30810// EXTERNAL MODULE: ./src/components/CjHeader/contexts/PropsContext.ts 30811var PropsContext = __webpack_require__(44148); 30812// EXTERNAL MODULE: ./src/hook/use-is-mycj.ts 30813var use_is_mycj = __webpack_require__(71850); 30814;// ./src/components/Menu/hooks/useWindowTitle.ts 30815var useWindowTitle_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 30816 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 30817 if (ar || !(i in from)) { 30818 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 30819 ar[i] = from[i]; 30820 } 30821 } 30822 return to.concat(ar || Array.prototype.slice.call(from)); 30823}; 30824 30825 30826 30827function useWindowTitle(_a) { 30828 var activeRoutes = _a.activeRoutes, 30829 activeTransRoutes = _a.activeTransRoutes; 30830 var siteCheck = (0,PropsContext/* useGlobalProps */.v)().siteCheck; 30831 var isMyCJPage = (0,use_is_mycj/* default */.A)().isMyCJPage; 30832 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30833 if (activeTransRoutes && activeTransRoutes.length && isMyCJPage) { 30834 var trans = useWindowTitle_spreadArray([], activeTransRoutes, true).shift(); 30835 var transTitle = trans ? trans() : ''; 30836 transTitle && (document.title = transTitle); 30837 return; 30838 } 30839 if (activeRoutes.length > 0 && isMyCJPage) { 30840 var routeName = useWindowTitle_spreadArray([], activeRoutes, true).shift(); 30841 if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok_us_cross') { 30842 routeName = 'TikTok Shop US (Cross Border)'; 30843 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok_us') { 30844 routeName = 'TikTok Shop US (Local)'; 30845 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok') { 30846 routeName = 'TikTok Shop (Non-US)'; 30847 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu') { 30848 routeName = 'Temu Semi-Managed'; 30849 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu_us_local') { 30850 routeName = 'Temu Local'; 30851 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu_certified_overseas') { 30852 routeName = 'Temu Cooperative Warehouse'; 30853 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'shein') { 30854 routeName = 'Shein Semi-Managed'; 30855 } 30856 routeName && (document.title = routeName); 30857 } 30858 if (activeRoutes.length == 0 && isMyCJPage) { 30859 document.title = "My".concat(siteCheck.data('name') || 'CJ'); 30860 } 30861 }, [activeRoutes]); 30862} 30863// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsQk.ts 30864var useIsQk = __webpack_require__(69055); 30865// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsVP.ts 30866var useIsVP = __webpack_require__(63301); 30867;// ./src/components/Menu/hooks/useActiveRoute.ts 30868function useActiveRoute_typeof(o) { "@babel/helpers - typeof"; return useActiveRoute_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, useActiveRoute_typeof(o); } 30869var useActiveRoute_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 30870 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 30871 if (ar || !(i in from)) { 30872 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 30873 ar[i] = from[i]; 30874 } 30875 } 30876 return to.concat(ar || Array.prototype.slice.call(from)); 30877}; 30878 30879 30880 30881 30882 30883 30884 30885 30886 30887 30888 30889 30890 30891 30892 30893 30894 30895 30896 30897 30898 30899var useActiveRoute = function useActiveRoute() { 30900 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 30901 activeRoutes = _a[0], 30902 setActiveRoutes = _a[1]; 30903 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 30904 activeTransRoutes = _b[0], 30905 setActiveTransRoutes = _b[1]; 30906 var _c = (0,use_parent_platform/* default */.A)(), 30907 isCj = _c.isCj, 30908 isGlobalWarehouse = _c.isGlobalWarehouse, 30909 isSupplier = _c.isSupplier; 30910 var siteCheck = (0,use_site_check/* default */.A)();
30911 var _menuPath = isQs() ? bar_config_qs_menuPath : bar_config/* menuPath */.DD; 30912 if (useIsCf()) _menuPath = menuPath; 30913 if ((0,useIsQk/* default */.A)()) _menuPath = bar_config_qk_menuPath; 30914 if ((0,useIsVP/* default */.A)()) _menuPath = bar_config_vp_menuPath; 30915 if ((0,common/* is1688 */.G3)(siteCheck)) _menuPath = bar_config_th_menuPath; 30916 if ((0,useIsZS/* default */.A)(siteCheck)) _menuPath = bar_config_zs/* menuPath */.DD; 30917 var currentMenuNames = Object.keys(_menuPath).map(function (route) { 30918 var _a; 30919 return (_a = _menuPath[route]) === null || _a === void 0 ? void 0 : _a.name; 30920 }).filter(Boolean); 30921 var pickMenuName = function pickMenuName() { 30922 var names = []; 30923 for (var _i = 0; _i < arguments.length; _i++) { 30924 names[_i] = arguments[_i]; 30925 } 30926 return names.find(function (name) { 30927 return currentMenuNames.includes(name); 30928 }); 30929 }; 30930 var normalizeRouteName = function normalizeRouteName(routeName) { 30931 if (routeName === 'Profile' || routeName === 'Settings') { 30932 return pickMenuName(routeName, routeName === 'Profile' ? 'Settings' : 'Profile') || routeName; 30933 } 30934 if (routeName === 'Home') { 30935 return pickMenuName('Home', 'Find Products', 'Dashboard') || routeName; 30936 } 30937 if (routeName === 'Shipping Calculation') { 30938 return pickMenuName('Shipping Calculation', 'Find Products') || routeName; 30939 } 30940 return routeName; 30941 }; 30942 useWindowTitle({ 30943 activeRoutes: activeRoutes, 30944 activeTransRoutes: activeTransRoutes 30945 }); 30946 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30947 var token = login_info_controller/* default */.A.info('token'); 30948 var pathname = location.pathname; 30949 var isMycj = pathname.indexOf('my.html') > -1 || pathname.indexOf('/mine') > -1; 30950 if (token.includes('@VP:') && !location.href.includes('fulfillvip') && isMycj) { 30951 var url = location.hostname.includes('offline.pre') ? 'http://www.fulfillvip.offline.pre.com' : 'https://www.fulfillvip.com'; 30952 location.href = "".concat(url, "/toLogin.html?jumpVP=true&token=").concat(base64/* Base64 */.o4.encode(token)); 30953 } 30954 var path = location.pathname || ''; 30955 dist.mfEvent.$on('on-url-changed', function (data) { 30956 var _a, _b, _c; 30957 if ((path === null || path === void 0 ? void 0 : path.indexOf('my.html')) === -1) return; 30958 var name = data.name || data.names; 30959 var child = data.child || ''; 30960 if (name && useActiveRoute_typeof(name) === 'object') { 30961 var path_1 = location.pathname || ''; 30962 if (path_1.indexOf('my.html') > -1) { 30963 var url = (_c = (_b = (_a = location.hash) === null || _a === void 0 ? void 0 : _a.split('?')[0]) === null || _b === void 0 ? void 0 : _b.replace('#', '')) !== null && _c !== void 0 ? _c : ''; 30964 if (url.indexOf('/authorize') > -1) name = name[url]; 30965 } 30966 } 30967 if (child) name = child; 30968 if (name == 'Queue') { 30969 if (location.hash.indexOf('/products-connection/history/0') === -1) name = 'Products Records'; 30970 } 30971 if (/products-connection\/.*?-connection/i.test(location.hash)) { 30972 name = 'Store Products'; 30973 } 30974 if (useIsCf()) { 30975 if (name === 'Products') { 30976 name = 'My Products'; 30977 } 30978 } 30979 setActive(normalizeRouteName(name)); 30980 }); 30981 if (!path || path === '/') { 30982 if (isCj || isGlobalWarehouse) setActive((0,useIsZS/* default */.A)(siteCheck) ? 'Store Orders' : pickMenuName('Catalog', 'Find Products', 'Home', 'Dashboard') || 'Find Products'); 30983 } 30984 if (path === '/home') { 30985 setActive(normalizeRouteName('Home')); 30986 } 30987 if (path === '/home.html') { 30988 setActive(pickMenuName('Catalog', 'Find Products', 'Home', 'Dashboard') || 'Find Products'); 30989 } 30990 if (path === '/calculation.html') { 30991 setActive(normalizeRouteName('Shipping Calculation')); 30992 } 30993 if (path === '/mentors') { 30994 setActive('Academy'); 30995 } else if (path === '/savedFactories') { 30996 setActive('Saved Factories'); 30997 } else if (path === '/factories' || path === '/factoryDetail') { 30998 setActive('Factories'); 30999 } 31000 if (['/agents', '/agents/detail', '/mine/agents/serviceOrders', '/mine/agents/serviceComplaints'].includes(path) || /agents\/\d+/i.test(path)) {
31001 setActive('Agents'); 31002 } 31003 if (isSupplier) { 31004 setActive('Brands'); 31005 } 31006 if ((0,useIsZS/* default */.A)(siteCheck) && (path == '/list/wholesale-all-categories-l-all.html' || path.indexOf('/search/') > -1)) { 31007 setActive('Catalog'); 31008 } 31009 if (/\/intelligence/i.test(path)) { 31010 setActive('Intelligence'); 31011 } 31012 }, []); 31013 var path = location.pathname || ''; 31014 var verifyWidthUS = function verifyWidthUS(lcPath, lcName) { 31015 var verifyTTUS = lcPath.toLowerCase().indexOf('tiktok_us') > -1 ? lcPath.toLowerCase().indexOf('tiktok_us_cross') > -1 ? lcName == 'tiktok_us_cross' : lcName == 'tiktok_us' : true; 31016 var verifyTemu = lcPath.toLowerCase().indexOf('temu') > -1 ? lcPath.toLowerCase().indexOf('temu_us_local') > -1 ? lcName == 'temu_us_local' : lcPath.toLowerCase().indexOf('temu_certified_overseas') > -1 ? lcName == 'temu_certified_overseas' : lcName == 'temu' : true; 31017 return verifyTTUS && verifyTemu; 31018 }; 31019 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31020 if (path.startsWith('/mine')) { 31021 var findRouteName = ''; 31022 var bestRouteLen = -1; 31023 var routes = Object.keys(_menuPath); 31024 for (var _i = 0, routes_1 = routes; _i < routes_1.length; _i++) { 31025 var route = routes_1[_i]; 31026 var pureRoute = route.split('?')[0]; 31027 if (path.indexOf(pureRoute) > -1 || _menuPath[route].version === 2) { 31028 if (_menuPath[route].version === 2) { 31029 var lcPath = path.toLowerCase(); 31030 var lcName = _menuPath[route].name.toLowerCase(); 31031 if (lcPath.toLowerCase().indexOf(lcName) > -1 && verifyWidthUS(lcPath, lcName)) { 31032 findRouteName = _menuPath[route].name; 31033 break; 31034 } 31035 var lcName2 = lcName.replace(/\s+/g, '').replace('-', '_'); 31036 if (lcPath.indexOf(lcName2) > -1 && verifyWidthUS(lcPath, lcName2)) { 31037 findRouteName = _menuPath[route].name; 31038 break; 31039 } 31040 } else if ((pureRoute || '').length > bestRouteLen) { 31041 bestRouteLen = (pureRoute || '').length; 31042 findRouteName = _menuPath[route].name; 31043 } 31044 } 31045 } 31046 if (path.indexOf('/mine/purchase/purchaseList') > -1) { 31047 var search = location.search; 31048 var searchObj = search.slice(1).split('&').reduce(function (obj, item) { 31049 var _a = item.split('='), 31050 key = _a[0], 31051 value = _a[1]; 31052 obj[key] = value; 31053 return obj; 31054 }, {}); 31055 var orderType = searchObj.orderType; 31056 if (orderType) { 31057 findRouteName = { 31058 '1': 'Sample Orders', 31059 '2': 'Inventory Orders', 31060 '3': (0,common/* is1688 */.G3)(siteCheck) ? 'My Orders' : 'Wholesale Orders' 31061 }[orderType]; 31062 } 31063 } 31064 if (path.indexOf('/products/patchPack') > -1) { 31065 var search = location.search; 31066 var params = new URLSearchParams(search); 31067 var from = params.get('from'); 31068 if (from === 'AddedProducts') { 31069 findRouteName = 'Added Products'; 31070 } else if (from === 'StoreProducts') { 31071 findRouteName = 'Store Products'; 31072 } else { 31073 findRouteName = 'Cart'; 31074 } 31075 } 31076 if (findRouteName) { 31077 setActive(findRouteName); 31078 } 31079 } 31080 }, [path, location.search]); 31081 var setActive = function setActive(routeName) { 31082 var _getPath = isQs() ? bar_config_qs_getPath : bar_config/* getPath */.Yn; 31083 if ((0,useIsZS/* default */.A)(siteCheck)) _getPath = bar_config_zs/* getPath */.Yn; 31084 if ((0,useIsQk/* default */.A)()) _getPath = bar_config_qk_getPath; 31085 if ((0,useIsVP/* default */.A)()) _getPath = bar_config_vp_getPath; 31086 if (useIsCf()) _getPath = getPath; 31087 if ((0,common/* is1688 */.G3)(siteCheck)) { 31088 _getPath = bar_config_th_getPath; 31089 var transPath = getTransPath(routeName); 31090 setActiveTransRoutes(transPath); 31091 } 31092 var arr = _getPath(routeName); 31093 setActiveRoutes(useActiveRoute_spreadArray([], arr, true)); 31094 }; 31095 var isZesty = (0,useIsZS/* default */.A)(); 31096 var autoRun = isZesty ? false : true; 31097 useNoMenuActiveRoute({ 31098 setActive: setActive, 31099 autoRun: autoRun 31100 }); 31101 var isActive = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (routeName) { 31102 var arr = activeRoutes.slice(0, activeRoutes.length - 1); 31103 return arr.includes(routeName); 31104 }, [activeRoutes]); 31105 var isParentActive = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (routeName) { 31106 var len = activeRoutes.length; 31107 return activeRoutes[len - 1] === routeName; 31108 }, [activeRoutes]); 31109 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31110 if (activeRoutes.length > 0) { 31111 var routeName = useActiveRoute_spreadArray([], activeRoutes, true).pop(); 31112 var curRouteDom_1 = document.querySelector("[data-route=\"".concat(routeName, "\"]")); 31113 if ((0,common/* isInViewport */.cH)(curRouteDom_1, 134)) return; 31114 setTimeout(function () { 31115 curRouteDom_1 === null || curRouteDom_1 === void 0 ? void 0 : curRouteDom_1.scrollIntoView({ 31116 block: 'start', 31117 behavior: 'smooth' 31118 }); 31119 }, 500); 31120 } 31121 }, [activeRoutes]); 31122 return { 31123 isActive: isActive, 31124 isParentActive: isParentActive 31125 }; 31126}; 31127/* harmony default export */ const hooks_useActiveRoute = (useActiveRoute); 31128;// ./src/components/Menu/hooks/useIsCollapsed.ts 31129 31130 31131 31132 31133 31134var collapsedWidth = 65; 31135var expandedWidth = 220; 31136var zestyMenuCollapsedWidth = 80; 31137var useCollapsed = function useCollapsed() { 31138 var _a; 31139 var siteCheck = (0,PropsContext/* useGlobalProps */.v)().siteCheck; 31140 var menuCollapsed = (_a = js_cookie/* default */.A.get('menuCollapsed')) !== null && _a !== void 0 ? _a : siteCheck.data('default-menu-collapsed') || 'false'; 31141 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(JSON.parse(menuCollapsed)), 31142 isCollapsed = _b[0], 31143 setIsCollapsed = _b[1]; 31144 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)((0,common/* is1688 */.G3)(siteCheck) ? false : true), 31145 allowSwitch = _c[0], 31146 setAllowSwitch = _c[1]; 31147 var isZesty = siteCheck.isSite('ZS'); 31148 var theMenuCollapsedWidth = isZesty ? zestyMenuCollapsedWidth : collapsedWidth; 31149 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31150 if ((0,common/* is1688 */.G3)(siteCheck)) return; 31151 var handleResize = function handleResize() { 31152 if (window.innerWidth < 1440) { 31153 toggle('1'); 31154 setAllowSwitch(false); 31155 } else { 31156 setAllowSwitch(true); 31157 } 31158 }; 31159 window.addEventListener('resize', handleResize); 31160 handleResize(); 31161 return function () { 31162 return window.removeEventListener('resize', handleResize); 31163 }; 31164 }, []); 31165 var toggle = function toggle(_collapsed) { 31166 if (_collapsed === void 0) { 31167 _collapsed = ''; 31168 } 31169 var flag = _collapsed ? _collapsed === '1' : !isCollapsed; 31170 var httpsOptions = (0,common/* httpsOptionsConfig */.Me)(); 31171 js_cookie/* default */.A.set('menuCollapsed', JSON.stringify(flag), httpsOptions); 31172 var menu = document.getElementById('cj-menu'); 31173 if (menu) { 31174 menu.style.width = (flag ? theMenuCollapsedWidth : expandedWidth) + 'px'; 31175 } 31176 setIsCollapsed(flag); 31177 }; 31178 return { 31179 isCollapsed: isCollapsed, 31180 allowSwitch: allowSwitch, 31181 toggle: toggle 31182 }; 31183}; 31184/* harmony default export */ const useIsCollapsed = (useCollapsed); 31185// EXTERNAL MODULE: ./src/components/CjHeader/hooks/use-is-login.ts 31186var use_is_login = __webpack_require__(53905); 31187;// ./src/components/Menu/MenuNormal/SubMenu.tsx 31188 31189 31190 31191 31192 31193 31194 31195 31196 31197 31198 31199 31200 31201 31202 31203 31204 31205 31206 31207var SubMenu_SubMenu = function SubMenu(_a) { 31208 var _b, _c, _d; 31209 var _e; 31210 var item = _a.item, 31211 isActive = _a.isActive, 31212 isParentActive = _a.isParentActive, 31213 showAuthorizeListData = _a.showAuthorizeListData, 31214 openAddStore = _a.openAddStore, 31215 openServiceCenter = _a.openServiceCenter, 31216 guideVisible = _a.guideVisible; 31217 var isVip = (0,useIsVip/* default */.A)(); 31218 var siteCheck = (0,use_site_check/* default */.A)(); 31219 var loginInfo = (0,PropsContext/* useGlobalProps */.v)().loginInfo; 31220 var isLogin = (0,use_is_login/* default */.A)(loginInfo).isLogin; 31221 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 31222 var isCj = (0,use_parent_platform/* default */.A)().isCj; 31223 var hookMenusChilds = useMenuChilds({ 31224 selector: '.specialMenuItem' 31225 }); 31226 var isZesty = siteCheck.isSite('ZS'); 31227 var defaultExpand = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 31228 if (isLogin) { 31229 if (isCJSite) {
31230 return item.name === 'Source' || item.name === 'Community'; 31231 } 31232 return true; 31233 } 31234 return item.name === 'Products'; 31235 }, [isLogin, item.name, isCJSite]); 31236 var _f = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(defaultExpand), 31237 expand = _f[0], 31238 setExpand = _f[1]; 31239 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31240 if (isParentActive(item.name) && !expand) { 31241 setExpand(true); 31242 } 31243 }, [isParentActive, item.name]); 31244 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31245 var _a; 31246 if (guideVisible && ((_a = item.childs) === null || _a === void 0 ? void 0 : _a.length) > 0 && !expand) { 31247 setExpand(true); 31248 } 31249 }, [guideVisible]); 31250 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 31251 var i18next = window === null || window === void 0 ? void 0 : window.i18next; 31252 var handleClick = function handleClick() { 31253 if (item.childs.length > 0) { 31254 setExpand(expand ? '' : item.name); 31255 } else { 31256 if (hookMyCjRoute.canUseNewMyCjRouteJump(item.route)) { 31257 return hookMyCjRoute.changeRoute(item.route); 31258 } 31259 var _href = (0,common/* getRouteHref */.hQ)(item); 31260 location.href = isCj ? _href : (0,cj_href/* cjHref */.F)(_href); 31261 } 31262 }; 31263 var hasChilds = item.childs && item.childs.length > 0; 31264 var normalSpecial = item.special && !isCJSite; 31265 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 31266 var getAddTop = function getAddTop(name, childs) { 31267 var _a; 31268 if (name === void 0) { 31269 name = ''; 31270 } 31271 if (childs === void 0) { 31272 childs = []; 31273 } 31274 if (name === 'Authorization' && !isCJSite) { 31275 var hasMiaoshou = ((_a = childs.filter(function (child) { 31276 return child.key === 'miaoshou'; 31277 })) === null || _a === void 0 ? void 0 : _a.length) > 0; 31278 return hasMiaoshou ? -50 : 0; 31279 } 31280 return 0; 31281 }; 31282 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31283 className: classnames_default()(Menu_MenuNormal.subMenu, (_b = {}, _b[Menu_MenuNormal.vip] = isVip, _b[Menu_MenuNormal.zs] = isZesty, _b)), 31284 onMouseMove: function onMouseMove(e) { 31285 leaveTimer.current && clearTimeout(leaveTimer.current); 31286 var addTop = getAddTop(item.name, item.childs); 31287 if (normalSpecial && hasChilds) hookMenusChilds.handlerMouseMove(e, addTop); 31288 }, 31289 onMouseLeave: function onMouseLeave(e) { 31290 var target = e.currentTarget; 31291 leaveTimer.current = setTimeout(function () { 31292 if (normalSpecial && hasChilds) hookMenusChilds.handlerMouseLeave(target); 31293 }, 200); 31294 } 31295 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31296 className: classnames_default()(Menu_MenuNormal.box, (_c = {}, _c[Menu_MenuNormal.active] = isParentActive(item.name) ? normalSpecial || !hasChilds : false, _c[Menu_MenuNormal.zs] = isZesty, _c)), 31297 onClick: handleClick, 31298 "data-route": item.name, 31299 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.name) 31300 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31301 className: Menu_MenuNormal.left 31302 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31303 type: item.iconclass 31304 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31305 className: Menu_MenuNormal.title 31306 }, item.nameTrans())), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31307 className: [Menu_MenuNormal.arrow, expand ? Menu_MenuNormal.expand : ''].join(' '), 31308 style: { 31309 transform: normalSpecial ? 'rotate(-90deg)' : '' 31310 } 31311 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31312 type: "xiangxia" 31313 }))), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31314 className: Menu_MenuNormal.activeLeftLine 31315 })), hasChilds && !normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31316 className: classnames_default()(Menu_MenuNormal.childsBox, (_d = {}, _d[Menu_MenuNormal.expand] = expand, _d)) 31317 }, item.special && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31318 className: Menu_MenuNormal.MenuItem, 31319 onClick: openAddStore, 31320 "data-gtag-element": "install_app" 31321 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31322 className: "".concat(Menu_MenuNormal.box, " ").concat(Menu_MenuNormal.addStoreBox) 31323 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31324 className: Menu_MenuNormal.name 31325 }, i18next === null || i18next === void 0 ? void 0 : i18next.t('common-mycj-menu-install-app', 'Install App')), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31326 className: Menu_MenuNormal.addIcon 31327 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31328 type: "jiahao1" 31329 }))))), item.name === 'Service' && openServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31330 className: Menu_MenuNormal.MenuItem, 31331 onClick: openServiceCenter, 31332 "data-gtag-element": "subscribe_service" 31333 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31334 className: "".concat(Menu_MenuNormal.box, " ").concat(Menu_MenuNormal.addStoreBox) 31335 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31336 className: Menu_MenuNormal.name 31337 }, i18next === null || i18next === void 0 ? void 0 : i18next.t('common-mycj-menu-subscribe-service', 'Subscribe Service')), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31338 className: Menu_MenuNormal.addIcon 31339 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31340 type: "jiahao1" 31341 }))))), item.childs.map(function (childMenu) { 31342 if (childMenu.isDivider) { 31343 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31344 key: childMenu.name, 31345 className: Menu_MenuNormal.menuDivider 31346 }); 31347 } 31348 if (typeof childMenu.isHide === 'function' ? childMenu.isHide() : childMenu.isHide) return null; 31349 if (!siteCheck.isShow("mycj-menu-".concat(item.nameVal || item.name, "-").concat(childMenu.name))) return null; 31350 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuNormal_MenuItem, { 31351 key: childMenu.name, 31352 childMenu: childMenu, 31353 isActive: isActive, 31354 showAuthorizeListData: showAuthorizeListData, 31355 isSpecial: item.special 31356 }); 31357 }))), hasChilds && normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31358 className: classnames_default()(Menu_MenuNormal.specialMenuItem, 'specialMenuItem') 31359 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MultipleMenuItem/* default */.A, { 31360 list: (_e = item.childs) === null || _e === void 0 ? void 0 : _e.map(function (item) { 31361 var _a; 31362 return { 31363 key: item.key, 31364 name: (_a = item.nameTrans) === null || _a === void 0 ? void 0 : _a.call(item),
31365 imageUrl: oss_controller/* default */.Ay.join((0,oss_controller/* createPlatform */.Q_)(String(item.imageName || item.name).toLocaleLowerCase())), 31366 count: item.count, 31367 link: isCj ? item.route : (0,cj_href/* cjHref */.F)(item.route), 31368 isActive: isActive(item.name), 31369 isShow: useIsShowOrangeConnex(item.name) && isShowAuthorizeType(showAuthorizeListData, item.name) && useIsShowMiaoshou(item.name, siteCheck), 31370 isErpPlatform: item.businessType === EBusinessType.ERP 31371 }; 31372 }) 31373 })))); 31374}; 31375/* harmony default export */ const MenuNormal_SubMenu = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(SubMenu_SubMenu)); 31376;// ./src/components/Menu/MenuNormal/index.tsx 31377var MenuNormal_assign = undefined && undefined.__assign || function () { 31378 MenuNormal_assign = Object.assign || function (t) { 31379 for (var s, i = 1, n = arguments.length; i < n; i++) { 31380 s = arguments[i]; 31381 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31382 } 31383 return t; 31384 }; 31385 return MenuNormal_assign.apply(this, arguments); 31386}; 31387 31388 31389 31390 31391 31392var MenuNormal = function MenuNormal(_a) { 31393 var isActive = _a.isActive, 31394 isParentActive = _a.isParentActive, 31395 showAuthorizeListData = _a.showAuthorizeListData, 31396 menus = _a.menus, 31397 openAddStore = _a.openAddStore, 31398 menuContainerRef = _a.menuContainerRef, 31399 openServiceCenter = _a.openServiceCenter, 31400 disableScroll = _a.disableScroll; 31401 var siteCheck = (0,use_site_check/* default */.A)(); 31402 var backgroundImage = siteCheck.data('menu-bg-image') || nav_bg/* default */.A; 31403 var menuNormalStyle = { 31404 backgroundImage: "url(".concat(backgroundImage, ")") 31405 }; 31406 if (siteCheck.isSite('ZS')) { 31407 menuNormalStyle = { 31408 backgroundColor: '#fff' 31409 }; 31410 } 31411 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31412 ref: menuContainerRef, 31413 className: Menu_MenuNormal.menuNormal, 31414 style: MenuNormal_assign(MenuNormal_assign({}, menuNormalStyle), { 31415 overflowY: disableScroll ? 'hidden' : undefined 31416 }) 31417 }, menus.map(function (menu) { 31418 if (!siteCheck.isShow("mycj-menu-".concat(menu.nameVal || menu.name))) return null; 31419 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuNormal_SubMenu, { 31420 key: menu.name, 31421 item: menu, 31422 isActive: isActive, 31423 isParentActive: isParentActive, 31424 showAuthorizeListData: showAuthorizeListData, 31425 openAddStore: openAddStore, 31426 openServiceCenter: openServiceCenter, 31427 guideVisible: disableScroll 31428 }); 31429 })); 31430}; 31431/* harmony default export */ const components_Menu_MenuNormal = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuNormal)); 31432// EXTERNAL MODULE: ./src/hook/useAxios.ts 31433var useAxios = __webpack_require__(92513); 31434;// ./src/components/Menu/hooks/useIsTH.ts 31435 31436function useIsTH(server_siteCheck) { 31437 if (typeof window === 'undefined') return server_siteCheck ? (0,common/* is1688 */.G3)(server_siteCheck) : false; 31438 return (0,common/* is1688 */.G3)(window === null || window === void 0 ? void 0 : window.siteCheck); 31439} 31440;// ./src/components/Menu/hooks/useHideAuthorize.ts 31441var useHideAuthorize_assign = undefined && undefined.__assign || function () { 31442 useHideAuthorize_assign = Object.assign || function (t) { 31443 for (var s, i = 1, n = arguments.length; i < n; i++) { 31444 s = arguments[i]; 31445 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31446 } 31447 return t; 31448 }; 31449 return useHideAuthorize_assign.apply(this, arguments); 31450}; 31451var useHideAuthorize_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 31452 function adopt(value) { 31453 return value instanceof P ? value : new P(function (resolve) { 31454 resolve(value); 31455 }); 31456 } 31457 return new (P || (P = Promise))(function (resolve, reject) { 31458 function fulfilled(value) { 31459 try { 31460 step(generator.next(value)); 31461 } catch (e) { 31462 reject(e); 31463 } 31464 } 31465 function rejected(value) {
31466 try { 31467 step(generator["throw"](value)); 31468 } catch (e) { 31469 reject(e); 31470 } 31471 } 31472 function step(result) { 31473 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 31474 } 31475 step((generator = generator.apply(thisArg, _arguments || [])).next()); 31476 }); 31477}; 31478var useHideAuthorize_generator = undefined && undefined.__generator || function (thisArg, body) { 31479 var _ = { 31480 label: 0, 31481 sent: function sent() { 31482 if (t[0] & 1) throw t[1]; 31483 return t[1]; 31484 }, 31485 trys: [], 31486 ops: [] 31487 }, 31488 f, 31489 y, 31490 t, 31491 g; 31492 return g = { 31493 next: verb(0), 31494 "throw": verb(1), 31495 "return": verb(2) 31496 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 31497 return this; 31498 }), g; 31499 function verb(n) { 31500 return function (v) { 31501 return step([n, v]); 31502 }; 31503 } 31504 function step(op) { 31505 if (f) throw new TypeError("Generator is already executing."); 31506 while (g && (g = 0, op[0] && (_ = 0)), _) try { 31507 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 31508 if (y = 0, t) op = [op[0] & 2, t.value]; 31509 switch (op[0]) { 31510 case 0: 31511 case 1: 31512 t = op; 31513 break; 31514 case 4: 31515 _.label++; 31516 return { 31517 value: op[1], 31518 done: false 31519 }; 31520 case 5: 31521 _.label++; 31522 y = op[1]; 31523 op = [0]; 31524 continue; 31525 case 7: 31526 op = _.ops.pop(); 31527 _.trys.pop(); 31528 continue; 31529 default: 31530 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 31531 _ = 0; 31532 continue; 31533 } 31534 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 31535 _.label = op[1]; 31536 break; 31537 } 31538 if (op[0] === 6 && _.label < t[1]) { 31539 _.label = t[1]; 31540 t = op; 31541 break; 31542 } 31543 if (t && _.label < t[2]) { 31544 _.label = t[2]; 31545 _.ops.push(op); 31546 break; 31547 } 31548 if (t[2]) _.ops.pop(); 31549 _.trys.pop(); 31550 continue; 31551 } 31552 op = body.call(thisArg, _); 31553 } catch (e) { 31554 op = [6, e]; 31555 y = 0; 31556 } finally { 31557 f = t = 0; 31558 } 31559 if (op[0] & 5) throw op[1]; 31560 return { 31561 value: op[0] ? op[1] : void 0, 31562 done: true 31563 }; 31564 } 31565}; 31566var useHideAuthorize_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31567 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31568 if (ar || !(i in from)) { 31569 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31570 ar[i] = from[i]; 31571 } 31572 } 31573 return to.concat(ar || Array.prototype.slice.call(from)); 31574}; 31575 31576 31577 31578 31579 31580 31581 31582 31583 31584 31585 31586 31587 31588 31589 31590 31591 31592/* harmony default export */ const useHideAuthorize = (function ($axios, isCj) { 31593 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(useHideAuthorize_assign({}, show_authorize_list/* default */.A)), 31594 showAuthorizeListData = _a[0], 31595 setShowAuthorizeList = _a[1]; 31596 var initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 31597 if ((0,useIsQk/* default */.A)()) initialMenus = bar_config_qk_menus; 31598 if ((0,useIsVP/* default */.A)()) initialMenus = bar_config_vp_menus; 31599 if (useIsTH()) initialMenus = bar_config_th_menus; 31600 if (useIsCf()) initialMenus = menus; 31601 if ((0,useIsZS/* default */.A)()) initialMenus = bar_config_zs/* menus */.T_; 31602 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(useHideAuthorize_spreadArray([], initialMenus, true)), 31603 newMenus = _b[0], 31604 setNewMenus = _b[1]; 31605 var platformSortAndShow = new platforms_sort_show($axios); 31606 var getAppStoreByUser = function getAppStoreByUser() { 31607 return useHideAuthorize_awaiter(void 0, void 0, void 0, function () { 31608 var _newMenus, authorizationIndex; 31609 return useHideAuthorize_generator(this, function (_a) { 31610 _newMenus = deep_clone(initialMenus); 31611 authorizationIndex = _newMenus.findIndex(function (ele) { 31612 return ele.name === 'Authorization'; 31613 }); 31614 if (authorizationIndex > -1) { 31615 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true).filter(function (ele) { 31616 return ele.key == 'shopify'; 31617 }); 31618 platformSortAndShow.showAppStore().then(function () { 31619 var authorizationIndex = _newMenus.findIndex(function (ele) { 31620 return ele.name === 'Authorization'; 31621 }); 31622 if (authorizationIndex > -1) { 31623 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true); 31624 } 31625 setNewMenus(useHideAuthorize_spreadArray([], _newMenus, true)); 31626 setShowAuthorizeList(useHideAuthorize_assign({}, platformSortAndShow.showAuthorizeAllData)); 31627 }); 31628 } 31629 return [2]; 31630 }); 31631 }); 31632 }; 31633 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31634 if (isCj) { 31635 getAppStoreByUser(); 31636 return; 31637 } 31638 platformSortAndShow.handler().then(function () { 31639 var _newMenus = useHideAuthorize_spreadArray([], newMenus, true); 31640 var authorizationIndex = _newMenus.findIndex(function (ele) { 31641 return ele.name === 'Authorization'; 31642 }); 31643 if (authorizationIndex > -1) { 31644 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true); 31645 } 31646 setNewMenus(useHideAuthorize_spreadArray([], _newMenus, true)); 31647 setShowAuthorizeList(useHideAuthorize_assign({}, platformSortAndShow.showAuthorizeAllData)); 31648 }); 31649 }, []); 31650 return { 31651 showAuthorizeListData: showAuthorizeListData, 31652 menus: newMenus, 31653 updateMenus: getAppStoreByUser 31654 }; 31655}); 31656;// ./src/lang/pull/en/common.json 31657const en_common_namespaceObject = /*#__PURE__*/JSON.parse('{"common-footer-Our Offers":"Our Offers","common-footer-Overview":"footer-Overview","home-authorization-failed":"Authorization Failed","home-cancel":"Cancel","home-top":"TOP","home-video-products":"Video Products","home-super-deals":"Super Deals","home-reauthorize":"Reauthorize","home-view-more":"View More","footer-overview":"Overview","footer-contact-us":"Contact Us","footer-our-offers":"Our Offers","footer-about-us":"About Us","footer-ticket":"Ticket","product-card-free-shipping":"Free Shipping","common-top-go-to-taobao":"Go to Taobao","language-polish":"Polish","language-hungarian":"Hungarian","footer-custom-packaging":"Custom Packaging","language-swahili":"Swahili","language-lithuanian":"Lithuanian","footer-shipping-cost-and-delivery-time":"Shipping Cost and Delivery Time","common-top-elites":"Elites","common-top-shipping-calculation":"Shipping Calculation","language-maltese":"Maltese","language-slovak":"Slovak","product-card-added-to-queue-successfully.":"Added to Queue successfully.","common-top-rating":"Rating","top-nav-my-cj":"My CJ","product-card-added-to-queue":"Added to Queue","footer-user-agreement":"User Agreement","language-vietnamese":"Vietnamese","common-top-confirm":"Confirm","copyright-cjdropshipping.com-all-rights-reserved":"CJdropshipping.com All Rights Reserved","language-croatian":"Croatian","footer-payment-methods":"Payment Methods","language-german":"German","top-nav-print-on-demand":"Print on Demand","language-ukrainian":"Ukrainian","top-nav-warehouses":"Warehouses","top-nav-woocommerce":"Woocommerce","common-top-install-now":"Install Now","language-macedonian":"Macedonian","common-top-cancel":"Cancel","footer-quality-inspection":"Quality Inspection","common-top-refresh":"Refresh","footer-cj-supplier":"CJ Supplier","common-top-please-enter-keywords!":"Please enter keywords!","language-korean":"Korean","footer-cj-school":"CJ School","footer-programs":"Programs","common-top-blog":"Blog","common-top-tool":"Tool","footer-cod":"COD","language-slovenian":"Slovenian","common-top-ticket":"Ticket","common-top-queue":"Queue","language-belarusian":"Belarusian","top-nav-shopify":"Shopify","language-finnish":"Finnish","language-romanian":"Romanian","language-spanish":"Spanish","top-nav-thailand-warehouse":"Thailand Warehouse","language-japanese":"Japanese","common-top-track-orders":"Track Orders","language-azerbaijani":"Azerbaijani","footer-blog":"Blog","language-french":"French","top-nav-ebay":"eBay","language-armenian":"Armenian","common-top-read-all":"Read All","common-top-go-to-1688":"Go to 1688","top-nav-api":"API","common-top-profile":"Profile","top-nav-us-warehouse":"US Warehouse","language-dutch":"Dutch","footer-refund-resend-and-returns":"Refund, Resend and Returns","language-czech":"Czech","common-top-help-center":"Help Center","product-card-source":"Source","language-norwegian":"Norwegian","top-nav-lazada":"Lazada","language-english":"English","footer-google-chrome-extension":"Google Chrome Extension","footer-print-on-demand":"Print on Demand","footer-product-reports":"Product Reports","footer-product-photography":"Product Photography","language-georgian":"Georgian","footer-tracking-orders":"Tracking Orders","footer-fulfillment-by-cj":"Fulfillment By CJ","language-afrikaans":"Afrikaans","footer-help-center":"Help Center","common-top-install-cj-chrome-extension":"Install CJ Chrome Extension","language-greek":"Greek","common-top-from-cj":"From CJ","footer-affiliate":"Affiliate","language-turkish":"Turkish","language-indonesian":"Indonesian","footer-resources":"Resources","footer-product-sourcing-requests":"Product Sourcing Requests","footer-24/7-support":"24/7 Support","product-card-view-more":"View More","language-estonian":"Estonian","language-yiddish":"Yiddish","footer-fulfillment":"Fulfillment","language-malay":"Malay","top-nav-authorization":"Authorization","language-arabic":"Arabic","language-hindi":"Hindi","product-card-please-check-the-product-in-queue.-it-has-been-added-to-queue.":"Adding failed. The product has been added to Queue. ","top-nav-shipstation":"ShipStation","language-latvian":"Latvian","top-nav-china-warehouse":"China Warehouse","footer-api":"API","common-top-invalid-image.-only-jpg-and-png-supported.":"Invalid image. Only JPG and PNG supported.","footer-elites":"Elites","language-icelandic":"Icelandic","common-top-log-out":"Log out","top-nav-shopee":"Shopee","language-thai":"Thai","language-russian":"Russian","common-top-go-to-aliexpress":"Go to AliExpress","language-welsh":"Welsh","language-serbian":"Serbian","footer-features":"Features","language-portuguese":"Portuguese","to
31657p-nav-sourcing":"Sourcing","common-top-source-more":"Source More","language-filipino":"Filipino","footer-fulfillment-fees":"Fulfillment Fees","language-danish":"Danish","footer-privacy-policy":"Privacy Policy","common-top-account":"Account","language-urdu":"Urdu","product-card-view-inventory":"View Inventory","common-top-support-center":"Support Center","language-irish":"Irish","footer-branding":"Branding","common-top-verify-email":"Verify Email","common-top-1.5mb-is-the-max-image-size":"1.5MB is the max image size","common-top-wallet":"Wallet","common-top-our-services":"Our Services","product-card-add-to-queue":"Add to Queue","language-italian":"Italian","footer-bulk-purchase":"Bulk Purchase","common-top-hey":"Hey","common-top-recommendations":"Recommendations","footer-support":"Support","top-nav-wishlist":"Wishlist","common-top-mark-all-as-read":"Mark All as Read","language-swedish":"Swedish","language-bulgarian":"Bulgarian","language-chinese-simplified":"Chinese (Simplified)","language-chinese-traditional":"Chinese (Traditional)","common-top-go-to-shopify":"Go to Shopify","intelGuid-easy-to-know-products-inventory-and-get-shipping-tracking-numbers.":"Easy to know products inventory and get shipping tracking numbers.","intelGuid-tracking-numbers-inventory-monitoring":"Tracking Numbers, Inventory Monitoring","intelGuid-ship-for-trinket/accessories.":"Ship for trinket/accessories.","intelGuid-ems-courier-service-in-china.":"EMS courier service in China.","intelGuid-winning-product-recommendations":"Winning Product Recommendations","intelGuid-pro-service":"Pro Services","intelGuid-jewel-shipping":"Jewel Shipping","intelGuid-wholesaling":"Wholesaling","intelGuid-usps":"USPS","intelGuid-put-cjdropshipping-into-your-pocket.":"Put CJdropshipping into your pocket.","intelGuid-located-in-samut-prakan.":"Located in Samut Prakan.","intelGuid-us-warehouse":"US Warehouses","intelGuid-bundle-several-products-skus-into-one-sku.":"Bundle several products\' SKUs into one SKU.","intelGuid-products-automatic-listing":"Products Automatic Listing","intelGuid-custom-packaging-for-your-own-brand.":"Custom packaging for your own brand.","intelGuid-disputing-online":"Disputing Online","intelGuid-cj-wallet-with-2%-discount":"CJ Wallet with 2% Discount","
31657intelGuid-the-united-states-postal-service.":"The United States Postal Service.","intelGuid-automatic-order-syncing":"Automatic Order Syncing","intelGuid-professional-dropshipping-training-makes-you-an-expert.":"Professional dropshipping training makes you an expert.","intelGuid-yiwu-warehouse":"Yiwu Warehouse","intelGuid-shipping":"Shipping","intelGuid-keep-private-inventory-for-your-customer-to-shorten-processing-time.":"Keep private inventory for your customer to shorten processing time.","intelGuid-attractive-video-and-photo-shooting.":"Attractive video and photo shooting.","intelGuid-import-product-reviews-into-your-store-when-you-list-product.":"Import product reviews into your store when you list products.","intelGuid-epacket":"ePacket","intelGuid-refer-and-earn":"Share and Earn.","intelGuid-extend-your-store-through-personalized-items.":"Diversify your products with the POD feature.","intelGuid-ship-for-electronic-products.":"Ship for electronic products.","intelGuid-connect-your-store-products-with-cj-products.":"Connect your store products with CJ products.","intelGuid-create-orders-manually.":"Create orders manually.","intelGuid-private-inventory":"Private Inventory","intelGuid-custom-packaging-branding":"Custom Packaging, Branding","intelGuid-cod-service-is-available.":"COD service is available.","intelGuid-list-products-to-your-store-automatically.":"List products to your store automatically.","intelGuid-source-products-to-cj-from-1688-taobao-aliexpress.":"Source products to CJ from 1688, Taobao, Aliexpress.","intelGuid-worldwide-warehouses":"Worldwide Warehouses","intelGuid-jinhua-warehouse":"Jinhua Warehouse","intelGuid-dropshipping-training":"Dropshipping Training","intelGuid-warehousing":"Warehousing","intelGuid-paypal-credit-card-payment":"PayPal, Credit Card Payment","intelGuid-supplier-inventory":"Supplier Inventory","intelGuid-cj-provides-automatic-invoice-service-for-you.":"CJ provides automatic invoice generation for you.","intelGuid-order-fulfillment":"Order Fulfillment","intelGuid-winning-products-recommendation-help-you-succeed.":"Winning product recommendations help you to succeed.","intelGuid-set-up-staff-accounts.":"Set up staff accounts.","intelGuid-manual-order-creation":"Manual Order Creation","intelGuid-sourcing-from-1688-taobao-aliexpress":"Sourcing from 1688, Taobao, Aliexpress","intelGuid-product-reviews-importing":"Product Reviews Importing","intelGuid-multiple-staff-accounts":"Multiple Staff Accounts","intelGuid-dhl":"DHL","intelGuid-pay-your-orders-by-paypal-and-credit-card.":"Make payment via PayPal or Credit Cards.","intelGuid-transfer-store-between-accounts.":"Transfer store between accounts.","intelGuid-top-up-has-2%-rebate-at-most.":"Top-up with up to 2% rebate.","intelGuid-video-photo-shooting":"Video, Photo Shooting","intelGuid-shipping-time-and-price":"Shipping Time and Price","intelGuid-sync-orders-from-your-store-to-cj-automatically.":"Sync orders from your store to CJ automatically.","intelGuid-cjpacket":"CJPacket","intelGuid-located-in-frankfurt.":"Located in Frankfurt.","intelGuid-split-orders":"Split Orders","intelGuid-in-case-of-any-doubts-about-your-orders-you-can-open-a-dispute.":"In case of any doubts about your orders, you can open a dispute.","intelGuid-over-220-countries-and-territories-served.":"Over 220 countries and territories served.","intelGuid-located-in-jakarta.":"Located in Jakarta.","intelGuid-cjpacket-is-a-special-shipping-line-formed-by-cjdropshipping.":"CJPacket is a special shipping line by CJdropshipping.","intelGuid-chrome-extension":"Chrome Extension","intelGuid-cj-api-for-developers":"CJ API for Developers","intelGuid-split-your-order-into-several-orders.":"Split your order into several orders.","intelGuid-suppliers-provide-products-directly.":"Suppliers provide products directly.","intelGuid-multiple-store-management":"Multiple Store Management","intelGuid-thailand-warehouse":"Thailand Warehouse","intelGuid-you-can-upload-orders-by-csv.":"You can upload orders by CSV.","intelGuid-submit-tickets-to-management-team.":"Submit a ticket to the management team.","intelGuid-strict-quality-check-process.":"Strict quality inspection process.","intelGuid-more-global-warehouses-are-coming-soon.":"More global warehouses are coming soon.","intelGuid-easy-to-monitor-delivery-process.":"All the details you need for order fulfillment at different stages.","intelGuid-affiliate":"Affiliate","intelGuid-source-products-from-other
31657-platforms-by-chrome-extension.":"Source products from other platforms with Chrome extension.","intelGuid-check-your-shipping-cost.":"Check your shipping cost.","intelGuid-bulk-order-service-for-wholesalers.":"Bulk purchase service for wholesalers.","intelGuid-bundle-sku":"Bundle SKU","intelGuid-automatic-invoice":"Automatic Invoice","intelGuid-fulfillment-shipping-tracking":"Fulfillment & Tracking Information","intelGuid-the-personal-agent-will-help-you-out-of-problems.":"The personal agent will help you out of problems.","intelGuid-cash-on-delivery":"Cash on Delivery","intelGuid-quality-checking":"Quality Inspection","intelGuid-store-transfer":"Store Transfer","intelGuid-combine-orders-to-reduce-delivery-cost.":"Combine orders to reduce delivery cost.","intelGuid-mobile-app-processing":"Mobile APP Processing","intelGuid-cj-platform":"CJ Platform","intelGuid-manage-all-your-stores-after-authorization.":"Manage all your stores after authorization.","intelGuid-print-on-demand":"Print on Demand","intelGuid-product-connection":"Product Connection","intelGuid-shenzhen-warehouse":"Dongguan Warehouse","intelGuid-start-cooperation-by-api.":"Start cooperation by API.","intelGuid-csv-orders-uploading":"CSV Orders Uploading","intelGuid-combine-orders":"Combine Orders","intelGuid-special-line":"Special Line","common-wallet":"Wallet","common-cancel":"Cancel","common-us-warehouse":"US Warehouse","common-thailand-warehouse":"Thailand Warehouse","common-view-more":"View More","common-api":"API","common-print-on-demand":"Print on Demand","intelGuid-7/24-support":"24/7 Support","intelGuid-us-warehouse-of-west-chino-ca":"US Warehouse of West (Chino, CA)","intelGuid-us-warehouse-of-east-cranbury-nj":"US Warehouse of East (Cranbury, NJ)","home-hot-selling-categories":"Hot Selling Categories","home-recommended-products":"Recommended Products","home-global-warehouses":"Global Warehouses","home-trending-products":"Trending Products","intelGuid-china-warehouse":"China Warehouses","footer-scan-the-qr-code-to-download-cjdropshipping-for-mobile":"Scan the QR code to download CJdropshipping for Mobile","category-all-categories":"All Categories","right-admin-level":"Level","right-admin-hi-welcome-to-cjdropshipping!":"Hi, welcome to CJdropshipping!","footer-subscribe-to-our-latest-niches":"Subscribe to our latest niches","home-sales-amount":"Sales Amount","home-cj-app":"CJ APP","home-listable-products":"Listable Products","home-pending-cj-order":"Pending CJ Order","home-delivered":"Delivered","home-us-warehouse-&-thai-warehouse":"US Warehouse & Thai Warehouse","home-reviews":"Reviews","home-partnership":"Partnership","home-cjdropshipping":"CJdropshipping","home-ready-for-delivery":"Ready for Delivery","common-top-Inventory-Alert":"Inventory Alert","home-cj-super-deals":"CJ Super Deals","home-pending-payment":"Pending Payment","home-dispatched":"Dispatched","home-pending":"Pending","home-closed":"Closed","home-processing":"Processing","home-awaiting-payment":"Awaiting Payment","home-custom-packaging":"Custom Packaging","home-completed":"Completed","footer-academy":"Mentors","home-we-will-source":"We will source for you with lower price and higher quality.","home-we-already-have-warehouses":"We already have warehouses in the United States, China, Germany, Thailand, Indonesia, and more warehouses are coming soon. Excellent warehousing services are ready for you.","home-professional-dropshipping-service":"Professional Dropshipping Service","home-Efficient-delivery":"Efficient Delivery","product-card-connect":"Connect","product-card-connect-product-connection":"product connection","product-card-connect-click-connect-if-the-product-already-exists-in-your-store-to-establish-a":"Click \'connect\' if the product already exists in your store to establish a","product-card-connect-automatic-order-fulfillment":"automatic order fulfillment","product-card-connect-for":"for","add-the-product-to-your-store":"add the product to your store.","home-list-to":"Click \'List\' to","footer-improper-products-report":"Improper Products Report","t1-recommended.text1":"TOP","t1-recommended.text2":"Rankings","t1-recommended.text3":"Popular recommended products","mobile-tab-warehouse":"Change Warehouse","trans-Croatian":"Croatian","mobile-filter-price":"Price","warehouse-header-elites":"ELITES","warehouse-discount":"Free Shipping","card-data-add-queue":"Added to Queue","trans-Finnish":"Finnish","trans-Urdu":"Urdu","goods.card.free.shiping":"Free Shipping","warehouse-header-help-center":"Help-Center","warehouse-header-shipping-calculate":"Shipping Calculation","lan-currency":"Currency","trans-Czech":"Czech","trans-Indonesian":"Indonesian","verify-email":"Verify Email","goods.card.listed":"listed","toast-info":"Added to Queue successfully","toast-info-added":"Adding failed. The product has been added to Queue.","trans-Russian":"Russian","header-pod":"Print on Demand","trans-Serbian":"Serbian","trans-Chinese-Simplified":"Chinese (Simplified)","trans-Greek":"Greek","trans-Dutch":"Dutch","trans-Estonian":"Estonian","trans-Lithuanian":"Lithuanian","filter.type2":"Supplier Products","filter.type1":"Sort All Types","trans-Romanian":"Romanian","filter.type3":"Product Videos","trans-Korean":"Korean","trans-Hindi":"Hindi","cj-search-placeholder":"Search winning products by keyword, SKU, 1688/Taobao/Aliexpress URL","mobile-filter-confirm":"Confirm","empty-left":"Terms of Use","trans-Japanese":"Japanese","m-search-placeholder":"Search","trans-French":"French","header-register":"Register","trans-Thai":"Thai","trans-Filipino":"Filipino","header-authorization":"Authorization","verify-email-tips":"Hey {{email}}, to make sure your account security, please verify your email address here.","trans-Armenian":"Armenian","trans-Icelandic":"Icelandic","mobile-tab-language":"Change Language","trans-Latvian":"Latvian","no-data-mobile":"No Data","trans-Malay":"Malay","warehouse-header-rating":"Rating ({{supplierCount}})","t2-recommended.Trending":"Trending","warehouse-header-wallet":"Wallet","warehouse-header-tool":"Tool","trans-German":"German","warehouse-header-account":"Account","lan-confirm":"Confirm","mobile-filter-discount":"Special Services & Discount","CJRecommondation.title":"Products Recommendation","warehouse-header-blog":"Blog","trans-Georgian":"Georgian","trans-Yiddish":"Yiddish","trans-Ukrainian":"Ukrainian","warehouse-product-type1":"Product Videos","warehouse-product-type2":"Supplier Products","trans-Maltese":"Maltese","search-no-result":"There is no search result for","filter.confirm":"Confirm","filter.less":"Less","t2-recommended.Categories":"Categories","header-warehouse":"Warehouses","how-to-post":"How to post a sourcing request?","header-support":"Support Center","trans-Portuguese":"Portuguese","trans-Swahil
31657i":"Swahili","trans-Belarusian":"Belarusian","trans-Azerbaijani":"Azerbaijani","homepage.empty.text":"Coming soon...","trans-Irish":"Irish","card-free-icon":"Free Shipping","trans-Chinese-Traditional":"Chinese (Traditional)","warehouse-header-ticket":"Ticket","coming-soon":"Coming soon...","filter.best.match":"Best Match","sign-in":"Sign In","CJEmpty":"Coming soon...","filter.more":"More","trans-Afrikaans":"Afrikaans","trans-Italian":"Italian","card-data-added-queue":"Add to Queue","warehouse-header-profile":"Profile","warehouse-header-track-order":"Track Orders","t2-recommended.Discover":"Discover local best sellers","empty-question":"How to post a sourcing request?","filter.sort.price":"Price","trans-English":"English","banner-tips":"Our Professional and Effective Services","filter.in":"You are in:","trans-Swedish":"Swedish","trans-Danish":"Danish","cj-search-queue":"Queue","filter.all.categories":"All Categories","filter.filter.by":"Filter by:","trans-Bulgarian":"Bulgarian","filter.free.shipping":"Free Shipping","trans-Polish":"Polish","warehouse-header-logout":"Log Out","filter.price.warning":"Please enter the correct price format","trans-Albanian":"Albanian","trans-Welsh":"Welsh","header-Wishlist":"Wishlist","trans-Hungarian":"Hungarian","sourcing":"Sourcing","trans-Vietnamese":"Vietnamese","trans-Turkish":"Turkish","empty-right":"Help","CJhotlist.title":"Trending Categories","trans-Macedonian":"Macedonian","mobile-filter-reset":"Reset","filter.price":"Price","trans-Arabic":"Arabic","trans-Slovenian":"Slovenian","global-warehouse-trans":"Global Warehouse","no-search-test":"Please enter keywords","header-sourcing":"Sourcing","category-card-title":"Related Categories","card-data-view-inventory":"View Inventory","trans-Spanish":"Spanish","search-result-for":"Search results for","mobile-language-warehouse-setting":"Setting","empty-center":"Privacy policy","filter.categories":"CATEGORIES:","trans-Slovak":"Slovak","empty-sourcing":"Sourcing","filter.newest":"Newest","mobile-filter-type":"Filter by Types","trans-Norwegian":"Norwegian","lan-language":"Language","search-words-tips1":"Didnât find what you want?","search-words-tips3":"or","search-words-tips2":"Contact us","search-words-tips4":"post a sourcing request","card-data-list-hover-2":"add the product to your store.","empty-contact":"Contact us","toast-info-fail":"Please check the production in Queue. It has been added to Queue.","intelGuid-germany-warehouse":"Germany Warehouse","intelGuid-indonesia-warehouse":"Indonesia Warehouse","intelGuid-tracking-numbers-setting":"Tracking Number Setting","intelGuid-decide-how-to-set-the-tracking-number-synced-to-your-specific-store.":"Decide how to set the tracking number synced to your specific store.","intelGuid-ship-a-bulk-of-items-to-your-place.":"Ship a bulk of items to your place.","intelGuid-preorder-inventory":"Preorder Inventory","intelGuid-make-full-payment-or-30%-deposit-to-stock-products-in-CJ-warehouses-to-shorten-processing-time.":"Make full payment or 30% deposit to stock products in CJ warehouses to shorten processing time.","intelGuid-global-suppliers":"Global Suppliers","intelGuid-global-suppliers-provide-products-and-shipment-domestically.":"Global suppliers provide products and shipment domestically.","intelGuid-open-dispute":"Open Dispute","intelGuid-in-case-of-any-aftersale-problems-you-can-open-a-dispute-to-request-a-refund-resend-or-return.":"In case of any aftersale problems, you can open a dispute to request a refund, resend or return.","intelGuid-optimize-warehouse":"Optimize Warehouse","intelGuid-change-the-shipping-warehouse-automatically-to-reduce-shipping-time-cost.":"Change the shipping warehouse automatically to reduce shipping time & cost.","intelGuid-declaration-with-IOSS":"Declaration with IOSS","intelGuid-enable-IOSS-declaration-options-to-facilitate-the-delivery-process-of-parcels-to-EU-countries.":"Enable IOSS declaration options to facilitate the delivery process of parcels to EU countries.","intelGuid-ship-your-products-to-CJ-warehouses-and-enjoy-CJ-fulfillment-service.":"Ship your products to CJ warehouses and enjoy CJ fulfillment service.","intelGuid-product-customization":"Product Customization","intelGuid-customize-your-product-get-samples-and-stock-finished-products-in-CJ-warehouses-for-dropshipping.":"Customize your product, get samples and stock finished products in CJ warehouses for dropshipping.","intelGuid-improper-products-report":"Improper Products Report","intelGuid-build-a-healthy-and-secure-shopping-environment.":"Build a healthy and secure shopping environment.","intelGuid-manage-all-your-stores-after-
31657authorization-whether-they-are-from-Shopify-eBay.":"Manage all your stores after authorization, whether they are from Shopify, eBay, WooCommerce, Wix, Etsy, BigCommerce, Magento, ShipStation, Squarespace, etc.","intelGuid-CJPacket-Ordinary-Sensitive-provides-reliable-shipping-time-with-competitive-prices.":"CJPacket Ordinary/Sensitive provides reliable shipping time with competitive prices.","intelGuid-submit-a-ticket-to-the-management-team-based-on-different-types-of-issue.":"Submit a ticket to the management team based on different types of issue.","intelGuid-source-from-1688-taobao-aliexpress":"Source from 1688, Taobao, AliExpress","intelGuid-ticket-to-management-team":"Talk to the Management Team.","filter.sort.by":"Sort By:","home-comments-from-facebook":"Here are the customers\' comments from Facebook.","home-from-shopify-app-store":"Here are the customers\' comments from Shopify APP Store.","home-you-will-have-the-nearest-warehouse":"You will have the nearest warehouse, the best shipping method, and the shortest processing and delivery time.","home-put-cJdropshipping-into-your-pocket":"Put CJdropshipping into your pocket","home-track-package":"Track Package","home-partner-network":"Partner Network","home-cJdropshipping-partnership":"CJdropshipping Partnership","home-scan-the-qr":"Scan the QR code to download CJdropshipping for Mobile.","home-shipping-cost-and-time":"Shipping Cost and Time","home-please-enter-the-tracking-number":"Please enter the tracking number","home-affiliate-program":"Affiliate Program","home-comments-from-trustpilot":"Here are the customers\' comments from Trustpilot.","intelGuid-fulfillment-service":"Fast Fulfillment","common-advertising-services":"Ads Service","top-nav-my-site":"My {{siteName}}","home-cj-super-deals-param":"{{name}} Super Deals","product-add-the-product-to-your-store":"add the product to your store.","common-top-1mb-is-the-max-image-size":"1MB is the max image size","common-pending-ticket":"Pending Tickets","common-remind-me-in":"Remind me in","common-view":"View","common-no-tasks-found":"No tasks found.","common-left-unchecked-they-will-weight-a-negative-impact-on-delivery-time":"Left unchecked, they will weight a negative impact on delivery time.","home-store-upgrading-in-progress":"Store upgrading in progress","home-brand-section":"Brand Section","product-card-added-to-queue-fail":"Adding failed.","for-your-account-security-please-link-your-email.":"For your account security, please link your email.","common-store-authorization-reminder":"Store Authorization Reminder","common-store-authorization-reminder-msg":"Your store (store name: {{name}}) has been deauthorized automatically as it has been inactive for a long time. You may reauthorize manually if necessary.","common-check-list":"To-do List","common-ticket-notification":"To-do List","common-cj-prime":"CJ Prime","common-odm":"ODM","common-chargeable-orders":"Chargeable Orders","common-left-unchecked-they-will-affect-order-delivery-time.":"Left unchecked, they will affect order delivery time.","common-top-affiliate":"Affiliate","search-success-scrolling-information":"The sourcing request for \\"{{productName}}\\" submitted by <span class=\'flag-icon {{country}}\' style=\'{{style}}\' ></span> {{firstName}} received a quotation within {{consumeHour}} hours.","quantity":"Quantity","quick-sourcing":"Quick Sourcing","target-price":"Target Price","request-for-sourcing":"Request for Sourcing","global-sourcing-for-cost-effective-and-diversified-products":"Global sourcing for cost-effective and diversified products","response-time":"Response Time","requests":"Requests","industries":"Industries","footer-store-authorization-agreement":"Store Authorization Agreement","home-add-to-queue":"Add the product to Queue to bulk list products.","common-top-video-control-last-product":"Last Product","common-top-comment-write-a-reply":"Write a reply","common-top-comment-del-tip":"Are you sure to delete the comment? All replies will be deleted too.","common-top-purchase-copyright-no-buy-tip":"The copyright video is invisible to other users.\\r\\n Due to the special character of the video order, a refund or return is not available.","common-top-purchase-copyright-button":"Copyright","common-top-purchase-copyright-tip":"Download right purchased. The video will be invisible to other users upon your purchase of the copyright.\\r\\n Due to the special character of the video order, a refund or return is not available.","common-top-downloaded":"Downloaded","common-top-favorited":"Favorited","common-top-purchase-download-right-tip":"For its high-resolution version without watermark, please purchase the download right.\\r\\nDue to the special character of the video order, a refund or return is not available.","common-top-download":"Download","common-top-exit-full-screen":"Exit Full Screen","common-top-free-download":"Free Download","common-top-download-right":"Download Right","common-top-video-control-next-product":"Next Product","common-top-video-selection":"Video Sourcing","common-top-comment-leave-a-message":"Leave a message!","common-top-video-gallery":"Video Gallery","common-tonnes-of-videos-with-an-immersive-experience":"Tonnes of videos with an immersive experience.","common-top-exit-video-gallery":"Exit Video Gallery","common-top-video-control-last-spu-video":"Last Video","common-top-video-control-next-spu-video":"Next Video","top-nav-sourcing-request":"Sourcing Request","common-top-invalid-image.":"Invalid image. ","common-top-we-found-you-have-not-installed-cj-chrome-extension-do-you-want-to-install-it":"We found you have not installed CJ Chrome Extension, do you want to install it?","common-top-we-found-you-have-not-installed-cj-chrome-extension-do-you-want-to-install-it?":"We found that you had not installed CJ Chrome Extension yet. Do you want to install it?","common-await-resending":"Awaiting Resending","common-overdue-will-cause-the-package-to-be-returned-or-destroyed.":"Overdue will cause the package to be returned or destroyed","common-overdue-will-cause-the-package-to-be-destroyed.":"Overdue will cause the package to be destroyed.","home-request-for-sourcing":"Request for Sourcing","common-await-pickup-at-local-post-office":"Awaiting Pickup at Local Post Office","common-mycj-menu-shopee":"Shopee","common-mycj-menu-squarespace":"Squarespace","common-mycj-menu-shoplazza":"ShopLazza","common-mycj-menu-orders-fulfillment":"Orders Fulfillment","common-mycj-menu-prestashop":"PrestaShop","common-mycj-menu-bigcommerce":"BigCommerce","common-mycj-menu-buyers-design":"Buyer\'s Design","common-mycj-menu-my":"My","common-mycj-menu-export-list":"Export List","common-mycj-menu-magento":"Magento","common-mycj-menu-wed2c":"WED2C","common-mycj-menu-nuvemshop":"Nuvemshop","common-mycj-menu-purchase-list":"Purchase List","common-mycj-menu-dashboard":"Dashboard","common-mycj-menu-wishlist":"Wishlist","common-mycj-menu-service-products":"Service Products","common-mycj-menu-customization":"Customization","common-mycj-menu-sku-list":"SKU List","common-mycj-menu-service-product-list":"Service Product List","common-mycj-menu-design-myself":"Design Myself","common-mycj-menu-video-list":"Video List","common-mycj-menu-print-on-demand":"Print on Demand","common-mycj-menu-products":"Products","common-mycj-menu-store-authorization":"Store Authorization","common-mycj-menu-shipment":"Shipment","common-mycj-menu-dropship-orders":"Dropship Orders ","common-mycj-menu-service-products-products":"Products","common-mycj-menu-my-photography":"My Photography","common-mycj-menu-imported-orders":"Imported Orders","common-mycj-menu-purchase-cart":"Purchase Cart","common-mycj-menu-orders-tracking":"Orders Tracking","common-mycj-menu-sourcing":"Sourcing","common-mycj-menu-my-inventory":"My Inventory","common-mycj-menu-custom-packaging":"Packaging","common-mycj-menu-connection":"Connection ","common-mycj-menu-sku-list-tip":"Add products for manual orders.","common-mycj-menu-my-photography-tip":"Shoot marketing videos and photos.","common-mycj-menu-service-products-tip":"Ship your products to {{siteName}} warehouses and enjoy {{siteName}} fulfillment service.","common-mycj-menu-purchase-list-tip":"Wholesale products, deposit inventory and preorder inventory.","common-mycj-menu-connection-tip":"Connected products for order synchronization.","common-mycj-menu-sourcing-tip":"Sourcing offers a solution when you didn\'t find the product you want to sell.","common-mycj-menu-find-the-source":"Find the source","common-mycj-new-message":"New Message","common-mycj-contact-agent":"Contact Agent","common-mycj-menu-print-on-demand-tip":"You and your customers can design unique product patterns.","common-mycj-menu-custom-packaging-tip":"Purchase or design packaging and connect packages with your products.","common-mycj-menu-photography-service-tip":"Shoot marketing videos and photos for your products.","common-mycj-menu-store-products-tip":"Check here for your store products, where you can make product connections.","common-mycj-menu-customization-tip":"{{siteName}} offers integrated design and manufacturing services to facilitate your branding business, saving your labor and time inputs.","common-mycj-menu-my-inventory-tip":"Check your inventory here if you have brought private inventory, packaging, or deposit inventory.","common-mycj-menu-3pl-tip":"Ship your products to {{siteName}} warehouses and enjoy {{siteName}} fulfillment service","common-mycj-menu-ticket":"Ticket","common-mycj-menu-find-products":"Find Products","common-mycj-menu-queue":"Queue","common-mycj-menu-store-products":"Store Products","common-mycj-menu-browsing-history":"Browsing History","common-mycj-menu-sample-orders":"Sample Orders","common-mycj-menu-listing-records":"Listing Records","common-mycj-menu-products-records":"Product Records","common-mycj-menu-wholesale-orders":"Wholesale Orders","common-mycj-menu-inventory-orders":"Inventory Orders","common-mycj-menu-service":"Services","common-mycj-menu-photography-service":"Photography Service","common-mycj-menu-authorization":"Authorization","common-mycj-menu-store-orders":"Store Orders","common-mycj-menu-video-records":"Video Records","common-mycj-menu-fulfillment-status":"Fulfillment Status","common-mycj-menu-orders-creation":"Orders Creation","common-you-havent-synced-store-orders-for-a-long-time":"You haven\'t synced store orders for a long time!","common-sync-store-orders":"Sync Store Orders","common-mycj-menu-orders-picking":"Cart","common-mycj-menu-tiktok-us":"TikTok Shop US","common-mycj-menu-tiktok":"TikTok Shop","common-top-go-to-eBay":"Go to eBay","home-big-smiles-from-our-customers":"Big Smiles from our Customers","common-top-enter-spu-sku":"Enter SPU/SKU","shipping-policy":"Shipping Policy","home-tiktok-ads":"TikTok Ads","home-tiktok-ads--plural":"TikTok Ads","common-photorequest":"Photo Request","":"Returns or exch
31657anges due to product quality or logistics issues or after-sales compensation are not accepted.","common-video-download":"This video will be available for all to download in {{openIn}} days.","common-purchase-copyright-special":"Due to the special character of the video order, a refund or return is not available.","intelguid-britain-warehouse":"Britain Warehouse","intelguid-located-in-samut-manchester.":"Located in Manchester.","intelguid-located-in-samut-unna.":"Located in Unna.","home-ads-agency":"Ads Agency","common-top-image-to-search-no-login":"Please log in before using this feature or","home-recommended-platform":"Recommended Products for E-commerce Platform","common-mycj-menu-my-products":"My Products","common-mycj-menu-listed":"Queue","product-recommended-products":"Recommended Products","common-optimize-notice-detail-btn":"View Now","common-optimize-notice-title":"New Version Updates","logistic-delivery-time-title":"Delivery Time","logistic-shipping-method":"Shipping Method","logistic-shipping-tip":"Note: Above are real data, updated in real time.","logistic-delivery-time":"Delivery Time","logistic-shipping-calculation":"Shipping Calculation","product-card-add-my-products":"Added Products","product-card-added":"Added","common-mycj-menu-shopify":"Shopify","common-mycj-menu-shipstation":"ShipStation","common-mycj-menu-aliexpress":"AliExpress","common-optimize-notice-opt1":"1. Omnipresent navigation menu: it is applied in full coverage for convenient navigation, some titles of which have been renamed;","common-optimize-notice-opt2":"2. New MenuâMy Products: âWishlistâ, âSKU Listâ, and âQueueâ have been integrated here and the old entrances have been closed;","common-optimize-notice-opt3":"3. Order integration: the menu is reclassified in line with different order types, each sub-menu an integral part of order fulfillment.","common-optimize-notice-optmore":"To check out details later on, you can also click on the \\"{{icon}}\\" on the top.","common-optimize-notice-change":"New updates are listed as follows; Please check out:","common-mycj-menu-view-new-updates":"View New Updates","common-mycj-menu-3pl":"3PL Fulfillment","common-mycj-menu-view-new-updates-cancel-text":"Are you sure you want to close the portal? To check out the update details later on, please click on the âbellââthe notification button on the top.","common-mycj-menu-view-new-updates-cancel-cencel":"Cancel","common-mycj-menu-view-new-updates-cancel-close":"Close","home-global-sourcing":"Global sourcing for cost-effective and diversified products","common-cj-ugc":"CJ UGC","common-pod":"POD","home-explore-your-interests":"Explore Your Interests","common-top-sign-in-service":"Sign In","card-data-list-hover-1":"Click List to","List-text-pur":"Lists","List-text":"List","filter.lists":"Lists","card-data-list":"List","product-click-list-to":"Click \'List\' to","card-data-added-queue-hover":"Add the product to Queue to bulk list products.","common-mycj-menu-my-design":"My Design","footer-site-map":"Site Map","common-mycj-menu-mercado":"Mercado","common-mycj-menu-pod-products":"POD Products","footer-cookie-policy":"Cookie Policy","common-copyright-all-rights-reserved":"{{currentYear}} {{fullName}} All Rights Reserved","empty-rights":"© {{nowYear}} CJdropshipping.com All Rights Reserved","vs-eli-top-article":"Top Article","vs-eli-hot-topics":"Hot Topics","vs-eli-top-questions":"Top Questions","vs-eli-today":"Today","vs-eli-follower":"{{count}} follower","vs-eli-yesterday":"Yesterday","vs-eli-btn-text":"Go to Elites","vs-eli-days-ago":"{{day}} Days ago","vs-eli-follower-count":"follower","home-you-sell-we":"You sell-We source and ship for you!","vs-eli-title":"Elites-Helps You Become an Elite in Dropshipping","terms-of-service":"Term of Service","back":"Back","common-academy":"CJ Mentors","vs-eli-update-btn":"Update","home-1688-hot-selling-product":"Hot Selling","home-1688-global-product":"Global Products","home-1688-tendency-product":"Trending Products","footer-raising-integrity-concerns":"Whistleblower Policy","common-top--to-make-sure-your-account-security-please-verify-your-email-address-here.":", to make sure your account security, please verify your email {{email}} address here.","language-albanian":"Albanian","filter-sort-by":"Sort by","home-new-products":"New Products","filter-sort-price":"Price","filter-sort-general":"General","filter-sort-sales":"Sales","filter-sort-confirm":"Confirm","list-showing":"Showing","list-go":"Go","list-of":"of","list-max":"Max","list-min":"Min","list-nodata":"No results found.","common-login-sign-in":"Sign in","purchase-detail-ordernumber":"Order Number","purchase-detail-no1-ordercreated":"No.1 Order Created","common-login-forgot-your-password":"Forgot your password","common-login-email-address":"Email Address","common-login-massive-products":"Massive products","common-login-username":"Username","common-login-remember-me":"Remember me","common-login-password":"Password","common-login-sign-up-here":"Sign up here","purchase-no-address":"You haven\'t added any addresses yet.","purchase-detail-pstatus":"Status","purchase-detail-supplier":"Supplier","common-risk-sendus":"For orders (Order number: {{orderCode}}) sent to the US.","common-risk-abnormal-order":"The abnormal order (Order number: {{orderCode}}) cannot be submitted.","common-order-sku":"SKU","common-order-disputed":"Disputed","common-order-stocked":"Stocked","common-order-inventory-tips3":"3. The inventory status of Sub SKUs shows below:","common-order-products":"Products","common-order-sku-quantity":"2. Main SKU: Total Quantity = {{orderQuantity}}, Stocked Quantity = {{allocateQuantity}}","common-order-total":"Total","common-order-inventory-status":"Inventory Status","common-order-log":"Order Logs","common-order-disputed-tips":"Contains both those in dispute and those on which the disputes have been completed.","common-order-file-extensions":"Allowed File Extensions: .jpg, .gif, .jpeg, .png","common-order-return-original":"Return to the original way","common-order-dispat
31657ched":"Dispatched","common-order-store":"Store","common-order-video-extensions":"Allowed Video Extensions: .mp4, .avi, .wmv, .flv, .mpg, .mov","common-order-pending":"Pending","common-order-disputed-details":"Dispute Details","common-order-back-balance":"Back in balance","common-order-quantity":"Quantity","common-order-processing":"Processing","common-order-shipping-method":"Shipping Method","common-order-yorder-number":"Your Order Number","common-order-refund-tip":"Refund for orders of combined payment will be deposited in your {{websiteName}} Wallet.","common-order-message":"Message","common-order-attachments":"Attachments","common-order-total-amount":"Total Amount","common-order-completed":"Completed","common-order-confirm":"Confirm","common-order-vat-ioss":"VAT upon IOSS","common-order-cancel":"Cancel","common-order-ioss-fee":"IOSS Handling Fee","common-order-shipping-cost":"Shipping Cost","common-order-order-status":"Order Status","common-order-tracking-number":"Tracking Number","common-order-unmessage":"Please enter the message.","common-order-order-number":"Order Number","common-order-price":"Price","common-order-more":"More","common-order-image":"Image","purchase-cart-one-piece-dropship":"One Piece Dropship","comoon-order-piece":"Piece","common-order-bundle-products":"Bundle Products","common-order-bundle-no-data":"Sorry, we can\'t find any products.","common-order-resend":"Resend","common-order-refund":"Refund","common-unverified":"Unverified","common-not-find-product":"Sorry, we can\'t find any products.","common-bundle-products":"Bundle Products","common-sku":"SKU","common-quantity":"Quantity","common-price":"Price","common-refund":"Refund:","common-confirm":"Confirm","common-variant":"Variant","common-piece":"Piece","common-product":"Product","common-subtotal":"Subtotal","common-1-if-you-would":"1. If you would like to use one of the shipping methods listed below, please check the reasons and follow the suggestion.","common-no-orders-yet":"No orders yet.","common-shipping-method":"Shipping Method","common-close":"Close","common-reasons":"Reasons:","common-2-if-there-is":"2. If there is no solution or you still cannot use the shipping method after following the suggestion, please select other shipping methods.","common-unavailable-shipping-methods-and":"Unavailable Shipping Methods and Reasons","common-3-if-you-would":"3. If you would like to use none of them, please contact your agent.","common-suggestion":"Suggestion","common-order-weight":"Weight","common-please-contact":"please contact your agent.","common-note":"Note","footer-all-rights-reserved":"All Rights Reserved","footer-help":"Help","common-order-product-cost":"Product Cost","common-order-order-amount-details":"Order Amount Details","common-order-product-discount":"Product Discount","common-order-shipping-discount":"Shipping Discount","common-order-amount-off":"Amount off","common-order-abnormal-logistic-ed":"Handed to the Carrier","common-order-abnormal-warehouse-ing":"Dispatch in process (processing time overdue)","common-order-abnormal-logistic-ing":"Handing to the Carrier (processing time overdue)","common-order-abnormal-track-num-ed":"Tracking number generated","common-order-abnormal-procurement-ed":"Products Stocked","common-order-abnormal-track-num-ing":"Tracking number generation in process (processing time overdue)","common-order-abnormal-procurement-ing":"Procurement in process (processing time overdue)","common-order-abnormal-warehouse-ed":"Dispatched","common-order-abnormal-title":"Order Notification","common-order-view":"View","common-order-have-opened-dispute-in-order":"You have opened a dispute for this order.","common-order-will-be-charged":"will be charged.","common-order-edit-address":"Edit Address","common-order-consignee-modal-notice":"No address found. Please set up the address first.","common-order-details":"Details","common-order-has-been-refunded":"has been refunded to you.","common-th-search-placeholder":"Please enter keywords to search.","product-card-sale":"{{num}} Sales/{{day}}Days","product-th-products-inbound":"Products Inbound","product-th-quality-inspection-desc":"1688 merchants send products to 1688tech\'s Chinese warehouses, where we conduct the quality inspection and weighing before sending the shipping fee bill to your account.","product-th-products-inbound-desc":"When the products have arrived at the 1688tech local warehouse, you will be reminded to pay for the freight.","product-th-product-procurement-title-desc":"Sorry, due to the lack of necessary information for calculating the shipping fee, you only need to pay the product fee now and make up the shipping fee later.","product-th-buyflow-confirm":"Confirm","product-th-delivery-self-pickup":"Delivery&
31657Self-pickup","common-lack-of-necessary-information":"Sorry, due to the lack of necessary information for calculating the shipping fee, you only need to pay the product fee now and make up the shipping fee later.","common-select-related-orders":"You may select related orders by \\"Shipping Payment Status\\" in the order list.","common-as-the-necessary-information":"As the necessary information for calculating the shipping fee has been ready, please refresh the page and select a shipping method.","common-proceed":"Proceed","common-check-the-detailed":"Click to check the detailed procedure.","common-currency-updated":"Currency updated. Please refresh the page to check.","common-order-information-updated":"Order information updated. Please refresh the page and try again","common-refresh":"Refresh","common-th-menu-one-piece-dropship":"One Piece Dropship","common-th-profile-wholesale-orders":"Wholesale Orders","common-th-profile-one-piece-dropship":"One Piece Dropship","common-th-profile-wallet":"Wallet","common-th-profile-undelivered-orders":"Undelivered Orders","common-mycj-menu-my-orders":"My Orders","common-th-profile-my-orders":"My Orders","payment-pay-with-wallet":"Pay with {{platformName}} wallet","payment-pay-with-card":"Pay with Card","payment-wire-transfer":"Wire Transfer","common-th-profile-profile":"Profile","wallet-charging-benefit":"Charging Benefit","wallet-top-up-upper":"Top-up","wallet-affiliate-withdrawal":"Affiliate Withdrawal","wallet-withdrawal":"Withdrawal","wallet-system-deduction":"System Deduction","wallet-order-refund":"Order Refund","wallet-system-refund":"System Refund","wallet-order-refund-out-of-stock":"Order Refund: Out of Stock","wallet-top-up-with-gift-card":"Top-up with Gift Card","wallet-order-payment":"Order Payment","common-order-available":"Available","common-order-note":"Note","common-order-pay-error-notice-one":"You have selected {{originLen}} products, only {{diffLen}} of which can be submitted","common-order-pay-error-notice-two":"Product modification is shown below. Please resubmit.","common-order-subtotal":"Subtotal","common-order-variant":"Variant","common-order-piece":"Piece","common-order-top":"TOP","common-order-reason":"Reason","purchase-add-new-address":"Add New Address","common-order-pagination-page":"Page","common-order-pagination-per-page":"Per Page","common-order-pagination-go-to":"Go to","common-order-pagination-record":"Record","common-unverified-toast-first":"1. Unverified products: products whose weight, length, width, and height have not yet been verified in the warehouse.","common-unverified-toast-second":"2. For those products, you may pay the product fee first in order placement and make up the shipping fee later.","common-logistics-information":"Dear Customers, Here is the latest logistics information.","common-cart":"Cart","my-profile-address-first-name":"First Name","my-profile-address-default-shipping-address":"Default Shipping Address","my-profile-address-set-as-default-address":"Set as Default Address","my-profile-address-phone-number":"Phone Number","my-profile-address-add-a-regular-address-to-select-it-easily":"Add a regular address to select it easily in creating sample or dropshipping orders.","my-profile-common-edit":"Edit","my-profile-common-save":"Save","my-profile-common-delete":"Delete","my-profile-address-email":"Email","my-profile-address-company":"Company","my-profile-address-city":"City","my-profile-address-province":"Province","my-profile-address-add-new-address":"Add New Address","my-profile-address-address2":"Address2","my-profile-address-address1":"Address1","my-profile-address-consignee-address":"Consignee Address","my-profile-address-region":"Region","my-profile-address-postcode":"Postcode","my-profile-address-country":"Country","my-profile-common-confirm":"Confirm","my-profile-common-cancel":"Cancel","my-profile-address-last-name":"Last Name","my-profile-address-you-haven-not-added-any-addresses-yet":"You haven\'t added any addresses yet.","my-profile-address-set-as-default-consignee":"Set as Default Consignee","common-th-in-this-page":"In this page","my-profile-address-invalid-postcode-please-enter-a-valid-postcode":"Invalid postcode. Please enter a valid postcode.","my-profile-address-please-enter-the-last-name":"Please enter the last name.","my-profile-address-please-enter-the-province-state":"Please enter the province/state.","my-profile-address-consignee-id":"Consignee ID","my-profile-address-please-enter-the-first-name":"Please enter the first name.","my-profile-address-invalid-phone-please-enter-a-valid-phone":"Invalid phone. Please enter a valid phone.","my-profile-address-set-as-default-shipping-address":"Set as default shipping address","my-profile-address-please-enter-the-address":"Please enter the address.","my-profile-address-please-enter-the-name-of-the-city":"Please enter the name of the city.","my-profile-address-please-select-country":"Please select country.","my-profile-account-confirm-new-password":"Confirm New Password","my-profile-account-if-you-find-our-system-emails-have-been-blocked":"if you find our system emails have been blocked.","my-profile-account-it-will-expire-in-10-minutes-please-verify-within-10-minutes":"It will expire in 10 minutes, please verify within 10 minutes.","my-profile-account-enter-new-password":"Enter new password","my-profile-account-unable to re
31657ceive the code for a long time due to network error":"Unable to receive the code for a long time due to network error.","my-profile-account-if-you-want-to-reset-your-password-for":"If you want to reset your password for <span class=\'f-org\'>{{email}}</span>, please click \'Verify Now\' below.","my-profile-account-verification-code":"Verification Code","my-profile-common-submit":"Submit","my-profile-account-please-check-if-your-email-is-working-properly":"Please check if your email is working properly.","my-profile-account-change-your-filter-settings":"change your filter settings","my-profile-account-enter-password":"Enter password","my-profile-account-send":"Send","my-profile-account-verify-email":"Verify Email","my-profile-account-reset-password":"Reset Password","my-profile-account-reset-success!":"Reset Success!","my-profile-account-it-will-back-to-the-first-step-after-seconds":"It will back to the first step after {{succSecond}} seconds.","my-profile-account-verify-by-email":"Verify by Email","my-profile-account-new-password":"New Password","my-profile-account-don-not-receive-a-code":"Donât receive a code?","my-profile-account-there-is-a-delay-in-receiving-the-code-please-be-patient-and-do-not-click":"There is a delay in receiving the code, please be patient and donât click.","my-profile-account-update-in-progress":"Update in progress","my-profile-common-back":"Back","my-profile-account-email-address":"Email Address","my-profile-account-please resubmit the request or change the browser":"Please resubmit the request or change the browser.","my-profile-account-reset-success":"Reset Success","my-profile-account-verify-now":"Verify Now","my-profile-account-it-may-be-in-the-spam-or-the-email-storage-is-full":"It may be in the spam or the email storage is full.","my-profile-account-the-verification-code-has-been-sent-to-your-email":"The verification code has been sent to your email.","my-profile-account-please":"Please","my-profile-account-incorrect-verification-code-please-enter-it-again":"Incorrect verification code, please enter it again.","common-you-can-upload-files-at-most":"You can upload {{maxUploadNum}} files at most.","common-oops-something-wrong-please-try-again-later":"Oops, something wrong. Please try again later","common-upload-failed":"Upload Failed","common-upload":"Upload","common-invalid-file-format-please-upload-again":"Invalid file format. Please upload again.","common-uploaded-successfully":"Uploaded Successfully","common-the-file-should-be-within-max-size-m":"The file should be within {{maxUploadSize}}M.","home-1688-one-dropship":"Premium Selected","language-hebrew":"Hebrew","my-profile-config-update-in-progress":"Update in progress:","my-profile-account-if-you-want-to-reset-your-password-for-email":"If you want to reset your password for {{email}}, please click \'Verify Now\' below.","my-profile-config-please-carefully-enter-the-information":"Please carefully enter the information.","my-profile-config-add":"Add","my-profile-config-not-allow":"Not Allow","my-profile-config-email-information-of-your-store-orders-will-be-automatically-synced":"Email information of your store orders will be automatically synced, or be left blank if it doesn\'t exist.","my-profile-config-phone-number":"Phone Number","my-profile-config-for-certain-shipping-methods-email-information":"For certain shipping methods, email information is obligatory, without which the order may not be able to be generated or fulfilled.","my-profile-config-you-may-either-manually-edit-it":"You may either manually edit it, possibly a virtual one, or select another shipping method that do not require email information.","my-profile-config-use-a-virtual-one":"Use a virtual one","my-profile-config-email":"Email","my-profile-config-enter-the-email-to-increase-the-success-rate-of-delivery":"Enter the email to increase the success rate of delivery.","my-profile-config-sync-and-show-email-information":"Sync and Show Email Information:","my-profile-config-email-information-will-be-left-blank":"Email information will be left blank.","my-profile-config-effective-for-newly-synced-orders":"Effective for newly-synced orders","my-profile-config-in-such-case-a-virtual-email-will-be-applied-automatically":"In such case, a virtual email will be applied automatically and subject to your modification.","my-profile-config-action":"Action","my-profile-config-country-region":"Country/Region","my-profile-config-phone":"Phone","my-profile-config-in-the-case-of-no-email-information":"In the Case of No Email Information:","my-profile-config-effective-for-orders-in-orders-and-cart":"Effective for orders in \'Orders\' and \'Cart\'","my-profile-config-upon-clicking-with-blank-phone-numbers-will-be-updated-automatically":"Upon clicking \'Confirm\', all orders in \'Imported Orders\' and \'Cart\' with blank phone numbers will be updated automatically. ","my-profile-config-leave-it-blank-and-edit-manually":"Leave it blank and edit manually","my-profile-config-for-a-delay-in-delivery-wrought-by-your-placing-the-wrong-information":"For a delay in delivery wrought by your placing the wrong information, you should take full responsibility.","my-profile-config-recommended-number-format":"Recommended number format.","my-profile-config-note-please-kindly-wait-if-there-are-many-orders-to-be-updated":"(Note: Please kindly wait if there are many orders to be updated.)","my-profile-config-allow":"Allow","my-profile-config-no-data-found":"No data found.","my-profile-account-there-is-sufficient-inventory-in-the-local-warehouse":"There is sufficient inventory in the local warehouse (Private inventory will be deducted first.)","my-profile-account-no-pod-products-contained":"No POD products contained.","my-profile-account-when-the-feature-is-turned-on-in-order-creation":"When the feature is turned on: in order creation, the local warehouse will be applied automatically in line with your order address if the following conditions are met. Or, China warehouse will be applied.","my-profile-account-progress":"Progress:","my-profile-account-local-warehouse-delivery":"Local Warehouse Delivery","my-profile-account-turn-it-on-to-shorten-the-delivery-time":"Turn it on to shorten the delivery time.","my-profile-account-there-is-an-available-shipping-method":"There is an available shipping method.","my-profile-account-there-is-a-local-warehouse-in-the-destination-country":"There is a local warehouse in the destination country.","my-profile-account-when-the-feature-is-turned-off-china-warehouse-will-be-the-default-option":"When the feature is turned off: China warehouse will be the default option.","my-profile-account-note-the-real-inventory-may-be-insufficient":"Note: as the above conditions are calculated in order creation, the real inventory may be insufficient. Please act accordingly in line with reminders then.","my-profile-account-order-information-settings":"Order Information Settings","my-profile-account-preset-the-shipping-address-to-facilitate-order-fulfillment":"Preset the shipping address to facilitate order fulfillment.","my-profile-common-action":"Action","my-profile-common-add":"Add","my-profile-shipping-deleted-successfully":"Deleted Successfully","my-profile-shipping-deleting-failed":"Deleting Failed","my-profile-shipping-please-select-a-category-first":"Please select a category first.","my-profile-shipping-default-shipping-method-can-only-be-set-up-in-3-categories-at-the-moment":"Default Shipping Method can only be set up in 3 categories at the moment.","my-profile-shipping-either-the-cheapest-or-the-fastest-shipping-method-can-be-set-up":"Either the cheapest or the fastest shipping method can be set up for the order
31657category.","my-profile-shipping-you-have-already-added-the-category":"You have already added the category.","my-profile-shipping-product":"Product","my-profile-shipping-secondary":"Secondary","my-profile-shipping-saved-successfully":"Saved Successfully","my-profile-shipping-you-have-already-set-up-the-precedence":"You have already set up the precedence.","my-profile-shipping-saving-failed":"Saving Failed","my-profile-shipping-tertiary":"Tertiary","my-profile-shipping-order-cheapest-shipping-method":"Order - Cheapest Shipping Method","my-profile-shipping-order-fastest-shipping-method":"Order - Fastest Shipping Method","my-profile-shipping-store":"Store","my-profile-shipping-primary":"Primary","my-profile-config-please-enter-the-email":"Please enter the email.","my-profile-shipping-you-can-set-up-the-precedence-for-the-3-categories":"You can set up the precedence for the 3 categories.","my-profile-shipping-more-details-about":"More details about:","my-profile-shipping-default-shipping-method-precedence":"Default Shipping Method Precedence","my-profile-shipping-add-the-precedence-for-default-shipping-methods":"Add the precedence for default shipping methods.","my-profile-shipping-precedence":"Precedence","my-profile-shipping-default-shipping-method-can-be-set-up-for-3-categories":"Default shipping method can be set up for 3 categories: (1) Store; (2) Product; (3) Order (Cheapest/Fastest shipping method).","my-profile-shipping-category":"Category","my-profile-shipping-how-to-set-default-shipping-method-precedence":"How to Set Default Shipping Method Precedence?","common-top-country":"Country","my-profile-common-please-select":"Please select","my-profile-common-no-data":"No Data","my-profile-common-all":"All","common-th-profile-browsing-history":"Browsing History","product-th-product-procurement-title-desc-no-weight":"Sorry, due to the lack of necessary information for calculating the shipping fee, you only need to pay the product fee now and make up the shipping fee later once the product information has been confirmed.","product-th-product-procurement-title-desc-no-property":"Sorry, due to the lack of necessary information for calculating the shipping fee, you only need to pay the product fee now and make up the shipping fee later once the product information has been confirmed","product-th-ordering-process":"Ordering Process","my-profile-address-delete-address":"Delete Address","my-profile-address-are-you-sure-to-delete-this-address":"Are you sure to delete this address?","common-top-drag-or-upload-an-image-to-search.":"Drag or upload an image to search.","common-change-user-default-config":"Are you sure to change the default language and currency?","list-record":"Record","list-record--plural":"Records","common-mycj-contact":"Contact","common-order-brazilian-tax":"Brazilian Tax","common-order-unavailable-logistics-reason":"Check unavailable shipping methods and reasons.","common-order-unavailable":"Unavailable","common-order-total-shipping-cost":"Total Shipping Cost","common-order-tracking-info":"Tracking Info","common-order-delivery-time":"Delivery Time","common-order-logistics-select-search-placeholder":"Please enter the shipping method","common-order-search":"Search","common-order-no-data":"No Data","list-correct-msg":"Please enter the correct price format","common-order-pay-on-my-behalf":"Pay on My Behalf","common-order-pay-myself":"Pay Myself","common-order-days":"{{day}} Day(s)","common-order-remote-fee-notice":"Including {{fee}} for remote fee","language-amharic":"Amharic","common-order-sku-multiple-ranges":"The number of SKUs must be a multiple of {{multiple}} and must not exceed 100,000","common-order-sku-multiple-ranges--plural":"The number of SKUs must be a multiple of {{multiple}} and must not exceed 100,000","common-order-sku-quantity-ranges":"SKU quantity ranges from 1 to 100,000","common-order-sku-quantity-ranges--plural":"SKU quantity ranges from 1 to 100,000","common-sign-in":"Sign In","common-register":"Register","purchase-cart-sample":"Sample","purchase-cart-wholesale":"Wholesale","common-top-register":"Register","common-top-sign-in":"Sign In","account-switched-tips":"You have switched an account. Please reload the page for updated information.","account-switched-tips--plural":"You have switched an account. Please reload the page for updated information.","common-reload":"Reload","common-reload--plural":"Reload","account-switched":"Account Switched","account-switched--plural":"Account Switched","common-top-language":"Language","common-top-currency":"Currency","common-login-you-can-source-everything":"You can source everything","common-login-no-account":"No Account","common-change-user-lngcur-country":"Are you sure to change the current country, language, and currency?","common-change-user-lngcur-country--plural":"Are you sure to change the current country, language, and currency?","common-th-search":"Search","product-th-products-arrived-desc":"Once your order arrives at the 1688. tech local warehouse, you\'ll be notified to pay the final logistics fee and receive your order\'s pickup location.","product-th-delivery-or-self-pickup":"Self
31657-pickup order products","home-1688-recommended-products":"You May Also Like","product-th-product-procurement-title-desc-normal":"You will only need to pay for the product for now with disregard for the shipping fee until the product arrives at the local warehouse.","product-th-product-procurement":"Product Procurement","product-th-products-order-placement":"You may select products at 1688tech and choose only to pay the product fee in order placement.","product-th-products-arrived":"Products Arrived at the Local Warehouse","product-th-products-order-placement-normal":"You may pick the products at 1688tech and you will only need to pay the product fee at this moment.","product-th-quality-inspection":"Quality Inspection&Weighing","common-mycj-menu-cart":"Cart","common-mycj-menu-orders":"Orders","common-mycj-menu-undelivered-orders":"Undelivered Orders","common-mycj-menu-disputes":"Disputes","common-mycj-my-site":"My {{siteName}}","common-mycj-menu-profile":"Profile","common-mycj-menu-wallet":"Wallet","logistic-order-placed-delivered-from-to":"Order {{customerOrderId}} placed by {{customerName}} has been delivered for a period of {{day}} days from <span class=\'flag-small {{start}}\' style=\'{{style}}\' ></span> to <span class=\'flag-small {{end}}\' style=\'{{style}}\' ></span>.","common-mycj-menu-tiktok-us-cross":"TikTok Shop US Cross Border","common-top-search-mabang-placeholder":"Please enter SPU/SKU, keywords, CJDropshipping product link to search for products","common-top-search-mabang-placeholder--plural":"Please enter SPU/SKU, keywords, CJDropshipping product link to search for products","product-card-list-with-on-click":"List with One-Click","product-card-list-with-on-click--plural":"List with One-Click","mabang-all":"All","global-warehouses-cj-has-confirmed-the-product":"{{name}} has confirmed the product quality and accurate inventory. Shipment is expected within 48 hours.","global-warehouses-cj-has-confirmed-the-product--plural":"{{name}} has confirmed the product quality and accurate inventory. Shipment is expected within 48 hours.","global-warehouses-unverified-inventories":"Unverified Inventories","global-warehouses-unverified-inventories--plural":"Unverified Inventories","global-warehouses-last-week":"Last week","global-warehouses-last-week--plural":"Last week","global-warehouses-supplier-products":"Supplier Products","global-warehouses-verified-inventories":"Verified Inventories","global-warehouses-verified-inventories--plural":"Verified Inventories","global-warehouses-all":"All","global-warehouses-last-3-months":"Last 3 months","global-warehouses-last-3-months--plural":"Last 3 months","global-warehouses-last-month":"Last month","global-warehouses-last-6-months":"Last 6 months","global-warehouses-last-6-months--plural":"Last 6 months","common-warehouse-all-warehouse":"All Warehouse","common-warehouse-all-warehouse--plural":"All Warehouse","common-warehouse-search-placeholder":"Please enter the country abbreviation or full name.","common-warehouse-search-placeholder--plural":"Please enter the country abbreviation or full name.","common-warehouse-no-data":"Sorry, no data found.","common-warehouse-no-data--plural":"Sorry, no data found.","common-warehouse-more":"More","common-warehosue-confirm":"Confirm","common-top-warehouse-search-tip1":"Infinite Local Products","common-top-warehouse-search-tip1--plural":"Infinite Local Products","common-top-warehouse-search-tip2":"Dropship Locally with Lightning Delivery & Savings","common-top-warehouse-search-tip2--plural":"Dropship Locally with Lightning Delivery & Savings","common-top-warehouse-search-tip3":"Private Agent Exclusive Service","common-top-warehouse-search-tip3--plural":"Private Agent Exclusive Service","hotCategories.empty.text":"Didnât find what? Post a sourcing request to CJ, and we will find the product for you within 48 hours.","empty-text-search":"Didnât find what? Post a sourcing request to CJ, and we will find the product for you within 48 hours.","search-empty-test-no":"Didnât find what? Post a sourcing request to CJ, and we will find the product for you within 48 hours.","account-status-switched":"Account Status Switched","account-status-switched--plural":"Account Status Switched","account-status-switched-tips":"You have switched your account status. Please reload the page for updated information.","account-status-switched-tips--plural":"You have switched your account status. Please reload the page for updated information.","common-top-global-products":"Global Products","footer-cj-dropshipping":"CJdropshipping","common-th-african-version":"Africa","global-warehouses-products-with-videos":"Product with Videos","global-warehouses-products-with-videos--plural":"Product with Videos","footer-global-warehouses":"Global Products","ship-from-shipping-method":"Shipping Method","my-profile-shipping-default-shipping-method-can-only-be-set-up-in-4-categories-at-the-moment":"Default Shipping Method can only be set up in 4 categories at the moment.","my-profile-shipping-default-shipping-method-can-only-be-set-up-in-4-categories-at-the-moment--plural":"Default Shipping Method can only be set up in 4 categories at the moment.","common-no-find-product":"Sorry, we can\'t find any products.","my-profile-common-shipping-1st":"1st","my-profile-common-shipping-1st--plural":"1st","my-profile-shipping-quaternary":"Quaternary","my-profile-shipping-quaternary--plural":"Quaternary","my-profile-shipping-del-logistics":"Do you want to delete the default logistics for \\"{{name}}\\"?","my-profile-shipping-del-logistics--plural":"Do you want to delete the default logistics for \\"{{name}}\\"?","my-profile-shipping-del-country":"After deleting the country of delivery, the default logistics of all countries will be cleared, please operate with caution.","my-profile-shipping-del-country--plural":"After deleting the country of delivery, the default logistics of all countries will be cleared, please operate with caution.","my-profile-shipping-country":"Country of delivery","my-profile-shipping-country--plural":"Country of delivery","my-profile-common-shipping-setting-tip":"You can set the default logistics by country of delivery here.","my-profile-common-shipping-setting-tip--plural":"You can set the default logistics by country of delivery here.","my-profile-common-shipping-no-data":"No data","my-profile-common-shipping-no-data--plural":"No data","shipping-add-the-default-logistics":"Add the Default Logistics of the Country of Delivery","shipping-add-the-default-logistics--plural":"Add the Default Logistics of the Country of Delivery","shipping-add-up-and-down":"Press and hold up and down to adjust the order.","shipping-add-up-and-down--plural":"Press and hold up and down to adjust the order.","shipping-add-delete":"Delete","shipping-add-at-least-default":"At least 1 default logistics must be added, so the last data does not support deletion.","shipping-add-at-least-default--plural":"At least 1 default logistics must be added, so the last data does not support deletion.","shipping-add-priority":"Priority","shipping-add-priority--plural":"Priority","shipping-add-please-select-the-country":"Please Select the Country of Delivery","shipping-add-please-select-the-country--plural":"Please Select the Country of Delivery","shipping-add-cancel":"Cancel","shipping-add-after-switching-the-destination-country":"After switching the destination country, the default logistics selected in the list will be cleared and you need to reselect. Do you want to continue switching?","shipping-add-after-switching-the-destination-country--plural":"After switching the destination country, the default logistics selected in the list will be cleared and you need to reselect. Do you want to continue switching?","shipping-add-confirm":"Confirm","shipping-add-country-of-delivery":"Country of delivery","shipping-add-country-of-delivery--plural":"Country of delivery","shipping-add-default-according-priority":"Orders take the default logistics according to priority. The logistics of the first priority is not available â take the logistics of the second priority ââ¦","shipping-add-default-according-priority--plural":"Orders take the default logistics according to priority. The logistics of the first priority is not available â take the logistics of the second priority ââ¦","shipping-add-logistics-options":"Logistics Options","shipping-add-logistics-options--plural":"Logistics Options","shipping-add-select-the-logistics":"Please Select the Logistics Options","shipping-add-select-the-logistics--plural":"Please Select the Logistics Options","shipping-add-set-up-5-default":"Set up to 5 default logistics options for one country.","shipping-add-set-up-5-default--plural":"Set up to 5 default logistics options for one country.","shipping-add-country-of-delivery-first":"Please Select the Country of Delivery First","shipping-add-country-of-delivery-first--plural":"Please Select the Country of Delivery First","shipping-add-added":"Added","shipping-add-please-check-and-complete":"Please check and complete the necessary information before submitting.","shipping-add-please-check-and-complete--plural":"Please check and complete the necessary information before submitting.","my-profile-common-shipping-5th":"5th","my-profile-common-shipping-5th--plural":"5th","my-profile-common-shipping-2nd":"2nd","my-profile-common-shipping-2nd--plural":"2nd","my-profile-common-shipping-4th":"4th","my-profile-common-shipping-4th--plural":"4th","my-profile-common-shipping-3rd":"3rd","my-profile-common-shipping-3rd--plural":"3rd","shipping-add-at-least-toast":"At least 1 default logistics must be added","shipping-add-at-least-toast--plural":"At least 1 default logistics must be added","shipping-add-configuration-will-be-deleted":"There is currently no default logistics set. After submission, the current country\'s configuration will be deleted.","shipping-add-configuration-will-be-deleted--plural":"There is currently no default logistics set. After submission, the current country\'s configuration will be deleted.","my-profile-shipping-sure-del-country":"Are you sure to delete the country of delivery option?","my-profile-shipping-sure-del-country--plural":"Are you sure to delete the country of delivery option?","shipping-edit-the-default-logistics":"Edit the Default Logistics of the Country of Delivery","shipping-edit-the-default-logistics--plural":"Edit the Default Logistics of the Country of Delivery","common-order-set-default-logistics":"Set Default Logistics","common-order-set-default-logistics--plural":"Set Default Logistics","my-profile-common-reset":"Reset","common-th-warning":"Reminding Notice","global-warehouses-share-tips":"Generate separate sharing links for selected countries.","global-warehouses-share-tips--plural":"Generate separate sharing links for selected countries.","global-warehouses-share-copy-notice":"Copy Link Successfully","global-warehouses-share-copy-notice--plural":"Copy Link Successfully","global-warehouses-share":"Share","common-th-confirm":"Got it","my-profile-shipping-default-shipping-method-can-be-set-up-for-4-categories":"Default shipping method can be set up for 4 categories: (1) Store; (2) Product; (3) Order (Cheapest/Fastest shipping method); (4) Country of delivery","my-profile-shipping-default-shipping-method-can-be-set-up-for-4-categories--plural":"Default shipping method can be set up for 4 categories: (1) Store; (2) Product; (3) Order (Cheapest/Fastest shipping method); (4) Country of delivery","my-profile-shipping-you-can-set-up-the-precedence-for-the-4-categories":"You can set up the precedence for the 4 categories.","my-profile-shipping-you-can-set-up-the-precedence-for-the-4-categories--plural":"You can set up the precedence for the 4 categories.","home-1688-top-tips":"At 1688.tech, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank y
31657ou for choosing us as your trusted marketplace.","common-th-warning-content":"At 1688.tech, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank you for choosing us as your trusted marketplace.","shipping-add-add":"Add","common-mycj-menu-temu":"Temu","common-mycj-menu-temu--plural":"Temu","common-mycj-menu-woocommerce":"Woocommerce","common-mycj-menu-ebay":"eBay","common-mycj-menu-api":"API","common-mycj-menu-etsy":"Etsy","common-mycj-menu-wix":"Wix","common-mycj-menu-lazada":"Lazada","common-mycj-menu-allvalue":"AllValue","common-mycj-menu-orangeconnex":"OrangeConnex","common-mycj-menu-mabang":"MabangERP","common-mycj-menu-mabang--plural":"MabangERP","global-warehouses-share-notice-tips":"Share the global product for a specific country.","global-warehouses-share-notice-tips--plural":"Share the global product for a specific country.","product-th-delivery-self-pickup-desc":"Once your payment of the logistics fee has been confirmed, please collect your order from the pickup address.","product-th-products-order-placement-normal-n":"You may pick the products at {{platform}} and you will only need to pay the product fee at this moment.","product-th-products-order-placement-normal-n--plural":"You may pick the products at {{platform}} and you will only need to pay the product fee at this moment.","product-th-quality-inspection-desc-n":"1688 merchants send products to {{platform}}\'s Chinese warehouses, where we conduct the quality inspection and weighing before sending the shipping fee bill to your account.","product-th-quality-inspection-desc-n--plural":"1688 merchants send products to {{platform}}\'s Chinese warehouses, where we conduct the quality inspection and weighing before sending the shipping fee bill to your account.","product-th-products-order-placement-n":"You may select products at {{platform}} and choose only to pay the product fee in order placement.","product-th-products-order-placement-n--plural":"You may select products at {{platform}} and choose only to pay the product fee in order placement.","common-th-warning-content-n":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank you for choosing us as your trusted marketplace.","common-th-warning-content-n--plural":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank you for choosing us as your trusted marketplace.","common-mycj-menu-cross-border":"Cross Border","common-mycj-menu-cross-border--plural":"Cross Border","common-mycj-menu-non-us":"Non-US","common-mycj-menu-non-us--plural":"Non-US","common-mycj-menu-us-local":"Local","common-mycj-menu-us-local--plural":"Local","common-th-warning-content-n1":"At {{platform}}, we ensure that all goods are from reputable suppliers of the 1688 platform in China. We do not sell branded goods that may infringe intellectual property rights. Each item will be strictly inspected before shipment to ensure quality and safe delivery to the destination. Thank you for choosing us as your trusted marketplace.","common-th-warning-content-n1--plural":"At {{platform}}, we ensure that all goods are from reputable suppliers of the 1688 platform in China. We do not sell branded goods that may infringe intellectual property rights. Each item will be strictly inspected before shipment to ensure quality and safe delivery to the destination. Thank you for choosing us as your trusted marketplace.","product-th-products-arrived-desc-n":"Once your order arrives at the {{platform}} local warehouse, you\'ll be notified to pay the final logistics fee and receive your order\'s pickup location.","product-th-products-arrived-desc-n--plural":"Once your order arrives at the {{platform}} local warehouse, you\'ll be notified to pay the final logistics fee and receive your order\'s pickup location.","common-order-sku-multiple":"the number of SKUs needs to be a multiple of {{multiple}}","common-order-sku-multiple--plural":"the number of SKUs needs to be a multiple of {{multiple}}","common-advertising-view-text":"Explore more","common-advertising-view-text--plural":"Explore more","common-copy-success":"Copied Successfully","common-copy-success--plural":"Copied Successfully","common-my-title":"My {{name}}","common-my-title--plural":"My {{name}}","common-experience-service-of-send-first":"Your Credit, Our Guarantee! Enjoy CJ\'s Special Service of Ordering First, Pay Later Designed for the Special You.","common-experience-service-of-send-first--plural":"Your Credit, Our Guarantee! Enjoy CJ\'s Special Service of Ordering First, Pay Later Designed for the Special You.","wallet-time":"Time:","wallet-export":"Export","wallet-all":"All","wallet-cancel":"Cancel","wallet-confirm":"Confirm","wallet-generate-invoice":"Generate Invoice","wallet-generate-invoice--plural":"Generate Invoice","common-nomakeup-order":"No make-up orders match your search.","common-nomakeup-order--plural":"No make-up orders match your search.","common-nodata-found":"Sorry, no data found.","common-nodata-found--plural":"Sorry, no data found.","header-my-cj":"My CJ","common-mycj-menu-sub-account":"Sub-
31657account","my-profile-email-is-registered":"The email address is registered.","my-profile-enter-valid-email":"Please enter a valid email.","my-profile-account-if-you-want-to-reset-your-password-no-email":"If you want to reset the password for this account, please click \\"Verify Now\\" below to add your email and verify it","my-profile-account-if-you-want-to-reset-your-password-no-email--plural":"If you want to reset the password for this account, please click \\"Verify Now\\" below to add your email and verify it","common-platforms-tit-erp":"ERP Platforms","common-platforms-tit-erp--plural":"ERP Platforms","common-credit-loan":"Credit Service","common-credit-loan--plural":"Credit Service","wallet-under-review":"Under Review","wallet-under-review--plural":"Under Review","wallet-rejected":"Rejected","wallet-approved":"Approved","wallet-approved--plural":"Approved","wallet-if-you-want-to-apply-for-credit-line-again-please-contact-your-agent.":"If you want to apply for credit line again, please contact your agent.","wallet-if-you-want-to-apply-for-credit-line-again-please-contact-your-agent.--plural":"If you want to apply for credit line again, please contact your agent.","loancredit-contact-details":"Contact Details","loancredit-contact-details--plural":"Contact Details","loancredit-confirm":"Confirm","loancredit-application-time-for-credit-line":"Application Time for Credit Line","loancredit-application-time-for-credit-line--plural":"Application Time for Credit Line","loancredit-line-of-credit-application-information-details":"Line of Credit Application Information Details","loancredit-line-of-credit-application-information-details--plural":"Line of Credit Application Information Details","loancredit-company-identification":"Company Identification","loancredit-company-identification--plural":"Company Identification","loancredit-first-name":"First Name","loancredit-certification-duns-business-identifier-or-ein-federal-tax-id":"Certification (DUNS Business Identifier or EIN Federal Tax ID)","loancredit-certification-duns-business-identifier-or-ein-federal-tax-id--plural":"Certification (DUNS Business Identifier or EIN Federal Tax ID)","loancredit-address":"Address","loancredit-city":"City","loancredit-business-details":"Business Details","loancredit-business-details--plural":"Business Details","loancredit-available-cedit-lines":"Available Cedit Lines","loancredit-available-cedit-lines--plural":"Available Cedit Lines","loancredit-credit-line-application-record":"Credit Line Application Record","loancredit-credit-line-application-record--plural":"Credit Line Application Record","loancredit-credit-application-progress":"Credit Application Progress","loancredit-credit-application-progress--plural":"Credit Application Progress","loancredit-last-name":"Last Name","loancredit-phone-number":"Phone Number","loancredit-e-mail-address":" E-mail Address","loancredit-e-mail-address--plural":" E-mail Address","loancredit-close":"Close","loancredit-details":"Details","loancredit-operation":"Operation","loancredit-operation--plural":"Operation","loancredit-country":"Country","loancredit-amount-of-credit-requested":"Amount of Credit Requested","loancredit-amount-of-credit-requested--plural":"Amount of Credit Requested","loancredit-state":"State","loancredit-state--plural":"State","loancredit-statutory-company-name":"Statutory Company Name","loancredit-statutory-company-name--plural":"Statutory Company Name","loancredit-zip-code":"Zip Code","loancredit-zip-code--plural":"Zip Code","loancredit-rejected":"Rejected","close-verify-confirm-content":"You can verify your email in the profile section in the future.","close-verify-confirm-content--plural":"You can verify your email in the profile section in the future.","loancredit-under-review":"Under Review","loancredit-under-review--plural":"Under Review","loancredit-approved":"Approved","loancredit-approved--plural":"Approved","close-verify-confirm-ok-text":"Got it.","close-verify-confirm-ok-text--plural":"Got it.","loancredit-check-the-status-of-your-credit-application":"Check the Status of Your Credit Application","loancredit-check-the-status-of-your-credit-application--plural":"Check the Status of Your Credit Application","loancredit-available-credit-lines":"Available Credit Lines","loancredit-available-credit-lines--plural":"Available Credit Lines","common-chinese-year-notice":"No Holiday Holds Us Back Even Chinese New Year, Stock Ahead With Us Now. Click for More!","common-chinese-year-notice--plural":"No Holiday Holds Us Back Even Chinese New Year, Stock Ahead With Us Now. Click for More!","common-chinese-year-notice-no-link":"No Holiday Holds Us Back Even Chinese New Year, Stock Ahead With Us Now!","common-chinese-year-notice-no-link--plural":"No Holiday Holds Us Back Even Chinese New Year, Stock Ahead With Us Now!","common-top-global-products-notice-text":"Your Choices of Endless Global Products. Click for More!","common-top-global-products-notice-text--plural":"Your Choices of Endless Global Products. Click for More!","common-ie-unsupport":"This page does not support Internet Explorer, please use a modern browser (such as Chrome, Edge, Firefox, etc.).","common-ie-unsupport--plural":"This page does not support Internet Explorer, please use a modern browser (such as Chrome, Edge, Firefox, etc.).","footer-sourcing":"Sourcing","common-user-company-name":"Company Name","common-user-company-name--plural":"Company Name","common-copied-successfully":"Copied Successfully.","common-copied-successfully--plural":"Copied Successfully.","common-costs-us-notice":"Important Update on U.S. Import Tariff Policy. Click For Details.","common-costs-us-notice--plural":"Important Update on U.S. Import Tariff Policy. Click For Details.","common-costs-us-notice-no-link":"Important Update on U.S. Import Tariff Policy. Click For Details.","common-costs-us-notice-no-link--plural":"Important Update on U.S. Import Tariff Policy. Click For Details.","common-sellstore":"Buy/Sell Your Store","common-sellstore--plural":"Buy/Sell Your Store","please-enter-a-specific-product-name":"Please enter a specific product name, 1688/Taobao/Aliexpress URL or images.","common-top-search-winning-products-by-keyword-sku-1688/taobao/aliexpress-url":"Search winning products by keyword, SKU, 1688/Taobao/Aliexpress URL","common1-view":" View Now","common1-view--plural":" View Now","product-listing-notice":"Notification of Your Product\'s Arrival at the Warehouse","product-listing-notice--plural":"Notification of Your Product\'s Arrival at the Warehouse","click-view-now-to-get-your-product-listing-details":"Click \\"View Now\\" to get detailed information about your product\'s arrival at the warehouse.","click-view-now-to-get-your-product-listing-details--plural":"Click \\"View Now\\" to get detailed information about your product\'s arrival at the warehouse.","common-mycj-menu-temu-us-local":"Temu US Local","common-mycj-menu-temu-us-local--plural":"Temu US Local","common-mycj-menu-show-us-local":"US Local","common-mycj-menu-show-us-local--plural":"US Local","common-platforms-tit-cross":"Ecommerce Platforms","common-platforms-tit-cross--plural":"Ecommerce Platforms","footer-social-media":"Social Media","footer-social-media--plural":"Social Media","new-home-1688-recommended-products":"Devinez que vous aim","new-home-1688-recommended-products--plural":"Devinez que vous aim","common-mycj-menu-other":"Other","common-mycj-menu-others":"Other Platforms","common-mycj-menu-others--plural":"Other Platforms","common-mycj-menu-online-service":"Online Service","common-mycj-menu-online-service--plural":"Online Service","common-mycj-menu-whatsapp":"WhatsApp","product-card-list":"List","product-card-lists":"Lists","product-card-ver
31657ify-inventory-tip":"{{siteName}} has confirmed the product quality and accurate inventory. Shipment is expected within 48 hours.","product-card-verify-inventory-tip--plural":"{{siteName}} has confirmed the product quality and accurate inventory. Shipment is expected within 48 hours.","product-card-normal-inventory-tip":"The supplier\'s real inventory is unable to track, as a result of daily market changes. To confirm it, please contact your agent.","product-card-normal-inventory-tip--plural":"The supplier\'s real inventory is unable to track, as a result of daily market changes. To confirm it, please contact your agent.","product-card-print-on-demand":"Print on Demand","printondemand-startdesign":"Start Design","common-credit-service":"Credit Service","common-credit-service--plural":"Credit Service","home-1688-banner-days":"Days","home-1688-top-tips-n1":"At {{platform}}, we ensure that all goods are from reputable suppliers of the 1688 platform in China. We do not sell branded goods that may infringe intellectual property rights. Each item will be strictly inspected before shipment to ensure quality and safe delivery to the destination. Thank you for choosing us as your trusted marketplace.","home-1688-top-tips-n1--plural":"At {{platform}}, we ensure that all goods are from reputable suppliers of the 1688 platform in China. We do not sell branded goods that may infringe intellectual property rights. Each item will be strictly inspected before shipment to ensure quality and safe delivery to the destination. Thank you for choosing us as your trusted marketplace.","home-new-bannner-list-two":"Trending Products","home-1688--new-new-product":"New Products","home-1688-global-selected":"Global Selected","home-1688-global-selected--plural":"Global Selected","home-1688--new-premium-selected":"Premium Selected","home-1688--new-premium-selected--plural":"Premium Selected","home-1688-top-tips-n":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank you for choosing us as your trusted marketplace.","home-1688-top-tips-n--plural":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery to Africa. Thank you for choosing us as your trusted marketplace.","new-home-1688-sales":"Sales","home-source-now":"Source Now","home-source-now--plural":"Source Now","home-global-products-title":"Global Products Endless Choices","home-global-products-title--plural":"Global Products Endless Choices","home-quick-sourcing-title":"Get Your Product Sourced Quickly","home-quick-sourcing-title--plural":"Get Your Product Sourced Quickly","email-apply-new-email":"New Email","email-apply-new-email--plural":"New Email","email-apply-registered-email":"Registered {{platformName}} Email","email-apply-registered-email--plural":"Registered {{platformName}} Email","email-apply-please-enter-the-email":"Please enter the email","email-apply-failed-to-connect-email-update-your-email-address-now.":"Failed to connect email, update your email address now.","email-apply-failed-to-connect-email-update-your-email-address-now.--plural":"Failed to connect email, update your email address now.","email-apply-provide-at-least-one-and-up-to-five-sets-of-supporting-information":"Provide at least one and up to five sets of supporting information.","email-apply-provide-at-least-one-and-up-to-five-sets-of-supporting-information--plural":"Provide at least one and up to five sets of supporting information.","email-apply-withdrawal-method":"Withdrawal Method","email-apply-withdrawal-method--plural":"Withdrawal Method","email-apply-please-enter-a-correct-emial-address.":"Please enter a correct email address.","email-apply-add-more-supporting-information":"Add More Supporting Information","email-apply-add-more-supporting-information--plural":"Add More Supporting Information","email-apply-the-more-cj-transaction-records-you-provide-the-higher-the-approval-c
31657hance":"The more {{platformName}} transaction records you provide, the higher the approval chance.","email-apply-the-more-cj-transaction-records-you-provide-the-higher-the-approval-chance--plural":"The more {{platformName}} transaction records you provide, the higher the approval chance.","email-apply-note-once-your-payment-proof-passes":"Note: Once your payment proof passes {{platformName}}âs review, your registered email will be updated to the new one, and your wallet withdrawal will be processed to your account.","email-apply-note-once-your-payment-proof-passes--plural":"Note: Once your payment proof passes {{platformName}}âs review, your registered email will be updated to the new one, and your wallet withdrawal will be processed to your account.","email-apply-withdrawal-amount":"Withdrawal Amount","email-apply-withdrawal-amount--plural":"Withdrawal Amount","email-apply-upload-cj-payment-proof":"Upload your {{platformName}} payment proof screenshot.","email-apply-upload-cj-payment-proof--plural":"Upload your {{platformName}} payment proof screenshot.","email-apply-upload-up-to-3-images-max-50mb-total-only-jpg-jpeg-png-or-heif-formats-are-supported":"Upload up to 3 images (max 50MB total). Only JPG, JPEG, PNG, or HEIF formats are supported.","email-apply-upload-up-to-3-images-max-50mb-total-only-jpg-jpeg-png-or-heif-formats-are-supported--plural":"Upload up to 3 images (max 50MB total). Only JPG, JPEG, PNG, or HEIF formats are supported.","email-apply-please-provide-your-cj-payment-history-to-verify-your-identity":"Please provide your {{platformName}} payment history to verify your identity.","email-apply-please-provide-your-cj-payment-history-to-verify-your-identity--plural":"Please provide your {{platformName}} payment history to verify your identity.","email-apply-please-enter-the-transaction-id-from-your-selected-payment-method":"Please enter the transaction ID from your selected payment method.","email-apply-please-enter-the-transaction-id-from-your-selected-payment-method--plural":"Please enter the transaction ID from your selected payment method.","email-apply-only-letters-and-numbers-are-allowed":"Only letters and numbers are allowed.","email-apply-only-letters-and-numbers-are-allowed--plural":"Only letters and numbers are allowed.","email-apply-third-party-payment-transaction-id":"Third-Party Payment Transaction ID","email-apply-third-party-payment-transaction-id--plural":"Third-Party Payment Transaction ID","email-apply-please-select-a-payment-method":"Please select a payment method","email-apply-please-select-a-payment-method--plural":"Please select a payment method","email-apply-please-select-a-payment-method-you-have-used-on-cj":"Please select a payment method you have used on {{platformName}}.","email-apply-please-select-a-payment-method-you-have-used-on-cj--plural":"Please select a payment method you have used on {{platformName}}.","wallet-paid-sourcing":"Paid Sourcing","wallet-paid-sourcing--plural":"Paid Sourcing","common-top-customized-videos":"Customize videos","common-mycj-menu-order-list-video":"Warehouse Operation Video List","common-mycj-menu-order-list-video--plural":"Warehouse Operation Video List","common-warehouse-warehouse-tit":"Global Warehouses","common-mycj-menu-miaoshou":"MiaoshouERP","common-mycj-menu-miaoshou--plural":"MiaoshouERP","common-payment-solution":"Payment Agency","product-card-list-btn":"List","email-apply-please-upload-images-in-jpg-jpeg-png-or-heif-format":"Please upload images in JPG, JPEG, PNG, or HEIF format.","email-apply-please-upload-images-in-jpg-jpeg-png-or-heif-format--plural":"Please upload images in JPG, JPEG, PNG, or HEIF format.","footer-scan-the-qr-code-to-download-for-mobile":"Scan the QR code to download {{siteName}} for Mobile","footer-scan-the-qr-code-to-download-for-mobile--plural":"Scan the QR code to download {{siteName}} for Mobile","email-apply-payment-proof-screenshot-new":"{{platformName}} payment proof screenshot","email-apply-payment-proof-screenshot-new--plural":"{{platformName}} payment proof screenshot","email-apply-please-enter-the-new-email":"Please enter the new email","email-apply-please-enter-the-new-email--plural":"Please enter the new email","wallet-payment-method":"Payment Method","email-apply-note-after-the-payment-transaction-voucher-you-provide-is-approved":"Note: After the payment transaction voucher you provide is approved by {{platformName}}, your registered email address will be changed to a new email address. At the same time, the amount you initiate a wallet withdrawal will also be transferred to your payment account.","email-apply-note-after-the-payment-transaction-voucher-you-provide-is-approved--plural":"Note: After the payment transaction voucher you provide is approved by {{platformName}}, your registered email address will be changed to a new email address. At the same time, the amount you initiate a wallet withdrawal will also be transferred to your payment account.","email-apply-payment-proof-screenshot-new-uppercase":"{{platformName}} Payment Proof Screenshot","email-apply-payment-proof-screenshot-new-uppercase--plural":"{{platformName}} Payment Proof Screenshot","authorize-list-you-cannot-delete-this-store-shop-name":"You cannot delete this store {{shopName}}","authorize-list-you-cannot-delete-this-store-shop-name--plural":"You cannot delete this store {{shopName}}","authorize-list-are-you-sure-to-delete-it":"Are you sure to delete it?","authorize-list-cancel":"Cancel","authorize-list-deleting-a-store-is-irreversible":"Deleting a store is irreversible. Once deleted, all related data of the store will be deleted, including the packaging connection in \\"My Products\\". If you want to continue, please click \\"Confirm\\".","authorize-list-deleting-a-store-is-irreversible--plural":"Deleting a store is irreversible. Once deleted, all related data of the store will be deleted, including the packaging connection in \\"My Products\\". If you want to continue, please click \\"Confirm\\".","authorize-list-ok":"OK","authorize-list-store-deletion-is-irreversible-as":"Store deleti
31657on is irreversible as, once deleted, the store will be disconnected from CJ automatically and all the relevant data will be deleted, including product, order, and store data. Please click \\"Confirm\\" if you want to proceed.","authorize-list-store-deletion-is-irreversible-as--plural":"Store deletion is irreversible as, once deleted, the store will be disconnected from CJ automatically and all the relevant data will be deleted, including product, order, and store data. Please click \\"Confirm\\" if you want to proceed.","authorize-list-this-store-cannot-be-deleted-as-it-still-has-orders-under":"This store cannot be deleted as it still has orders under the \\" <a href=\'/mine/dropshipping/orderManage\' className={s.link}>{{str}}</a> \\" tab. Please check and handle them before trying again.","authorize-list-this-store-cannot-be-deleted-as-it-still-has-orders-under--plural":"This store cannot be deleted as it still has orders under the \\" <a href=\'/mine/dropshipping/orderManage\' className={s.link}>{{str}}</a> \\" tab. Please check and handle them before trying again.","authorize-list-confirm":"Confirm","authorize-list-store-list":"Store List","authorize-list-store-list--plural":"Store List","authorize-list-authorization-will-expire-soon":"Authorization will expire soon.","authorize-list-authorization-will-expire-soon--plural":"Authorization will expire soon.","authorize-list-create-your-store-right-now":"Create your store right now!","authorize-list-create-your-store-right-now--plural":"Create your store right now!","authorize-list-inventory-sync-setting":"Inventory Sync Setting","authorize-list-inventory-sync-setting--plural":"Inventory Sync Setting","authorize-list-currently-temu-local-store-authorization":"Currently, Temu Local store authorization and product listing are only available for the US site. Orders must be fulfilled via CJ logistics. Support for multi-site listings and platform logistics for the US site will be rolled out graduallyâstay tuned!","authorize-list-currently-temu-local-store-authorization--plural":"Currently, Temu Local store authorization and product listing are only available for the US site. Orders must be fulfilled via CJ logistics. Support for multi-site listings and platform logistics for the US site will be rolled out graduallyâstay tuned!","authorize-list-how-to-transfer-your-store-from-old-account":"How to Transfer your Store from Old Account to New Account?","authorize-list-how-to-transfer-your-store-from-old-account--plural":"How to Transfer your Store from Old Account to New Account?","authorize-list-the-newly-added-store-here-is-a-virtual-store":"The newly added store here is a virtual store, which is not authorized, and data such as orders and products cannot be synchronized. This function is used in conjunction with \\"Set Packaging Across Stores\\" in \\"My Products\\" to enable Excel import orders to match the exclusive packaging of the same product in different stores.","authorize-list-the-newly-added-store-here-is-a-virtual-store--plural":"The newly added store here is a virtual store, which is not authorized, and data such as orders and products cannot be synchronized. This function is used in conjunction with \\"Set Packaging Across Stores\\" in \\"My Products\\" to enable Excel import orders to match the exclusive packaging of the same product in different stores.","authorize-list-transferring":"Transferring","authorize-list-transferring--plural":"Transferring","authorize-list-auto-sync":"Auto-Sync (Order&Product Information)","authorize-list-auto-sync--plural":"Auto-Sync (Order&Product Information)","authorize-list-unauthorized":"Unauthorized","authorize-list-unauthorized--plural":"Unauthorized","authorize-list-transfer-record":"Transfer Record","authorize-list-transfer-record--plural":"Transfer Record","authorize-list-you-may-go-to-the-third-party-platform-to-reauthorize":"You may go to the third-party platform to reauthorize your store.","authorize-list-add-store":"Add Store","authorize-list-the-store-and-its-related-data":"The store and its related data have been deleted.","authorize-list-the-store-and-its-related-data--plural":"The store and its related data have been deleted.","authorize-list-token-verification-results":"Token Verification Results","authorize-list-token-verification-results--plural":"Token Verification Results","authorize-list-how-to-fulfill-your-mabang-orders-with-site-full-name":"How to Fulfill Your Mabang Orders with {{siteFullName}}?","authorize-list-how-to-fulfill-your-mabang-orders-with-site-full-name--plural":"How to Fulfill Your Mabang Orders with {{siteFullName}}?","authorize-list-currency":"Currency","authorize-list-the-store-has-been-deauthorized":"The store has been deauthorized automatically as it has been inactive for a long time.","authorize-list-the-store-has-been-deauthorized--plural":"The store has been deauthorized automatically as it has been inactive for a long time.","authorize-list-updated-date":"Updated Date","authorize-list-updated-date--plural":"Updated Date","authorize-list-removing-authorization-means-that":"Removing the authorization means that you have completed all the above issues.","authorize-list-removing-authorization-means-that--plural":"Removing the authorization means that you have completed all the above issues.","authorize-list-delete":"Delete","authorize-list-activate":"Activate","authorize-list-unauthorized-stores":"Unauthorized Stores","authorize-list-unauthorized-stores--plural":"Unauthorized Stores","authorize-list-show-deactivated":"Show Deactivated","authorize-list-show-deactivated--plural":"Show Deactivated","authorize-list-reauthorize":"Reauthorize","authorize-list-market":"Market","authorize-list-market--plural":"Market","authorize-list-authorized-api-list":"Authorized API List","authorize-list-authorized-api-list--plural":"Authorized API List","authorize-list-deactivate":"Deactivate","authorize-list-deactivate--plural":"Deactivate","authorize-list-a-collection-of-available-products-for-tiktok-shop-us-store":"A collection of available products for TikTok Shop US store.","authorize-list-a-collection-of-available-products-for-tiktok-shop-us-store--plural":"A collection of available products for TikTok Shop US store.","authorize-list-you-can-manage-stores-that-are-not-connected-to-the-site-name-platform-here":"You can manage stores that are not connected to the {{siteName}} platform here. The stores added here are virtual stores, which are not authorized, and data such as orders and products cannot be synchronized. This function is used in conjunction with \\"Set Packaging Across Stores\\" in \\"My Products\\" to enable Excel import orders to match the exclusive packaging of the same product in different stores.","authorize-list-you-can-manage-stores-that-are-not-connected-to-the-site-name-platform-here--plural":"You can manage stores that are not connected to the {{siteName}} platform here. The stores added here are virtual stores, which are not authorized, and data such as orders and products cannot be synchronized. This function is used in conjunction with \\"Set Packaging Across Stores\\" in \\"My Products\\" to enable Excel import orders to match the exclusive packaging of the same product in different stores.","authorize-list-activated":"Activated","authorize-list-authorize-your-store-to-activate-one-click":"Authorize your store to activate one-click product listing and automatic order fulfillment.","authorize-list-authorize-your-store-to-activate-one-click--plural":"Authorize your store to activate one-click product listing and automatic order fulfillment.","authorize-list-logistics-type-settings":"Logistics Type Settings","authorize-list-logistics-type-settings--plural":"Logistics Type Settings","authorize-list-authorization-type":"Authorization Type","authorize-list-authorization-type--plural":"Authorization Type","authorize-list-add-virtual-store":"Add Virtual Store","authorize-list-add-virtual-store--plural":"Add Virtual Store","authorize-list-how-to-connect-your-platform-store-to-site-name":"How to Connect Your {{platform}} Store to {{siteName}?","authorize-list-how-to-connect-your-platform-store-to-site-name--plural":"How to Connect Your {{platform}} Store to {{siteName}?","authorize-list-us-cross-border":"US-Cross Border","authorize-list-us-cross-border--plural":"US-Cross Border","authorize-list-enter-store-name":"Enter Store Name","authorize-list-enter-store-name--plural":"Enter Store Name","authorize-list-us-orders":"US Orders","authorize-list-us-orders--plural":"US Orders","authorize-list-deactivated":"Deactivated","authorize-list-deactivated--plural":"Deactivated","authorize-list-store-logistics":"Store Logistics","authorize-list-store-logistics--plural":"Store Logistics","authorize-list-non-public-store-name":"Non-public Store Name","authorize-list-non-public-store-name--plural":"Non-public Store Name","authorize-list-store-type":"Store Type","authorize-list-store-type--plural":"Store Type","authorize-list-authorization-failed":"Authorization Failed","authorize-list-how-to-connect-mabang-erp-account-to-site-full-name":"How to Connect Mabang ERP Account to {{siteFullName}}?","authorize-list-how-to-connect-mabang-erp-account-to-site-full-name--plural":"How to Connect Mabang ERP Account to {{siteFullName}}?","authorize-list-we-cannot-find-any-data":"Sorry, we cannot find any data.","authorize-list-half-managed":"Half-Managed","authorize-list-half-managed--plural":"Half-Managed","authorize-list-deleted-successfully":"Deleted successfully!","authorize-list-deleted-successfully--plural":"Deleted successfully!","authorize-list-authorization-expired":"Authorization expired.","authorize-list-authorization-expired--plural":"Authorization expired.","authorize-list-please-enter-the-store-name":"Please enter the store name","authorize-list-please-enter-the-store-name--plural":"Please enter the store name","authorize-list-us-local":"US-Local","authorize-list-us-local--plural":"US-Local","authorize-list-search":"Search","authorize-list-how-to-connect-platform-by-default":"How to Connect {{platform}} by Default?","authorize-list-how-to-connect-platform-by-default--plural":"How to Connect {{platform}} by Default?","authorize-list-how-can-i-sell-site-name-products-using-platform":"How can I sell {{siteName}}\'s products using {{platform}}?","authorize-list-how-can-i-sell-site-name-products-using-platform--plural":"How can I sell {{siteName}}\'s products using {{platform}}?","authorize-list-package-alert-settings":"Package Alert Settings","authorize-list-package-alert-settings--plural":"Package Alert Settings","authorize-list-authorized":"Authorized","authorize-list-authorized--plural":"Authorized","authorize-list-product":"Product","authorize-list-store":"Store","authorize-list-a-guidance-to-platform-connection":"A Guidance to {{platform}} Connection.","authorize-list-a-guidance-to-platform-connection--plural":"A Guidance to {{platform}} Connection.","authorize-list-action":"Action","authorize-list-after-authorization-is-removed-2":"2. After the authorization is removed, your order delivery information will not be updated. Please confirm that all your MabangERP orders from CJ have been fulfilled.","authorize-list-after-authorization-is-removed-2--plural":"2. After the authorization is removed, your order delivery information will not be updated. Please confirm that all your MabangERP orders from CJ have been fulfilled.","authorize-list-after-authorization-is-removed-1":"1. After the authorization is removed, the orders generated by the current overseas warehouse will no longer be pulled. Please go to MabangERP ERP - Logistics - Logistics Authorization - Third-Party/Overseas Warehouse menu to cancel the CJ overseas warehouse authorization to avoid your orders being pushed to the CJ overseas warehouse and unable to be fulfilled.","authorize-list-after-authorization-is-removed-1--plural":"1. After the authorization is removed, the orders generated by the current overseas warehouse will no longer be pulled. Please go to MabangERP ERP - Logistics - Logistics Authorization - Third-Party/Overseas Warehouse menu to cancel the CJ overseas warehouse authorization to avoid your orders being pushed to the CJ overseas warehouse and unable to be fulfilled.","authorize-list-how-to-connect-platform-with-site-name":"How to Connect {{platform}} with {{siteName}}?","authorize-list-how-to-connect-platform-with-site-name--plural":"How to Connect {{platform}} with {{siteName}}?","authorize-list-store-status":"Store Status","authorize-list-store-status--
31657plural":"Store Status","authorize-list-store-id":"Store ID","authorize-list-store-id--plural":"Store ID","authorize-list-update-authorize":"Update Authorize","authorize-list-update-authorize--plural":"Update Authorize","authorize-list-transfer-store":"Transfer Store","authorize-list-transfer-store--plural":"Transfer Store","authorize-list-tiktok-shop-us-products":"TikTok Shop US Products","authorize-list-tiktok-shop-us-products--plural":"TikTok Shop US Products","authorize-list-you-have-not-authorized-any-stores-yet":"You haven\'t authorized any stores yet.","authorize-list-you-have-not-authorized-any-stores-yet--plural":"You haven\'t authorized any stores yet.","authorize-list-token-expired-time":"Token Expired Time","authorize-list-token-expired-time--plural":"Token Expired Time","authorize-list-how-to-connect-platform-by-oauth-plugin":"How to Connect {{platform}} by OAuth Plugin?","authorize-list-how-to-connect-platform-by-oauth-plugin--plural":"How to Connect {{platform}} by OAuth Plugin?","authorize-list-connect":"Connect","authorize-list-and-ensure-consistency-once-well-set":"and ensure consistency. Once well-set, please do not alter it in case the office logistics cannot pick up the package, in which case, you shall take full responsibility for any loss occurred.","authorize-list-and-ensure-consistency-once-well-set--plural":"and ensure consistency. Once well-set, please do not alter it in case the office logistics cannot pick up the package, in which case, you shall take full responsibility for any loss occurred.","authorize-list-this-store-had-been-authoried-to-one-of-our-users":"This store had been authoried to one of our users.","authorize-list-this-store-had-been-authoried-to-one-of-our-users--plural":"This store had been authoried to one of our users.","authorize-list-a-default-address-will-be-generated":"A default address will be generated after your orders are synced to {{siteName}}, which cannot be modified. However, we will generate shipping labels and deliver your packages according to the real address.","authorize-list-a-default-address-will-be-generated--plural":"A default address will be generated after your orders are synced to {{siteName}}, which cannot be modified. However, we will generate shipping labels and deliver your packages according to the real address.","authorize-list-according-to-the-rules-of-tiktok-shop":"According to the rules of {{platform}} Shop, products can only be sent from US warehouses. Therefore, only the inventory from {{siteName}}\'s US warehouses will be synced in line with the product connection.","authorize-list-according-to-the-rules-of-tiktok-shop--plural":"According to the rules of {{platform}} Shop, products can only be sent from US warehouses. Therefore, only the inventory from {{siteName}}\'s US warehouses will be synced in line with the product connection.","authorize-list-logistics-logistics-authorization":"Logistics - Logistics Authorization - Tripartite/Overseas Warehouse - Variable: {{warehouseName}} - Enable Authorization","authorize-list-logistics-logistics-authorization--plural":"Logistics - Logistics Authorization - Tripartite/Overseas Warehouse - Variable: {{warehouseName}} - Enable Authorization","authorize-list-authorize-now":"Authorize Now","authorize-list-authorize-now--plural":"Authorize Now","authorize-list-continue-to-authorize":"Continue to Authorize","authorize-list-continue-to-authorize--plural":"Continue to Authorize","authorize-list-no-data":"No data","authorize-list-for-tiktok-stores-please-list-products":"For {{plateform}} stores, please list products from the {{plateform}} section on the home page due to the limitation of dispatch time set out by {{plateform}} platform.","authorize-list-for-tiktok-stores-please-list-products--plural":"For {{plateform}} stores, please list products from the {{plateform}} section on the home page due to the limitation of dispatch time set out by {{plateform}} platform.","authorize-list-inconsistent-info":"Inconsistent info","authorize-list-inconsistent-info--plural":"Inconsistent info","authorize-list-auto-sync-has-been-activated":"Auto-Sync has been activated.","authorize-list-auto-sync-has-been-activated--plural":"Auto-Sync has been activated.","authorize-list-how-to-set-it-up":"How to set it up?","authorize-list-how-to-set-it-up--plural":"How to set it up?","authorize-list-invalid":"Invalid","authorize-list-hide":"Hide","authorize-list-zip-code":"Zip Code","authorize-list-zip-code--plural":"Zip Code","authorize-list-enable-now":"Enable Now","authorize-list-enable-now--plural":"Enable Now","authorize-list-after-you-pay-for-your-orders-on-site-name":"1. After you pay for your orders on {{siteName}}, we will fulfill your orders as quickly as possible.","authorize-list-after-you-pay-for-your-orders-on-site-name--plural":"1. After you pay for your orders on {{siteName}}, we will fulfill your orders as quickly as possible.","authorize-list-store-shipping-methods":"Store Shipping Methods","authorize-list-store-shipping-methods--plural":"Store Shipping Methods","authorize-list-how-to-connect-your-platform-store-to-site-name-new":"How to Connect Your {{platform}} Store to {{siteName}}?","authorize-list-how-to-connect-your-platform-store-to-site-name-new--plural":"How to Connect Your {{platform}} Store to {{siteName}}?","authorize-list-store-name":"Store Name","authorize-list-str-priority":"{{str}} Priority","authorize-list-str-priority--plural":"{{str}} Priority","authorize-list-additionally-cj-offers-a-large-number-of-factory":"Additionally, {{siteName}} offers a large number of factory direct supply products. You can select products on {{siteName}} and list them to your {{platform}} store.","authorize-list-additionally-cj-offers-a-large-number-of-factory--plural":"Additionally, {{siteName}} offers a large number of factory direct supply products. You can select products on {{siteName}} and list them to your {{platform}} store.","authorize-list-etsy-authorization-is-temporarily-unavailable":"{{platform}} authorization is temporarily unavailable.","authorize-list-etsy-authorization-is-temporarily-unavailable--plural":"{{platform}} authorization is temporarily unavailable.","authorize-list-use-platform-logistics":"Use Platform Logistics","authorize-list-use-platform-logistics--plural":"Use Platform Logistics","authorize-list-adjusted":"Adjusted","authorize-list-adjusted--plural":"Adjusted","authorize-list-add-connection":"Add Connection","authorize-list-add-connection--plural":"Add Connection","authorize-list-server-is-busy-now-please-try-again-later":"The server is busy now. Please try again later.","authorize-list-only-english-letters-numbers":"Only English letters, numbers, \'_\', \'-\', \'.\', \'@\' are supported.","authorize-list-only-english-letters-numbers--plural":"Only English letters, numbers, \'_\', \'-\', \'.\', \'@\' are supported.","authorize-list-contact-us":"Contact Us","authorize-list-the-selected-warehouse-inventory-is-invalid":"The selected warehouse inventory is invali
31657d. Please adjust the warehouse status and reconnect.","authorize-list-the-selected-warehouse-inventory-is-invalid--plural":"The selected warehouse inventory is invalid. Please adjust the warehouse status and reconnect.","authorize-list-please-connect-at-least-one-warehouse":"Please connect at least one warehouse.","authorize-list-please-connect-at-least-one-warehouse--plural":"Please connect at least one warehouse.","authorize-list-you-should-set-up-site-name-shipping-returning-warehouse":"You should set up {{siteName}} shipping/returning warehouse in your {{plateform}} management platform. If multiple shipping warehouses have been set up, {{siteName}} warehouse should be listed first. Here is our warehouse information. ","authorize-list-you-should-set-up-site-name-shipping-returning-warehouse--plural":"You should set up {{siteName}} shipping/returning warehouse in your {{plateform}} management platform. If multiple shipping warehouses have been set up, {{siteName}} warehouse should be listed first. Here is our warehouse information. ","authorize-list-products-can-only-be-shipped-to-temu-from-its-specified-national":"Products can only be shipped to {{platform}} from its specified national warehouses. As a result, inventory synchronization with {{siteName}} is contingent upon stock availability in {{siteName}}\'s designated warehouses.","authorize-list-products-can-only-be-shipped-to-temu-from-its-specified-national--plural":"Products can only be shipped to {{platform}} from its specified national warehouses. As a result, inventory synchronization with {{siteName}} is contingent upon stock availability in {{siteName}}\'s designated warehouses.","authorize-list-private-inventory-only":"Private Inventory Only","authorize-list-private-inventory-only--plural":"Private Inventory Only","authorize-list-mabang-authorization":"MABANG Authorization.","authorize-list-mabang-authorization--plural":"MABANG Authorization.","authorize-list-store-warehouse":"Store Warehouse","authorize-list-store-warehouse--plural":"Store Warehouse","authorize-list-sitename-inventory-only":"{{siteName}}âs Inventory Only","authorize-list-sitename-inventory-only--plural":"{{siteName}}âs Inventory Only","authorize-list-submit":"Submit","authorize-list-sorry-no-data-found":"Sorry, no data found.","authorize-list-sorry-no-data-found--plural":"Sorry, no data found.","authorize-list-auto-sync-has-been-deactivated":"Auto-Sync has been deactivated.","authorize-list-auto-sync-has-been-deactivated--plural":"Auto-Sync has been deactivated.","authorize-list-city-and-state":"City and State","authorize-list-city-and-state--plural":"City and State","authorize-list-are-you-sure-to-deactivate-connection":"Are you sure to deactivate the connection?","authorize-list-are-you-sure-to-deactivate-connection--plural":"Are you sure to deactivate the connection?","authorize-list-connect-shop-warehouse":"Connect Shop Warehouse","authorize-list-connect-shop-warehouse--plural":"Connect Shop Warehouse","authorize-list-tutorial-for-authorizing-mercado-stores-to-cj":"Tutorial for Authorizing {{plateform}} Stores to {{siteName}}.","authorize-list-tutorial-for-authorizing-mercado-stores-to-cj--plural":"Tutorial for Authorizing {{plateform}} Stores to {{siteName}}.","authorize-list-warehouse-settings":"Warehouse Settings","authorize-list-warehouse-settings--plural":"Warehouse Settings","authorize-list-synchronize-tracking-numbers-to-your-platform":"Synchronize tracking numbers to your {{platform}} store by copy-pasting the tracking number.","authorize-list-synchronize-tracking-numbers-to-your-platform--plural":"Synchronize tracking numbers to your {{platform}} store by copy-pasting the tracking number.","authorize-list-via-platform-third-party-plugins":"Via {{platform}} third-party plugins","authorize-list-via-platform-third-party-plugins--plural":"Via {{platform}} third-party plugins","authorize-list-sync-etsy-products-and-orders-to-platform-then-sync-to-site-name":"Sync {{platform}} Products and Orders to {{targetPlatform}} then Sync to {{siteName}}","authorize-list-sync-etsy-products-and-orders-to-platform-then-sync-to-site-name--plural":"Sync {{platform}} Products and Orders to {{targetPlatform}} then Sync to {{siteName}}","authorize-list-export-your-data-into-csv-files-and-import-them-to-your-new-platform-store":"Export your data into CSV files, and import them to your new {{platform}} store (some data can\'t be migrated this way).","authorize-list-export-your-data-into-csv-files-and-import-them-to-your-new-platform-store--plural":"Export your data into CSV files, and import them to your new {{platform}} store (some data can\'t be migrated this way).","authorize-list-use-third-party-migration-apps-from-the-platform":"Use third-party migration apps from the <a target=\'_blank\' class=\'link\' href=\'https://apps.shopify.com/search?q=etsy\'>{{platform}} app store<i class=\'iconfont iconlujing1\'></i></a>.","authorize-list-use-third-party-migration-apps-from-the-platform--plural":"Use third-party migration apps from the <a target=\'_blank\' class=\'link\' href=\'https://apps.shopify.com/search?q=etsy\'>{{platform}} app store<i class=\'iconfont iconlujing1\'></i></a>.","authorize-list-too-many-attempts-next-edit-time":"Too many attempts. Next edit time","authorize-list-too-many-attempts-next-edit-time--plural":"Too many attempts. Next edit time","authorize-list-product-selection":"Product selection","authorize-list-product-selection--plural":"Product selection","authorize-list-when-the-store-selects-platform-logistics-platform-site-name":"When the store selects platform logistics, {{platformType}} orders will automatically switch to platform logistics. Please note that {{siteName}} does not handle the shipping time or costs for these orders.","authorize-list-when-the-store-selects-platform-logistics-platform-site-name--plural":"When the store selects platform logistics, {{platformType}} orders will automatically switch to platform logistics. Please note that {{siteName}} does not handle the shipping time or costs for these orders.","authorize-list-the-product-is-shipped-directly-by-the-supplier":"The product is shipped directly by the supplier, and the remaining quantity of the supplier\'s inventory cannot be tracked in time. There is a certain risk in the inventory quantity. Aconnection of the warehouse means that you are aware of the risk.","authorize-list-the-product-is-shipped-directly-by-the-supplier--plural":"The product is shipped directly by the supplier, and the remaining quantity of the supplier\'s inventory cannot be tracked in time. There is a certain risk in the inventory quantity. Aconnection of the warehouse means that you are aware of the risk.","authorize-list-warehouse-name":"Warehouse Name","authorize-list-warehouse-name--plural":"Warehouse Name","authorize-list-store-authorization-has-expired-please":"Store authorization has expired. Please close the popup and go to \\"Store List\\" > \\"Store Status\\" to select \\"Reauthorize.\\"","authorize-list-store-authorization-has-expired-please--plural":"Store authorization has expired. Please close the popup and go to \\"Store List\\" > \\"Store Status\\" to select \\"Reauthorize.\\"","authorize-list-account-authorization":"Account Authorization","authorize-list-account-authorization--plural":"Account Authorization","authorize-list-warehouse-address":"Warehouse Address","authorize-list-shipping-warehouse":"Shipping Warehouse","authorize-list-shipping-warehouse--plural":"Shipping Warehouse","authorize-list-the-address-marked-with-has-been-icon-changed":"The address marked with \\" <i class=\'iconfont icongenghuandizhi areaIcon\'></i> \\" has been changed. Please check the latest data.","authorize-list-the-address-marked-with-has-been-icon-changed--plural":"The address marked with \\" <i class=\'iconfont icongenghuandizhi areaIcon\'></i> \\" has been changed. Please check the latest data.","authorize-list-please-add-site-name-warehouse-information-below":"Please add {{siteName}}\'s warehouse information below to the {{plateform}} Shop admin >","authorize-list-please-add-site-name-warehouse-information-below--plural":"Please add {{siteName}}\'s warehouse information below to the {{plateform}} Shop admin >","authorize-list-as-ontario-warehouse":"As the Ontario warehouse, Bordentown warehouse, and Austell warehouse are only available for orders using merchant self
31657-shipping, please do not add those warehouses to your store when using {{plateform}} official logistics. ","authorize-list-as-ontario-warehouse--plural":"As the Ontario warehouse, Bordentown warehouse, and Austell warehouse are only available for orders using merchant self-shipping, please do not add those warehouses to your store when using {{plateform}} official logistics. ","authorize-list-for-the-connected-product-inventory-will-be":"For the connected product, inventory will be automatically synced when the inventory changes in {{plateform}}\'s US warehouse.","authorize-list-for-the-connected-product-inventory-will-be--plural":"For the connected product, inventory will be automatically synced when the inventory changes in {{plateform}}\'s US warehouse.","authorize-list-store-delivery-mode-under-the-authorized":"2. The store delivery mode under the authorized account is: self-delivery. The store in Full Warehouse mode will be automatically filtered after successful authorization.","authorize-list-store-delivery-mode-under-the-authorized--plural":"2. The store delivery mode under the authorized account is: self-delivery. The store in Full Warehouse mode will be automatically filtered after successful authorization.","authorize-list-the-store-authorization-has-been-verified-to-be-invalid":"The store authorization has been verified to be invalid. Please go to re-authorize.","authorize-list-the-store-authorization-has-been-verified-to-be-invalid--plural":"The store authorization has been verified to be invalid. Please go to re-authorize.","authorize-list-authorization-notice":"Authorization Notice","authorize-list-authorization-notice--plural":"Authorization Notice","authorize-list-not-sync":"Not Sync","authorize-list-not-sync--plural":"Not Sync","authorize-list-close":"Close","authorize-list-synchronize-temu-us-warehouse-address":"Synchronize {{platform}} US warehouse address","authorize-list-synchronize-temu-us-warehouse-address--plural":"Synchronize {{platform}} US warehouse address","authorize-list-redirect-now":"Redirect Now.","authorize-list-redirect-now--plural":"Redirect Now.","authorize-list-inconsistent-warehouse-information-please":"Inconsistent warehouse information. Please double-check and alter it on the {{platform}} Shop admin.","authorize-list-inconsistent-warehouse-information-please--plural":"Inconsistent warehouse information. Please double-check and alter it on the {{platform}} Shop admin.","authorize-list-temu-warehouse-address-settings":"{{platform}} warehouse address settings: {{platform}} Seller Center > Delivery Management > Warehouse Address Management","authorize-list-temu-warehouse-address-settings--plural":"{{platform}} warehouse address settings: {{platform}} Seller Center > Delivery Management > Warehouse Address Management","authorize-list-enable-authorization-process":"Enable authorization process: Verify that authorization is not enabled in MABANG ERP; you need to go to the MABANG.","authorize-list-enable-authorization-process--plural":"Enable authorization process: Verify that authorization is not enabled in MABANG ERP; you need to go to the MABANG.","authorize-list-edit-failed":"Edit Failed","authorize-list-edit-failed--plural":"Edit Failed","authorize-list-account-type-currently-allowed-for-authorization":"1. The account type currently allowed for authorization is: Cross-Border Store.","authorize-list-account-type-currently-allowed-for-authorization--plural":"1. The account type currently allowed for authorization is: Cross-Border Store.","authorize-list-inconsistent-warehouse-information-platform":"Inconsistent warehouse information. Please double-check and alter it on the {{plateform}} Shop admin.","authorize-list-inconsistent-warehouse-information-platform--plural":"Inconsistent warehouse information. Please double-check and alter it on the {{plateform}} Shop admin.","authorize-list-view-warehouse-name-warehouse":"View {{warehouseName}}","authorize-list-view-warehouse-name-warehouse--plural":"View {{warehouseName}}","authorize-list-please-connect-at-least-one-site-name":"Please connect at least one {{siteName}} warehouse to meet the needs of synchronized inventory.","authorize-list-please-connect-at-least-one-site-name--plural":"Please connect at least one {{siteName}} warehouse to meet the needs of synchronized inventory.","authorize-list-virtual-store-added-successfully":"Virtual store added successfully!","authorize-list-virtual-store-added-successfully--plural":"Virtual store added successfully!","authorize-list-phone-number":"Phone Number","authorize-list-neithertheless-for-products-other-than-in-the-tiktok":"Nevertheless, for products other than
31657in the {{plateform}} section, you may purchase private inventory to US warehouse first before listing and selling.","authorize-list-neithertheless-for-products-other-than-in-the-tiktok--plural":"Nevertheless, for products other than in the {{plateform}} section, you may purchase private inventory to US warehouse first before listing and selling.","authorize-list-migration-expert":"Migration expert","authorize-list-migration-expert--plural":"Migration expert","authorize-list-please-select-country":"Please select the country","authorize-list-product-listing":"Product listing","authorize-list-product-listing--plural":"Product listing","authorize-list-hire-a-shopify-partner":"<a target=\'_blank\' class=\'link\' href=\'https://www.shopify.com/partners/directory/services/store-setup/migrate-from-another-platform\'>Hire a {{platform}} Partner<i class=\'iconfont iconlujing1\'></i></a> to manage and complete your migration.","authorize-list-hire-a-shopify-partner--plural":"<a target=\'_blank\' class=\'link\' href=\'https://www.shopify.com/partners/directory/services/store-setup/migrate-from-another-platform\'>Hire a {{platform}} Partner<i class=\'iconfont iconlujing1\'></i></a> to manage and complete your migration.","authorize-list-you-can-only-set-three-shipping-methods-at-most":"You can only set three shipping methods at most.","authorize-list-you-can-only-set-three-shipping-methods-at-most--plural":"You can only set three shipping methods at most.","authorize-list-add-shipping-method":"Add Shipping Method","authorize-list-add-shipping-method--plural":"Add Shipping Method","authorize-list-register-now":"Register Now","authorize-list-register-now--plural":"Register Now","authorize-list-address":"Address","authorize-list-please-enter-store-name":"Please enter store name","authorize-list-please-enter-store-name--plural":"Please enter store name","authorize-list-all-states":"All States","authorize-list-all-states--plural":"All States","authorize-list-no-data-found":"No data found.","authorize-list-stores-with-a-hong-kong-entity-must-select-usd":"Stores with a Hong Kong entity must select USD","authorize-list-stores-with-a-hong-kong-entity-must-select-usd--plural":"Stores with a Hong Kong entity must select USD","authorize-list-the-current-address-has-changed":"The current address has changed. Please sync and adjust the address in your store.","authorize-list-the-current-address-has-changed--plural":"The current address has changed. Please sync and adjust the address in your store.","authorize-list-store-name-displayed-in-site-name-management-backend":"The store name displayed in the {{ siteName }} management backend, limited to 3-20 characters.","authorize-list-store-name-displayed-in-site-name-management-backend--plural":"The store name displayed in the {{ siteName }} management backend, limited to 3-20 characters.","authorize-list-automatically-synchronize-platform-tracking-numbers-to":"Automatically synchronize {{platform}} tracking numbers to your {{targetPlatform}} store via {{platform}} third-party plugins.","authorize-list-automatically-synchronize-platform-tracking-numbers-to--plural":"Automatically synchronize {{platform}} tracking numbers to your {{targetPlatform}} store via {{platform}} third-party plugins.","authorize-list-before-proceeding-you-need-to-have-a-platform":"Before proceeding, you need to have a {{platform}} account.","authorize-list-before-proceeding-you-need-to-have-a-platform--plural":"Before proceeding, you need to have a {{platform}} account.","authorize-list-temu-product-permission-token":"Temu Product Permission Token","authorize-list-temu-product-permission-token--plural":"Temu Product Permission Token","authorize-list-copy-the-content-from-your-existing-platform-store-and-paste-it-in":"Copy the content from your existing {{platform}} store and paste it in your new {{targetPlatform}} store.","authorize-list-copy-the-content-from-your-existing-platform-store-and-paste-it-in--plural":"Copy the content from your existing {{platform}} store and paste it in your new {{targetPlatform}} store.","authorize-list-we-recommend-using-third-party-migration-apps":"We recommend using third-party migration apps.","authorize-list-we-recommend-using-third-party-migration-apps--plural":"We recommend using third-party migration apps.","authorize-list-sitename-inventory-when-no-private-inventory-left":"{{siteName}}âs Inventory when No Private Inventory Left","authorize-list-sitename-inventory-when-no-private-inventory-left--plural":"{{siteName}}âs Inventory when No Private Inventory Left","authorize-list-i-have-read-and-agree-to":"I have read and agree to","authorize-list-i-have-read-and-agree-to--plural":"I have read and agree to","authorize-list-after-successful-authorization":"After successful authorization, please go to {{siteName}} Store Status to do Reauthorize.","authorize-list-after-successful-authorization--plural":"After successful authorization, please go to {{siteName}} Store Status to do Reauthorize.","authorize-list-you-have-reached-the-limit-of-20":"You have reached the limit of 20 virtual stores and cannot create more.","authorize-list-you-have-reached-the-limit-of-20--plural":"You have reached the limit of 20 virtual stores and cannot create more.","authorize-list-only-available-for-orders-using-merchant":"Only available for orders using merchant self
31657-shipping; Please do not add those warehouses to your store when using {{storeName}} official logistics.","authorize-list-only-available-for-orders-using-merchant--plural":"Only available for orders using merchant self-shipping; Please do not add those warehouses to your store when using {{storeName}} official logistics.","authorize-list-please-select-a-cj-warehouse-to-link":"Please select a {{siteName}} warehouse to link to your MABANG account.","authorize-list-please-select-a-cj-warehouse-to-link--plural":"Please select a {{siteName}} warehouse to link to your MABANG account.","authorize-list-verify-mabang-authorization":"Verify MABANG Authorization","authorize-list-verify-mabang-authorization--plural":"Verify MABANG Authorization","authorize-list-currently-only-shopify-store-authorization-is-supported":"Currently, only {{plateform}} store authorization is supported. If you need to authorize other stores, please","authorize-list-currently-only-shopify-store-authorization-is-supported--plural":"Currently, only {{plateform}} store authorization is supported. If you need to authorize other stores, please","authorize-list-the-changes-have-not-been-saved":"The changes have not been saved. Are you sure to exit?","authorize-list-the-changes-have-not-been-saved--plural":"The changes have not been saved. Are you sure to exit?","authorize-list-please-select-authorize-global-warehouses":"Please select authorize global warehouses","authorize-list-please-select-authorize-global-warehouses--plural":"Please select authorize global warehouses","authorize-list-manual-data-copy-paste":"Manual data copy paste","authorize-list-manual-data-copy-paste--plural":"Manual data copy paste","authorize-list-please-select-region":"Please select the region","authorize-list-please-select-region--plural":"Please select the region","authorize-list-sync-platform-orders-to-site-name":"Sync {{platform}} Orders to {{siteName}}","authorize-list-sync-platform-orders-to-site-name--plural":"Sync {{platform}} Orders to {{siteName}}","authorize-list-please-select-shipping-method":"Please select the Shipping Method","authorize-list-please-select-shipping-method--plural":"Please select the Shipping Method","authorize-list-you-can-manage-order-synchronization-on-site-name":"You can manage order synchronization on {{siteName}}, just deliver the migrated {{platform}} orders to {{siteName}} for fulfillment. ","authorize-list-you-can-manage-order-synchronization-on-site-name--plural":"You can manage order synchronization on {{siteName}}, just deliver the migrated {{platform}} orders to {{siteName}} for fulfillment. ","authorize-list-note":"Note","authorize-list-please-enter-temu-order-permission-token":"Please enter the Temu order permission token","authorize-list-please-enter-temu-order-permission-token--plural":"Please enter the Temu order permission token","authorize-list-authorization-token":"Authorization Token","authorize-list-authorization-token--plural":"Authorization Token","authorize-list-sync-settings":"Sync Settings","authorize-list-sync-settings--plural":"Sync Settings","authorize-list-all":"All","authorize-list-third-party-migration-apps":"Third-party migration apps","authorize-list-third-party-migration-apps--plural":"Third-party migration apps","authorize-list-contact-person":"Contact Person","authorize-list-how-to-obtain-authorization-token":"How to obtain authorization token?","authorize-list-how-to-obtain-authorization-token--plural":"How to obtain authorization token?","authorize-list-no":"No","authorize-list-pay-for-your-orders":"Pay for your orders","authorize-list-pay-for-your-orders--plural":"Pay for your orders","authorize-list-operate":"Operate","authorize-list-operate--plural":"Operate","authorize-list-quickly-install-cjdropshipping-via-the-shopify-app-store-to":"Quickly install {{FullPlatformName}} via the {{platform}} app store to complete your store authorization.","authorize-list-quickly-install-cjdropshipping-via-the-shopify-app-store-to--plural":"Quickly install {{FullPlatformName}} via the {{platform}} app store to complete your store authorization.","authorize-list-please-select-store-currency-submit":"Please select the store currency and submit","authorize-list-please-select-store-currency-submit--plural":"Please select the store currency and submit","authorize-list-logistics-strategy":"Logistics Strategy","authorize-list-logistics-strategy--plural":"Logistics Strategy","authorize-list-priority":"Priority","authorize-list-priority--plural":"Priority","authorize-list-product-and-order-synchronization":"Product and Order Synchronization","authorize-list-product-and-order-synchronization--plural":"Product and Order Synchronization","authorize-list-please-set-the-priority":"Please set the priority","authorize-list-please-set-the-priority--plural":"Please set the priority","authorize-list-migration-method":"Migration Method","authorize-list-migration-method--plural":"Migration Method","authorize-list-temu-order-permission-token":"Temu Order Permission Token","authorize-list-temu-order-permission-token--plural":"Temu Order Permission Token","authorize-list-not-set":"Not set","authorize-list-not-set--plural":"Not set","authorize-list-order-status-updated":"Order status updated","authorize-list-order-status-updated--plural":"Order status updated","authorize-list-please-select":"Please select","authorize-list-list-new-products-to-your-store":"List new products to your store","authorize-list-list-new-products-to-your-store--plural":"List new products to your store","authorize-list-saved-successfully":"Saved Successfully","authorize-list-to-manage-your-etsy-products-and-orders":"To manage your {{platform1}} products and orders, please use the {{platform2}} app. Once your {{platform2}} store is connected to {{siteName}}, listing and order fulfillment can be made automatically for your {{platform1}} store.","authorize-list-to-manage-your-etsy-products-and-orders--plural":"To manage your {{platform1}} products and orders, please use the {{platform2}} app. Once your {{platform2}} store is connected to {{siteName}}, listing and order fulfillment can be made automatically for your {{platform1}} store.","authorize-list-you-can-synchronize-the-order-status-from-to-your-target":"2. You can synchronize the order status from {{platform}} to your {{targetPlatform}} store.","authorize-list-you-can-synchronize-the-order-status-from-to-your-target--plural":"2. You can synchronize the order status from {{platform}} to your {{targetPlatform}} store.","authorize-list-country":"Country","authorize-list-select-all-shipping-options-and-prioritize-the-fastest-delivery-time":"Select all shipping options and prioritize the fastest delivery time.","authorize-list-select-all-shipping-options-and-prioritize-the-fastest-delivery-time--plural":"Select all shipping options and prioritize the fastest delivery time.","authorize-list-according-to-the-platform-official-documentation":"According to the {{platform}} official documentation, you can sync your product and order data to {{platform}} in the following ways","authorize-list-according-to-the-platform-official-documentation--plural":"According to the {{platform}} official documentation, you can sync your product and order data to {{platform}} in the following ways","authorize-list-please-enter-temu-product-permission-token":"Please enter the Temu product permission token","authorize-list-please-enter-temu-product-permission-token--plural":"Please enter the Temu product permission token","authorize-list-authorize-your-platform-store-to-site-name":"Authorize Your {{platform}} Store to {{siteName}}","authorize-list-authorize-your-platform-store-to-site-name--plural":"Authorize Your {{platform}} Store to {{siteName}}","authorize-list-how-to-create-an-automatic-order-on-site-name":"How to Create an Automatic Order on {{siteName}}?","authorize-list-how-to-create-an-automatic-order-on-site-name--plural":"How to Create an Automatic Order on {{siteName}}?","authorize-list-please-enter-authorization-token":"Please enter the authorization token","authorize-list-please-enter-authorization-token--plural":"Please enter the authorization token","authorize-list-generate-new-products":"Generate new products","authorize-list-generate-new-products--plural":"Generate new products","authorize-list-yes":"Yes","authorize-list-region":"Region","authorize-list-shipping-method":"Shipping Method","authorize-list-click-to-view-the-shopify-official-migration-documentation":"Click to view the Shopify official migration documentation","authorize-list-click-to-view-the-shopify-official-migration-documentation--plural":"Click to view the Shopify official migration documentation","authorize-list-you-have-number-stores-being-transferred":"You have <span class=\'theme\'>{storeTransferNum}</span> {{word}} being transferred...","authorize-list-you-have-number-stores-being-transferred--plural":"You have <span class=\'theme\'>{storeTransferNum}</span> {{word}} being transferred...","authorize-list-this-store-cannot-be-deleted-as-it-still-has-orders-under-the-a":"This store cannot be deleted as it still has orders under the \\" <a href=\'/mine/dropshipping/orderManage\' class=\'link\'>{{str}}</a> \\" tab. Please check and handle them before trying again.","authorize-list-this-store-cannot-be-deleted-as-it-still-has-orders-under-the-a--plural":"This store cannot be deleted as it still has orders under the \\" <a href=\'/mine/dropshipping/orderManage\' class=\'link\'>{{str}}</a> \\" tab. Please check and handle them before trying again.","authorize-list-order-fulfillment-and-shipment":"Order fulfillment and shipment","authorize-list-order-fulfillment-and-shipment--plural":"Order fulfillment and shipment","authorize-list-synchronize-tracking-numbers-via-copy-pasting-or-using-platform":"Synchronize tracking numbers via copy-
31657pasting or using {{platform}} third-party plugins","authorize-list-synchronize-tracking-numbers-via-copy-pasting-or-using-platform--plural":"Synchronize tracking numbers via copy-pasting or using {{platform}} third-party plugins","authorize-list-list-selected-products-to-your-etsy-store":"2. List selected products to your {{platform1}} store via {{platform2}} third-party plugins.","authorize-list-list-selected-products-to-your-etsy-store--plural":"2. List selected products to your {{platform1}} store via {{platform2}} third-party plugins.","authorize-list-user-agreement-of-site-platform-inventory-service":"User Agreement of {{siteName}}-{{platform}} Inventory Service","authorize-list-user-agreement-of-site-platform-inventory-service--plural":"User Agreement of {{siteName}}-{{platform}} Inventory Service","authorize-list-sync-and-save-now":"Sync and Save Now","authorize-list-sync-and-save-now--plural":"Sync and Save Now","authorize-list-order-synchronization":"Order Synchronization","authorize-list-order-synchronization--plural":"Order Synchronization","authorize-list-select-all-shipping-options-and-choose-the-most-cost-effective-one":"Select all shipping options and choose the most cost-effective one.","authorize-list-select-all-shipping-options-and-choose-the-most-cost-effective-one--plural":"Select all shipping options and choose the most cost-effective one.","authorize-list-csv-import":"CSV import","authorize-list-csv-import--plural":"CSV import","authorize-list-sync-platform-products-and-orders-to-target-platform":"Sync {{platform}} Products and Orders to {{targetPlatform}}","authorize-list-sync-platform-products-and-orders-to-target-platform--plural":"Sync {{platform}} Products and Orders to {{targetPlatform}}","authorize-list-description":"Description","authorize-list-successfully":"Successfully","authorize-list-tracking-number-synchronization":"Tracking number synchronization","authorize-list-tracking-number-synchronization--plural":"Tracking number synchronization","authorize-list-pay-for-your-orders-on-site-name":"Pay for Your Orders on {{siteName}}","authorize-list-pay-for-your-orders-on-site-name--plural":"Pay for Your Orders on {{siteName}}","authorize-list-register-a-platform-store":"Register a {{{platform}} Store","authorize-list-register-a-platform-store--plural":"Register a {{{platform}} Store","authorize-list-select-products-on-cj-and-list-them-to-your-shopify-store":"1. Select products on {{siteName}} and list them to your {{platform}} store.","authorize-list-select-products-on-cj-and-list-them-to-your-shopify-store--plural":"1. Select products on {{siteName}} and list them to your {{platform}} store.","authorize-list-view-tutorial":"View Tutorial","authorize-list-view-tutorial--plural":"View Tutorial","home-shop-lazza":"ShopLazza","home-top-selling-products":"Top Selling Products","home-top-selling-products--plural":"Top Selling Products","home-mercado":"Mercado","home-partners":"Partners","home-partners--plural":"Partners","home-ebay":"eBay","home-contact-us":"Contact Us","home-cj-academy":"CJ Mentors","home-24-7-support":"24/7 Support","home-lazada":"Lazada","home-prime":"Prime","home-prime--plural":"Prime","home-shipstation":"Shipstation","home-shipstation--plural":"Shipstation","home-ticket":"Ticket","home-google-chrome-extension":"Google Chrome Extension","home-miaoshou-erp":"妿ERP","home-miaoshou-erp--plural":"妿ERP","home-shopee":"Shopee","home-bigcommerce":"Bigcommerce","home-bigcommerce--plural":"Bigcommerce","home-retailer-api":"Retailer API","home-retailer-api--plural":"Retailer API","home-dropshipping-blog":"Dropshipping Blog","home-dropshipping-blog--plural":"Dropshipping Blog","home-integrations":"Integrations","home-integrations--plural":"Integrations","home-aliexpress":"AliExpress","home-nuvemshop":"Nuvemshop","home-mabang-erp":"MabangERP","home-mabang-erp--plural":"MabangERP","vs-sv-please-enter-the-tracking-number":"Please enter the tracking number","home-why-cjdropshipping":"Why CJdropshipping","home-why-cjdropshipping--plural":"Why CJdropshipping","home-china-visiting-guide-services":"China Visiting Guide Services","home-china-visiting-guide-services--plural":"China Visiting Guide Services","home-faq":"Frequently Asked Questions","home-faq--plural":"Frequently Asked Questions","home-features-free-forever":"Features Free Forever","home-features-free-forever--plural":"Features Free Forever","vs-sv-automated-workflow":"Automated Workflow","vs-sv-automated-workflow--plural":"Automated Workflow","home-99-sampl
31657ing-inspection-rate":"99% Sampling Inspection Rate","home-99-sampling-inspection-rate--plural":"99% Sampling Inspection Rate","home-payment-processor-agency":"Payment Processor Agency","home-payment-processor-agency--plural":"Payment Processor Agency","home-dedicated-print-on-demand-facilities":"Professional Print-on-Demand Facilities","home-dedicated-print-on-demand-facilities--plural":"Professional Print-on-Demand Facilities","home-cogs-reduction-strategies":"COGS Reduction Strategies","home-cogs-reduction-strategies--plural":"COGS Reduction Strategies","vs-sv-global-supply-network-content":"Our seamless integration bridges your online store directly to CJdropshippingâs global supply networkâno coding required.","vs-sv-global-supply-network-content--plural":"Our seamless integration bridges your online store directly to CJdropshippingâs global supply networkâno coding required.","home-faq-question-10":"Can I request custom packaging or private labeling?","home-faq-question-10--plural":"Can I request custom packaging or private labeling?","home-products-video-download-free":"Products Video Download Free","home-products-video-download-free--plural":"Products Video Download Free","vs-sv-one-click-connection":"One-Click Connection","vs-sv-one-click-connection--plural":"One-Click Connection","home-temu":"Temu","home-temu--plural":"Temu","home-help-center":"Help Center","home-ecommerce-platforms":"Ecommerce Platforms","home-ecommerce-platforms--plural":"Ecommerce Platforms","home-end-to-end-supply-chain-solutions":"End-to-End Supply Chain Solutions","home-end-to-end-supply-chain-solutions--plural":"End-to-End Supply Chain Solutions","home-product-sourcing":"Product Sourcing","home-product-sourcing--plural":"Product Sourcing","home-automatic-tracking-updates-free":"Automatic Tracking Updates Free","home-automatic-tracking-updates-free--plural":"Automatic Tracking Updates Free","home-100-global-shipping-solutions":"100+ Global Shipping Solutions","home-100-global-shipping-solutions--plural":"100+ Global Shipping Solutions","home-driving-customer-success":"Driving Customer Success","home-driving-customer-success--plural":"Driving Customer Success","home-product-development-implementation":"Product Development & Implementation","home-product-development-implementation--plural":"Product Development & Implementation","home-tiktok-shop":"TikTok Shop","home-tiktok-shop--plural":"TikTok Shop","home-multiple-store-management-free":"Multiple Store Management Free","home-multiple-store-management-free--plural":"Multiple Store Management Free","vs-sv-inventory-intelligence":"Inventory Intelligence","vs-sv-inventory-intelligence--plural":"Inventory Intelligence","home-faq-answer-1":"CJdropshipping is a one-stop dropshipping platform that sources, stores, and ships products globally for online sellers. You sell products on your store, and we handle inventory, packaging, and delivery directly to your customers.","home-faq-answer-1--plural":"CJdropshipping is a one-stop dropshipping platform that sources, stores, and ships products globally for online sellers. You sell products on your store, and we handle inventory, packaging, and delivery directly to your customers.","home-faq-answer-2":"No, itâs free to join. You only pay for products, shipping, and any optional services (e.g., custom packaging).","home-faq-answer-2--plural":"No, itâs free to join. You only pay for products, shipping, and any optional services (e.g., custom packaging).","home-faq-answer-3":"Click \\"Sign Up\\" on the homepage, fill in your email/password, and verify your account. No credit card required.","home-faq-answer-3--plural":"Click \\"Sign Up\\" on the homepage, fill in your email/password, and verify your account. No credit card required.","home-faq-answer-4":"Yes! Connect your store via API or our app for real-time order syncing and automated fulfillment.","home-faq-answer-4--plural":"Yes! Connect your store via API or our app for real-time order syncing and automated fulfillment.","home-3pl-fulfillment":"3PL Fulfillment","home-faq-answer-5":"Orders are processed within 1-3 business days (depending on product availability and customization needs).","home-faq-answer-5--plural":"Orders are processed within 1-3 business days (depending on product availability and customization needs).","home-faq-answer-6":"We provide air freight, sea freight, express (DHL/UPS), and local warehouse delivery (US, EU, etc.) with tracking.","home-faq-answer-6--plural":"We provide air freight, sea freight, express (DHL/UPS), and local warehouse delivery (US, EU, etc.) with tracking.","home-faq-answer-7":"From China: 7-15 days (air); Local US/EU warehouses: 3-7 days.","home-faq-answer-7--plural":"From China: 7-15 days (air); Local US/EU warehouses: 3-7 days.","home-faq-answer-8":"Yes, youâll receive a tracking number once the order is shipped. Check status in your account dashboard.","home-faq-answer-8--plural":"Yes, youâll receive a tracking number once the order is shipped. Check status in your account dashboard.","home-faq-answer-9":"Use our âHot Productsâ section and data-driven tools to discover bestsellers in niches like electronics, home decor, and TikTok viral items.","home-faq-answer-9--plural":"Use our âHot Productsâ section and data-driven tools to discover bestsellers in niches like electronics, home decor, and TikTok viral items.","home-faster-order-fulfillment":"Faster Order Fulfillment","home-faster-order-fulfillment--plural":"Faster Order Fulfillment","home-sourcing-agent-empowerment":"Sourcing Agent Empowerment","home-sourcing-agent-empowerment--plural":"Sourcing Agent Empowerment","home-erp-platforms":"ERP Platforms","home-erp-platforms--plural":"ERP Platforms","vs-sv-global-supply-network-title":"CJdropshipping\'s global supply networkâno coding required.","vs-sv-global-supply-network-title--plural":"CJdropshipping\'s global supply networkâno coding required.","home-faq-question-8":"Can I track my orders?","home-faq-question-8--plural":"Can I track my orders?","home-cj-account-management":"CJ Account Management","home-cj-account-management--plural":"CJ Account Management","home-faq-question-7":"How long does shipping take to the US/Europe?","home-faq-question-7--plural":"How long does shipping take to the US/Europe?","home-network-of-high-quality-factories":"Network of High-Quality Factories","home-network-of-high-quality-factories--plural":"Network of High-Quality Factories","home-faq-question-9":"How do I find trending products to sell?","home-faq-question-9--plural":"How do I find trending products to sell?","home-faq-question-4":"Can I sync my
31657Shopify/TikTok Shop orders automatically?","home-faq-question-4--plural":"Can I sync my Shopify/TikTok Shop orders automatically?","home-faq-question-3":"How do I create a CJdropshipping account?","home-faq-question-3--plural":"How do I create a CJdropshipping account?","home-faq-question-6":"What shipping methods do you offer?","home-faq-question-6--plural":"What shipping methods do you offer?","home-faq-question-5":"How long does it take to process an order?","home-faq-question-5--plural":"How long does it take to process an order?","home-faq-question-2":"Do I need to pay a membership fee to use CJdropshipping?","home-faq-question-2--plural":"Do I need to pay a membership fee to use CJdropshipping?","vs-sv-multi-platform-support":"Multi-Platform Support","vs-sv-multi-platform-support--plural":"Multi-Platform Support","home-faq-question-1":"What is CJdropshipping, and how does it work?","home-faq-question-1--plural":"What is CJdropshipping, and how does it work?","home-dtc-supply-chain-implementation":"DTC Supply Chain Implementation","home-dtc-supply-chain-implementation--plural":"DTC Supply Chain Implementation","home-price-and-stock-monitor-free":"Price and Stock Monitor Free","home-price-and-stock-monitor-free--plural":"Price and Stock Monitor Free","home-shorten-delivery-time":"Shorten Delivery Time","home-shorten-delivery-time--plural":"Shorten Delivery Time","home-woocommerce":"Woocommerce","home-localized-inventory-with-millions-of-choices":"Localized Inventory with Millions of Choices","home-localized-inventory-with-millions-of-choices--plural":"Localized Inventory with Millions of Choices","home-print-on-demand":"Print-on-Demand","home-print-on-demand--plural":"Print-on-Demand","home-global-inventory":"Global Inventory","home-global-inventory--plural":"Global Inventory","home-solutions":"Solutions","home-solutions--plural":"Solutions","home-unlimited-product-importting-free":"Unlimited Product Importting Free","home-unlimited-product-importting-free--plural":"Unlimited Product Importting Free","home-faq-answer-10":"Yes! We offer custom logos, packaging design, and product customization. Submit your design files during checkout.","home-faq-answer-10--plural":"Yes! We offer custom logos, packaging design, and product customization. Submit your design files during checkout.","home-global-warehouse-network":"Global Warehouse Network","home-global-warehouse-network--plural":"Global Warehouse Network","home-resources":"Resources","home-cj-elite":"CJ Elite","home-cj-elite--plural":"CJ Elite","home-become-a-supplier":"Become a Supplier","home-become-a-supplier--plural":"Become a Supplier","home-bulk-purchasing":"Bulk Purchasing","home-bulk-purchasing--plural":"Bulk Purchasing","home-support":"Support","home-affiliate":"Affiliate","home-credit-services":"Credit Services","home-credit-services--plural":"Credit Services","home-free-stores":"Free Stores","home-free-stores--plural":"Free Stores","home-product-photography":"Product Photography","home-elites-desc":"Join Elites: Master advanced dropshipping strategies, access exclusive suppliers, and network with proven experts. ","home-elites-desc--plural":"Join Elites: Master advanced dropshipping strategies, access exclusive suppliers, and network with proven experts. ","vs-sv-what-do-other-dropshippers-say":"What Do Other Dropshippers Say?","vs-sv-what-do-other-dropshippers-say--plural":"What Do Other Dropshippers Say?","home-elites":"Elites","home-learn":"Learn","home-learn--plural":"Learn","home-get-support-title":"Get Support","home-get-support-title--plural":"Get Support","home-get-help":"Get Help","home-get-help--plural":"Get Help","home-get-started-button":"Try CJdropshipping Free","home-get-started-button--plural":"Try CJdropshipping Free","home-get-help-desc":"Unlock expert dropshipping guidance with CJdropshipping Help Center: comprehensive tutorials, proven strategies, step-by-step support for global brand success and profitability.","home-get-help-desc--plural":"Unlock expert dropshipping guidance with CJdropshipping Help Center: comprehensive tutorials, proven strategies, step-by-step support for global brand success and profitability.","home-get-started-subtitle":"Start Your Business Today with CJdropshipping","home-get-started-subtitle--plural":"Start Your Business Today with CJdropshipping","home-get-started-title":"Ready to get started?","home-get-started-title--plural":"Ready to get started?","home-read":"Read","home-read--plural":"Read","language-uzbek":"Uzbek","language-uzbek--plural":"Uzbek","language-tajik":"Tajik","language-tajik--plural":"Tajik","language-kirghiz-kyrgyz":"Kirghiz, Kyrgyz","language-kirghiz-kyrgyz--plural":"Kirghiz, Kyrgyz","language-turkmen":"Turkmen","language-turkmen--plural":"Turkmen","language-kazakh":"Kazakh","language-kazakh--plural":"Kazakh","common-th-warning-content-n2":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery. Thank y
31657ou for choosing us as your trusted marketplace.","common-th-warning-content-n2--plural":"At {{platform}}, we ensure that all products are sourced from reputable suppliers on Chinaâs 1688 platform. We do not sell any branded items that may infringe on intellectual property rights. Each product is thoroughly inspected before shipment to guarantee quality and secure delivery. Thank you for choosing us as your trusted marketplace.","my-profile-address-county":"County","home-blog-title":"Blog","home-blog":"Blog","home-get-support-title-new":"Get the Support You Deserve for Your Business","home-get-support-title-new--plural":"Get the Support You Deserve for Your Business","home-blog-desc":"Explore trending dropshipping niches, best supplier, expert sourcing guides, marketing strategies, and dropshipping tips in our blog.","home-blog-desc--plural":"Explore trending dropshipping niches, best supplier, expert sourcing guides, marketing strategies, and dropshipping tips in our blog.","home-api":"API","home-become-an-affiliate":"Become an Affiliate","home-become-an-affiliate--plural":"Become an Affiliate","home-miaoshou-erp-new":"Miaoshou ERP","home-miaoshou-erp-new--plural":"Miaoshou ERP","home-wed2c":"WED2C","home-unlimited-product-importing-free":"Unlimited Product Importing Free","home-unlimited-product-importing-free--plural":"Unlimited Product Importing Free","home-become-a-partner":"Become a Partner","home-become-a-partner--plural":"Become a Partner","home-etsy":"Etsy","common-search-find-the-product-you-re-looking-for":"Find the product you\'re looking for","home-blog-desc-new":"Explore trending dropshipping niches, best supplier, expert sourcing guides, marketing strategies, and dropshipping tips in our blog.","home-blog-desc-new--plural":"Explore trending dropshipping niches, best supplier, expert sourcing guides, marketing strategies, and dropshipping tips in our blog.","home-faq-answer-11-link-2":"Custom Packaging(","home-faq-answer-11-link-2--plural":"Custom Packaging(","home-faq-answer-11-link-1":"Print on Demand","home-faq-question-11":"Can I request Print on Demand or Custom Packaging services?","home-faq-question-11--plural":"Can I request Print on Demand or Custom Packaging services?","home-and":"and","home-faq-answer-11":"The customization service is so popular nowadays. CJdropshipping must stay ahead. Please kindly refer to the following two tutorials: ","home-faq-answer-11--plural":"The customization service is so popular nowadays. CJdropshipping must stay ahead. Please kindly refer to the following two tutorials: ","home-join-as-supplier":"Join as Supplier","home-join-as-supplier--plural":"Join as Supplier","vs-sv-find-your-best-role-to-work-with-cjdropshipping-content":"Whether youâre a dropshipper, wholesaler, or affiliate, CJdropshipping offers tailored solutions to fit your business needs. Explore our services and find the perfect role to work with us.","vs-sv-find-your-best-role-to-work-with-cjdropshipping-content--plural":"Whether youâre a dropshipper, wholesaler, or affiliate, CJdropshipping offers tailored solutions to fit your business needs. Explore our services and find the perfect role to work with us.","vs-sv-find-your-best-role-to-work-with-cjdropshipping":"Find Your Best Role to Work with CJdropshipping","vs-sv-find-your-best-role-to-work-with-cjdropshipping--plural":"Find Your Best Role to Work with CJdropshipping","home-partner-with-us":"Partner with Us","home-partner-with-us--plural":"Partner with Us","home-join-as-affiliate":"Join as Affiliate","home-join-as-affiliate--plural":"Join as Affiliate","vs-sv-cjdropshipping-empowers-a-diverse-network-of-partners":"CJdropshipping empowers a diverse network of partners to thrive in the dynamic e-commerce landscape.","vs-sv-cjdropshipping-empowers-a-diverse-network-of-partners--plural":"CJdropshipping empowers a diverse network of partners to thrive in the dynamic e-commerce landscape.","home-pricing":"Pricing","vs-sv-connect-your-store":"Connect Your Store","vs-sv-connect-your-store--plural":"Connect Your Store","visitor-sv-connect-my-store":"Connect My Store","product-marketing-video":"Marketing Video","product-marketing-video--plural":"Marketing Video","home-local-inventory-with-millions":"Local Inventory in Millions","home-local-inventory-with-millions--plural":"Local Inventory in Millions","common-logistics-enquiry-text-10":"Please contact your agent for more information","common-logistics-enquiry-text-10--plural":"Please contact your agent for more information","common-logistics-enquiry-text-1":"Exclusive benef
31657its for bulk orders","common-logistics-enquiry-text-1--plural":"Exclusive benefits for bulk orders","common-logistics-enquiry-text-2":"Comparison of prices from multiple carriers","common-logistics-enquiry-text-2--plural":"Comparison of prices from multiple carriers","common-logistics-enquiry-text-3":"Orders greater than or equal to <span class=\'logistics-enquiry-weight-count\'>{{weight}}</span> kg can enjoy an exclusive quotation for bulk orders.","common-logistics-enquiry-text-3--plural":"Orders greater than or equal to <span class=\'logistics-enquiry-weight-count\'>{{weight}}</span> kg can enjoy an exclusive quotation for bulk orders.","common-logistics-enquiry-text-4":"Bulk Inquiry Process","common-logistics-enquiry-text-4--plural":"Bulk Inquiry Process","common-logistics-enquiry-text-5":"Select logistics inquiry and place an order","common-logistics-enquiry-text-5--plural":"Select logistics inquiry and place an order","common-logistics-enquiry-text-7":"Provide a quotation","common-logistics-enquiry-text-7--plural":"Provide a quotation","common-logistics-enquiry-text-8":"You confirm the quotation and pay the order","common-logistics-enquiry-text-8--plural":"You confirm the quotation and pay the order","common-logistics-enquiry-text-9":"Merchant fulfillment","common-logistics-enquiry-text-9--plural":"Merchant fulfillment","common-logistics-enquiry-text-11":"Better Deal","common-logistics-enquiry-text-11--plural":"Better Deal","common-logistics-enquiry-to-do-list-1":"The logistics inquiry result of the order has been issued","common-logistics-enquiry-to-do-list-1--plural":"The logistics inquiry result of the order has been issued","common-logistics-enquiry-to-do-list-2":"The quotation will automatically expire if it is not paid within the time limit. This notification will be automatically cleared after the quotation is paid, the quotation is not paid within the time limit, or the quotation is manually canceled. You can click \\"View\\" to proceed.","common-logistics-enquiry-to-do-list-2--plural":"The quotation will automatically expire if it is not paid within the time limit. This notification will be automatically cleared after the quotation is paid, the quotation is not paid within the time limit, or the quotation is manually canceled. You can click \\"View\\" to proceed.","cn-foot-a-3":"Join CJ","cn-foot-a-3--plural":"Join CJ","cn-foot-a-1":"CJPacket","cn-foot-text-lable2":"Address","cn-foot-text-lable1":"Phone","cn-foot-text-head":"CJ Group","cn-foot-text-head--plural":"CJ Group","cn-foot-text-value2":"Qianjiang Venture Capital Center, Xixi Road, Xihu District, Hangzhou","cn-foot-text-value2--plural":"Qianjiang Venture Capital Center, Xixi Road, Xihu District, Hangzhou","cn-foot-a-2":"Comeorders","cn-foot-a-2--plural":"Comeorders","cn-foot-a-4":"About Us","cn-foot-text-copyright":"CJ Group All Rights Reserved.","cn-foot-text-copyright--plural":"CJ Group All Rights Reserved.","language-dari":"Dari","language-dari--plural":"Dari","language-pashto":"Pashto","language-pashto--plural":"Pashto","product-marketing-picture":"Marketing Picture","product-marketing-picture--plural":"Marketing Picture","product-actual-product-photo":"Actual Product Photo","product-actual-product-photo--plural":"Actual Product Photo","common-logistics-enquiry-text-6":"The agent will contact you to understand your request","common-logistics-enquiry-text-6--plural":"The agent will contact you to understand your request","common-logistics-inquiry-text-2":"Reduce Your Shipping Costs","common-logistics-inquiry-text-2--plural":"Reduce Your Shipping Costs","common-logistics-inquiry-text-1":"Tailored Solutions for Better Shipping","common-logistics-inquiry-text-1--plural":"Tailored Solutions for Better Shipping","common-logistics-inquiry-text-8":"Merchant fulfills the order","common-logistics-inquiry-text-8--plural":"Merchant fulfills the order","common-logistics-inquiry-text-7":"Confirm the quotation and complete payment","common-logistics-inquiry-text-7--plural":"Confirm the quotation and complete payment","common-logistics-inquiry-text-4":"Select products and place an order of {{weight}}kg or more","common-logistics-inquiry-text-4--plural":"Select products and place an order of {{weight}}kg or more","common-logistics-inquiry-text-3":"Orders of <span class=\'logistics-enquiry-weight-count\'>{{weight}}</span>kg or more can enjoy exclusive quotations for bulk orders.","common-logistics-inquiry-text-3--plural":"Orders of <span class=\'logistics-enquiry-weight-count\'>{{weight}}</span>kg or more can enjoy exclusive quotations for bulk orders.","common-logistics-inquiry-text-6":"Submit the order, and your agent will provide a logistics quotation","common-logistics-inquiry-text-6--plural":"Submit the order, and your agent will provide a logistics quotation","common-logistics-inquiry-text-5":"Choose \\"Logistics Inquiry\\" on the order
31657confirmation page","common-logistics-inquiry-text-5--plural":"Choose \\"Logistics Inquiry\\" on the order confirmation page","home-personalized-account-managers":"Personalized Account Managers","home-personalized-account-managers--plural":"Personalized Account Managers","home-your-dedicated-dropshipping-support-team":"Your Dedicated Dropshipping Support Team","home-your-dedicated-dropshipping-support-team--plural":"Your Dedicated Dropshipping Support Team","home-access-in-depth-guides-trending-product-insights-marketing-strategies-everything":"Access inâdepth guides, trending product insights, marketing strategiesâeverything you need to scale your business with confidence.","home-access-in-depth-guides-trending-product-insights-marketing-strategies-everything--plural":"Access inâdepth guides, trending product insights, marketing strategiesâeverything you need to scale your business with confidence.","home-your-ultimate-dropshipping-resource-hub":"Your Ultimate Dropshipping Resource Hub","home-your-ultimate-dropshipping-resource-hub--plural":"Your Ultimate Dropshipping Resource Hub","home-comprehensive-faq-library":"Comprehensive FAQ Library","home-comprehensive-faq-library--plural":"Comprehensive FAQ Library","home-24-7-expert-support":"24/7 Expert Support","home-24-7-expert-support--plural":"24/7 Expert Support","home-fast-shipping-from-global-warehouses":"Fast shipping from global warehouses","home-fast-shipping-from-global-warehouses--plural":"Fast shipping from global warehouses","home-dedicated-consultant-with-24-7-support":"Dedicated consultant with 24/7 support","home-dedicated-consultant-with-24-7-support--plural":"Dedicated consultant with 24/7 support","home-supports-multi-platform-integration":"Supports multiâplatform integration","home-supports-multi-platform-integration--plural":"Supports multiâplatform integration","home-millions-of-best-selling-dropship-products":"Millions of bestâselling dropship products","home-millions-of-best-selling-dropship-products--plural":"Millions of bestâselling dropship products","purchase-list-submit-order-and-initiate-inquiry":"Submit order and initiate inquiry","purchase-list-submit-order-and-initiate-inquiry--plural":"Submit order and initiate inquiry","purchase-list-generate-unpaid-order-number":"Generate unpaid order number","purchase-list-generate-unpaid-order-number--plural":"Generate unpaid order number","purchase-list-copy-the-order-number-and-initiate-a-whatsapp-chat":"Copy the order number and initiate a WhatsApp chat","purchase-list-copy-the-order-number-and-initiate-a-whatsapp-chat--plural":"Copy the order number and initiate a WhatsApp chat","purchase-list-hello-we-have-received-the-order-inquiry-document-submitted-by-you":"Hello, we have received the order inquiry document submitted by You. We will provide a quotation for your order as soon as possible.","purchase-list-hello-we-have-received-the-order-inquiry-document-submitted-by-you--plural":"Hello, we have received the order inquiry document submitted by You. We will provide a quotation for your order as soon as possible.","purchase-list-if-you-need-to-keep-track-of-the-progress-of-your-order-inquiry-in-a-timely-manner":"If you need to keep track of the progress of your order inquiry in a timely manner, please contact the agent through WhatsApp to obtain the latest updates.","purchase-list-if-you-need-to-keep-track-of-the-progress-of-your-order-inquiry-in-a-timely-manner--plural":"If you need to keep track of the progress of your order inquiry in a timely manner, please contact the agent through WhatsApp to obtain the latest updates.","common-top-please-enter-blog-keywords":"Please enter your search content.","common-top-please-enter-blog-keywords--plural":"Please enter your search content.","common-search-blog-placeholder":"Search blog by keywords","common-search-blog-placeholder--plural":"Search blog by keywords","home-shoplazza":"Shoplazza","home-shoplazza--plural":"Shoplazza","home-get-quickly-for-your-sourcing-request":"Get Your Product Sourced Quickly","home-get-quickly-for-your-sourcing-request--plural":"Get Your Product Sourced Quickly","common-top-selling":"Top Selling","common-top-selling--plural":"Top Selling","common-order-air-freight":"Air Freight","common-order-ocean-freight":"Ocean Freight","common-order-ocean-freight--plural":"Ocean Freight","common-order-you-will-be-postage-diff-amount":"You will be responsible for the difference in freight costs between air and ocean freight, which is {{postageDiffAmount}} = Air freight cost {{postage}} - Ocean freight cost {{seaPostage}}.","common-order-you-will-be-postage-diff-amount--plural":"You will be responsible for the difference in freight costs between air and ocean freight, which is {{postageDiffAmount}} = Air freight cost {{postage}} - Ocean freight cost {{seaPostage}}.","common-order-fee-description":"Fee Description","common-order-fee-description--plural":"Fee Description","common-order-fee-processing":"Fee Processing","common-order-fee-processing--plural":"Fee Processing","common-order-shipping":"Shipping","common-order-postage-diff-amount":"You will be responsible for the difference in freight costs between air and ocean freight, which is {{postageDiffAmount}}","common-order-postage-diff-amount--plural":"You will be responsible for the difference in freight costs between air and ocean freight, which is {{postageDiffAmount}}","common-order-deduction-postage-diff":"Amount to offset shipping difference","common-order-deduction-postage-diff--plural":"Amount to offset shipping difference","common-order-notes-on-choosing-air-freight":"Notes on Choosing Air Freight","common-order-notes-on-choosing-air-freight--plural":"Notes on Choosing Air Freight","common-order-payment-method":"Payment Method: Deduction from the deposit. The deposit used to offset the difference is non-refundable.","common-order-payment-method--plural":"Payment Method: Deduction from the deposit. The deposit used to offset the difference is non-refundable.","common-order-cj-charges":"CJ Charges: When you use this deposited inventory, CJ will only charge you the ocean freight rate. The ocean freight cost for this order is {{seaPostage}}.","common-order-cj-charges--plural":"CJ Charges: When you use this deposited inventory, CJ will only charge you the ocean freight rate. The ocean freight cost for this order is {{seaPostage}}.","common-order-deduction-order":"Deduction Order: Logistics Deposit â Product Deposit","common-order-deduction-order--plural":"Deduction Order: Logistics Deposit â Product Deposit","common-order-product":"Product","common-order-cj-pay-ahead":"CJ Pay Ahead: When you choose air freight for stocking, CJ will prepay the air freight cost of {{postage}} to prepare the products for delivery to the overseas warehouse.","common-order-cj-pay-ahead--plural":"CJ Pay Ahead: When you choose air freight for stocking, CJ will prepay the air freight cost of {{postage}} to prepare the products for delivery to the overseas warehouse.","common-order-fee-type":"Fee Type","common-order-fee-type--plural":"Fee Type","common-order-deposit-refundable-amount":"Estimated remaining refundable deposit","common-order-deposit-refundable-amount--plural":"Estimated remaining refundable deposit","common-order-deposit":"Deposit","common-order-original-price":"Original Price","common-order-choose-air-freight":"Select air freight","common-order-choose-air-freight--plural":"Select air freight","common-order-cj-charges-2":"CJ Charges: When you use this deposited inventory, CJ will only charge you for ocean freight.","common-order-cj-charges-2--plural":"CJ Charges: When you use this deposited inventory, CJ will only charge you for ocean freight.","common-order-air-unavailable-2":"This order does not have ocean freight logistics and lacks the ocean freight fee. At the moment, we cannot calculate the difference in air and ocean freight costs you will need to pay. Therefore, the air freight option is currently unavailable","common-order-air-unavailable-2--plural":"This order does not have ocean freight logistics and lacks the ocean freight fee. At the moment, we cannot calculate the difference in air and ocean freight costs you will need to pay. Therefore, the air freight option is currently unavailable","common-order-agent":"Please contact your dedicated agent for assistance.","common-order-agent--plural":"Please contact your dedicated agent for assistance.","common-order-air-freight-unavailable-2":"However, the deposit of {{deposit}} for this order is not sufficient to offset the {{difference}} difference, so the air freight option is unavailable.","common-order-air-freight-unavailable-2--plural":"However, the deposit of {{deposit}} for this order is not sufficient to offset the {{difference}} difference, so the air freight option is unavailable.","common-order-select-ocean-freight":"Select Ocean Freight","common-order-select-ocean-freight--plural":"Select Ocean Freight","common-order-air-freight-unavailable":"Air freight option is unavailable","common-order-air-freight-unavailable--plural":"Air freight option is unavailable","common-order-suggestion":"Suggestion","common-order-payment-method-2":"Payment Method: Deposit deduction","common-order-payment-method-2--plural":"Payment Method: Deposit deduction","common-order-if-air-freight-is-required":"If air freight is required, please contact your dedicated agent for other solutions.","common-order-if-air-freight-is-required--plural":"If air freight is required, please contact your dedicated agent for other solutions.","vs-sv-trusted-by-4m-sellers":"Trusted by 4M+ sellers","vs-sv-trusted-by-4m-sellers--plural":"Trusted by 4M+ sellers","home-carry-global-dropshipping-and-sourcing-power-in-your-pocket":"Carry global dropshipping and sourcing power in your pocket. CJdropshippingâs mobile app lets you manage orders, track shipments, and grow sales anywhere instantly!","home-carry-global-dropshipping-and-sourcing-power-in-your-pocket--plural":"Carry global dropshipping and sourcing power in your pocket. CJdropshippingâs mobile app lets you manage orders, track shipments, and grow sales anywhere instantly!","common-top-supplier-products":"Products","common-top-supplier-home":"Home","common-th-profile-disputes":"Disputes","menu-drawer-message":"Message","menu-drawer-help-center":"Help Center","menu-drawer-your-ultimate-dropshipping-resource-hub":"Your Ultimate Dropshipping Resource Hub","menu-drawer-your-ultimate-dropshipping-resource-hub--plural":"Your Ultimate Dropshipping Resource Hub","menu-drawer-find-your-best-role-to-work-with-cjdropshipping":"Find Your Best Role to Work with CJdropshipping","menu-drawer-find-your-best-role-to-work-with-cjdropshipping--plural":"Find Your Best Role to Work with CJdropshipping","menu-drawer-faster-order-fulfillment":"Faster Order Fulfillment","menu-drawer-faster-order-fulfillment--plural":"Faster Order Fulfillment","menu-drawer-ticket":"Ticket","menu-drawer-join-as-supplier":"Join as Supplier","menu-drawer-join-as-supplier--plural":"Join as Supplier","menu-drawer-24-7-support":"24/7 Support","menu-drawer-your-dedicated-dropshipping-support-team":"Your Dedicated Dropshipping Support Team","menu-drawer-your-dedicated-dropshipping-support-team--plural":"Your Dedicated Dropshipping Support Team","menu-drawer-resource-description":"Access inâdepth guides, trending product insights, marketing strategiesâeverything you need to scale your business with confidence.","menu-drawer-resource-description--plural":"Access inâdepth guides, trending product insights, marketing strategiesâeverything you need to scale your business with confidence.","menu-drawer-cogs-reduction-strategies":"COGS Reduction Strategies","menu-drawer-cogs-reduction-strategies--plural":"COGS Reduction Strategies","menu-drawer-china-visiting-guide-services":"China Visiting Guide Services","menu-drawer-china-visiting-guide-services--plural":"China Visiting Guide Services","menu-drawer-personalized-account-managers":"Personalized Account Managers","menu-drawer-personalized-account-managers--plural":"Personalized Account Managers","menu-drawer-local-inventory-with-millions":"Local Inventory in Millions","menu-drawer-local-inventory-with-millions--plural":"Local Inventory in Millions","menu-drawer-cj-account-management":"CJ Account Management","menu-drawer-cj-account-management--plural":"CJ Account Management","menu-drawer-dropshipping-blog":"Dropshipping Blog","menu-drawer-dropshipping-blog--plural":"Dropshipping Blog","menu-drawer-sourcing-agent-empowerment":"Sourcing Agent Empowerment","menu-drawer-sourcing-agent-empowerment--plural":"Sourcing Agent Empowerment","menu-drawer-partner-with-us":"Partner with Us","menu-drawer-partner-with-us--plural":"Partner with Us","menu-drawer-global-warehouse-network":"Global Warehouse Network","menu-drawer-global-warehouse-network--plural":"Global Warehouse Network","menu-drawer-cj-academy":"CJ Mentors","menu-drawer-global-supply-network-content":"CJdropshipping empowers a diverse network of partners to thrive in the dynamic e-commerce landscape.","menu-drawer-global-supply-network-content--plural":"CJdropshipping empowers a diverse network of partners to thrive in the dynamic e-commerce landscape.","menu-drawer-dedicated-print-on-demand-facilities":"Professional Print-on-Demand Facilities","menu-drawer-dedicated-print-on-demand-facilities--plural":"Professional Print-on-Demand Facilities","menu-drawer-comprehe
31657nsive-faq-library":"Comprehensive FAQ Library","menu-drawer-comprehensive-faq-library--plural":"Comprehensive FAQ Library","menu-drawer-shorten-delivery-time":"Shorten Delivery Time","menu-drawer-shorten-delivery-time--plural":"Shorten Delivery Time","menu-drawer-driving-customer-success":"Driving Customer Success","menu-drawer-driving-customer-success--plural":"Driving Customer Success","menu-drawer-100-global-shipping-solutions":"100+ Global Shipping Solutions","menu-drawer-100-global-shipping-solutions--plural":"100+ Global Shipping Solutions","menu-drawer-product-development-implementation":"Product Development & Implementation","menu-drawer-product-development-implementation--plural":"Product Development & Implementation","menu-drawer-shipstation":"Shipstation","menu-drawer-shipstation--plural":"Shipstation","menu-drawer-99-sampling-inspection-rate":"99% Sampling Inspection Rate","menu-drawer-99-sampling-inspection-rate--plural":"99% Sampling Inspection Rate","menu-drawer-24-7-expert-support":"24/7 Expert Support","menu-drawer-24-7-expert-support--plural":"24/7 Expert Support","menu-drawer-end-to-end-supply-chain-solutions":"End-to-End Supply Chain Solutions","menu-drawer-end-to-end-supply-chain-solutions--plural":"End-to-End Supply Chain Solutions","menu-drawer-contact-us":"Contact Us","menu-drawer-cj-elite":"CJ Elite","menu-drawer-cj-elite--plural":"CJ Elite","menu-drawer-google-chrome-extension":"Google Chrome Extension","menu-drawer-join-as-affiliate":"Join as Affiliate","menu-drawer-join-as-affiliate--plural":"Join as Affiliate","menu-drawer-solutions":"Solutions","menu-drawer-solutions--plural":"Solutions","menu-drawer-integrations":"Integrations","menu-drawer-integrations--plural":"Integrations","menu-drawer-support":"Support","menu-drawer-pricing":"Pricing","menu-drawer-partners":"Partners","menu-drawer-partners--plural":"Partners","menu-drawer-why-cjdropshipping":"Why CJdropshipping","menu-drawer-why-cjdropshipping--plural":"Why CJdropshipping","menu-drawer-resources":"Resources","menu-drawer-all-categories":"All Categories","menu-drawer-tiktok-shop":"TikTok Shop","menu-drawer-tiktok-shop--plural":"TikTok Shop","menu-drawer-shopify":"Shopify","menu-drawer-ecommerce-platforms":"Ecommerce Platforms","menu-drawer-ecommerce-platforms--plural":"Ecommerce Platforms","menu-drawer-temu":"Temu","menu-drawer-temu--plural":"Temu","menu-drawer-shoplazza":"Shoplazza","menu-drawer-shoplazza--plural":"Shoplazza","menu-drawer-woocommerce":"Woocommerce","menu-drawer-shopee":"Shopee","menu-drawer-mabangerp":"MabangERP","menu-drawer-mabangerp--plural":"MabangERP","menu-drawer-aliexpress":"AliExpress","menu-drawer-nuvemshop":"Nuvemshop","menu-drawer-mercado":"Mercado","menu-drawer-wed2c":"WED2C","menu-drawer-retailer-api":"Retailer API","menu-drawer-retailer-api--plural":"Retailer API","menu-drawer-ebay":"eBay","menu-drawer-etsy":"Etsy","menu-drawer-lazada":"Lazada","menu-drawer-erp-platforms":"ERP Platforms","menu-drawer-erp-platforms--plural":"ERP Platforms","menu-drawer-api":"API","menu-drawer-product-photography":"Product Photography","menu-drawer-global-inventory":"Global Inventory","menu-drawer-global-inventory--plural":"Global Inventory","menu-drawer-bulk-purchasing":"Bulk Purchasing","menu-drawer-bulk-purchasing--plural":"Bulk Purchasing","menu-drawer-payment-processor-agency":"Payment Processor Agency","menu-drawer-payment-processor-agency--plural":"Payment Processor Agency","menu-drawer-product-sourcing":"Product Sourcing","menu-drawer-credit-services":"Credit Services","menu-drawer-credit-services--plural":"Credit Services","menu-drawer-dtc-supply-chain-implementation":"DTC Supply Chain Implementation","menu-drawer-dtc-supply-chain-implementation--plural":"DTC Supply Chain Implementation","menu-drawer-free-stores":"Free Stores","menu-drawer-free-stores--plural":"Free Stores","menu-drawer-print-on-demand":"Print-on-Demand","menu-drawer-print-on-demand--plural":"Print-on-Demand","menu-drawer-3pl-fulfillment":"3PL Fulfillment","menu-drawer-custom-packaging":"Custom Packaging","my-profile-cogs-config-top-tip-1":"COGS is the cost of goods per order in your store.","my-profile-cogs-config-top-tip-1--plural":"COGS is the cost of goods per order in your store.","my-profile-cogs-config-top-tip-2":"COGS = Total cost of goods in CJ / Total cost of goods in your store * 100%","my-profile-cogs-config-top-tip-2--plural":"COGS = Total cost of goods in CJ / Total cost of goods in your store * 100%","my-profile-configure-cogs-thresholds-tips":"Configure COGS thresholds to maintain profit margins and prevent cost overruns.","my-profile-configure-cogs-thresholds-tips--plural":"Configure COGS thresholds to maintain profit margins and prevent cost overruns.","my-profile-configure-cogs-thresholds":"Configure COGS thresholds","my-profile-configure-cogs-thresholds--plural":"Configure COGS thresholds","my-profile-cogs-config-form-order-cogs-threshold":"Order COGS threshold","my-profile-cogs-config-form-order-cogs-threshold--plural":"Order COGS threshold","my-profile-view-results":"View Results","my-profile-view-results--plural":"View Results","my-profile-content":"Content","my-profile-see-how-to-manually-update":"See how to manually update","my-profile-see-how-to-manually-update--plural":"See how to manually update","my-profile-cogs-config-form-order-cogs-threshold-placeholder":"Please enter","my-profile-cogs-config-top-tip-3":"Orders that include fulfilment service are not included in this calculation.","my-profile-cogs-config-top-tip-3--plural":"Orders that include fulfilment service are not included in this calculation.","my-profile-time":"Time","my-profile-cogs-config-bottom-tip-3":"The order list can filter out abnormal orders exceeding the threshold and filter orders by COGS.","my-profile-cogs-config-bottom-tip-3--plural":"The order list can filter out abnormal orders exceeding the threshold and filter orders by COGS.","my-profile-cogs-config-bottom-tip-2":"The order list displays the COGS of orders and products.","my-profile-cogs-config-bottom-tip-2--plural":"The order list displays the COGS of orders and products.","my-profile-cogs-config-bottom-tip-5":"For orders awaiting payment and within the order lock period, to obtain the latest configuration, you must manually update the order.","my-profile-cogs-config-bottom-tip-5--plural":"For orders awaiting payment and within the order lock period, to obtain the latest configuration, you must manually update the order.","my-profile-cogs-config-bottom-tip-4":"After successfully saving a configuration change, the system will not automatically update the data of all awaiting payment orders. When you submit an order, the latest configuration will be applied.","my-profile-cogs-config-bottom-tip-4--plural":"After successfully saving a configuration change, the system will not automatically update the data of all awaiting payment orders. When you submit an order, the latest configuration will be applied.","my-profile-cogs-config-bottom-tip-1":"COGS Applications","my-profile-cogs-config-bottom-tip-1--plural":"COGS Applications","my-profile-cogs-config-form-order-cogs-threshold-solution":"Solutions of COGS exceeding the threshold for orders","my-profile-cogs-config-form-order-cogs-threshold-solution--plural":"Solutions of COGS exceeding the threshold for orders","my-profile-cogs-config-form-order-cogs-threshold-solution-option-2":"Order prompts appear; you can decide whether to proceed with the order.","my-profile-cogs-config-form-order-cogs-threshold-solution-option-2--plural":"Order prompts appear; you can decide whether to proceed with the order.","my-profile-cogs-config-form-order-cogs-threshold-solution-option-1":"No prompt or block on order placement","my-profile-cogs-config-form-order-cogs-threshold-solution-option-1--plural":"No prompt or block on order placement","my-profile-info-saved-successfully":"Saved Successfully","my-profile-operator":"Operator","my-profile-operator--plural":"Operator","my-profile-cogs-config-form-order-cogs-threshold-solution-option-3":"Order block: Orders cannot be placed.","my-profile-cogs-config-form-order-cogs-threshold-solution-option-3--plural":"Order block: Orders cannot be placed.","common-mycj-menu-shein":"Shein","common-mycj-menu-shein--plural":"Shein","common-mycj-menu-temu-semi-managed":"Semi-Managed","common-mycj-menu-temu-semi-managed--plural":"Semi-Managed","common-top-setting":"Setting","home-view-less":"Less","my-profile-cogs-config-bottom-tip-7":"Please complete the necessary information marked with \'<span class=\\"cogs-btn-tool-tip-inner-require\\">*</span>\' before saving.","my-profile-cogs-config-bottom-tip-7--plural":"Please complete the necessary information marked with \'<span class=\\"cogs-btn-tool-tip-inner-require\\">*</span>\' before saving.","my-profile-cogs-config-bottom-tip-6":"The current configuration has not changed, no need to save.","my-profile-cogs-config-bottom-tip-6--plural":"The current configuration has not changed, no need to save.","payment-agency-banner-email":"Email","payment-agency-banner-whatsapp":"WhatsApp","payment-agency-banner-subtitle-2":"Don\'t let frustrating account freezes and high reserve requirements stop your momentum. Get a better, simpler solution with us.","payment-agency-banner-subtitle-2--plural":"Don\'t let frustrating account freezes and high reserve requirements stop your momentum. Get a better, simpler solution with us.","payment-agency-banner-subtitle":"Finding the perfect payment solution for your e-commerce business can be tough.","payment-agency-banner-subtitle--plural":"Finding the perfect payment solution for your e-commerce business can be tough.","payment-agency-banner-title":"Access Payment Gateways Without the Hassle of Business Registration","payment-agency-banner-title--plural":"Access Payment Gateways Without the Hassle of Business Registration","payment-agency-cooperative-partners":"Cooperative Partners","payment-agency-cooperative-partners--plural":"Cooperative Partners","payment-agency-works-seamlessly-with-shopify-woocommerce-bigcommerce-and-other-dtc-platforms":"Works seamlessly with Shopify, WooCommerce, BigCommerce, and other DTC platforms.","payment-agency-works-seamlessly-with-shopify-woocommerce-bigcommerce-and-other-dtc-platforms--plural":"Works seamlessly with Shopify, WooCommerce, BigCommerce, and other DTC platforms.","payment-agency-leasing-fees-start-as-low-as-1":"Leasing fees start as low as 1%. During promotions, enjoy an extra 1%â2% subsidy based on your CJdropshipping purchase volume.","payment-agency-leasing-fees-start-as-low-as-1--plural":"Leasing fees start as low as 1%. During promotions, enjoy an extra 1%â2% subsidy based on your CJdropshipping purchase volume.","payment-agency-supports-credit-cards-e-wallets-apple-pay-google-pay-bnpl-and-local-payment-methods":"Supports credit cards, e-wallets, Apple Pay, Google Pay, BNPL, and local payment methods.","payment-agency-supports-credit-cards-e-wallets-apple-pay-google-pay-bnpl-and-local-payment-methods--plural":"Supports credit cards, e-wallets, Apple Pay, Google Pay, BNPL, and local payment methods.","payment-agency-industry-leading-payment-success-rate":"Industry-Leading Payment Success Rate","payment-agency-industry-leading-payment-success-rate--plural":"Industry-Leading Payment Success Rate","payment-agency-strong-partnerships-and-stable-accounts":"Strong Partnerships & Stable Accounts","payment-agency-strong-partnerships-and-stable-accounts--plural":"Strong Partnerships & Stable Accounts","payment-agency-seamless-support-for-multiple-dtc-websites":"Seamless Support for Multiple DTC Websites","payment-agency-seamless-support-for-multiple-dtc-websites--plural":"Seamless Support for Multiple DTC Websites","payment-agency-wide-range-of-payment-methods":"Wide Range of Payment Methods","payment-agency-wide-range-of-payment-methods--plural":"Wide Range of Payment Methods","payment-agency-low-leasing-fees-with-promotional-sub
31657sidies":"Low Leasing Fees with Promotional Subsidies","payment-agency-low-leasing-fees-with-promotional-subsidies--plural":"Low Leasing Fees with Promotional Subsidies","payment-agency-connected-to-major-gateways-with-success-rates-at-an-industry-leading-level":"Connected to major gateways with success rates at an industry-leading level.","payment-agency-connected-to-major-gateways-with-success-rates-at-an-industry-leading-level--plural":"Connected to major gateways with success rates at an industry-leading level.","payment-agency-once-your-application-for-a-payment-account-is-approved-by-an-account-manager":"Once your application for a payment account is approved by an account manager, we will set up your account for you within 7 to 15 business days.","payment-agency-once-your-application-for-a-payment-account-is-approved-by-an-account-manager--plural":"Once your application for a payment account is approved by an account manager, we will set up your account for you within 7 to 15 business days.","payment-agency-once-your-account-reaches-the-withdrawal-threshold":"Once your account reaches the withdrawal threshold, you may request a payout. Your account manager will c
31657oordinate with the finance team to transfer the funds within 3 business days.","payment-agency-once-your-account-reaches-the-withdrawal-threshold--plural":"Once your account reaches the withdrawal threshold, you may request a payout. Your account manager will coordinate with the finance team to transfer the funds within 3 business days.","payment-agency-step":"Step","payment-agency-step--plural":"Step","payment-agency-register-a-cjdropshipping-account-and-authorize-your-store":"Register a CJdropshipping Account and Authorize Your Store","payment-agency-register-a-cjdropshipping-account-and-authorize-your-store--plural":"Register a CJdropshipping Account and Authorize Your Store","payment-agency-cjdropshipping-maintains-strong-partnerships-with-multiple-gateways":"CJdropshipping maintains strong partnerships with multiple gateways, ensuring better risk control and more stable accounts.","payment-agency-cjdropshipping-maintains-strong-partnerships-with-multiple-gateways--plural":"CJdropshipping maintains strong partnerships with multiple gateways, ensuring better risk control and more stable accounts.","payment-agency-we-ll-help-you-set-up-your-payment-account":"We\'ll help you set up your payment account and continuously monitor for any potential payment issues.","payment-agency-we-ll-help-you-set-up-your-payment-account--plural":"We\'ll help you set up your payment account and continuously monitor for any potential payment issues.","payment-agency-once-your-account-reaches-the-withdrawal-threshold-7":"Once your account reaches the withdrawal threshold, you may request a payout. Your account manager will c
31657oordinate with the finance team to transfer the funds within 7 business days.","payment-agency-once-your-account-reaches-the-withdrawal-threshold-7--plural":"Once your account reaches the withdrawal threshold, you may request a payout. Your account manager will coordinate with the finance team to transfer the funds within 7 business days.","payment-agency-lease-fee-tooltip-text":"Lease Fee for Orders Using the CJ Payment Agency Service","payment-agency-lease-fee-tooltip-text--plural":"Lease Fee for Orders Using the CJ Payment Agency Service","payment-agency-bonus-rewards-tooltip-text":"Bonus for Orders Using the CJ Payment Agency Service","payment-agency-bonus-rewards-tooltip-text--plural":"Bonus for Orders Using the CJ Payment Agency Service","payment-agency-promotion-period-title":"Promotion Period","payment-agency-promotion-period-title--plural":"Promotion Period","payment-agency-promotion-period-tooltip-text":"Registering and connecting a new store during the promotion.","payment-agency-promotion-period-tooltip-text--plural":"Registering and connecting a new store during the promotion.","payment-agency-cj-payment-agency-service-contract":"CJ Payment Agency Service Contract","payment-agency-cj-payment-agency-service-contract--plural":"CJ Payment Agency Service Contract","payment-agency-lease-fee":"Lease Fee","payment-agency-lease-fee--plural":"Lease Fee","payment-agency-promotion-note-content-2":"CJdropshipping.com reserves the right to the final interpretation of this promotional event.","payment-agency-promotion-note-content-2--plural":"CJdropshipping.com reserves the right to the final interpretation of this promotional event.","payment-agency-account-service-title":"Ready to boost your sales with our Payment Account Service?","payment-agency-account-service-title--plural":"Ready to boost your sales with our Payment Account Service?","payment-agency-new-customers-with-new-stores":"New Customers with New Stores","payment-agency-new-customers-with-new-stores--plural":"New Customers with New Stores","payment-agency-bonus-rewards":"Bonus Rewards","payment-agency-bonus-rewards--plural":"Bonus Rewards","payment-agency-regular":"Regular","payment-agency-regular--plural":"Regular","payment-agency-important-notes":"Important Notes","payment-agency-important-notes--plural":"Important Notes","payment-agency-deposit":"Deposit","payment-agency-deposit--plural":"Deposit","payment-agency-others":"Others","payment-agency-promotion-period":"1. Promotion Period: September 15, 2025 â December 31, 2025","payment-agency-promotion-period--plural":"1. Promotion Period: September 15, 2025 â December 31, 2025","payment-agency-pricing":"Pricing","payment-agency-cj-order-amount-x":"CJ Order Amount (X)","payment-agency-cj-order-amount-x--plural":"CJ Order Amount (X)","payment-agency-order-amount-tooltip-text":"Monthly CJ Order Purchases for Stores Using the CJ Payment Agency Service","payment-agency-order-amount-tooltip-text--plural":"Monthly CJ Order Purchases for Stores Using the CJ Payment Agency Service","payment-agency-pricing-for-growth-not-for-headaches":"Pricing for Growth, Not for Headaches","payment-agency-pricing-for-growth-not-for-headaches--plural":"Pricing for Growth, Not for Headaches","payment-agency-start-scaling-now-lets-build-your-success":"Start Scaling Now: Let\'s Build Your Success","payment-agency-start-scaling-now-lets-build-your-success--plural":"Start Scaling Now: Let\'s Build Your Success","payment-agency-leasing-fees-start-as-low-as-1-during-promotions":"Leasing fees start as low as 1%. During promotions, enjoy an extra 1%-2% subsidy based on your CJdropshipping purchase volume.","payment-agency-leasing-fees-start-as-low-as-1-during-promotions--plural":"Leasing fees start as low as 1%. During promotions, enjoy an extra 1%-2% subsidy based on your CJdropshipping purchase volume.","payment-agency-promotion-notes-1":"1. Promotion Period: September 15, 2025-December 31, 2025","payment-agency-promotion-notes-1--plural":"1. Promotion Period: September 15, 2025-December 31, 2025","payment-agency-promotion-note-content":"2. Pricing for PayPal and Stripe payment gateway sub-accounts requires a separate inquiry. For full details, please see the","payment-agency-promotion-note-content--plural":"2. Pricing for PayPal and Stripe payment gateway sub-accounts requires a separate inquiry. For full details, please see the","payment-agency-register-a-cjdropshipping-account-and-authorize-your-store.":"Register a CJdropshipping Account and Authorize Your Store.","payment-agency-register-a-cjdropshipping-account-and-authorize-your-store.--plural":"Register a CJdropshipping Account and Authorize Your Store.","common-download-open":"Open","common-download-open--plural":"Open","common-download-view-top-selling-products-on-cj-app":"View top selling products on CJ APP","common-download-view-top-selling-products-on-cj-app--plural":"View top selling products on CJ APP","common-top-drag-or-upload-or-paste-an-image-to-search":"Upload an image, drag and drop it here, or paste it into the box to start your search.","common-top-drag-or-upload-or-paste-an-image-to-search--plural":"Upload an image, drag and drop it here, or paste it into the box to start your search.","integrations-temu-from-temu-listing-to-customer-doorstep-simplified-in-3-steps":"From Temu Listing to Customer Doorstep â Simplified in 3 Steps","integrations-temu-from-temu-listing-to-customer-doorstep-simplified-in-3-steps--plural":"From Temu Listing to Customer Doorstep â Simplified in 3 Steps","integrations-temu-start-business":"Start Business","integrations-temu-start-business--plural":"Start Business","integrations-temu-24-7-support":"24/7 Support","integrations-temu-worldwide-shipping":"Worldwide Shipping","integrations-temu-worldwide-shipping--plural":"Worldwide Shipping","integrations-temu-no-upfront-inventory":"No Upfront Inventory","integrations-temu-no-upfront-inventory--plural":"No Upfront Inventory","integrations-temu-connect-store":"Connect Store","integrations-temu-connect-store--plural":"Connect Store","common-why-choose":"Why Choose","common-why-choose--plural":"Why Choose","common-connect-cjdropshipping":"Connect CJdropshipping","common-connect-cjdropshipping--plural":"Connect CJdropshipping","common-create-your-store-now":"Create Your Store Now","common-create-your-store-now--plural":"Create Your Store Now","my-profile-shipping-pcs-price":"Based on the PCS shipping price quote","my-profile-shipping-pcs-price--plural":"Based on the PCS shipping price quote","my-profile-shipping-quinary":"Quinary","my-profile-shipping-quinary--plural":"Quinary","my-profile-shipping-pcs-price-tip":"If a PCS-priced logistic is available for the order, the system will prioritize the PCS-priced logistic (and select the shipping with the lowest PCS quote).","my-profile-shipping-pcs-price-tip--plural":"If a PCS-priced logistic is available for the order, the system will prioritize the PCS-priced logistic (and select the shipping with the lowest PCS quote).","my-profile-shipping-default-shipping-method-can-only-be-set-up-in-5-categories-at-the-moment":"Default Shipping Method can only be set up in 5 categories at the moment.","my-profile-shipping-default-shipping-method-can-only-be-set-up-in-5-categories-at-the-moment--plural":"Default Shipping Method can only be set up in 5 categories at the moment.","my-profile-shipping-default-shipping-method-can-be-set-up-for-5-categories":"Default shipping method can be set up for 5 categories: (1) Store; (2) Product; (3) Order (Cheapest/Fastest shipping method); (4) Country of delivery; (5) Based on the PCS shipping price quote","my-profile-shipping-default-shipping-method-can-be-set-up-for-5-categories--plural":"Default shipping method can be set up for 5 categories: (1) Store; (2) Product; (3) Order (Cheapest/Fastest shipping method); (4) Country of delivery; (5) Based on the PCS shipping price quote","my-profile-shipping-you-can-set-up-the-precedence-for-the-5-categories":"You can set up the precedence for the 5 categories.","my-profile-shipping-you-can-set-up-the-precedence-for-the-5-categories--plural":"You can set up the precedence for the 5 categories.","common-logistics-cost-strategy-configuration":"Logistics Cost Strategy Configuration","common-logistics-cost-strategy-configuration--plural":"Logistics Cost Strategy Configuration","common-logistics-cost-strategy-configuration-disabled-tip":"Selecting \'Logistics Cost Calculation\' requires a specific shipping country. Please do not select all c
31657ountries. If you need to select all countries, please uncheck \'Logistics Cost Calculation.\'","common-logistics-cost-strategy-configuration-disabled-tip--plural":"Selecting \'Logistics Cost Calculation\' requires a specific shipping country. Please do not select all countries. If you need to select all countries, please uncheck \'Logistics Cost Calculation.\'","common-logistics-cost-strategy-configuration-selected-submit-tip":"If not all required fields are selected, please confirm that Ship From, Ship To, and Logistic Strategy are all selected before submitting.","common-logistics-cost-strategy-configuration-selected-submit-tip--plural":"If not all required fields are selected, please confirm that Ship From, Ship To, and Logistic Strategy are all selected before submitting.","wallet-paid-customization":"Paid Customization","wallet-paid-customization--plural":"Paid Customization","home-shopify":"Shopify","common-mycj-menu-chat-notice-title-3":"Agent is offline","common-mycj-menu-chat-notice-title-3--plural":"Agent is offline","common-mycj-menu-chat-notice-title-2":"Your agent {{nameEn}} is online","common-mycj-menu-chat-notice-title-2--plural":"Your agent {{nameEn}} is online","common-mycj-menu-chat-notice-title-1":"24/7 online service","common-mycj-menu-chat-notice-title-1--plural":"24/7 online service","common-mycj-menu-chat-notice-title-4":"24/7 online service","common-mycj-menu-chat-notice-title-4--plural":"24/7 online service","common-mycj-menu-chat-notice-describe-1":"I am here, always provide consulting services for you","common-mycj-menu-chat-notice-describe-1--plural":"I am here, always provide consulting services for you","common-mycj-menu-chat-notice-describe-2":"The personal agent is providing consulting services","common-mycj-menu-chat-notice-describe-2--plural":"The personal agent is providing consulting services","common-mycj-menu-find-factories":"Factories","common-mycj-menu-find-factories--plural":"Factories","common-mycj-menu-find":"Find","common-mycj-menu-find--plural":"Find","common-mycj-menu-saved-suppliers":"Saved Factories","common-mycj-menu-saved-suppliers--plural":"Saved Factories","common-mycj-menu-my-quotation-tip":"Check the final logistics PCS price applied at checkout.","common-mycj-menu-my-quotation-tip--plural":"Check the final logistics PCS price applied at checkout.","common-mycj-menu-my-quotation":"My Quotation","common-mycj-menu-my-quotation--plural":"My Quotation","common-last-mile-label-required":"Last-Mile Label Required","common-last-mile-label-required--plural":"Last-Mile Label Required","common-you-have-orders-that-require":"You have orders that require last-mile labels. Please upload them as soon as possible.","common-you-have-orders-that-require--plural":"You have orders that require last-mile labels. Please upload them as soon as possible.","contact-supplier-demand-limit":"Purchase request can contain up to {{limit}} characters.","contact-supplier-demand-limit--plural":"Purchase request can contain up to {{limit}} characters.","contact-supplier-file-too-large":"{{name}} exceeds the 5MB size limit.","contact-supplier-file-too-large--plural":"{{name}} exceeds the 5MB size limit.","contact-supplier-upload-service-unavailable":"Upload service is unavailable. Please try again later.","contact-supplier-upload-service-unavailable--plural":"Upload service is unavailable. Please try again later.","contact-supplier-submit-success":"Submitted successfully. The supplier will contact you soon.","contact-supplier-submit-success--plural":"Submitted successfully. The supplier will contact you soon.","contact-supplier-upload-attachment":"Upload Attachment","contact-supplier-upload-attachment--plural":"Upload Attachment","production-models":"Production Models","production-models--plural":"Production Models","contact-supplier-qualification-limit":"Qualification requirements can contain up to {{limit}} characters.","contact-supplier-qualification-limit--plural":"Qualification requirements can contain up to {{limit}} characters.","contact-supplier-upload-failed":"Upload failed. Please try again later.","contact-supplier-upload-failed--plural":"Upload failed. Please try again later.","contact-supplier-submit":"Submit","contact-supplier-budget-required":"Please enter the purchase budget.","contact-supplier-budget-required--plural":"Please enter the purchase budget.","supplier-card-view-detail":"View Factory Information","supplier-card-view-detail--plural":"View Factory Information","contact-supplier-unsupported-format":"Unsupported file format: {{format}}","contact-supplier-unsupported-format--plural":"Unsupported file format: {{format}}","contact-supplier-attachment-default-name":"Attachment {{index}}","contact-supplier-attachment-default-name--plural":"Attachment {{index}}","contact-supplier-attachment-upload-failed":"Attachment upload failed. Please try again later.","contact-supplier-attachment-upload-failed--plural":"Attachment upload failed. Please try again later.","contact-supplier-info-missing":"Supplier information is missing. Please refresh the page and try again.","contact-supplier-info-missing--plural":"Supplier information is missing. Please refresh the page and try again.","contact-supplier-remove-attachment":"Remove","contact-supplier-quantity-invalid":"Quantity must be a positive integer between 1 and 999999.","contact-supplier-quantity-invalid--plural":"Quantity must be a positive integer between 1 and 999999.","contact-supplier-upload-tip":"* Up to 10 attachments, max size 5MB. Supported: {{types}}.","contact-supplier-upload-tip--plural":"* Up to 10 attachments, max size 5MB. Supported: {{types}}.","contact-supplier-upload-limit-reached":"You can upload up to 10 attachments.","contact-supplier-upload-limit-reached--plural":"You can upload up to 10 attachments.","supplier-card-contact":"Contact Now","contact-supplier-qualification-req":"Qualification Requirements","contact-supplier-qualification-req--plural":"Qualification Requirements","contact-supplier-quantity-required":"Please enter the purchase quantity.","contact-supplier-quantity-required--plural":"Please enter the purchase quantity.","supplier-card-main-category":"Main Category","supplier-card-main-category--plural":"Main Category","contact-supplier-attachments-over-limit":"The number of attachments exceeds the limit.","contact-supplier-attachments-over-limit--plural":"The number of attachments exceeds the limit.","supplier-card-experience":"Industry Experience","supplier-card-experience--plural":"Industry Experience","contact-supplier-login-required":"Please sign in before submitting.","contact-supplier-login-required--plural":"Please sign in before submitting.","contact-supplier-submit-failed":"Submission failed. Please try again later.","contact-supplier-submit-failed--plural":"Submission failed. Please try again later.","contact-supplier-submitting":"Submitting...","contact-supplier-submitting--plural":"Submitting...","contact-supplier-purchase-quantity":"Purchase Quantity","contact-supplier-purchase-quantity--plural":"Purchase Quantity","contact-supplier-purchase-budget":"Purchase Budget ($)","contact-supplier-purchase-budget--plural":"Purchase Budget ($)","contact-supplier-demand-required":"Please enter your purchase request.","contact-supplier-demand-required--plural":"Please enter your purchase request.","contact-supplier-uploading":"Uploading...","contact-supplier-uploading--plural":"Uploading...","business-model":"Business Model","business-model--plural":"Business Model","contact-supplier-offline-tip":"Hello, the supplier is currently offline. You can quickly submit your purchasing requirements below. Your information will be saved and automatically sent to the supplier.","contact-supplier-offline-tip--plural":"Hello, the supplier is currently offline. You can quickly submit your purchasing requirements below. Your information will be saved and automatically sent to the supplier.","contact-supplier-purchase-request-hint":"You may describe your actual use scenario, for example: \\"I need a batch of T-shirts for a kindergarten spring sports event for children aged 3-6, made of soft, breathable fabric with cartoon prints.\\" We will share this information with the supplier so they can quickly determine whether they can meet your needs.","contact-supplier-purchase-request-hint--plural":"You may describe your actual use scenario, for example: \\"I need a batch of T-shirts for a kindergarten spring sports event for children aged 3-6, made of soft, breathable fabric with cartoon prints.\\" We will share this information with the supplier so they can quickly determine whether they can meet your needs.","contact-supplier-purchase-request":"Purchase Request","contact-supplier-purchase-request--plural":"Purchase Request","my-quotation-title":"My Quotation","my-quotation-title--plural":"My Quotation","my-profile-cogs-config-top-tip-4":"COGS = Total cost of goods in {{siteName}} / Total cost of goods in your store * 100%","my-profile-cogs-config-top-tip-4--plural":"COGS = Total cost of goods in {{siteName}} / Total cost of goods in your store * 100%","common-top-china-warehouse-dispat
31657ch-notification":"China Warehouse Dispatch Notification","common-top-china-warehouse-dispatch-notification--plural":"China Warehouse Dispatch Notification","common-top-china-warehouse-dispatch-notification-text":"Click \\"View Now\\" to check your dispatch details.","common-top-china-warehouse-dispatch-notification-text--plural":"Click \\"View Now\\" to check your dispatch details.","common-mycj-menu-find-academy":"Mentors","common-mycj-menu-sourcing-agent-complaints":"Service Complaints","common-mycj-menu-sourcing-agent-complaints--plural":"Service Complaints","common-mycj-menu-sourcing-agent-order":"Service Orders","common-mycj-menu-sourcing-agent-order--plural":"Service Orders","common-mycj-menu-service-agents-list":"Sourcing Agent List","common-mycj-menu-service-agents-list--plural":"Sourcing Agent List","common-mycj-menu-sourcing-agent":"Sourcing Agents","common-mycj-menu-sourcing-agent--plural":"Sourcing Agents","common-mycj-menu-sourcing-agent-new":"Sourcing Agents","common-mycj-menu-sourcing-agent-new--plural":"Sourcing Agents","advertisingservice-card-applovin-description-3-text":"Access premium traffic resources through Applovin Exchange.","advertisingservice-card-applovin-description-3-text--plural":"Access premium traffic resources through Applovin Exchange.","advertisingservice-card-tiktok-description-3-title":"Direct Client Account Services:","advertisingservice-card-tiktok-description-3-title--plural":"Direct Client Account Services:","advertisingservice-advantages-google-description-1":"Since the publication of the Google engine in 1998, it has launched hundreds of technical products, covering all fronts of global internet users, of which, eight of them, including Google Search, Google Chrome, YouTube, Android Mobile Platform, Gmail, Google Map, Google APP Store, and Google Cloud, have accumulated over 1 billion active users respectively.","advertisingservice-advantages-google-description-1--plural":"Since the publication of the Google engine in 1998, it has launched hundreds of technical products, covering all fronts of global internet users, of which, eight of them, including Google Search, Google Chrome, YouTube, Android Mobile Platform, Gmail, Google Map, Google APP Store, and Google Cloud, have accumulated over 1 billion active users respectively.","advertisingservice-advantages-google-description-2":"With the help of these Ad marketing tools and Google as a whole, our products and brands can outperform others in the international arena, covering more than 2.9 billion internet users and potential customers no matter where they hail from.","advertisingservice-advantages-google-description-2--plural":"With the help of these Ad marketing tools and Google as a whole, our products and brands can outperform others in the international arena, covering more than 2.9 billion internet users and potential customers no matter where they hail from.","advertisingservice-card-tiktok-description-6-title":"Bypass Geographical Restrictions:","advertisingservice-card-tiktok-description-6-title--plural":"Bypass Geographical Restrictions:","advertisingservice-card-applovin-description-4-text":"Extensive ad network covering global quality users.","advertisingservice-card-applovin-description-4-text--plural":"Extensive ad network covering global quality users.","advertisingservice-card-applovin-description-1-title":"Fast Activation:","advertisingservice-card-applovin-description-1-title--plural":"Fast Activation:","advertisingservice-card-applovin-description-1-text":"Direct official partnership for fast Applovin account activation.","advertisingservice-card-applovin-description-1-text--plural":"Direct official partnership for fast Applovin account activation.","advertisingservice-card-applovin-description-4-title":"Global Network:","advertisingservice-card-applovin-description-4-title--plural":"Global Network:","advertisingservice-card-tiktok-description-5-title":"Multi-Account Management:","advertisingservice-card-tiktok-description-5-title--plural":"Multi-Account Management:","advertisingservice-card-applovin-description-2-title":"Expert Guidance:","advertisingservice-card-applovin-description-2-title--plural":"Expert Guidance:","advertisingservice-advantages-facebook-description-2":"Owing to Facebook, millions of enterprises have successfully promoted their business all over the world, with over 3 million online advertisements and 50 million public pages.","advertisingservice-advantages-facebook-description-2--plural":"Owing to Facebook, millions of enterprises have successfully promoted their business all over the world, with over 3 million online advertisements and 50 million public pages.","advertisingservice-advantages-facebook-description-3":"Real customer-centered data can precisely locate potential customers, while diversified and well-rounded advertisement distribution can unequivocally transfer product information.","advertisingservice-advantages-facebook-description-3--plural":"Real customer-centered data can precisely locate potential customers, while diversified and well-rounded advertisement distribution can unequivocally transfer product information.","advertisingservice-advantages-facebook-description-1":"Apart from being the largest social network service website, Facebook is also the most accurate marketing platform.","advertisingservice-advantages-facebook-description-1--plural":"Apart from being the largest social network service website, Facebook is also the most accurate marketing platform.","advertisingservice-advantages-tiktok-description":"As an international advertising service provider affiliated with the Beijing ByteDance, TikTok offers partners comprehensive digital marketing solutions that are unique in terms of originality and immersive in terms of form and thus successfully establishes an efficie
31657nt and profound connection between partners and customers by integrating such traffic products as TikTok, Vigo Video, TopBuzz, Buzz Video, News Republic, Helo, and Babe, and gathering numerous website traffic, data, and high-quality contents.","advertisingservice-advantages-tiktok-description--plural":"As an international advertising service provider affiliated with the Beijing ByteDance, TikTok offers partners comprehensive digital marketing solutions that are unique in terms of originality and immersive in terms of form and thus successfully establishes an efficient and profound connection between partners and customers by integrating such traffic products as TikTok, Vigo Video, TopBuzz, Buzz Video, News Republic, Helo, and Babe, and gathering numerous website traffic, data, and high-quality contents.","advertisingservice-card-applovin-description-3-title":"Premium Traffic:","advertisingservice-card-applovin-description-3-title--plural":"Premium Traffic:","advertisingservice-card-tiktok-description-4-text":"TikTok officially certified partner, ensuring account stability and security.","advertisingservice-card-tiktok-description-4-text--plural":"TikTok officially certified partner, ensuring account stability and security.","advertisingservice-advantages-applovin-description":"Applovin is a leading global advertising platform that provides comprehensive digital marketing solutions for businesses. It offers a wide range of advertising services, including display advertising, video advertising, and native advertising, to help businesses reach their target audience and achieve their marketing goals.","advertisingservice-advantages-applovin-description--plural":"Applovin is a leading global advertising platform that provides comprehensive digital marketing solutions for businesses. It offers a wide range of advertising services, including display advertising, video advertising, and native advertising, to help businesses reach their target audience and achieve their marketing goals.","advertisingservice-card-applovin-title":"Applovin Advertising Accounts - Powerful Tool for Mobile App Growth","advertisingservice-card-applovin-title--plural":"Applovin Advertising Accounts - Powerful Tool for Mobile App Growth","advertisingservice-card-tiktok-description-3-text":"Direct provision of TikTok official direct client accounts, enjoying higher permissions and exclusive services.","advertisingservice-card-tiktok-description-3-text--plural":"Direct provision of TikTok official direct client accounts, enjoying higher permissions and exclusive services.","advertisingservice-card-tiktok-description-4-title":"Official Partner Qualifications:","advertisingservice-card-tiktok-description-4-title--plural":"Official Partner Qualifications:","advertisingservice-card-tiktok-description-5-text":"Support unified management of multiple TikTok advertising accounts for scalable operations.","advertisingservice-card-tiktok-description-5-text--plural":"Support unified management of multiple TikTok advertising accounts for scalable operations.","advertisingservice-card-tiktok-description-6-text":"Effectively avoid regional advertising restrictions through different regional account combinations.","advertisingservice-card-tiktok-description-6-text--plural":"Effectively avoid regional advertising restrictions through different regional account combinations.","advertisingservice-card-applovin-description-2-text":"Professional team guidance on Applovin advertising strategies.","advertisingservice-card-applovin-description-2-text--plural":"Professional team guidance on Applovin advertising strategies.","advertisingservice-account-solutions":"Account Solutions","advertisingservice-account-solutions--plural":"Account Solutions","advertisingservice-description":"Professional team provides official advertising account registration and management services for major platforms including Meta, Google, TikTok, and Applovin.","advertisingservice-description--plural":"Professional team provides official advertising account registration and management services for major platforms including Meta, Google, TikTok, and Applovin.","advertisingservice-all-in-one":"All-in-One","advertisingservice-all-in-one--plural":"All-in-One","advertisingservice-card-google-description-1-text":"Directly provide pre-opened Google advertising accounts, no complicated application process required.","advertisingservice-card-google-description-1-text--plural":"Directly provide pre-opened Google advertising accounts, no complicated application process required.","advertisingservice-card-google-description-2-text":"Based on Google\'s official partner qual
31657ifications, ensuring account stability and authority.","advertisingservice-card-google-description-2-text--plural":"Based on Google\'s official partner qualifications, ensuring account stability and authority.","advertisingservice-card-facebook-description-4-text":"Professional team assists with business verification, improving account stability.","advertisingservice-card-facebook-description-4-text--plural":"Professional team assists with business verification, improving account stability.","advertisingservice-card-facebook-description-4-title":"Professional Verification:","advertisingservice-card-facebook-description-4-title--plural":"Professional Verification:","advertisingservice-email":"Email","advertisingservice-card-facebook-description-1-title":"Free Standard Accounts:","advertisingservice-card-facebook-description-1-title--plural":"Free Standard Accounts:","advertisingservice-card-google-description-2-title":"Official Partner Resources:","advertisingservice-card-google-description-2-title--plural":"Official Partner Resources:","advertisingservice-global-advertising":"Global Advertising","advertisingservice-global-advertising--plural":"Global Advertising","advertisingservice-card-facebook-description-3-text":"Provide completely independent Facebook Business Manager accounts to ensure security and stability, avoiding association risks.","advertisingservice-card-facebook-description-3-text--plural":"Provide completely independent Facebook Business Manager accounts to ensure security and stability, avoiding association risks.","advertisingservice-card-google-description-3-title":"Multi-Account Solutions:","advertisingservice-card-google-description-3-title--plural":"Multi-Account Solutions:","advertisingservice-card-google-description-3-text":"Provide multiple independent Google advertising accounts, supporting multi-brand operations.","advertisingservice-card-google-description-3-text--plural":"Provide multiple independent Google advertising accounts, supporting multi-brand operations.","advertisingservice-card-tiktok-title":"TikTok Advertising Accounts - Global Reach, Precision Targeting","advertisingservice-card-tiktok-title--plural":"TikTok Advertising Accounts - Global Reach, Precision Targeting","advertisingservice-card-tiktok-description-1-text":"Cross-border TikTok advertising accounts specifically designed forcross-border enterprises, supporting multiple countries and regions.","advertisingservice-card-tiktok-description-1-text--plural":"Cross-border TikTok advertising accounts specifically designed forcross-border enterprises, supporting multiple countries and regions.","advertisingservice-card-google-title":"Google Advertising Accounts - Precision Traffic, Global Quality Customers","advertisingservice-card-google-title--plural":"Google Advertising Accounts - Precision Traffic, Global Quality Customers","advertisingservice-card-google-description-4-title":"Immediate Availability:","advertisingservice-card-google-description-4-title--plural":"Immediate Availability:","advertisingservice-contact-us-now-to-learn-more":"Contact us now to learn more","advertisingservice-contact-us-now-to-learn-more--plural":"Contact us now to learn more","advertisingservice-card-facebook-description-3-title":"Independent Environment:","advertisingservice-card-facebook-description-3-title--plural":"Independent Environment:","advertisingservice-card-facebook-description-2-title":"Unlimited Value-Added Accounts:","advertisingservice-card-facebook-description-2-title--plural":"Unlimited Value-Added Accounts:","advertisingservice-card-facebook-description-1-text":"Provide advertising accounts with certain spending limits, completely free account opening, suitable for startups and testing phases.","advertisingservice-card-facebook-description-1-text--plural":"Provide advertising accounts with certain spending limits, completely free account opening, suitable for startups and testing phases.","advertisingservice-break-through-your-e-commerce-growth-bottlenecks":"Break Through Your E-commerce Growth Bottlenecks","advertisingservice-break-through-your-e-commerce-growth-bottlenecks--plural":"Break Through Your E-commerce Growth Bottlenecks","advertisingservice-card-facebook-title":"Meta Advert
31657ising Accounts - Flexible Options for Different Budget Needs","advertisingservice-card-facebook-title--plural":"Meta Advertising Accounts - Flexible Options for Different Budget Needs","advertisingservice-card-tiktok-description-2-text":"Provide US local TikTok advertising accounts, enjoying exclusive benefits and traffic support for local businesses.","advertisingservice-card-tiktok-description-2-text--plural":"Provide US local TikTok advertising accounts, enjoying exclusive benefits and traffic support for local businesses.","advertisingservice-whatsapp":"WhatsApp","advertisingservice-card-google-description-4-text":"Accounts are ready to use immediately after opening, saving review waiting time.","advertisingservice-card-google-description-4-text--plural":"Accounts are ready to use immediately after opening, saving review waiting time.","advertisingservice-card-tiktok-description-1-title":"Cross-border TikTok Accounts:","advertisingservice-card-tiktok-description-1-title--plural":"Cross-border TikTok Accounts:","advertisingservice-start-now-for-free":"Start Now for Free","advertisingservice-start-now-for-free--plural":"Start Now for Free","advertisingservice-card-google-description-1-title":"Ready-to-Use Accounts:","advertisingservice-card-google-description-1-title--plural":"Ready-to-Use Accounts:","advertisingservice-card-tiktok-description-2-title":"US Local Accounts:","advertisingservice-card-tiktok-description-2-title--plural":"US Local Accounts:","advertisingservice-card-facebook-description-2-text":"Exclusive access to Meta advertising accounts with no spending limits (with corresponding service fees), completely solving account restriction worries.","advertisingservice-card-facebook-description-2-text--plural":"Exclusive access to Meta advertising accounts with no spending limits (with corresponding service fees), completely solving account restriction worries.","common-top-search-search-factories-tip":"Search factories by keywords, name, or other filters","common-top-search-search-factories-tip--plural":"Search factories by keywords, name, or other filters","visitor-service-account-manager-title":"Get the Best Sourcing Agent Services","visitor-service-account-manager-title--plural":"Get the Best Sourcing Agent Services","visitor-service-get-the-best-sourcing-agent-services-desc":"Get the best sourcing agent services with a dedicated AM ensuring your project goals and deadlines are met.","visitor-service-get-the-best-sourcing-agent-services-desc--plural":"Get the best sourcing agent services with a dedicated AM ensuring your project goals and deadlines are met.","paid-service-all":"All","paid-service-price-sort-desc":"High to Low","paid-service-price-sort-desc--plural":"High to Low","paid-service-price-sort-asc":"Low to High","paid-service-price-sort-asc--plural":"Low to High","paid-service-fill-in-service":"Fill in service","paid-service-fill-in-service--plural":"Fill in service","paid-service-service-start-time":"Service can start anytime after purchase.","paid-service-service-start-time--plural":"Service can start anytime after purchase.","paid-service-quotation-plan-number":"Quotation Plan {{ number }}","paid-service-quotation-plan-number--plural":"Quotation Plan {{ number }}","paid-service-payable-amount":"Payable Amount","paid-service-product-quotation":"Product Quotation","paid-service-product-quotation--plural":"Product Quotation","paid-service-hire":"Hire","paid-service-hire--plural":"Hire","paid-service-service-period":"Service Period {{ cycle }} Days","paid-service-service-period--plural":"Service Period {{ cycle }} Days","paid-service-customized-services-can-also-be-tailored-to-your-needs":"Customized services can also be tailored to your needsâplease contact your sourcing agent for details.","paid-service-customized-services-can-also-be-tailored-to-your-needs--plural":"Customized services can also be tailored to your needsâplease contact your sourcing agent for details.","paid-service-view-service-details":"View Service Details","paid-service-view-service-details--plural":"View Service Details","paid-service-service-process":"Service Process","paid-service-service-process--plural":"Service Process","common-advertiser-agency":"Advertiser Agency","common-advertiser-agency--plural":"Advertiser Agency","common-mycj-menu-agent":"Agents","common-mycj-menu-agent--plural":"Agents","paid-service-free":"Free","paid-service-service-period-days":"Service Period: {{ cycle }} Days","paid-service-service-period-days--plural":"Service Period: {{ cycle }} Days","paid-service-price":"Price","paid-service-hire-now":"Hire Now","paid-service-hire-now--plural":"Hire Now","paid-service-service-quotation":"Service Quotation","paid-service-service-quotation--plural":"Service Quotation","contact-supplier-attachments":"Upload Attachment","contact-supplier-submit-employees":"Employees","contact-supplier-submit-employees--plural":"Employees","contact-supplier-budget-invalid":"Budget must be between 0.01 and 999999 with up to two decimals.","contact-supplier-budget-invalid--plural":"Budget must be between 0.01 and 999999 with up to two decimals.","visitor-service-get-the-best-sourcing-agent-services-desc2":"We possess extensive sourcing agent resources and high-quality cross-border procurement services to ensure that your project objectives and deadlines are fulfilled. Please review the profiles of our premium sourcing agents below to identify the best match for your business.","visitor-service-get-the-best-sourcing-agent-services-desc2--plural":"We possess extensive sourcing agent resources and high-quality cross-border procurement services to ensure that your project objectives and deadlines are fulfilled. Please review the profiles of our premium sourcing agents below to identify the best match for your business.","common-costs-us-tips":"CJEC Belgrade, Serbia is Coming! Connect. Learn. Grow â Join Us","common-costs-us-tips--plural":"Plan your CNY 2026 inventory with CJ - Click here to prepare early","common-header-notice":"CJEC Belgrade 2026 â View Detail","common-header-notice--plural":"Start Inventory with Only 30% Deposit - Click for More!","bulk-purchase-save-30-costs":"Save 30%+ Costs","bulk-purchase-save-30-costs--plural":"Save 30%+ Costs","bulk-purchase-lower-margins-less-control-over-shipping-times-and-product-quality":"Lower margins, less control over shipping times and product quality.","bulk-purchase-lower-margins-less-control-over-shipping-times-and-product-quality--plural":"Lower margins, less control over shipping times and product quality.","bulk-purchase-scale-your-business-reliably":"Scale Your Business Reliably","bulk-purchase-scale-your-business-reliably--plural":"Scale Your Business Reliably","bulk-purchase-get-your-free-bulk-quote-now":"Get Your Free Bulk Quote Now","bulk-purchase-get-your-free-bulk-quote-now--plural":"Get Your Free Bulk Quote Now","bulk-purchase-lower-per-unit-price-faster-order-fulfillment-full-branding-control":"Lower per
31657-unit price, faster order fulfillment, full branding control","bulk-purchase-lower-per-unit-price-faster-order-fulfillment-full-branding-control--plural":"Lower per-unit price, faster order fulfillment, full branding control","bulk-purchase-frequently-asked-questions":"Frequently Asked Questions","bulk-purchase-frequently-asked-questions--plural":"Frequently Asked Questions","bulk-purchase-bulk-purchase":"Bulk Purchase","bulk-purchase-bulk-purchase-vs-dropshipping-vs-preorder-inventory-which-is-right-for-you":"Bulk Purchase vs. Dropshipping vs. Preorder Inventory: Which is Right for You?","bulk-purchase-bulk-purchase-vs-dropshipping-vs-preorder-inventory-which-is-right-for-you--plural":"Bulk Purchase vs. Dropshipping vs. Preorder Inventory: Which is Right for You?","bulk-purchase-dropshipping":"Dropshipping","bulk-purchase-pre-order-inventory":"Pre-order Inventory","bulk-purchase-pre-order-inventory--plural":"Pre-order Inventory","bulk-purchase-no-upfront-inventory-cost-easy-to-test-new-products-low-barrier-to-entry":"No upfront inventory cost, easy to test new products, low barrier to entry.","bulk-purchase-no-upfront-inventory-cost-easy-to-test-new-products-low-barrier-to-entry--plural":"No upfront inventory cost, easy to test new products, low barrier to entry.","bulk-purchase-best-for-validating-demand-before-investing":"Best for validating demand before investing. You collect orders in advance and fulfill them once you hit a certain quantity or delivery timeline.","bulk-purchase-best-for-validating-demand-before-investing--plural":"Best for validating demand before investing. You collect orders in advance and fulfill them once you hit a certain quantity or delivery timeline.","bulk-purchase-all-in-one-dropshipping-solution-provider":"All-in-one dropshipping solution provider: product supplies, global logistics, free sourcing, POD, video shooting, and other dropshipping-related services.","bulk-purchase-all-in-one-dropshipping-solution-provider--plural":"All-in-one dropshipping solution provider: product supplies, global logistics, free sourcing, POD, video shooting, and other dropshipping-related services.","bulk-purchase-top-bulk-purchase-products":"Top Bulk Purchase Products","bulk-purchase-top-bulk-purchase-products--plural":"Top Bulk Purchase Products","bulk-purchase-try-cjdropshipping-free":"Try CJdropshipping Free","bulk-purchase-try-cjdropshipping-free--plural":"Try CJdropshipping Free","bulk-purchase-how-bulk-purchasing-works-in-3-steps":"How Bulk Purchasing Works in 3 Steps","bulk-purchase-how-bulk-purchasing-works-in-3-steps--plural":"How Bulk Purchasing Works in 3 Steps","bulk-purchase-learn-more":"Learn More","bulk-purchase-learn-more--plural":"Learn More","bulk-purchase-start-your-bulk-order-today-with-cjdropshipping":"Start Your Bulk Order Today with CJdropshipping","bulk-purchase-start-your-bulk-order-today-with-cjdropshipping--plural":"Start Your Bulk Order Today with CJdropshipping","bulk-purchase-longer-wait-times-for-customers-requires-clear-communication-to-manage-expectations":"Longer wait times for customers, requires clear communication to manage expectations.","bulk-purchase-longer-wait-times-for-customers-requires-clear-communication-to-manage-expectations--plural":"Longer wait times for customers, requires clear communication to manage expectations.","bulk-purchase-bulk-purchase-with-cjdropshipping":"Bulk Purchase with CJdropshipping","bulk-purchase-bulk-purchase-with-cjdropshipping--plural":"Bulk Purchase with CJdropshipping","bulk-purchase-no-inventory-waste-great-for-limited-edition-or-seasonal-products-cash-flow-friendly":"No inventory waste, great for limited-edition or seasonal products, cash flow-friendly.","bulk-purchase-no-inventory-waste-great-for-limited-edition-or-seasonal-products-cash-flow-friendly--plural":"No inventory waste, great for limited-edition or seasonal products, cash flow-friendly.","bulk-purchase-higher-upfront-investment-risk-of-unsold-stock-storage-costs":"Higher upfront investment, risk of unsold stock, storage costs.","bulk-purchase-higher-upfront-investment-risk-of-unsold-stock-storage-costs--plural":"Higher upfront investment, risk of unsold stock, storage costs.","bulk-purchase-
31657add-to-cart-manage-quantities-text":"Select product variants and add to your wholesale cart. Facing high MOQ? Use the \'Sample\' option to order quantities below the minimum. Pro Tip: Combine multiple SKUs in one cart to save shipping costs.","bulk-purchase-add-to-cart-manage-quantities-text--plural":"Select product variants and add to your wholesale cart. Facing high MOQ? Use the \'Sample\' option to order quantities below the minimum. Pro Tip: Combine multiple SKUs in one cart to save shipping costs.","bulk-purchase-start-your-bulk-order":"Start Your Bulk Order","bulk-purchase-start-your-bulk-order--plural":"Start Your Bulk Order","bulk-purchase-submit-order-we-handle-the-rest-text":"In your Cart-Wholesale/Sample, review items and submit. Shipping to EU? Activate the IOSS tax declaration in My CJ > Profile > Declaration Settings to avoid customs delays.","bulk-purchase-submit-order-we-handle-the-rest-text--plural":"In your Cart-Wholesale/Sample, review items and submit. Shipping to EU? Activate the IOSS tax declaration in My CJ > Profile > Declaration Settings to avoid customs delays.","bulk-purchase-faq-5-question":"What are the benefits of using CJdropshipping for bulk purchasing?","bulk-purchase-faq-5-question--plural":"What are the benefits of using CJdropshipping for bulk purchasing?","bulk-purchase-faq-4-question":"Can I place bulk orders through CJdropshipping?","bulk-purchase-faq-4-question--plural":"Can I place bulk orders through CJdropshipping?","bulk-purchase-get-help-now":"Get Help Now","bulk-purchase-get-help-now--plural":"Get Help Now","bulk-purchase-flexible-mos-text":"Perfect for startups and established brands alike, our flexible minimum order quantities (MOQs) let you test products risk-free. Need custom packaging or private labeling? We handle everything from logo printing to eco-friendly materials, even for small batches.","bulk-purchase-flexible-mos-text--plural":"Perfect for startups and established brands alike, our flexible minimum order quantities (MOQs) let you test products risk-free. Need custom packaging or private labeling? We handle everything from logo printing to eco-friendly materials, even for small batches.","bulk-purchase-factory-direct-pricing":"Factory Direct Pricing","bulk-purchase-factory-direct-pricing--plural":"Factory Direct Pricing","bulk-purchase-flexible-mos":"Flexible MOQs","bulk-purchase-flexible-mos--plural":"Flexible MOQs","bulk-purchase-faq-3-question":"What are the advantages of using bulk purchase services in dropshipping?","bulk-purchase-faq-3-question--plural":"What are the advantages of using bulk purchase services in dropshipping?","bulk-purchase-faq-1-answer":"Bulk purchasing involves buying large quantities of products at once, often at discounted rates, to fulfill orders in a dropshipping business.","bulk-purchase-faq-1-answer--plural":"Bulk purchasing involves buying large quantities of products at once, often at discounted rates, to fulfill orders in a dropshipping business.","bulk-purchase-faq-1-question":"What is bulk purchasing in the context of dropshipping?","bulk-purchase-faq-1-question--plural":"What is bulk purchasing in the context of dropshipping?","bulk-purchase-faq-5-answer":"With CJdropshipping, you get access to competitive pricing, quality inspection, warehouse storage (both in China and overseas), and even private labeling or custom packaging optionsâall from one platform. It\'s a one-stop solution for scaling your dropshipping business.","bulk-purchase-faq-5-answer--plural":"With CJdropshipping, you get access to competitive pricing, quality inspection, warehouse storage (both in China and overseas), and even private labeling or custom packaging optionsâall from one platform. It\'s a one-stop solution for scaling your dropshipping business.","bulk-purchase-fast-global-shipping":"Fast Global Shipping","bulk-purchase-fast-global-shipping--plural":"Fast Global Shipping","bulk-purchase-see-whats-trending":"See What\'s Trending","bulk-purchase-see-whats-trending--plural":"See What\'s Trending","bulk-purchase-trusted-e-commerce-stores":"Trusted E-commerce Stores","bulk-purchase-trusted-e-commerce-stores--plural":"Trusted E-commerce Stores","bulk-purchase-
31657add-to-cart-manage-quantities":"Add to Cart & Manage Quantities","bulk-purchase-add-to-cart-manage-quantities--plural":"Add to Cart & Manage Quantities","bulk-purchase-faq-2-question":"How does bulk purchasing differ from traditional dropshipping?","bulk-purchase-faq-2-question--plural":"How does bulk purchasing differ from traditional dropshipping?","bulk-purchase-cooperated-factories":"Cooperated Factories","bulk-purchase-fast-global-shipping-text":"Skip slow ocean freight â our strategically located warehouses in the USA, Europe, and Australia etc. ensure your bulk orders arrive within a week at their fastest. We work with reliable logistics partners to minimize delays, so you can restock faster and sell sooner.","bulk-purchase-fast-global-shipping-text--plural":"Skip slow ocean freight â our strategically located warehouses in the USA, Europe, and Australia etc. ensure your bulk orders arrive within a week at their fastest. We work with reliable logistics partners to minimize delays, so you can restock faster and sell sooner.","bulk-purchase-step":"Step","bulk-purchase-step--plural":"Step","bulk-purchase-faq-2-answer":"In traditional dropshipping, products are purchased individually from suppliers as orders come in. Bulk purchasing entails buying large quantities upfront, which can reduce per-unit costs.","bulk-purchase-faq-2-answer--plural":"In traditional dropshipping, products are purchased individually from suppliers as orders come in. Bulk purchasing entails buying large quantities upfront, which can reduce per-unit costs.","bulk-purchase-faq-4-answer":"Yes! CJdropshipping supports bulk purchases for sellers who want to buy products in larger quantities. You can place a bulk order directly through the CJ dashboard or contact your dedicated agent for personalized service and factory-direct pricing.","bulk-purchase-faq-4-answer--plural":"Yes! CJdropshipping supports bulk purchases for sellers who want to buy products in larger quantities. You can place a bulk order directly through the CJ dashboard or contact your dedicated agent for personalized service and factory-direct pricing.","bulk-purchase-submit-order-we-handle-the-rest":"Submit Order & We Handle the Rest","bulk-purchase-submit-order-we-handle-the-rest--plural":"Submit Order & We Handle the Rest","bulk-purchase-partner-couriers-worldwide":"Partner Couriers Worldwide","bulk-purchase-find-products-check-wholesale-prices-text":"Browse CJdropshipping\'s catalog and click the \'Product-Wholesale\' button to view real-time bulk pricing. If a product lacks wholesale options, click \'Buy Sample\' on the dropshipping page to test demand risk-free.","bulk-purchase-find-products-check-wholesale-prices-text--plural":"Browse CJdropshipping\'s catalog and click the \'Product-Wholesale\' button to view real-time bulk pricing. If a product lacks wholesale options, click \'Buy Sample\' on the dropshipping page to test demand risk-free.","bulk-purchase-global-warehouses":"Global Warehouses","bulk-purchase-faq-3-answer":"Bulk purchasing allows dropshippers to buy products in larger quantities at discounted rates, leading to higher profit margins. It also enables better control over inventory, faster shipping times, and the opportunity for product customization and branding.","bulk-purchase-faq-3-answer--plural":"Bulk purchasing allows dropshippers to buy products in larger quantities at discounted rates, leading to higher profit margins. It also enables better control over inventory, faster shipping times, and the opportunity for product customization and branding.","bulk-purchase-find-products-check-wholesale-prices":"Find Products & Check Wholesale Prices","bulk-purchase-find-products-check-wholesale-prices--plural":"Find Products & Check Wholesale Prices","bulk-purchase-factory-direct-pricing-text":"Our direct partnerships with global manufacturers ensure you get the lowest possible pricing â save up to 30% compared to traditional wholesale platforms like Alibaba. Whether you need electronics, home goods, or seasonal products, we negotiate bulk discounts on your behalf.","bulk-purchase-factory-direct-pricing-text--plural":"Our direct partnerships with global manufacturers ensure you get the lowest possible pricing â save up to 30% compared to traditional wholesale platforms like Alibaba. Whether you need electronics, home goods, or seasonal products, we negotiate bulk discounts on your behalf.","bulk-purchase-why-cjdropshipping-for-bulk-purchases":"Why CJdropshipping for Bulk Purchases?","bulk-purchase-why-cjdropshipping-for-bulk-purchases--plural":"Why CJdropshipping for Bulk Purchases?","bulk-purchase-perfect-for-beginners-or-low-risk-testing":"Perfect for beginners or low-risk testing. You sell products without holding inventoryâyour supplier ships directly to your customer.","bulk-purchase-perfect-for-beginners-or-low-risk-testing--plural":"Perfect for beginners or low-risk testing. You sell products without holding inventoryâyour supplier ships directly to your customer.","bulk-purchase-bulk-purchase-vs-dropshipping-vs-preorder-inventory-which-is-right-for-you-text":"Ideal if you want full control over your stock and higher profit margins. You buy products in large quantities upfrontâoften at a lower unit costâand store them yourself or through a warehouse.","bulk-purchase-bulk-purchase-vs-dropshipping-vs-preorder-inventory-which-is-right-for-you-text--plural":"Ideal if you want full control over your stock and higher profit margins. You buy products in large quantities upfrontâoften at a lower unit costâand store them yourself or through a warehouse.","product-place-an-order":"View Detail","product-place-an-order--plural":"View Detail","wallet-order-id":"Transaction ID","wallet-order-id--plural":"Transaction ID","wallet-order-transaction-id-error-tips":"Number of order numbers exceeds the limit","wallet-order-transaction-id-error-tips--plural":"Number of order numbers exceeds the limit","wallet-order-type":"Order type:","wallet-order-type--plural":"Order type:","wallet-order-transaction-id-placeholder":"You can enter up to 30 order numbers, separated by \\",\\".","wallet-order-transaction-id-placeholder--plural":"You can enter up to 30 order numbers, separated by \\",\\".","loancredit-submit-application-documents":"Submit Application Documents","loancredit-submit-application-documents--plural":"Submit Application Documents","loancredit-sign-an-agreement":"Sign an Agreement","loancredit-sign-an-agreement--plural":"Sign an Agreement","loancredit-sign-an-agreement-desc":"After the review is passed, an online confirmation agreement will be generated, and the credit can be released after confirmation.","loancredit-sign-an-agreement-desc--plural":"After the review is passed, an online confirmation agreement will be generated, and the credit can be released after confirmation.","loancredit-the-credit-support-program-contains-the-following-elements":"The Credit Support Program Contains the Following Elements","loancredit-the-credit-support-program-contains-the-following-elements--plural":"The Credit Support Program Contains the Following Elements","loancredit-documents-review-desc":"The result will be issued within 5 to 7 business days after receipt of the application.","loancredit-documents-review-desc--plural":"The result will be issued within 5 to 7 business days after receipt of the application.","loancredit-submit-application-documents-desc":"Including company name, address, legal person, email, phone number and application amount.","loancredit-submit-application-documents-desc--plural":"Including company name, address, legal person, email, phone number and application amount.","loancredit-submit":"Submit","loancredit-short-term-credit-support-for-company-with-good-reputation":"Short-Term Credit Support for Company with Good Reputation","loancredit-short-term-credit-support-for-company-with-good-reputation--plural":"Short-Term Credit Support for Company with Good Reputation","loancredit-documents-review":"Documents Review","loancredit-documents-review--plural":"Documents Review","loancredit-application-process":"Application Process","loancredit-application-process--plural":"Application Process","loancredit-use-of-credits-detail-list-1":"The credits cannot be withdrawn","loancredit-use-of-credits-detail-list-1--plural":"The credits cannot be withdrawn","loancredit-use-of-credits-detail-list-2":"The credits cannot be used to pay for anything other than CJ fees","loancredit-use-of-credits-detail-list-2--plural":"The credits cannot be used to pay for anything other than CJ fees","loancredit-use-of-credits-first-content":"The credits are limited to use in the CJ system to pay for your store orders or purchases of private inventory.","loancredit-use-of-credits-first-content--plural":"The credits are limited to use in the CJ system to pay for your store orders or purchases of private inventory.","loancredit-use-of-credits":"Use of Credits","loancredit-use-of-credits--plural":"Use of Credits","loancredit-amount-of-credits-detail-list-3":"Cash flow situation","loancredit-amount-of-credits-detail-list-3--plural":"Cash flow situation","loancredit-amount-of-credits-detail-list-2":"Based on your company\'s scale of operations","loancredit-amount-of-credits-detail-list-2--plural":"Based on your company\'s scale of operations","loancredit-amount-of-credits-detail-list-1":"Companies that have been established for more than one year and have an authorized bank","loancredit-amount-of-credits-detail-list-1--plural":"Companies that have been established for more than one year and have an authorized bank","loancredit-amount-of-credits-detail-list-4":"Other factors","loancredit-amount-of-credits-detail-list-4--plural":"Other factors","loancredit-amount-of-credits-second-content":"We will determine the amount of short-term credits that will be granted to your company for one week to one month\'s worth of purchases at CJ.","loancredit-amount-of-credits-second-content--plural":"We will determine the amount of short-term credits that will be granted to your company for one week to one month\'s worth of purchases at CJ.","loancredit-amount-of-credits-first-content":"The amount will be based on a comprehensive judgment of your company\'s credit assessment, repayment ability, credit needs, and the number of fulfilled orders at CJdropshipping (hereinafter referred to as CJ).","loancredit-amount-of-credits-first-content--plural":"The amount will be based on a comprehensive judgment of your company\'s credit assessment, repayment ability, credit needs, and the number of fulfilled orders at CJdropshipping (hereinafter referred to as CJ).","loancredit-amount-of-credits":"Amount of Credits","loancredit-amount-of-credits--plural":"Amount of Credits","loancredit-credit-evaluation-criteria-first-content":"The main factors used to assess your company\'s credit.","loancredit-credit-evaluation-criteria-first-content--plural":"The main factors used to assess your company\'s credit.","loancredit-credit-evaluation-criteria-detail-list-3":"Income stability","loancredit-credit-evaluation-criteria-detail-list-3--plural":"Income stability","loancredit-credit-evaluation-criteria-detail-list-4":"Assets and liabilities status, etc","loancredit-credit-evaluation-criteria-detail-list-4--plural":"Assets and liabilities status, etc","loancredit-credit-evaluation-criteria-detail-list-1":"Such as your company\'s credit history","loancredit-credit-evaluation-criteria-detail-list-1--plural":"Such as your company\'s credit history","loancredit-credit-evaluation-criteria-detail-list-2":"Whether there is any overdue record, etc","loancredit-credit-evaluation-criteria-detail-list-2--plural":"Whether there is any overdue record, etc","loancredit-repayment-methods-detail-list-2":"If you use credit card or paypal to repay, you need to pay an additional 3% payment handling fee","loancredit-repayment-methods-detail-list-2--plural":"If you use credit card or paypal to repay, you need to pay an additional 3% payment handling fee","loancredit-repayment-methods-detail-list-1":"Repayment is limited to bank transfer only","loancredit-repayment-methods-detail-list-1--plural":"Repayment is limited to bank transfer only","loancredit-rate-and-fees":"Rate and Fees","loancredit-rate-and-fees--plural":"Rate and Fees","loancredit-rate-and-fees-detail-list-2":"Due to a series of auditing and operational work involved, an additional 1% handling fee of the credit amount is required","loancredit-rate-and-fees-detail-list-2--plural":"Due to a series of auditing and operational work involved, an additional 1% handling fee of the credit amount is required","loancredit-rate-and-fees-detail-list-1":"CJ provides interest-free credits","loancredit-rate-and-fees-detail-list-1--plural":"CJ provides interest-free credits","loancredit-repayment-methods":"Repayment Methods","loancredit-repayment-methods--plural":"Repayment Methods","loancredit-credit-evaluation-criteria":"Credit Evaluation Criteria","loancredit-credit-evaluation-criteria--plural":"Credit Evaluation Criteria","loancredit-credit-period":"Credit Perio
31657d","loancredit-credit-period--plural":"Credit Period","loancredit-repayment-methods-first-content":"According to the due date of each payment, a one-time repayment of the principal, as well as the handling fee, delayed repayment, will affect your credit, and you will not be able to apply for further credits.","loancredit-repayment-methods-first-content--plural":"According to the due date of each payment, a one-time repayment of the principal, as well as the handling fee, delayed repayment, will affect your credit, and you will not be able to apply for further credits.","loancredit-credit-period-detail-list-2":"While the maximum period for payment of private inventory and bulk orders shall not exceed 75 days","loancredit-credit-period-detail-list-2--plural":"While the maximum period for payment of private inventory and bulk orders shall not exceed 75 days","loancredit-credit-period-detail-list-1":"The maximum period for payment of dropship orders shall not exceed 7 days ","loancredit-credit-period-detail-list-1--plural":"The maximum period for payment of dropship orders shall not exceed 7 days ","loancredit-credit-period-first-content":"There are different terms depending on the purpose of the credit. ","loancredit-credit-period-first-content--plural":"There are different terms depending on the purpose of the credit. ","loancredit-rate-and-fees-first-content":"This program is designed to help your company\'s development.","loancredit-rate-and-fees-first-content--plural":"This program is designed to help your company\'s development.","common-mycj-menu-temu-cooperative-warehouse":"Cooperative Warehouse","common-mycj-menu-temu-cooperative-warehouse--plural":"Cooperative Warehouse","common-mycj-menu-temu-certified-overseas":"Temu Cooperative Warehouse","common-mycj-menu-temu-certified-overseas--plural":"Temu Cooperative Warehouse","common-mycj-menu-added-products":"Added Products","common-mycj-menu-added-products--plural":"Added Products","common-mycj-menu-community":"Community","common-mycj-menu-community--plural":"Community","common-mycj-menu-brands":"Brands","common-mycj-menu-brands--plural":"Brands","common-mycj-menu-source":"Source","common-mycj-menu-elites":"Elites","paid-service-openings":"openings","paid-service-openings--plural":"openings","my-profile-shipping-new-from-all-logistics-speed":"Select the fastest available option from all shipping methods.","my-profile-shipping-new-from-all-logistics-speed--plural":"Select the fastest available option from all shipping methods.","my-profile-shipping-new-products-list-view":"Non-store products: Use the default shipping configuration in the My Products list. ","my-profile-shipping-new-products-list-view--plural":"Non-store products: Use the default shipping configuration in the My Products list. ","my-profile-shipping-new-non-store-products-use-the-default-shipping":"Non-store products: Use the default shipping configuration in the My Products list. ","my-profile-shipping-new-non-store-products-use-the-default-shipping--plural":"Non-store products: Use the default shipping configuration in the My Products list. ","my-profile-shipping-new-precedence-not-configured":"Precedence Not Configured","my-profile-shipping-new-precedence-not-configured--plural":"Precedence Not Configured","my-profile-shipping-new-store-products-use-the-default-shipping-configuration":"Store products: Use the default shipping configuration in the Store Products mapping list. ","my-profile-shipping-new-store-products-use-the-default-shipping-configuration--plural":"Store products: Use the default shipping configuration in the Store Products mapping list. ","my-profile-shipping-new-store-products-list-view":"Store products: Use the default shipping configuration in the Store Products list. ","my-profile-shipping-new-store-products-list-view--plural":"Store products: Use the default shipping configuration in the Store Products list. ","my-profile-shipping-order-fastest":"Fastest Delivery","my-profile-shipping-order-fastest--plural":"Fastest Delivery","my-profile-shipping-order-lowest-cost":"Lowest Cost","my-profile-shipping-order-lowest-cost--plural":"Lowest Cost","my-profile-shipping-new-all-default-shipping-rules-have-been-added":"All default shipping rules have been added, no default shipping rules can be added.","my-profile-shipping-new-all-default-shipping-rules-have-been-added--plural":"All default shipping rules have been added, no default shipping rules can be added.","my-profile-shipping-new-the-system-will-automatically":"The system will automatically select default shipping based on product-level configuration:","my-profile-shipping-new-the-system-will-automatically--plural":"The system will automatically select default shipping based on product-level configuration:","my-profile-shipping-new-delete-logistics":"Are you sure you want to delete this default shipping method?","my-profile-shipping-new-delete-logistics--plural":"Are you sure you want to delete this default shipping method?","my-profile-shipping-new-precedence-configured":"Precedence Configured","my-profile-shipping-new-precedence-configured--plural":"Precedence Configured","my-profile-shipping-new-from-optimized-shipping":"Select the lowest-cost available option from optimized shipping (Cost Priority).","my-profile-shipping-new-from-optimized-shipping--plural":"Select the lowest-cost available option from optimized shipping (Cost Priority).","my-profile-shipping-new-to-learn":"To learn how to configure default shipping methods, ","my-profile-shipping-new-to-learn--plural":"To learn how to configure default shipping methods, ","my-profile-shipping-new-from-custom-logistics-speed":"Select the fastest available option from the custom shipping scope.","my-profile-shipping-new-from-custom-logistics-speed--plural":"Select the fastest available option from the custom shipping scope.","my-profile-shipping-receiving-country":"Destination Country/Region","my-profile-shipping-receiving-country--plural":"Destination Country/Region","my-profile-shipping-new-shipping-methods-yet":"You havenât set the precedence for default shipping methods yet.","my-profile-shipping-new-shipping-methods-yet--plural":"You havenât set the precedence for default shipping methods yet.","my-profile-shipping-new-non-store-products-use-the-default-shipping-configuration":"For non-store products, use the default shipping configuration from the My Products list. ","my-profile-shipping-new-non-store-products-use-the-default-shipping-configuration--plural":"For non-store products, use the default shipping configuration from the My Products list. ","my-profile-shipping-new--level-default-shipping-configuration":"The system will automatically select the default shipping method based on the product-level default shipping configuration.","my-profile-shipping-new--level-default-shipping-configuration--plural":"The system will automatically select the default shipping method based on the product-level default shipping configuration.","my-profile-shipping-new-view":"View >","my-profile-shipping-new-view--plural":"View >","my-profile-shipping-new-use-the-default-shipping-configuration-from-the-store":"Use the default shipping configuration from the Store Products mapping list.","my-profile-shipping-new-use-the-default-shipping-configuration-from-the-store--plural":"Use the default shipping configuration from the Store Products mapping list.","my-profile-shipping-new-from-custom-logistics-rec
31657ommend":"Select the available option with the highest precedence from the custom shipping scope.","my-profile-shipping-new-from-custom-logistics-recommend--plural":"Select the available option with the highest precedence from the custom shipping scope.","my-profile-shipping-new-from-optimized-shipping-speed":"Select the fastest available option from optimized shipping (Speed Priority).","my-profile-shipping-new-from-optimized-shipping-speed--plural":"Select the fastest available option from optimized shipping (Speed Priority).","my-profile-shipping-new-deleting-failed":"Deleting Failed","my-profile-shipping-new-from-optimized-shipping-recommend":"Select the available option with the highest precedence from optimized shipping (Recommended).","my-profile-shipping-new-from-optimized-shipping-recommend--plural":"Select the available option with the highest precedence from optimized shipping (Recommended).","my-profile-shipping-new-overview":"Overview","my-profile-shipping-new-the-system-will-validate-rules":"The system will validate rules in your precedence order. Once a rule matches an available default shipping method, the result is finalized and subsequent rules will not be checked.","my-profile-shipping-new-the-system-will-validate-rules--plural":"The system will validate rules in your precedence order. Once a rule matches an available default shipping method, the result is finalized and subsequent rules will not be checked.","my-profile-shipping-new-when-multiple-pcs-quoted-logistics-exist":"If PCS quoted-rate shipping options are available for the order, the system will prioritize them. ","my-profile-shipping-new-when-multiple-pcs-quoted-logistics-exist--plural":"If PCS quoted-rate shipping options are available for the order, the system will prioritize them. ","my-profile-shipping-new-from-custom-logistics":"Select the lowest-cost available option from the custom shipping scope.","my-profile-shipping-new-from-custom-logistics--plural":"Select the lowest-cost available option from the custom shipping scope.","my-profile-shipping-new-deleted-successfully":"Deleted Successfully","my-profile-shipping-new-when-multiple-pcs-quoted-logistics-exist-tip":"If multiple PCS quoted-rate options are available, the system will automatically select the best option in the following order: âLowest Cost â Fastest Delivery â Randomâ.","my-profile-shipping-new-when-multiple-pcs-quoted-logistics-exist-tip--plural":"If multiple PCS quoted-rate options are available, the system will automatically select the best option in the following order: âLowest Cost â Fastest Delivery â Randomâ.","my-profile-shipping-new-the-system-will-automatically-select":"The system will automatically select the default shipping method for orders based on your configured default shipping methods and their precedence.","my-profile-shipping-new-the-system-will-automatically-select--plural":"The system will automatically select the default shipping method for orders based on your configured default shipping methods and their precedence.","my-profile-shipping-pcs-price-shipping-method":"PCS Quoted Rates","my-profile-shipping-pcs-price-shipping-method--plural":"PCS Quoted Rates","my-profile-shipping-new-precedence":"Precedence","my-profile-shipping-new-default-shipping-rule":"Default Shipping Rule","my-profile-shipping-new-default-shipping-rule--plural":"Default Shipping Rule","my-profile-shipping-new-select-the-store-platform-to-view":"Select a store platform to view >","my-profile-shipping-new-select-the-store-platform-to-view--plural":"Select a store platform to view >","my-profile-shipping-new-please-view-the-guide":"please view the guide >","my-profile-shipping-new-please-view-the-guide--plural":"please view the guide >","my-profile-shipping-new-from-all-logistics":"Select the lowest-cost available option from all shipping methods.","my-profile-shipping-new-from-all-logistics--plural":"Select the lowest-cost available option from all shipping methods.","my-profile-shipping-new-fastest-delivery-tip":"The system will prioritize the option with the fastest delivery time. If there are still multiple matches, the system will randomly select one.","my-profile-shipping-new-fastest-delivery-tip--plural":"The system will prioritize the option with the fastest delivery time. If there are still multiple matches, the system will randomly select one.","my-profile-shipping-new-lowest-cost-tip":"If multiple options share the lowest cost, compare delivery time next. The system will prioritize the option with the lowest cost and the fastest delivery time. If there are still multiple matches, the system will randomly select one.","my-profile-shipping-new-lowest-cost-tip--plural":"If multiple options share the lowest cost, compare delivery time next. The system will prioritize the option with the lowest cost and the fastest delivery time. If there are still multiple matches, the system will randomly select one.","my-profile-shipping-new-shipping-range":"Shipping Range","my-profile-shipping-new-shipping-range--plural":"Shipping Range","my-profile-common-shipping-6th":"6th","my-profile-common-shipping-6th--plural":"6th","my-profile-shipping-new-comprehe
31657nsive-recommendation":"Balance of Cost & Speed","my-profile-shipping-new-time-priority-tip":"These are speed-priority shipping methods recommended based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-time-priority-tip--plural":"These are speed-priority shipping methods recommended based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-enter-destination-country-region":"Enter destination country/region.","my-profile-shipping-new-enter-destination-country-region--plural":"Enter destination country/region.","my-profile-shipping-new-default-shipping-methods":"Default Shipping Methods","my-profile-shipping-new-default-shipping-methods--plural":"Default Shipping Methods","my-profile-shipping-new-logistics-options":"Shipping Methods","my-profile-shipping-new-logistics-options--plural":"Shipping Methods","shipping-add-saved-successfully":"Saved Successfully","shipping-add-please-complete-and-save-the-required":"Please complete and save the required information before saving.","shipping-add-please-complete-and-save-the-required--plural":"Please complete and save the required information before saving.","my-profile-shipping-new-cost-priority":"Cost Priority","my-profile-shipping-new-cost-priority--plural":"Cost Priority","my-profile-shipping-new-destination-country":"Destination Country/Region","my-profile-shipping-new-destination-country--plural":"Destination Country/Region","my-profile-shipping-new-clear":"Clear","shipping-add-please-select-the-dimension":"Please select a default shipping method.","shipping-add-please-select-the-dimension--plural":"Please select a default shipping method.","my-profile-shipping-new-product-logistics-attributes":"Shipping Attributes","my-profile-shipping-new-product-logistics-attributes--plural":"Shipping Attributes","my-profile-shipping-new-custom-shipping-methods-detail-set-tip":"detail rows have been set. Note: If you switch to another shipping selection scope and click âSaveâ, these custom settings will be cleared and must be set again next time.","my-profile-shipping-new-custom-shipping-methods-detail-set-tip--plural":"detail rows have been set. Note: If you switch to another shipping selection scope and click âSaveâ, these custom settings will be cleared and must be set again next time.","my-profile-shipping-new-select-logistics-attributes":"Select logistics attributes.","my-profile-shipping-new-select-logistics-attributes--plural":"Select logistics attributes.","my-profile-shipping-new-logistics-system-recommend":"Optimized Shipping","my-profile-shipping-new-logistics-system-recommend--plural":"Optimized Shipping","my-profile-shipping-new-time-priority":"Speed Priority","my-profile-shipping-new-time-priority--plural":"Speed Priority","shipping-edit-default-shipping-method":"Edit Default Shipping Method","shipping-edit-default-shipping-method--plural":"Edit Default Shipping Method","shipping-add-default-shipping-method":"Add Default Shipping Method","shipping-add-default-shipping-method--plural":"Add Default Shipping Method","my-profile-shipping-new-cost-priority-tip":"These are cost-priority shipping methods recommended based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-cost-priority-tip--plural":"These are cost-priority shipping methods recommended based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-you-can-set-5":"You can set up to 5 custom shipping methods.","my-profile-shipping-new-you-can-set-5--plural":"You can set up to 5 custom shipping methods.","my-profile-shipping-new-search":"Search","my-profile-shipping-new-shipping-selection-scope":"Shipping Selection Scope","my-profile-shipping-new-shipping-selection-scope--plural":"Shipping Selection Scope","my-profile-shipping-new-custom-shipping-methods-detail-set":"detail rows set.","my-profile-shipping-new-custom-shipping-methods-detail-set--plural":"detail rows set.","shipping-new-add-select-the-logistics":"Please select a shipping method.","shipping-new-add-select-the-logistics--plural":"Please select a shipping method.","my-profile-shipping-new-comprehe
31657nsive-recommendation-tip":"These are recommended shipping methods based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-comprehensive-recommendation-tip--plural":"These are recommended shipping methods based on the destination country/region and the productâs shipping attributes.","my-profile-shipping-new-custom-shipping-methods-set":"custom shipping methods set.","my-profile-shipping-new-custom-shipping-methods-set--plural":"custom shipping methods set.","my-profile-shipping-new-select-logistics-options":"Please select a shipping method.","my-profile-shipping-new-select-logistics-options--plural":"Please select a shipping method.","my-profile-shipping-new-custom-shipping-methods-set-tip":"shipping methods have been set. Note: If you switch to another shipping selection scope and click âSaveâ, these custom settings will be cleared and must be set again next time.","my-profile-shipping-new-custom-shipping-methods-set-tip--plural":"shipping methods have been set. Note: If you switch to another shipping selection scope and click âSaveâ, these custom settings will be cleared and must be set again next time.","my-profile-shipping-new-store-products-use-the-default-shipping-configuration2":"Store Products: Using default shipping configuration from the connection list.","my-profile-shipping-new-store-products-use-the-default-shipping-configuration2--plural":"Store Products: Using default shipping configuration from the connection list.","my-profile-shipping-new-are-you-sure-you-want-to-delete-this-line-item":"Are you sure you want to delete this line item?","my-profile-shipping-new-are-you-sure-you-want-to-delete-this-line-item--plural":"Are you sure you want to delete this line item?","my-profile-shipping-new-non-store-products-use-the-default-shipping2":"Non-store products: Use the default shipping configuration in the Added Products list.","my-profile-shipping-new-non-store-products-use-the-default-shipping2--plural":"Non-store products: Use the default shipping configuration in the Added Products list.","my-profile-shipping-new-products-list-view2":"Non-store products: Use the default shipping configuration in the Added Products list.","my-profile-shipping-new-products-list-view2--plural":"Non-store products: Use the default shipping configuration in the Added Products list.","my-profile-shipping-new-non-store-products-use-the-default-shipping-configuration2":"For non-store products, use the default shipping configuration from the Added Products list.","my-profile-shipping-new-non-store-products-use-the-default-shipping-configuration2--plural":"For non-store products, use the default shipping configuration from the Added Products list.","paid-service-professional-service":"Professional Service","paid-service-professional-service--plural":"Professional Service","paid-service-time-limited-free":"Time-limited Free","paid-service-time-limited-free--plural":"Time-limited Free","common-mycj-menu-smart-website-builder":"Smart Website Builder","common-mycj-menu-smart-website-builder--plural":"Smart Website Builder","common-mycj-menu-all":"All","common-mycj-menu-others-a":"Others","common-mycj-menu-uninstalled-successfully":"Uninstalled Successfully","common-mycj-menu-uninstalled-successfully--plural":"Uninstalled Successfully","common-mycj-menu-installed":"Installed","common-mycj-menu-installed--plural":"Installed","common-mycj-menu-erp-platform":"ERP Platform","common-mycj-menu-erp-platform--plural":"ERP Platform","common-mycj-menu-installed-successfully":"Installed Successfully","common-mycj-menu-cross-border-ecommerce-platform":"Cross-Border E-commerce Platform","common-mycj-menu-cross-border-ecommerce-platform--plural":"Cross-Border E-commerce Platform","common-mycj-menu-authorization-module-upgraded-desc":"The access path has been updated, and all original features and management services are retained and optimized.","common-mycj-menu-authorization-module-upgraded-desc--plural":"The access path has been updated, and all original features and management services are retained and optimized.","common-mycj-menu-cancel":"Cancel","common-mycj-menu-notice":"Notice","common-mycj-menu-notice--plural":"Notice","common-mycj-menu-notice-content2":"This app will be removed from the Apps menu. You can reinstall it from the App Store at any time.","common-mycj-menu-notice-content2--plural":"This app will be removed from the Apps menu. You can reinstall it from the App Store at any time.","common-mycj-menu-confirm":"Confirm","common-mycj-menu-notice-content":"Are you sure you want to uninstall {{deletePlatformName}} App?","common-mycj-menu-notice-content--plural":"Are you sure you want to uninstall {{deletePlatformName}} App?","common-mycj-menu-update-notice":"Update Notice","common-mycj-menu-update-notice--plural":"Update Notice","common-mycj-menu-app-store":"App Store","common-mycj-menu-app-store--plural":"App Store","common-mycj-menu-authorization-module-upgraded":"The original \\"Authorization\\" module has been fully upgraded to the new \\"Apps\\" module.","common-mycj-menu-authorization-module-upgraded--plural":"The original \\"Authorization\\" module has been fully upgraded to the new \\"Apps\\" module.","common-mycj-menu-got-it":"Got it","agents-product-development-ready-to-bring-your-product-idea-to-life":"Ready to Bring Your Product Idea to Life?","agents-product-development-ready-to-bring-your-product-idea-to-life--plural":"Ready to Bring Your Product Idea to Life?","agents-product-development-transparent-management-desc":"Dedicated PM with weekly progress reports + online tracking portal.","agents-product-development-transparent-management-desc--plural":"Dedicated PM with weekly progress reports + online tracking portal.","agents-product-development-risk-mitigation":"Risk Mitigation","agents-product-development-risk-mitigation--plural":"Risk Mitigation","agents-product-development-process-sample-prototyping":"Sample Prototyping","agents-product-development-process-sample-prototyping--plural":"Sample Prototyping","agents-product-development-process-quality-inspection":"Quality Inspection","agents-product-development-process-mass-production":"Mass Production","agents-product-development-process-mass-production--plural":"Mass Production","agents-product-development-process-factory-sourcing":"Factory Sourcing","agents-product-development-process-factory-sourcing--plural":"Factory Sourcing","agents-product-development-transparent-management":"Transparent Management","agents-product-development-transparent-management--plural":"Transparent Management","agents-product-development-risk-mitigation-desc":"Contract review + IP protection + backup supplier protocols.","agents-product-development-risk-mitigation-desc--plural":"Contract review + IP protection + backup supplier protocols.","agents-product-development-process-product-selection-strategy":"Product Selection Strategy","agents-product-development-process-product-selection-strategy--plural":"Product Selection Strategy","agents-product-development-process-small-batch-trial-production":"Small-Batch Trial Production","agents-product-development-process-small-batch-trial-production--plural":"Small-Batch Trial Production","agents-product-development-process-market-research":"Market Research","agents-product-development-process-market-research--plural":"Market Research","agents-product-development-process-brand-customization":"Brand Customization","agents-product-development-process-brand-customization--plural":"Brand Customization","agents-product-development-get-customized-strategy":"Get customized strategy","agents-product-development-get-customized-strategy--plural":"Get customized strategy","agents-product-development-define-requirements":"Define requirements","agents-product-development-define-requirements--plural":"Define requirements","agents-product-development-global-network":"Global Network","agents-product-development-global-network--plural":"Global Network","agents-product-development-global-network-desc":"Direct access to factories in China, Southeast Asia.","agents-product-development-global-network-desc--plural":"Direct access to factories in China, Southeast Asia.","agents-product-development-contact-supply-chain-exper":"Contact Supply Chain Exper","agents-product-development-contact-supply-chain-exper--plural":"Contact Supply Chain Exper","agents-cogs-reduction-product-packaging-content-desc":"Reduce packaging and freight costs without compromising protection.","agents-cogs-reduction-product-packaging-content-desc--plural":"Reduce packaging and freight costs without compromising protection.","agents-cogs-reduction-customized-sustainable-roadmap":"Customized, Sustainable Roadmap","agents-cogs-reduction-customized-sustainable-roadmap--plural":"Customized, Sustainable Roadmap","agents-cogs-reduction-why-cogs-reduction-matter-card-3"
31657:"Production inefficiencies and suboptimal yields raising indirect costs and eroding margins.","agents-cogs-reduction-why-cogs-reduction-matter-card-3--plural":"Production inefficiencies and suboptimal yields raising indirect costs and eroding margins.","agents-cogs-reduction-why-cogs-reduction-matter-card-2":"Insufficient supplier negotiation leverage due to reliance on limited sources and no market intelligence.","agents-cogs-reduction-why-cogs-reduction-matter-card-2--plural":"Insufficient supplier negotiation leverage due to reliance on limited sources and no market intelligence.","agents-cogs-reduction-why-cogs-reduction-matter-card-1":"Lack of clear cost breakdown across materials, labor, and logistics hindering targeted savings.","agents-cogs-reduction-why-cogs-reduction-matter-card-1--plural":"Lack of clear cost breakdown across materials, labor, and logistics hindering targeted savings.","agents-cogs-reduction-why-cogs-reduction-matter-card-4":"High inventory buffers and misaligned logistics strategies leading to escalating storage and transport expenses.","agents-cogs-reduction-why-cogs-reduction-matter-card-4--plural":"High inventory buffers and misaligned logistics strategies leading to escalating storage and transport expenses.","agents-cogs-reduction-deep-industry-market-expertise":"Deep Industry & Market Expertise","agents-cogs-reduction-deep-industry-market-expertise--plural":"Deep Industry & Market Expertise","agents-cogs-reduction-bulk-purchasing":"Bulk Purchasing","agents-cogs-reduction-bulk-purchasing--plural":"Bulk Purchasing","agents-cogs-reduction-faq-2-answer":"Noâour lean pack designs are pilot-tested for packing speed and drop-testing.","agents-cogs-reduction-faq-2-answer--plural":"Noâour lean pack designs are pilot-tested for packing speed and drop-testing.","agents-cogs-reduction-proven-track-record-roi-focus-desc":"Clients benefit from our track record of delivering 5â15% COGS reductions within 6â12 months, ensuring tangible bottom-line impact and quick payback.","agents-cogs-reduction-proven-track-record-roi-focus-desc--plural":"Clients benefit from our track record of delivering 5â15% COGS reductions within 6â12 months, ensuring tangible bottom-line impact and quick payback.","agents-cogs-reduction-ready-to-bring-your-product-idea-to-life":"Ready to Bring Your Product Idea to Life?","agents-cogs-reduction-ready-to-bring-your-product-idea-to-life--plural":"Ready to Bring Your Product Idea to Life?","agents-cogs-reduction-define-requirements":"Define requirements","agents-cogs-reduction-define-requirements--plural":"Define requirements","agents-cogs-reduction-robust-risk-mitigation-desc":"We build early-warning systems for price volatility, supply disruptions, and currency swingsâpaired with contingency planningâto keep your operations steady.","agents-cogs-reduction-robust-risk-mitigation-desc--plural":"We build early-warning systems for price volatility, supply disruptions, and currency swingsâpaired with contingency planningâto keep your operations steady.","agents-cogs-reduction-robust-risk-mitigation":"Robust Risk Mitigation","agents-cogs-reduction-robust-risk-mitigation--plural":"Robust Risk Mitigation","agents-cogs-reduction-contact-supply-chain-exper":"Contact Supply Chain Exper","agents-cogs-reduction-contact-supply-chain-exper--plural":"Contact Supply Chain Exper","agents-cogs-reduction-end-to-end-cost-transparency":"End-to-End Cost Transparency","agents-cogs-reduction-end-to-end-cost-transparency--plural":"End-to-End Cost Transparency","agents-cogs-reduction-get-customized-strategy":"Get customized strategy","agents-cogs-reduction-get-customized-strategy--plural":"Get customized strategy","agents-cogs-reduction-production-efficiency-yield-improvement-desc":"Through lean manufacturing audits and Six Sigma principles, we help you boost line throughput and product yieldâreducing scrap, rework, and indirect cost allocation.","agents-cogs-reduction-production-efficiency-yield-improvement-desc--plural":"Through lean manufacturing audits and Six Sigma principles, we help you boost line throughput and product yieldâreducing scrap, rework, and indirect cost allocation.","agents-cogs-reduction-proven-track-record-roi-focus":"Proven Track Record & ROI Focus","agents-cogs-reduction-proven-track-record-roi-focus--plural":"Proven Track Record & ROI Focus","agents-cogs-reduction-bulk-purchasing-content-desc":"Unlock the best unit prices by consolidating demand.","agents-cogs-reduction-bulk-purchasing-content-desc--plural":"Unlock the best unit prices by consolidating demand.","agents-cogs-reduction-faq-1-answer":"Typical savings range from 5â20% depending on your volumes and product complexity.","agents-cogs-reduction-faq-1-answer--plural":"Typical savings range from 5â20% depending on your volumes and product complexity.","agents-cogs-reduction-customized-sustainable-roadmap-desc":"Beyond one-off savings, we create a continuous improvement blueprintâcomplete with governance, KPIs, and change-management supportâto lock in lower COGS for the long term.","agents-cogs-reduction-customized-sustainable-roadmap-desc--plural":"Beyond one-off savings, we create a continuous improvement blueprintâcomplete with governance, KPIs, and change-management supportâto lock in lower COGS for the long term.","agents-cogs-reduction-faq-3-answer":"We use a total landed cost model factoring in unit price, shipping, duties, quality rejects, and inventory costs.","agents-cogs-reduction-faq-3-answer--plural":"We use a total landed cost model factoring in unit price, shipping, duties, quality rejects, and inventory costs.","agents-cogs-reduction-faq-5-answer":"Youâll typically see initial savings within 6â8 weeks of kick-off (after baseline audit and pilot roll-out).","agents-cogs-reduction-faq-5-answer--plural":"Youâll typically see initial savings within 6â8 weeks of kick-off (after baseline audit and pilot roll-out).","agents-cogs-reduction-product-packaging-content-title":"Product Packaging: Lightweight, material-saving designs","agents-cogs-reduction-product-packaging-content-title--plural":"Product Packaging: Lightweight, material-saving designs","agents-cogs-reduction-product-packaging":"Product Packaging","agents-cogs-reduction-product-packaging--plural":"Product Packaging","agents-cogs-reduction-deep-industry-market-expertise-desc":"Our team combines decades of sourcing, manufacturing, and finance experience with real-time market intelligence, ensuring you always negotiate from a position of strength.","agents-cogs-reduction-deep-industry-market-expertise-desc--plural":"Our team combines decades of sourcing, manufacturing, and finance experience with real-time market intelligence, ensuring you always negotiate from a position of strength.","agents-cogs-reduction-inventory-logistics-optimization-desc":"Our experts calibrate safety-stock levels, redesign your fulfillment network, and implement dynamic routing strategies to slash warehousing and freight expenses.","agents-cogs-reduction-inventory-logistics-optimization-desc--plural":"Our experts calibrate safety-stock levels, redesign your fulfillment network, and implement dynamic routing strategies to slash warehousing and freight expenses.","agents-cogs-reduction-bulk-purchasing-highlight":"Increasing MOQ from 1,000 to 5,000 units cut unit cost from $5.00 to $4.20, saving $24,000 annually.","agents-cogs-reduction-bulk-purchasing-highlight--plural":"Increasing MOQ from 1,000 to 5,000 units cut unit cost from $5.00 to $4.20, saving $24,000 annually.","agents-cogs-reduction-product-packaging-list-2":"Material substitution: switch to high-strength recycled or compostable materials","agents-cogs-reduction-product-packaging-list-2--plural":"Material substitution: switch to high-strength recycled or compostable materials","agents-cogs-reduction-product-packaging-list-3":"Standardization: unified box sizes and protective inserts for scale efficiencies","agents-cogs-reduction-product-packaging-list-3--plural":"Standardization: unified box sizes and protective inserts for scale efficiencies","agents-cogs-reduction-end-to-end-cost-transparency-desc":"We deliver a unified platform that breaks down every cost driverâfrom raw materials and labor to logisticsâso you can pinpoint savings opportunities with surgical precision.","agents-cogs-reduction-end-to-end-cost-transparency-desc--plural":"We deliver a unified platform that breaks down every cost driverâfrom raw materials and labor to logisticsâso you can pinpoint savings opportunities with surgical precision.","agents-cogs-reduction-product-packaging-list-1":"Structural optimization: simulation-driven thickness and strength analysis","agents-cogs-reduction-product-packaging-list-1--plural":"Structural optimization: simulation-driven thickness and strength analysis","agents-cogs-reduction-strategic-supplier-partnerships-desc":"Leveraging our global supplier network and competitive bidding processes, we secure best-in-class partners and drive down prices without compromising quality.","agents-cogs-reduction-strategic-supplier-partnerships-desc--plural":"Leveraging our global supplier network and competitive bidding processes, we secure best-in-class partners and drive down prices without compromising quality.","agents-cogs-reduction-faq-5":"Whatâs the timeline to see first cost reductions?","agents-cogs-reduction-faq-5--plural":"Whatâs the timeline to see first cost reductions?","agents-cogs-reduction-faq-4":"Can you help with warehousing in my target market?","agents-cogs-reduction-faq-4--plural":"Can you help with warehousing in my target market?","agents-cogs-reduction-faq-3":"How do you compare multiple suppliers fairly?","agents-cogs-reduction-faq-3--plural":"How do you compare multiple suppliers fairly?","agents-cogs-reduction-faq-2":"Will new packaging slow down my fulfillment?","agents-cogs-reduction-faq-2--plural":"Will new packaging slow down my fulfillment?","agents-cogs-reduction-product-packaging-highlight":"Replacing a 500 g corrugated box with a 350 g reinfor
31657ced mailer cut packaging cost by 18% and international shipping by 12%.","agents-cogs-reduction-product-packaging-highlight--plural":"Replacing a 500 g corrugated box with a 350 g reinforced mailer cut packaging cost by 18% and international shipping by 12%.","agents-cogs-reduction-faq-1":"How much can I expect to save with bulk purchasing?","agents-cogs-reduction-faq-1--plural":"How much can I expect to save with bulk purchasing?","agents-cogs-reduction-inventory-logistics-optimization":"Inventory & Logistics Optimization","agents-cogs-reduction-inventory-logistics-optimization--plural":"Inventory & Logistics Optimization","agents-cogs-reduction-strategic-supplier-partnerships":"Strategic Supplier Partnerships","agents-cogs-reduction-strategic-supplier-partnerships--plural":"Strategic Supplier Partnerships","agents-cogs-reduction-bulk-purchasing-list-1":"Aggregate cross-SKU or cross-client orders into large POs","agents-cogs-reduction-bulk-purchasing-list-1--plural":"Aggregate cross-SKU or cross-client orders into large POs","agents-cogs-reduction-bulk-purchasing-list-2":"Negotiate annual volume agreements with floor-pricing guarantees","agents-cogs-reduction-bulk-purchasing-list-2--plural":"Negotiate annual volume agreements with floor-pricing guarantees","agents-cogs-reduction-bulk-purchasing-list-3":"Quarterly reviews to adjust commitments to actual sales","agents-cogs-reduction-bulk-purchasing-list-3--plural":"Quarterly reviews to adjust commitments to actual sales","agents-cogs-reduction-faq-4-answer":"Yesâwe partner with bonded, FBA prep, and 3PL warehouses in North America, EU, and Asia.","agents-cogs-reduction-faq-4-answer--plural":"Yesâwe partner with bonded, FBA prep, and 3PL warehouses in North America, EU, and Asia.","agents-cogs-reduction-production-efficiency-yield-improvement":"Production Efficiency & Yield Improvement","agents-cogs-reduction-production-efficiency-yield-improvement--plural":"Production Efficiency & Yield Improvement","agents-cogs-reduction-bulk-purchasing-content-title":"Bulk Purchasing: Leverage volume discounts and tiered pricing","agents-cogs-reduction-bulk-purchasing-content-title--plural":"Bulk Purchasing: Leverage volume discounts and tiered pricing","common-mycj-menu-authorization-new":"Apps","common-mycj-menu-authorization-new--plural":"Apps","agents-cogs-reduction-step-3":"Step 3","agents-cogs-reduction-warehousing-logistics-content-title":"Warehousing & Logistics: Strategic network design for lowest total cost","agents-cogs-reduction-warehousing-logistics-content-title--plural":"Warehousing & Logistics: Strategic network design for lowest total cost","agents-cogs-reduction-step-2":"Step 2","agents-cogs-reduction-step-4":"Step 4","agents-cogs-reduction-step-4--plural":"Step 4","agents-cogs-reduction-step-1":"Step 1","agents-faster-order-fulfillment-our-integrated-approach":"Our Integrated Faster Order Fulfillment Approach","agents-faster-order-fulfillment-our-integrated-approach--plural":"Our Integrated Faster Order Fulfillment Approach","agents-cogs-reduction-desc-1":"Audit your current spend, volumes & packaging specs.","agents-cogs-reduction-desc-1--plural":"Audit your current spend, volumes & packaging specs.","agents-cogs-reduction-desc-2":"Develop bulk-buy plans, pack redesigns & sourcing scorecards.","agents-cogs-reduction-desc-2--plural":"Develop bulk-buy plans, pack redesigns & sourcing scorecards.","agents-cogs-reduction-desc-3":"Negotiate contracts, pilot new packaging, onboard warehouses.","agents-cogs-reduction-desc-3--plural":"Negotiate contracts, pilot new packaging, onboard warehouses.","agents-cogs-reduction-desc-4":"Monitor KPIs, renegotiate, and deploy incremental savings.","agents-cogs-reduction-desc-4--plural":"Monitor KPIs, renegotiate, and deploy incremental savings.","agents-cogs-reduction-supplier-comparison":"Supplier Comparison","agents-cogs-reduction-supplier-comparison--plural":"Supplier Comparison","agents-cogs-reduction-warehousing-logistics-content-desc":"Optimize inventory placement and transport modes to minimize fees and duties.","agents-cogs-reduction-warehousing-logistics-content-desc--plural":"Optimize inventory placement and transport modes to minimize fees and duties.","agents-cogs-reduction-title-2":"Strategy Design","agents-cogs-reduction-title-2--plural":"Strategy Design","agents-cogs-reduction-title-3":"Implementation","agents-cogs-reduction-title-3--plural":"Implementation","agents-cogs-reduction-title-4":"Continuous Improvement","agents-cogs-reduction-title-4--plural":"Continuous Improvement","agents-faster-order-fulfillment-problems":"Problems","agents-faster-order-fulfillment-problems--plural":"Problems","agents-cogs-reduction-supplier-comparison-highlight":"Quarterly bidding among Factories A/B/C selected Factory Bâs offer, reducing total sourcing cost by 7% while holding defect rates under 1%.","agents-cogs-reduction-supplier-comparison-highlight--plural":"Quarterly bidding among Factories A/B/C selected Factory Bâs offer, reducing total sourcing cost by 7% while holding defect rates under 1%.","agents-cogs-reduction-title-1":"Discovery & Data Gathering","agents-cogs-reduction-title-1--plural":"Discovery & Data Gathering","agents-cogs-reduction-warehousing-logistics-list-2":"Multi-modal shipping: sea, air, and rail combinations for best cost/speed mix","agents-cogs-reduction-warehousing-logistics-list-2--plural":"Multi-modal shipping: sea, air, and rail combinations for best cost/speed mix","agents-cogs-reduction-warehousing-logistics-list-1":"Regional hubs: consignment or bonded warehouses in North America, Europe, and APAC","agents-cogs-reduction-warehousing-logistics-list-1--plural":"Regional hubs: consignment or bonded warehouses in North America, Europe, and APAC","agents-cogs-reduction-warehousing-logistics-list-3":"Dynamic allocation: real-time order routing to the closest fulfillment center","agents-cogs-reduction-warehousing-logistics-list-3--plural":"Dynamic allocation: real-time order routing to the closest fulfillment center","agents-cogs-reduction-supplier-comparison-content-title":"Supplier Comparison: Competitive sourcing with ongoing benchmarking","agents-cogs-reduction-supplier-comparison-content-title--plural":"Supplier Comparison: Competitive sourcing with ongoing benchmarking","agents-faster-order-fulfillment-supply-chain-delays-desc":"Long supplier lead times, production bottlenecks, QC issues, logistics congestion, and customs delays make order delivery unpredictable.","agents-faster-order-fulfillment-supply-chain-delays-desc--plural":"Long supplier lead times, production bottlenecks, QC issues, logistics congestion, and customs delays make order delivery unpredictable.","agents-cogs-reduction-supplier-comparison-list-3":"Internal reverse-auction process to keep vendors sharp","agents-cogs-reduction-supplier-comparison-list-3--plural":"Internal reverse-auction process to keep vendors sharp","agents-cogs-reduction-supplier-comparison-list-1":"Solicit at least three bids per SKU from diverse factories","agents-cogs-reduction-supplier-comparison-list-1--plural":"Solicit at least three bids per SKU from diverse factories","agents-cogs-reduction-supplier-comparison-list-2":"Scorecard evaluation by lead time, quality, and service, updated quarterly","agents-cogs-reduction-supplier-comparison-list-2--plural":"Scorecard evaluation by lead time, quality, and service, updated quarterly","agents-cogs-reduction-warehousing-logistics-highlight":"Opening bonded warehouses in Germany and the U.S. (combined â¬5,000/mo.) saved an average of â¬2.20 per order in shipping and VATâover â¬50,000 annually.","agents-cogs-reduction-warehousing-logistics-highlight--plural":"Opening bonded warehouses in Germany and the U.S. (combined â¬5,000/mo.) saved an average of â¬2.20 per order in shipping and VATâover â¬50,000 annually.","agents-faster-order-fulfillment-our-integrated-approach-desc":"We tackle fulfillment delays at every critical stage through proactive management and expert local executionâfrom sourcing and stocking to labeling and last-mile delivery.","agents-faster-order-fulfillment-our-integrated-approach-desc--plural":"We tackle fulfillment delays at every critical stage through proactive management and expert local executionâfrom sourcing and stocking to labeling and last-mile delivery.","agents-faster-order-fulfillment-inventory-cash-flow-pressure-desc":"Inaccurate forecasting, slow turnover, and high overseas warehousing costs tie up cash and hurt margins.","agents-faster-order-fulfillment-inventory-cash-flow-pressure-desc--plural":"Inaccurate forecasting, slow turnover, and high overseas warehousing costs tie up cash and hurt margins.","agents-faster-order-fulfillment-your-benefits-desc":"Significantly reduced lead times, improved inventory efficie
31657ncy, lower carrying costs, and enhanced customer satisfaction.","agents-faster-order-fulfillment-your-benefits-desc--plural":"Significantly reduced lead times, improved inventory efficiency, lower carrying costs, and enhanced customer satisfaction.","agents-cogs-reduction-supplier-comparison-content-desc":"Maintain a competitive supply base for the best price-quality balance.","agents-cogs-reduction-supplier-comparison-content-desc--plural":"Maintain a competitive supply base for the best price-quality balance.","agents-faster-order-fulfillment-supply-chain-delays":"Supply Chain Delays","agents-faster-order-fulfillment-supply-chain-delays--plural":"Supply Chain Delays","agents-faster-order-fulfillment-inventory-cash-flow-pressure":"Inventory & Cash Flow Pressure","agents-faster-order-fulfillment-inventory-cash-flow-pressure--plural":"Inventory & Cash Flow Pressure","agents-cogs-reduction-warehousing-logistics":"Warehousing & Logistics","agents-cogs-reduction-warehousing-logistics--plural":"Warehousing & Logistics","agents-faster-order-fulfillment-your-benefits":"Your Benefits","agents-faster-order-fulfillment-your-benefits--plural":"Your Benefits","product-warehouse-video":"Warehouse Operation Video","product-warehouse-video--plural":"Warehouse Operation Video","product-packing-video":"Packing Video","product-packing-video--plural":"Packing Video","product-quality-check-video":"Quality Check Video","product-quality-check-video--plural":"Quality Check Video","common-mycj-menu-sales-orders":"Sales Orders","common-mycj-menu-sales-orders--plural":"Sales Orders","common-mycj-menu-credit-service":"Credit Service","common-mycj-menu-credit-service--plural":"Credit Service","common-mycj-menu-affiliate":"Affiliate","common-export-list":"Export List","common-top-search-search-zesty-tip":"Search winning products by keywords/SKU","common-top-search-search-zesty-tip--plural":"Search winning products by keywords/SKU","paid-service-openings-tooltip":"Limited availability â only {{remainingServingCustomerNum}} spots remaining.","paid-service-openings-tooltip--plural":"Limited availability â only {{remainingServingCustomerNum}} spots remaining.","common-mycj-menu-catalog":"Catalog","common-mycj-menu-catalog--plural":"Catalog","common-mycj-menu-tracking":"Tracking","common-mycj-menu-tracking--plural":"Tracking","common-mycj-menu-my-upsell":"My Upsell","common-mycj-menu-my-upsell--plural":"My Upsell","agents-faster-order-fulfillment-what-we-solve":"What We Solve","agents-faster-order-fulfillment-what-we-solve--plural":"What We Solve","agents-faster-order-fulfillment-schedule-your-free-fulfillment-audits":"Schedule Your Free Fulfillment Audits","agents-faster-order-fulfillment-schedule-your-free-fulfillment-audits--plural":"Schedule Your Free Fulfillment Audits","agents-faster-order-fulfillment-stock-readiness-what-we-solve-desc":"Delays in stock-in status updates prevent timely responses to urgent or replenishment orders.","agents-faster-order-fulfillment-stock-readiness-what-we-solve-desc--plural":"Delays in stock-in status updates prevent timely responses to urgent or replenishment orders.","agents-faster-order-fulfillment-fulfillment-efficiency-gain-1":"On-Time Delivery (OTD) improved by 30%+","agents-faster-order-fulfillment-fulfillment-efficiency-gain-1--plural":"On-Time Delivery (OTD) improved by 30%+","agents-faster-order-fulfillment-fulfillment-efficiency-gain-2":"Order cycle times reduced by 20â50%","agents-faster-order-fulfillment-fulfillment-efficiency-gain-2--plural":"Order cycle times reduced by 20â50%","agents-faster-order-fulfillment-stock-readiness-how-1":"Advance notice: Require factories to confirm finished goods ready dates","agents-faster-order-fulfillment-stock-readiness-how-1--plural":"Advance notice: Require factories to confirm finished goods ready dates","agents-faster-order-fulfillment-stock-readiness-how-2":"Real-time sync: Confirm packaging, labeling, and docs immediately upon stock-in","agents-faster-order-fulfillment-stock-readiness-how-2--plural":"Real-time sync: Confirm packaging, labeling, and docs immediately upon stock-in","agents-faster-order-fulfillment-subscription ":"Subscription ","agents-faster-order-fulfillment-subscription --plural":"Subscription ","agents-faster-order-fulfillment-ready-to-transform-your-order-fulfillment-speed":"Ready to Transform Your Order Fulfillment Speed?","agents-faster-order-fulfillment-ready-to-transform-your-order-fulfillment-speed--plural":"Ready to Transform Your Order Fulfillment Speed?","agents-faster-order-fulfillment-stock-readiness":"Stock Readiness","agents-faster-order-fulfillment-stock-readiness--plural":"Stock Readiness","agents-faster-order-fulfillment-fulfillment-efficiency-how-3":"Rapid issue handling: On-site resolution for material/process delays","agents-faster-order-fulfillment-fulfillment-efficiency-how-3--plural":"Rapid issue handling: On-site resolution for material/process delays","agents-faster-order-fulfillment-fulfillment-efficiency-how-2":"Smart scheduling: Strict and optimized production timelines","agents-faster-order-fulfillment-fulfillment-efficiency-how-2--plural":"Smart scheduling: Strict and optimized production timelines","agents-faster-order-fulfillment-fulfillment-efficiency-how-1":"Local coordination: Real-time communication with factories","agents-faster-order-fulfillment-fulfillment-efficiency-how-1--plural":"Local coordination: Real-time communication with factories","agents-faster-order-fulfillment-your-speed-gain":"Your Speed Gain","agents-faster-order-fulfillment-your-speed-gain--plural":"Your Speed Gain","agents-faster-order-fulfillment-fulfillment-efficiency-what-we-solve-desc":"Slow supplier response, poor production planning, lack of process visibility, and communication delays cause prolonged lead times.","agents-faster-order-fulfillment-fulfillment-efficiency-what-we-solve-desc--plural":"Slow supplier response, poor production planning, lack of process visibility, and communication delays cause prolonged lead times.","agents-faster-order-fulfillment-how-we-accelerate-it":"How We Accelerate It","agents-faster-order-fulfillment-how-we-accelerate-it--plural":"How We Accelerate It","agents-faster-order-fulfillment-fulfillment-efficiency":"Fulfillment Efficiency","agents-faster-order-fulfillment-fulfillment-efficiency--plural":"Fulfillment Efficiency","agents-faster-order-fulfillment-inventory-timeliness-gain-1":"Inventory turnover improved by 15â40%","agents-faster-order-fulfillment-inventory-timeliness-gain-1--plural":"Inventory turnover improved by 15â40%","agents-faster-order-fulfillment-inventory-timeliness-gain-2":"Stockout r
31657isk reduced by 60%","agents-faster-order-fulfillment-inventory-timeliness-gain-2--plural":"Stockout risk reduced by 60%","agents-faster-order-fulfillment-pre-set-packaging-what-we-solve-desc":"Non-standard packaging, label errors, and missing compliance marks cause rework or customs delays.","agents-faster-order-fulfillment-pre-set-packaging-what-we-solve-desc--plural":"Non-standard packaging, label errors, and missing compliance marks cause rework or customs delays.","agents-faster-order-fulfillment-process-logistics-mode-selection-subtitle":"Multimodal Shipping","agents-faster-order-fulfillment-process-logistics-mode-selection-subtitle--plural":"Multimodal Shipping","agents-faster-order-fulfillment-process-packaging-pre-check":"Packaging Pre-Check","agents-faster-order-fulfillment-process-packaging-pre-check--plural":"Packaging Pre-Check","agents-faster-order-fulfillment-on-ground-presence":"On-Ground Presence","agents-faster-order-fulfillment-on-ground-presence--plural":"On-Ground Presence","agents-faster-order-fulfillment-process-customs-preparation":"Customs Preparation","agents-faster-order-fulfillment-process-customs-preparation--plural":"Customs Preparation","agents-faster-order-fulfillment-process-production-monitoring":"Production Monitoring","agents-faster-order-fulfillment-process-production-monitoring--plural":"Production Monitoring","agents-faster-order-fulfillment-process-supplier-response-subtitle":"Fulfillment Efficiency","agents-faster-order-fulfillment-process-supplier-response-subtitle--plural":"Fulfillment Efficiency","agents-faster-order-fulfillment-end-to-end-visibility-desc":"Single-pane dashboard controls the full process.","agents-faster-order-fulfillment-end-to-end-visibility-desc--plural":"Single-pane dashboard controls the full process.","agents-faster-order-fulfillment-customs-fast-track-gain-1":"Clearance time cut by 40â70%","agents-faster-order-fulfillment-customs-fast-track-gain-1--plural":"Clearance time cut by 40â70%","agents-faster-order-fulfillment-deep-customs-compliance-expertise":"Deep Customs & Compliance Expertise","agents-faster-order-fulfillment-deep-customs-compliance-expertise--plural":"Deep Customs & Compliance Expertise","agents-faster-order-fulfillment-customs-fast-track-gain-2":"Inspection rate significantly below industry average","agents-faster-order-fulfillment-customs-fast-track-gain-2--plural":"Inspection rate significantly below industry average","agents-faster-order-fulfillment-inventory-timeliness-how-1":"Demand-driven forecasting: Inventory plans based on sales data","agents-faster-order-fulfillment-inventory-timeliness-how-1--plural":"Demand-driven forecasting: Inventory plans based on sales data","agents-faster-order-fulfillment-inventory-timeliness-how-2":"Flexible production: Enable small-batch or late-stage differentiation","agents-faster-order-fulfillment-inventory-timeliness-how-2--plural":"Flexible production: Enable small-batch or late-stage differentiation","agents-faster-order-fulfillment-inventory-timeliness-how-3":"Aging alerts: Monitor and flag slow-moving inventory","agents-faster-order-fulfillment-inventory-timeliness-how-3--plural":"Aging alerts: Monitor and flag slow-moving inventory","agents-faster-order-fulfillment-process-stock-in-confirmation":"Stock-In Confirmation","agents-faster-order-fulfillment-process-stock-in-confirmation--plural":"Stock-In Confirmation","agents-faster-order-fulfillment-inventory-timeliness":"Inventory Timeliness","agents-faster-order-fulfillment-inventory-timeliness--plural":"Inventory Timeliness","agents-faster-order-fulfillment-process-production-monitoring-subtitle":"Fulfillment Efficiency","agents-faster-order-fulfillment-process-production-monitoring-subtitle--plural":"Fulfillment Efficiency","agents-faster-order-fulfillment-process-logistics-mode-selection":"Logistics Mode Selection","agents-faster-order-fulfillment-process-logistics-mode-selection--plural":"Logistics Mode Selection","agents-faster-order-fulfillment-pre-set-packaging":"Pre-set Packaging","agents-faster-order-fulfillment-pre-set-packaging--plural":"Pre-set Packaging","agents-faster-order-fulfillment-customs-fast-track-how-2":"Early declaration & local support: Advance filing + local brokerage","agents-faster-order-fulfillment-customs-fast-track-how-2--plural":"Early declaration & local support: Advance filing + local brokerage","agents-faster-order-fulfillment-customs-fast-track-how-1":"Accurate documentation: One-shot clearance readiness","agents-faster-order-fulfillment-customs-fast-track-how-1--plural":"Accurate documentation: One-shot clearance readiness","agents-faster-order-fulfillment-multimodal-shipping-what-we-solve-desc":"Limited transport modes, cost-time imbalances, inefficient handoffs, and no fallback options for disruptions.","agents-faster-order-fulfillment-multimodal-shipping-what-we-solve-desc--plural":"Limited transport modes, cost-time imbalances, inefficient handoffs, and no fallback options for disruptions.","agents-faster-order-fulfillment-process-inventory-threshold-alert-subtitle":"Inventory Timeliness","agents-faster-order-fulfillment-process-inventory-threshold-alert-subtitle--plural":"Inventory Timeliness","agents-faster-order-fulfillment-process-supplier-response":"Supplier Response","agents-faster-order-fulfillment-process-supplier-response--plural":"Supplier Response","agents-faster-order-fulfillment-stock-readiness-gain-1":"Urgent order response time reduced by 70%","agents-faster-order-fulfillment-stock-readiness-gain-1--plural":"Urgent order response time reduced by 70%","agents-faster-order-fulfillment-stock-readiness-how-3":"Ship-ready coordination: Align with carriers to ensure transport readiness","agents-faster-order-fulfillment-stock-readiness-how-3--plural":"Ship-ready coordination: Align with carriers to ensure transport readiness","agents-faster-order-fulfillment-pre-set-packaging-how-3":"Barcode/label templates: Centralized approved format library","agents-faster-order-fulfillment-pre-set-packaging-how-3--plural":"Barcode/label templates: Centralized approved format library","agents-faster-order-fulfillment-pre-set-packaging-gain-1":"99% of label/packaging delays eliminated","agents-faster-order-fulfillment-pre-set-packaging-gain-1--plural":"99% of label/packaging delays eliminated","agents-faster-order-fulfillment-pre-set-packaging-how-2":"Pre-shipment check: 100% inspection for compliance","agents-faster-order-fulfillment-pre-set-packaging-how-2--plural":"Pre-shipment check: 100% inspection for compliance","agents-faster-order-fulfillment-pre-set-packaging-gain-2":"100% immediate receipt rate at destination warehouse","agents-faster-order-fulfillment-pre-set-packaging-gain-2--plural":"100% immediate receipt rate at destination warehouse","agents-faster-order-fulfillment-stock-readiness-gain-2":"Effective inventory availability >95%","agents-faster-order-fulfillment-stock-readiness-gain-2--plural":"Effective inventory availability >95%","agents-faster-order-fulfillment-pre-set-packaging-how-1":"SOPs for packaging/labeling: Standardized and pre-approved","agents-faster-order-fulfillment-pre-set-packaging-how-1--plural":"SOPs for packaging/labeling: Standardized and pre-approved","agents-faster-order-fulfillment-proactive-vs-reactive":"Proactive vs. Reactive","agents-faster-order-fulfillment-proactive-vs-reactive--plural":"Proactive vs. Reactive","agents-faster-order-fulfillment-end-to-end-visibility":"End-to-End Visibility","agents-faster-order-fulfillment-end-to-end-visibility--plural":"End-to-End Visibility","agents-faster-order-fulfillment-process-cu
31657stoms-preparation-subtitle":"Customs Fast-Track","agents-faster-order-fulfillment-process-customs-preparation-subtitle--plural":"Customs Fast-Track","agents-faster-order-fulfillment-multimodal-shipping-how-1":"Route optimization: Best mode/cost/time configuration","agents-faster-order-fulfillment-multimodal-shipping-how-1--plural":"Route optimization: Best mode/cost/time configuration","agents-faster-order-fulfillment-multimodal-shipping-how-2":"Seamless multimodal execution: Air-sea, rail-road coordination","agents-faster-order-fulfillment-multimodal-shipping-how-2--plural":"Seamless multimodal execution: Air-sea, rail-road coordination","agents-faster-order-fulfillment-faq-3-answer":"Yes. We dynamically route orders via the optimal mix of air, sea, rail, and ground transport to balance speed and cost for large or heavy SKUs.","agents-faster-order-fulfillment-faq-3-answer--plural":"Yes. We dynamically route orders via the optimal mix of air, sea, rail, and ground transport to balance speed and cost for large or heavy SKUs.","agents-faster-order-fulfillment-faq-4-answer":"We pre-configure your branded packagingâboxes, mailers, inserts, and compliance labelsâat origin so orders ship retail-ready without extra handling.","agents-faster-order-fulfillment-faq-4-answer--plural":"We pre-configure your branded packagingâboxes, mailers, inserts, and compliance labelsâat origin so orders ship retail-ready without extra handling.","agents-faster-order-fulfillment-faq-1-answer":"A turnkey solution that accelerates every step of your e-commerce order cycleâfrom order receipt through pick-pack to final deliveryâusing automation, strategic inventory placement, and expedited logistics.","agents-faster-order-fulfillment-faq-1-answer--plural":"A turnkey solution that accelerates every step of your e-commerce order cycleâfrom order receipt through pick-pack to final deliveryâusing automation, strategic inventory placement, and expedited logistics.","agents-faster-order-fulfillment-faq-2-answer":"Our real-time inventory management system syncs stock levels across supplier, warehouse, and storefront platforms to prevent oversells and backorders.","agents-faster-order-fulfillment-faq-2-answer--plural":"Our real-time inventory management system syncs stock levels across supplier, warehouse, and storefront platforms to prevent oversells and backorders.","agents-faster-order-fulfillment-faq-5-answer":"We pre-file all HS codes and duties, enroll in IOSS or other fast-track programs, and partner with dedicated brokers to cut clearance from days to hours.","agents-faster-order-fulfillment-faq-5-answer--plural":"We pre-file all HS codes and duties, enroll in IOSS or other fast-track programs, and partner with dedicated brokers to cut clearance from days to hours.","agents-faster-order-fulfillment-faq-6-answer":"Simply book a free fulfillment audit. Weâll assess your current workflow, map out improvement opportunities, and deliver a tailored implementation plan.","agents-faster-order-fulfillment-faq-6-answer--plural":"Simply book a free fulfillment audit. Weâll assess your current workflow, map out improvement opportunities, and deliver a tailored implementation plan.","agents-faster-order-fulfillment-process-inventory-threshold-alert":"Inventory Threshold Alert","agents-faster-order-fulfillment-process-inventory-threshold-alert--plural":"Inventory Threshold Alert","agents-faster-order-fulfillment-process-packaging-pre-check-subtitle":"Pre-set Packaging","agents-faster-order-fulfillment-process-packaging-pre-check-subtitle--plural":"Pre-set Packaging","agents-faster-order-fulfillment-multimodal-shipping-gain-1":"Total logistics cost reduced by 10â25%","agents-faster-order-fulfillment-multimodal-shipping-gain-1--plural":"Total logistics cost reduced by 10â25%","agents-faster-order-fulfillment-proactive-vs-reactive-desc":"Anticipatory issue managementânot just firefighting.","agents-faster-order-fulfillment-proactive-vs-reactive-desc--plural":"Anticipatory issue managementânot just firefighting.","agents-faster-order-fulfillment-deep-customs-compliance-expertise-desc":"Safeguards against regulatory changes.","agents-faster-order-fulfillment-deep-customs-compliance-expertise-desc--plural":"Safeguards against regulatory changes.","agents-faster-order-fulfillment-supplier-network-leverage":"Supplier Network & Leverage","agents-faster-order-fulfillment-supplier-network-leverage--plural":"Supplier Network & Leverage","agents-faster-order-fulfillment-multimodal-shipping":"Multimodal Shipping","agents-faster-order-fulfillment-multimodal-shipping--plural":"Multimodal Shipping","agents-faster-order-fulfillment-process-stock-in-confirmation-subtitle":"Stock Readiness","agents-faster-order-fulfillment-process-stock-in-confirmation-subtitle--plural":"Stock Readiness","agents-faster-order-fulfillment-on-ground-presence-desc":"Local teams on the ground, direct management.","agents-faster-order-fulfillment-on-ground-presence-desc--plural":"Local teams on the ground, direct management.","agents-faster-order-fulfillment-inventory-timeliness-what-we-solve-desc":"Understocking causes lost sales, overstock ties up capital, and aging inventory risks obsolescence.","agents-faster-order-fulfillment-inventory-timeliness-what-we-solve-desc--plural":"Understocking causes lost sales, overstock ties up capital, and aging inventory risks obsolescence.","agents-faster-order-fulfillment-process-delivery-confirmation":"Delivery Confirmation","agents-faster-order-fulfillment-process-delivery-confirmation--plural":"Delivery Confirmation","agents-faster-order-fulfillment-customs-fast-track-what-we-solve-desc":"Long document prep time, high inspection rates, HS code disputes, and missed FTA benef
31657its cause clearance delays.","agents-faster-order-fulfillment-customs-fast-track-what-we-solve-desc--plural":"Long document prep time, high inspection rates, HS code disputes, and missed FTA benefits cause clearance delays.","agents-faster-order-fulfillment-multimodal-shipping-gain-2":"Urgency fluctuation range cut by 50%","agents-faster-order-fulfillment-multimodal-shipping-gain-2--plural":"Urgency fluctuation range cut by 50%","agents-faster-order-fulfillment-customs-fast-track":"Customs Fast-Track","agents-faster-order-fulfillment-customs-fast-track--plural":"Customs Fast-Track","agents-faster-order-fulfillment-process-demand-confirmation":"Demand Confirmation","agents-faster-order-fulfillment-process-demand-confirmation--plural":"Demand Confirmation","agents-faster-order-fulfillment-process-shipment-clearance":"Shipment & Clearance","agents-faster-order-fulfillment-process-shipment-clearance--plural":"Shipment & Clearance","agents-faster-order-fulfillment-faq-1":"What is \\"Faster Order Fulfillment\\"?","agents-faster-order-fulfillment-faq-1--plural":"What is \\"Faster Order Fulfillment\\"?","agents-faster-order-fulfillment-faq-2":"How do you handle inventory synchronization?","agents-faster-order-fulfillment-faq-2--plural":"How do you handle inventory synchronization?","agents-faster-order-fulfillment-faq-3":"Can you support multimodal shipping for bulky or heavy items?","agents-faster-order-fulfillment-faq-3--plural":"Can you support multimodal shipping for bulky or heavy items?","agents-faster-order-fulfillment-faq-4":"What packaging options are available?","agents-faster-order-fulfillment-faq-4--plural":"What packaging options are available?","agents-faster-order-fulfillment-faq-5":"How do you accelerate customs clearance?","agents-faster-order-fulfillment-faq-5--plural":"How do you accelerate customs clearance?","agents-faster-order-fulfillment-faq-6":"How do I get started with your service?","agents-faster-order-fulfillment-faq-6--plural":"How do I get started with your service?","agents-faster-order-fulfillment-multimodal-shipping-how-3":"Key milestone tracking: Full shipment visibility","agents-faster-order-fulfillment-multimodal-shipping-how-3--plural":"Key milestone tracking: Full shipment visibility","agents-faster-order-fulfillment-supplier-network-leverage-desc":"Deep supplier relationships for priority access.","agents-faster-order-fulfillment-supplier-network-leverage-desc--plural":"Deep supplier relationships for priority access.","shipping-add-set-up-30-default":"Set up to 30 default logistics options for one country.","shipping-add-set-up-30-default--plural":"Set up to 30 default logistics options for one country.","my-profile-shipping-new-you-can-set-30":"You can set up to 30 custom shipping methods.","my-profile-shipping-new-you-can-set-30--plural":"You can set up to 30 custom shipping methods.","agents-shorten-delivery-time-faq-4-answer":"AI-driven demand forecasting triggers automatic replenishment orders to regional hubs before buffer stocks fall below predefined thresholds.","agents-shorten-delivery-time-faq-4-answer--plural":"AI-driven demand forecasting triggers automatic replenishment orders to regional hubs before buffer stocks fall below predefined thresholds.","agents-shorten-delivery-time-faq-5-answer":"Key metrics include average delivery time, OTIF (On-Time In-Full) rate, expedite-cost reduction, and inventory turnoverâtracked via a live dashboard with monthly reporting.","agents-shorten-delivery-time-faq-5-answer--plural":"Key metrics include average delivery time, OTIF (On-Time In-Full) rate, expedite-cost reduction, and inventory turnoverâtracked via a live dashboard with monthly reporting.","agents-shorten-delivery-time-process-safety-stock-replenishment":"Safety Stock Replenishment","agents-shorten-delivery-time-process-safety-stock-replenishment--plural":"Safety Stock Replenishment","agents-shorten-delivery-time-faq-2-answer":"Our dedicated account specialists guarantee PO acknowledgment and price lock-in within one business hour, ensuring production can start immediately.","agents-shorten-delivery-time-faq-2-answer--plural":"Our dedicated account specialists guarantee PO acknowledgment and price lock-in within one business hour, ensuring production can start immediately.","agents-shorten-delivery-time-optimized-multimodal-logistics-desc":"Intelligent routing blends air, sea, rail, and courier networks, paired with pre-cleared customs lanes (IOSS/VIES), for predictable 3-7 day deliveries at competitive costs.","agents-shorten-delivery-time-optimized-multimodal-logistics-desc--plural":"Intelligent routing blends air, sea, rail, and courier networks, paired with pre-cleared customs lanes (IOSS/VIES), for predictable 3-7 day deliveries at competitive costs.","agents-shorten-delivery-time-gold-level-account-manager-desc":"Your personal logistics and sourcing expertâproactively monitoring every order, anticipating issues before they arise, and coordinating cross-functional teams on your behalf.","agents-shorten-delivery-time-gold-level-account-manager-desc--plural":"Your personal logistics and sourcing expertâproactively monitoring every order, anticipating issues before they arise, and coordinating cross-functional teams on your behalf.","agents-shorten-delivery-time-faq-2":"How does supplier response acceleration work?","agents-shorten-delivery-time-faq-2--plural":"How does supplier response acceleration work?","agents-shorten-delivery-time-faq-3":"What is involved in your logistics optimization?","agents-shorten-delivery-time-faq-3--plural":"What is involved in your logistics optimization?","agents-shorten-delivery-time-faq-4":"How does s
31657afety stock management prevent stockouts?","agents-shorten-delivery-time-faq-4--plural":"How does safety stock management prevent stockouts?","agents-shorten-delivery-time-faq-5":"How do you measure success?","agents-shorten-delivery-time-faq-5--plural":"How do you measure success?","agents-shorten-delivery-time-process-fast-track-production":"Fast-Track Production","agents-shorten-delivery-time-process-fast-track-production--plural":"Fast-Track Production","agents-shorten-delivery-time-faq-1":"What is your Faster Order Fulfillment service?","agents-shorten-delivery-time-faq-1--plural":"What is your Faster Order Fulfillment service?","agents-shorten-delivery-time-cost-effective-scalability":"Cost-Effective Scalability","agents-shorten-delivery-time-cost-effective-scalability--plural":"Cost-Effective Scalability","agents-shorten-delivery-time-schedule-your-free-fulfillment-audits":"Schedule Your Free Fulfillment Audits","agents-shorten-delivery-time-schedule-your-free-fulfillment-audits--plural":"Schedule Your Free Fulfillment Audits","agents-shorten-delivery-time-faq-1-answer":"A turnkey solution that accelerates order processing end-to-endâcovering rapid supplier response, expedited production, optimized logistics, and dynamic stock management.","agents-shorten-delivery-time-faq-1-answer--plural":"A turnkey solution that accelerates order processing end-to-endâcovering rapid supplier response, expedited production, optimized logistics, and dynamic stock management.","agents-shorten-delivery-time-gold-level-account-manager":"Gold-Level Account Manager","agents-shorten-delivery-time-gold-level-account-manager--plural":"Gold-Level Account Manager","agents-shorten-delivery-time-process-order-placed":"Order Placed","agents-shorten-delivery-time-process-order-placed--plural":"Order Placed","agents-shorten-delivery-time-ready-to-transform-your-order-fulfillment-speed":"Ready to Transform Your Order Fulfillment Speed?","agents-shorten-delivery-time-ready-to-transform-your-order-fulfillment-speed--plural":"Ready to Transform Your Order Fulfillment Speed?","agents-shorten-delivery-time-process-multimodal-shipment":"Multimodal Shipment","agents-shorten-delivery-time-process-multimodal-shipment--plural":"Multimodal Shipment","agents-shorten-delivery-time-process-supplier-confirmation":"Supplier Confirmation","agents-shorten-delivery-time-process-supplier-confirmation--plural":"Supplier Confirmation","agents-shorten-delivery-time-cost-effective-scalability-desc":"Avoid costly last-minute air-freight surgesâour proactive planning and diversified transport modes reduce expedite expenses by up to 30%.","agents-shorten-delivery-time-cost-effective-scalability-desc--plural":"Avoid costly last-minute air-freight surgesâour proactive planning and diversified transport modes reduce expedite expenses by up to 30%.","agents-shorten-delivery-time-faq-3-answer":"We employ a multimodal strategy (air, sea, rail, courier) combined with pre-cleared customs lanes (IOSS/VIES) to deliver the fastest, most cost-effective routes.","agents-shorten-delivery-time-faq-3-answer--plural":"We employ a multimodal strategy (air, sea, rail, courier) combined with pre-cleared customs lanes (IOSS/VIES) to deliver the fastest, most cost-effective routes.","agents-shorten-delivery-time-subscription":"Subscription","agents-shorten-delivery-time-subscription--plural":"Subscription","agents-shorten-delivery-time-supplier-response-approach-1":"Professional RFQ/RFP process design","agents-shorten-delivery-time-supplier-response-approach-1--plural":"Professional RFQ/RFP process design","agents-shorten-delivery-time-supplier-response-approach-2":"Supplier response speed evaluation system","agents-shorten-delivery-time-supplier-response-approach-2--plural":"Supplier response speed evaluation system","agents-shorten-delivery-time-supplier-response-approach-3":"Cross-language/culture negotiation optimization","agents-shorten-delivery-time-supplier-response-approach-3--plural":"Cross-language/culture negotiation optimization","agents-shorten-delivery-time-supplier-response-approach-4":"Smart supplier matching algorithms","agents-shorten-delivery-time-supplier-response-approach-4--plural":"Smart supplier matching algorithms","agents-shorten-delivery-time-supplier-response-approach-5":"Key decision point acceleration framework","agents-shorten-delivery-time-supplier-response-approach-5--plural":"Key decision point acceleration framework","agents-shorten-delivery-time-production-acceleration-solve-5":"Coordination challenges with multimodal transport","agents-shorten-delivery-time-production-acceleration-solve-5--plural":"Coordination challenges with multimodal transport","agents-shorten-delivery-time-safety-stock-management-approach-1":"AI demand prediction engine","agents-shorten-delivery-time-safety-stock-management-approach-1--plural":"AI demand prediction engine","agents-shorten-delivery-time-production-acceleration-solve-4":"Documentation errors","agents-shorten-delivery-time-production-acceleration-solve-4--plural":"Documentation errors","agents-shorten-delivery-time-production-acceleration-solve-3":"Customs clearance delays","agents-shorten-delivery-time-production-acceleration-solve-3--plural":"Customs clearance delays","agents-shorten-delivery-time-safety-stock-management-approach-3":"Automatic replenishment triggering","agents-shorten-delivery-time-safety-stock-management-approach-3--plural":"Automatic replenishment triggering","agents-shorten-delivery-time-production-acceleration-solve-2":"Port congestion delays","agents-shorten-delivery-time-production-acceleration-solve-2--plural":"Port congestion delays","agents-shorten-delivery-time-safety-stock-management-approach-2":"Dynamic safety stock algorithms","agents-shorten-delivery-time-safety-stock-management-approach-2--plural":"Dynamic safety stock algorithms","agents-shorten-delivery-time-safety-stock-management-approach-5":"Cross-channel inventory visibility","agents-shorten-delivery-time-safety-stock-management-approach-5--plural":"Cross-channel inventory visibility","agents-shorten-delivery-time-safety-stock-management-approach-4":"Vendor Managed Inventory (VMI)","agents-shorten-delivery-time-safety-stock-management-approach-4--plural":"Vendor Managed Inventory (VMI)","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-1":"Bottleneck elimination and resource optimization","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-1--plural":"Bottleneck elimination and resource optimization","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-1":"Dynamic routing avoids congestion","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-1--plural":"Dynamic routing avoids congestion","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-2":"Pre-declaration and customs data integration","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-2--plural":"Pre-declaration and customs data integration","agents-shorten-delivery-time-supplier-response-key-benifits-desc-1":"7-day turnaround for standard RFQ processes","agents-shorten-delivery-time-supplier-response-key-benifits-desc-1--plural":"7-day turnaround for standard RFQ processes","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-3":"Optimized multimodal transport combinations","agents-shorten-delivery-time-production-acceleration-key-benifits-desc-3--plural":"Optimized multimodal transport combinations","agents-shorten-delivery-time-supplier-response-key-benifits-desc-2":"Professional frameworks compress decision cycles","agents-shorten-delivery-time-supplier-response-key-benifits-desc-2--plural":"Professional frameworks compress decision cycles","agents-shorten-delivery-time-key-benifits":"Key Be
31657nifits","agents-shorten-delivery-time-key-benifits--plural":"Key Benifits","agents-shorten-delivery-time-accelerated-production-desc":"Rapid sample approvals, concurrent engineering reviews, and in-line AQL Inspections slash lead times by up to 30%âwithout compromising standards.","agents-shorten-delivery-time-accelerated-production-desc--plural":"Rapid sample approvals, concurrent engineering reviews, and in-line AQL Inspections slash lead times by up to 30%âwithout compromising standards.","agents-shorten-delivery-time-supplier-response-solve-1":"Slow response times from suppliers","agents-shorten-delivery-time-supplier-response-solve-1--plural":"Slow response times from suppliers","agents-shorten-delivery-time-supplier-response-solve-3":"Vague cooperation intentions","agents-shorten-delivery-time-supplier-response-solve-3--plural":"Vague cooperation intentions","agents-shorten-delivery-time-supplier-response-solve-2":"Inconsistent communication practices","agents-shorten-delivery-time-supplier-response-solve-2--plural":"Inconsistent communication practices","agents-shorten-delivery-time-supplier-response-solve-5":"Decision-making delays","agents-shorten-delivery-time-supplier-response-solve-5--plural":"Decision-making delays","agents-shorten-delivery-time-supplier-response-solve-4":"Variable quality of proposals","agents-shorten-delivery-time-supplier-response-solve-4--plural":"Variable quality of proposals","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-3":"Rapid response mechanisms for production issues","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-3--plural":"Rapid response mechanisms for production issues","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-2":"Full-process quality control points","agents-shorten-delivery-time-logistics-optimization-key-benifits-desc-2--plural":"Full-process quality control points","agents-shorten-delivery-time-production-acceleration-solve-1":"Inefficient logistics routing","agents-shorten-delivery-time-production-acceleration-solve-1--plural":"Inefficient logistics routing","agents-shorten-delivery-time-accelerated-production":"Accelerated Production with Built-In Quality Control","agents-shorten-delivery-time-accelerated-production--plural":"Accelerated Production with Built-In Quality Control","agents-shorten-delivery-time-supplier-response":"Supplier Response","agents-shorten-delivery-time-supplier-response--plural":"Supplier Response","agents-shorten-delivery-time-supplier-response-key-benifits-title-3":"Improved partnership quality","agents-shorten-delivery-time-supplier-response-key-benifits-title-3--plural":"Improved partnership quality","agents-shorten-delivery-time-supplier-response-key-benifits-title-2":"300% better decision efficiency","agents-shorten-delivery-time-supplier-response-key-benifits-title-2--plural":"300% better decision efficiency","agents-shorten-delivery-time-supplier-response-key-benifits-title-1":"50% faster response time","agents-shorten-delivery-time-supplier-response-key-benifits-title-1--plural":"50% faster response time","agents-shorten-delivery-time-multimodal-customs-handling":"Multimodal & Customs Handling","agents-shorten-delivery-time-multimodal-customs-handling--plural":"Multimodal & Customs Handling","agents-shorten-delivery-time-optimized-multimodal-logistics":"Optimized Multimodal Logistics & Customs Expertise","agents-shorten-delivery-time-optimized-multimodal-logistics--plural":"Optimized Multimodal Logistics & Customs Expertise","agents-shorten-delivery-time-professional-services":"Professional Services","agents-shorten-delivery-time-professional-services--plural":"Professional Services","agents-shorten-delivery-time-challenges-we-solve":"Challenges We Solve","agents-shorten-delivery-time-challenges-we-solve--plural":"Challenges We Solve","agents-shorten-delivery-time-production-acceleration-key-benifits-title-2":"Customs clearance in <48 hours","agents-shorten-delivery-time-production-acceleration-key-benifits-title-2--plural":"Customs clearance in <48 hours","agents-shorten-delivery-time-production-acceleration-key-benifits-title-3":"25% logistics cost reduction","agents-shorten-delivery-time-production-acceleration-key-benifits-title-3--plural":"25% logistics cost reduction","agents-shorten-delivery-time-production-acceleration-key-benifits-title-1":"45% logistics time reduction","agents-shorten-delivery-time-production-acceleration-key-benifits-title-1--plural":"45% logistics time reduction","agents-shorten-delivery-time-our-approach":"Our Approach","agents-shorten-delivery-time-our-approach--plural":"Our Approach","agents-shorten-delivery-time-logistics-optimization":"Production Acceleration","agents-shorten-delivery-time-logistics-optimization--plural":"Production Acceleration","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-3":"<2-hour emergency response","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-3--plural":"<2-hour emergency response","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-2":"Reduced rework rate to 0.3%","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-2--plural":"Reduced rework rate to 0.3%","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-1":"40% productivity increase","agents-shorten-delivery-time-logistics-optimization-key-benifits-title-1--plural":"40% productivity increase","agents-shorten-delivery-time-slow-supplier-replies":"Slow supplier replies","agents-shorten-delivery-time-slow-supplier-replies--plural":"Slow supplier replies","agents-shorten-delivery-time-logistics-optimization-solve-5":"High rework rates","agents-shorten-delivery-time-logistics-optimization-solve-5--plural":"High rework rates","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-2":"300% better decision efficie
31657ncy","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-2--plural":"300% better decision efficiency","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-1":"50% faster response time","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-1--plural":"50% faster response time","agents-shorten-delivery-time-logistics-optimization-solve-3":"Equipment failure and downtime","agents-shorten-delivery-time-logistics-optimization-solve-3--plural":"Equipment failure and downtime","agents-shorten-delivery-time-logistics-optimization-solve-4":"Quality control issues","agents-shorten-delivery-time-logistics-optimization-solve-4--plural":"Quality control issues","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-3":"Improved partnership quality","agents-shorten-delivery-time-safety-stock-management-key-benifits-title-3--plural":"Improved partnership quality","agents-shorten-delivery-time-logistics-optimization-solve-1":"Disjointed production planning","agents-shorten-delivery-time-logistics-optimization-solve-1--plural":"Disjointed production planning","agents-shorten-delivery-time-logistics-optimization-solve-2":"Material shortages and supply gaps","agents-shorten-delivery-time-logistics-optimization-solve-2--plural":"Material shortages and supply gaps","agents-shorten-delivery-time-safety-stock-management-solve-5":"Inaccurate demand forecasting","agents-shorten-delivery-time-safety-stock-management-solve-5--plural":"Inaccurate demand forecasting","agents-shorten-delivery-time-safety-stock-management-solve-3":"Excessive cash tied up in inventory","agents-shorten-delivery-time-safety-stock-management-solve-3--plural":"Excessive cash tied up in inventory","agents-shorten-delivery-time-safety-stock-management-solve-4":"High storage costs","agents-shorten-delivery-time-safety-stock-management-solve-4--plural":"High storage costs","agents-shorten-delivery-time-safety-stock-management-solve-1":"Inventory mismatches","agents-shorten-delivery-time-safety-stock-management-solve-1--plural":"Inventory mismatches","agents-shorten-delivery-time-safety-stock-management-solve-2":"Lost sales from stockouts","agents-shorten-delivery-time-safety-stock-management-solve-2--plural":"Lost sales from stockouts","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-1":"7-day turnaround for standard RFQ processes","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-1--plural":"7-day turnaround for standard RFQ processes","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-3":"Comprehensive supplier assessments ensure stability","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-3--plural":"Comprehensive supplier assessments ensure stability","agents-shorten-delivery-time-inventory-risks":"Stockouts or overstock","agents-shorten-delivery-time-inventory-risks--plural":"Stockouts or overstock","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-2":"Professional frameworks compress decision cycles","agents-shorten-delivery-time-safety-stock-management-key-benifits-desc-2--plural":"Professional frameworks compress decision cycles","agents-shorten-delivery-time-logistics-delays":"Logistics delays","agents-shorten-delivery-time-logistics-delays--plural":"Logistics delays","agents-shorten-delivery-time-quality-management":"Quality Management","agents-shorten-delivery-time-quality-management--plural":"Quality Management","agents-shorten-delivery-time-production-acceleration-approach-2":"Global port risk monitoring","agents-shorten-delivery-time-production-acceleration-approach-2--plural":"Global port risk monitoring","agents-shorten-delivery-time-production-acceleration-approach-1":"Smart multimodal route planning system","agents-shorten-delivery-time-production-acceleration-approach-1--plural":"Smart multimodal route planning system","agents-shorten-delivery-time-dynamic-replenishment":"Dynamic Replenishment","agents-shorten-delivery-time-dynamic-replenishment--plural":"Dynamic Replenishment","agents-shorten-delivery-time-cash-tied-up":"Cash tied up","agents-shorten-delivery-time-cash-tied-up--plural":"Cash tied up","agents-shorten-delivery-time-safety-stock-management":"Safety Stock Management","agents-shorten-delivery-time-safety-stock-management--plural":"Safety Stock Management","agents-shorten-delivery-time-production-acceleration-approach-4":"Automated documentation processing center","agents-shorten-delivery-time-production-acceleration-approach-4--plural":"Automated documentation processing center","agents-shorten-delivery-time-production-acceleration-approach-3":"AEO-certified express customs clearance","agents-shorten-delivery-time-production-acceleration-approach-3--plural":"AEO-certified express customs clearance","agents-shorten-delivery-time-production-acceleration-approach-5":"Optimal tariff strategy engine","agents-shorten-delivery-time-production-acceleration-approach-5--plural":"Optimal tariff strategy engine","agents-shorten-delivery-time-logistics-optimization-approach-5":"Dynamic material replenishment system","agents-shorten-delivery-time-logistics-optimization-approach-5--plural":"Dynamic material replenishment system","agents-shorten-delivery-time-logistics-optimization-approach-4":"Predictive maintenance solutions","agents-shorten-delivery-time-logistics-optimization-approach-4--plural":"Predictive maintenance solutions","agents-shorten-delivery-time-logistics-optimization-approach-3":"Mistake-proofing technology (Poka-Yoke)","agents-shorten-delivery-time-logistics-optimization-approach-3--plural":"Mistake-proofing technology (Poka-Yoke)","agents-shorten-delivery-time-logistics-optimization-approach-2":"Four-stage quality management system (TQM)","agents-shorten-delivery-time-logistics-optimization-approach-2--plural":"Four-stage quality management system (TQM)","agents-shorten-delivery-time-logistics-optimization-approach-1":"Real-time production monitoring system (IoT+5G)","agents-shorten-delivery-time-logistics-optimization-approach-1--plural":"Real-time production monitoring system (IoT+5G)","agents-shorten-delivery-time-missed-launch-windows":"Missed launch windows","agents-shorten-delivery-time-missed-launch-windows--plural":"Missed launch windows","agents-shorten-delivery-time-supplier-response-key-benifits-desc-3":"Comprehensive supplier assessments ensure stability","agents-shorten-delivery-time-supplier-response-key-benifits-desc-3--plural":"Comprehensive supplier assessments ensure stability","agents-shorten-delivery-time-order-delays":"Order delays","agents-shorten-delivery-time-order-delays--plural":"Order delays","agents-shorten-delivery-time-production-acceleration":"Logistics Optimization","agents-shorten-delivery-time-production-acceleration--plural":"Logistics Optimization","agents-shorten-delivery-time-production-bottlenecks":"Production bottlenecks","agents-shorten-delivery-time-production-bottlenecks--plural":"Production bottlenecks","agents-shorten-delivery-time-unhappy-cu
31657stomers":"Unhappy customers","agents-shorten-delivery-time-unhappy-customers--plural":"Unhappy customers","agents-cj-account-management-professional-manager-liaison-point-item-3-tilte":"Benefit:","agents-cj-account-management-professional-manager-liaison-point-item-3-tilte--plural":"Benefit:","agents-cj-account-management-contract-finalization":"Contract Finalization","agents-cj-account-management-contract-finalization--plural":"Contract Finalization","agents-cj-account-management-end-to-end-order-governance-desc":"From P.O. issuance through invoice reconciliation, your manager oversees every stepâautomating workflows and ensuring 100% accuracy.","agents-cj-account-management-end-to-end-order-governance-desc--plural":"From P.O. issuance through invoice reconciliation, your manager oversees every stepâautomating workflows and ensuring 100% accuracy.","agents-cj-account-management-professional-manager-liaison-point-item-1-desc":"Who do I call when things go wrong?","agents-cj-account-management-professional-manager-liaison-point-item-1-desc--plural":"Who do I call when things go wrong?","agents-cj-account-management-gold-level-dedicated-manager-desc":"Your single point of contactâdeeply familiar with your business, supply base, and goalsâensuring seamless coordination and rapid issue resolution.","agents-cj-account-management-gold-level-dedicated-manager-desc--plural":"Your single point of contactâdeeply familiar with your business, supply base, and goalsâensuring seamless coordination and rapid issue resolution.","agents-cj-account-management-contract-terms-management":"Contract Terms Management","agents-cj-account-management-contract-terms-management--plural":"Contract Terms Management","agents-cj-account-management-professional-manager-liaison-point-item-2-desc":"A single âGold-levelâ account manager proactively coordinates factories, QC teams, and carriers on your behalf.","agents-cj-account-management-professional-manager-liaison-point-item-2-desc--plural":"A single âGold-levelâ account manager proactively coordinates factories, QC teams, and carriers on your behalf.","agents-cj-account-management-order-management-desc":"End-to-end P.O. oversightâfrom issuance to invoice reconciliation.","agents-cj-account-management-order-management-desc--plural":"End-to-end P.O. oversightâfrom issuance to invoice reconciliation.","agents-cj-account-management-reporting-analytics-point-item-3-desc":"Data-driven decisions, systematic cost reduction, and continuous process improvement.","agents-cj-account-management-reporting-analytics-point-item-3-desc--plural":"Data-driven decisions, systematic cost reduction, and continuous process improvement.","agents-cj-account-management-order-management":"Order Management","agents-cj-account-management-order-management--plural":"Order Management","agents-cj-account-management-strategic-contract-oversight":"Strategic Contract Oversight","agents-cj-account-management-strategic-contract-oversight--plural":"Strategic Contract Oversight","agents-cj-account-management-order-management-point-item-2-tilte":"Solution:","agents-cj-account-management-order-management-point-item-2-tilte--plural":"Solution:","agents-cj-account-management-contract-terms-management-desc":"Clear, optimized agreements that protect your margins and schedule.","agents-cj-account-management-contract-terms-management-desc--plural":"Clear, optimized agreements that protect your margins and schedule.","agents-cj-account-management-gold-level-dedicated-manager":"Gold-Level Dedicated Manager","agents-cj-account-management-gold-level-dedicated-manager--plural":"Gold-Level Dedicated Manager","agents-cj-account-management-manual-order-tracking":"Manual order tracking","agents-cj-account-management-manual-order-tracking--plural":"Manual order tracking","agents-cj-account-management-live-logistics-command-control":"Live Logistics Command & Control","agents-cj-account-management-live-logistics-command-control--plural":"Live Logistics Command & Control","agents-cj-account-management-reporting-analytics-point-item-3-tilte":"Benefit:","agents-cj-account-management-reporting-analytics-point-item-3-tilte--plural":"Benefit:","agents-cj-account-management-mixed-messages":"Mixed messages","agents-cj-account-management-mixed-messages--plural":"Mixed messages","agents-cj-account-management-cost-overruns":"Cost overruns & disputes","agents-cj-account-management-cost-overruns--plural":"Cost overruns & disputes","agents-cj-account-management-logistics-monitoring-point-item-1-desc":"âI donât know when my goods will arriveâor if theyâve left the port.â","agents-cj-account-management-logistics-monitoring-point-item-1-desc--plural":"âI donât know when my goods will arriveâor if theyâve left the port.â","agents-cj-account-management-order-management-point-item-1-tilte":"Pain:","agents-cj-account-management-order-management-point-item-1-tilte--plural":"Pain:","agents-cj-account-management-reporting-analytics-point-item-2-desc":"Custom KPIs, interactive dashboards, and monthly business-review packages that analyze COGS, lead times, defect rates, and more.","agents-cj-account-management-reporting-analytics-point-item-2-desc--plural":"Custom KPIs, interactive dashboards, and monthly business-review packages that analyze COGS, lead times, defect rates, and more.","agents-cj-account-management-professional-manager-liaison-point-item-1-tilte":"Pain:","agents-cj-account-management-professional-manager-liaison-point-item-1-tilte--plural":"Pain:","agents-cj-account-management-subscription ":"Subscription ","agents-cj-account-management-subscription --plural":"Subscription ","agents-cj-account-management-logistics-monitoring-point-item-1-tilte":"Pain:","agents-cj-account-management-logistics-monitoring-point-item-1-tilte--plural":"Pain:","agents-cj-account-management-blind-spots-in-logistics":"Blind spots in logistics","agents-cj-account-management-blind-spots-in-logistics--plural":"Blind spots in logistics","agents-cj-account-management-reporting-analytics-point-item-2-tilte":"Solution:","agents-cj-account-management-reporting-analytics-point-item-2-tilte--plural":"Solution:","agents-cj-account-management-strategic-contract-oversight-desc":"Our manager negotiates and enforces clear SLAs, MOQs, and payment termsâeliminating hidden costs and protecting your margins.","agents-cj-account-management-strategic-contract-oversight-desc--plural":"Our manager negotiates and enforces clear SLAs, MOQs, and payment termsâeliminating hidden costs and protecting your margins.","agents-cj-account-management-faq-4":"Can the Account Manager negotiate better terms with suppliers?","agents-cj-account-management-faq-4--plural":"Can the Account Manager negotiate better terms with suppliers?","agents-cj-account-management-faq-3":"Can my Account Manager help with urgent escalations?","agents-cj-account-management-faq-3--plural":"Can my Account Manager help with urgent escalations?","agents-cj-account-management-faq-6":"Will my Account Manager help track shipments and customs clearance?","agents-cj-account-management-faq-6--plural":"Will my Account Manager help track shipments and customs clearance?","agents-cj-account-management-faq-5":"Is this service suitable for small businesses or only high-volume clients?","agents-cj-account-management-faq-5--
31657plural":"Is this service suitable for small businesses or only high-volume clients?","agents-cj-account-management-faq-2":"Is the Account Manager familiar with my industry?","agents-cj-account-management-faq-2--plural":"Is the Account Manager familiar with my industry?","agents-cj-account-management-order-management-point-item-1-desc":"âOur P.O. process is error-prone and time-consuming.â","agents-cj-account-management-order-management-point-item-1-desc--plural":"âOur P.O. process is error-prone and time-consuming.â","agents-cj-account-management-logistics-monitoring-point-item-2-tilte":"Solution:","agents-cj-account-management-logistics-monitoring-point-item-2-tilte--plural":"Solution:","agents-cj-account-management-faq-1":"What does an Account Manager do for my business?","agents-cj-account-management-faq-1--plural":"What does an Account Manager do for my business?","agents-cj-account-management-professional-manager-liaison-point-item-3-desc":"Faster issue resolution, unified strategy, and one-stop accountability.","agents-cj-account-management-professional-manager-liaison-point-item-3-desc--plural":"Faster issue resolution, unified strategy, and one-stop accountability.","agents-cj-account-management-ready-to-transform-your-order-fulfillment-speed":"Ready to Transform Your Order Fulfillment Speed?","agents-cj-account-management-ready-to-transform-your-order-fulfillment-speed--plural":"Ready to Transform Your Order Fulfillment Speed?","agents-cj-account-management-faq-4-answer":"Yes. Your manager works on your behalf to negotiate MOQs, payment terms, lead times, and service levels that align with your business goals.","agents-cj-account-management-faq-4-answer--plural":"Yes. Your manager works on your behalf to negotiate MOQs, payment terms, lead times, and service levels that align with your business goals.","agents-cj-account-management-logistics-monitoring":"Logistics Monitoring","agents-cj-account-management-logistics-monitoring--plural":"Logistics Monitoring","agents-cj-account-management-order-management-point-item-2-desc":"Automated P.O. workflows with digital approvals, P.O. status dashboards, and invoice matching.","agents-cj-account-management-order-management-point-item-2-desc--plural":"Automated P.O. workflows with digital approvals, P.O. status dashboards, and invoice matching.","agents-cj-account-management-order-management-point-item-3-tilte":"Benefit:","agents-cj-account-management-order-management-point-item-3-tilte--plural":"Benefit:","agents-cj-account-management-contract-terms-management-point-item-1-tilte":"Pain:","agents-cj-account-management-contract-terms-management-point-item-1-tilte--plural":"Pain:","agents-cj-account-management-end-to-end-order-governance":"End-to-End Order Governance","agents-cj-account-management-end-to-end-order-governance--plural":"End-to-End Order Governance","agents-cj-account-management-reporting-analytics-point-item-1-tilte":"Pain:","agents-cj-account-management-reporting-analytics-point-item-1-tilte--plural":"Pain:","agents-cj-account-management-logistics-monitoring-point-item-3-tilte":"Benefit:","agents-cj-account-management-logistics-monitoring-point-item-3-tilte--plural":"Benefit:","agents-cj-account-management-unclear-terms":"Unclear terms","agents-cj-account-management-unclear-terms--plural":"Unclear terms","agents-cj-account-management-order-management-point-item-3-desc":"Zero manual re-keying, instantaneous visibility on every order\'s status.","agents-cj-account-management-order-management-point-item-3-desc--plural":"Zero manual re-keying, instantaneous visibility on every order\'s status.","agents-cj-account-management-no-early-warnings":"No early warnings","agents-cj-account-management-no-early-warnings--plural":"No early warnings","agents-cj-account-management-multiple-points-of-contact":"Multiple points of contact","agents-cj-account-management-multiple-points-of-contact--plural":"Multiple points of contact","agents-cj-account-management-contract-terms-management-point-item-1-desc":"Hidden fees and shifting lead-times derail my forecasts.","agents-cj-account-management-contract-terms-management-point-item-1-desc--plural":"Hidden fees and shifting lead-times derail my forecasts.","agents-cj-account-management-logistics-monitoring-point-item-3-desc":"Complete transparency, fewer surprises, and on-time performance above 98%.","agents-cj-account-management-logistics-monitoring-point-item-3-desc--plural":"Complete transparency, fewer surprises, and on-time performance above 98%.","agents-cj-account-management-contract-terms-management-point-item-3-desc":"Hidden fees and shifting lead-times derail my forecasts.","agents-cj-account-management-contract-terms-management-point-item-3-desc--plural":"Hidden fees and shifting lead-times derail my forecasts.","agents-cj-account-management-faq-1-answer":"Your Account Manager acts as your dedicated point of contactâoverseeing sourcing, order flow, logistics, communication with suppliers, and performance reporting.","agents-cj-account-management-faq-1-answer--plural":"Your Account Manager acts as your dedicated point of contactâoverseeing sourcing, order flow, logistics, communication with suppliers, and performance reporting.","agents-cj-account-management-errors-delays":"Errors & delays","agents-cj-account-management-errors-delays--plural":"Errors & delays","agents-cj-account-management-logistics-monitoring-desc":"Live tracking & rapid escalation across every shipment milestone.","agents-cj-account-management-logistics-monitoring-desc--plural":"Live tracking & rapid escalation across every shipment milestone.","agents-cj-account-management-professional-manager-liaison-point-item-2-tilte":"Solution:","agents-cj-account-management-professional-manager-liaison-point-item-2-tilte--plural":"Solution:","agents-cj-account-management-faq-3-answer":"Absolutely. Your manager provides fast-track escalation paths for supplier issues, order delays, and customs problems to minimize business disruption.","agents-cj-account-management-faq-3-answer--plural":"Absolutely. Your manager provides fast-track escalation paths for supplier issues, order delays, and customs problems to minimize business disruption.","agents-cj-account-management-faq-5-answer":"Both. Whether you\'re scaling or already high-volume, the service is tailored to help you streamline and grow with less operational burden.","agents-cj-account-management-faq-5-answer--plural":"Both. Whether you\'re scaling or already high-volume, the service is tailored to help you streamline and grow with less operational burden.","agents-cj-account-management-customized-reporting-insights":"Customized Reporting & Insights","agents-cj-account-management-customized-reporting-insights--plural":"Customized Reporting & Insights","agents-cj-account-management-contract-terms-management-point-item-3-tilte":"Benefit:","agents-cj-account-management-contract-terms-management-point-item-3-tilte--plural":"Benefit:","agents-cj-account-management-schedule-your-free-fulfillment-audits":"Schedule Your Free Fulfillment Audits","agents-cj-account-management-schedule-your-free-fulfillment-audits--plural":"Schedule Your Free Fulfillment Audits","agents-cj-account-management-logistics-monitoring-point-item-2-desc":"Real-time shipment tracking, proactive delay alerts, and dedicated escalation for customs or carrier issues.","agents-cj-account-management-logistics-monitoring-point-item-2-desc--plural":"Real-time shipment tracking, proactive delay alerts, and dedicated escalation for customs or carrier issues.","agents-cj-account-management-kick-off":"Kick-off","agents-cj-account-management-kick-off--plural":"Kick-off","agents-cj-account-management-po-execution":"P.O. Execution","agents-cj-account-management-po-execution--plural":"P.O. Execution","agents-cj-account-management-contract-terms-management-point-item-2-tilte":"Solution:","agents-cj-account-management-contract-terms-management-point-item-2-tilte--plural":"Solution:","agents-cj-account-management-live-logistics-command-control-desc":"With direct access to carrier dashboards and customs brokers, your manager monitors shipments 24/7 and expedites any delays.","agents-cj-account-management-live-logistics-command-control-desc--plural":"With direct access to carrier dashboards and customs brokers, your manager monitors shipments 24/7 and expedites any delays.","agents-cj-account-management-professional-manager-liaison-desc":"A dedicated expert who champions your project and streamlines communication.","agents-cj-account-management-professional-manager-liaison-desc--plural":"A dedicated expert who champions your project and streamlines communication.","agents-cj-account-management-reporting-analytics-desc":"Custom dashboards & monthly reviews that surface cost-savings and performance wins.","agents-cj-account-management-reporting-analytics-desc--plural":"Custom dashboards & monthly reviews that surface cost-savings and performance wins.","agents-cj-account-management-logistics-oversight":"Logistics Oversight","agents-cj-account-management-logistics-oversight--plural":"Logistics Oversight","agents-cj-account-management-customized-reporting-insights-desc":"Receive tailored dashboards and monthly business reviews designed by your manager to spotlight cost-savings, performance wins, and growth opportunities.","agents-cj-account-management-customized-reporting-insights-desc--plural":"Receive tailored dashboards and monthly business reviews designed by your manager to spotlight cost-savings, performance wins, and growth opportunities.","agents-cj-account-management-monthly-review":"Monthly Review","agents-cj-account-management-monthly-review--plural":"Monthly Review","agents-cj-account-management-manager-assignment":"Manager Assignment","agents-cj-account-management-manager-assignment--plural":"Manager Assignment","agents-cj-account-management-reporting-analytics-point-item-1-desc":"âI lack the data to improve my supply chain.â","agents-cj-account-management-reporting-analytics-point-item-1-desc--plural":"âI lack the data to improve my supply chain.â","agents-cj-account-management-professional-manager-liaison":"Professional Manager Liaison","agents-cj-account-management-professional-manager-liaison--plural":"Professional Manager Liaison","agents-cj-account-management-contract-terms-management-point-item-2-desc":"We draft, negotiate, and enforce clear MOQs, payment terms, penalties, and change-order clauses.","agents-cj-account-management-contract-terms-management-point-item-2-desc--plural":"We draft, negotiate, and enforce clear MOQs, payment terms, penalties, and change-order clauses.","agents-cj-account-management-reporting-analytics":"Reporting & Analytics","agents-cj-account-management-reporting-analytics--plural":"Reporting & Analytics","agents-cj-account-management-faq-2-answer":"Yes. We assign Account Managers with experience relevant to your niche, ensuring they understand your supply chain needs and product specifications.","agents-cj-account-management-faq-2-answer--plural":"Yes. We assign Account Managers with experience relevant to your niche, ensuring they understand your supply chain needs and product specifications.","agents-cj-account-management-faq-6-answer":"Yes. Your manager has access to real-time logistics tools and will proactively monitor and resolve shipping or customs-related issues.","agents-cj-account-management-faq-6-answer--plural":"Yes. Your manager has access to real-time logistics tools and will proactively monitor and resolve shipping or customs-related issues.","common-mycj-menu-3pl-inventory":"Inventory","common-mycj-menu-3pl-export-list":"Export List","common-mycj-menu-3pl-orders-fulfillment":"Fulfillment","common-mycj-menu-3pl-orders-fulfillment--plural":"Fulfillment","common-mycj-menu-3pl-store-products":"Store Products","common-mycj-menu-3pl-partnership":"Partnership","common-mycj-menu-3pl-store-products-tip":"Check here for your store products, where you can make product connections.","common-mycj-menu-3pl-ticket":"Ticket","common-mycj-menu-3pl-disputes":"Disputes","common-mycj-menu-3pl-fulfillment-status":"Fulfillment Status","common-mycj-menu-3pl-custom-packaging":"Custom Packaging","common-mycj-menu-3pl-setting":"Settings","common-mycj-menu-3pl-inventory-orders":"Inventory Orders","common-mycj-menu-3pl-shipment":"Shipment","common-mycj-menu-3pl-credit-service":"Credit Service","common-mycj-menu-3pl-credit-service--plural":"Credit Service","common-mycj-menu-3pl-my-inventory-tip":"Check your inventory here if you have brought private inventory, packaging, or deposit inventory.","common-mycj-menu-3pl-authorization-new":"Apps","common-mycj-menu-3pl-authorization-new--plural":"Apps","common-mycj-menu-3pl-my-products":"My Products","common-mycj-menu-3pl-shopify":"Shopify","common-mycj-menu-3pl-custom-packaging-tip":"Purchase or design packaging and connect packages with your products.","common-mycj-menu-3pl-my-inventory":"My Inventory","common-mycj-menu-3pl-undelivered-orders":"Undelivered Orders","common-mycj-menu-3pl-sales-orders":"Sales Orders","common-mycj-menu-3pl-sales-orders--plural":"Sales Orders","common-mycj-menu-3pl-affiliate":"Affiliate","common-mycj-menu-3pl-wallet":"Wallet","common-mycj-menu-3pl-orders":"Orders","common-mycj-3pl-my-account":"My Account","common-mycj-3pl-my-account--plural":"My Account","common-mycj-menu-3pl-products":"Products","my-profile-once-the-switch-is-enabled-accessing":"Once the switch is enabled, accessing the app via a Shopify link will automatically log you into your account. This may lead to insecure account access, so please enable with caution.â","my-profile-once-the-switch-is-enabled-accessing--plural":"Once the switch is enabled, accessing the app via a Shopify link will automatically log you into your account. This may lead to insecure account access, so please enable with caution.â","my-profile-shopify-redirect-auto-login":"Shopify redirect auto-login","my-profile-shopify-redirect-auto-login--plural":"Shopify redirect auto-login","agents-faster-order-fulfillment-process-packaging-pre-check-subtitle-new":"Pre-Set Packaging","agents-faster-order-fulfillment-process-packaging-pre-check-subtitle-new--plural":"Pre-Set Packaging","agents-faster-order-fulfillment-pre-set-packaging-new":"Pre-Set Packaging","agents-faster-order-fulfillment-pre-set-packaging-new--plural":"Pre-Set Packaging","agents-faster-order-fulfillment-sign-up-free":"Sign Up Free","agents-faster-order-fulfillment-sign-up-free--plural":"Sign Up Free","agents-product-development-get-customized-strategy-new":"Get a Custom Strategy","agents-product-development-get-customized-strategy-new--plural":"Get a Custom Strategy","agents-shorten-delivery-time-key-benefits":"Key Be
31657nefits","agents-shorten-delivery-time-key-benefits--plural":"Key Benefits","agents-shorten-delivery-time-process-order-placement":"Order Placement","agents-shorten-delivery-time-process-order-placement--plural":"Order Placement","agents-product-development-process-trial-production":"Trial Production","agents-product-development-process-trial-production--plural":"Trial Production","agents-product-development-define-requirements-new":"Define Your Requirements","agents-product-development-define-requirements-new--plural":"Define Your Requirements","agents-product-development-contact-supply-chain-exper-new":"Consult a Supply Chain Expert","agents-product-development-contact-supply-chain-exper-new--plural":"Consult a Supply Chain Expert","agents-cogs-reduction-bloated-logistics-inventory-desc":"Misaligned strategies and high buffer stocks lead to soaring storage and transport expenses.","agents-cogs-reduction-bloated-logistics-inventory-desc--plural":"Misaligned strategies and high buffer stocks lead to soaring storage and transport expenses.","agents-cj-account-management-professional-manager-liaison-point-item-1-desc-new":"Who is my point of contact when issues arise?","agents-cj-account-management-professional-manager-liaison-point-item-1-desc-new--plural":"Who is my point of contact when issues arise?","agents-cj-account-management-professional-manager-liaison-point-item-2-desc-new":"A single âGold-Levelâ account manager proactively coordinates factories, QC teams, and carriers on your behalf.","agents-cj-account-management-professional-manager-liaison-point-item-2-desc-new--plural":"A single âGold-Levelâ account manager proactively coordinates factories, QC teams, and carriers on your behalf.","agents-cogs-reduction-production-inefficiencies":"Production Inefficiencies","agents-cogs-reduction-production-inefficiencies--plural":"Production Inefficiencies","agents-cogs-reduction-bloated-logistics-inventory":"Bloated Logistics & Inventory","agents-cogs-reduction-bloated-logistics-inventory--plural":"Bloated Logistics & Inventory","agents-cogs-reduction-production-inefficiencies-desc":"Suboptimal yields and line waste drive up your indirect costs per unit, directly eroding your profit margin.","agents-cogs-reduction-production-inefficiencies-desc--plural":"Suboptimal yields and line waste drive up your indirect costs per unit, directly eroding your profit margin.","agents-cj-account-management-sign-up-free":"Sign Up Free","agents-cj-account-management-sign-up-free--plural":"Sign Up Free","agents-cogs-reduction-weak-supplier-leverage-desc":"Limited sourcing options and no market intelligence undermine your negotiation power.","agents-cogs-reduction-weak-supplier-leverage-desc--plural":"Limited sourcing options and no market intelligence undermine your negotiation power.","agents-cj-account-management-contract-terms-management-point-item-3-desc-new":"Secure, transparent pricing and predictable lead-time commitments.","agents-cj-account-management-contract-terms-management-point-item-3-desc-new--plural":"Secure, transparent pricing and predictable lead-time commitments.","agents-cogs-reduction-weak-supplier-leverage":"Weak Supplier Leverage","agents-cogs-reduction-weak-supplier-leverage--plural":"Weak Supplier Leverage","agents-cogs-reduction-opaque-cost-structure":"Opaque Cost Structure","agents-cogs-reduction-opaque-cost-structure--plural":"Opaque Cost Structure","agents-cogs-reduction-opaque-cost-structure-desc":"Lack of clear breakdowns across materials, labor, and logistics, making targeted savings impossible.","agents-cogs-reduction-opaque-cost-structure-desc--plural":"Lack of clear breakdowns across materials, labor, and logistics, making targeted savings impossible.","agents-cogs-reduction-faq-4-answer-new":"Yes-we partner with bonded, FBA prep, and 3PL warehouses in North America, EU, and Asia.","agents-cogs-reduction-faq-4-answer-new--plural":"Yes-we partner with bonded, FBA prep, and 3PL warehouses in North America, EU, and Asia.","agents-customer-success-growth-hands-on-case-application-desc":"We don\'t just share success stories; your manager guides you through adapting proven tactics to your unique context.","agents-customer-success-growth-hands-on-case-application-desc--plural":"We don\'t just share success stories; your manager guides you through adapting proven tactics to your unique context.","agents-customer-success-growth-gap-between-insights-and-execution":"Gap Between Insights and Execution","agents-customer-success-growth-gap-between-insights-and-execution--plural":"Gap Between Insights and Execution","agents-customer-success-growth-underleveraged-success-models-desc":"Failure to systematically replicate best practices from top-performing cases, leading to inefficiencies and avoidable mistakes.","agents-customer-success-growth-underleveraged-success-models-desc--plural":"Failure to systematically replicate best practices from top-performing cases, leading to inefficiencies and avoidable mistakes.","agents-customer-success-growth-performance-review-iteration":"Performance Review & Iteration","agents-customer-success-growth-performance-review-iteration--plural":"Performance Review & Iteration","agents-customer-success-growth-ineffective-marketing-efforts-desc":"Scattered campaigns and unfocused messaging result in low ROI and wasted ad spend.","agents-customer-success-growth-ineffective-marketing-efforts-desc--plural":"Scattered campaigns and unfocused messaging result in low ROI and wasted ad spend.","agents-cogs-reduction-warehousing-logistics-highlight-new":"Opening bonded warehouses in Germany and the U.S. (combined â¬5,000/mo.) saved an average of â¬2.20 per order in shipping and VAT-over â¬50,000 annually.","agents-cogs-reduction-warehousing-logistics-highlight-new--plural":"Opening bonded warehouses in Germany and the U.S. (combined â¬5,000/mo.) saved an average of â¬2.20 per order in shipping and VAT-over â¬50,000 annually.","agents-cogs-reduction-faq-1-answer-new":"Typical savings range from 5-20% depending on your volumes and product complexity.","agents-cogs-reduction-faq-1-answer-new--plural":"Typical savings range from 5-20% depending on your volumes and product complexity.","agents-cogs-reduction-get-customized-strategy-new":"Get a Custom Strategy","agents-cogs-reduction-get-customized-strategy-new--plural":"Get a Custom Strategy","agents-customer-success-growth-kickoff-goal-setting":"Kickoff & Goal-Setting","agents-customer-success-growth-kickoff-goal-setting--plural":"Kickoff & Goal-Setting","agents-customer-success-growth-real-time-performance-tracking-desc":"With direct access to carrier dashboards and customs brokers, your manager monitors shipments 24/7 and expedites any delays.","agents-customer-success-growth-real-time-performance-tracking-desc--plural":"With direct access to carrier dashboards and customs brokers, your manager monitors shipments 24/7 and expedites any delays.","agents-customer-success-growth-underleveraged-success-models":"Underleveraged Success Models","agents-customer-success-growth-underleveraged-success-models--plural":"Underleveraged Success Models","agents-customer-success-growth-faq-1-answer":"A strategic partnership where we combine market intelligence, tailored marketing guidance, and actionable plans to help you grow faster and more sustainably.","agents-customer-success-growth-faq-1-answer--plural":"A strategic partnership where we combine market intelligence, tailored marketing guidance, and actionable plans to help you grow faster and more sustainably.","agents-customer-success-growth-ready-to-transform-your-order-fulfillment-speed":"Ready to Transform Your Order Fulfillment Speed?","agents-customer-success-growth-ready-to-transform-your-order-fulfillment-speed--plural":"Ready to Transform Your Order Fulfillment Speed?","agents-cogs-reduction-robust-risk-mitigation-desc-new":"We build early-warning systems for price volatility, supply disruptions, and currency swings-paired with contingency planning-to keep your operations steady.","agents-cogs-reduction-robust-risk-mitigation-desc-new--plural":"We build early-warning systems for price volatility, supply disruptions, and currency swings-paired with contingency planning-to keep your operations steady.","agents-cogs-reduction-customized-sustainable-roadmap-desc-new":"Beyond one-off savings, we create a continuous improvement blueprint-complete with governance, KPIs, and change-management support-to lock
31657in lower COGS for the long term.","agents-cogs-reduction-customized-sustainable-roadmap-desc-new--plural":"Beyond one-off savings, we create a continuous improvement blueprint-complete with governance, KPIs, and change-management support-to lock in lower COGS for the long term.","agents-customer-success-growth-hands-on-case-application":"Hands-On Case Application","agents-customer-success-growth-hands-on-case-application--plural":"Hands-On Case Application","agents-cogs-reduction-product-packaging-highlight-new":"Replacing a 500g corrugated box with a 350g reinforced mailer cut packaging cost by 18% and international shipping by 12%.","agents-cogs-reduction-product-packaging-highlight-new--plural":"Replacing a 500g corrugated box with a 350g reinforced mailer cut packaging cost by 18% and international shipping by 12%.","agents-customer-success-growth-uncertain-expansion-path-desc":"No clear roadmap for entering new regions or verticals, creating hesitation and risk in growth initiatives.","agents-customer-success-growth-uncertain-expansion-path-desc--plural":"No clear roadmap for entering new regions or verticals, creating hesitation and risk in growth initiatives.","agents-customer-success-growth-schedule-your-free-fulfillment-audits":"Schedule Your Free Fulfillment Audits","agents-customer-success-growth-schedule-your-free-fulfillment-audits--plural":"Schedule Your Free Fulfillment Audits","agents-customer-success-growth-ineffective-marketing-efforts":"Ineffective Marketing Efforts","agents-customer-success-growth-ineffective-marketing-efforts--plural":"Ineffective Marketing Efforts","agents-customer-success-growth-gap-between-insights-and-execution-desc":"Data reports exist but lack actionable, step-by-step plans to turn insights into results.","agents-customer-success-growth-gap-between-insights-and-execution-desc--plural":"Data reports exist but lack actionable, step-by-step plans to turn insights into results.","agents-customer-success-growth-faq-4-answer":"You receive bi-weekly playbooks with specific tasks, owners, due dates, and alignment to your KPIs, all tracked in a shared project board.","agents-customer-success-growth-faq-4-answer--plural":"You receive bi-weekly playbooks with specific tasks, owners, due dates, and alignment to your KPIs, all tracked in a shared project board.","agents-customer-success-growth-cross-functional-coordination-desc":"Receive tailored dashboards and monthly business reviews designed by your manager to spotlight cost-savings, performance wins, and growth opportunities.","agents-customer-success-growth-cross-functional-coordination-desc--plural":"Receive tailored dashboards and monthly business reviews designed by your manager to spotlight cost-savings, performance wins, and growth opportunities.","agents-customer-success-growth-real-time-performance-tracking":"Real-Time Performance Tracking","agents-customer-success-growth-real-time-performance-tracking--plural":"Real-Time Performance Tracking","agents-customer-success-growth-dedicated-success-manager-desc":"Your personal strategic partnerâdeeply versed in your product, market, and goalsâensuring every recommendation aligns with your KPIs.","agents-customer-success-growth-dedicated-success-manager-desc--plural":"Your personal strategic partnerâdeeply versed in your product, market, and goalsâensuring every recommendation aligns with your KPIs.","agents-cogs-reduction-proven-track-record-roi-focus-desc-new":"Clients benefit from our track record of delivering 5-15% COGS reductions within 6-12 months, ensuring tangible bottom-line impact and quick payback.","agents-cogs-reduction-proven-track-record-roi-focus-desc-new--plural":"Clients benefit from our track record of delivering 5-15% COGS reductions within 6-12 months, ensuring tangible bottom-line impact and quick payback.","agents-cogs-reduction-desc-2-new":"Develop bulk-buy plans, packaging redesigns & sourcing scorecards.","agents-cogs-reduction-desc-2-new--plural":"Develop bulk-buy plans, packaging redesigns & sourcing scorecards.","agents-customer-success-growth-proactive-market-intelligence-desc":"Your manager delivers ahead-of-curve trend alerts and competitive insights, so you pivot before your rivals do.","agents-customer-success-growth-proactive-market-intelligence-desc--plural":"Your manager delivers ahead-of-curve trend alerts and competitive insights, so you pivot before your rivals do.","agents-customer-success-growth-lack-of-market-visibility-desc":"Unable to capture real-time industry trends and consumer shifts, leading to delayed decisions and missed opportunities.","agents-customer-success-growth-lack-of-market-visibility-desc--plural":"Unable to capture real-time industry trends and consumer shifts, leading to delayed decisions and missed opportunities.","agents-customer-success-growth-faq-4":"How are action recommendations delivered?","agents-customer-success-growth-faq-4--plural":"How are action recommendations delivered?","agents-customer-success-growth-faq-5":"How quickly can I expect to see results?","agents-customer-success-growth-faq-5--plural":"How quickly can I expect to see results?","agents-customer-success-growth-uncertain-expansion-path":"Uncertain Expansion Path","agents-customer-success-growth-uncertain-expansion-path--plural":"Uncertain Expansion Path","agents-customer-success-growth-faq-2":"Who will lead my account?","agents-customer-success-growth-faq-2--plural":"Who will lead my account?","agents-customer-success-growth-faq-3":"How do you recommend new markets for expansion?","agents-customer-success-growth-faq-3--plural":"How do you recommend new markets for expansion?","agents-customer-success-growth-faq-1":"What is âDriving Customer Successâ?","agents-customer-success-growth-faq-1--plural":"What is âDriving Customer Successâ?","agents-cogs-reduction-production-efficiency-yield-improvement-desc-new":"Through lean manufacturing audits and Six Sigma principles, we help you boost line throughput and product yield-reducing scrap, rework, and indirect cost allocation.","agents-cogs-reduction-production-efficiency-yield-improvement-desc-new--plural":"Through lean manufacturing audits and Six Sigma principles, we help you boost line throughput and product yield-reducing scrap, rework, and indirect cost allocation.","agents-customer-success-growth-data-gathering-analysis":"Data Gathering & Analysis","agents-customer-success-growth-data-gathering-analysis--plural":"Data Gathering & Analysis","agents-cogs-reduction-desc-4-new":"Monitor KPIs, renegotiate, and realize incremental savings.","agents-cogs-reduction-desc-4-new--plural":"Monitor KPIs, renegotiate, and realize incremental savings.","agents-cogs-reduction-faq-2-answer-new":"No-our lean pack designs are pilot-tested for packing speed and drop-testing.","agents-cogs-reduction-faq-2-answer-new--plural":"No-our lean pack designs are pilot-tested for packing speed and drop-testing.","agents-customer-success-growth-sign-up-free":"Sign Up Free","agents-customer-success-growth-sign-up-free--plural":"Sign Up Free","agents-cogs-reduction-define-requirements-new":"Define Your Requirements","agents-cogs-reduction-define-requirements-new--plural":"Define Your Requirements","agents-customer-success-growth-faq-3-answer":"We assess demand signals, regulatory hurdles, logistics feasibility, and competitive landscapes to produce a prioritized âMarket Entry Scorecardâ.","agents-customer-success-growth-faq-3-answer--plural":"We assess demand signals, regulatory hurdles, logistics feasibility, and competitive landscapes to produce a prioritized âMarket Entry Scorecardâ.","agents-customer-success-growth-faq-5-answer":"Many clients report noticeable upliftsâlike improved conversion rates or faster market launchesâwithin the first 6â8 weeks of engagement.","agents-customer-success-growth-faq-5-answer--plural":"Many clients report noticeable upliftsâlike improved conversion rates or faster market launchesâwithin the first 6â8 weeks of engagement.","agents-customer-success-growth-lack-of-market-visibility":"Lack of Market Visibility","agents-customer-success-growth-lack-of-market-visibility--plural":"Lack of Market Visibility","agents-customer-success-growth-proactive-market-intelligence":"Proactive Market Intelligence","agents-customer-success-growth-proactive-market-intelligence--plural":"Proactive Market Intelligence","agents-customer-success-growth-cross-functional-coordination":"Cross-Functional Coordination","agents-customer-success-growth-cross-functional-coordination--plural":"Cross-Functional Coordination","agents-customer-success-growth-strategy-co-creation":"Strategy Co-Creation","agents-customer-success-growth-strategy-co-creation--plural":"Strategy Co-Creation","agents-customer-success-growth-action-plan-delivery":"Action Plan Delivery","agents-customer-success-growth-action-plan-delivery--plural":"Action Plan Delivery","agents-customer-success-growth-dedicated-success-manager"
31657:"Dedicated Success Manager","agents-customer-success-growth-dedicated-success-manager--plural":"Dedicated Success Manager","agents-cogs-reduction-end-to-end-cost-transparency-desc-new":"We deliver a unified platform that breaks down every cost driver-from raw materials and labor to logistics-so you can pinpoint savings opportunities with surgical precision.","agents-cogs-reduction-end-to-end-cost-transparency-desc-new--plural":"We deliver a unified platform that breaks down every cost driver-from raw materials and labor to logistics-so you can pinpoint savings opportunities with surgical precision.","agents-cogs-reduction-contact-supply-chain-exper-new":"Consult a Supply Chain Expert","agents-cogs-reduction-contact-supply-chain-exper-new--plural":"Consult a Supply Chain Expert","agents-customer-success-growth-faq-2-answer":"Youâll have a dedicated Customer Success Manager (CSM) who knows your business inside and out and serves as your single point of contact.","agents-customer-success-growth-faq-2-answer--plural":"Youâll have a dedicated Customer Success Manager (CSM) who knows your business inside and out and serves as your single point of contact.","agents-visiting-guide-quality-audit-expertise":"Guided factory walkthroughs, spot inspections, and coordination of ISO/BSCI lab tests or material analyses.","agents-visiting-guide-quality-audit-expertise--plural":"Guided factory walkthroughs, spot inspections, and coordination of ISO/BSCI lab tests or material analyses.","agents-visiting-guide-one-stop-itinerary-planning":"One-Stop Itinerary Planning","agents-visiting-guide-one-stop-itinerary-planning--plural":"One-Stop Itinerary Planning","agents-visiting-guide-quality-audit-deliverable":"Audit report with photo evidence, risk ratings, and corrective-action recommendations.","agents-visiting-guide-quality-audit-deliverable--plural":"Audit report with photo evidence, risk ratings, and corrective-action recommendations.","agents-visiting-guide-one-stop-itinerary-planning-desc":"We craft a visit schedule perfectly aligned with your business goalsâoptimizing factory tours, trade-show slots, and market visits to maximize every day on the ground.","agents-visiting-guide-one-stop-itinerary-planning-desc--plural":"We craft a visit schedule perfectly aligned with your business goalsâoptimizing factory tours, trade-show slots, and market visits to maximize every day on the ground.","agents-visiting-guide-supplier-assessment-deliverable":"Shortlist matrix ranking each supplier on cost, quality, capacity, and strategic fit.","agents-visiting-guide-supplier-assessment-deliverable--plural":"Shortlist matrix ranking each supplier on cost, quality, capacity, and strategic fit.","agents-visiting-guide-negotiation-support-expertise":"Professional interpreters with industry know-how and real-time coaching on Chinese business etiquette.","agents-visiting-guide-negotiation-support-expertise--plural":"Professional interpreters with industry know-how and real-time coaching on Chinese business etiquette.","agents-visiting-guide-faq-5-answer":"Youâll receive a detailed rating of each factoryâs capacity, compliance credentials, past performance, and risk factors.","agents-visiting-guide-faq-5-answer--plural":"Youâll receive a detailed rating of each factoryâs capacity, compliance credentials, past performance, and risk factors.","agents-visiting-guide-rigorous-quality-audits-desc":"On-site production-line inspections combined with third-party lab testing pin down hidden defects and compliance risks before you commit.","agents-visiting-guide-rigorous-quality-audits-desc--plural":"On-site production-line inspections combined with third-party lab testing pin down hidden defects and compliance risks before you commit.","agents-visiting-guide-faq-1-answer":"Absolutely. We tailor factory visits, trade-show sessions, and market tours specifically to your industry and product needs.","agents-visiting-guide-faq-1-answer--plural":"Absolutely. We tailor factory visits, trade-show sessions, and market tours specifically to your industry and product needs.","agents-visiting-guide-faq-6":"Do you offer virtual follow-up after the trip?","agents-visiting-guide-faq-6--plural":"Do you offer virtual follow-up after the trip?","agents-visiting-guide-faq-5":"What is included in the post-trip Supplier Assessment report?","agents-visiting-guide-faq-5--
31657plural":"What is included in the post-trip Supplier Assessment report?","agents-visiting-guide-faq-4":"Can you help negotiate payment and shipping terms?","agents-visiting-guide-faq-4--plural":"Can you help negotiate payment and shipping terms?","agents-visiting-guide-faq-3-answer":"We perform production-line walkthroughs, spot checks, AQL sampling, and coordinate third-party lab tests when required.","agents-visiting-guide-faq-3-answer--plural":"We perform production-line walkthroughs, spot checks, AQL sampling, and coordinate third-party lab tests when required.","agents-visiting-guide-itinerary-planning-deliverable":"Detailed travel dossier (transport routes, local contacts, meeting briefs) that fits your objectives.","agents-visiting-guide-itinerary-planning-deliverable--plural":"Detailed travel dossier (transport routes, local contacts, meeting briefs) that fits your objectives.","agents-visiting-guide-deliverable-label":"Deliverable:","agents-visiting-guide-deliverable-label--plural":"Deliverable:","agents-visiting-guide-audit-negotiation":"Audit & Negotiation","agents-visiting-guide-audit-negotiation--plural":"Audit & Negotiation","agents-visiting-guide-faq-3":"How do you conduct on-site quality audits?","agents-visiting-guide-faq-3--plural":"How do you conduct on-site quality audits?","agents-visiting-guide-faq-2":"What qualifications do your interpreters have?","agents-visiting-guide-faq-2--plural":"What qualifications do your interpreters have?","agents-visiting-guide-faq-1":"Can you customize the itinerary based on my product category?","agents-visiting-guide-faq-1--plural":"Can you customize the itinerary based on my product category?","agents-visiting-guide-itinerary-briefing":"Itinerary & Briefing","agents-visiting-guide-itinerary-briefing--plural":"Itinerary & Briefing","agents-visiting-guide-wasted-time-in-traffic-and-unproductive-meetings":"Wasted time in traffic and unproductive meetings","agents-visiting-guide-wasted-time-in-traffic-and-unproductive-meetings--plural":"Wasted time in traffic and unproductive meetings","agents-visiting-guide-itinerary-planning-desc":"Streamlined schedules that pack high-value factory visits, trade shows, and market tours in minimal days.","agents-visiting-guide-itinerary-planning-desc--plural":"Streamlined schedules that pack high-value factory visits, trade shows, and market tours in minimal days.","agents-visiting-guide-quality-audit-challenge":"Surface-level visits miss hidden defects and non-compliance.","agents-visiting-guide-quality-audit-challenge--plural":"Surface-level visits miss hidden defects and non-compliance.","agents-visiting-guide-language-barriers-that-weaken-negotiation-leverage":"Language barriers that weaken negotiation leverage","agents-visiting-guide-language-barriers-that-weaken-negotiation-leverage--plural":"Language barriers that weaken negotiation leverage","agents-visiting-guide-professional-negotiation-support":"Professional Negotiation Support","agents-visiting-guide-professional-negotiation-support--plural":"Professional Negotiation Support","agents-visiting-guide-negotiation-support-deliverable":"Negotiation playbook & on-site interpreter backing every discussion, plus written summaries of agreed terms.","agents-visiting-guide-negotiation-support-deliverable--plural":"Negotiation playbook & on-site interpreter backing every discussion, plus written summaries of agreed terms.","agents-visiting-guide-negotiation-support":"Negotiation Support","agents-visiting-guide-negotiation-support--plural":"Negotiation Support","agents-visiting-guide-faq-6-answer":"We conduct debrief calls, assist with sample approvals, and help transition into production planning remotely.","agents-visiting-guide-faq-6-answer--plural":"We conduct debrief calls, assist with sample approvals, and help transition into production planning remotely.","agents-visiting-guide-challenge-label":"Challenge:","agents-visiting-guide-challenge-label--plural":"Challenge:","agents-visiting-guide-negotiation-support-challenge":"Language gaps and cultural nuances can cost you price concessions.","agents-visiting-guide-negotiation-support-challenge--plural":"Language gaps and cultural nuances can cost you price concessions.","agents-visiting-guide-faq-2-answer":"Our interpreters hold professional MandarinâEnglish translation certifications and have hands-on experience in manufacturing or trade negotiations.","agents-visiting-guide-faq-2-answer--plural":"Our interpreters hold professional MandarinâEnglish translation certifications and have hands-on experience in manufacturing or trade negotiations.","agents-shorten-delivery-time-process-production-acceleration":"Production Acceleration","agents-shorten-delivery-time-process-production-acceleration--plural":"Production Acceleration","agents-visiting-guide-consult":"Consult","agents-visiting-guide-consult--plural":"Consult","agents-visiting-guide-rigorous-quality-audits":"Rigorous Quality Audits","agents-visiting-guide-rigorous-quality-audits--plural":"Rigorous Quality Audits","agents-visiting-guide-post-trip-action-plan":"Post-Trip Action Plan","agents-visiting-guide-post-trip-action-plan--plural":"Post-Trip Action Plan","agents-visiting-guide-hidden-quality-issues-uncovered-too-late":"Hidden quality issues uncovered too late","agents-visiting-guide-hidden-quality-issues-uncovered-too-late--plural":"Hidden quality issues uncovered too late","agents-visiting-guide-request-a-custom-trip-itinerary":"Request a Custom Trip Itinerary","agents-visiting-guide-request-a-custom-trip-itinerary--
31657plural":"Request a Custom Trip Itinerary","agents-visiting-guide-unverified-suppliers-with-unknown-risks":"Unverified suppliers with unknown risks","agents-visiting-guide-unverified-suppliers-with-unknown-risks--plural":"Unverified suppliers with unknown risks","agents-visiting-guide-supplier-assessment-challenge":"Hard to differentiate genuine manufacturers from trading intermediaries.","agents-visiting-guide-supplier-assessment-challenge--plural":"Hard to differentiate genuine manufacturers from trading intermediaries.","agents-visiting-guide-supplier-assessment":"Supplier Assessment","agents-visiting-guide-supplier-assessment--plural":"Supplier Assessment","agents-visiting-guide-supplier-assessment-desc":"Comprehensive vettingâcapacity checks, compliance reviews, reference interviewsâto shortlist only reliable partners.","agents-visiting-guide-supplier-assessment-desc--plural":"Comprehensive vettingâcapacity checks, compliance reviews, reference interviewsâto shortlist only reliable partners.","agents-visiting-guide-negotiation-support-desc":"Live MandarinâEnglish interpretation and deal-structuring guidance to lock in best MOQs and lead-times.","agents-visiting-guide-negotiation-support-desc--plural":"Live MandarinâEnglish interpretation and deal-structuring guidance to lock in best MOQs and lead-times.","agents-visiting-guide-itinerary-planning-expertise":"We build a day-by-day agendaâmapping factory tours, trade fair slots, and supplier meetings with buffer times.","agents-visiting-guide-itinerary-planning-expertise--plural":"We build a day-by-day agendaâmapping factory tours, trade fair slots, and supplier meetings with buffer times.","agents-visiting-guide-itinerary-planning":"Itinerary Planning","agents-visiting-guide-itinerary-planning--plural":"Itinerary Planning","agents-visiting-guide-expertise-label":"Our Expertise:","agents-visiting-guide-expertise-label--plural":"Our Expertise:","agents-visiting-guide-professional-negotiation-support-desc":"Industry-savvy, MandarinâEnglish interpreters ensure you capture the best MOQs, lead times, and pricingâeliminating language barriers and cultural missteps.","agents-visiting-guide-professional-negotiation-support-desc--plural":"Industry-savvy, MandarinâEnglish interpreters ensure you capture the best MOQs, lead times, and pricingâeliminating language barriers and cultural missteps.","agents-visiting-guide-itinerary-planning-challenge":"Chaotic travel plans waste your limited time.","agents-visiting-guide-itinerary-planning-challenge--plural":"Chaotic travel plans waste your limited time.","agents-visiting-guide-in-depth-supplier-assessment":"In-Depth Supplier Assessment","agents-visiting-guide-in-depth-supplier-assessment--plural":"In-Depth Supplier Assessment","agents-visiting-guide-in-depth-supplier-assessment-desc":"We vet factory capacity, certifications, export history, and client referencesâshortlisting only genuine manufacturers and weeding out trading intermediaries.","agents-visiting-guide-in-depth-supplier-assessment-desc--plural":"We vet factory capacity, certifications, export history, and client referencesâshortlisting only genuine manufacturers and weeding out trading intermediaries.","agents-visiting-guide-quality-audits":"Quality Audits","agents-visiting-guide-quality-audits--plural":"Quality Audits","agents-visiting-guide-supplier-assessment-expertise":"Deep-dive background checksâproduction capacity, export history, existing client references, and compliance credentials.","agents-visiting-guide-supplier-assessment-expertise--plural":"Deep-dive background checksâproduction capacity, export history, existing client references, and compliance credentials.","agents-visiting-guide-ready-to-make-your-china-trip-100%-productive":"Ready to Make Your China Trip 100% Productive?","agents-visiting-guide-ready-to-make-your-china-trip-100%-productive--plural":"Ready to Make Your China Trip 100% Productive?","agents-visiting-guide-quality-audit-desc":"On-site pre-production and in-line AQL inspections, backed by third-party lab testing coordination.","agents-visiting-guide-quality-audit-desc--plural":"On-site pre-production and in-line AQL inspections, backed by third-party lab testing coordination.","agents-visiting-guide-on-site-visits":"On-Site Visits","agents-visiting-guide-on-site-visits--plural":"On-Site Visits","agents-visiting-guide-faq-4-answer":"Yes. Your guide facilitates price, MOQ, lead-time discussions, and helps structure clear payment and delivery agreements.","agents-visiting-guide-faq-4-answer--plural":"Yes. Your guide facilitates price, MOQ, lead-time discussions, and helps structure clear payment and delivery agreements.","agents-shorten-delivery-time-sign-up-free":"Sign Up Free","agents-shorten-delivery-time-sign-up-free--plural":"Sign Up Free","agents-cogs-reduction-faq-5-answer-new":"Youâll typically see initial savings within 6-8 weeks of kick-off (after baseline audit and pilot roll-out).","agents-cogs-reduction-faq-5-answer-new--plural":"Youâll typically see initial savings within 6-8 weeks of kick-off (after baseline audit and pilot roll-out).","ready-to-ship-overview-section3-problem2-a":"CJ\'s Solution: We have optimized physical attribute algorithms for over 200 countries. Based on actual product weight and volumeâcombined with precision templatesâwe provide the most compatible shipping solutions. This ensures that the shipping cost displayed upfront is your final cost.","ready-to-ship-overview-section3-problem2-a--plural":"CJ\'s Solution: We have optimized physical attribute algorithms for over 200 countries. Based on actual product weight and volumeâcombined with precision templatesâwe provide the most compatible shipping solutions. This ensures that the shipping cost displayed upfront is your final cost.","ready-to-ship-shoplazza-title-line1":"Discover","ready-to-ship-shoplazza-title-line1--plural":"Discover","ready-to-ship-shoplazza-title-line2":"premium selections","ready-to-ship-shoplazza-title-line2--plural":"premium selections","ready-to-ship-ebay-item1-title":"Cross-Border Direct","ready-to-ship-ebay-item1-title--plural":"Cross-Border Direct","ready-to-ship-mercado-item1-highlight":"fastest","ready-to-ship-mercado-item1-highlight--plural":"fastest","ready-to-ship-tiktok-title":"TRENDS AT YOUR DOORSTEP","ready-to-ship-tiktok-title--plural":"TRENDS AT YOUR DOORSTEP","ready-to-ship-ebay-title-selection":"SELECTION,","ready-to-ship-ebay-title-selection--plural":"SELECTION,","ready-to-ship-mercado-item2-highlight":"Borderless","ready-to-ship-mercado-item2-highlight--plural":"Borderless","ready-to-ship-lazada-badge2-title":"Local Fast Shipping","ready-to-ship-lazada-badge2-title--plural":"Local Fast Shipping","ready-to-ship-overview-section2-text":"For shop owners and e-commerce sellers pursuing efficiency and fast capital turnover, RTS is the best tool for risk reduction:","ready-to-ship-overview-section2-text--plural":"For shop owners and e-commerce sellers pursuing efficiency and fast capital turnover, RTS is the best tool for risk reduction:","ready-to-ship-lazada-label-highlight":"24â48 Hours","ready-to-ship-lazada-label-highlight--plural":"24â48 Hours","ready-to-ship-ebay-badge-suffix":"Business Days","ready-to-ship-ebay-badge-suffix--plural":"Business Days","ready-to-ship-temu-item1-label":"Local Stock (Y1)","ready-to-ship-temu-item1-label--plural":"Local Stock (Y1)","ready-to-ship-overview-section3-problem2-q":"The Problem: Many platforms provide inaccurate shipping estimates, leading to unexpectedly high costs at checkout.","ready-to-ship-overview-section3-problem2-q--plural":"The Problem: Many platforms provide inaccurate shipping estimates, leading to unexpectedly high costs at checkout.","ready-to-ship-shein-subtitle":"Fresh arr
31657ivals added daily","ready-to-ship-shein-subtitle--plural":"Fresh arrivals added daily","ready-to-ship-temu-item2-desc":"Shipped Within 48 Hours","ready-to-ship-temu-item2-desc--plural":"Shipped Within 48 Hours","ready-to-ship-shoplazza-top":"ALWAYS IN STOCK. ALWAYS READY","ready-to-ship-shoplazza-top--plural":"ALWAYS IN STOCK. ALWAYS READY","ready-to-ship-mercado-item2-prefix":"International Selection:","ready-to-ship-mercado-item2-prefix--plural":"International Selection:","ready-to-ship-temu-title-main":"GLOBAL CHOICE,","ready-to-ship-temu-title-main--plural":"GLOBAL CHOICE,","ready-to-ship-overview-section3-problem3-a":"CJ\'s Solution: We use big data to filter products. Only items with moderate weight, stable logistics attributes, and the fastest processing speeds within the CJ system are marked as RTS. We essentially complete the first round of \\"logistics and quality\\" pre-vetting for you.","ready-to-ship-overview-section3-problem3-a--plural":"CJ\'s Solution: We use big data to filter products. Only items with moderate weight, stable logistics attributes, and the fastest processing speeds within the CJ system are marked as RTS. We essentially complete the first round of \\"logistics and quality\\" pre-vetting for you.","ready-to-ship-temu-badge2":"Real-time Tracking","ready-to-ship-temu-badge2--plural":"Real-time Tracking","ready-to-ship-aliexpress-item2-label":"Local Warehouse","ready-to-ship-aliexpress-item2-label--plural":"Local Warehouse","ready-to-ship-temu-badge1":"100% Guaranteed Stock","ready-to-ship-temu-badge1--plural":"100% Guaranteed Stock","ready-to-ship-shein-item3-desc":"No waiting for pre-orders","ready-to-ship-shein-item3-desc--plural":"No waiting for pre-orders","ready-to-ship-temu-badge3":"Reliable Fulfillment","ready-to-ship-temu-badge3--plural":"Reliable Fulfillment","ready-to-ship-shein-item2-title":"Local & Direct","ready-to-ship-shein-item2-title--plural":"Local & Direct","ready-to-ship-tiktok-item1-desc":"Fast 3-7 Days Domestic Shipping","ready-to-ship-tiktok-item1-desc--plural":"Fast 3-7 Days Domestic Shipping","ready-to-ship-ebay-badge-prefix":"Guaranteed Dispatch within","ready-to-ship-ebay-badge-prefix--plural":"Guaranteed Dispatch within","ready-to-ship-aliexpress-banner-up":"ORDER NOW","ready-to-ship-aliexpress-banner-up--plural":"ORDER NOW","ready-to-ship-mercado-item3-suffix":".","ready-to-ship-mercado-item3-suffix--plural":".","ready-to-ship-ebay-title-local":"LOCAL","ready-to-ship-ebay-title-local--plural":"LOCAL","ready-to-ship-shein-item3-title":"24H Express Dispatch","ready-to-ship-shein-item3-title--plural":"24H Express Dispatch","ready-to-ship-shopify-button":"In Stock. Ready for You","ready-to-ship-shopify-button--plural":"In Stock. Ready for You","ready-to-ship-shopee-title-line1":"READY TO SHIP HUB:","ready-to-ship-shopee-title-line1--plural":"READY TO SHIP HUB:","ready-to-ship-shopee-title-line2":"GLOBAL & LOCAL","ready-to-ship-shopee-title-line2--plural":"GLOBAL & LOCAL","ready-to-ship-overview-section2-item4":"Transparent Fulfillment: Prices, shipping costs, and delivery times are all public, making it easy to accurately estimate your own retail price and profit margins.","ready-to-ship-overview-section2-item4--plural":"Transparent Fulfillment: Prices, shipping costs, and delivery times are all public, making it easy to accurately estimate your own retail price and profit margins.","ready-to-ship-overview-section2-item3":"High Decision-Making Efficiency: Say goodbye to time-zone-crossing communications and tedious inquiry processes. \\"What you see is what you get,\\" allowing you to complete global sourcing in seconds.","ready-to-ship-overview-section2-item3--plural":"High Decision-Making Efficiency: Say goodbye to time-zone-crossing communications and tedious inquiry processes. \\"What you see is what you get,\\" allowing you to complete global sourcing in seconds.","ready-to-ship-ebay-badge-highlight":"1â2","ready-to-ship-ebay-badge-highlight--plural":"1â2","ready-to-ship-etsy-badge":"Dispatched with Care within 1-3 Business Days","ready-to-ship-etsy-badge--plural":"Dispatched with Care within 1-3 Business Days","ready-to-ship-overview-section2-item2":"Fast Capital Turnover: No need to pay large deposits upfront. Shipping begins immediately after the order is placed, keeping your cash flow active.","ready-to-ship-overview-section2-item2--plural":"Fast Capital Turnover: No need to pay large deposits upfront. Shipping begins immediately after the order is placed, keeping your cash flow active.","ready-to-ship-temu-item1-desc":"As Fast as 2-Day Delivery","ready-to-ship-temu-item1-desc--plural":"As Fast as 2-Day Delivery","ready-to-ship-etsy-title-line1":"CRAFTED WITH LOVE,","ready-to-ship-etsy-title-line1--plural":"CRAFTED WITH LOVE,","ready-to-ship-overview-section2-item1":"Low Market Testing Costs: Supports extremely low MOQs (Minimum Order Quantities). You can purchase as few as 5-10 units of a new product to test the market, avoiding the risk of inventory backlog caused by bulk purchasing.","ready-to-ship-overview-section2-item1--plural":"Low Market Testing Costs: Supports extremely low MOQs (Minimum Order Quantities). You can purchase as few as 5-10 units of a new product to test the market, avoiding the risk of inventory backlog caused by bulk purchasing.","ready-to-ship-etsy-title-line2":"READY FOR YOU","ready-to-ship-etsy-title-line2--plural":"READY FOR YOU","ready-to-ship-shopify-subtitle":"CURATED GLOBALLY","ready-to-ship-shopify-subtitle--plural":"CURATED GLOBALLY","ready-to-ship-shopify-item1":"Directly from our design studios worldwide.","ready-to-ship-shopify-item1--plural":"Directly from our design studios worldwide.","ready-to-ship-shopify-item2":"Pre-stocked in regional hubs for swift arrival.","ready-to-ship-shopify-item2--plural":"Pre-stocked in regional hubs for swift arrival.","ready-to-ship-shopify-item3":"Order today. Shipped within 24-48 hours.","ready-to-ship-shopify-item3--plural":"Order today. Shipped within 24-48 hours.","ready-to-ship-overview-section3-problem3-q":"The Problem: The product pool is too large, making it hard to know which products sell well or can be shipped quickly via express.","ready-to-ship-overview-section3-problem3-q--plural":"The Problem: The product pool is too large, making it hard to know which products sell well or can be shipped quickly via express.","ready-to-ship-mercado-item3-prefix":"Ships within","ready-to-ship-mercado-item3-prefix--plural":"Ships within","ready-to-ship-woocommerce-feature3":"Global Fulfillment","ready-to-ship-woocommerce-feature3--plural":"Global Fulfillment","ready-to-ship-woocommerce-feature1":"Extensive Collection","ready-to-ship-woocommerce-feature1--plural":"Extensive Collection","ready-to-ship-woocommerce-feature2":"Brand Assurance","ready-to-ship-woocommerce-feature2--plural":"Brand Assurance","ready-to-ship-overview-section3-title":"3. Which Pain Points Does CJ\'s RTS Model Solve for Customers?","ready-to-ship-overview-section3-title--plural":"3. Which Pain Points Does CJ\'s RTS Model Solve for Customers?","ready-to-ship-lazada-label-line1":"Dispatch","ready-to-ship-lazada-label-line1--plural":"Dispatch","ready-to-ship-lazada-label-line2":"Within","ready-to-ship-lazada-label-line2--plural":"Within","ready-to-ship-aliexpress-banner-down":"DISPATCHED WITHIN 24-48 HOURS","ready-to-ship-aliexpress-banner-down--plural":"DISPATCHED WITHIN 24-48 HOURS","ready-to-ship-shopee-item1":"Over
31657seas Trends | Direct from Global Sellers","ready-to-ship-shopee-item1--plural":"Overseas Trends | Direct from Global Sellers","ready-to-ship-lazada-badge2-desc":"Arrival in 2â4 Days","ready-to-ship-lazada-badge2-desc--plural":"Arrival in 2â4 Days","ready-to-ship-shopee-item2":"Local Ready Stock | Fast Delivery within Your Region","ready-to-ship-shopee-item2--plural":"Local Ready Stock | Fast Delivery within Your Region","ready-to-ship-shopee-item3":"All Orders Dispatched within 24â48 Hours","ready-to-ship-shopee-item3--plural":"All Orders Dispatched within 24â48 Hours","ready-to-ship-shein-item1-title":"Infinite Variety","ready-to-ship-shein-item1-title--plural":"Infinite Variety","ready-to-ship-ebay-item1-desc":"Access Unique Inventory Worldwide","ready-to-ship-ebay-item1-desc--plural":"Access Unique Inventory Worldwide","ready-to-ship-shein-item2-line1":"From our closest warehouse","ready-to-ship-shein-item2-line1--plural":"From our closest warehouse","ready-to-ship-mercado-item2-suffix":"global trends.","ready-to-ship-mercado-item2-suffix--plural":"global trends.","ready-to-ship-tiktok-item1-label":"US Local Stock","ready-to-ship-tiktok-item1-label--plural":"US Local Stock","ready-to-ship-shein-item2-line2":"straight to your wardrobe","ready-to-ship-shein-item2-line2--plural":"straight to your wardrobe","ready-to-ship-tiktok-item3-desc":"Dispatched within 24-48 Hours","ready-to-ship-tiktok-item3-desc--plural":"Dispatched within 24-48 Hours","ready-to-ship-tiktok-item3-label":"Fully Stocked Hubs","ready-to-ship-tiktok-item3-label--plural":"Fully Stocked Hubs","ready-to-ship-ebay-title-delivery":"DELIVERY","ready-to-ship-ebay-title-delivery--plural":"DELIVERY","ready-to-ship-aliexpress-item1-desc":"Top Trends with Global 10-Day Delivery","ready-to-ship-aliexpress-item1-desc--plural":"Top Trends with Global 10-Day Delivery","ready-to-ship-aliexpress-item1-label":"Factory Direct","ready-to-ship-aliexpress-item1-label--plural":"Factory Direct","ready-to-ship-ebay-item2-desc":"Fast Shipping from Domestic Warehouses","ready-to-ship-ebay-item2-desc--plural":"Fast Shipping from Domestic Warehouses","ready-to-ship-shein-title":"TRENDS AT THE SPEED OF LIGHT","ready-to-ship-shein-title--plural":"TRENDS AT THE SPEED OF LIGHT","ready-to-ship-ebay-title-global":"GLOBAL","ready-to-ship-ebay-title-global--plural":"GLOBAL","ready-to-ship-overview-section3-problem1-title":"Solving the \\"Fake Stock\\" Pain Point:","ready-to-ship-overview-section3-problem1-title--plural":"Solving the \\"Fake Stock\\" Pain Point:","ready-to-ship-lazada-badge1-title":"Authentic Global Brands","ready-to-ship-lazada-badge1-title--plural":"Authentic Global Brands","ready-to-ship-overview-section3-problem2-title":"Solving \\"Shipping Traps & Financial Losses\\":","ready-to-ship-overview-section3-problem2-title--plural":"Solving \\"Shipping Traps & Financial Losses\\":","ready-to-ship-overview-modal-title":"START OF FILE ð Ready to Ship (RTS) Channel: An Efficient Sourcing Guide","ready-to-ship-overview-modal-title--plural":"START OF FILE ð Ready to Ship (RTS) Channel: An Efficient Sourcing Guide","ready-to-ship-overview-section1-title":"1. What are RTS (Ready to Ship) Products?","ready-to-ship-overview-section1-title--plural":"1. What are RTS (Ready to Ship) Products?","ready-to-ship-overview-section1-text":"RTS (Ready to Ship) refers to an \\"in-stock\\" or \\"ready-stock\\" trading model. Unlike the traditional \\"inquiry first, production later\\" model, RTS products must meet the following strict criteria:","ready-to-ship-overview-section1-text--plural":"RTS (Ready to Ship) refers to an \\"in-stock\\" or \\"ready-stock\\" trading model. Unlike the traditional \\"inquiry first, production later\\" model, RTS products must meet the following strict criteria:","ready-to-ship-overview-section1-item3":"Logistics Certainty: The system automatically calculates global shipping costs and provides a clear estimated time of arrival (ETA).","ready-to-ship-overview-section1-item3--plural":"Logistics Certainty: The system automatically calculates global shipping costs and provides a clear estimated time of arrival (ETA).","ready-to-ship-overview-section1-item2":"Direct Purchase: Specifications and prices are fixed. Buyers can click to buy just like retail shopping, without the need for business negotiations.","ready-to-ship-overview-section1-item2--plural":"Direct Purchase: Specifications and prices are fixed. Buyers can click to buy just like retail shopping, without the need for business negotiations.","ready-to-ship-overview-section1-item4":"Fast Dispatch: Orders are typically shipped within 3 to 15 days (or even sooner).","ready-to-ship-overview-section1-item4--plural":"Fast Dispatch: Orders are typically shipped within 3 to 15 days (or even sooner).","ready-to-ship-overview-section1-item1":"In-Stock Supply: Products are already stocked in the warehouse; there is no long production lead time.","ready-to-ship-overview-section1-item1--plural":"In-Stock Supply: Products are already stocked in the warehouse; there is no long production lead time.","ready-to-ship-overview-section2-title":"2. What are the Advantages of RTS Products for Small Business Sellers?","ready-to-ship-overview-section2-title--plural":"2. What are the Advantages of RTS Products for Small Business Sellers?","ready-to-ship-overview-section3-problem1-a":"CJ\'s Solution: We use real-time API
31657synchronization for inventory data. Every number you see represents actual available stock. Once inventory falls below the warning line, the product status updates automatically to ensure your procurement plan doesn\'t fall through.","ready-to-ship-overview-section3-problem1-a--plural":"CJ\'s Solution: We use real-time API synchronization for inventory data. Every number you see represents actual available stock. Once inventory falls below the warning line, the product status updates automatically to ensure your procurement plan doesn\'t fall through.","ready-to-ship-temu-item2-label":"Factory Direct (Y2)","ready-to-ship-temu-item2-label--plural":"Factory Direct (Y2)","ready-to-ship-mercado-item3-highlight":"48 hours","ready-to-ship-mercado-item3-highlight--plural":"48 hours","ready-to-ship-aliexpress-item2-desc":"Fast 3-5 Day Delivery from Nearby","ready-to-ship-aliexpress-item2-desc--plural":"Fast 3-5 Day Delivery from Nearby","ready-to-ship-shein-item1-line2":"Pre-stocked in Global Hubs","ready-to-ship-shein-item1-line2--plural":"Pre-stocked in Global Hubs","ready-to-ship-tiktok-item2-desc":"100,000+ Trends from Worldwide Studios","ready-to-ship-tiktok-item2-desc--plural":"100,000+ Trends from Worldwide Studios","ready-to-ship-shein-item1-line1":"1,000,000+ Hot Items","ready-to-ship-shein-item1-line1--plural":"1,000,000+ Hot Items","ready-to-ship-shopify-title":"Your Favorites, Without the Wait.","ready-to-ship-shopify-title--plural":"Your Favorites, Without the Wait.","ready-to-ship-overview-section3-problem3-title":"Solving \\"Sourcing Confusion\\":","ready-to-ship-overview-section3-problem3-title--plural":"Solving \\"Sourcing Confusion\\":","ready-to-ship-mercado-item1-suffix":"in your city.","ready-to-ship-mercado-item1-suffix--plural":"in your city.","ready-to-ship-lazada-title-main":"THE BEST OF BOTH WORLDS","ready-to-ship-lazada-title-main--plural":"THE BEST OF BOTH WORLDS","ready-to-ship-ebay-item2-title":"Local Fulfillment","ready-to-ship-ebay-item2-title--plural":"Local Fulfillment","ready-to-ship-etsy-subtitle":"Unique discoveries sent directly from worldwide studios.","ready-to-ship-etsy-subtitle--plural":"Unique discoveries sent directly from worldwide studios.","ready-to-ship-overview-section3-text":"Relying on CJ Dropshipping\'s powerful API technology and logistics network, our RTS module is specifically designed to solve the three core pain points that trouble small business sellers the most:","ready-to-ship-overview-section3-text--plural":"Relying on CJ Dropshipping\'s powerful API technology and logistics network, our RTS module is specifically designed to solve the three core pain points that trouble small business sellers the most:","ready-to-ship-aliexpress-title-line2":"LOCAL SPEED","ready-to-ship-aliexpress-title-line2--plural":"LOCAL SPEED","ready-to-ship-overview-section3-problem1-q":"The Problem: Traditional buyers fear being told a product is out of stock after they have already placed an order.","ready-to-ship-overview-section3-problem1-q--plural":"The Problem: Traditional buyers fear being told a product is out of stock after they have already placed an order.","ready-to-ship-temu-title-highlight":"FAST DISPATCH","ready-to-ship-temu-title-highlight--plural":"FAST DISPATCH","ready-to-ship-mercado-title":"GLOBAL BEST TO YOUR DOOR!","ready-to-ship-mercado-title--plural":"GLOBAL BEST TO YOUR DOOR!","ready-to-ship-lazada-badge1-desc":"Direct from the Source","ready-to-ship-lazada-badge1-desc--plural":"Direct from the Source","ready-to-ship-aliexpress-title-line1":"GLOBAL CHOICE,","ready-to-ship-aliexpress-title-line1--plural":"GLOBAL CHOICE,","ready-to-ship-tiktok-item2-label":"Global Direct Drops","ready-to-ship-tiktok-item2-label--plural":"Global Direct Drops","ready-to-ship-mercado-item1-prefix":"Full Shipping: The","ready-to-ship-mercado-item1-prefix--plural":"Full Shipping: The","ready-to-ship-allvalue-title-line1":"ALWAYS READY.","ready-to-ship-allvalue-title-line1--plural":"ALWAYS READY.","ready-to-ship-allvalue-title-line2":"WORLDWIDE INSPIRED.","ready-to-ship-allvalue-title-line2--plural":"WORLDWIDE INSPIRED.","ready-to-ship-allvalue-subtitle-line1":"50,000+ Curated Selections | A world of style, pre-stocked for you.","ready-to-ship-allvalue-subtitle-line1--plural":"50,000+ Curated Selections | A world of style, pre-stocked for you.","ready-to-ship-nuvemshop-title-line2":"SHIPPING GLOBALLY","ready-to-ship-nuvemshop-title-line2--plural":"SHIPPING GLOBALLY","ready-to-ship-nuvemshop-title-line1":"ALWAYS IN STOCK","ready-to-ship-nuvemshop-title-line1--plural":"ALWAYS IN STOCK","ready-to-ship-shoplazza-bottom-highlight":"48 Hours","ready-to-ship-shoplazza-bottom-highlight--plural":"48 Hours","ready-to-ship-allvalue-ribbon-left":"PROCESSED WITHIN 24H","ready-to-ship-allvalue-ribbon-left--plural":"PROCESSED WITHIN 24H","ready-to-ship-allvalue-subtitle-line2":"12 Global Logistic Hubs | Dispatched from our nearest studio to your door.","ready-to-ship-allvalue-subtitle-line2--plural":"12 Global Logistic Hubs | Dispatched from our nearest studio to your door.","ready-to-ship-allvalue-ribbon-right":"SHIPPED WITH CARE","ready-to-ship-allvalue-ribbon-right--plural":"SHIPPED WITH CARE","ready-to-ship-nuvemshop-subtitle":"A curated collection from our global hubs, ready to reach you","ready-to-ship-nuvemshop-subtitle--plural":"A curated collection from our global hubs, ready to reach you","ready-to-ship-shoplazza-bottom-text":"Express Dispatch. Worldwide Tracking","ready-to-ship-shoplazza-bottom-text--plural":"Express Dispatch. Worldwide Tracking","ai-assistant-try-saying":"Try saying: \\"Help me find similar product suppliers.\\"","ai-assistant-try-saying--plural":"Try saying: \\"Help me find similar product suppliers.\\"","common-top-ai-assistant":"AI Assistant","common-top-ai-assistant--plural":"AI Assistant","ai-assistant-i-am-your-ai-assistant":"I\'m your AI assistant.","ai-assistant-i-am-your-ai-assistant--plural":"I\'m your AI assistant.","ai-assistant-best-overall-option":"Best Overall Option","ai-assistant-best-overall-option--plural":"Best Overall Option","ai-assistant-ai-recommendations":"AI Recommendations","ai-assistant-ai-recommendations--plural":"AI Recommendations","ai-assistant-shipping-cost":"Shipping Cost","ai-assistant-target-price":"Target Price","ai-assistant-estimation-objective":"Estimation Objective","ai-assistant-estimation-objective--plural":"Estimation Objective","ai-assistant-shipping-comparison-table":"Shipping Comparison Table","ai-assistant-shipping-comparison-table--plural":"Shipping Comparison Table","ai-assistant-key-findings":"Key Findings","ai-assistant-key-findings--plural":"Key Findings","ai-assistant-cost-breakdown":"Cost Breakdown","ai-assistant-cost-breakdown--plural":"Cost Breakdown","ai-assistant-cost-analysis-report":"Cost Analysis Report","ai-assistant-cost-analysis-report--plural":"Cost Analysis Report","ai-assistant-lowest-cost":"Lowest Cost","ai-assistant-lowest-cost--plural":"Lowest Cost","ai-assistant-total-landed-cost-per-unit":"Total Landed Cost per Unit","ai-assistant-total-landed-cost-per-unit--plural":"Total Landed Cost per Unit","ai-assistant-shipping-analysis-report":"Shipping Analysis Report","ai-assistant-shipping-analysis-report--plural":"Shipping Analysis Report","ai-assistant-procurement-cost":"Procurement Cost","ai-assistant-procurement-cost--plural":"Procurement Cost","ai-assistant-fastest-delivery":"Fastest Delivery","ai-assistant-fastest-delivery--plural":"Fastest Delivery","ai-assistant-product-image":"Product Image","ai-assistant-product-image--plural":"Product Image","ai-assistant-tariff-cost":"Tariff Cost","ai-assistant-tariff-cost--plural":"Tariff Cost","ai-assistant-accept-similar-products":"Accept Similar Products","ai-assistant-accept-similar-products--plural":"Accept Similar Products","ai-assistant-confirm-sourcing-request":"Confirm Sourcing Request","ai-assistant-confirm-sourcing-request--plural":"Confirm Sourcing Request","ai-assistant-delivery-time":"Delivery Time","ai-assistant-sourcing-id":"Sourcing ID","ai-assistant-minimize":"Minimize","ai-assistant-minimize--plural":"Minimize","ai-assistant-chat-window":"Chat Window","ai-assistant-chat-window--plural":"Chat Window","ai-assistant-enter-full-screen":"Enter Full Screen Mode","ai-assistant-enter-full-screen--plural":"Enter Full Screen Mode","ai-assistant-close":"Close","ai-assistant-supplier-recommendations":"Supplier Recommendations","ai-assistant-supplier-recommendations--plural":"Supplier Recommendations","ai-assistant-view-more":"View More","ai-assistant-like":"Like","ai-assistant-like--plural":"Like","ai-assistant-sourcing-request-created-desc":"Your sourcing request has been created. You can check the progress later in the \\"Sourcing List\\" or ask me for updates.","ai-assistant-sourcing-request-created-desc--plural":"Your sourcing request has been created. You can check the progress later in the \\"Sourcing List\\" or ask me for updates.","ai-assistant-decision-workspace":"Decision Workspace","ai-assistant-decision-workspace--plural":"Decision Workspace","ai-assistant-dislike":"Dislike","ai-assistant-dislike--plural":"Dislike","ai-assistant-sourcing-request-created":"Sourcing request created successfully","ai-assistant-sourcing-request-created--plural":"Sourcing request created successfully","ai-assistant-exit-full-screen":"Exit Full Screen","ai-assistant-exit-full-screen--plural":"Exit Full Screen","ai-assistant-preparing":"Preparing","ai-assistant-ai-disclaimer":"Content generated by AI, for reference only.","ai-assistant-ai-disclaimer--plural":"Content generated by AI, for reference only.","ai-assistant-image-placeholder":"Image placeholder","ai-assistant-image-placeholder--plural":"Image placeholder","ai-assistant-uploading":"Uploading...","ai-assistant-uploading--plural":"Uploading...","ai-assistant-only-image-files-are-supported":"Only image files are supported.","ai-assistant-only-image-files-are-supported--plural":"Only image files are supported.","ai-assistant-upload-failed":"Upload failed.","ai-assistant-upload-failed--plural":"Upload failed.","ai-assistant-upload-image":"Upload image","ai-assistant-upload-image--plural":"Upload image","ai-assistant-remove-image":"Remove image","ai-assistant-remove-image--plural":"Remove image","ai-assistant-only-1-image-can-be-uploaded":"Only 1 image can be uploaded.","ai-assistant-only-1-image-can-be-uploaded--plural":"Only 1 image can be uploaded.","ai-assistant-upload-failed-please-retry":"Upload failed, please retry.","ai-assistant-upload-failed-please-retry--plural":"Upload failed, please retry.","ai-assistant-max-10mb-per-image":"Max 10MB per image.","ai-assistant-max-10mb-per-image--plural":"Max 10MB per image.","ai-assistant-request-failed-please-try-again":"Request failed, please try again.","ai-assistant-request-failed-please-try-again--plural":"Request failed, please try again.","ai-assistant-search-similar-suppliers":"Search for Similar Suppliers","ai-assistant-search-similar-suppliers--plural":"Search for Similar Suppliers","ai-assistant-check-order-status":"Check Order Status","ai-assistant-check-order-status--
31657plural":"Check Order Status","ai-assistant-default-supplier":"CJ Supplier Co.","ai-assistant-default-supplier--plural":"CJ Supplier Co.","ai-assistant-deleted-successfully":"Deleted successfully.","ai-assistant-deleted-successfully--plural":"Deleted successfully.","ai-assistant-analyze-image":"Please help me analyze the image.","ai-assistant-analyze-image--plural":"Please help me analyze the image.","ai-assistant-failed-to-load-history":"Failed to load history.","ai-assistant-failed-to-load-history--plural":"Failed to load history.","ai-assistant-title":"AI Assistant","ai-assistant-title--plural":"AI Assistant","ai-assistant-delete-failed-please-try-again":"Delete failed, please try again.","ai-assistant-delete-failed-please-try-again--plural":"Delete failed, please try again.","ai-assistant-default-origin":"China","ai-assistant-prompt-check-sourcing-progress":"Help me check the sourcing progress of [enter sourcing ID(s), separated by \\",\\"].","ai-assistant-prompt-check-sourcing-progress--plural":"Help me check the sourcing progress of [enter sourcing ID(s), separated by \\",\\"].","ai-assistant-check-sourcing-progress":"Check Sourcing Progress","ai-assistant-check-sourcing-progress--plural":"Check Sourcing Progress","ai-assistant-you-have-already-submitted-this-feedback":"You have already submitted this feedback.","ai-assistant-you-have-already-submitted-this-feedback--plural":"You have already submitted this feedback.","ai-assistant-history":"History","ai-assistant-feedback-thanks":"Thank you for your feedback.","ai-assistant-feedback-thanks--plural":"Thank you for your feedback.","ai-assistant-submit-failed-please-retry":"Submit failed, please retry.","ai-assistant-submit-failed-please-retry--plural":"Submit failed, please retry.","ai-assistant-feedback-has-already-been-submitted":"Feedback has already been submitted.","ai-assistant-feedback-has-already-been-submitted--plural":"Feedback has already been submitted.","ai-assistant-response-stopped":"This response was stopped.","ai-assistant-response-stopped--plural":"This response was stopped.","ai-assistant-no-more-history":"No more history records","ai-assistant-no-more-history--plural":"No more history records","ai-assistant-prompt-find-suppliers":"Find suppliers for [product name / image].","ai-assistant-prompt-find-suppliers--plural":"Find suppliers for [product name / image].","ai-assistant-prompt-check-order-status":"Help me check the status of [enter a single order number].","ai-assistant-prompt-check-order-status--plural":"Help me check the status of [enter a single order number].","ai-assistant-submit-feedback":"Submit Feedback","ai-assistant-submit-feedback--plural":"Submit Feedback","ai-assistant-collapse-sidebar":"Collapse sidebar","ai-assistant-collapse-sidebar--plural":"Collapse sidebar","ai-assistant-cancel":"Cancel","ai-assistant-describe-issue":"Please describe your issue.","ai-assistant-describe-issue--plural":"Please describe your issue.","ai-assistant-show-chat-only":"Show Chat Window Only","ai-assistant-show-chat-only--plural":"Show Chat Window Only","ai-assistant-submit":"Submit","ai-assistant-loading":"Loading...","ai-assistant-loading--plural":"Loading...","ai-assistant-search-history":"Search History","ai-assistant-search-history--plural":"Search History","ai-assistant-origin":"Origin","ai-assistant-origin--plural":"Origin","ai-assistant-describe-request":"Describe your request or enter @ to select a quick option.","ai-assistant-describe-request--plural":"Describe your request or enter @ to select a quick option.","ai-assistant-unpin-sidebar":"Unpin sidebar","ai-assistant-unpin-sidebar--plural":"Unpin sidebar","ai-assistant-moq":"MOQ","ai-assistant-cost-analysis":"Cost Analysis","ai-assistant-cost-analysis--plural":"Cost Analysis","ai-assistant-shipping-estimation":"Shipping Estimation","ai-assistant-shipping-estimation--plural":"Shipping Estimation","ai-assistant-confirm":"Confirm","ai-assistant-feedback-content":"Feedback Content","ai-assistant-feedback-content--plural":"Feedback Content","ai-assistant-delete":"Delete","ai-assistant-remove-product":"Remove product","ai-assistant-remove-product--plural":"Remove product","ai-assistant-no-history-records":"No history records","ai-assistant-no-history-records--plural":"No history records","ai-assistant-expand-sidebar":"Expand sidebar","ai-assistant-expand-sidebar--plural":"Expand sidebar","ai-assistant-rating":"Rating","ai-assistant-assistant":"Assistant","ai-assistant-assistant--plural":"Assistant","ai-assistant-scroll-down-to-load-more":"Scroll down to load more","ai-assistant-scroll-down-to-load-more--plural":"Scroll down to load more","ai-assistant-confirm-delete-record":"Are you sure you want to delete this record?","ai-assistant-confirm-delete-record--plural":"Are you sure you want to delete this record?","ai-assistant-exit-quick-prompt":"Exit quick prompt","ai-assistant-exit-quick-prompt--plural":"Exit quick prompt","ai-assistant-supplier":"Supplier","ai-assistant-delete-conversation-warning":"The conversation content will be permanently deleted and cannot be recovered. Please confirm deleti
31657on.","ai-assistant-delete-conversation-warning--plural":"The conversation content will be permanently deleted and cannot be recovered. Please confirm deletion.","ai-assistant-continue-typing":"Continue typing...","ai-assistant-continue-typing--plural":"Continue typing...","ai-assistant-specs":"Specs","ai-assistant-specs--plural":"Specs","ai-assistant-pin-sidebar":"Pin sidebar","ai-assistant-pin-sidebar--plural":"Pin sidebar","ai-assistant-please-enter-a-sourcing-url":"Please enter a sourcing URL.","ai-assistant-please-enter-a-sourcing-url--plural":"Please enter a sourcing URL.","ai-assistant-please-enter-a-product-title":"Please enter a product title.","ai-assistant-please-enter-a-product-title--plural":"Please enter a product title.","ai-assistant-product-search-request-has-been-generated":"Product search request has been generated.","ai-assistant-product-search-request-has-been-generated--plural":"Product search request has been generated.","ai-assistant-please-enter-a-valid-target-price":"Please enter a valid target price.","ai-assistant-please-enter-a-valid-target-price--plural":"Please enter a valid target price.","ai-assistant-unit":"unit","ai-assistant-unit--plural":"unit","ai-assistant-sourcing-list":"Sourcing List","ai-assistant-sourcing-list--plural":"Sourcing List","ai-assistant-please-enter-a-description":"Please enter a description.","ai-assistant-please-enter-a-description--plural":"Please enter a description.","ai-assistant-logistics-cost":"Logistics Cost","ai-assistant-logistics-cost--plural":"Logistics Cost","ai-assistant-please-select":"Please select","ai-assistant-click-to-upload":"Click to upload","ai-assistant-click-to-upload--plural":"Click to upload","ai-assistant-please-enter-a-description-placeholder":"Please enter a description.","ai-assistant-please-enter-a-description-placeholder--plural":"Please enter a description.","ai-assistant-please-enter-a-target-price":"Please enter a target price.","ai-assistant-please-enter-a-target-price--plural":"Please enter a target price.","ai-assistant-sourcing-limits":"Sourcing Limits","ai-assistant-sourcing-limits--plural":"Sourcing Limits","ai-assistant-shipping-warehouse":"Shipping Warehouse","ai-assistant-shipping-warehouse--plural":"Shipping Warehouse","ai-assistant-request-for-sourcing":"Request for Sourcing","ai-assistant-current-level":"Current Level","ai-assistant-current-level--plural":"Current Level","ai-assistant-max-10mb-per-file-only-1-image-can-be-uploaded":"Max 10MB per file. Only 1 image can be uploaded.","ai-assistant-max-10mb-per-file-only-1-image-can-be-uploaded--plural":"Max 10MB per file. Only 1 image can be uploaded.","ai-assistant-product-title":"Product Title","ai-assistant-product-title--plural":"Product Title","ai-assistant-submitting":"Submitting...","ai-assistant-submitting--plural":"Submitting...","ai-assistant-lv3-users-can-post-20-sourcing-requests-daily":"LV3 users can post 20 sourcing requests daily.","ai-assistant-lv3-users-can-post-20-sourcing-requests-daily--plural":"LV3 users can post 20 sourcing requests daily.","ai-assistant-please-enter-sourcing-purpose":"Please enter sourcing purpose.","ai-assistant-please-enter-sourcing-purpose--plural":"Please enter sourcing purpose.","ai-assistant-please-provide-the-sourcing-purpose":"Please provide the sourcing purpose","ai-assistant-please-provide-the-sourcing-purpose--plural":"Please provide the sourcing purpose","ai-assistant-please-enter-a-target-price-placeholder":"Please enter a target price.","ai-assistant-please-enter-a-target-price-placeholder--plural":"Please enter a target price.","ai-assistant-please-enter-a-correct-sourcing-url":"Please enter a correct sourcing URL.","ai-assistant-please-enter-a-correct-sourcing-url--plural":"Please enter a correct sourcing URL.","ai-assistant-lv2-users-can-post-10-sourcing-requests-daily":"LV2 users can post 10 sourcing requests daily.","ai-assistant-lv2-users-can-post-10-sourcing-requests-daily--plural":"LV2 users can post 10 sourcing requests daily.","ai-assistant-no-products-found":"No products found","ai-assistant-no-products-found--plural":"No products found","ai-assistant-you-can-enter-1000-characters-at-most":"You can enter 1000 characters at most.","ai-assistant-you-can-enter-1000-characters-at-most--plural":"You can enter 1000 characters at most.","ai-assistant-details":"Details","ai-assistant-quantity-day":"Quantity/Day","ai-assistant-quantity-day--plural":"Quantity/Day","ai-assistant-sourcing-purpose":"Sourcing Purpose","ai-assistant-sourcing-purpose--plural":"Sourcing Purpose","ai-assistant-solution-type":"Solution Type","ai-assistant-solution-type--plural":"Solution Type","ai-assistant-lv4-users-can-post-50-sourcing-requests-daily":"LV4 users can post 50 sourcing requests daily.","ai-assistant-lv4-users-can-post-50-sourcing-requests-daily--plural":"LV4 users can post 50 sourcing requests daily.","ai-assistant-please-upload-a-product-image":"Please upload a product image.","ai-assistant-please-upload-a-product-image--plural":"Please upload a product image.","ai-assistant-description":"Description","ai-assistant-please-select-a-sourcing-purpose":"Please select a sourcing purpose.","ai-assistant-please-select-a-sourcing-purpose--plural":"Please select a sourcing purpose.","ai-assistant-and-vip-users-have-no-limits-on-sourcing-requests":"LV5 and VIP users have no limits on sourcing requests.","ai-assistant-and-vip-users-have-no-limits-on-sourcing-requests--plural":"LV5 and VIP users have no limits on sourcing requests.","ai-assistant-or-ask-me-for-updates":"or ask me for updates.","ai-assistant-or-ask-me-for-updates--plural":"or ask me for updates.","ai-assistant-yes":"Yes","ai-assistant-lv1-users-can-post-5-sourcing-requests-daily":"LV1 users can post 5 sourcing requests daily.","ai-assistant-lv1-users-can-post-5-sourcing-requests-daily--plural":"LV1 users can post 5 sourcing requests daily.","ai-assistant-logistics-method":"Logistics Method","ai-assistant-logistics-method--plural":"Logistics Method","ai-assistant-no-data-available":"No data available","ai-assistant-no-data-available--plural":"No data available","ai-assistant-sourcing-url":"Sourcing URL","ai-assistant-sourcing-url--plural":"Sourcing URL","ai-assistant-your-sourcing-request-has-been-created":"Your sourcing request has been created.","ai-assistant-your-sourcing-request-has-been-created--plural":"Your sourcing request has been created.","ai-assistant-day":"day","ai-assistant-please-enter-a-sourcing-url-placeholder":"Please enter a sourcing URL.","ai-assistant-please-enter-a-sourcing-url-placeholder--plural":"Please enter a sourcing URL.","ai-assistant-no":"No","ai-assistant-please-enter-a-product-title-placeholder":"Please enter a product title.","ai-assistant-please-enter-a-product-title-placeholder--plural":"Please enter a product title.","ai-assistant-recommended-products-list":"Recommended Products List","ai-assistant-recommended-products-list--plural":"Recommended Products List","ai-assistant-home":"Home","ai-assistant-upload-disabled-with-selected-products":"Image upload is unavailable while products are selected. Remove selected products to continue.","ai-assistant-upload-disabled-with-selected-products--plural":"Image upload is unavailable while products are selected. Remove selected products to continue.","ai-assistant-product-prompt-logistics-template":"Perform logistics estimation.","ai-assistant-product-prompt-logistics-template--plural":"Perform logistics estimation.","ai-assistant-product-prompt-cost-template":"Perform cost analysis.","ai-assistant-product-prompt-cost-template--plural":"Perform cost analysis.","common-mycj-menu-update-guide-done":"Got it","common-mycj-menu-update-guide-next":"Next","common-mycj-menu-update-guide-prev":"Previous","common-mycj-menu-update-guide-prev--plural":"Previous","common-mycj-menu-sourcing-by-cj":"By CJ","common-mycj-menu-sourcing-by-cj--plural":"By CJ","common-mycj-menu-sourcing-by-aliexpress":"By AliExpress","common-mycj-menu-sourcing-by-aliexpress--plural":"By AliExpress","common-mycj-menu-sourcing-by-ebay":"By eBay","common-mycj-menu-sourcing-by-ebay--plural":"By eBay","common-mycj-menu-sourcing-by-1688":"By 1688","common-mycj-menu-sourcing-by-1688--plural":"By 1688","common-mycj-menu-sourcing-by-taobao":"By taobao","common-mycj-menu-sourcing-by-taobao--plural":"By taobao","common-mycj-menu-settings":"Settings","common-mycj-menu-24h-fulfillment":"24h Fulfillment","common-mycj-menu-sourcing-by-qk":"By QK source","common-mycj-menu-sourcing-by-qk--plural":"By QK source","common-mycj-menu-order-fulfillment":"Order Fulfillment","common-mycj-menu-update-guide-skip":"Skip","common-mycj-menu-subscribe-service":"Subscribe Service","common-mycj-menu-subscribe-service--plural":"Subscribe Service","common-mycj-menu-buy-sell-yourstore":"Buy/Sell Your Store","common-mycj-menu-buy-sell-yourstore--plural":"Buy/Sell Your Store","common-mycj-menu-payment-agency":"Payment Agency","common-mycj-menu-payment-agency--plural":"Payment Agency","common-mycj-menu-cj-prime":"CJ Prime","common-mycj-menu-shipping-calculation":"Shipping Calculation","common-mycj-menu-recent-activity":"Recent Activity","common-mycj-menu-recent-activity--plural":"Recent Activity","common-mycj-menu-home":"Home","common-mycj-menu-fast-shipping":"Faster Shipping Service","common-mycj-menu-fast-shipping--plural":"Faster Shipping Service","common-mycj-menu-update-guide-content-1":"We added a Home menu as your platform homepage.","common-mycj-menu-update-guide-content-1--plural":"We added a Home menu as your platform homepage.","common-mycj-menu-update-guide-content-2":"The former \\"Find\\" menu has been renamed to \\"Source,\\" where you can source products, factories, and brand-related services.","common-mycj-menu-update-guide-content-2--plural":"The former \\"Find\\" menu has been renamed to \\"Source,\\" where you can source products, factories, and brand-related services.","common-mycj-menu-update-guide-content-3":"We added a new \\"Community\\" menu, where you can access Agents, Mentors, and Elites.","common-mycj-menu-update-guide-content-3--plural":"We added a new \\"Community\\" menu, where you can access Agents, Mentors, and Elites.","common-mycj-menu-update-guide-content-4":"The former \\"Products\\" menu has been renamed to \\"My Products,\\" where you can continue managing product-related operations.","common-mycj-menu-update-guide-content-4--plural":"The former \\"Products\\" menu has been renamed to \\"My Products,\\" where you can continue managing product-related operations.","common-mycj-menu-update-guide-content-5":"Custom Packaging and Customization have been grouped under \\"My Products\\" for easier management.","common-mycj-menu-update-guide-content-5--plural":"Custom Packaging and Customization have been grouped under \\"My Products\\" for easier management.","common-mycj-menu-update-guide-content-6":"The Warehouse Operation Video List has been grouped under Order Fulfillment for easier management.","common-mycj-menu-update-guide-content-6--plural":"The Warehouse Operation Video List has been grouped under Order Fulfillment for easier management.","common-mycj-menu-update-guide-content-7":"The Services module has been fully upgraded. You can now subscribe to services independently, and all your previous service records have been retained.","common-mycj-menu-update-guide-content-7--plural":"The Services module has been fully upgraded. You can now subscribe to services independently, and all your previous service records have been retained.","common-mycj-menu-update-guide-content-8":"The former \\"Profile\\" menu has been renamed to \\"Settings,\\" and Sub-account management has been integrated into Settings.","common-mycj-menu-update-guide-content-8--plural":"The former \\"Profile\\" menu has been renamed to \\"Settings,\\" and Sub-account management has been integrated into Settings.","common-mycj-menu-update-guide-content-9":"CJ Prime and Shipping Calculation have been grouped under the \\"My CJ\\" menu for easier management.","common-mycj-menu-update-guide-content-9--plural":"CJ Prime and Shipping Calculation have been grouped under the \\"My CJ\\" menu for easier management.","common-mycj-menu-update-guide-content-10":"All history-related features have been consolidated into the \\"Recent Activity\\" menu for centralized access.","common-mycj-menu-update-guide-content-10--plural":"All history-related features have been consolidated into the \\"Recent Activity\\" menu for centralized access.","ai-assistant-product-recommendations":"Product Recommendations","ai-assistant-product-recommendations--plural":"Product Recommendations","ai-assistant-search-similar-products":"Search for Similar Products","ai-assistant-search-similar-products--plural":"Search for Similar Products","ai-assistant-prompt-find-products":"Find matching products by [product name / image].","ai-assistant-prompt-find-products--plural":"Find matching products by [product name / image].","ai-assistant-customs-clearance-fee":"Customs Clearance Fee","ai-assistant-customs-clearance-fee--plural":"Customs Clearance Fee","ai-assistant-your-sourcing-request-has-been-created-you-can-check-the-progress-later-in-the":"Your sourcing request has been created. You can check the progress later in the ","ai-assistant-your-sourcing-request-has-been-created-you-can-check-the-progress-later-in-the--plural":"Your sourcing request has been created. You can check the progress later in the ","ai-assistant-download":"Download","ai-assistant-cost-structure":"Cost Structure","ai-assistant-cost-structure--plural":"Cost Structure","common-mycj-menu-sourcing-list":"Sourcing List","common-mycj-menu-update-guide-content-10-1":"Browsing history, saved items, and export records are now available under \\"Recent Activity\\" for easier access.","common-mycj-menu-update-guide-content-10-1--plural":"Browsing history, saved items, and export records are now available under \\"Recent Activity\\" for easier access.","global-warehouses-filter":"Filter","global-warehouses-filter--plural":"Filter","ready-to-ship-business-model":"Business Model","ready-to-ship-business-model--plural":"Business Model","ready-to-ship-inventory-note":"Note: To prioritize fast fulfillment, only items meeting minimum stock requirements are shown.","ready-to-ship-inventory-note--plural":"Note: To prioritize fast fulfillment, only items meeting minimum stock requirements are shown.","ready-to-ship-products-with-videos":"Products with Videos","ready-to-ship-products-with-videos--plural":"Products with Videos","ready-to-ship-product-with-certificates":"Product with Certificates","ready-to-ship-product-with-certificates--plural":"Product with Certificates","ready-to-ship-price":"Price","ready-to-ship-clear-all":"Clear All","ready-to-ship-filter":"Filter","ready-to-ship-filter--plural":"Filter","ready-to-ship-inventory":"Inventory","ready-to-ship-product-launch-time":"Product Launch Time","ready-to-ship-product-launch-time--plural":"Product Launch Time","ready-to-ship-category":"Category","ready-to-ship-confirm":"Confirm","ai-assistant-case-recommendation":"Case Recommendation","ai-assistant-case-recommendation--plural":"Case Recommendation","ai-assistant-case-ask-similar-btn":"Ask Similar Questions","ai-assistant-case-ask-similar-btn--plural":"Ask Similar Questions","ai-assistant-select":"Select","ai-assistant-case-ask-similar-prompt":"Would you like to get similar results?","ai-assistant-case-ask-similar-prompt--plural":"Would you like to get similar results?","ai-assistant-scroll-right":"Scroll right","ai-assistant-scroll-right--plural":"Scroll right","ai-assistant-scroll-left":"Scroll left","ai-assistant-scroll-left--plural":"Scroll left","ai-assistant-no-countries":"No countries available","ai-assistant-no-countries--plural":"No countries available","ai-assistant-select-platform":"Select Platform","ai-assistant-select-platform--plural":"Select Platform","ai-assistant-show-reasoning":"Show reasoning","ai-assistant-show-reasoning--plural":"Show reasoning","ai-assistant-sku-label":"SKU","ai-assistant-ship-to":"Ship to","ai-assistant-search-country":"Search country or code","ai-assistant-search-country--plural":"Search country or code","ai-assistant-hide-reasoning":"Hide reasoning","ai-assistant-hide-reasoning--plural":"Hide reasoning","ai-assistant-no-response":"No response generated.",
31657"ai-assistant-no-response--plural":"No response generated.","ai-assistant-no-platforms":"No platforms available","ai-assistant-no-platforms--plural":"No platforms available","ai-assistant-product-price":"Product Price","ai-assistant-already-selected":"Already Selected","ai-assistant-already-selected--plural":"Already Selected","ai-assistant-select-variant":"Select Variant","ai-assistant-select-variant--plural":"Select Variant","ai-assistant-select-country":"Please select a country","ai-assistant-select-country--plural":"Please select a country","ai-assistant-case-view-details":"View details","ai-assistant-case-view-details--plural":"View details","ai-assistant-expand":"Expand","ai-assistant-expand--plural":"Expand","ai-assistant-collapse":"Collapse","ai-assistant-more":"More","ai-assistant-collect":"Collect","ai-assistant-collect--plural":"Collect","ai-assistant-sourcing-limit-status":"Sourcing limit status","ai-assistant-sourcing-limit-status--plural":"Sourcing limit status","ai-assistant-switch-to-human-agent":"Switch to Human Agent","ai-assistant-switch-to-human-agent--plural":"Switch to Human Agent","ai-assistant-please-select-platform":"Please select a platform","ai-assistant-please-select-platform--plural":"Please select a platform","ai-assistant-collection-failed-please-try-again":"Operation failed, please try again.","ai-assistant-collection-failed-please-try-again--plural":"Operation failed, please try again.","ai-assistant-uncollect":"Remove from Collection","ai-assistant-uncollect--plural":"Remove from Collection","ai-assistant-failed-to-load-collection":"Failed to load collections.","ai-assistant-failed-to-load-collection--plural":"Failed to load collections.","ai-assistant-batch-uncollect":"Remove Selected","ai-assistant-batch-uncollect--plural":"Remove Selected","ai-assistant-collection-limit-exceeded":"Collection limit reached (max 100). Please remove some before adding new ones.","ai-assistant-collection-limit-exceeded--plural":"Collection limit reached (max 100). Please remove some before adding new ones.","ai-assistant-collection":"Collection","ai-assistant-manage-collection":"Batch Remove","ai-assistant-manage-collection--plural":"Batch Remove","ai-assistant-collected-successfully":"Added to collection.","ai-assistant-collected-successfully--plural":"Added to collection.","ai-assistant-no-more-collection":"No more collections","ai-assistant-no-more-collection--plural":"No more collections","ai-assistant-new-chat":"New Chat","ai-assistant-new-chat--plural":"New Chat","ai-assistant-select-all":"Select all","ai-assistant-uncollected-successfully":"Removed from collection.","ai-assistant-uncollected-successfully--plural":"Removed from collection.","ai-assistant-current-chat":"Current Chat","ai-assistant-current-chat--plural":"Current Chat","ai-assistant-no-collection":"No collections yet","ai-assistant-no-collection--plural":"No collections yet","ai-assistant-collected":"Collected","ai-assistant-collected--plural":"Collected","footer-ready-to-ship":"Ready to Ship","footer-ready-to-ship--plural":"Ready to Ship","footer-community":"Community","footer-community--plural":"Community","footer-agents":"Agents","footer-agents--plural":"Agents","footer-cjec":"CJEC","footer-cjec--plural":"CJEC","payodm-advantages-section-3-item-3-label":"Fast Processing:","payodm-advantages-section-3-item-3-label--plural":"Fast Processing:","payodm-steps-title":"With Paid ODM","payodm-steps-title--plural":"With Paid ODM","payodm-steps-slogan-highlight":"we handle the rest.","payodm-steps-slogan-highlight--plural":"we handle the rest.","payodm-mobile-prompt-message":"Thank you for your support. This feature is currently available on the Web. Go try it out!","payodm-mobile-prompt-message--plural":"Thank you for your support. This feature is currently available on the Web. Go try it out!","payodm-cta-title":"Stop wasting time on unreliable suppliers.","payodm-cta-title--plural":"Stop wasting time on unreliable suppliers.","payodm-faq-title":"Frequently Asked Questions","payodm-faq-title--plural":"Frequently Asked Questions","payodm-advantages-section-3-item-2-desc":"delays over 7 days â refund eligible","payodm-advantages-section-3-item-2-desc--plural":"delays over 7 days â refund eligible","payodm-faq-subtitle":"Everything you need to know before choosing between Free Standard ODM and Premium Paid ODM","payodm-faq-subtitle--plural":"Everything you need to know before choosing between Free Standard ODM and Premium Paid ODM","payodm-advantages-section-2-item-3-label":"Non-Disclosure:","payodm-advantages-section-2-item-3-label--plural":"Non-Disclosure:","payodm-cta-button":"Start My Premium Paid ODM â $100","payodm-cta-button--plural":"Start My Premium Paid ODM â $100","payodm-advantages-section-3-item-1-desc":"refund for the uncompleted portion if results deviate.","payodm-advantages-section-3-item-1-desc--plural":"refund for the uncompleted portion if results deviate.","payodm-advantages-section-3-title":"Quality Assurance & Refund Policy","payodm-advantages-section-3-title--plural":"Quality Assurance & Refund Policy","payodm-faq-a7":"Supplier matching, initial quotations, and sampling plan.","payodm-faq-a7--plural":"Supplier matching, initial quotations, and sampling plan.","payodm-faq-a6":"Because Paid ODM saves you time, reduces risk, and gives you a dedicated team to handle everything.","payodm-faq-a6--plural":"Because Paid ODM saves you time, reduces risk, and gives you a dedicated team to handle everything.","payodm-steps-step-4":"STEP 4","payodm-steps-step-4--plural":"STEP 4","payodm-faq-a5":"Absolutely. You can upgrade to Paid ODM at any time, and your dedicated service will c
31657ontinue for the remaining project lifecycle.","payodm-faq-a5--plural":"Absolutely. You can upgrade to Paid ODM at any time, and your dedicated service will continue for the remaining project lifecycle.","payodm-steps-step-3":"STEP 3","payodm-steps-step-3--plural":"STEP 3","payodm-faq-a4":"Every request is reviewed and processed within 3 business days. Paid ODM customers also receive daily proactive follow-up.","payodm-faq-a4--plural":"Every request is reviewed and processed within 3 business days. Paid ODM customers also receive daily proactive follow-up.","payodm-faq-a3":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","payodm-faq-a3--plural":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","payodm-steps-step-5":"STEP 5","payodm-steps-step-5--plural":"STEP 5","payodm-faq-a2":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","payodm-faq-a2--plural":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","payodm-faq-a1":"A dedicated squad (Senior Account Manager + Liaison + Designer), daily proactive follow-up, premium supplier sourcing, dedicated after-sales support, and a refund guarantee for any unfulfilled portion.","payodm-faq-a1--plural":"A dedicated squad (Senior Account Manager + Liaison + Designer), daily proactive follow-up, premium supplier sourcing, dedicated after-sales support, and a refund guarantee for any unfulfilled portion.","payodm-steps-step-2":"STEP 2","payodm-steps-step-2--plural":"STEP 2","payodm-steps-step-1":"STEP 1","payodm-steps-step-1--plural":"STEP 1","payodm-steps-text-1":"Submit your product idea","payodm-steps-text-1--plural":"Submit your product idea","payodm-advantages-section-3-item-1-label":"Quality Guarantee:","payodm-advantages-section-3-item-1-label--plural":"Quality Guarantee:","payodm-cta-spo":"Start Paid ODM â $100","payodm-cta-spo--plural":"Start Paid ODM â $100","payodm-steps-text-5":"Launch with confidence","payodm-steps-text-5--plural":"Launch with confidence","payodm-steps-text-4":"Confirm production","payodm-steps-text-4--plural":"Confirm production","payodm-steps-text-3":"Receive samples faster","payodm-steps-text-3--plural":"Receive samples faster","payodm-steps-text-2":"Your manager handles sourcing and negotiation","payodm-steps-text-2--plural":"Your manager handles sourcing and negotiation","payodm-cta-subtitle":"For just $100, get a dedicated team, faster results, and peace of mind.","payodm-cta-subtitle--plural":"For just $100, get a dedicated team, faster results, and peace of mind.","payodm-steps-subtitle":"Same clear workflow â Premium Paid ODM adds a dedicated team, daily follow-up, and a refund safety net at every step","payodm-steps-subtitle--plural":"Same clear workflow â Premium Paid ODM adds a dedicated team, daily follow-up, and a refund safety net at every step","payodm-steps-slogan-text":"You focus on selling â ","payodm-steps-slogan-text--plural":"You focus on selling â ","payodm-advantages-section-3-item-2-label":"Timely Delivery:","payodm-advantages-section-3-item-2-label--plural":"Timely Delivery:","payodm-mobile-prompt-title":"Notice","payodm-mobile-prompt-title--plural":"Notice","payodm-advantages-section-2-item-3-desc":"never shared or promoted without your explicit consent.","payodm-advantages-section-2-item-3-desc--plural":"never shared or promoted without your explicit consent.","payodm-advantages-section-3-item-3-desc":"every request handled within 3 business days.","payodm-advantages-section-3-item-3-desc--plural":"every request handled within 3 business days.","payodm-faq-q7":"What can I expect in the first 7 days?","payodm-faq-q7--plural":"What can I expect in the first 7 days?","payodm-faq-q6":"Why should I pay if Free ODM is available?","payodm-faq-q6--plural":"Why should I pay if Free ODM is available?","payodm-faq-q5":"Can I switch from Free Standard ODM to Paid ODM later?","payodm-faq-q5--plural":"Can I switch from Free Standard ODM to Paid ODM later?","payodm-faq-q4":"How quickly will I receive the first response?","payodm-faq-q4--plural":"How quickly will I receive the first response?","payodm-faq-q3":"Will my designs and brand information be leaked?","payodm-faq-q3--plural":"Will my designs and brand information be leaked?","payodm-faq-q2":"Can I get a refund if I\'m not satisfied?","payodm-faq-q2--plural":"Can I get a refund if I\'m not satisfied?","payodm-faq-q1":"What does the $100 Paid ODM include?","payodm-faq-q1--plural":"What does the $100 Paid ODM include?","payodm-mobile-prompt-button":"OK","payodm-advantages-section-2-item-1-desc":"100% of designs, files & IP belong to you.","payodm-advantages-section-2-item-1-desc--plural":"100% of designs, files & IP belong to you.","payodm-advantages-section-1-item-1-desc":"from logo & packaging design to production & delivery.","payodm-advantages-section-1-item-1-desc--plural":"from logo & packaging design to production & delivery.","payodm-who-cta-paid":"Start My Premium Paid ODM â $100","payodm-who-cta-paid--plural":"Start My Premium Paid ODM â $100","payodm-advantages-section-2-title":"Privacy & Data Security","payodm-advantages-section-2-title--plural":"Privacy & Data Security","payodm-comparison-paid-1-highlight":"Sr. Account Manager + Liaison + Designer","payodm-comparison-paid-1-highlight--plural":"Sr. Account Manager + Liaison + Designer","payodm-comparison-paid-8-highlight":"3 business days","payodm-comparison-paid-8-highlight--plural":"3 business days","payodm-comparison-paid-1-rest":" â a stable service squad","payodm-comparison-paid-1-rest--plural":" â a stable service squad","payodm-advantages-section-1-item-1-label":"End-to-end service:","payodm-advantages-section-1-item-1-label--plural":"End-to-end service:","payodm-advantages-subtitle":"Built for brand owners who want predictable delivery, protected IP, and risk-free engagement.","payodm-advantages-subtitle--plural":"Built for brand owners who want predictable delivery, protected IP, and risk-free engagement.","payodm-advantages-section-2-item-2-desc":"high-level encryption; archive or delete on request.","payodm-advantages-section-2-item-2-desc--plural":"high-level encryption; archive or delete on request.","payodm-advantages-section-1-item-2-desc":"1-on-1 expert support throughout your journey.","payodm-advantages-section-1-item-2-desc--plural":"1-on-1 expert support throughout your journey.","payodm-comparison-paid-2-highlight":"Daily proactive follow-up","payodm-comparison-paid-2-highlight--plural":"Daily proactive follow-up","payodm-comparison-cta-paid":"Start My Premium Paid ODM â $100","payodm-comparison-cta-paid--plural":"Start My Premium Paid ODM â $100","payodm-comparison-paid-8-rest":"All requests reviewed & processed within ","payodm-comparison-paid-8-rest--plural":"All requests reviewed & processed within ","payodm-comparison-paid-2-rest":", transparent and predictable","payodm-comparison-paid-2-rest--plural":", transparent and predictable","payodm-comparison-paid-6-highlight":"End-to-end","payodm-comparison-paid-6-highlight--plural":"End-to-end","payodm-hero-cta-paid":"Start My Premium Paid ODM â $100","payodm-hero-cta-paid--plural":"Start My Premium Paid ODM â $100","payodm-advantages-title":"Main Advantages of Premium Paid ODM","payodm-advantages-title--plural":"Main Advantages of Premium Paid ODM","payodm-hero-subtitle":"Skip unreliable suppliers, slow replies, and costly mistakes. Get a dedicated team to handle sourcing, design, and production for you.","payodm-hero-subtitle--plural":"Skip unreliable suppliers, slow replies, and costly mistakes. Get a dedicated team to handle sourcing, design, and production for you.","payodm-comparison-paid-3-highlight":"Top-tier vetted suppliers","payodm-comparison-paid-3-highlight--plural":"Top-tier vetted suppliers","payodm-comparison-footer":"If you value speed, reliability, and peace of mind â Paid ODM is built for you.","payodm-comparison-footer--plural":"If you value speed, reliability, and peace of mind â Paid ODM is built for you.","payodm-advantages-section-2-item-2-label":"Secure Data:","payodm-advantages-section-2-item-2-label--plural":"Secure Data:","payodm-who-item-1":"First-time sellers looking to avoid costly mistakes","payodm-who-item-1--plural":"First-time sellers looking to avoid costly mistakes","payodm-who-item-2":"Growing brands that need stable suppliers","payodm-who-item-2--plural":"Growing brands that need stable suppliers","payodm-who-item-3":"Anyone tired of slow replies and unclear timelines","payodm-who-item-3--plural":"Anyone tired of slow replies and unclear timelines","payodm-who-item-4":"Sellers who want a team instead of doing everything alone","payodm-who-item-4--plural":"Sellers who want a team instead of doing everything alone","payodm-comparison-paid-4-highlight":"Dedicated CS","payodm-comparison-paid-4-highlight--plural":"Dedicated CS","payodm-advantages-section-1-item-3-label":"Direct Factory Access:","payodm-advantages-section-1-item-3-label--plural":"Direct Factory Access:","payodm-comparison-paid-5-rest":"/delay (>7 days) issues","payodm-comparison-paid-5-rest--plural":"/delay (>7 days) issues","payodm-comparison-free-8":"Best-effort service","payodm-comparison-free-8--plural":"Best-effort service","payodm-comparison-free-7":"Standard platform protection","payodm-comparison-free-7--
31657plural":"Standard platform protection","payodm-comparison-paid-6-rest":": logo, packaging, production, delivery","payodm-comparison-paid-6-rest--plural":": logo, packaging, production, delivery","payodm-hero-title-highlight":"Premium Paid ODM","payodm-hero-title-highlight--plural":"Premium Paid ODM","payodm-comparison-paid-4-rest":", fast turnaround, closed-loop handling","payodm-comparison-paid-4-rest--plural":", fast turnaround, closed-loop handling","payodm-comparison-subtitle":"Same platform, different service depth. Pick the plan that matches your brand\'s stage.","payodm-comparison-subtitle--plural":"Same platform, different service depth. Pick the plan that matches your brand\'s stage.","payodm-comparison-paid-7-rest":", encrypted storage, strict NDA","payodm-comparison-paid-7-rest--plural":", encrypted storage, strict NDA","payodm-comparison-paid-5-highlight":"Refund for unfulfilled portion on quality","payodm-comparison-paid-5-highlight--plural":"Refund for unfulfilled portion on quality","payodm-advantages-section-1-title":"Professional & Dedicated Support","payodm-advantages-section-1-title--plural":"Professional & Dedicated Support","payodm-comparison-service-3":"Supply Chain Resources","payodm-comparison-service-3--plural":"Supply Chain Resources","payodm-comparison-service-2":"Response & Follow-Up","payodm-comparison-service-2--plural":"Response & Follow-Up","payodm-comparison-service-1":"Dedicated Team","payodm-comparison-service-1--plural":"Dedicated Team","payodm-advantages-section-2-item-1-label":"Full ownership:","payodm-advantages-section-2-item-1-label--plural":"Full ownership:","payodm-comparison-title":"Free vs Paid ODM â What\'s the Difference?","payodm-comparison-title--plural":"Free vs Paid ODM â What\'s the Difference?","payodm-comparison-service-8":"Processing SLA","payodm-comparison-service-8--plural":"Processing SLA","payodm-comparison-service-7":"Privacy & Data Security","payodm-comparison-service-7--plural":"Privacy & Data Security","payodm-comparison-service-6":"Design & Delivery Scope","payodm-comparison-service-6--plural":"Design & Delivery Scope","payodm-comparison-paid-header":"Premium Paid ODM ($100)","payodm-comparison-paid-header--plural":"Premium Paid ODM ($100)","payodm-comparison-service-5":"Refund Guarantee","payodm-comparison-service-5--plural":"Refund Guarantee","payodm-comparison-service-4":"After-Sales Support","payodm-comparison-service-4--plural":"After-Sales Support","payodm-who-title":"Who Should Choose Paid ODM?","payodm-who-title--plural":"Who Should Choose Paid ODM?","payodm-hero-title":"Launch Your Product without Trial and Error â","payodm-hero-title--plural":"Launch Your Product without Trial and Error â","payodm-comparison-free-header":"Free ODM","payodm-comparison-free-header--plural":"Free ODM","payodm-comparison-paid-3-rest":" + multi-option proposals & backups","payodm-comparison-paid-3-rest--plural":" + multi-option proposals & backups","payodm-comparison-cta-free":"Continue with Free ODM","payodm-comparison-cta-free--plural":"Continue with Free ODM","payodm-advantages-section-1-item-3-desc":"vetted suppliers â best balance of cost, quality, and lead time.","payodm-advantages-section-1-item-3-desc--plural":"vetted suppliers â best balance of cost, quality, and lead time.","payodm-hero-cta-free":"Continue with Free ODM","payodm-hero-cta-free--plural":"Continue with Free ODM","payodm-comparison-free-2":"Long cycles, irregular cadence, and a pace outside your control","payodm-comparison-free-2--plural":"Long cycles, irregular cadence, and a pace outside your control","payodm-comparison-free-1":"A randomly assigned agent, no fixed contact","payodm-comparison-free-1--plural":"A randomly assigned agent, no fixed contact","payodm-comparison-free-6":"Basic design & manufacturing","payodm-comparison-free-6--plural":"Basic design & manufacturing","payodm-comparison-free-5":"Not applicable","payodm-comparison-free-5--plural":"Not applicable","payodm-advantages-section-1-item-2-label":"Dedicated Manager:","payodm-advantages-section-1-item-2-label--plural":"Dedicated Manager:","payodm-comparison-free-4":"Slow responses, queued ticket handling","payodm-comparison-free-4--plural":"Slow responses, queued ticket handling","payodm-comparison-free-3":"Fewer supplier options, limited choices","payodm-comparison-free-3--plural":"Fewer supplier options, limited choices","payodm-comparison-paid-7-highlight":"100% IP ownership","payodm-comparison-paid-7-highlight--plural":"100% IP ownership","payodm-hero-badge-3":"Faster turnaround","payodm-hero-badge-3--plural":"Faster turnaround","payodm-hero-badge-2":"Verified factories only","payodm-hero-badge-2--plural":"Verified factories only","payodm-hero-badge-1":"Trusted by 5,000+ sellers","payodm-hero-badge-1--plural":"Trusted by 5,000+ sellers","ai-assistant-prompt-product-selection":"I am [Seller Type] focus on [Platform] [Market]","ai-assistant-prompt-product-selection--plural":"I am [Seller Type] focus on [Platform] [Market]","ai-assistant-product-selection-recommendation":"Product Selection Recommendation","ai-assistant-product-selection-recommendation--plural":"Product Selection Recommendation","ai-assistant-product-selection-
31657placeholder":"Is the wireless earbuds category worth entering? Please provide a product selection analysis report for me.","ai-assistant-product-selection-placeholder--plural":"Is the wireless earbuds category worth entering? Please provide a product selection analysis report for me.","ai-assistant-report-product-recommendations":"Product Recommendations","ai-assistant-report-product-recommendations--plural":"Product Recommendations","ai-assistant-report-platform":"Platform","ai-assistant-report-this-category":"this category","ai-assistant-report-this-category--plural":"this category","ai-assistant-report-title":"Product Selection Report","ai-assistant-report-title--plural":"Product Selection Report","ai-assistant-report-generated":"Generated","ai-assistant-report-generated--plural":"Generated","ai-assistant-report-market":"Market","ai-assistant-report-market--plural":"Market","ai-assistant-report-price-range":"Price Range","ai-assistant-report-price-range--plural":"Price Range","ai-assistant-report-rating-distribution":"Rating Distribution (by product count share)","ai-assistant-report-rating-distribution--plural":"Rating Distribution (by product count share)","ai-assistant-report-avg-rating":"Average Rating","ai-assistant-report-avg-rating--plural":"Average Rating","ai-assistant-report-market-insight":"Market Insight","ai-assistant-report-market-insight--plural":"Market Insight","ai-assistant-report-supply-gap":"Supply Gap Score","ai-assistant-report-supply-gap--plural":"Supply Gap Score","ai-assistant-report-create-sourcing":"Create Sourcing Request","ai-assistant-report-create-sourcing--plural":"Create Sourcing Request","ai-assistant-report-opportunity-gap-subtitle":"Identify niche opportunities based on competition landscape and user pain points","ai-assistant-report-opportunity-gap-subtitle--plural":"Identify niche opportunities based on competition landscape and user pain points","ai-assistant-report-consumer-factors":"Consumer Decision Factors","ai-assistant-report-consumer-factors--plural":"Consumer Decision Factors","ai-assistant-report-no-products":"No matching products found. Try adjusting category keywords.","ai-assistant-report-no-products--plural":"No matching products found. Try adjusting category keywords.","ai-assistant-report-top-seller-count":"Top Seller Count","ai-assistant-report-top-seller-count--plural":"Top Seller Count","ai-assistant-report-score":"Score","ai-assistant-report-score--plural":"Score","ai-assistant-report-sourcing-desc":"Create a sourcing request and let the supply chain team find more matching products for your target category.","ai-assistant-report-sourcing-desc--plural":"Create a sourcing request and let the supply chain team find more matching products for your target category.","ai-assistant-report-pain-score":"Review Pain Score","ai-assistant-report-pain-score--plural":"Review Pain Score","ai-assistant-report-new-sales-contribution":"New Product Sales Contribution","ai-assistant-report-new-sales-contribution--plural":"New Product Sales Contribution","ai-assistant-report-pain-low":"Low Pain","ai-assistant-report-pain-low--plural":"Low Pain","ai-assistant-report-review-distribution":"Review Count Distribution (by product count share)","ai-assistant-report-review-distribution--plural":"Review Count Distribution (by product count share)","ai-assistant-report-action-advice":"Action Advice","ai-assistant-report-action-advice--plural":"Action Advice","ai-assistant-report-view-detail":"View detail","ai-assistant-report-view-detail--plural":"View detail","ai-assistant-report-competition-level":"Competition Level","ai-assistant-report-competition-level--plural":"Competition Level","ai-assistant-report-opportunity-gap":"Market Opportunity Gap","ai-assistant-report-opportunity-gap--plural":"Market Opportunity Gap","ai-assistant-report-search-growth":"Search Growth","ai-assistant-report-search-growth--plural":"Search Growth","ai-assistant-report-market-insight-fallback":"Based on current category supply-demand, consumer preferences and competitive environment, this category still has entry opportunities.","ai-assistant-report-market-insight-fallback--plural":"Based on current category supply-demand, consumer preferences and competitive environment, this category still has entry opportunities.","ai-assistant-report-avg-profit-margin":"Avg Profit Margin","ai-assistant-report-avg-profit-margin--plural":"Avg Profit Margin","ai-assistant-report-pain-medium":"Medium Pain","ai-assistant-report-pain-medium--plural":"Medium Pain","ai-assistant-report-market-insight-label":"Market Insight: ","ai-assistant-report-market-insight-label--plural":"Market Insight: ","ai-assistant-report-sourcing-title":"Cannot find ideal products?","ai-assistant-report-sourcing-title--plural":"Cannot find ideal products?","ai-assistant-report-new-revenue-contribution":"New Product Revenue Contribution","ai-assistant-report-new-revenue-contribution--plural":"New Product Revenue Contribution","ai-assistant-report-brand-avg-price":"Brand Avg Price","ai-assistant-report-brand-avg-price--plural":"Brand Avg Price","ai-assistant-report-pain-high":"High Pain","ai-assistant-report-pain-high--plural":"High Pain","ai-assistant-report-compet
31657ition-insight":"Competition Landscape Insight","ai-assistant-report-competition-insight--plural":"Competition Landscape Insight","ai-assistant-report-monopoly-degree":"Top Product Monopoly","ai-assistant-report-monopoly-degree--plural":"Top Product Monopoly","common-mycj-menu-inventory-planner":"Inventory Planner","common-mycj-menu-inventory-planner--plural":"Inventory Planner","ai-assistant-report-meta-summary":"Based on the analysis of market trends, competitive landscape and supply-demand dynamics, deliver a market positioning and product selection report.","ai-assistant-report-meta-summary--plural":"Based on the analysis of market trends, competitive landscape and supply-demand dynamics, deliver a market positioning and product selection report.","product-market-drawer-tips":"Primary categories monitored for this site.","product-market-drawer-tips--plural":"Primary categories monitored for this site.","product-market-drawer-tips-3":"Average sales of all monitored categories on this site. Drill down for top sales categories and products.","product-market-drawer-tips-3--plural":"Average sales of all monitored categories on this site. Drill down for top sales categories and products.","product-market-drawer-tips-4":"Categories sorted by ranking change rate in descending order. Ranking change rate = relative change of category BSR in the selected period.","product-market-drawer-tips-4--plural":"Categories sorted by ranking change rate in descending order. Ranking change rate = relative change of category BSR in the selected period.","product-market-drawer-tips-2":"Total ASINs covered under the site.","product-market-drawer-tips-2--plural":"Total ASINs covered under the site.","odm-comparison-cta-paid":"Start My Premium Paid ODM â $100","odm-comparison-cta-paid--plural":"Start My Premium Paid ODM â $100","odm-comparison-paid-1-highlight":"Sr. Account Manager + Liaison + Designer","odm-comparison-paid-1-highlight--plural":"Sr. Account Manager + Liaison + Designer","odm-advantages-section-1-item-1-label":"End-to-end service:","odm-advantages-section-1-item-1-label--plural":"End-to-end service:","odm-steps-slogan-highlight":"we handle the rest.","odm-steps-slogan-highlight--plural":"we handle the rest.","odm-comparison-paid-8-highlight":"3 business days","odm-comparison-paid-8-highlight--plural":"3 business days","odm-comparison-paid-8-rest":"All requests reviewed & processed within ","odm-comparison-paid-8-rest--plural":"All requests reviewed & processed within ","odm-who-title":"Who Should Choose Paid ODM?","odm-who-title--plural":"Who Should Choose Paid ODM?","odm-mobile-prompt-title":"Notice","odm-mobile-prompt-title--plural":"Notice","odm-steps-title":"With Paid ODM","odm-steps-title--plural":"With Paid ODM","odm-comparison-paid-7-highlight":"100% IP ownership","odm-comparison-paid-7-highlight--plural":"100% IP ownership","odm-advantages-section-3-item-3-label":"Fast Processing:","odm-advantages-section-3-item-3-label--plural":"Fast Processing:","odm-advantages-section-2-item-3-desc":"never shared or promoted without your explicit consent.","odm-advantages-section-2-item-3-desc--plural":"never shared or promoted without your explicit consent.","odm-advantages-section-3-item-3-desc":"every request handled within 3 business days.","odm-advantages-section-3-item-3-desc--plural":"every request handled within 3 business days.","odm-comparison-paid-3-highlight":"Top-tier vetted suppliers","odm-comparison-paid-3-highlight--plural":"Top-tier vetted suppliers","odm-advantages-section-2-item-1-label":"Full ownership:","odm-advantages-section-2-item-1-label--plural":"Full ownership:","odm-faq-title":"Frequently Asked Questions","odm-faq-title--plural":"Frequently Asked Questions","odm-cta-title":"Stop wasting time on unreliable suppliers.","odm-cta-title--plural":"Stop wasting time on unreliable suppliers.","odm-cta-subtitle":"For just $100, get a dedicated team, faster results, and peace of mind.","odm-cta-subtitle--plural":"For just $100, get a dedicated team, faster results, and peace of mind.","odm-advantages-section-1-item-3-desc":"vetted suppliers â best balance of cost, quality, and lead time.","odm-advantages-section-1-item-3-desc--plural":"vetted suppliers â best balance of cost, quality, and lead time.","odm-advantages-title":"Main Advantages of Premium Paid ODM","odm
31657-advantages-title--plural":"Main Advantages of Premium Paid ODM","odm-steps-text-1":"Submit your product idea","odm-steps-text-1--plural":"Submit your product idea","odm-comparison-cta-free":"Continue with Free ODM","odm-comparison-cta-free--plural":"Continue with Free ODM","odm-comparison-paid-5-rest":"/delay (>7 days) issues","odm-comparison-paid-5-rest--plural":"/delay (>7 days) issues","odm-advantages-section-2-item-2-label":"Secure Data:","odm-advantages-section-2-item-2-label--plural":"Secure Data:","odm-steps-step-1":"STEP 1","odm-steps-step-1--plural":"STEP 1","odm-steps-step-2":"STEP 2","odm-steps-step-2--plural":"STEP 2","odm-comparison-paid-2-rest":", transparent and predictable","odm-comparison-paid-2-rest--plural":", transparent and predictable","odm-steps-step-5":"STEP 5","odm-steps-step-5--plural":"STEP 5","odm-steps-step-3":"STEP 3","odm-steps-step-3--plural":"STEP 3","odm-steps-step-4":"STEP 4","odm-steps-step-4--plural":"STEP 4","odm-cta-button":"Start My Premium Paid ODM â $100","odm-cta-button--plural":"Start My Premium Paid ODM â $100","odm-comparison-paid-6-highlight":"End-to-end","odm-comparison-paid-6-highlight--plural":"End-to-end","odm-who-item-2":"Growing brands that need stable suppliers","odm-who-item-2--plural":"Growing brands that need stable suppliers","odm-who-item-1":"First-time sellers looking to avoid costly mistakes","odm-who-item-1--plural":"First-time sellers looking to avoid costly mistakes","odm-steps-text-2":"Your manager handles sourcing and negotiation","odm-steps-text-2--plural":"Your manager handles sourcing and negotiation","odm-steps-text-3":"Receive samples faster","odm-steps-text-3--plural":"Receive samples faster","odm-steps-text-4":"Confirm production","odm-steps-text-4--plural":"Confirm production","odm-steps-text-5":"Launch with confidence","odm-steps-text-5--plural":"Launch with confidence","odm-faq-q6":"Why should I pay if Free ODM is available?","odm-faq-q6--plural":"Why should I pay if Free ODM is available?","odm-faq-q7":"What can I expect in the first 7 days?","odm-faq-q7--plural":"What can I expect in the first 7 days?","odm-who-cta-paid":"Start My Premium Paid ODM â $100","odm-who-cta-paid--plural":"Start My Premium Paid ODM â $100","odm-comparison-paid-3-rest":" + multi-option proposals & backups","odm-comparison-paid-3-rest--plural":" + multi-option proposals & backups","odm-faq-q2":"Can I get a refund if I\'m not satisfied?","odm-faq-q2--plural":"Can I get a refund if I\'m not satisfied?","odm-advantages-section-3-item-1-label":"Quality Guarantee:","odm-advantages-section-3-item-1-label--plural":"Quality Guarantee:","odm-faq-q3":"Will my designs and brand information be leaked?","odm-faq-q3--plural":"Will my designs and brand information be leaked?","odm-faq-q4":"How quickly will I receive the first response?","odm-faq-q4--plural":"How quickly will I receive the first response?","odm-faq-q5":"Can I switch from Free Standard ODM to Paid ODM later?","odm-faq-q5--plural":"Can I switch from Free Standard ODM to Paid ODM later?","odm-who-item-4":"Sellers who want a team instead of doing everything alone","odm-who-item-4--plural":"Sellers who want a team instead of doing everything alone","odm-who-item-3":"Anyone tired of slow replies and unclear timelines","odm-who-item-3--plural":"Anyone tired of slow replies and unclear timelines","odm-faq-a1":"A dedicated squad (Senior Account Manager + Liaison + Designer), daily proactive follow-up, premium supplier sourcing, dedicated after-sales support, and a refund guarantee for any unfulfilled portion.","odm-faq-a1--plural":"A dedicated squad (Senior Account Manager + Liaison + Designer), daily proactive follow-up, premium supplier sourcing, dedicated after-sales support, and a refund guarantee for any unfulfilled portion.","odm-comparison-footer":"If you value speed, reliability, and peace of mind â Paid ODM is built for you.","odm-comparison-footer--plural":"If you value speed, reliability, and peace of mind â Paid ODM is built for you.","odm-advantages-section-3-title":"Quality Assurance & Refund Policy","odm-advantages-section-3-title--plural":"Quality Assurance & Refund Policy","odm-comparison-paid-4-rest":", fast turnaround, closed-loop handling","odm-comparison-paid-4-rest--plural":", fast turnaround, closed-loop handling","odm-comparison-paid-5-highlight":"Refund for unfulfilled portion on quality","odm
31657-comparison-paid-5-highlight--plural":"Refund for unfulfilled portion on quality","odm-faq-q1":"What does the $100 Paid ODM include?","odm-faq-q1--plural":"What does the $100 Paid ODM include?","odm-comparison-paid-header":"Premium Paid ODM ($100)","odm-comparison-paid-header--plural":"Premium Paid ODM ($100)","odm-steps-subtitle":"Same clear workflow â Premium Paid ODM adds a dedicated team, daily follow-up, and a refund safety net at every step","odm-steps-subtitle--plural":"Same clear workflow â Premium Paid ODM adds a dedicated team, daily follow-up, and a refund safety net at every step","odm-mobile-prompt-button":"OK","odm-faq-a6":"Because Paid ODM saves you time, reduces risk, and gives you a dedicated team to handle everything.","odm-faq-a6--plural":"Because Paid ODM saves you time, reduces risk, and gives you a dedicated team to handle everything.","odm-advantages-section-1-item-3-label":"Direct Factory Access:","odm-advantages-section-1-item-3-label--plural":"Direct Factory Access:","odm-advantages-section-2-item-1-desc":"100% of designs, files & IP belong to you.","odm-advantages-section-2-item-1-desc--plural":"100% of designs, files & IP belong to you.","odm-advantages-section-3-item-1-desc":"refund for the uncompleted portion if results deviate.","odm-advantages-section-3-item-1-desc--plural":"refund for the uncompleted portion if results deviate.","odm-faq-a7":"Supplier matching, initial quotations, and sampling plan.","odm-faq-a7--plural":"Supplier matching, initial quotations, and sampling plan.","odm-advantages-section-2-item-3-label":"Non-Disclosure:","odm-advantages-section-2-item-3-label--plural":"Non-Disclosure:","odm-faq-a2":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","odm-faq-a2--plural":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","odm-advantages-section-1-item-1-desc":"from logo & packaging design to production & delivery.","odm-advantages-section-1-item-1-desc--plural":"from logo & packaging design to production & delivery.","odm-faq-a3":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","odm-faq-a3--plural":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","odm-faq-a4":"Every request is reviewed and processed within 3 business days. Paid ODM customers also receive daily proactive follow-up.","odm-faq-a4--plural":"Every request is reviewed and processed within 3 business days. Paid ODM customers also receive daily proactive follow-up.","odm-faq-a5":"Absolutely. You can upgrade to Paid ODM at any time, and your dedicated service will continue for the remaining project lifecycle.","odm-faq-a5--plural":"Absolutely. You can upgrade to Paid ODM at any time, and your dedicated service will continue for the remaining project lifecycle.","odm-advantages-subtitle":"Built for brand owners who want predictable delivery, protected IP, and risk-free engagement.","odm-advantages-subtitle--plural":"Built for brand owners who want predictable delivery, protected IP, and risk-free engagement.","odm-comparison-paid-4-highlight":"Dedicated CS","odm-comparison-paid-4-highlight--plural":"Dedicated CS","odm-comparison-paid-6-rest":": logo, packaging, production, delivery","odm-comparison-paid-6-rest--plural":": logo, packaging, production, delivery","odm-advantages-section-1-title":"Professional & Dedicated Support","odm-advantages-section-1-title--plural":"Professional & Dedicated Support","odm-cta-spo":"Start Paid ODM â $100","odm-cta-spo--plural":"Start Paid ODM â $100","odm-faq-subtitle":"Everything you need to know before choosing between Free Standard ODM and Premium Paid ODM","odm-faq-subtitle--plural":"Everything you need to know before choosing between Free Standard ODM and Premium Paid ODM","odm-comparison-free-7":"Standard platform protection","odm-comparison-free-7--
31657plural":"Standard platform protection","odm-comparison-free-8":"Best-effort service","odm-comparison-free-8--plural":"Best-effort service","odm-comparison-paid-1-rest":" â a stable service squad","odm-comparison-paid-1-rest--plural":" â a stable service squad","odm-advantages-section-1-item-2-label":"Dedicated Manager:","odm-advantages-section-1-item-2-label--plural":"Dedicated Manager:","odm-steps-slogan-text":"You focus on selling â ","odm-steps-slogan-text--plural":"You focus on selling â ","odm-comparison-paid-2-highlight":"Daily proactive follow-up","odm-comparison-paid-2-highlight--plural":"Daily proactive follow-up","odm-advantages-section-3-item-2-label":"Timely Delivery:","odm-advantages-section-3-item-2-label--plural":"Timely Delivery:","odm-advantages-section-3-item-2-desc":"delays over 7 days â refund eligible","odm-advantages-section-3-item-2-desc--plural":"delays over 7 days â refund eligible","odm-comparison-paid-7-rest":", encrypted storage, strict NDA","odm-comparison-paid-7-rest--plural":", encrypted storage, strict NDA","odm-advantages-section-1-item-2-desc":"1-on-1 expert support throughout your journey.","odm-advantages-section-1-item-2-desc--plural":"1-on-1 expert support throughout your journey.","odm-advantages-section-2-item-2-desc":"high-level encryption; archive or delete on request.","odm-advantages-section-2-item-2-desc--plural":"high-level encryption; archive or delete on request.","odm-mobile-prompt-message":"Thank you for your support. This feature is currently available on the Web. Go try it out!","odm-mobile-prompt-message--plural":"Thank you for your support. This feature is currently available on the Web. Go try it out!","odm-advantages-section-2-title":"Privacy & Data Security","odm-advantages-section-2-title--plural":"Privacy & Data Security","odm-comparison-subtitle":"Same platform, different service depth. Pick the plan that matches your brand\'s stage.","odm-comparison-subtitle--plural":"Same platform, different service depth. Pick the plan that matches your brand\'s stage.","odm-hero-cta-free":"Continue with Free ODM","odm-hero-cta-free--plural":"Continue with Free ODM","odm-hero-badge-1":"Trusted by 5,000+ sellers","odm-hero-badge-1--plural":"Trusted by 5,000+ sellers","odm-hero-badge-2":"Verified factories only","odm-hero-badge-2--plural":"Verified factories only","odm-comparison-free-header":"Free ODM","odm-comparison-free-header--plural":"Free ODM","odm-hero-badge-3":"Faster turnaround","odm-hero-badge-3--plural":"Faster turnaround","odm-hero-cta-paid":"Start My Premium Paid ODM â $100","odm-hero-cta-paid--plural":"Start My Premium Paid ODM â $100","odm-hero-title-highlight":"Premium Paid ODM","odm-hero-title-highlight--plural":"Premium Paid ODM","odm-comparison-title":"Free vs Paid ODM â What\'s the Difference?","odm-comparison-title--plural":"Free vs Paid ODM â What\'s the Difference?","odm-comparison-free-3":"Fewer supplier options, limited choices","odm-comparison-free-3--plural":"Fewer supplier options, limited choices","odm-comparison-free-4":"Slow responses, queued ticket handling","odm-comparison-free-4--plural":"Slow responses, queued ticket handling","odm-comparison-free-5":"Not applicable","odm-comparison-free-5--plural":"Not applicable","odm-comparison-free-6":"Basic design & manufacturing","odm-comparison-free-6--plural":"Basic design & manufacturing","odm-comparison-free-1":"A randomly assigned agent, no fixed contact","odm-comparison-free-1--plural":"A randomly assigned agent, no fixed contact","odm-comparison-free-2":"Long cycles, irregular cadence, and a pace outside your control","odm-comparison-free-2--plural":"Long cycles, irregular cadence, and a pace outside your control","odm-hero-subtitle":"Skip unreliable suppliers, slow replies, and costly mistakes. Get a dedicated team to handle sourcing, design, and production for you.","odm-hero-subtitle--plural":"Skip unreliable suppliers, slow replies, and costly mistakes. Get a dedicated team to handle sourcing, design, and production for you.","odm-hero-title":"Launch Your Product without Trial and Error â","odm-hero-title--plural":"Launch Your Product without Trial and Error â","odm-comparison-service-3":"Supply Chain Resources","odm-comparison-service-3--plural":"Supply Chain Resources","odm-comparison-service-2":"Response & Follow-Up","odm-comparison-service-2--plural":"Response & Follow-Up","odm-comparison-service-1":"Dedicated Team","odm-comparison-service-1--plural":"Dedicated Team","odm-comparison-service-7":"Privacy & Data Security","odm
31657-comparison-service-7--plural":"Privacy & Data Security","odm-comparison-service-6":"Design & Delivery Scope","odm-comparison-service-6--plural":"Design & Delivery Scope","odm-comparison-service-5":"Refund Guarantee","odm-comparison-service-5--plural":"Refund Guarantee","odm-comparison-service-4":"After-Sales Support","odm-comparison-service-4--plural":"After-Sales Support","odm-comparison-service-8":"Processing SLA","odm-comparison-service-8--plural":"Processing SLA","product-market-action-triggered":"Action triggered","product-market-action-triggered--plural":"Action triggered","product-market-cj-similar-recommendations":"CJ Similar Recommendations","product-market-cj-similar-recommendations--plural":"CJ Similar Recommendations","product-market-previous":"Previous","product-market-previous--plural":"Previous","product-market-page-total":"Page / Total","product-market-page-total--plural":"Page / Total","product-market-listed-2":"Listing","product-market-listed-2--plural":"Listing","product-market-cj-similar-product-top-10":"CJ Similar Products Top 10","product-market-cj-similar-product-top-10--plural":"CJ Similar Products Top 10","product-market-ad-video-preview":"Ad Video Preview","product-market-ad-video-preview--plural":"Ad Video Preview","product-market-site":"Site","product-market-site--plural":"Site","product-market-price":"Price","product-market-please-select-cj-products-first":"Please select CJ products first","product-market-please-select-cj-products-first--plural":"Please select CJ products first","product-market-play":"Play","product-market-play--plural":"Play","product-market-no-suitable-product-start-sourcing":"No suitable products found? Start Sourcing","product-market-no-suitable-product-start-sourcing--plural":"No suitable products found? Start Sourcing","product-market-category-product-count":"Category Product Count","product-market-category-product-count--plural":"Category Product Count","product-market-total-likes":"Total Likes","product-market-total-likes--plural":"Total Likes","product-market-similar-recommendations":"Similar Recommendations","product-market-similar-recommendations--plural":"Similar Recommendations","product-market-listed":"Listed","product-market-listed--plural":"Listed","product-market-brand":"Brand","product-market-brand--plural":"Brand","product-market-similar-hot-products":"Similar Hot Products","product-market-similar-hot-products--plural":"Similar Hot Products","product-market-start-sourcing-request":"Start Sourcing","product-market-start-sourcing-request--plural":"Start Sourcing","product-market-views":"Views","product-market-no-similar-hot-products":"No similar hot products","product-market-no-similar-hot-products--plural":"No similar hot products","product-market-no-cj-recommended-product-ids":"No Source","product-market-no-cj-recommended-product-ids--plural":"No Source","product-market-average-running-days":"Average Ad Duration","product-market-average-running-days--plural":"Average Ad Duration","product-market-total-category-ad-likes":"Calculation: Total likes in this category (TikTok + Facebook combined)","product-market-total-category-ad-likes--plural":"Calculation: Total likes in this category (TikTok + Facebook combined)","product-market-products-to-the-selection-list":"products to the selection list","product-market-products-to-the-selection-list--plural":"products to the selection list","product-market-cj-similar":"CJ Similar","product-market-cj-similar--plural":"CJ Similar","product-market-full-match":"Exact Source","product-market-full-match--plural":"Exact Source","product-market-ad-total-likes-tooltip":"Total ad likes from the chosen platforms","product-market-ad-total-likes-tooltip--plural":"Total ad likes from the chosen platforms","product-market-top-5-by-total-ad-likes-in-the-same-category":"Top 5 Total Likes for Ads in This Category","product-market-top-5-by-total-ad-likes-in-the-same-category--plural":"Top 5 Total Likes for Ads in This Category","product-market-rating":"Rating","product-market-added":"Added","product-market-sales":"Sales","product-market-total-category-ads":"Total Ads in Category","product-market-total-category-ads--plural":"Total Ads in Category","product-market-running-days":"Days Active","product-market-running-days--plural":"Days Active","product-market-total-tiktok-ad-l
31657ikes":"Total TikTok ad likes","product-market-total-tiktok-ad-likes--plural":"Total TikTok ad likes","product-market-ad-duration":"Ad Days Active","product-market-ad-duration--plural":"Ad Days Active","product-market-ai-powered-matching-recommends-similar-cj-pro":"Using AI recognition, recommends highly potential similar products on CJ platform","product-market-ai-powered-matching-recommends-similar-cj-pro--plural":"Using AI recognition, recommends highly potential similar products on CJ platform","product-market-ad-data":"Ad Data","product-market-ad-data--plural":"Ad Data","product-market-average-category-product-rating":"Average Amazon rating for products in this category.","product-market-average-category-product-rating--plural":"Average Amazon rating for products in this category.","product-market-reviews":"Reviews","product-market-days":"Days","product-market-days--plural":"Days","product-market-second-level-category":"Secondary Category","product-market-second-level-category--plural":"Secondary Category","product-market-go-to":"Go to","product-market-average-rating":"Average Rating","product-market-average-rating--plural":"Average Rating","product-market-price-2":"Price","product-market-max":"Max","product-market-average-category-product-reviews":"Average number of reviews for products in this category.","product-market-average-category-product-reviews--plural":"Average number of reviews for products in this category.","product-market-listing-time":"Listing Duration","product-market-listing-time--plural":"Listing Duration","product-market-average-days-from-first-appearance-to-last-ac":"Definition: Days from ad first appearance to last active day (only counting removed ads)","product-market-average-days-from-first-appearance-to-last-ac--plural":"Definition: Days from ad first appearance to last active day (only counting removed ads)","product-market-not-found-start-sourcing":"Not found? Start sourcing","product-market-not-found-start-sourcing--plural":"Not found? Start sourcing","product-market-estimated-category-sales":"Total sales of all ASINs under this category.","product-market-estimated-category-sales--plural":"Total sales of all ASINs under this category.","product-market-total-running-days":"Total Days Active","product-market-total-running-days--plural":"Total Days Active","product-market-records":"records","product-market-records--plural":"records","product-market-cj-similar-recommendation-triggered":"CJ similar recommendation triggered","product-market-cj-similar-recommendation-triggered--plural":"CJ similar recommendation triggered","product-market-min":"Min","product-market-listing-time-distribution":"Listing Duration Distribution","product-market-listing-time-distribution--plural":"Listing Duration Distribution","product-market-sort":"Sort","product-market-add-failed-please-try-again-later":"Add failed. Please try again later.","product-market-add-failed-please-try-again-later--plural":"Add failed. Please try again later.","product-market-cj-similar-for-this-category":"CJ Similar Products for This Category","product-market-cj-similar-for-this-category--plural":"CJ Similar Products for This Category","product-market-rating-distribution":"Rating Distribution","product-market-rating-distribution--plural":"Rating Distribution","product-market-number-of-different-tiktok-ad-creatives":"Number of different TikTok ad creatives","product-market-number-of-different-tiktok-ad-creatives--plural":"Number of different TikTok ad creatives","product-market-total-ad-plays":"Total TikTok ad views","product-market-total-ad-plays--plural":"Total TikTok ad views","product-market-estimated-category-revenue":"Total sales of all ASINs under this category ±15% error.","product-market-estimated-category-revenue--plural":"Total sales of all ASINs under this category ±15% error.","product-market-related-category-recommendations":"Related Category Recommendations","product-market-related-category-recommendations--plural":"Related Category Recommendations","product-market-first-level-category":"Primary Category","product-market-first-level-category--plural":"Primary Category","product-market-page":"Page","product-market-ads":"Ad Count","product-market-ads--plural":"Ad Count","product-market-average-reviews":"Average Review Count","product-market-average-reviews--plural":"Average Review Count","product-market-average-days-from-first-appearance-to-last-2":"Average duration from first appearance to last active day for all ads of this product. Longer = more stable lifecycle.","product-market-average-days-from-first-appearance-to-last-2--plural":"Average duration from first appearance to last active day for all ads of this product. Longer = more stable lifecycle.","product-market-cj-platform-recommended-top5":"CJ Platform Top 5 Picks","product-market-cj-platform-recommended-top5--plural":"CJ Platform Top 5 Picks","product-market-add":"Add","product-market-view-cj-similar-recommendations":"View CJ Similar Recommendations","product-market-view-cj-similar-recommendations--plural":"View CJ Similar Recommendations","product-market-price-usd":"Price ($)","product-market-price-usd--plural":"Price ($)","product-market-no-suitable-similar-products-matched":"No suitable similar products found","product-market-no-suitable-similar-products-matched--plural":"No suitable similar products found","product-market-number-of-independent-facebook-ads":"Number of independent Facebook ads","product-market-number-of-independent-facebook-ads--plural":"Number of independent Facebook ads","product-market-average-price":"Average Price","product-market-average-price--plural":"Average Price","product-market-close":"Close","product-market-no-platform-ad-data":"No platform ad data","product-market-no-platform-ad-data--plural":"No platform ad data","product-market-no-related-categories":"No related categories","product-market-no-related-categories--plural":"No related categories","product-market-view-category-trends":"View Category Sales","product-market-view-category-trends--plural":"View Category Sales","product-market-category-level-ad-heat-growth-trends-top-hot":"Category ad heat, growth trend, top ads & CJ related products","product-market-category-level-ad-heat-growth-trends-top-hot--plural":"Category ad heat, growth trend, top ads & CJ related products","product-market-sales-current-price":"Units sold à current price","product-market-sales-current-price--plural":"Units sold à current price","product-market-back":"Back","product-market-no-ad-video-url-available":"No ad video URL available","product-market-no-ad-video-url-available--plural":"No ad video URL available","product-market-batch-added":"Batch added","product-market-batch-added--plural":"Batch added","product-market-distribution-statistics":"Distribution Statistics","product-market-distribution-statistics--plural":"Distribution Statistics","product-market-review-count-distribution":"Review Count Distribution","product-market-review-count-distribution--plural":"Review Count Distribution","product-market-total-plays-only-including-tiktok":"Total Views, TikTok only","product-market-total-plays-only-including-tiktok--plural":"Total Views, TikTok only","product-market-aggregated-ad-products-under-this-category":"Calculation: Deduplicated ads in this first-level category in the selected time window (TikTok + Facebook combined).","product-market-aggregated-ad-products-under-this-category--plural":"Calculation: Deduplicated ads in this first-level category in the selected time window (TikTok + Facebook combined).","product-market-cj-similar-product-recommendations":"CJ Similar Product Recommendations","product-market-cj-similar-product-recommendations--plural":"CJ Similar Product Recommendations","product-market-no-similar-matches-are-available-for-the-curr":"If current category/product has no match, you can initiate a \\"S
31657ourcing Task\\" for CJ sourcing team follow-up","product-market-no-similar-matches-are-available-for-the-curr--plural":"If current category/product has no match, you can initiate a \\"Sourcing Task\\" for CJ sourcing team follow-up","product-market-price-distribution":"Price Distribution","product-market-price-distribution--plural":"Price Distribution","product-market-next":"Next","product-market-average-category-product-price":"Weighted average price of products under this category (weighted by sales).","product-market-average-category-product-price--plural":"Weighted average price of products under this category (weighted by sales).","product-market-total-facebook-ad-likes":"Total Facebook ad likes","product-market-total-facebook-ad-likes--plural":"Total Facebook ad likes","product-market-total-plays":"Total Views","product-market-total-plays--plural":"Total Views","product-market-likes":"Likes","product-market-likes--plural":"Likes","product-market-total":"Total","product-market-total-ad-running-days":"FB Total Active Days","product-market-total-ad-running-days--plural":"FB Total Active Days","product-market-cj-recommended-top5":"CJ Recommended Top 5","product-market-cj-recommended-top5--plural":"CJ Recommended Top 5","product-market-play-ad":"Play Video","product-market-play-ad--plural":"Play Video","product-market-reset":"Clear","product-market-no-product-data":"No product data","product-market-no-product-data--plural":"No product data","product-market-title-description-contains":"Title/Description Contains","product-market-title-description-contains--plural":"Title/Description Contains","product-market-ad-category":"Ad Category","product-market-ad-category--plural":"Ad Category","product-market-intelligent-recommendations-from-cj-products":"Based on category hot product characteristics, recommended from CJ product library","product-market-intelligent-recommendations-from-cj-products--plural":"Based on category hot product characteristics, recommended from CJ product library","product-market-view-more":"View More","product-market-advertising-trends":"Advertising Trends","product-market-advertising-trends--plural":"Advertising Trends","product-market-all-categories":"All Categories","product-market-intelligent-recommendations-from-cj-products-2":"When category = \\"All\\", shows CJ platform-wide top 5 recommendations","product-market-intelligent-recommendations-from-cj-products-2--plural":"When category = \\"All\\", shows CJ platform-wide top 5 recommendations","product-market-product":"Product","product-market-details":"Details","product-market-search":"Search","product-market-all":"All","product-market-sales-trends":"Sales Trends","product-market-sales-trends--plural":"Sales Trends","product-market-action":"Action","product-market-no-data":"No Data","product-market-region":"Region","product-market-keyword":"Keywords","product-market-keyword--plural":"Keywords","product-market-match":"Source","product-market-match--plural":"Source","product-market-data-updated":"Data Updated:","product-market-data-updated--plural":"Data Updated:","product-market-platform":"Platform","product-market-seller-count":"Number of Sellers","product-market-seller-count--plural":"Number of Sellers","product-market-calculation-sum-of-ads-in-top-10-first-level":"Calculation: Sum of ads in top 10 first-level categories ÷ Total number of ads.","product-market-calculation-sum-of-ads-in-top-10-first-level--plural":"Calculation: Sum of ads in top 10 first-level categories ÷ Total number of ads.","product-market-comments":"Comments","product-market-comments--plural":"Comments","product-market-calculation-rule":"Calculation Rule","product-market-calculation-rule--plural":"Calculation Rule","product-market-rising-category-details":"Trending Category Details","product-market-rising-category-details--plural":"Trending Category Details","product-market-monitored-category-details":"Monitored Category Details","product-market-monitored-category-details--plural":"Monitored Category Details","product-market-sorted-by-revenue-desc-click-category-analysi":"Ranked by sales in descending order, select top 10.","product-market-sorted-by-revenue-desc-click-category-analysi--plural":"Ranked by sales in descending order, select top 10.","product-market-facebook-ads-count-tips":"Number of unique Facebook ads in this category","product-market-facebook-ads-count-tips--plural":"Number of unique Facebook ads in this category","product-market-sales-trends-dashboard":"Sales Dashboard","product-market-sales-trends-dashboard--plural":"Sales Dashboard","product-market-no-sales-forecast-data":"No sales forecast data","product-market-no-sales-forecast-data--plural":"No sales forecast data","product-market-monitored-categories-top20":"Top 20 Monitored Categories","product-market-monitored-categories-top20--plural":"Top 20 Monitored Categories","product-market-average-category-revenue-current-site":"Scope: Average sales of all monitored categories under this site. Sales are estimates with ±15% error.","product-market-average-category-revenue-current-site--plural":"Scope: Average sales of all monitored categories under this site. Sales are estimates with ±15% error.","product-market-rising-categories":"Trending Categories","product-market-show-category-heat-values-by-region":"Calculation: Total high-quality ads per region à category","product-market-show-category-heat-values-by-region--plural":"Calculation: Total high-quality ads per region à category","product-market-calculation-count-ads-labeled-hot-ad-on-tikto":"Calculation: Count ads labeled \\"Hot Ad\\" on TikTok and Facebook. No deduplication is applied when Platform = All.","product-market-calculation-count-ads-labeled-hot-ad-on-tikto--plural":"Calculation: Count ads labeled \\"Hot Ad\\" on TikTok and Facebook. No deduplication is applied when Platform = All.","product-market-total-reviews-for-this-product":"Total reviews for this product","product-market-total-reviews-for-this-product--plural":"Total reviews for this product","product-market-current-dashboard-main-category-bsr":"Current dashboard primary category BSR","product-market-current-dashboard-main-category-bsr--plural":"Current dashboard primary category BSR","product-market-top10-category-share":"TOP10 Category Share","product-market-top10-category-share--plural":"TOP10 Category Share","product-market-core-metrics":"Core Metrics","product-market-core-metrics--plural":"Core Metrics","product-market-tiktok-ads-count-tips":"Number of unique TikTok ads in this category","product-market-tiktok-ads-count-tips--plural":"Number of unique TikTok ads in this category","product-market-advertising-trends-dashboard":"Advertising Trends Dashboard","product-market-advertising-trends-dashboard--plural":"Advertising Trends Dashboard","product-market-rank":"Rank","product-market-rank--plural":"Rank","product-market-days-since-first-listing":"Days since first listing","product-market-days-since-first-listing--plural":"Days since first listing","product-market-view-analysis":"View Analysis","product-market-view-analysis--plural":"View Analysis","product-market-aggregated-subcategory-products-under-first-l":"Total ASINs covered under this primary category.","product-market-aggregated-subcategory-products-under-first-l--plural":"Total ASINs covered under this primary category.","product-market-refresh-batch":"Refresh Batch","product-market-refresh-batch--plural":"Refresh Batch","product-market-product-count":"Product Count","product-market-product-count--plural":"Product Count","product-market-revenue-top20":"Top 100 Sales","product-market-revenue-top20--plural":"Top 100 Sales","product-market-ad-spend":"Ad Spend","product-market-ad-spend--plural":"Ad Spend","product-market-estimated-orders":"Estimated Orders","product-market-estimated-orders--plural":"Estimated Orders","product-market-declining-categories-top5-tips":"Bottom five categories by ranking change rate in ascending order","product-market-declining-categories-top5-tips--plural":"Bottom five categories by ranking change rate in ascending order","product-market-ad-title":"Ad Title","product-market-ad-title--plural":"Ad Title","product-market-sales-current-price-2":"Units sold à current price; for multiple variants, use main variant price","product-market-sales-current-price-2--plural":"Units sold à current price; for multiple variants, use main variant price","product-market-similar-bsr-top5":"Top 5 Similar LQS","product-market-similar-bsr-top5--plural":"Top 5 Similar LQS","product-market-high-revenue-products-categories":"High Sales Products / Categories","product-market-high-revenue-products-categories--plural":"High Sales Products / Categories","product-market-rising-categories-top5":"Top 5 Trending Categories","product-market-rising-categories-top5--plural":"Top 5 Trending Categories","product-market-monitoring-scope-ss-collected-sales-asins":"Monitoring Scope = ASINs with collected and available sales data","product-market-monitoring-scope-ss-collected-sales-asins--plural":"Monitoring Scope = ASINs with collected and available sales data","product-market-top-10-hot-ad-categories":"Top 10 Hot Ad Categories","product-market-top-10-hot-ad-categories--plural":"Top 10 Hot Ad Categories","product-market-distribution-tips-1":"Percentage of products in price ranges. Helps identify mainstream price bands.","product-market-distribution-tips-1--plural":"Percentage of products in price ranges. Helps identify mainstream price bands.","product-market-distribution-tips-2":"Percentage of products in star rating ranges. Reflects quality experience distribution.","product-market-distribution-tips-2--plural":"Percentage of products in star rating ranges. Reflects quality experience distribution.","product-market-distribution-tips-3"
31657:"Percentage of products in review count ranges. Low review count indicates new product opportunities.","product-market-distribution-tips-3--plural":"Percentage of products in review count ranges. Low review count indicates new product opportunities.","product-market-first-level-categories-with-high-search-growt":"Trending Categories = Top ranking change rate in descending order; Ranking change rate = relative change of category BSR.","product-market-first-level-categories-with-high-search-growt--plural":"Trending Categories = Top ranking change rate in descending order; Ranking change rate = relative change of category BSR.","product-market-hot-ads-count":"Hot Ads Count","product-market-hot-ads-count--plural":"Hot Ads Count","product-market-items-showing-the-first-20":"items, showing the first 20","product-market-items-showing-the-first-20--plural":"items, showing the first 20","product-market-estimated-sales-15-margin-of-error":"Estimated units sold ±15% error","product-market-estimated-sales-15-margin-of-error--plural":"Estimated units sold ±15% error","product-market-region-category-heat-matrix-tips":"Darker color = Higher activity. Click a cell for category à region details","product-market-region-category-heat-matrix-tips--plural":"Darker color = Higher activity. Click a cell for category à region details","product-market-ranked-by-tiktok-and-facebook-ad-heat":"Calculation: Sum the number of TikTok and Facebook ads for each product category, take the average, and rank the top 10.","product-market-ranked-by-tiktok-and-facebook-ad-heat--plural":"Calculation: Sum the number of TikTok and Facebook ads for each product category, take the average, and rank the top 10.","product-market-rising-category-list-by-rank-growth-rate":"Trending Category List (by ranking change rate)","product-market-rising-category-list-by-rank-growth-rate--plural":"Trending Category List (by ranking change rate)","product-market-average-ad-likes":"Average Ad Likes","product-market-average-ad-likes--plural":"Average Ad Likes","product-market-todays-recommended-hot-ads":"Today\'s Recommended Hot Ads","product-market-todays-recommended-hot-ads--plural":"Today\'s Recommended Hot Ads","product-market-monitor-global-ad-performance-to-discover-tre":"Monitor global ad performance to discover trending products and emerging categories","product-market-monitor-global-ad-performance-to-discover-tre--plural":"Monitor global ad performance to discover trending products and emerging categories","product-market-monitoring-scope-current-site-categories":"Monitoring Scope = all primary categories for the site","product-market-monitoring-scope-current-site-categories--plural":"Monitoring Scope = all primary categories for the site","product-market-rising-categories-top5-tips":"Top five categories by ranking change rate in descending order","product-market-rising-categories-top5-tips--plural":"Top five categories by ranking change rate in descending order","product-market-bsr-rank":"BSR Rank","product-market-bsr-rank--plural":"BSR Rank","product-market-country-region":"Country/Region","product-market-calculation-total-likes-from-all-ads-total-nu":"Calculation: Total likes from all ads ÷ Total number of ads in the category analysis page.","product-market-calculation-total-likes-from-all-ads-total-nu--plural":"Calculation: Total likes from all ads ÷ Total number of ads in the category analysis page.","product-market-category-bsr-growth-rate-tooltip":"Relative change of Best Sellers Rank (BSR) to quantify ranking rise/fall speed and trend.","product-market-category-bsr-growth-rate-tooltip--plural":"Relative change of Best Sellers Rank (BSR) to quantify ranking rise/fall speed and trend.","product-market-declining-categories-top5":"Bottom 5 Trending Categories","product-market-declining-categories-top5--plural":"Bottom 5 Trending Categories","product-market-rank-growth-rate":"Ranking Change Rate","product-market-rank-growth-rate--plural":"Ranking Change Rate","product-market-sales-overview":"Sales Overview","product-market-sales-overview--plural":"Sales Overview","product-market-view":"View","product-market-data-source-amazon-platform-sales-data-monito":"Data Source: Amazon platform product sales data, monitoring real-time performance across sites to identify stable demand and growth opportunities","product-market-data-source-amazon-platform-sales-data-monito--plural":"Data Source: Amazon platform product sales data, monitoring real-time performance across sites to identify stable demand and growth opportunities","product-market-category-sales-scale-price-rating-listing-tim":"Category sales scale, price/rating/listing duration distribution and CJ opportunities.","product-market-category-sales-scale-price-rating-listing-tim--plural":"Category sales scale, price/rating/listing duration distribution and CJ opportunities.","product-market-view-all-category-analysis":"View All â Category Analysis","product-market-view-all-category-analysis--plural":"View All â Category Analysis","product-market-view-all-categories":"View All Categories","product-market-view-all-categories--plural":"View All Categories","product-market-sales-category":"Sales Category","product-market-sales-category--plural":"Sales Category","product-market-name":"Name","product-market-average-revenue":"Average Sales","product-market-average-revenue--plural":"Average Sales","product-market-recommend-from-cj-products-using-cjproductids":"Recommend from CJ products using cjProductIds in the current product list","product-market-recommend-from-cj-products-using-cjproductids--plural":"Recommend from CJ products using cjProductIds in the current product list","product-market-region-or-category":"Category\\\\Region","product-market-region-or-category--plural":"Category\\\\Region","product-market-daily-collection-of-top-performing-ads-from-t":"Daily collection of top-performing ads from TikTok and Facebook.","product-market-daily-collection-of-top-performing-ads-from-t--plural":"Daily collection of top-performing ads from TikTok and Facebook.","product-market-monitored-categories":"Monitored Categories Count","product-market-monitored-categories--plural":"Monitored Categories Count","product-market-region-category-heat-matrix":"Category à Region Heat Matrix","product-market-region-category-heat-matrix--plural":"Category à Region Heat Matrix","product-market-sorted-by-forecast-sales-desc":"Based on historical sales and YoY/ MoM trends, forecast next month sales in descending order. Click the bar to drill down. Sales Forecasted (Units)","product-market-sorted-by-forecast-sales-desc--plural":"Based on historical sales and YoY/ MoM trends, forecast next month sales in descending order. Click the bar to drill down. Sales Forecasted (Units)","product-market-estimated-historical-sales-for-this-asin":"Historical estimated sales for this ASIN","product-market-estimated-historical-sales-for-this-asin--plural":"Historical estimated sales for this ASIN","product-market-sales-volume":"Sales Volume","product-market-sales-volume--plural":"Sales Volume","product-market-aggregated-by-first-level-category":"Scope: Total number of primary categories under monitoring for the selected site.","product-market-aggregated-by-first-level-category--plural":"Scope: Total number of primary categories under monitoring for the selected site.","product-market-market-category-ranking-top10":"Top 10 Market Categories","product-market-market-category-ranking-top10--plural":"Top 10 Market Categories","product-market-category-ad-share-by-platform-click-the-chart":"Calculation: For the selected time window on Facebook, group all ads by first-level category and calculate the share of ads per category.","product-market-category-ad-share-by-platform-click-the-chart--plural":"Calculation: For the selected time window on Facebook, group all ads by first-level category and calculate the share of ads per category.","product-market-monitored-products":"Monitored Products Count","product-market-monitored-products--plural":"Monitored Products Count","product-market-estimated-units-sold-1":"Estimated Sales ±15% error","product-market-estimated-units-sold-1--plural":"Estimated Sales ±15% error","product-market-estimated-units-sold-2":"Estimated Units Sold","product-market-estimated-units-sold-2--plural":"Estimated Units Sold","product-market-tiktok-category-ad-share":"TikTok Category Ad Share","product-market-tiktok-category-ad-share--plural":"TikTok Category Ad Share","product-market-ad-type":"Ad Type","product-market-ad-type--plural":"Ad Type","product-market-category-name":"Category Name","product-market-category-name--plural":"Category Name","product-market-no-similar-bsr-data":"No similar BSR data","product-market-no-similar-bsr-data--plural":"No similar BSR data","product-market-click-the-chart-to-drill-down-to-category-ana":"Calculation: For the selected time window on TikTok, group all ads by first-level category and calculate the share of ads per category. Click a pie slice to drill down into the category analysis page.","product-market-click-the-chart-to-drill-down-to-category-ana--plural":"Calculation: For the selected time window on TikTok, group all ads by first-level category and calculate the share of ads per category. Click a pie slice to drill down into the category analysis page.","product-market-monitored-product-details":"Monitored Product Details","product-market-monitored-product-details--plural":"Monitored Product Details","product-market-bsr-dashboard-category-rank-tooltip":"Best Sellers Rank, dashboard category rank. Lower number is better. SS collected daily.","product-market-bsr-dashboard-category-rank-tooltip--plural":"Best Sellers Rank, dashboard category rank. Lower number is better. SS collected daily.","product-market-rising-categories-from-sales-dashboard-rising":"Trending = Descending by ranking change rate","product-market-rising-categories-from-sales-dashboard-rising--plural":"Trending = Descending by ranking change rate","product-market-facebook-category-ad-share":"Facebook Category Ad Share","product-market-facebook-category-ad-share--plural":"Facebook Category Ad Share","product-market-high-sales-products-top20":"Top 100 High Sales Products","product-market-high-sales-products-top20--plural":"Top 100 High Sales Products","product-market-e-commerce-system":"E-commerce System","product-market-e-commerce-system--plural":"E-commerce System","product-market-no-trend-category-data":"No trend category data","product-market-no-trend-category-data--plural":"No trend category data","product-market-default-sorted-by-revenue-descending-showing":"Default sorted by Sales Descending","product-market-default-sorted-by-revenue-descending-showing--plural":"Default sorted by Sales Descending","product-market-category-analysis":"Category Analysis","product-market-category-analysis--plural":"Category Analysis","product-market-total-views":"Total Views","product-market-total-views--plural":"Total Views","product-market-no-distribution-data":"No distribution data","product-market-no-distribution-data--plural":"No distribution data","product-market-category-market-sales-forecast-top10":"Top 10 Category Sales Forecast","product-market-category-market-sales-forecast-top10--plural":"Top 10 Category Sales Forecast","product-market-monitored-products-in-current-site":"Scope: Total number of ASINs covered under this site.","product-market-monitored-products-in-current-site--plural":"Scope: Total number of ASINs covered under this site.","ai-assistant-report-market-maturity":"Market Maturity","ai-assistant-report-market-maturity--plural":"Market Maturity","product-market-ad-creation-date":"Ad Creation Date","product-market-ad-creation-date--plural":"Ad Creation Date","product-market-matching-cj-products":"Matching CJ Products","product-market-matching-cj-products--plural":"Matching CJ Products","common-mycj-menu-intelligence":"Intelligence","common-mycj-menu-intelligence--plural":"Intelligence","paid-service-fully-booked":"Fully booked - no spots currently available.","paid-service-fully-booked--plural":"Fully booked - no spots currently available.","product-market-ads-text":"Ads","product-market-ads-text--plural":"Ads","product-market-hot-ad-desc":"Source: Today\'s Recommended Hot Ads","product-market-hot-ad-desc--plural":"Source: Today\'s Recommended Hot Ads","product-market-review-count":"Review Count","product-market-review-count--plural":"Review Count","prodcut-market-lqs-tips":"LQS (Listing Quality Score): Evaluates listing completeness to power product selection analysis and precise listing optimization.","prodcut-market-lqs-tips--plural":"LQS (Listing Quality Score): Evaluates listing completeness to power product selection analysis and precise listing optimization.","common-mycj-menu-intelligence-catalog":"Catalog","common-mycj-menu-intelligence-catalog--plural":"Catalog","product-market-category":"Categories","product-market-ad-update-time-tips":"Ad Stats: Updated every 7 days","product-market-ad-update-time-tips--plural":"Ad Stats: Updated every 7 days","product-market-sales-update-time-tips":"Sales Stats: Updated every 30 days","product-market-sales-update-time-tips--plural":"Sales Stats: Updated every 30 days","ai-assistant-click-view-product-details":"Click to view product details","ai-assistant-click-view-product-details--plural":"Click to view product details","ai-assistant-guest-email-placeholder":"Please enter your email","ai-assistant-guest-email-label":"Email","ai-assistant-guest-back":"Back","ai-assistant-guest-welcome":"Welcome to AI Assistant. Sign in or continue as a guest to start chatting.","ai-assistant-guest-welcome--plural":"Welcome to AI Assistant. Sign in or continue as a guest to start chatting.","ai-assistant-guest-mode-failed":"Unable to start guest mode.","ai-assistant-guest-mode-failed--plural":"Unable to start guest mode.","ai-assistant-guest-continue-as-guest":"Continue as guest","ai-assistant-guest-continue-as-guest--plural":"Continue as guest","ai-assistant-guest-name-placeholder":"Please enter your name","ai-assistant-guest-sign-in":"Sign in","ai-assistant-guest-name-label":"Name","ai-assistant-guest-email-required":"Please enter your email.","ai-assistant-guest-email-required--plural":"Please enter your email.","ai-assistant-guest-start":"Start","ai-assistant-guest-name-invalid":"Your name can only contain letters and numbers.","ai-assistant-guest-name-invalid--plural":"Your name can only contain letters and numbers.","ai-assistant-guest-name-required":"Please enter your name.","ai-assistant-guest-name-required--plural":"Please enter your name.","ai-assistant-guest-email-invalid":"Please enter a correct email address.","common-user-agreement-close-tip":"After closing, a prompt of \'Confirm\' will appear again 24 hours later. Please click \'Confirm\' to view the latest user agreement.","common-user-agreement-close-tip--plural":"After closing, a prompt of \'Confirm\' will appear again 24 hours later. Please click \'Confirm\' to view the latest user agreement.","product-market-advertising-data":"Advertising Data","product-market-advertising-data--plural":"Advertising Data","odm-faq-item-2-a":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","odm-faq-item-2-a--plural":"Yes. If results deviate from the requirements, or if a delay caused by us exceeds 7 days, the unfulfilled portion is eligible for a refund.","odm-faq-item-4-a":"Basic ODM requests are reviewed and processed within 3â5 business days. Premium Advanced ODM requests are reviewed and processed within 24h.","odm-faq-item-4-a--plural":"Basic ODM requests are reviewed and processed within 3â5 business days. Premium Advanced ODM requests are reviewed and processed within 24h.","odm-faq-item-6-a":"Supplier matching, initial quotations, and a sampling plan.","odm-faq-item-6-a--plural":"Supplier matching, initial quotations, and a sampling plan.","odm-workflow-step-3-title":"Customize your product","odm-workflow-step-3-title--plural":"Customize your product","odm-final-visual-box":"Custom Solution","odm-final-visual-box--plural":"Custom Solution","odm-final-title-highlight":"Start Building Smarter.","odm-final-title-highlight--plural":"Start Building Smarter.","odm-workflow-step-1-title":"Submit your produ
31657ct idea","odm-workflow-step-1-title--plural":"Submit your product idea","odm-faq-eyebrow":"FAQ","odm-faq-panel-description":"Basic ODM is good for simple validation. Premium Advanced ODM is better when you need deeper sourcing, stronger customization, and more reliable project support.","odm-faq-panel-description--plural":"Basic ODM is good for simple validation. Premium Advanced ODM is better when you need deeper sourcing, stronger customization, and more reliable project support.","odm-value-card-4-item-1":"Logo guidance","odm-value-card-4-item-1--plural":"Logo guidance","odm-faq-item-1-q":"Whatâs the difference between Basic ODM and Premium Advanced ODM?","odm-faq-item-1-q--plural":"Whatâs the difference between Basic ODM and Premium Advanced ODM?","odm-faq-item-3-q":"Will my designs and brand information be leaked?","odm-faq-item-3-q--plural":"Will my designs and brand information be leaked?","odm-faq-item-5-q":"Can I switch from Basic ODM to Premium Advanced ODM later?","odm-faq-item-5-q--plural":"Can I switch from Basic ODM to Premium Advanced ODM later?","odm-value-card-4-image":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=900&q=80","odm-value-card-4-image--plural":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=900&q=80","odm-workflow-step-4-title":"Confirm production","odm-workflow-step-4-title--plural":"Confirm production","odm-workflow-step-2-title":"Get sourcing & feasibility analysis","odm-workflow-step-2-title--plural":"Get sourcing & feasibility analysis","odm-faq-item-1-a":"Basic ODM helps you validate one product quickly. Premium Advanced ODM allows you to explore multiple options, compare better suppliers, and build a stronger foundation for your brand.","odm-faq-item-1-a--plural":"Basic ODM helps you validate one product quickly. Premium Advanced ODM allows you to explore multiple options, compare better suppliers, and build a stronger foundation for your brand.","odm-faq-item-3-a":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","odm-faq-item-3-a--plural":"No. All data is encrypted, IP is 100% owned by you, and your project will never be shared or promoted without your explicit consent.","odm-faq-item-5-a":"Absolutely. You can upgrade to Premium Advanced ODM at any time, and your dedicated service will continue for the remaining project lifecycle.","odm-faq-item-5-a--plural":"Absolutely. You can upgrade to Premium Advanced ODM at any time, and your dedicated service will continue for the remaining project lifecycle.","odm-value-card-4-item-2":"Packaging suggestions","odm-value-card-4-item-2--plural":"Packaging suggestions","odm-value-card-4-item-3":"Differentiation ideas","odm-value-card-4-item-3--plural":"Differentiation ideas","odm-faq-panel-cta":"Submit Customization Request","odm-faq-panel-cta--plural":"Submit Customization Request","odm-workflow-step-5-title":"Launch with confidence","odm-workflow-step-5-title--plural":"Launch with confidence","odm-value-card-4-desc":"Not just a product. Something truly sellable.","odm-value-card-4-desc--plural":"Not just a product. Something truly sellable.","odm-final-title":"Stop Guessing.","odm-final-title--plural":"Stop Guessing.","odm-final-cta":"Submit Customization Request","odm-final-cta--plural":"Submit Customization Request","odm-value-card-4-alt":"Build a real brand","odm-value-card-4-alt--plural":"Build a real brand","odm-workflow-subtitle":"A clear step-by-step process to turn your product idea into a customized, launch-ready product.","odm-workflow-subtitle--plural":"A clear step-by-step process to turn your product idea into a customized, launch-ready product.","odm-workflow-step-1":"STEP 1","odm-workflow-step-1--plural":"STEP 1","odm-workflow-step-2":"STEP 2","odm-workflow-step-2--plural":"STEP 2","odm-workflow-step-3":"STEP 3","odm-workflow-step-3--plural":"STEP 3","odm-faq-panel-title":"Still deciding?","odm-faq-panel-title--plural":"Still deciding?","odm-final-visual-brand":"Your\\nBrand","odm
31657-final-visual-brand--plural":"Your\\nBrand","odm-workflow-step-4":"STEP 4","odm-workflow-step-4--plural":"STEP 4","odm-workflow-step-5":"STEP 5","odm-workflow-step-5--plural":"STEP 5","odm-faq-item-2-q":"Can I get a refund if I\'m not satisfied?","odm-faq-item-2-q--plural":"Can I get a refund if I\'m not satisfied?","odm-faq-item-4-q":"How quickly will I receive the first response?","odm-faq-item-4-q--plural":"How quickly will I receive the first response?","odm-faq-item-6-q":"What can I expect in the first 7 days?","odm-faq-item-6-q--plural":"What can I expect in the first 7 days?","odm-final-tag":"Your Product. Your Brand. Our Expertise.","odm-final-tag--plural":"Your Product. Your Brand. Our Expertise.","odm-workflow-title":"How It Works","odm-workflow-title--plural":"How It Works","odm-workflow-eyebrow":"ODM Workflow","odm-workflow-eyebrow--plural":"ODM Workflow","odm-hero-float-2-title":"Sample","odm-comparison-row-2-label":"Support Products","odm-comparison-row-2-label--plural":"Support Products","odm-comparison-row-1-premium-strong":"Supply Chain Manager + Designer + Sales Specialist","odm-comparison-row-1-premium-strong--plural":"Supply Chain Manager + Designer + Sales Specialist","odm-decision-premium-kicker":"Choose","odm-decision-premium-kicker--plural":"Choose","odm-hero-title-highlight-customization":"with Customization","odm-hero-title-highlight-customization--plural":"with Customization","odm-decision-premium-description":"Best for sellers who want deeper sourcing, reliable suppliers, branding, and fewer production risks.","odm-decision-premium-description--plural":"Best for sellers who want deeper sourcing, reliable suppliers, branding, and fewer production risks.","odm-comparison-eyebrow":"ODM Service Comparison","odm-comparison-eyebrow--plural":"ODM Service Comparison","odm-hero-image":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-hero-image--plural":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-decision-title":"Which One Is Right for You?","odm-decision-title--plural":"Which One Is Right for You?","odm-decision-eyebrow":"ODM Decision Guide","odm-decision-eyebrow--plural":"ODM Decision Guide","odm-decision-premium-ribbon":"Balance of Cost & Speed","odm-comparison-row-3-basic":"3-5 days","odm-comparison-row-3-basic--plural":"3-5 days","odm-comparison-basic-title":"Basic ODM","odm-comparison-basic-title--plural":"Basic ODM","odm-comparison-title-level":"Choose Your ODM Level","odm-comparison-title-level--plural":"Choose Your ODM Level","odm-decision-basic-kicker":"Start with","odm-decision-basic-kicker--plural":"Start with","odm-comparison-row-1-label":"Support Level","odm-comparison-row-1-label--plural":"Support Level","odm-hero-title-customization":"Launch Your Product","odm-hero-title-customization--plural":"Launch Your Product","odm-hero-float-2-text":"Before mass production","odm-hero-float-2-text--plural":"Before mass production","odm-decision-premium-item-3":"Care about quality and supplier reliability","odm-decision-premium-item-3--plural":"Care about quality and supplier reliability","odm-hero-subtitle-customization":"From idea validation to reliable suppliers and custom branding, everything you need to build a winning product.","odm-hero-subtitle-customization--plural":"From idea validation to reliable suppliers and custom branding, everything you need to build a winning product.","odm-decision-premium-item-4":"Want to avoid costly mistakes","odm-decision-premium-item-4--plural":"Want to avoid costly mistakes","odm-decision-premium-item-1":"Are serious sellers or brand builders","odm-decision-premium-item-1--plural":"Are serious sellers or brand builders","odm-decision-premium-item-2":"Need custom branding & packaging","odm-decision-premium-item-2--plural":"Need custom branding & packaging","odm-decision-cta":"Submit Customization Request","odm-decision-cta--plural":"Submit Customization Request","odm-hero-float-1-text":"Logo & packaging ideas","odm-hero-float-1-text--plural":"Logo & packaging ideas","odm-comparison-row-2-basic":"1 Custom product","odm-comparison-row-2-basic--plural":"1 Custom product","odm-decision-basic-description":"Best for simple product testing and early-stage validation.","odm-decision-basic-description--plural":"Best for simple product testing and early-stage validation.","odm-hero-image-alt":"CJdropshipping ODM Custom Product Packaging Service","odm-hero-image-alt--plural":"CJdropshipping ODM Custom Product Packaging Service","odm-hero-cta":"Submit Customization Request","odm-hero-cta--plural":"Submit Customization Request","odm-decision-premium-title":"Premium Advanced ODM","odm
31657-decision-premium-title--plural":"Premium Advanced ODM","odm-comparison-row-3-label":"Response","odm-comparison-row-3-label--plural":"Response","odm-decision-subtitle":"Choose the ODM level based on your product stage, customization needs, and business goals.","odm-decision-subtitle--plural":"Choose the ODM level based on your product stage, customization needs, and business goals.","odm-hero-feature-1":"Verified Suppliers","odm-hero-feature-1--plural":"Verified Suppliers","odm-hero-feature-3":"Clear Cost Breakdown","odm-hero-feature-3--plural":"Clear Cost Breakdown","odm-hero-feature-2":"Custom Packaging","odm-hero-feature-4":"Dedicated Support","odm-hero-feature-4--plural":"Dedicated Support","odm-comparison-service-head":"Services","odm-decision-or-label":"OR","odm-decision-or-label--plural":"OR","odm-comparison-row-3-premium-strong":"24h","odm-comparison-row-3-premium-strong--plural":"24h","odm-decision-basic-title":"Basic ODM","odm-decision-basic-title--plural":"Basic ODM","odm-hero-label":"Basic & Premium Advanced ODM","odm-hero-label--plural":"Basic & Premium Advanced ODM","odm-comparison-subtitle-advanced":"Compare Basic ODM and Premium Advanced ODM side by side, then choose the service level that fits your product stage.","odm-comparison-subtitle-advanced--plural":"Compare Basic ODM and Premium Advanced ODM side by side, then choose the service level that fits your product stage.","odm-comparison-row-2-premium-strong":"1 Custom product","odm-comparison-row-2-premium-strong--plural":"1 Custom product","odm-comparison-premium-title":"Premium Advanced ODM","odm-comparison-premium-title--plural":"Premium Advanced ODM","odm-decision-basic-item-2":"Are just getting started","odm-decision-basic-item-2--plural":"Are just getting started","odm-decision-basic-item-3":"Need quick validation","odm-decision-basic-item-3--plural":"Need quick validation","odm-comparison-row-1-basic":"Standard","odm-comparison-row-1-basic--plural":"Standard","odm-decision-basic-item-1":"Want to test one product idea","odm-decision-basic-item-1--plural":"Want to test one product idea","odm-faq-subtitle-advanced":"Everything you need to know before choosing between Basic ODM and Premium Advanced ODM.","odm-faq-subtitle-advanced--plural":"Everything you need to know before choosing between Basic ODM and Premium Advanced ODM.","odm-hero-float-1-title":"Design","odm-value-card-2-image":"https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?auto=format&fit=crop&w=900&q=80","odm-value-card-2-image--plural":"https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?auto=format&fit=crop&w=900&q=80","odm-products-item-8-title":"Baby Products","odm-products-item-8-title--plural":"Baby Products","odm-products-item-11-desc":"Personalized gift items are perfect for ODM because they can include custom names, patterns, packaging, gift sets, and emotional design details that help sellers avoid direct price competition.","odm-products-item-11-desc--plural":"Personalized gift items are perfect for ODM because they can include custom names, patterns, packaging, gift sets, and emotional design details that help sellers avoid direct price competition.","odm-value-card-2-desc":"Work with factories, not middlemen.","odm-value-card-2-desc--plural":"Work with factories, not middlemen.","odm-products-item-9-image":"https://images.unsplash.com/photo-1507525428034-b723cf961d3e?auto=format&fit=crop&w=900&q=80","odm-products-item-9-image--plural":"https://images.unsplash.com/photo-1507525428034-b723cf961d3e?auto=format&fit=crop&w=900&q=80","odm-products-item-12-title":"Custom Packaging","odm-products-item-10-desc":"Electronic accessories can be customized with colors, surface finishes, logo placement, packaging, accessory bundles, and user manuals to support a more complete branded product line.","odm-products-item-10-desc--plural":"Electronic accessories can be customized with colors, surface finishes, logo placement, packaging, accessory bundles, and user manuals to support a more complete branded product line.","odm-products-item-8-desc":"Baby products can be customized by material, size, color, safety-focused packaging, and product sets, making them suitable for sellers who want to build trust with parents.","odm-products-item-8-desc--plural":"Baby products can be customized by material, size, color, safety-focused packaging, and product sets, making them suitable for sellers who want to build trust with parents.","odm-value-card-1-title":"Smarter Product Decisions","odm-value-card-1-title--plural":"Smarter Product Decisions","odm-value-card-1-desc":"We help you choose products that actually have potential.","odm-value-card-1-desc--plural":"We help you choose products that actually have potential.","odm-products-item-9-desc":"Travel accessories are great for ODM because they can be customized with compact designs, color series, logo printing, travel kits, and packaging for specific customer groups.","odm-products-item-9-desc--plural":"Travel accessories are great for ODM because they can be customized with compact designs, color series, logo printing, travel kits, and packaging for specific customer groups.","odm-products-item-10-image":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=900&q=80","odm
31657-products-item-10-image--plural":"https://images.unsplash.com/photo-1516321318423-f06f85e504b3?auto=format&fit=crop&w=900&q=80","odm-value-card-1-image":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?auto=format&fit=crop&w=900&q=80","odm-value-card-1-image--plural":"https://images.unsplash.com/photo-1551288049-bebda4e38f71?auto=format&fit=crop&w=900&q=80","odm-products-item-12-desc":"Custom packaging can include branded boxes, product labels, inserts, thank-you cards, gift sets, and retail-ready packaging that makes your product feel more professional and memorable.","odm-products-item-12-desc--plural":"Custom packaging can include branded boxes, product labels, inserts, thank-you cards, gift sets, and retail-ready packaging that makes your product feel more professional and memorable.","odm-products-item-8-image":"https://images.unsplash.com/photo-1519689680058-324335c77eba?auto=format&fit=crop&w=900&q=80","odm-products-item-8-image--plural":"https://images.unsplash.com/photo-1519689680058-324335c77eba?auto=format&fit=crop&w=900&q=80","odm-value-card-4-title":"Build a Real Brand","odm-value-card-4-title--plural":"Build a Real Brand","odm-value-card-1-alt":"Market research and product decision","odm-value-card-1-alt--plural":"Market research and product decision","odm-products-item-7-image":"https://images.unsplash.com/photo-1606760227091-3dd870d97f1d?auto=format&fit=crop&w=900&q=80","odm-products-item-7-image--plural":"https://images.unsplash.com/photo-1606760227091-3dd870d97f1d?auto=format&fit=crop&w=900&q=80","odm-products-item-11-alt":"Personalized gift items ODM customization","odm-products-item-11-alt--plural":"Personalized gift items ODM customization","odm-products-item-9-alt":"Travel accessories ODM customization","odm-products-item-9-alt--plural":"Travel accessories ODM customization","odm-value-card-3-title":"Transparent Cost & Risk Control","odm-value-card-3-title--plural":"Transparent Cost & Risk Control","odm-value-visual-top":"Smarter Decisions","odm-value-visual-top--plural":"Smarter Decisions","odm-value-visual-image":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-value-visual-image--plural":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-value-card-1-item-3":"Feasibility check","odm-value-card-1-item-3--plural":"Feasibility check","odm-value-card-2-item-2":"MOQ & customization alignment","odm-value-card-2-item-2--plural":"MOQ & customization alignment","odm-value-card-2-alt":"Reliable factory supplier support","odm-value-card-2-alt--plural":"Reliable factory supplier support","odm-value-card-3-item-3":"Risk evaluation","odm-value-card-3-item-3--plural":"Risk evaluation","odm-products-item-11-image":"https://images.unsplash.com/photo-1513201099705-a9746e1e201f?auto=format&fit=crop&w=900&q=80","odm-products-item-11-image--plural":"https://images.unsplash.com/photo-1513201099705-a9746e1e201f?auto=format&fit=crop&w=900&q=80","odm-value-card-1-item-2":"Product positioning","odm-value-card-1-item-2--plural":"Product positioning","odm-value-card-3-item-2":"IP / patent checks","odm-value-card-3-item-2--plural":"IP / patent checks","odm-value-card-1-item-1":"Market reference","odm-value-card-1-item-1--plural":"Market reference","odm-value-card-2-item-1":"Export-ready suppliers","odm-value-card-2-item-1--plural":"Export-ready suppliers","odm-value-card-3-item-1":"Cost breakdown","odm-value-card-3-item-1--plural":"Cost breakdown","odm-value-card-3-alt":"Transparent cost and risk control","odm-value-card-3-alt--plural":"Transparent cost and risk control","odm-products-item-8-alt":"Baby products ODM customization","odm-products-item-8-alt--plural":"Baby products ODM customization","odm-products-item-12-alt":"Custom packaging ODM customization","odm-products-item-12-alt--plural":"Custom packaging ODM customization","odm-value-title":"More Than Sourcing. We Help You Make the Right Decisions","odm-value-title--plural":"More Than Sourcing. We Help You Make the Right Decisions","odm-value-visual-bottom":"Brand Ready","odm-value-visual-bottom--plural":"Brand Ready","odm-products-item-10-title":"Electronic Accessories","odm-products-item-10-title--plural":"Electronic Accessories","odm-value-card-2-title":"Access to Reliable Suppliers","odm-value-card-2-title--plural":"Access to Reliable Suppliers","odm-value-card-3-image":"https://images.unsplash.com/photo-1450101499163-c8848c66ca85?auto=format&fit=crop&w=900&q=80","odm
31657-value-card-3-image--plural":"https://images.unsplash.com/photo-1450101499163-c8848c66ca85?auto=format&fit=crop&w=900&q=80","odm-products-item-7-alt":"Jewelry packaging ODM customization","odm-products-item-7-alt--plural":"Jewelry packaging ODM customization","odm-products-item-11-title":"Personalized Gift Items","odm-products-item-11-title--plural":"Personalized Gift Items","odm-products-item-12-image":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-products-item-12-image--plural":"https://cc-west-usa.cjdropshipping.com/operation-center/file_202605210659052057355483165237248.jpg","odm-value-eyebrow":"Premium ODM Support","odm-value-eyebrow--plural":"Premium ODM Support","odm-value-visual-alt":"ODM product customization and packaging support","odm-value-visual-alt--plural":"ODM product customization and packaging support","odm-products-item-9-title":"Travel Accessories","odm-products-item-9-title--plural":"Travel Accessories","odm-value-card-3-desc":"Know everything before you commit.","odm-value-card-3-desc--plural":"Know everything before you commit.","odm-value-subtitle":"From product evaluation to reliable suppliers, transparent cost control, and brand-building support.","odm-value-subtitle--plural":"From product evaluation to reliable suppliers, transparent cost control, and brand-building support.","odm-products-item-10-alt":"Electronic accessories ODM customization","odm-products-item-10-alt--plural":"Electronic accessories ODM customization","odm-products-item-4-alt":"Home improvement products ODM customization","odm-products-item-4-alt--plural":"Home improvement products ODM customization","odm-comparison-row-9-label":"Best For","odm-comparison-row-9-label--plural":"Best For","odm-comparison-row-6-premium-strong":"In-depth analysis & optimization suggestions","odm-comparison-row-6-premium-strong--plural":"In-depth analysis & optimization suggestions","odm-comparison-row-7-basic":"Basic option","odm-comparison-row-7-basic--plural":"Basic o
31657ption","odm-comparison-row-4-basic":"1 supplier","odm-comparison-row-4-basic--plural":"1 supplier","odm-comparison-row-5-label":"Cost Analysis","odm-comparison-row-5-label--plural":"Cost Analysis","odm-products-item-1-title":"Beauty Tools","odm-products-item-1-title--plural":"Beauty Tools","odm-products-item-2-desc":"Pet products are suitable for ODM because sellers can customize colors, sizes, materials, product bundles, and packaging for different pet owners and niche markets.","odm-products-item-2-desc--plural":"Pet products are suitable for ODM because sellers can customize colors, sizes, materials, product bundles, and packaging for different pet owners and niche markets.","odm-comparison-row-9-premium-strong":"Serious sellers & brand builders","odm-comparison-row-9-premium-strong--plural":"Serious sellers & brand builders","odm-products-item-1-desc":"Beauty tools can be customized with colors, logo printing, packaging sets, private labels, and upgraded materials, making them ideal for sellers who want a more premium brand image.","odm-products-item-1-desc--plural":"Beauty tools can be customized with colors, logo printing, packaging sets, private labels, and upgraded materials, making them ideal for sellers who want a more premium brand image.","odm-products-item-7-desc":"Jewelry packaging can be customized with boxes, pouches, logo cards, thank-you cards, inserts, and premium materials, helping sellers improve perceived value and customer experience.","odm-products-item-7-desc--plural":"Jewelry packaging can be customized with boxes, pouches, logo cards, thank-you cards, inserts, and premium materials, helping sellers improve perceived value and customer experience.","odm-products-item-4-title":"Home Improvement Products","odm-products-item-4-title--plural":"Home Improvement Products","odm-products-item-5-alt":"Kitchen gadgets ODM customization","odm-products-item-5-alt--plural":"Kitchen gadgets ODM customization","odm-comparison-row-4-premium-strong":"3-5 vetted suppliers with comparison","odm-comparison-row-4-premium-strong--plural":"3-5 vetted suppliers with comparison","odm-products-item-6-image":"https://images.unsplash.com/photo-1515562141207-7a88fb7ce338?auto=format&fit=crop&w=900&q=80","odm-products-item-6-image--plural":"https://images.unsplash.com/photo-1515562141207-7a88fb7ce338?auto=format&fit=crop&w=900&q=80","odm-comparison-row-8-premium-strong":"Logo & packaging guidance","odm-comparison-row-8-premium-strong--plural":"Logo & packaging guidance","odm-products-item-2-title":"Pet Products","odm-products-item-2-title--plural":"Pet Products","odm-products-item-1-alt":"Beauty tools ODM customization","odm-products-item-1-alt--plural":"Beauty tools ODM customization","odm-products-subtitle":"ODM customization is especially useful for sellers who want to turn ordinary products into more brandable, differentiated, and market-ready items. From logo printing to packaging upgrades and product adju
31657stments, these categories are commonly suitable for ODM projects.","odm-products-subtitle--plural":"ODM customization is especially useful for sellers who want to turn ordinary products into more brandable, differentiated, and market-ready items. From logo printing to packaging upgrades and product adjustments, these categories are commonly suitable for ODM projects.","odm-comparison-row-6-basic":"Basic matching","odm-comparison-row-6-basic--plural":"Basic matching","odm-comparison-note":"Premium Advanced ODM is built for sellers who need faster response, deeper sourcing, and stronger branding support.","odm-comparison-note--plural":"Premium Advanced ODM is built for sellers who need faster response, deeper sourcing, and stronger branding support.","odm-products-eyebrow":"ODM Product Ideas","odm-products-eyebrow--plural":"ODM Product Ideas","odm-products-item-3-alt":"Fitness accessories ODM customization","odm-products-item-3-alt--plural":"Fitness accessories ODM customization","odm-products-item-5-title":"Kitchen Gadgets","odm-products-item-5-title--plural":"Kitchen Gadgets","odm-comparison-row-7-premium-mobile":"Full customization (product + packaging)","odm-comparison-row-7-premium-mobile--plural":"Full customization (product + packaging)","odm-comparison-row-4-label":"Supplier Options","odm-comparison-row-4-label--plural":"Supplier Options","odm-products-item-5-image":"https://images.unsplash.com/photo-1556911220-bff31c812dba?auto=format&fit=crop&w=900&q=80","odm-products-item-5-image--plural":"https://images.unsplash.com/photo-1556911220-bff31c812dba?auto=format&fit=crop&w=900&q=80","odm-comparison-row-7-premium-emphasis":"Product + packaging","odm-comparison-row-7-premium-emphasis--plural":"Product + packaging","odm-products-title":"What Products Are Suitable for ODM Customization?","odm-products-title--plural":"What Products Are Suitable for ODM Customization?","odm-comparison-row-7-premium-strong":"Full customization","odm-comparison-row-7-premium-strong--plural":"Full customization","odm-products-item-2-alt":"Pet products ODM customization","odm-products-item-2-alt--plural":"Pet products ODM customization","odm-products-item-3-desc":"Fitness accessories can be customized with brand logos, resistance levels, colors, training sets, and retail packaging, helping sellers build a more professional sports or wellness brand.","odm-products-item-3-desc--plural":"Fitness accessories can be customized with brand logos, resistance levels, colors, training sets, and retail packaging, helping sellers build a more professional sports or wellness brand.","odm-products-item-2-image":"https://images.unsplash.com/photo-1548199973-03cce0bbc87b?auto=format&fit=crop&w=900&q=80","odm-products-item-2-image--plural":"https://images.unsplash.com/photo-1548199973-03cce0bbc87b?auto=format&fit=crop&w=900&q=80","odm-products-item-6-desc":"Fashion accessories are highly suitable for ODM because sellers can customize styles, colors, packaging, labels, and seasonal collections to create a stronger brand identity.","odm-products-item-6-desc--plural":"Fashion accessories are highly suitable for ODM because sellers can customize styles, colors, packaging, labels, and seasonal collections to create a stronger brand identity.","odm-comparison-row-7-label":"Customization","odm-comparison-row-5-premium-strong":"Detailed cost breakdown","odm-comparison-row-5-premium-strong--plural":"Detailed cost breakdown","odm-comparison-row-9-basic":"Idea testing","odm-comparison-row-9-basic--plural":"Idea testing","odm-products-item-5-desc":"Kitchen gadgets can be customized through color matching, material selection, branded packaging, bundled sets, and small feature improvements to make products more giftable and unique.","odm-products-item-5-desc--plural":"Kitchen gadgets can be customized through color matching, material selection, branded packaging, bundled sets, and small feature improvements to make products more giftable and unique.","odm-products-item-6-title":"Fashion Accessories","odm-products-item-6-title--plural":"Fashion Accessories","odm-comparison-row-5-basic":"Simple quote","odm-comparison-row-5-basic--plural":"Simple quote","odm-products-item-3-image":"https://images.unsplash.com/photo-1517836357463-d25dfeac3438?auto=format&fit=crop&w=900&q=80","odm
31657-products-item-3-image--plural":"https://images.unsplash.com/photo-1517836357463-d25dfeac3438?auto=format&fit=crop&w=900&q=80","odm-products-item-4-desc":"Home improvement products are suitable for functional upgrades, material changes, accessory combinations, instruction inserts, and packaging customization for different household needs.","odm-products-item-4-desc--plural":"Home improvement products are suitable for functional upgrades, material changes, accessory combinations, instruction inserts, and packaging customization for different household needs.","odm-products-item-1-image":"https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?auto=format&fit=crop&w=900&q=80","odm-products-item-1-image--plural":"https://images.unsplash.com/photo-1522335789203-aabd1fc54bc9?auto=format&fit=crop&w=900&q=80","odm-comparison-row-8-label":"Branding Support","odm-comparison-row-8-label--plural":"Branding Support","odm-products-item-7-title":"Jewelry Packaging","odm-products-item-7-title--plural":"Jewelry Packaging","odm-products-item-6-alt":"Fashion accessories ODM customization","odm-products-item-6-alt--plural":"Fashion accessories ODM customization","odm-comparison-row-6-label":"Sourcing","odm-comparison-row-8-basic":"----","odm-comparison-row-8-basic--plural":"----","odm-products-item-4-image":"https://images.unsplash.com/photo-1581092918056-0c4c3acd3789?auto=format&fit=crop&w=900&q=80","odm-products-item-4-image--plural":"https://images.unsplash.com/photo-1581092918056-0c4c3acd3789?auto=format&fit=crop&w=900&q=80","odm-products-item-3-title":"Fitness Accessories","odm-products-item-3-title--plural":"Fitness Accessories","common-mycj-menu-ai":"AI","common-mycj-menu-ai--plural":"AI","ai-assistant-input-disclaimer":"AI-generated content may contain errors. Please verify.","ai-assistant-input-disclaimer--plural":"AI-generated content may contain errors. Please verify.","common-mycj-menu-claude":"Claude","common-mycj-menu-claude--plural":"Claude","common-mycj-menu-chatgpt":"ChatGPT","common-mycj-menu-chatgpt--plural":"ChatGPT","common-mycj-menu-codex":"CodeX","common-mycj-menu-codex--plural":"CodeX","printondemand-banner-title":"Print on Demand","printondemand-banner-subtitle":"The most touching word in the world is \\"Unique\\"","printondemand-banner-subtitle--plural":"The most touching word in the world is \\"Unique\\"","home-careers":"Careers","footer-careers":"Careers","common-mycj-menu-advertiser-agency":"Advertiser Agency","common-mycj-menu-advertiser-agency--plural":"Advertiser Agency","common-mycj-menu-profit-operator":"Profit Operator","common-mycj-menu-profit-operator--plural":"Profit Operator","careers-global-eyebrow":"Our Global Presence","careers-global-eyebrow--plural":"Our Global Presence","careers-why-perk-2-desc":"In a high-growth industry, 0-to-1 opportunities are everywhere. Top performers rise faster â here, capability sets your pace, not seniority.","careers-why-perk-2-desc--plural":"In a high-growth industry, 0-to-1 opportunities are everywhere. Top performers rise faster â here, capability sets your pace, not seniority.","careers-why-perk-6-title":"Learning & Enablement","careers-why-perk-6-title--plural":"Learning & Enablement","careers-life-thumb-1-sub":"Team Culture","careers-life-thumb-1-sub--plural":"Team Culture","careers-global-hub-3-desc":"Australia","careers-global-hub-3-desc--plural":"Australia","careers-life-thumb-1-title":"Elite Sales, Elated Sails","careers-life-thumb-1-title--plural":"Elite Sales, Elated Sails","careers-why-perk-1-desc":"Real cross-border career stages across Southeast Asia, Europe, the Middle East and the Americas. Overseas assignments and cross-regional collaboration expand your professional map as we scale worldwide.","careers-why-perk-1-desc--plural":"Real cross-border career stages across Southeast Asia, Europe, the Middle East and the Americas. Overseas assignments and cross-regional collaboration expand your professional map as we scale worldwide.","careers-country-ph":"Philippines","careers-country-ph--plural":"Philippines","careers-global-hub-2-title":"Southeast Asia","careers-global-hub-2-title--plural":"Southeast Asia","careers-country-pl":"Poland","careers-country-pl--plural":"Poland","careers-life-thumb-3-sub":"Now Playing","careers-life-thumb-3-sub--plural":"Now Playing","careers-life-thumb-4-title":"CCTV Report","careers-life-thumb-4-title--plural":"CCTV Report","careers-global-hub-5-title":"Middle East","careers-global-hub-5-title--plural":"Middle East","careers-country-ae":"United Arab Emirates","careers-country-ae--plural":"United Arab Emirates","careers-global-hub-8-title":"Latin America","careers-global-hub-8-title--plural":"Latin America","careers-why-perk-4-desc":"Colleagues from different c
31657ountries and cultures work side by side. Openness, equality and mutual success define how we collaborate.","careers-why-perk-4-desc--plural":"Colleagues from different countries and cultures work side by side. Openness, equality and mutual success define how we collaborate.","careers-hero-title-highlight":"Join Our Global Journey.","careers-hero-title-highlight--plural":"Join Our Global Journey.","careers-hero-secondary-cta":"Apply Now","careers-hero-secondary-cta--plural":"Apply Now","careers-why-perk-1-title":"Global Mobility","careers-why-perk-1-title--plural":"Global Mobility","careers-hero-primary-cta":"View Open Roles","careers-hero-primary-cta--plural":"View Open Roles","careers-country-id":"Indonesia","careers-country-id--plural":"Indonesia","careers-global-title":"Where We Operate","careers-global-title--plural":"Where We Operate","careers-global-hub-4-desc-v2":"Netherlands · Germany · Türkiye","careers-global-hub-4-desc-v2--plural":"Netherlands · Germany · Türkiye","careers-hero-title":"Worldwide Reach.","careers-hero-title--plural":"Worldwide Reach.","careers-country-jp":"Japan","careers-country-jp--plural":"Japan","careers-global-subtitle":"We\'re building local teams across key logistics and e-commerce hubs worldwide â hiring people who truly understand local markets.","careers-global-subtitle--plural":"We\'re building local teams across key logistics and e-commerce hubs worldwide â hiring people who truly understand local markets.","careers-gallery-eyebrow":"Working at CJ Dropshipping","careers-gallery-eyebrow--plural":"Working at CJ Dropshipping","careers-global-hub-7-title":"North America","careers-global-hub-7-title--plural":"North America","careers-country-au":"Australia","careers-country-au--plural":"Australia","careers-markets-label":"Operating across 18+ countries & regions · and expanding","careers-markets-label--plural":"Operating across 18+ countries & regions · and expanding","careers-why-eyebrow":"Why Join Us","careers-why-eyebrow--plural":"Why Join Us","careers-why-perk-5-desc":"Bali retreats, annual galas, festive parties and outdoor challenges â we work hard and live fully, our teammates are family members.","careers-why-perk-5-desc--plural":"Bali retreats, annual galas, festive parties and outdoor challenges â we work hard and live fully, our teammates are family members.","careers-life-thumb-3-title":"CJ Elite Global Journey","careers-life-thumb-3-title--plural":"CJ Elite Global Journey","careers-country-ro":"Romania","careers-country-ro--plural":"Romania","careers-country-ca":"Canada","careers-country-ca--plural":"Canada","careers-global-hub-1-title-v2":"More","careers-why-perk-3-title":"Competitive Rewards","careers-why-perk-3-title--plural":"Competitive Rewards","careers-markets-label-highlight":"18+","careers-markets-label-highlight--plural":"18+","careers-country-cn":"China","careers-life-title":"Step Inside Our World","careers-life-title--plural":"Step Inside Our World","careers-life-fullscreen":"Fullscreen","careers-life-fullscreen--plural":"Fullscreen","careers-global-hub-8-desc-v2":"Mexico · Brazil","careers-global-hub-8-desc-v2--plural":"Mexico · Brazil","careers-country-br":"Brazil","careers-life-thumb-2-title":"United in Pursuit of Passion","careers-life-thumb-2-title--plural":"United in Pursuit of Passion","careers-life-subtitle":"Experience our collaborative, global workspace through real footage from our teams.","careers-life-subtitle--plural":"Experience our collaborative, global workspace through real footage from our teams.","careers-global-hub-6-title":"Africa","careers-global-hub-6-title--plural":"Africa","careers-country-de":"Germany","careers-country-de--plural":"Germany","careers-global-hub-5-desc-v2":"Dubai · Saudi Arabia","careers-global-hub-5-desc-v2--plural":"Dubai · Saudi Arabia","careers-life-feature-desc":"Go behind the scenes of our passionate, world-class team â where high energy meets operational excellence.","careers-life-feature-desc--plural":"Go behind the scenes of our passionate, world-class team â where high energy meets operational excellence.","careers-hero-badge":"We\'re Hiring · Global Partners Wanted","careers-hero-badge--plural":"We\'re Hiring · Global Partners Wanted","careers-why-perk-2-title":"Fast-Track Growth","careers-why-perk-2-title--plural":"Fast-Track Growth","careers-country-th":"Thailand","careers-country-th--plural":"Thailand","careers-global-hub-1-desc-v2":"More markets coming soon","careers-global-hub-1-desc-v2--plural":"More markets coming soon","careers-gallery-title":"Life Beyond the Desk","careers-gallery-title--plural":"Life Beyond the Desk","careers-life-play":"Watch Full Video","careers-life-play--plural":"Watch Full Video","careers-country-us":"United States","careers-life-badge":"Featured · Team Culture","careers-life-badge--plural":"Featured · Team Culture","careers-hero-desc":"As a leading cross-border e-commerce and dropshipping fulfillment platform, we\'re scaling our global footprint at speed. We\'re looking for high-performing, visionary talents to drive worldwide growth, localization, forge strategic partnerships.","careers-hero-desc--plural":"As a leading cross-border e-commerce and dropshipping fulfillment platform, we\'re scaling our global footprint at speed. We\'re looking for high-performing, visionary talents to drive worldwide growth, localization, forge strategic partnerships.","careers-life-feature-title":"CJ Elite Global Journey","careers-life-feature-title--plural":"CJ Elite Global Journey","careers-hero-tag-1":"Global Markets","careers-hero-tag-1--plural":"Global Markets","careers-hero-tag-2":"High Growth","careers-hero-tag-2--plural":"High Growth","careers-hero-kicker":"Build the future of cross-border e-commerce and dropshipping â across every market that matters.","careers-hero-kicker--plural":"Build the future of cross-border e-commerce and dropshipping â across every market that matters.","careers-hero-tag-3":"Strategic Partnerships","careers-hero-tag-3--plural":"Strategic Partnerships","careers-life-eyebrow":"Life at CJ Dropshipping","careers-life-eyebrow--plural":"Life at CJ Dropshipping","careers-country-mx":"Mexico","careers-country-mx--plural":"Mexico","careers-country-my":"Malaysia","careers-life-thumb-2-sub":"Team Culture","careers-life-thumb-2-sub--plural":"Team Culture","careers-global-hub-7-desc":"Canada · USA","careers-global-hub-7-desc--plural":"Canada · USA","careers-why-perk-4-title":"Diverse & Inclusive","careers-why-perk-4-title--plural":"Diverse & Inclusive","careers-global-hub-2-desc-v2":"Vietnam · Thailand · Indonesia · Malaysia","careers-global-hub-2-desc-v2--plural":"Vietnam · Thailand · Indonesia · Malaysia","careers-country-fr":"France","careers-country-fr--plural":"France","careers-global-hub-4-title":"Europe","careers-global-hub-4-title--plural":"Europe","careers-country-es":"Spain","careers-country-es--plural":"Spain","careers-life-thumb-4-sub"
31657:"Team Culture","careers-life-thumb-4-sub--plural":"Team Culture","careers-why-perk-5-title":"Retreats & Team Building","careers-why-perk-5-title--plural":"Retreats & Team Building","careers-why-perk-6-desc":"Structured training, industry summits and shared global resources keep you at the forefront of cross-border e-commerce.","careers-why-perk-6-desc--plural":"Structured training, industry summits and shared global resources keep you at the forefront of cross-border e-commerce.","careers-global-hub-3-title":"Oceania","careers-global-hub-3-title--plural":"Oceania","careers-global-hub-6-desc-v2":"Morocco · Nigeria","careers-global-hub-6-desc-v2--plural":"Morocco · Nigeria","careers-why-title":"Why Build Your Career at CJ Dropshipping","careers-why-title--plural":"Why Build Your Career at CJ Dropshipping","careers-why-perk-3-desc":"Market-leading compensation plus performance-driven incentives and commission. The value you created for the business will turn into generous rewards.","careers-why-perk-3-desc--plural":"Market-leading compensation plus performance-driven incentives and commission. The value you created for the business will turn into generous rewards.","careers-why-subtitle":"More than a job â a stage to grow alongside a truly global platform. We\'re results-driven, and people-focused.","careers-why-subtitle--plural":"More than a job â a stage to grow alongside a truly global platform. We\'re results-driven, and people-focused.","careers-country-gb":"United Kingdom","careers-country-gb--plural":"United Kingdom","careers-hero-image-alt":"Global cross-border e-commerce team","careers-hero-image-alt--plural":"Global cross-border e-commerce team","codex-cta-subtitle":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","codex-cta-subtitle--plural":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","odm-hero-image-alt-1":"{{fullName}} ODM Custom Product Packaging Service","odm-hero-image-alt-1--plural":"{{fullName}} ODM Custom Product Packaging Service","codex-cta-title":"Ready to Automate Your Business?","codex-cta-title--plural":"Ready to Automate Your Business?","codex-cta-doc-button":"View Documentation","codex-cta-doc-button--plural":"View Documentation","careers-jobs-requirements":"Requirements","careers-jobs-requirements--plural":"Requirements","careers-job-1-rq-3":"Strong local market knowledge","careers-job-1-rq-3--plural":"Strong local market knowledge","careers-gallery-3-cap":"Annual Gala Night","careers-gallery-3-cap--plural":"Annual Gala Night","careers-job-1-rq-4":"Excellent negotiation skills","careers-job-1-rq-4--plural":"Excellent negotiation skills","claude-hero-badge":"New MCP Server Integration","claude-hero-badge--plural":"New MCP Server Integration","careers-job-1-rq-1":"Fluent in English and the local language","careers-job-1-rq-1--plural":"Fluent in English and the local language","careers-job-1-rq-2":"Dropshipping / e-commerce expansion experience","careers-job-1-rq-2--plural":"Dropshipping / e-commerce expansion experience","careers-job-2-rq-1":"Fluent English; native speakers preferred","careers-job-2-rq-1--plural":"Fluent English; native speakers preferred","careers-job-2-rq-3":"Dropshipping / cross-border e-commerce experience","careers-job-2-rq-3--plural":"Dropshipping / cross-border e-commerce experience","careers-job-2-rq-2":"Bachelor\'s degree or above","careers-job-2-rq-2--plural":"Bachelor\'s degree or above","careers-job-2-rq-4":"Outstanding communication skills","careers-job-2-rq-4--plural":"Outstanding communication skills","claude-prompts-title":"Recommended Prompts","claude-prompts-title--plural":"Recommended Prompts","careers-gallery-5-cap":"Festive Spirit","careers-gallery-5-cap--plural":"Festive Spirit","careers-job-3-rq-2":"Fluent in English and the local language","careers-job-3-rq-2--plural":"Fluent in English and the local language","careers-job-3-rq-1":"Degree in HR/ Administration/ Business related majors","careers-job-3-rq-1--plural":"Degree in HR/ Administration/ Business related majors","careers-job-3-rq-4":"Detail-oriented and professional","careers-job-3-rq-4--plural":"Detail-oriented and professional","careers-job-3-rq-3":"1-3 years of HR experience","careers-job-3-rq-3--plural":"1-3 years of HR experience","careers-process-step-2-desc":"An online HR screening to understand your background and career goals.","careers-process-step-2-desc--plural":"An online HR screening to understand your background and career goals.","careers-process-title":"Join Us in Four Simple Steps","careers-process-title--plural":"Join Us in Four Simple Steps","careers-worksite-title":"Work Locations · Overseas Postings","careers-worksite-title--plural":"Work Locations · Overseas Postings","careers-float-cta":"Apply Now","careers-float-cta--plural":"Apply Now","careers-process-step-4-no":"STEP 04","careers-process-step-4-no--plural":"STEP 04","careers-gallery-7-cap":"Holiday Party","careers-gallery-7-cap--plural":"Holiday Party","careers-jobs-eyebrow":"Open Positions","careers-jobs-eyebrow--plural":"Open Positions","careers-process-step-1-no":"STEP 01","careers-process-step-1-no--
31657plural":"STEP 01","claude-prompts-copied":"Copied!","claude-prompts-copied--plural":"Copied!","careers-job-1-subtitle":"Dropshipping · 0-to-1 Market Launch","careers-job-1-subtitle--plural":"Dropshipping · 0-to-1 Market Launch","careers-process-step-2-title":"Screening","careers-process-step-2-title--plural":"Screening","claude-hero-subtitle":"Connect CJdropshipping to Claude. Search products, sync orders, and track logistics through simple natural language.","claude-hero-subtitle--plural":"Connect CJdropshipping to Claude. Search products, sync orders, and track logistics through simple natural language.","careers-worksite-desc":"All roles above can be based at any of the following overseas stations (exact role & city confirmed during the interview).","careers-worksite-desc--plural":"All roles above can be based at any of the following overseas stations (exact role & city confirmed during the interview).","careers-jobs-title":"Find Your Next Big Opportunity","careers-jobs-title--plural":"Find Your Next Big Opportunity","careers-contact-title":"Ready to Join Our Team?","careers-contact-title--plural":"Ready to Join Our Team?","careers-contact-resume-note":"When applying, please note","careers-contact-resume-note--plural":"When applying, please note","claude-prompts-subtitle":"Click any prompt to copy it, then paste it into Claude to call the CJ MCP server.","claude-prompts-subtitle--plural":"Click any prompt to copy it, then paste it into Claude to call the CJ MCP server.","careers-worksite-loc-1":"Türkiye","careers-worksite-loc-1--plural":"Türkiye","careers-gallery-1-cap":"Annual Global Convention","careers-gallery-1-cap--plural":"Annual Global Convention","careers-worksite-loc-2":"Mexico","careers-worksite-loc-2--plural":"Mexico","careers-worksite-loc-3":"Brazil","careers-worksite-loc-4":"Vietnam","careers-worksite-loc-4--plural":"Vietnam","careers-worksite-loc-5":"Australia","careers-worksite-loc-5--plural":"Australia","careers-worksite-loc-6":"Canada","careers-worksite-loc-6--plural":"Canada","careers-process-subtitle":"A transparent, efficient hiring process designed to get you onboard faster.","careers-process-subtitle--plural":"A transparent, efficient hiring process designed to get you onboard faster.","careers-jobs-apply":"Apply Now","careers-jobs-apply--plural":"Apply Now","careers-process-step-1-desc":"Submit your resume and target role via email or WhatsApp.","careers-process-step-1-desc--plural":"Submit your resume and target role via email or WhatsApp.","careers-contact-divider":"or connect instantly","careers-contact-divider--plural":"or connect instantly","careers-worksite-loc-7":"Indonesia","careers-worksite-loc-7--plural":"Indonesia","careers-worksite-loc-8":"Thailand","careers-worksite-loc-8--plural":"Thailand","careers-worksite-loc-9":"the Netherlands","careers-worksite-loc-9--plural":"the Netherlands","careers-process-step-3-title":"Interview","careers-process-step-3-title--plural":"Interview","careers-process-step-4-desc":"Receive your offer and begin your global cross-border career.","careers-process-step-4-desc--plural":"Receive your offer and begin your global cross-border career.","claude-hero-cta-primary":"Start Using Now","claude-hero-cta-primary--plural":"Start Using Now","careers-contact-copy":"Copy email","careers-contact-copy--plural":"Copy email","careers-job-2-hl-3":"Partner relationship management","careers-job-2-hl-3--plural":"Partner relationship management","careers-job-2-hl-4":"Market expansion","careers-job-2-hl-4--plural":"Market expansion","careers-gallery-4-cap":"Outdoor Challenge","careers-gallery-4-cap--plural":"Outdoor Challenge","careers-process-step-4-title":"Offer & Onboard","careers-process-step-4-title--plural":"Offer & Onboard","careers-process-eyebrow":"How To Apply","careers-process-eyebrow--plural":"How To Apply","careers-process-step-1-title":"Apply","careers-contact-whatsapp":"Apply via WhatsApp","careers-contact-whatsapp--plural":"Apply via WhatsApp","careers-process-step-3-no":"STEP 03","careers-process-step-3-no--plural":"STEP 03","careers-jobs-highlights":"Highlights","careers-jobs-highlights--plural":"Highlights","careers-job-2-hl-1":"Local dropshipping business development","careers-job-2-hl-1--plural":"Local dropshipping business development","careers-job-3-title":"Overseas HR & Admin Specialist","careers-job-3-title--plural":"Overseas HR & Admin Specialist","careers-job-2-hl-2":"Resource integration (logistics / payments / KOLs)","careers-job-2-hl-2--plural":"Resource integration (logistics / payments / KOLs)","careers-gallery-6-cap":"Shared Meals, Shared Growth","careers-gallery-6-cap--plural":"Shared Meals, Shared Growth","careers-job-3-hl-1":"End-to-end recruitment lifecycle","careers-job-3-hl-1--plural":"End-to-end recruitment lifecycle","careers-job-3-hl-3":"Legal & compliance coordination","careers-job-3-hl-3--plural":"Legal & compliance coordination","careers-job-3-hl-2":"Multi-site coordination","careers-job-3-hl-2--plural":"Multi-site coordination","careers-worksite-loc-12":"UAE","careers-worksite-loc-12--plural":"UAE","careers-worksite-loc-13":"Saudi Arabia","careers-worksite-loc-10":"Spain","careers-worksite-loc-10--plural":"Spain","careers-worksite-loc-11":"Malta","careers-worksite-loc-11--plural":"Malta","claude-prompts-copy":"Copy","careers-jobs-location":"Multiple Locations","careers-jobs-location--plural":"Multiple Locations","careers-worksite-loc-16":"India","careers-worksite-loc-16--plural":"India","careers-worksite-loc-14":"Morocco","careers-worksite-loc-14--plural":"Morocco","careers-worksite-loc-15":"Pakistan","careers-job-3-hl-5":"Team culture building","careers-job-3-hl-5--plural":"Team culture building","careers-contact-resume-fields":"Role · Nationality · Preferred Posting Country · Name · Email · Availability Date","careers-contact-resume-fields--plural":"Role · Nationality · Preferred Posting Country · Name · Email · Availability Date","claude-hero-title":"Manage Your Dropshipping Business, ","claude-hero-title--plural":"Manage Your Dropshipping Business, ","careers-job-3-hl-4":"Administrative support","careers-job-3-hl-4--plural":"Administrative support","careers-contact-qr-label":"Scan to apply on WhatsApp","careers-contact-qr-label--plural":"Scan to apply on WhatsApp","careers-job-2-title":"Overseas Market BD","careers-job-2-title--plural":"Overseas Market BD","careers-process-step-3-desc":"An in-depth conversation with the hiring manager â a genuine two-way fit.","careers-process-step-3-desc--plural":"An in-depth conversation with the hiring manager â a genuine two-way fit.","claude-hero-title-highlight":"Right from Your Claude Chat","claude-hero-title-highlight--plural":"Right from Your Claude Chat","careers-contact-subtitle":"Open to talents worldwide â take the next step and apply directly via email or WhatsApp.","careers-contact-subtitle--plural":"Open to talents worldwide â take the next step and apply directly via email or WhatsApp.","careers-gallery-subtitle":"From annual galas to overseas summits, outdoor challenges to festive parties â we work hard, and we love harder.","careers-gallery-subtitle--plural":"From annual galas to overseas summits, outdoor challenges to festive parties â we work hard, and we love harder.","careers-job-1-title":"Overseas Market Lead","careers-job-1-title--plural":"Overseas Market Lead","claude-hero-cta-secondary":"View Documentation","claude-hero-cta-secondary--plural":"View Documentation","careers-job-2-subtitle":"Dropshipping Business Development","careers-job-2-subtitle--plural":"Dropshipping Business Development","careers-jobs-hot":"Hot","careers-jobs-hot--plural":"Hot","careers-process-step-2-no":"STEP 02","careers-process-step-2-no--plural":"STEP 02","careers-contact-copied":"Copied","careers-contact-copied--plural":"Copied","careers-job-1-hl-5":"Supply chain optimization","careers-job-1-hl-5--
31657plural":"Supply chain optimization","careers-job-1-hl-4":"B2B clients acquisition","careers-job-1-hl-4--plural":"B2B clients acquisition","careers-job-1-hl-3":"Build and manage local teams","careers-job-1-hl-3--plural":"Build and manage local teams","careers-job-1-hl-2":"Lead platform go-to-market strategy","careers-job-1-hl-2--plural":"Lead platform go-to-market strategy","careers-job-1-hl-1":"End-to-end 0-to-1 market launch","careers-job-1-hl-1--plural":"End-to-end 0-to-1 market launch","careers-gallery-2-cap":"Team Building","careers-gallery-2-cap--plural":"Team Building","careers-jobs-subtitle":"Take the next major step of your career with our fast-growing global team.","careers-jobs-subtitle--plural":"Take the next major step of your career with our fast-growing global team.","pod2-slide2-m2t":"Easy Test","pod2-slide2-m2t--plural":"Easy Test","pod2-slide2-m2s":"Multiple designs","pod2-slide2-m2s--plural":"Multiple designs","pod2-btn-start":"Start Print on Demand","pod2-btn-start--plural":"Start Print on Demand","pod2-slide1-desc":"Build niche clothing collections with custom graphics, logos, seasonal themes, and branded packaging options.","pod2-slide1-desc--plural":"Build niche clothing collections with custom graphics, logos, seasonal themes, and branded packaging options.","pod2-slide1-title":"T-shirts, Hoodies & Fashion Items","pod2-slide1-title--plural":"T-shirts, Hoodies & Fashion Items","pod2-slide4-title":"Personalized Jewelry Products","pod2-slide4-title--plural":"Personalized Jewelry Products","pod2-hero-point4":"Shopify, TikTok Shop & WooCommerce Integration","pod2-hero-point4--plural":"Shopify, TikTok Shop & WooCommerce Integration","pod2-hero-point5":"One-Stop POD Solution","pod2-hero-point5--plural":"One-Stop POD Solution","pod2-hero-point2":"Custom Products & Packaging","pod2-hero-point2--plural":"Custom Products & Packaging","pod2-hero-point3":"Global Fulfillment","pod2-hero-point3--plural":"Global Fulfillment","pod2-slide2-m1t":"Gift Value","pod2-slide2-m1t--plural":"Gift Value","pod2-slide2-m1s":"Emotional purchase","pod2-slide2-m1s--plural":"Emotional purchase","pod2-slide4-tag":"Jewelry & Accessories","pod2-slide4-tag--plural":"Jewelry & Accessories","pod2-hero-point1":"No Inventory Required","pod2-hero-point1--plural":"No Inventory Required","pod2-slide2-tag":"Personalized Gifts","pod2-slide2-tag--plural":"Personalized Gifts","pod2-slide4-m1t":"Premium Feel","pod2-slide4-m1t--plural":"Premium Feel","pod2-slide4-m1s":"Higher value","pod2-slide4-m1s--plural":"Higher value","pod2-hero-desc":"Create personalized products, sell under your own brand, and let {{name}} handle sourcing, production, quality control, and global fulfillment.","pod2-hero-desc--plural":"Create personalized products, sell under your own brand, and let {{name}} handle sourcing, production, quality control, and global fulfillment.","pod2-slide4-desc":"Offer engraved, name-based, couple, family, or memorial-style products for gift-focused ecommerce stores.","pod2-slide4-desc--plural":"Offer engraved, name-based, couple, family, or memorial-style products for gift-focused ecommerce stores.","pod2-hero-title":"Print on Demand: Start Your Ecommerce Journey with {{fullName}}","pod2-hero-title--plural":"Print on Demand: Start Your Ecommerce Journey with {{fullName}}","pod2-slide3-title":"Phone Cases & Daily Accessories","pod2-slide3-title--plural":"Phone Cases & Daily Accessories","pod2-slide1-tag":"Custom Apparel","pod2-slide1-tag--plural":"Custom Apparel","pod2-hero-trustpilot-reviews":"{{count}} reviews on Trustpilot","pod2-hero-trustpilot-reviews--plural":"{{count}} reviews on Trustpilot","pod2-hero-trustpilot":"Trustpilot","pod2-hero-trustpilot--plural":"Trustpilot","pod2-slide1-m1s":"Made after order","pod2-slide1-m1s--plural":"Made after order","pod2-slide1-m1t":"No Stock","pod2-slide1-m1t--plural":"No Stock","pod2-slide3-m2t":"Trendy","pod2-slide3-m2t--plural":"Trendy","pod2-slide2-span":"Gift-Focused Selling","pod2-slide2-span--plural":"Gift-Focused Selling","pod2-slide3-m2s":"Design-led sales","pod2-slide3-m2s--plural":"Design-led sales","pod2-slide4-span":"High Perceived Value","pod2-slide4-span--plural":"High Perceived Value","pod2-hero-label":"Print on Demand Solution","pod2-hero-label--plural":"Print on Demand Solution","pod2-slide1-span":"Brand-Ready POD","pod2-slide1-span--plural":"Brand-Ready POD","pod2-slide3-tag":"Phone Accessories","pod2-slide3-tag--plural":"Phone Accessories","pod2-hero-shopify":"Shopify","pod2-slide1-m2t":"Branding","pod2-slide1-m2s":"Logo & packaging","pod2-slide1-m2s--plural":"Logo & packaging","pod2-slide2-title":"Custom Mugs & Gift Products","pod2-slide2-title--plural":"Custom Mugs & Gift Products","pod2-slide3-m1s":"Easy to ship","pod2-slide3-m1s--plural":"Easy to ship","pod2-slide3-m1t":"Lightweight","pod2-slide3-m1t--plural":"Lightweight","pod2-slide3-desc":"Offer stylish accessories with custom artwork, trendy patterns, influencer designs, and flexible fulfillment.","pod2-slide3-desc--plural":"Offer stylish accessories with custom artwork, trendy patterns, influencer designs, and flexible fulfillment.","pod2-hero-shopify-reviews":"Based on {{count}} reviews","pod2-hero-shopify-reviews--plural":"Based on {{count}} reviews","pod2-slide2-desc":"Create products for holidays, birthdays, pet lovers, couples, families, teachers, and niche communities.","pod2-slide2-desc--plural":"Create products for holidays, birthdays, pet lovers, couples, families, teachers, and niche communities.","pod2-btn-explore":"Explore POD Products","pod2-btn-explore--plural":"Explore POD Products","pod2-slide3-span":"Style-Driven Products","pod2-slide3-span--plural":"Style-Driven Products","pod2-test-ethan-role":"Branding Consultant","pod2-test-ethan-role--plural":"Branding Consultant","pod2-faq-info-t":"Need help starting POD?","pod2-faq-info-t--plural":"Need help starting POD?","pod2-faq-info-s":"Cho
31657ose products, upload your designs, connect your store, and let {{name}} help handle production and fulfillment.","pod2-faq-info-s--plural":"Choose products, upload your designs, connect your store, and let {{name}} help handle production and fulfillment.","pod2-faq7-q":"What products are best for POD?","pod2-faq7-q--plural":"What products are best for POD?","pod2-test-noah-role":"Creator Merchandise Seller","pod2-test-noah-role--plural":"Creator Merchandise Seller","pod2-faq3-q":"Can {{name}} help me find custom products?","pod2-faq3-q--plural":"Can {{name}} help me find custom products?","pod2-test-nathan-role":"DTC Brand Builder","pod2-test-nathan-role--plural":"DTC Brand Builder","pod2-cta-label":"Start Your POD Journey","pod2-cta-label--plural":"Start Your POD Journey","pod2-faq7-a":"Popular POD products include apparel, mugs, phone cases, home decor, pet products, jewelry, accessories, and personalized gifts.","pod2-faq7-a--plural":"Popular POD products include apparel, mugs, phone cases, home decor, pet products, jewelry, accessories, and personalized gifts.","pod2-faq3-a":"Yes. If you cannot find the product you want, you can submit a sourcing request and {{name}} can help look for suitable suppliers.","pod2-faq3-a--plural":"Yes. If you cannot find the product you want, you can submit a sourcing request and {{name}} can help look for suitable suppliers.","pod2-category-btn":"Explore POD Products","pod2-category-btn--plural":"Explore POD Products","pod2-test-grace-role":"Sustainable Store Founder","pod2-test-grace-role--plural":"Sustainable Store Founder","pod2-faq6-q":"Can {{name}} fulfill POD orders automatically?","pod2-faq6-q--plural":"Can {{name}} fulfill POD orders automatically?","pod2-faq2-q":"Do I need inventory to start POD with {{name}}?","pod2-faq2-q--plural":"Do I need inventory to start POD with {{name}}?","pod2-cta-h2":"Ready to Start Your Print on Demand Business?","pod2-cta-h2--plural":"Ready to Start Your Print on Demand Business?","pod2-faq6-a":"Yes. After connecting your store, {{name}} can help sync orders, process fulfillment, and update tracking information.","pod2-faq6-a--plural":"Yes. After connecting your store, {{name}} can help sync orders, process fulfillment, and update tracking information.","pod2-faq2-a":"No. You can start with no inventory and produce products after orders are placed.","pod2-faq2-a--plural":"No. You can start with no inventory and produce products after orders are placed.","pod2-faq-desc":"Find quick answers about {{fullName}} Print on Demand, including custom products, design uploads, branding, fulfillment, samples, and how to get started.","pod2-faq-desc--plural":"Find quick answers about {{fullName}} Print on Demand, including custom products, design uploads, branding, fulfillment, samples, and how to get started.","pod2-test-ava-text":"I\'ve tested multiple POD providers; none match {{fullName}}\'s combination of speed, quality, and price.","pod2-test-ava-text--plural":"I\'ve tested multiple POD providers; none match {{fullName}}\'s combination of speed, quality, and price.","pod2-test-grace-text":"Their eco-friendly on-demand model aligns with my sustainability goals. No excess waste, just happy buyers.","pod2-test-grace-text--plural":"Their eco-friendly on-demand model aligns with my sustainability goals. No excess waste, just happy buyers.","pod2-faq9-q":"Can I order samples before selling?","pod2-faq9-q--plural":"Can I order samples before selling?","pod2-faq5-q":"Does {{name}} support custom packaging?","pod2-faq5-q--plural":"Does {{name}} support custom packaging?","pod2-faq1-q":"What is print on demand?","pod2-faq1-q--plural":"What is print on demand?","pod2-cta-btn2":"Submit a Custom Request","pod2-cta-btn2--plural":"Submit a Custom Request","pod2-cta-btn1":"Start POD with {{name}}","pod2-cta-btn1--plural":"Start POD with {{name}}","pod2-faq9-a":"Yes. Ordering samples is recommended so you can check product quality, print effect, packaging, and shipping experience.","pod2-faq9-a--plural":"Yes. Ordering samples is recommended so you can check product quality, print effect, packaging, and shipping experience.","pod2-faq5-a":"Yes. {{name}} can support branding options such as custom packaging, thank-you cards, labels, and other packaging solutions.","pod2-faq5-a--plural":"Yes. {{name}} can support branding options such as custom packaging, thank-you cards, labels, and other packaging solutions.","pod2-faq1-a":"Print on Demand is a business model where products are made only after customers place orders, so sellers do not need to hold inventory in advance.","pod2-faq1-a--plural":"Print on Demand is a business model where products are made only after customers place orders, so sellers do not need to hold inventory in advance.","pod2-test-olivia-text":"Offer
31657ing hundreds of customizable products expanded my catalog overnight. I\'m seeing higher average order values.","pod2-test-olivia-text--plural":"Offering hundreds of customizable products expanded my catalog overnight. I\'m seeing higher average order values.","pod2-faq-h2":"Print on Demand FAQs","pod2-faq-h2--plural":"Print on Demand FAQs","pod2-test-nathan-text":"Automated workflows let me focus on marketing while {{fullName}} handles printing, packing, and shipping flawlessly.","pod2-test-nathan-text--plural":"Automated workflows let me focus on marketing while {{fullName}} handles printing, packing, and shipping flawlessly.","pod2-faq10-a":"You can create a {{name}} account, choose or source POD products, upload your design, connect your store, and start selling.","pod2-faq10-a--plural":"You can create a {{name}} account, choose or source POD products, upload your design, connect your store, and start selling.","pod2-test-ethan-text":"Branding options like custom packing slips added a professional touch that keeps customers coming back.","pod2-test-ethan-text--plural":"Branding options like custom packing slips added a professional touch that keeps customers coming back.","pod2-faq8-q":"Is POD good for beginners?","pod2-faq8-q--plural":"Is POD good for beginners?","pod2-test-ava-role":"POD Business Owner","pod2-test-ava-role--plural":"POD Business Owner","pod2-faq4-q":"Can I use my own designs?","pod2-faq4-q--plural":"Can I use my own designs?","pod2-faq10-q":"How do I start POD with {{fullName}}?","pod2-faq10-q--plural":"How do I start POD with {{fullName}}?","pod2-faq-label":"FAQ","pod2-test-noah-text":"Launching limited-edition drops is effortless. I upload a design, and within days it\'s in my customers\' hands!","pod2-test-noah-text--plural":"Launching limited-edition drops is effortless. I upload a design, and within days it\'s in my customers\' hands!","pod2-faq8-a":"Yes. POD is beginner-friendly because it requires lower upfront investment and allows sellers to test designs without buying bulk inventory.","pod2-faq8-a--plural":"Yes. POD is beginner-friendly because it requires lower upfront investment and allows sellers to test designs without buying bulk inventory.","pod2-cta-desc":"Turn your ideas into custom products with {{fullName}}. From sourcing and customization to fulfillment and global shipping, {{name}} helps you build a flexible POD business without inventory pressure.","pod2-cta-desc--plural":"Turn your ideas into custom products with {{fullName}}. From sourcing and customization to fulfillment and global shipping, {{name}} helps you build a flexible POD business without inventory pressure.","pod2-faq4-a":"Yes. You can upload your own designs, logos, artwork, or personalized requirements depending on the product type.","pod2-faq4-a--plural":"Yes. You can upload your own designs, logos, artwork, or personalized requirements depending on the product type.","pod2-test-olivia-role":"Personalized Gift Seller","pod2-test-olivia-role--plural":"Personalized Gift Seller","chatgpt-capability-3-desc":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","chatgpt-capability-3-desc--plural":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","claude-capability-6-desc":"Personalized product suggestions based on your store\'s sales history and global market trends.","claude-capability-6-desc--plural":"Personalized product suggestions based on your store\'s sales history and global market trends.","claude-capabilities-title":"Intelligent Commerce ","claude-capabilities-title--plural":"Intelligent Commerce ","claude-prompt-9":"Check my current API call rate limit status","claude-prompt-9--plural":"Check my current API call rate limit status","claude-prompt-8":"Show me the product connection mappings between CJ and my Shopify store","claude-prompt-8--plural":"Show me the product connection mappings between CJ and my Shopify store","claude-prompt-7":"How much balance do I currently have in my CJ account?","claude-prompt-7--plural":"How much balance do I currently have in my CJ account?","chatgpt-hero-subtitle":"Connect CJdropshipping to ChatGPT. Search products, sync orders, and track logistics through simple natural language.","chatgpt-hero-subtitle--plural":"Connect CJdropshipping to ChatGPT. Search products, sync orders, and track logistics through simple natural language.","chatgpt-hero-badge":"New MCP Server Integration","chatgpt-hero-badge--plural":"New MCP Server Integration","claude-operation-step-2-alt":"Claude web app left sidebar with the Customize entry highlighted.","claude-operation-step-2-alt--plural":"Claude web app left sidebar with the Customize entry highlighted.","claude-operation-step-5-desc":"Ask Claude to use CJMCP â e.g. \\"Use CJMCP to view my current account\\". Approve with <strong>Always allow</strong> and Claude will call the CJ MCP tools and return structured data.","claude-operation-step-5-desc--plural":"Ask Claude to use CJMCP â e.g. \\"Use CJMCP to view my current account\\". Approve with <strong>Always allow</strong> and Claude will call the CJ MCP tools and return structured data.","chatgpt-prompt-10":"Show me all the stores connected to my CJ account","chatgpt-prompt-10--plural":"Show me all the stores connected to my CJ account","chatgpt-capability-4-title":"Inventory Insights","chatgpt-capability-4-title--plural":"Inventory Insights","chatgpt-capability-4-desc":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","chatgpt-capability-4-desc--plural":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","chatgpt-hero-cta-secondary":"View Documentation","chatgpt-hero-cta-secondary--plural":"View Documentation","chatgpt-capability-1-desc":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","chatgpt-capability-1-desc--plural":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","chatgpt-capability-1-title":"Product Search","chatgpt-capability-1-title--plural":"Product Search","claude-operation-title":"Deployment Process","claude-operation-title--plural":"Deployment Process","claude-capability-5-desc":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","claude-capability-5-desc--plural":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","claude-operation-step-3-label":"Connectors â + â Add custom connector","claude-operation-step-3-label--plural":"Connectors â + â Add custom connector","claude-capabilities-title-highlight":"At Your Fingertips","claude-capabilities-title-highlight--plural":"At Your Fingertips","claude-operation-step-4-desc":"Name the connector <strong>CJMCP</strong> and set the <strong>MCP Server URL</strong> to <code>https://developers.cjdropshipping.com/mcp/<MCP Token></code> (replace <code><accessToken></code> with the token from the previous step), then click <strong>Add</strong>.","claude-operation-step-4-desc--plural":"Name the connector <strong>CJMCP</strong> and set the <strong>MCP Server URL</strong> to <code>https://developers.cjdropshipping.com/mcp/<MCP Token></code> (replace <code><accessToken></code> with the token from the previous step), then click <strong>Add</strong>.","claude-capability-2-title":"Order Management","claude-operation-step-2-title":"Open Customize","claude-operation-step-2-title--plural":"Open Customize","claude-capability-5-title":"AI Commerce Q&A","claude-capability-5-title--plural":"AI Commerce Q&A","claude-faq-title":"Frequently Asked Questions","claude-faq-title--plural":"Frequently Asked Questions","chatgpt-capability-6-desc":"Personalized product suggestions based on your store\'s sales history and global market trends.","chatgpt-capability-6-desc--plural":"Personalized product suggestions based on your store\'s sales history and global market trends.","chatgpt-prompts-title":"Recommended Prompts","chatgpt-prompts-title--plural":"Recommended Prompts","chatgpt-hero-product-1-name":"Wireless Bluetooth Headphones, Small, Portable, And Very Practical.","chatgpt-hero-product-1-name--plural":"Wireless Bluetooth Headphones, Small, Portable, And Very Practical.","claude-operation-step-2-desc":"In the Claude web app, open the left sidebar and click <strong>Customize</strong> to manage connectors and integrations.","claude-operation-step-2-desc--plural":"In the Claude web app, open the left sidebar and click <strong>Customize</strong> to manage connectors and integrations.","claude-cta-title":"Ready to Automate Your Business?","claude-cta-title--plural":"Ready to Automate Your Business?","claude-faq-1-question":"Is the CJ MCP server free to use?","claude-faq-1-question--plural":"Is the CJ MCP server free to use?","claude-faq-1-answer":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","claude-faq-1-answer--plural":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","claude-operation-step-3-title":"Add a Custom Connector","claude-operation-step-3-title--plural":"Add a Custom Connector","chatgpt-operation-title":"Deployment Process","chatgpt-operation-title--plural":"Deployment Process","chatgpt-capabilities-title-highlight":"At Your Fingertips","chatgpt-capabilities-title-highlight--plural":"At Your Fingertips","claude-operation-step-2-label":"Open the Claude web app","claude-operation-step-2-label--plural":"Open the Claude web app","claude-capability-4-title":"Inventory Insights","claude-capability-4-title--plural":"Inventory Insights","claude-prompt-6":"Which of my orders are still waiting for payment?","claude-prompt-6--plural":"Which of my orders are still waiting for payment?","claude-prompt-5":"Open my shopping cart page so I can review the items in it","claude-prompt-5--plural":"Open my shopping cart page so I can review the items in it","claude-prompt-4":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","claude-prompt-4--plural":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","claude-prompt-3":"What warehouses does CJ have globally? Please list all locations","claude-prompt-3--plural":"What warehouses does CJ have globally? Please list all locations","claude-prompt-2":"What colors and sizes are available for product CJYD2774438?","claude-prompt-2--plural":"What colors and sizes are available for product CJYD2774438?","claude-faq-subtitle":"Find answers to common questions about our MCP server integration.","claude-faq-subtitle--plural":"Find answers to common questions about our MCP server integration.","chatgpt-hero-bot-intro":"Searching CJdropshipping inventory... I found 3 high-potential products for you:","chatgpt-hero-bot-intro--plural":"Searching CJdropshipping inventory... I found 3 high-potential products for you:","claude-prompt-1":"Search for \\"phone case\\" and show the first 20 results","claude-prompt-1--plural":"Search for \\"phone case\\" and show the first 20 results","claude-capability-4-desc":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","claude-capability-4-desc--plural":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","claude-prompt-10":"Show me all the stores connected to my CJ account","claude-prompt-10--plural":"Show me all the stores connected to my CJ account","claude-capability-1-desc":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","claude-capability-1-desc--plural":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","chatgpt-capability-3-title":"Logistics Tracking","chatgpt-capability-3-title--plural":"Logistics Tracking","claude-operation-step-4-alt":"Claude Add custom connector dialog with CJMCP name and the MCP Server URL filled in.","claude-operation-step-4-alt--plural":"Claude Add custom connector dialog with CJMCP name and the MCP Server URL filled in.","chatgpt-capability-5-title":"AI Commerce Q&A","chatgpt-capability-5-title--plural":"AI Commerce Q&A","claude-operation-step-4-title":"Configure CJMCP","claude-operation-step-4-title--plural":"Configure CJMCP","chatgpt-prompts-copy":"Copy","claude-operation-step-1-alt":"CJ API console API Key page with the key value and copy button highlighted.","claude-operation-step-1-alt--plural":"CJ API console API Key page with the key value and copy button highlighted.","chatgpt-hero-cta-primary":"Start Using Now","chatgpt-hero-cta-primary--
31657plural":"Start Using Now","chatgpt-operation-subtitle":"Integrate the powerful CJ MCP service into your ChatGPT environment in just six simple steps and unlock AI-driven supply chain automation.","chatgpt-operation-subtitle--plural":"Integrate the powerful CJ MCP service into your ChatGPT environment in just six simple steps and unlock AI-driven supply chain automation.","claude-capability-3-title":"Logistics Tracking","claude-capability-3-title--plural":"Logistics Tracking","chatgpt-capability-2-title":"Order Management","claude-operation-step-4-label":"Name it and set the MCP Server URL","claude-operation-step-4-label--plural":"Name it and set the MCP Server URL","claude-cta-doc-button":"View Documentation","claude-cta-doc-button--plural":"View Documentation","claude-faq-2-question":"Which AI models are supported?","claude-faq-2-question--plural":"Which AI models are supported?","claude-operation-step-1-label":"Copy your CJ API Key","claude-operation-step-1-label--plural":"Copy your CJ API Key","chatgpt-hero-title-highlight":"Right from Your AI Chat","chatgpt-hero-title-highlight--plural":"Right from Your AI Chat","claude-capability-6-title":"Smart Recommendations","claude-capability-6-title--plural":"Smart Recommendations","claude-faq-2-answer":"We currently officially support Claude, ChatGPT, and any environment compatible with the Model Context Protocol (MCP) standard.","claude-faq-2-answer--plural":"We currently officially support Claude, ChatGPT, and any environment compatible with the Model Context Protocol (MCP) standard.","chatgpt-prompt-2":"What colors and sizes are available for product CJYD2774438?","chatgpt-prompt-2--plural":"What colors and sizes are available for product CJYD2774438?","chatgpt-prompt-3":"What warehouses does CJ have globally? Please list all locations","chatgpt-prompt-3--plural":"What warehouses does CJ have globally? Please list all locations","chatgpt-prompt-1":"Search for \\"phone case\\" and show the first 20 results","chatgpt-prompt-1--plural":"Search for \\"phone case\\" and show the first 20 results","chatgpt-prompt-6":"Which of my orders are still waiting for payment?","chatgpt-prompt-6--plural":"Which of my orders are still waiting for payment?","chatgpt-prompt-7":"How much balance do I currently have in my CJ account?","chatgpt-prompt-7--plural":"How much balance do I currently have in my CJ account?","chatgpt-prompt-4":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","chatgpt-prompt-4--plural":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","chatgpt-hero-user-message":"Can you find me top-rated wireless headphones for under $30 on CJdropshipping?","chatgpt-hero-user-message--plural":"Can you find me top-rated wireless headphones for under $30 on CJdropshipping?","chatgpt-prompt-5":"Open my shopping cart page so I can review the items in it","chatgpt-prompt-5--plural":"Open my shopping cart page so I can review the items in it","chatgpt-prompt-8":"Show me the product connection mappings between CJ and my Shopify store","chatgpt-prompt-8--plural":"Show me the product connection mappings between CJ and my Shopify store","chatgpt-prompt-9":"Check my current API call rate limit status","chatgpt-prompt-9--plural":"Check my current API call rate limit status","claude-operation-step-1-desc":"Log in to your CJ account and open the <a href=\\"/my.html#/authorize/API\\">API</a>
31657 page. Copy your existing API Key & MCP Token, or click <strong>Add API</strong> to create one.","claude-operation-step-1-desc--plural":"Log in to your CJ account and open the <a href=\\"/my.html#/authorize/API\\">API</a> page. Copy your existing API Key & MCP Token, or click <strong>Add API</strong> to create one.","claude-faq-3-question":"How secure is my business data?","claude-faq-3-question--plural":"How secure is my business data?","chatgpt-prompts-copied":"Copied!","chatgpt-prompts-copied--plural":"Copied!","claude-operation-step-1-title":"Get Your API Key","claude-operation-step-1-title--plural":"Get Your API Key","chatgpt-capabilities-subtitle":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","chatgpt-capabilities-subtitle--plural":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","claude-capability-3-desc":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","claude-capability-3-desc--plural":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","chatgpt-prompts-subtitle":"Click any prompt to copy it, then paste it into ChatGPT to call the CJ MCP server.","chatgpt-prompts-subtitle--plural":"Click any prompt to copy it, then paste it into ChatGPT to call the CJ MCP server.","claude-cta-subtitle":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","claude-cta-subtitle--plural":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","claude-capabilities-subtitle":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","claude-capabilities-subtitle--plural":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","claude-operation-step-3-desc":"Go to <strong>Connectors</strong>, click the <strong>+</strong> button, then choose <strong>Add custom connector</strong>.","claude-operation-step-3-desc--plural":"Go to <strong>Connectors</strong>, click the <strong>+</strong> button, then choose <strong>Add custom connector</strong>.","claude-operation-step-5-alt":"Claude conversation where it requests permission to use the CJMCP connector with an Always allow option.","claude-operation-step-5-alt--plural":"Claude conversation where it requests permission to use the CJMCP connector with an Always allow option.","claude-operation-subtitle":"Connect the CJ MCP server to Claude\'s web app in just six simple steps and unlock AI-driven supply chain automation.","claude-operation-subtitle--plural":"Connect the CJ MCP server to Claude\'s web app in just six simple steps and unlock AI-driven supply chain automation.","claude-capability-2-desc":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","claude-capability-2-desc--plural":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","claude-operation-step-5-title":"Start Using in Chat","claude-operation-step-5-title--plural":"Start Using in Chat","chatgpt-hero-title":"Manage Your Dropshipping Business, ","chatgpt-hero-title--plural":"Manage Your Dropshipping Business, ","claude-faq-3-answer":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","claude-faq-3-answer--plural":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","claude-capability-1-title":"Product Search","claude-capability-1-title--plural":"Product Search","chatgpt-capability-6-title":"Smart Recommendations","chatgpt-capability-6-title--plural":"Smart Recommendations","chatgpt-hero-preview-title":"ChatGPT + CJ MCP Server","chatgpt-hero-preview-title--plural":"ChatGPT + CJ MCP Server","claude-operation-step-3-alt":"Claude Connectors panel with the + menu open and Add custom connector highlighted.","claude-operation-step-3-alt--plural":"Claude Connectors panel with the + menu open and Add custom connector highlighted.","chatgpt-hero-product-2-name":"Wireless In-ear Noise-reduction Bluetooth-compatible Headset","chatgpt-hero-product-2-name--plural":"Wireless In-ear Noise-reduction Bluetooth-compatible Headset","chatgpt-capability-5-desc":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","chatgpt-capability-5-desc--plural":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","chatgpt-capabilities-title":"Intelligent Commerce ","chatgpt-capabilities-title--plural":"Intelligent Commerce ","chatgpt-capability-2-desc":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","chatgpt-capability-2-desc--plural":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","claude-operation-step-5-label":"Chat to call CJ MCP","claude-operation-step-5-label--plural":"Chat to call CJ MCP","chatgpt-operation-step-6-desc":"Once configured, simply type commands like \\"find the latest trending products\\" in the chat. The AI will automatically call the CJ MCP server and return structured data.","chatgpt-operation-step-6-desc--plural":"Once configured, simply type commands like \\"find the latest trending products\\" in the chat. The AI will automatically call the CJ MCP server and return structured data.","chatgpt-operation-step-6-title":"Start Using in Chat","chatgpt-operation-step-6-title--plural":"Start Using in Chat","codex-operation-step-6-label":"Start calling CJ MCP tools","codex-operation-step-6-label--plural":"Start calling CJ MCP tools","chatgpt-operation-step-3-label":"View active integrations","chatgpt-operation-step-3-label--plural":"View active integrations","codex-faq-2-question":"Which AI models are supported?","codex-faq-2-question--plural":"Which AI models are supported?","chatgpt-operation-step-3-title":"Manage Enabled Apps","chatgpt-operation-step-3-title--plural":"Manage Enabled Apps","codex-operation-step-6-title":"CJMCP is Enabled","codex-operation-step-6-title--plural":"CJMCP is Enabled","chatgpt-operation-step-6-label":"Chat to call CJ MCP","chatgpt-operation-step-6-label--plural":"Chat to call CJ MCP","codex-prompts-subtitle":"Click any prompt to copy it, then paste it into Codex to call the CJ MCP server.","codex-prompts-subtitle--plural":"Click any prompt to copy it, then paste it into Codex to call the CJ MCP server.","codex-operation-step-3-label":"Find the Codex config file","codex-operation-step-3-label--plural":"Find the Codex config file","chatgpt-operation-step-3-alt":"The Connected Apps / MCP Servers management list in ChatGPT displaying active external integrations and their status.","chatgpt-operation-step-3-alt--plural":"The Connected Apps / MCP Servers management list in ChatGPT displaying active external integrations and their status.","codex-operation-title":"Deployment Process","codex-operation-title--plural":"Deployment Process","codex-operation-subtitle":"Wire the CJ MCP server into Codex with a few local configuration steps and unlock AI-driven supply chain automation.","codex-operation-subtitle--plural":"Wire the CJ MCP server into Codex with a few local configuration steps and unlock AI-driven supply chain automation.","chatgpt-faq-3-question":"How secure is my business data?","chatgpt-faq-3-question--plural":"How secure is my business data?","codex-faq-1-answer":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","codex-faq-1-answer--plural":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","codex-faq-2-answer":"We currently officially support ChatGPT, Claude, and any environment c
31657ompatible with the Model Context Protocol (MCP) standard.","codex-faq-2-answer--plural":"We currently officially support ChatGPT, Claude, and any environment compatible with the Model Context Protocol (MCP) standard.","codex-faq-3-answer":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","codex-faq-3-answer--plural":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","codex-capabilities-title-highlight":"At Your Fingertips","codex-capabilities-title-highlight--plural":"At Your Fingertips","codex-capabilities-subtitle":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","codex-capabilities-subtitle--plural":"Ditch the complex dashboards. Speak to your data and let the AI handle the heavy lifting of running your store.","codex-operation-step-5-alt":"Codex prompt box with the /mcp command \\"Show MCP server status\\" being entered.","codex-operation-step-5-alt--plural":"Codex prompt box with the /mcp command \\"Show MCP server status\\" being entered.","chatgpt-operation-step-4-desc":"Select \\"Add New Server\\" or \\"Create Application\\". The system will guide you through an intuitive configuration interface for mounting CJdropshipping\'s powerful feature modules. Refer to this path for the <a href=\\"https://developers.cjdropshipping.com/en/api/api2/mcp.html#_2-chatgpt-remote-http-mode\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">server URL</a>","chatgpt-operation-step-4-desc--plural":"Select \\"Add New Server\\" or \\"Create Application\\". The system will guide you through an intuitive configuration interface for mounting CJdropshipping\'s powerful feature modules. Refer to this path for the <a href=\\"https://developers.cjdropshipping.com/en/api/api2/mcp.html#_2-chatgpt-remote-http-mode\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">server URL</a>","codex-prompt-1":"Search for \\"phone case\\" and show the first 20 results","codex-prompt-1--plural":"Search for \\"phone case\\" and show the first 20 results","codex-prompt-2":"What colors and sizes are available for product CJYD2774438?","codex-prompt-2--plural":"What colors and sizes are available for product CJYD2774438?","codex-prompt-3":"What warehouses does CJ have globally? Please list all locations","codex-prompt-3--plural":"What warehouses does CJ have globally? Please list all locations","codex-prompt-4":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","codex-prompt-4--plural":"Calculate the shipping cost for sending 2 units of variant CJYD277443801AZ from China to the US","codex-prompt-5":"Open my shopping cart page so I can review the items in it","codex-prompt-5--plural":"Open my shopping cart page so I can review the items in it","codex-prompt-6":"Which of my orders are still waiting for payment?","codex-prompt-6--plural":"Which of my orders are still waiting for payment?","codex-prompt-7":"How much balance do I currently have in my CJ account?","codex-prompt-7--plural":"How much balance do I currently have in my CJ account?","codex-prompt-8":"Show me the product connection mappings between CJ and my Shopify store","codex-prompt-8--plural":"Show me the product connection mappings between CJ and my Shopify store","codex-prompt-9":"Check my current API call rate limit status","codex-prompt-9--plural":"Check my current API call rate limit status","chatgpt-operation-step-5-alt":"Server configuration form in ChatGPT where the CJ-provided endpoint and API key are entered.","chatgpt-operation-step-5-alt--plural":"Server configuration form in ChatGPT where the CJ-provided endpoint and API key are entered.","codex-prompt-10":"Show me all the stores connected to my CJ account","codex-prompt-10--plural":"Show me all the stores connected to my CJ account","codex-capability-2-title":"Order Management","codex-capability-5-title":"AI Commerce Q&A","codex-capability-5-title--plural":"AI Commerce Q&A","chatgpt-operation-step-1-title":"Go to Settings","chatgpt-operation-step-1-title--plural":"Go to Settings","codex-hero-title":"Manage Your Dropshipping Business, ","codex-hero-title--plural":"Manage Your Dropshipping Business, ","codex-operation-step-4-title":"Configure the MCP Server","codex-operation-step-4-title--plural":"Configure the MCP Server","codex-operation-step-1-label":"git + Node.js 20+","codex-operation-step-1-label--plural":"git + Node.js 20+","codex-faq-3-question":"How secure is my business data?","codex-faq-3-question--plural":"How secure is my business data?","chatgpt-operation-step-5-title":"Select the app","chatgpt-operation-step-5-title--plural":"Select the app","chatgpt-faq-1-answer":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","chatgpt-faq-1-answer--plural":"Yes, the basic MCP server connection is free for all registered CJdropshipping users. Premium features like advanced analytics and higher API rate limits may require a professional tier subscription.","codex-hero-badge":"New MCP Server Integration","codex-hero-badge--plural":"New MCP Server Integration","codex-operation-step-3-desc":"Find the Codex <code>config.toml</code> for your OS, and note your absolute <code>node</code> path.","codex-operation-step-3-desc--plural":"Find the Codex <code>config.toml</code> for your OS, and note your absolute <code>node</code> path.","codex-hero-subtitle":"Connect CJdropshipping to Codex. Search products, sync orders, and track logistics through simple natural language.","codex-hero-subtitle--plural":"Connect CJdropshipping to Codex. Search products, sync orders, and track logistics through simple natural language.","codex-operation-step-6-desc":"In the MCP panel, <strong>CJMCP</strong> shows as <strong>Enabled</strong> â you can now call the CJ MCP tools right from your prompts.","codex-operation-step-6-desc--plural":"In the MCP panel, <strong>CJMCP</strong> shows as <strong>Enabled</strong> â you can now call the CJ MCP tools right from your prompts.","codex-operation-step-2-label":"git clone api-mcp","codex-operation-step-2-label--plural":"git clone api-mcp","chatgpt-operation-step-2-desc":"In the settings menu, navigate to \\"Beta Features\\" or \\"Developer Options\\" and enable MCP developer mode. This step allows ChatGPT to communicate with external supply chain data interfaces.","chatgpt-operation-step-2-desc--plural":"In the settings menu, navigate to \\"Beta Features\\" or \\"Developer Options\\" and enable MCP developer mode. This step allows ChatGPT to communicate with external supply chain data interfaces.","chatgpt-operation-step-2-alt":"ChatGPT settings menu showing the Beta Features / Developer Options panel where MCP developer mode is switched on.","chatgpt-operation-step-2-alt--plural":"ChatGPT settings menu showing the Beta Features / Developer Options panel where MCP developer mode is switched on.","codex-operation-step-3-title":"Locate config.toml","codex-operation-step-3-title--plural":"Locate config.toml","codex-capability-3-title":"Logistics Tracking","codex-capability-3-title--plural":"Logistics Tracking","chatgpt-faq-subtitle":"Find answers to common questions about our MCP server integration.","chatgpt-faq-subtitle--plural":"Find answers to common questions about our MCP server integration.","codex-faq-1-question":"Is the CJ MCP server free to use?","codex-faq-1-question--plural":"Is the CJ MCP server free to use?","chatgpt-cta-doc-button":"View Documentation","chatgpt-cta-doc-button--plural":"View Documentation","chatgpt-faq-2-question":"Which AI models are supported?","chatgpt-faq-2-question--plural":"Which AI models are supported?","codex-capability-6-desc":"Personalized product suggestions based on your store\'s sales history and global market trends.","codex-capability-6-desc--plural":"Personalized product suggestions based on your store\'s sales history and global market trends.","chatgpt-operation-step-5-desc":"Enter / and the app you just created will show up. Simply select the matching app.","chatgpt-operation-step-5-desc--plural":"Enter / and the app you just created will show up. Simply select the matching app.","chatgpt-operation-step-5-label":"Choose the app in the input box.","chatgpt-operation-step-5-label--plural":"Choose the app in the input box.","chatgpt-operation-step-4-alt":"ChatGPT configuration interface for adding a new server or creating an application to mount CJdropshipping features.","chatgpt-operation-step-4-alt--plural":"ChatGPT configuration interface for adding a new server or creating an application to mount CJdropshipping features.","codex-faq-subtitle":"Find answers to common questions about our MCP server integration.","codex-faq-subtitle--plural":"Find answers to common questions about our MCP server integration.","codex-capability-4-title":"Inventory Insights","codex-capability-4-title--plural":"Inventory Insights","codex-capability-3-desc":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","codex-capability-3-desc--plural":"Real-time shipping updates and route predictions. Just ask \\"Where is order #1234?\\" and get an instant map link.","chatgpt-operation-step-2-title":"Enable Developer Mode","chatgpt-operation-step-2-title--plural":"Enable Developer Mode","codex-capability-1-title":"Product Search","codex-capability-1-title--plural":"Product Search","codex-operation-step-2-desc":"Clone the official CJ MCP server repository to your local machine.","codex-operation-step-2-desc--plural":"Clone the official CJ MCP server repository to your local machine.","codex-operation-step-6-alt":"Codex MCP panel listing CJMCP as Enabled among the configured MCP servers.","codex-operation-step-6-alt--plural":"Codex MCP panel listing CJMCP as Enabled among the configured MCP servers.","chatgpt-operation-step-4-label":"Add a new MCP server","chatgpt-operation-step-4-label--plural":"Add a new MCP server","chatgpt-operation-step-6-alt":"ChatGPT conversation where a natural language command triggers the CJ MCP server and returns structured product data.","chatgpt-operation-step-6-alt--plural":"ChatGPT conversation where a natural language command triggers the CJ MCP server and returns structured product data.","codex-faq-title":"Frequently Asked Questions","codex-faq-title--plural":"Frequently Asked Questions","chatgpt-operation-step-4-title":"Create New App","chatgpt-operation-step-4-title--plural":"Create New App","codex-operation-step-1-desc":"Make sure <strong>git</strong> and <strong>Node.js 20+</strong> are installed on your machine before configuring the MCP server.","codex-operation-step-1-desc--plural":"Make sure <strong>git</strong> and <strong>Node.js 20+</strong> are installed on your machine before configuring the MCP server.","codex-operation-step-4-label":"Add CJMCP to config.toml","codex-operation-step-4-label--plural":"Add CJMCP to config.toml","codex-hero-title-highlight":"Right from Your Codex Workflow","codex-hero-title-highlight--plural":"Right from Your Codex Workflow","chatgpt-operation-step-1-desc":"First, open your ChatGPT personal center and click the settings icon in the bottom-left corner. This is the starting point for configuring all advanced extensions and MCP servers.","chatgpt-operation-step-1-desc--plural":"First, open your ChatGPT personal center and click the settings icon in the bottom-left corner. This is the starting point for configuring all advanced extensions and MCP servers.","codex-capability-2-desc":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","codex-capability-2-desc--plural":"Check order status, update details, and sync transactions between your store and CJ without leaving the chat.","codex-operation-step-2-title":"Clone the MCP Repo","codex-operation-step-2-title--plural":"Clone the MCP Repo","codex-operation-step-5-title":"Restart & Run /mcp","codex-operation-step-5-title--plural":"Restart & Run /mcp","codex-operation-step-4-desc":"Add the <strong>CJMCP</strong> server block to <code>config.toml</code>, replacing <code>/PATH/TO/...</code> with your real node and repo paths.","codex-operation-step-4-desc--plural":"Add the <strong>CJMCP</strong> server block to <code>config.toml</code>, replacing <code>/PATH/TO/...</code> with your real node and repo paths.","chatgpt-operation-step-3-desc":"Open the \\"Connected Apps\\" or \\"MCP Servers\\" management list to view currently active external integrations. Here you can monitor the running status of your servers at any time.","chatgpt-operation-step-3-desc--plural":"Open the \\"Connected Apps\\" or \\"MCP Servers\\" management list to view currently active external integrations. Here you can monitor the running status of your servers at any time.","codex-capability-6-title":"Smart Recommendations","codex-capability-6-title--plural":"Smart Recommendations","codex-prompts-copied":"Copied!","codex-prompts-copied--plural":"Copied!","codex-hero-cta-secondary":"View Documentation","codex-hero-cta-secondary--plural":"View Documentation","codex-prompts-title":"Recommended Prompts","codex-prompts-title--plural":"Recommended Prompts","codex-capability-5-desc":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","codex-capability-5-desc--plural":"Ask business strategy questions like \\"What are the trending niches for Q4?\\" and get data-backed answers.","codex-prompts-copy":"Copy","codex-operation-step-5-desc":"Restart Codex, then type <code>/mcp</code> (Show MCP server status) in the prompt box to list your configured MCP servers.","codex-operation-step-5-desc--plural":"Restart Codex, then type <code>/mcp</code> (Show MCP server status) in the prompt box to list your configured MCP servers.","chatgpt-operation-step-1-label":"Open your ChatGPT settings","chatgpt-operation-step-1-label--plural":"Open your ChatGPT settings","codex-hero-cta-primary":"Start Using Now","codex-hero-cta-primary--
31657plural":"Start Using Now","codex-operation-step-5-label":"Show MCP server status","codex-operation-step-5-label--plural":"Show MCP server status","chatgpt-faq-2-answer":"We currently officially support ChatGPT, Claude, and any environment compatible with the Model Context Protocol (MCP) standard.","chatgpt-faq-2-answer--plural":"We currently officially support ChatGPT, Claude, and any environment compatible with the Model Context Protocol (MCP) standard.","chatgpt-faq-3-answer":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","chatgpt-faq-3-answer--plural":"Security is our top priority. The MCP server uses encrypted tokens for authentication, and we never store your customer data or store credentials on the AI\'s serversâonly the data required for the specific query is processed.","codex-operation-step-1-title":"Install Prerequisites","codex-operation-step-1-title--plural":"Install Prerequisites","chatgpt-faq-1-question":"Is the CJ MCP server free to use?","chatgpt-faq-1-question--plural":"Is the CJ MCP server free to use?","codex-capability-1-desc":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","codex-capability-1-desc--plural":"Instantly query millions of products from CJdropshipping\'s global catalog with natural language prompts.","codex-capability-4-desc":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","codex-capability-4-desc--plural":"Monitor stock levels across global warehouses and receive low-inventory alerts automatically through AI analysis.","chatgpt-cta-subtitle":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","chatgpt-cta-subtitle--plural":"Join thousands of smart dropshippers who are already scaling their stores with AI-driven operations.","chatgpt-operation-step-1-alt":"ChatGPT personal center with the settings icon highlighted in the bottom-left corner as the entry point for MCP configuration.","chatgpt-operation-step-1-alt--plural":"ChatGPT personal center with the settings icon highlighted in the bottom-left corner as the entry point for MCP configuration.","chatgpt-operation-step-2-label":"Turn on MCP developer mode","chatgpt-operation-step-2-label--plural":"Turn on MCP developer mode","codex-capabilities-title":"Intelligent Commerce ","codex-capabilities-title--plural":"Intelligent Commerce ","chatgpt-faq-title":"Frequently Asked Questions","chatgpt-faq-title--plural":"Frequently Asked Questions","chatgpt-cta-title":"Ready to Automate Your Business?","chatgpt-cta-title--plural":"Ready to Automate Your Business?","pod2-proc2-p":"Upload your logo, artwork, pattern, text, or personalized design requirements to create custom products for your audience.","pod2-proc2-p--plural":"Upload your logo, artwork, pattern, text, or personalized design requirements to create custom products for your audience.","pod2-aud5-p":"A strong fit for sellers who want to build a long-term personalized product brand with packaging, design, and fulfillment support.","pod2-aud5-p--plural":"A strong fit for sellers who want to build a long-term personalized product brand with packaging, design, and fulfillment support.","pod2-proc3-h3":"Connect Your Store","pod2-proc3-h3--plural":"Connect Your Store","pod2-aud6-h3":"Agencies and Teams","pod2-aud6-h3--plural":"Agencies and Teams","pod2-brand3-p":"Include personalized cards to build customer trust and repeat purchases.","pod2-brand3-p--plural":"Include personalized cards to build customer trust and repeat purchases.","pod2-test-sophia-role":"Illustration Brand Founder","pod2-test-sophia-role--plural":"Illustration Brand Founder","pod2-brand3-t":"Thank-You Cards","pod2-brand3-t--plural":"Thank-You Cards","pod2-proc-step":"Step","pod2-proc-step--plural":"Step","pod2-aud1-p":"Ideal for sellers who want to test product ideas with lower upfront costs and less inventory pressure.","pod2-aud1-p--plural":"Ideal for sellers who want to test product ideas with lower upfront costs and less inventory pressure.","pod2-test-ryan-text":"Their dedicated support team guided me through every step, from design upload to order tracking. Outstanding service!","pod2-test-ryan-text--plural":"Their dedicated support team guided me through every step, from design upload to order tracking. Outstanding service!","pod2-test-mia-role":"Fashion Dropshipper","pod2-test-mia-role--plural":"Fashion Dropshipper","pod2-proc-b2-t":"Automated Fulfillment","pod2-proc-b2-t--plural":"Automated Fulfillment","pod2-proc-b2-s":"Order processing, production, and tracking can be handled more efficiently.","pod2-proc-b2-s--plural":"Order processing, production, and tracking can be handled more efficiently.","pod2-test-lucas-role":"Global Ecommerce Seller","pod2-test-lucas-role--plural":"Global Ecommerce Seller","pod2-aud1-h3":"New Dropshipping Beginners","pod2-aud1-h3--plural":"New Dropshipping Beginners","pod2-srv4-p":"After orders are synced, {{name}} helps manage order processing, production, packaging, shipping, and tracking updates.","pod2-srv4-p--plural":"After orders are synced, {{name}} helps manage order processing, production, packaging, shipping, and tracking updates.","pod2-srv4-h3":"Automated Fulfillment","pod2-srv4-h3--plural":"Automated Fulfillment","pod2-aud2-p":"Perfect for store owners who want to add custom product lines, increase average order value, and create stronger brand differentiation.","pod2-aud2-p--
31657plural":"Perfect for store owners who want to add custom product lines, increase average order value, and create stronger brand differentiation.","pod2-proc1-p":"Select products that fit your store positioning, such as T-shirts, hoodies, mugs, phone cases, pet accessories, home decor, and more.","pod2-proc1-p--plural":"Select products that fit your store positioning, such as T-shirts, hoodies, mugs, phone cases, pet accessories, home decor, and more.","pod2-test-h2":"What Sellers Say About {{fullName}} POD","pod2-test-h2--plural":"What Sellers Say About {{fullName}} POD","pod2-brand6-t":"Branded Customer Experience","pod2-brand6-t--plural":"Branded Customer Experience","pod2-net-n4":"Tracking Updates","pod2-net-n4--plural":"Tracking Updates","pod2-proc5-p":"{{name}} produces the product based on the order requirements, then helps with quality checks, packaging, shipping, and tracking updates.","pod2-proc5-p--plural":"{{name}} produces the product based on the order requirements, then helps with quality checks, packaging, shipping, and tracking updates.","pod2-net-n3":"Fulfillment","pod2-aud6-p":"Useful for teams that need to test different custom products, client campaigns, ad creatives, and niche product angles quickly.","pod2-aud6-p--plural":"Useful for teams that need to test different custom products, client campaigns, ad creatives, and niche product angles quickly.","pod2-aud-desc":"{{name}} Print on Demand is built for sellers, creators, and brands that want to test custom products, build stronger customer experiences, and scale without heavy inventory pressure.","pod2-aud-desc--plural":"{{name}} Print on Demand is built for sellers, creators, and brands that want to test custom products, build stronger customer experiences, and scale without heavy inventory pressure.","pod2-aud4-h3":"Influencers and Creators","pod2-aud4-h3--plural":"Influencers and Creators","pod2-brand-desc":"A strong POD store is not only about selling custom products. It is also about creating a memorable customer experience. With {{fullName}}, sellers can explore custom packaging, branded inserts, and private label solutions to make their store look more professional and trustworthy.","pod2-brand-desc--plural":"A strong POD store is not only about selling custom products. It is also about creating a memorable customer experience. With {{fullName}}, sellers can explore custom packaging, branded inserts, and private label solutions to make their store look more professional and trustworthy.","pod2-net-n2":"Order Syncing","pod2-net-n2--plural":"Order Syncing","pod2-brand2-p":"Create a more polished unboxing experience with branded packaging options.","pod2-brand2-p--plural":"Create a more polished unboxing experience with branded packaging options.","pod2-net-n1":"Product Listing","pod2-net-n1--plural":"Product Listing","pod2-brand2-t":"Custom Packaging","pod2-brand6-p":"Turn a simple order into a professional brand interaction from product to delivery.","pod2-brand6-p--plural":"Turn a simple order into a professional brand interaction from product to delivery.","pod2-test-desc":"From smoother fulfillment to better branding and global delivery, sellers use {{fullName}} POD to turn creative ideas into scalable ecommerce businesses.","pod2-test-desc--plural":"From smoother fulfillment to better branding and global delivery, sellers use {{fullName}} POD to turn creative ideas into scalable ecommerce businesses.","pod2-brand-c1-t":"Custom Logo","pod2-brand-c1-t--plural":"Custom Logo","pod2-map-h2":"Print on Demand: Global Fulfillment = Limitless Target Markets","pod2-map-h2--plural":"Print on Demand: Global Fulfillment = Limitless Target Markets","pod2-brand-c1-s":"Brand recognition","pod2-brand-c1-s--plural":"Brand recognition","pod2-test-mia-text":"Zero inventory risk allowed me to experiment freely with new collections. Sales have never looked better.","pod2-test-mia-text--plural":"Zero inventory risk allowed me to experiment freely with new collections. Sales have never looked better.","pod2-test-emily-role":"Art Shop Owner","pod2-test-emily-role--plural":"Art Shop Owner","pod2-srv5-h3":"Global Shipping","pod2-srv5-h3--plural":"Global Shipping","pod2-proc4-h3":"Customer Places an Order","pod2-proc4-h3--plural":"Customer Places an Order","pod2-map-s3n":"1,300+","pod2-map-s3n--plural":"1,300+","pod2-aud-h2":"Who Is {{name}} Print on Demand Best For?","pod2-aud-h2--plural":"Who Is {{name}} Print on Demand Best For?","pod2-proc-h2":"How {{fullName}} Print on Demand Works","pod2-proc-h2--plural":"How {{fullName}} Print on Demand Works","pod2-brand-h2":"Build a Real Brand with Custom Packaging","pod2-brand-h2--plural":"Build a Real Brand with Custom Packaging","pod2-aud-feat-h3":"From Product Testing to Brand Scaling","pod2-aud-feat-h3--plural":"From Product Testing to Brand Scaling","pod2-proc-b1-s":"Products are made after customers place orders.","pod2-proc-b1-s--plural":"Products are made after customers place orders.","pod2-proc-b1-t":"No Inventory Required","pod2-proc-b1-t--plural":"No Inventory Required","pod2-srv5-p":"{{name}} supports global fulfillment, helping sellers serve customers across different c
31657ountries and regions.","pod2-srv5-p--plural":"{{name}} supports global fulfillment, helping sellers serve customers across different countries and regions.","pod2-proc1-h3":"Choose a POD Product","pod2-proc1-h3--plural":"Choose a POD Product","pod2-net-h2":"Connect Your Store and Automate POD Fulfillment","pod2-net-h2--plural":"Connect Your Store and Automate POD Fulfillment","pod2-map-s2n":"200+","pod2-map-s2n--plural":"200+","pod2-test-emily-text":"{{fullName}} POD transformed my small art shop. Orders flow smoothly and quality always wows my customers.","pod2-test-emily-text--plural":"{{fullName}} POD transformed my small art shop. Orders flow smoothly and quality always wows my customers.","pod2-aud3-p":"Suitable for testing short-video-driven products, interest-based niches, seasonal gifts, and fast-moving product ideas.","pod2-aud3-p--plural":"Suitable for testing short-video-driven products, interest-based niches, seasonal gifts, and fast-moving product ideas.","pod2-brand5-t":"Private Label Support","pod2-brand5-t--plural":"Private Label Support","pod2-proc4-p":"Once a customer places an order in your store, the order can be synced to {{name}} for the next production and fulfillment step.","pod2-proc4-p--plural":"Once a customer places an order in your store, the order can be synced to {{name}} for the next production and fulfillment step.","pod2-map-desc":"Reach more customers with {{fullName}}\'s global fulfillment support.","pod2-map-desc--plural":"Reach more customers with {{fullName}}\'s global fulfillment support.","pod2-brand1-p":"Add your logo to selected products, packaging, or brand materials.","pod2-brand1-p--plural":"Add your logo to selected products, packaging, or brand materials.","pod2-brand1-t":"Custom Logo","pod2-brand1-t--plural":"Custom Logo","pod2-brand5-p":"Explore private label options for sellers who want stronger brand ownership.","pod2-brand5-p--plural":"Explore private label options for sellers who want stronger brand ownership.","pod2-brand-c2-t":"Thank-You Cards","pod2-brand-c2-t--plural":"Thank-You Cards","pod2-brand-label":"Branding Support","pod2-brand-label--plural":"Branding Support","pod2-brand-c2-s":"Customer loyalty","pod2-brand-c2-s--plural":"Customer loyalty","pod2-aud2-h3":"Shopify Store Owners","pod2-aud2-h3--plural":"Shopify Store Owners","pod2-proc-label":"POD Workflow","pod2-proc-label--plural":"POD Workflow","pod2-map-s3l":"Unique products","pod2-map-s3l--plural":"Unique products","pod2-srv3-h3":"Quality Control","pod2-srv3-h3--plural":"Quality Control","pod2-map-s1l":"Total orders completed","pod2-map-s1l--plural":"Total orders completed","pod2-aud-feat-span":"{{name}} POD Fit","pod2-aud-feat-span--plural":"{{name}} POD Fit","pod2-proc2-h3":"Upload Your Design","pod2-proc2-h3--plural":"Upload Your Design","pod2-map-s1n":"100M+","pod2-map-s1n--plural":"100M+","pod2-aud5-h3":"DTC Brand Builders","pod2-aud5-h3--plural":"DTC Brand Builders","pod2-brand-c3-t":"Private Label","pod2-brand-c3-t--plural":"Private Label","pod2-test-daniel-text":"Their seamless integration saved me hours every week. I can\'t imagine running my store without {{fullName}}.","pod2-test-daniel-text--plural":"Their seamless integration saved me hours every week. I can\'t imagine running my store without {{fullName}}.","pod2-net-desc":"{{fullName}} integrates with major ecommerce platforms, helping sellers automate product listing, order syncing, fulfillment, and tracking updates.","pod2-net-desc--plural":"{{fullName}} integrates with major ecommerce platforms, helping sellers automate product listing, order syncing, fulfillment, and tracking updates.","pod2-aud-label":"Best For","pod2-aud-label--plural":"Best For","pod2-srv6-p":"Combine POD products with custom packaging, thank-you cards, labels, and brand inserts to create a more professional customer experience.","pod2-srv6-p--plural":"Combine POD products with custom packaging, thank-you cards, labels, and brand inserts to create a more professional customer experience.","pod2-map-s2l":"Countries and territories","pod2-map-s2l--plural":"Countries and territories","pod2-test-sophia-text":"The print accuracy and vibrant colors consistently exceed expectations. My designs truly come to life!","pod2-test-sophia-text--plural":"The print accuracy and vibrant colors consistently exceed expectations. My designs truly come to life!","pod2-proc5-h3":"{{name}} Produces and Ships","pod2-proc5-h3--plural":"{{name}} Produces and Ships","pod2-brand-ov-t":"Branded Packaging","pod2-brand-ov-t--plural":"Branded Packaging","pod2-aud4-p":"Great for launching fan merchandise, personal brand products, creator collections, and community-based items.","pod2-aud4-p--plural":"Great for launching fan merchandise, personal brand products, creator collections, and community-based items.","pod2-test-ryan-role":"Store Operations Manager","pod2-test-ryan-role--plural":"Store Operations Manager","pod2-brand-ov-s":"Make your POD orders look more professional from the first impression.","pod2-brand-ov-s--plural":"Make your POD orders look more professional from the first impression.","pod2-proc3-p":"Connect your Shopify, WooCommerce, TikTok Shop, or other supported ecommerce store to {{name}} for smoother order syncing.","pod2-proc3-p--plural":"Connect your Shopify, WooCommerce, TikTok Shop, or other supported ecommerce store to {{name}} for smoother order syncing.","pod2-brand4-p":"Use small branded details to make every package feel more memorable.","pod2-brand4-p--
31657plural":"Use small branded details to make every package feel more memorable.","pod2-proc-desc":"From choosing a product to production and shipping, {{fullName}} helps you simplify the full Print on Demand workflow.","pod2-proc-desc--plural":"From choosing a product to production and shipping, {{fullName}} helps you simplify the full Print on Demand workflow.","pod2-brand4-t":"Stickers & Inserts","pod2-brand4-t--plural":"Stickers & Inserts","pod2-brand-c3-s":"Professional identity","pod2-brand-c3-s--plural":"Professional identity","pod2-aud-feat-p":"Whether you are starting small or building a long-term custom product brand, {{name}} helps connect product sourcing, production, fulfillment, shipping, and branding support in one workflow.","pod2-aud-feat-p--plural":"Whether you are starting small or building a long-term custom product brand, {{name}} helps connect product sourcing, production, fulfillment, shipping, and branding support in one workflow.","pod2-aud3-h3":"TikTok Shop Sellers","pod2-aud3-h3--plural":"TikTok Shop Sellers","pod2-test-label":"Seller Reviews","pod2-test-label--plural":"Seller Reviews","pod2-test-lucas-text":"Global fulfillment is a game-changer. My European and Australian customers rave about the fast delivery.","pod2-test-lucas-text--plural":"Global fulfillment is a game-changer. My European and Australian customers rave about the fast delivery.","pod2-brand-c4-t":"Inserts","pod2-brand-c4-t--plural":"Inserts","pod2-brand-c4-s":"Better unboxing","pod2-brand-c4-s--plural":"Better unboxing","pod2-proc-b3-s":"Combine POD products with packaging, labels, and custom branding options.","pod2-proc-b3-s--plural":"Combine POD products with packaging, labels, and custom branding options.","pod2-proc-b3-t":"Brand-Friendly Workflow","pod2-proc-b3-t--plural":"Brand-Friendly Workflow","pod2-srv3-p":"{{name}} can help inspect products before shipment to reduce quality issues and improve the customer experience.","pod2-srv3-p--plural":"{{name}} can help inspect products before shipment to reduce quality issues and improve the customer experience.","pod2-srv6-h3":"Branding Support","pod2-srv6-h3--plural":"Branding Support","pod2-test-daniel-role":"Shopify Store Owner","pod2-test-daniel-role--plural":"Shopify Store Owner","pod2-cat-label":"POD Product Categories","pod2-cat-label--plural":"POD Product Categories","pod2-ben3-em":"Less Competition","pod2-ben3-em--plural":"Less Competition","pod2-diff3-h3":"More Diverse Product Choices","pod2-diff3-h3--plural":"More Diverse Product Choices","pod2-foot2s":"After order","pod2-foot2s--plural":"After order","pod2-foot2t":"Produce","pod2-foot2t--plural":"Produce","pod2-slide4-m2t":"Personalized","pod2-slide4-m2t--plural":"Personalized","pod2-intro-tab2-title":"Unboxing 8 Hot Selling POD Products / How to Make POD Products on {{name}} Dropshipping","pod2-intro-tab2-title--plural":"Unboxing 8 Hot Selling POD Products / How to Make POD Products on {{name}} Dropshipping","pod2-slide4-m2s":"Made for gifting","pod2-slide4-m2s--plural":"Made for gifting","pod2-srv-desc":"{{fullName}} helps sellers turn custom ideas into sellable products with a complete Print on Demand workflow, covering product sourcing, custom production, quality control, fulfillment, global shipping, and branding support.","pod2-srv-desc--plural":"{{fullName}} helps sellers turn custom ideas into sellable products with a complete Print on Demand workflow, covering product sourcing, custom production, quality control, fulfillment, global shipping, and branding support.","pod2-srv1-h3":"Product Sourcing","pod2-diff-label":"Why {{fullName}}","pod2-diff-label--plural":"Why {{fullName}}","pod2-ben5-h3":"Flexible Product Testing","pod2-ben5-h3--plural":"Flexible Product Testing","pod2-diff5-p":"In addition to platform tools and product resources, {{fullName}} can provide more direct support for sellers who need a smoother POD experience. This makes it easier to solve issues faster, communicate requirements more clearly, and move from product ideas to actual fulfillment with more confidence.","pod2-diff5-p--plural":"In addition to platform tools and product resources, {{fullName}} can provide more direct support for sellers who need a smoother POD experience. This makes it easier to solve issues faster, communicate requirements more clearly, and move from product ideas to actual fulfillment with more confidence.","pod2-srv-float3":"No Upfront Costs","pod2-srv-float3--plural":"No Upfront Costs","pod2-intro-label":"Print on Demand Basics","pod2-intro-label--plural":"Print on Demand Basics","pod2-diff1-p":"{{fullName}} helps sellers improve efficiency across the entire POD workflow. From product selection and design upload to order syncing, production, packing, shipping, and tracking updates, the process is more connected and easier to manage.","pod2-diff1-p--plural":"{{fullName}} helps sellers improve efficiency across the entire POD workflow. From product selection and design upload to order syncing, production, packing, shipping, and tracking updates, the process is more connected and easier to manage.","pod2-ben3-p":"Compared with generic trending products, POD products are harder to compare directly. Unique designs help your store stand out from similar sellers.","pod2-ben3-p--plural":"Compared with generic trending products, POD products are harder to compare directly. Unique designs help your store stand out from similar sellers.","pod2-foot3t":"Fulfill","pod2-foot3t--plural":"Fulfill","pod2-ben-desc":"Print on Demand helps ecommerce sellers reduce inventory pressure, test creative ideas faster, and build more unique brands through personalized products.","pod2-ben-desc--plural":"Print on Demand helps ecommerce sellers reduce inventory pressure, test creative ideas faster, and build more unique brands through personalized products.","pod2-foot3s":"{{name}}
31657 handles shipping","pod2-foot3s--plural":"{{name}} handles shipping","pod2-intro-p2":"For ecommerce sellers, POD is especially useful for building niche brands, testing creative ideas, and selling personalized products with higher perceived value.","pod2-intro-p2--plural":"For ecommerce sellers, POD is especially useful for building niche brands, testing creative ideas, and selling personalized products with higher perceived value.","pod2-srv-float1":"Global Print Network","pod2-srv-float1--plural":"Global Print Network","pod2-srv-float2":"Fast Shipping Times","pod2-srv-float2--plural":"Fast Shipping Times","pod2-intro-p1":"Print on Demand is a flexible business model that allows sellers to offer customized products without holding inventory. Products are produced only after customers place orders, which helps reduce upfront costs and inventory risk.","pod2-intro-p1--plural":"Print on Demand is a flexible business model that allows sellers to offer customized products without holding inventory. Products are produced only after customers place orders, which helps reduce upfront costs and inventory risk.","pod2-thumb1":"Apparel","pod2-thumb1--plural":"Apparel","pod2-thumb2":"Mugs","pod2-thumb2--plural":"Mugs","pod2-intro-h2":"What Is Print on Demand?","pod2-intro-h2--plural":"What Is Print on Demand?","pod2-intro-h3":"Your Idea, Your Brand, Our Fulfillment","pod2-intro-h3--plural":"Your Idea, Your Brand, Our Fulfillment","pod2-intro-tab1-note":"Watch how sellers can use {{fullName}}\'s Print on Demand service to choose products, add designs, and start selling custom items more efficiently.","pod2-intro-tab1-note--plural":"Watch how sellers can use {{fullName}}\'s Print on Demand service to choose products, add designs, and start selling custom items more efficiently.","pod2-cat-desc":"Browse POD-ready product ideas across popular ecommerce categories. Choose a niche, test designs, and build custom product collections with {{fullName}}.","pod2-cat-desc--plural":"Browse POD-ready product ideas across popular ecommerce categories. Choose a niche, test designs, and build custom product collections with {{fullName}}.","pod2-thumb5":"Decor","pod2-thumb5--plural":"Decor","pod2-thumb3":"Cases","pod2-thumb3--plural":"Cases","pod2-ben1-em":"Lower Risk","pod2-ben1-em--plural":"Lower Risk","pod2-thumb4":"Jewelry","pod2-thumb4--plural":"Jewelry","pod2-ben6-h3":"Easier Seasonal Campaigns","pod2-ben6-h3--plural":"Easier Seasonal Campaigns","pod2-diff4-li3":"Combine POD flexibility with broader fulfillment strength","pod2-diff4-li3--plural":"Combine POD flexibility with broader fulfillment strength","pod2-diff-h2":"What Makes {{fullName}} Different?","pod2-diff-h2--plural":"What Makes {{fullName}} Different?","pod2-diff4-li2":"Improve delivery experience for growing stores","pod2-diff4-li2--plural":"Improve delivery experience for growing stores","pod2-diff4-li1":"Support sellers targeting international markets","pod2-diff4-li1--plural":"Support sellers targeting international markets","pod2-diff5-h3":"One-on-One Dedicated Service","pod2-diff5-h3--plural":"One-on-One Dedicated Service","pod2-intro-note-t":"Why sellers like POD","pod2-intro-note-t--plural":"Why sellers like POD","pod2-intro-note-s":"It is a low-risk way to test product ideas, launch custom collections, and build a more branded ecommerce business without the pressure of bulk inventory.","pod2-intro-note-s--plural":"It is a low-risk way to test product ideas, launch custom collections, and build a more branded ecommerce business without the pressure of bulk inventory.","pod2-ben-h2":"Why Print on Demand Is a Smart Choice for Ecommerce Sellers","pod2-ben-h2--plural":"Why Print on Demand Is a Smart Choice for Ecommerce Sellers","pod2-slide5-span":"Lifestyle Collections","pod2-slide5-span--plural":"Lifestyle Collections","pod2-srv-h2":"{{fullName}} Print on Demand Services","pod2-srv-h2--plural":"{{fullName}} Print on Demand Services","pod2-diff2-li1":"Support for custom product sourcing requests","pod2-diff2-li1--plural":"Support for custom product sourcing requests","pod2-ben3-h3":"Less Price Competition","pod2-ben3-h3--plural":"Less Price Competition","pod2-ben-label":"POD Advantages","pod2-ben-label--plural":"POD Advantages","pod2-ben2-p":"Personalized products often carry stronger emotional value. Customers are more willing to pay for custom names, designs, patterns, and meaningful gifts.","pod2-ben2-p--plural":"Personalized products often carry stronger emotional value. Customers are more willing to pay for custom names, designs, patterns, and meaningful gifts.","pod2-diff2-li2":"Better flexibility for production coordination","pod2-diff2-li2--plural":"Better flexibility for production coordination","pod2-diff2-p":"{{fullName}} is not limited to a simple design-upload model. With broader sourcing capability and factory-related supply chain resources, sellers can explore more flexible product solutions, customization options, and production support.","pod2-diff2-p--plural":"{{fullName}} is not limited to a simple design-upload model. With broader sourcing capability and factory-related supply chain resources, sellers can explore more flexible product solutions, customization options, and production support.","pod2-diff2-li3":"Suitable for sellers who want more than standard POD items","pod2-diff2-li3--plural":"Suitable for sellers who want more than standard POD items","pod2-ben6-p":"POD is perfect for holidays, events, and limited-time campaigns. Sellers can launch themed products for Valentine\'s Day, Mother\'s Day, Halloween, Christmas, and more.","pod2-ben6-p--plural":"POD is perfect for holidays, events, and limited-time campaigns. Sellers can launch themed products for Valentine\'s Day, Mother\'s Day, Halloween, Christmas, and more.","pod2-ben6-em":"Seasonal Campaigns","pod2-ben6-em--plural":"Seasonal Campaigns","pod2-intro-tab2-tag":"Product Ideas","pod2-intro-tab2-tag--plural":"Product Ideas","pod2-srv1-p":"{{name}} can help sellers find products suitable for customization, including apparel, accessories, home decor, pet products, gifts, and more.","pod2-srv1-p--plural":"{{name}} can help sellers find products suitable for customization, including apparel, accessories, home decor, pet products, gifts, and more.","pod2-srv2-h3":"Custom Production","pod2-srv2-h3--plural":"Custom Production","pod2-ben4-h3":"Better for Brand Building","pod2-ben4-h3--plural":"Better for Brand Building","pod2-diff-desc":"{{fullName}} offers more than a basic Print on Demand solution. From operational efficiency and factory-backed supply advantages to diverse product options, global fulfillment support, and dedicated one-on-one service, {{name}} helps sellers build a stronger and more scalable POD business.","pod2-diff-desc--plural":"{{fullName}} offers more than a basic Print on Demand solution. From operational efficiency and factory-backed supply advantages to diverse product options, global fulfillment support, and dedicated one-on-one service, {{name}} helps sellers build a stronger and more scalable POD business.","pod2-slide5-desc":"Build collections around family memories, pets, quotes, lifestyle themes, room styles, and seasonal campaigns.","pod2-slide5-desc--plural":"Build collections around family memories, pets, quotes, lifestyle themes, room styles, and seasonal campaigns.","pod2-ben1-h3":"Lower Startup Risk","pod2-ben1-h3--plural":"Lower Startup Risk","pod2-slide5-title":"Wall Art, Pillows & Home Decor","pod2-slide5-title--plural":"Wall Art, Pillows & Home Decor","pod2-intro-step1":"Choose Products","pod2-intro-step1--plural":"Choose Products","pod2-diff3-p":"{{name}} supports a wide range of customizable products for different niches and selling strategies. Sellers can test more product ideas, reach more audiences, and avoid being restricted to a narrow POD catalog.","pod2-diff3-p--plural":"{{name}} supports a wide range of customizable products for different niches and selling strategies. Sellers can test more product ideas, reach more audiences, and avoid being restricted to a narrow POD catalog.","pod2-diff2-h3":"Factory Advantages and Stronger Supply Support","pod2-diff2-h3--plural":"Factory Advantages and Stronger Supply Support","pod2-intro-step2":"Upload De
31657sign","pod2-intro-step2--plural":"Upload Design","pod2-ben1-p":"You do not need to buy bulk inventory in advance. POD makes it easier for beginners to test products and markets without heavy stock pressure.","pod2-ben1-p--plural":"You do not need to buy bulk inventory in advance. POD makes it easier for beginners to test products and markets without heavy stock pressure.","pod2-intro-step3":"Customer Orders","pod2-intro-step3--plural":"Customer Orders","pod2-srv-label":"{{name}} POD Capabilities","pod2-srv-label--plural":"{{name}} POD Capabilities","pod2-intro-step4":"{{name}} Produces & Ships","pod2-intro-step4--plural":"{{name}} Produces & Ships","pod2-ben5-p":"Sellers can quickly test different designs, styles, niches, and seasonal ideas without purchasing large quantities of inventory upfront.","pod2-ben5-p--plural":"Sellers can quickly test different designs, styles, niches, and seasonal ideas without purchasing large quantities of inventory upfront.","pod2-ben4-em":"Brand Building","pod2-ben4-em--plural":"Brand Building","pod2-diff5-li2":"Better assistance for customization and sourcing needs","pod2-diff5-li2--plural":"Better assistance for customization and sourcing needs","pod2-diff5-li1":"More direct communication for product and order support","pod2-diff5-li1--plural":"More direct communication for product and order support","pod2-diff5-li3":"Helpful for sellers who want more guidance while scaling","pod2-diff5-li3--plural":"Helpful for sellers who want more guidance while scaling","pod2-intro-tab1-title":"How to Use {{fullName}}\'s Print on Demand Service","pod2-intro-tab1-title--plural":"How to Use {{fullName}}\'s Print on Demand Service","pod2-srv2-p":"Support custom production based on your designs, patterns, logos, text, colors, and personalized product requirements.","pod2-srv2-p--plural":"Support custom production based on your designs, patterns, logos, text, colors, and personalized product requirements.","pod2-ben2-h3":"Higher Profit Potential","pod2-ben2-h3--plural":"Higher Profit Potential","pod2-slide5-m1s":"Strong visual appeal","pod2-slide5-m1s--plural":"Strong visual appeal","pod2-slide5-m1t":"Lifestyle","pod2-slide5-m1t--plural":"Lifestyle","pod2-diff1-h3":"Higher Efficiency for Daily Operations","pod2-diff1-h3--plural":"Higher Efficiency for Daily Operations","pod2-ben5-em":"Flexible Testing","pod2-ben5-em--plural":"Flexible Testing","pod2-slide5-tag":"Home Decor","pod2-slide5-tag--plural":"Home Decor","pod2-diff3-li2":"Useful for niche testing and seasonal campaigns","pod2-diff3-li2--plural":"Useful for niche testing and seasonal campaigns","pod2-diff3-li1":"Apparel, accessories, gifts, pet items, jewelry, and home decor","pod2-diff3-li1--plural":"Apparel, accessories, gifts, pet items, jewelry, and home decor","pod2-intro-tab2-note":"Explore hot-selling POD product ideas and see how POD products can be made on {{name}} Dropshipping, from creative concept to finished product.","pod2-intro-tab2-note--plural":"Explore hot-selling POD product ideas and see how POD products can be made on {{name}} Dropshipping, from creative concept to finished product.","pod2-diff3-li3":"Better flexibility for expanding product collections","pod2-diff3-li3--plural":"Better flexibility for expanding product collections","pod2-slide5-m2t":"Seasonal","pod2-slide5-m2t--plural":"Seasonal","pod2-cat-h2":"Explore Custom Products You Can Sell with {{name}} Print on Demand","pod2-cat-h2--plural":"Explore Custom Products You Can Sell with {{name}} Print on Demand","pod2-ben2-em":"Profit Potential","pod2-ben2-em--plural":"Profit Potential","pod2-slide5-m2s":"Campaign-ready","pod2-slide5-m2s--plural":"Campaign-ready","pod2-diff4-h3":"Global Warehousing and Fulfillment Support","pod2-diff4-h3--plural":"Global Warehousing and Fulfillment Support","pod2-diff4-p":"For products with stable sales, {{fullName}} can support broader fulfillment strategies through its warehousing and global shipping capabilities. This helps sellers improve delivery efficiency and serve more markets with a better customer experience.","pod2-diff4-p--plural":"For products with stable sales, {{fullName}} can support broader fulfillment strategies through its warehousing and global shipping capabilities. This helps sellers improve delivery efficie
31657ncy and serve more markets with a better customer experience.","pod2-intro-tab1-tag":"Tutorial","pod2-ben4-p":"Custom products are ideal for niche brands built around pet owners, couples, family memories, holiday gifts, hobbies, and lifestyle communities.","pod2-ben4-p--plural":"Custom products are ideal for niche brands built around pet owners, couples, family memories, holiday gifts, hobbies, and lifestyle communities.","pod2-diff1-li3":"Spend more time on marketing and store growth","pod2-diff1-li3--plural":"Spend more time on marketing and store growth","pod2-foot1s":"Upload artwork","pod2-foot1s--plural":"Upload artwork","pod2-foot1t":"Design","pod2-diff1-li1":"Reduce manual order handling","pod2-diff1-li1--plural":"Reduce manual order handling","pod2-diff1-li2":"Improve workflow speed from store to fulfillment","pod2-diff1-li2--plural":"Improve workflow speed from store to fulfillment","ship-from-total-shipping-cost":"Total Shipping Cost","advertisingservice-card-google-description-5-title":"Avoid Association Risks:","advertisingservice-card-google-description-5-title--plural":"Avoid Association Risks:","advertisingservice-card-google-description-5-text":"Each account operates independently, effectively preventing bans due to account associations.","advertisingservice-card-google-description-5-text--plural":"Eac
31657h account operates independently, effectively preventing bans due to account associations.","partnershiphome-hero-ring-marketing":"Marketing","partnershiphome-hero-ring-erp":"ERP","partnershiphome-hero-ring-erp--plural":"ERP","partnershiphome-hero-ring-marketplace":"Marketplace","partnershiphome-hero-ring-marketplace--plural":"Marketplace","partnershiphome-hero-explore":"Join {{fullName}}","partnershiphome-hero-explore--plural":"Join {{fullName}}","partnershiphome-directory-reset-all":"Reset all filters","partnershiphome-directory-reset-all--plural":"Reset all filters","partnershiphome-directory-title":"Build a stronger ecommerce stack","partnershiphome-directory-title--plural":"Build a stronger ecommerce stack","partnershiphome-hero-ring-payment":"Payments","partnershiphome-directory-kicker":"Partner Directory","partnershiphome-directory-kicker--plural":"Partner Directory","partnershiphome-hero-label":"CJ Partner Network","partnershiphome-hero-label--plural":"CJ Partner Network","partnershiphome-hero-become":"Become a Partner","partnershiphome-hero-become--plural":"Become a Partner","partnershiphome-hero-ring-logistics":"Logistics","partnershiphome-hero-ring-logistics--plural":"Logistics","partnershiphome-hero-title":"The right partners for","partnershiphome-hero-title--plural":"The right partners for","partnershiphome-directory-desc":"Search the CJ partner ecosystem by business category to find solutions that fit your current growth stage.","partnershiphome-directory-desc--plural":"Search the CJ partner ecosystem by business category to find solutions that fit your current growth stage.","partnershiphome-hero-ring-technology":"Technology","partnershiphome-hero-ring-technology--plural":"Technology","partnershiphome-directory-category":"Partner category","partnershiphome-directory-category--plural":"Partner category","partnershiphome-directory-filter-toggle":"Filter partners","partnershiphome-directory-filter-toggle--plural":"Filter partners","partnershiphome-hero-desc":"Explore ecommerce platforms, marketing solutions, payment providers, logistics services and technology tools that can support your business from launch to global expansion.","partnershiphome-hero-desc--plural":"Explore ecommerce platforms, marketing solutions, payment providers, logistics services and technology tools that can support your business from launch to global expansion.","partnershiphome-directory-all":"All","partnershiphome-hero-title-highlight":"every stage of ecommerce growth.","partnershiphome-hero-title-highlight--plural":"every stage of ecommerce growth.","advertisingservice-multiplatform-card-1-alt":"Meta Logo","advertisingservice-multiplatform-card-1-alt--plural":"Meta Logo","advertisingservice-hero-cta-get-started":"Get Started","advertisingservice-multiplatform-description":"Launch, test, and scale your campaigns across Meta, Google, TikTok, Bing, Taboola, and more with trusted agency ad account solutions.","advertisingservice-multiplatform-description--plural":"Launch, test, and scale your campaigns across Meta, Google, TikTok, Bing, Taboola, and more with trusted agency ad account solutions.","advertisingservice-hero-feature-3-title":"Fast Human Support","advertisingservice-hero-feature-3-title--plural":"Fast Human Support","advertisingservice-multiplatform-title":"Multi-Platform Ad Accounts","advertisingservice-multiplatform-title--plural":"Multi-Platform Ad Accounts","advertisingservice-workorder-suggestion":"You may submit a request for advertising, after which our exclusive advertising consultant will contact you.","advertisingservice-workorder-suggestion--plural":"You may submit a request for advertising, after which our exclusive advertising consultant will contact you.","advertisingservice-hero-title-accent":"Limitless Advertising","advertisingservice-hero-title-accent--plural":"Limitless Advertising","advertisingservice-hero-description":"We provide premium agency ad accounts for Facebook, Google, TikTok, and Snapchat, engineered for stability and performance at scale.","advertisingservice-hero-description--plural":"We provide premium agency ad accounts for Facebook, Google, TikTok, and Snapchat, engineered for stability and performance at scale.","advertisingservice-hero-contact-email":"Email","advertisingservice-multiplatform-card-1-desc":"Run high-performing ads and scale your dropshipping store with trusted, whitelisted Meta accounts.","advertisingservice-multiplatform-card-1-desc--plural":"Run high-performing ads and scale your dropshipping store with trusted, whitelisted Meta accounts.","advertisingservice-multiplatform-eyebrow":"Platform-ready accounts at scale","advertisingservice-multiplatform-eyebrow--plural":"Platform-ready accounts at scale","advertisingservice-hero-feature-3-desc":"When account issues happen mid-campaign, you get direct human supp
31657ort to help follow up quickly and keep the process moving.","advertisingservice-hero-feature-3-desc--plural":"When account issues happen mid-campaign, you get direct human support to help follow up quickly and keep the process moving.","advertisingservice-hero-contact-whatsapp":"WhatsApp","advertisingservice-multiplatform-card-1-title":"Meta Agency Ad Accounts","advertisingservice-multiplatform-card-1-title--plural":"Meta Agency Ad Accounts","advertisingservice-marquee-logo-applovin":"AppLovin","advertisingservice-marquee-logo-applovin--plural":"AppLovin","advertisingservice-multiplatform-title-accent":"Built for Scaling","advertisingservice-multiplatform-title-accent--plural":"Built for Scaling","advertisingservice-hero-feature-4-title":"Ads Approved in Seconds","advertisingservice-hero-feature-4-title--plural":"Ads Approved in Seconds","advertisingservice-marquee-logo-google":"Google","advertisingservice-workorder-submit":"Submit","advertisingservice-marquee-logo-bing":"Bing","advertisingservice-marquee-logo-bing--plural":"Bing","advertisingservice-hero-title":"Unlock","advertisingservice-hero-feature-1-desc":"E-commerce, supplements, finance, coaching. We know what to do to keep your campaigns compliant and live.","advertisingservice-hero-feature-1-desc--plural":"E-commerce, supplements, finance, coaching. We know what to do to keep your campaigns compliant and live.","advertisingservice-marquee-logo-tiktok":"TikTok","advertisingservice-marquee-logo-snapchat":"Snapchat","advertisingservice-marquee-logo-snapchat--plural":"Snapchat","advertisingservice-hero-panel-tag":"Agency Support","advertisingservice-hero-panel-tag--plural":"Agency Support","advertisingservice-hero-feature-2-desc":"From $1K to $100K, your account grows with you, no ceilings, no friction.","advertisingservice-hero-feature-2-desc--plural":"From $1K to $100K, your account grows with you, no ceilings, no friction.","advertisingservice-hero-note":"Account availability and approval remain subject to platform policies and advertiser eligibility.","advertisingservice-hero-note--plural":"Account availability and approval remain subject to platform policies and advertiser eligibility.","advertisingservice-marquee-logo-meta":"Meta","advertisingservice-marquee-logo-meta--plural":"Meta","advertisingservice-hero-feature-2-title":"Scale Without Spend Limits","advertisingservice-hero-feature-2-title--plural":"Scale Without Spend Limits","advertisingservice-workorder-message-placeholder":"Please enter such information as product weight and destination country so that we can solve your doubts and offer you personalized shipping solutions as soon as possible.","advertisingservice-workorder-message-placeholder--plural":"Please enter such information as product weight and destination country so that we can solve your doubts and offer you personalized shipping solutions as soon as possible.","advertisingservice-hero-title-tail":"with Whitelisted Agency Ad Accounts","advertisingservice-hero-title-tail--plural":"with Whitelisted Agency Ad Accounts","advertisingservice-marquee-logo-outbrain":"Outbrain","advertisingservice-marquee-logo-outbrain--plural":"Outbrain","advertisingservice-hero-feature-4-desc":"Our agency accounts carry the trust Meta responds to. Your campaigns go live while others are still waiting.","advertisingservice-hero-feature-4-desc--plural":"Our agency accounts carry the trust Meta responds to. Your campaigns go live while others are still waiting.","advertisingservice-marquee-label":"Supported Platforms","advertisingservice-marquee-label--plural":"Supported Platforms","advertisingservice-hero-panel-title":"Why our clients choose CJ","advertisingservice-hero-panel-title--plural":"Why our clients choose CJ","advertisingservice-marquee-logo-taboola":"Taboola","advertisingservice-marquee-logo-taboola--plural":"Taboola","advertisingservice-hero-feature-1-title":"Run Ads For All Verticals","advertisingservice-hero-feature-1-title--plural":"Run Ads For All Verticals","partnershiphome-directory-empty-reset":"Reset filters","partnershiphome-directory-empty-reset--plural":"Reset filters","partnershiphome-directory-no-partners":"No partners found","partnershiphome-directory-no-partners--plural":"No partners found","partnershiphome-brand-badge-text":"For approved partners","partnershiphome-brand-badge-text--plural":"For approved partners","partnershiphome-directory-next-aria":"Next page","partnershiphome-directory-next-aria--plural":"Next page","partnershiphome-directory-result-meta-single":"Showing {{start}}â{{end}} of {{total}} partner","partnershiphome-directory-result-meta-single--plural":"Showing {{start}}â{{end}} of {{total}} partner","partnershiphome-directory-sort-featured":"Featured first","partnershiphome-directory-sort-featured--plural":"Featured first","partnershiphome-brand-icon-text":"For digital placements","partnershiphome-brand-icon-text--plural":"For digital placements","partnershiphome-directory-next":"Next","partnershiphome-directory-clear-search":"Clear partner search","partnershiphome-directory-clear-search--plural":"Clear partner search","partnershiphome-directory-p
31657ages-aria":"Partner directory pages","partnershiphome-directory-pages-aria--plural":"Partner directory pages","partnershiphome-directory-card-visit":"Visit partner","partnershiphome-directory-card-visit--plural":"Visit partner","partnershiphome-cta-eyebrow":"{{fullName}} Partner Program","partnershiphome-cta-eyebrow--plural":"{{fullName}} Partner Program","partnershiphome-cta-desc":"Partner with {{fullName}} to connect your products, services, or technology with ecommerce businesses around the world.","partnershiphome-cta-desc--plural":"Partner with {{fullName}} to connect your products, services, or technology with ecommerce businesses around the world.","partnershiphome-directory-sort":"Sort partners","partnershiphome-directory-sort--plural":"Sort partners","partnershiphome-directory-result-meta":"Showing {{start}}â{{end}} of {{total}} partners","partnershiphome-directory-result-meta--plural":"Showing {{start}}â{{end}} of {{total}} partners","partnershiphome-brand-primary-title":"Primary logo","partnershiphome-brand-primary-title--plural":"Primary logo","partnershiphome-brand-desc":"Download approved {{fullName}} logos, icons and partner assets.","partnershiphome-brand-desc--plural":"Download approved {{fullName}} logos, icons and partner assets.","partnershiphome-directory-page-aria":"Go to page {{page}}","partnershiphome-directory-page-aria--plural":"Go to page {{page}}","partnershiphome-brand-format":"SVG · PNG","partnershiphome-brand-format--plural":"SVG · PNG","partnershiphome-directory-prev-aria":"Previous page","partnershiphome-directory-prev-aria--plural":"Previous page","partnershiphome-brand-download":"Download","partnershiphome-brand-badge-title":"Partner badge","partnershiphome-brand-badge-title--plural":"Partner badge","partnershiphome-brand-light-title":"Light logo","partnershiphome-brand-light-title--plural":"Light logo","partnershiphome-directory-chip-search":"Search: {{value}}","partnershiphome-directory-chip-search--plural":"Search: {{value}}","partnershiphome-cta-title":"Become a {{fullName}} Partner today","partnershiphome-cta-title--plural":"Become a {{fullName}} Partner today","partnershiphome-brand-label":"CJ Brand Resources","partnershiphome-brand-label--plural":"CJ Brand Resources","partnershiphome-directory-search-placeholder":"Search partners","partnershiphome-directory-search-placeholder--plural":"Search partners","partnershiphome-directory-chip-remove":"Remove {{value}} filter","partnershiphome-directory-chip-remove--plural":"Remove {{value}} filter","partnershiphome-directory-sort-az":"Name AâZ","partnershiphome-directory-sort-az--plural":"Name AâZ","partnershiphome-directory-chip-category":"Category: {{value}}","partnershiphome-directory-chip-category--plural":"Category: {{value}}","partnershiphome-brand-light-text":"For dark backgrounds","partnershiphome-brand-light-text--plural":"For dark backgrounds","partnershiphome-brand-title":"Official brand assets","partnershiphome-brand-title--plural":"Official brand assets","partnershiphome-cta-apply":"Apply to Become a Partner","partnershiphome-cta-apply--plural":"Apply to Become a Partner","partnershiphome-brand-primary-text":"For light backgrounds","partnershiphome-brand-primary-text--plural":"For light backgrounds","partnershiphome-directory-empty-desc":"Try removing one or more filters or searching with a broader keyword.","partnershiphome-directory-empty-desc--plural":"Try removing one or more filters or searching with a broader keyword.","partnershiphome-brand-icon-title":"Brand icon","partnershiphome-brand-icon-title--plural":"Brand icon","partnershiphome-directory-empty-title":"No matching partners","partnershiphome-directory-empty-title--plural":"No matching partners","partnershiphome-directory-prev":"Previous","partnershiphome-directory-prev--plural":"Previous","partnershiphome-brand-download-aria":"Download {{fullName}} {{asset}}","partnershiphome-brand-download-aria--plural":"Download {{fullName}} {{asset}}","partnershiphome-directory-sort-za":"Name ZâA","partnershiphome-directory-sort-za--plural":"Name ZâA","entity-process-summary-1":"Personalized document checklist","entity-process-summary-1--plural":"Personalized document checklist","entity-process-summary-3":"Compliance deadline coordination","entity-process-summary-3--plural":"Compliance deadline coordination","entity-process-summary-2":"Dedicated company setup assistance","entity-process-summary-2--plural":"Dedicated company setup assistance","entity-process-summary-4":"Digital corporate document delivery","entity-process-summary-4--plural":"Digital corporate document delivery","entity-process-step-2-title":"Finalize the Plan with Your Consultant","entity-process-step-2-title--plural":"Finalize the Plan with Your Consultant","entity-cta-ghost":"Find My Plan","entity-cta-ghost--plural":"Find My Plan","entity-process-step-5-title":"Receive Your Corporate Documents","entity-process-step-5-title--plural":"Receive Your Corporate Documents","entity-process-step-1-text":"Use the CJ Entity Plan Finder or speak with our specialist to choose the structure and service level that best match your business.","entity-process-step-1-text--plural":"Use the CJ Entity Plan Finder or speak with our specialist to choose the structure and service level that best match your business.","entity-process-eyebrow":"A Clear, Managed Process","entity-process-eyebrow--plural":"A Clear, Managed Process","entity-cta-small":"Service availability is subject to KYC and compliance review. Response times may vary depending on inquiry volume.","entity-cta-small--plural":"Service availability is subject to KYC and compliance review. Response times may vary depending on inquiry volume.","entity-process-title-highlight":"to Ongoing Compliance","entity-process-title-highlight--plural":"to Ongoing Compliance","entity-cta-contact-3-label":"WeChat","entity-cta-contact-3-label--plural":"WeChat","entity-cta-contact-title":"Contact Our Specialist","entity-cta-contact-title--plural":"Contact Our Specialist","entity-process-step-1-label":"Choose","entity-process-step-1-label--plural":"Choose","entity-process-step-4-title":"Complete Company Registration","entity-process-step-4-title--plural":"Complete Company Registration","entity-cta-contact-2-label":"WhatsApp","entity-process-step-2-text":"Work with your dedicated consultant to confirm the service plan, company structure, address requirements, timeline, and next steps.","entity-process-step-2-text--plural":"Work with your dedicated consultant to confirm the service plan, company structure, address requirements, timeline, and next steps.","entity-process-title":"From Application","entity-process-title--plural":"From Application","entity-process-step-5-text":"Once registration is completed, your corporate documents are organized and delivered digitally for convenient access.","entity-process-step-5-text--plural":"Once registration is completed, your corporate documents are organized and delivered digitally for convenient access.","entity-cta-title":"Ready to Launch with","entity-cta-title--plural":"Ready to Launch with","entity-process-step-2-label":"Consult","entity-process-step-2-label--plural":"Consult","entity-process-step-3-title":"Submit Your Registration Documents","entity-process-step-3-title--plural":"Submit Your Registration Documents","entity-process-step-6-text":"We monitor key compliance deadlines and coordinate the filings, audit support, and services included in your selected plan.","entity-process-step-6-text--plural":"We monitor key compliance deadlines and coordinate the filings, audit support, and services included in your selected plan.","entity-cta-description":"Set up your Hong Kong company with a managed service covering registration, compliance, privacy solutions, and address support. Speak with our specialist today and get the plan that fits your business structure and growth goals.","entity-cta-description--plural":"Set up your Hong Kong company with a managed service covering registration, compliance, privacy solutions, and address support. Speak with our specialist today and get the plan that fits your business structure and growth goals.","entity-cta-contact-1-label":"Contact Person","entity-cta-eyebrow":"Start Your Hong Kong Company","entity-cta-eyebrow--plural":"Start Your Hong Kong Company","entity-cta-tag-3":"Privacy Options","entity-cta-tag-3--plural":"Privacy Options","entity-cta-tag-4":"Address Support","entity-cta-tag-4--plural":"Address Support","entity-cta-tag-1":"Managed Compliance","entity-cta-tag-1--plural":"Managed Compliance","entity-cta-tag-2":"Clear Pricing","entity-cta-tag-2--plural":"Clear Pricing","entity-cta-contact-status":"Direct specialist support","entity-cta-contact-status--
31657plural":"Direct specialist support","entity-process-step-6-label":"Maintain","entity-process-step-6-label--plural":"Maintain","entity-cta-title-highlight":"CJ Entity?","entity-cta-title-highlight--plural":"CJ Entity?","entity-process-description":"CJ Entity coordinates each stage of your Hong Kong company setup, from selecting the right service plan and completing KYC to company registration, document delivery, and ongoing compliance support.","entity-process-description--plural":"CJ Entity coordinates each stage of your Hong Kong company setup, from selecting the right service plan and completing KYC to company registration, document delivery, and ongoing compliance support.","entity-process-step-3-label":"Submit","entity-process-step-1-title":"Select Your Plan","entity-process-step-1-title--plural":"Select Your Plan","entity-process-step-4-label":"Register","entity-process-step-3-text":"Provide the required identification, address verification, company information, director and shareholder details, and other registration materials for review.","entity-process-step-3-text--plural":"Provide the required identification, address verification, company information, director and shareholder details, and other registration materials for review.","entity-process-summary-title":"Clear steps. Dedicated guidance. Fewer administrative burdens.","entity-process-summary-title--plural":"Clear steps. Dedicated guidance. Fewer administrative burdens.","entity-process-step-4-text":"Our team prepares and submits the required incorporation, company registration, and business registration documents.","entity-process-step-4-text--plural":"Our team prepares and submits the required incorporation, company registration, and business registration documents.","entity-process-button":"Start Your Company Setup","entity-process-button--plural":"Start Your Company Setup","entity-process-summary-label":"One Coordinated Service","entity-process-summary-label--plural":"One Coordinated Service","entity-process-step-5-label":"Receive","entity-process-step-5-label--plural":"Receive","entity-process-step-6-title":"Stay Supported","entity-process-step-6-title--plural":"Stay Supported","entity-cta-primary":"Talk to Danny Fang","entity-cta-primary--plural":"Talk to Danny Fang","entity-cta-contact-text":"Ready to get started? Contact Danny directly and receive guidance on the next steps for your company setup.","entity-cta-contact-text--plural":"Ready to get started? Contact Danny directly and receive guidance on the next steps for your company setup.","advertisingservice-workorder-field-tip-prefix":"Please enter","advertisingservice-lightcta-eyebrow":"CJ Advertising Account Services","advertisingservice-lightcta-eyebrow--plural":"CJ Advertising Account Services","advertisingservice-audience-card-3-title":"Established Brands","advertisingservice-audience-card-3-title--plural":"Established Brands","advertisingservice-guarantee-seal-label":"100% Guaranteed Premium Seal","advertisingservice-guarantee-seal-label--plural":"100% Guaranteed Premium Seal","advertisingservice-workorder-message-label":"Message","advertisingservice-guarantee-card-2-title":"Secure & Reliable Protection","advertisingservice-guarantee-card-2-title--plural":"Secure & Reliable Protection","advertisingservice-audience-card-6-label":"Regional Operations","advertisingservice-audience-card-6-label--plural":"Regional Operations","advertisingservice-audience-card-3-label":"Brand Expansion","advertisingservice-audience-card-3-label--plural":"Brand Expansion","advertisingservice-guarantee-card-3-desc":"Our team is here to support you every step of the way for the best results.","advertisingservice-guarantee-card-3-desc--plural":"Our team is here to support you every step of the way for the best results.","advertisingservice-workorder-message-tip":"Please enter message","advertisingservice-workorder-message-tip--plural":"Please enter message","advertisingservice-lightcta-button":"Apply for an Ad Account","advertisingservice-lightcta-button--plural":"Apply for an Ad Account","advertisingservice-audience-card-2-label":"Cross-Border Ecommerce","advertisingservice-audience-card-2-label--plural":"Cross-Border Ecommerce","advertisingservice-guarantee-seal-word":"Guarantee","advertisingservice-guarantee-seal-word--plural":"Guarantee","advertisingservice-guarantee-card-1-desc":"If any account issue occurs, we provide fast replacements to minimize downtime.","advertisingservice-guarantee-card-1-desc--plural":"If any account issue occurs, we provide fast replacements to minimize downtime.","advertisingservice-workorder-link-tip":"You can check it in the","advertisingservice-workorder-link-tip--plural":"You can check it in the","advertisingservice-lightcta-title":"Ready to Scale Your Advertising?","advertisingservice-lightcta-title--plural":"Ready to Scale Your Advertising?","advertisingservice-lightcta-feature-2":"Compliance Guidance","advertisingservice-lightcta-feature-2--plural":"Compliance Guidance","advertisingservice-lightcta-feature-1":"Professional Account Setup","advertisingservice-lightcta-feature-1--plural":"Professional Account Setup","advertisingservice-guarantee-card-3-title":"Ongoing Expert Guidance","advertisingservice-guarantee-card-3-title--plural":"Ongoing Expert Guidance","advertisingservice-lightcta-feature-3":"Dedicated CJ Support","advertisingservice-lightcta-feature-3--plural":"Dedicated CJ Support","advertisingservice-audience-card-6-desc":"Assess suitable advertising account options for different c
31657ountries and regional operations.","advertisingservice-audience-card-6-desc--plural":"Assess suitable advertising account options for different countries and regional operations.","advertisingservice-lightcta-card-title":"Launch Your Ad Account with CJ","advertisingservice-lightcta-card-title--plural":"Launch Your Ad Account with CJ","advertisingservice-guarantee-title":"Your Success is Our Commitment","advertisingservice-guarantee-title--plural":"Your Success is Our Commitment","advertisingservice-audience-card-2-title":"Dropshipping Sellers","advertisingservice-audience-card-2-title--plural":"Dropshipping Sellers","advertisingservice-guarantee-seal-percent":"100%","advertisingservice-guarantee-seal-percent--plural":"100%","advertisingservice-lightcta-note":"Professional support from application to launch","advertisingservice-lightcta-note--plural":"Professional support from application to launch","advertisingservice-audience-card-3-foot":"Support for broader structures","advertisingservice-audience-card-3-foot--plural":"Support for broader structures","advertisingservice-audience-card-6-foot":"Built for multi-market coverage","advertisingservice-audience-card-6-foot--plural":"Built for multi-market coverage","advertisingservice-guarantee-seal-premium":"Premium","advertisingservice-guarantee-seal-premium--plural":"Premium","advertisingservice-guarantee-card-1-title":"Account Replacement Support","advertisingservice-guarantee-card-1-title--plural":"Account Replacement Support","advertisingservice-audience-card-4-desc":"Organize advertising access and account structures for eligible clients or brands.","advertisingservice-audience-card-4-desc--plural":"Organize advertising access and account structures for eligible clients or brands.","advertisingservice-audience-card-2-foot":"Built around product ads","advertisingservice-audience-card-2-foot--plural":"Built around product ads","advertisingservice-audience-card-4-label":"Client Account Access","advertisingservice-audience-card-4-label--plural":"Client Account Access","advertisingservice-audience-card-3-desc":"Prepare separate account structures for new stores, product lines or target regions.","advertisingservice-audience-card-3-desc--plural":"Prepare separate account structures for new stores, product lines or target regions.","advertisingservice-lightcta-description":"Open and manage your advertising accounts with professional support from CJ. From account setup and compliance guidance to campaign launch, we help you advertise more efficiently and reach the right customers across global markets.","advertisingservice-lightcta-description--plural":"Open and manage your advertising accounts with professional support from CJ. From account setup and compliance guidance to campaign launch, we help you advertise more efficiently and reach the right customers across global markets.","advertisingservice-audience-card-1-foot":"Clearer onboarding support","advertisingservice-audience-card-1-foot--plural":"Clearer onboarding support","advertisingservice-audience-card-4-foot":"Organized multi-client access","advertisingservice-audience-card-4-foot--plural":"Organized multi-client access","advertisingservice-audience-card-1-title":"New Ecommerce Advertisers","advertisingservice-audience-card-1-title--plural":"New Ecommerce Advertisers","advertisingservice-audience-card-2-desc":"Explore account options designed around cross-border ecommerce and product advertising.","advertisingservice-audience-card-2-desc--plural":"Explore account options designed around cross-border ecommerce and product advertising.","advertisingservice-audience-card-5-desc":"Review AppLovin account suitability for mobile user acquisition or app promotion.","advertisingservice-audience-card-5-desc--plural":"Review AppLovin account suitability for mobile user acquisition or app promotion.","advertisingservice-guarantee-description":"We stand behind every account we provide. Our 100% guarantee ensures your business never stops moving.","advertisingservice-guarantee-description--plural":"We stand behind every account we provide. Our 100% guarantee ensures your business never stops moving.","advertisingservice-lightcta-card-label":"Start Growing Today","advertisingservice-lightcta-card-label--plural":"Start Growing Today","advertisingservice-audience-card-4-title":"Agencies and Media Buyers","advertisingservice-audience-card-4-title--plural":"Agencies and Media Buyers","advertisingservice-audience-card-5-title":"Mobile App Advertisers","advertisingservice-audience-card-5-title--plural":"Mobile App Advertisers","advertisingservice-audience-card-5-label":"App User Acquisition","advertisingservice-audience-card-5-label--plural":"App User Acquisition","advertisingservice-guarantee-card-2-desc":"All accounts are protected with unique IPs and advanced security systems.","advertisingservice-guarantee-card-2-desc--plural":"All accounts are protected with unique IPs and advanced security systems.","advertisingservice-audience-card-5-foot":"Focused on app promotion","advertisingservice-audience-card-5-foot--plural":"Focused on app promotion","advertisingservice-workorder-fail-message":"Ticket has been suspended for update. Please contact your agent directly for any doubts.","advertisingservice-workorder-fail-message--plural":"Ticket has been suspended for update. Please contact your agent directly for any doubts.","advertisingservice-workorder-link-text":"Ticket List.","advertisingservice-workorder-link-text--plural":"Ticket List.","advertisingservice-audience-card-6-title":"Multi-Market Sellers","advertisingservice-audience-card-6-title--plural":"Multi-Market Sellers","advertisingservice-audience-card-1-desc":"Get clearer guidance for your first advertising account application and initial setup.","advertisingservice-audience-card-1-desc--plural":"Get clearer guidance for your first advertising account application and initial setup.","advertisingservice-lightcta-card-text":"Tell us about your business and advertising goals. Our team will help you choose the right account solution and support you from application to launch.","advertisingservice-lightcta-card-text--plural":"Tell us about your business and advertising goals. Our team will help you choose the right account solution and support you from application to launch.","entity-plans-3-feature-7":"Dedicated physical corporate address","entity-plans-3-feature-7--plural":"Dedicated physical corporate address","entity-compare-col-1-name":"Standard","entity-compare-col-1-name--plural":"Standard","entity-plans-3-feature-8":"
31657Verification preparation support","entity-plans-3-feature-8--plural":"Verification preparation support","entity-plans-3-feature-9":"Genuine lease agreement and electricity bill statement upon request","entity-plans-3-feature-9--plural":"Genuine lease agreement and electricity bill statement upon request","entity-compare-title-highlight":"Clearly Compared","entity-compare-title-highlight--plural":"Clearly Compared","entity-plans-3-feature-3":"Company secretary appointment","entity-plans-3-feature-3--plural":"Company secretary appointment","entity-plans-3-feature-4":"Annual statutory filing support","entity-plans-3-feature-4--plural":"Annual statutory filing support","entity-plans-3-feature-5":"Audit and tax filing coordination","entity-plans-3-feature-5--plural":"Audit and tax filing coordination","entity-plans-3-feature-6":"Compliance deadline monitoring","entity-plans-3-feature-6--plural":"Compliance deadline monitoring","entity-plans-3-feature-1":"Hong Kong company incorporation","entity-plans-3-feature-1--plural":"Hong Kong company incorporation","entity-plans-4-title":"Ultimate Enterprise Suite","entity-plans-4-title--plural":"Ultimate Enterprise Suite","entity-fit-title-line2":"Business?","entity-fit-title-line2--plural":"Business?","entity-plans-3-feature-2":"Government registration support","entity-plans-3-feature-2--plural":"Government registration support","entity-compare-status-not-included":"Not Included","entity-compare-status-not-included--plural":"Not Included","entity-compare-col-2-name":"Executive Privacy","entity-compare-col-2-name--plural":"Executive Privacy","entity-compare-status-standard":"Standard","entity-compare-status-standard--plural":"Standard","entity-compare-mobile-hint":"Swipe to compare all plans","entity-compare-mobile-hint--plural":"Swipe to compare all plans","entity-fit-eyebrow":"Built for Global Entrepreneurs","entity-fit-eyebrow--plural":"Built for Global Entrepreneurs","entity-fit-card-5-title":"International Founders","entity-fit-card-5-title--plural":"International Founders","entity-plans-3-subtitle":"A stronger corporate setup for Amazon and global marketplaces.","entity-plans-3-subtitle--plural":"A stronger corporate setup for Amazon and global marketplaces.","entity-compare-col-3-price":"$198 / month","entity-compare-col-3-price--plural":"$198 / month","entity-plans-3-badge":"Built for E-Commerce","entity-plans-3-badge--plural":"Built for E-Commerce","entity-fit-card-2-title":"Shopify and DTC Brands","entity-fit-card-2-title--plural":"Shopify and DTC Brands","entity-plans-2-subtitle":"Enhanced public-record privacy for global founders.","entity-plans-2-subtitle--plural":"Enhanced public-record privacy for global founders.","entity-compare-col-3-name":"E-Commerce Growth","entity-compare-col-3-name--plural":"E-Commerce Growth","entity-fit-card-6-text":"Use professionally documented nominee arrangements to enhance privacy on public company records.","entity-fit-card-6-text--plural":"Use professionally documented nominee arrangements to enhance privacy on public company records.","entity-plans-3-number":"Plan 3","entity-plans-3-number--plural":"Plan 3","entity-compare-status-included":"Included","entity-compare-status-included--plural":"Included","entity-fit-card-3-title":"Trading and Sourcing Companies","entity-fit-card-3-title--plural":"Trading and Sourcing Companies","entity-compare-col-3-badge":"E-Commerce Choice","entity-compare-col-3-badge--plural":"E-Commerce Choice","entity-fit-card-5-text":"Set up a Hong Kong company without handling every filing and administrative deadline alone.","entity-fit-card-5-text--plural":"Set up a Hong Kong company without handling every filing and administrative deadline alone.","entity-compare-description":"Compare the services included in each CJ Entity plan and choose the company structure that best matches your privacy, address, and compliance requirements.","entity-compare-description--plural":"Compare the services included in each CJ Entity plan and choose the company structure that best matches your privacy, address, and compliance requirements.","entity-plans-note":"All plans are subject to KYC and AML review, document approval, business activity assessment, and service eligibility. Platform, marketplace, bank, and payment provider approvals are independently determined by the relevant third party.","entity-plans-note--plural":"All plans are subject to KYC and AML review, document approval, business activity assessment, and service eligibility. Platform, marketplace, bank, and payment provider approvals are independently determined by the relevant third party.","entity-compare-col-2-price":"$170 / month","entity-compare-col-2-price--plural":"$170 / month","entity-plans-2-feature-3":"Company secretary appointment","entity-plans-2-feature-3--plural":"Company secretary appointment","entity-plans-2-feature-2":"Government registration support","entity-plans-2-feature-2--plural":"Government registration support","entity-plans-3-best-for":"Amazon sellers and businesses requiring a dedicated physical corporate address.","entity-plans-3-best-for--plural":"Amazon sellers and businesses requiring a dedicated physical corporate address.","entity-plans-2-feature-1":"Hong Kong company incorporation","entity-plans-2-feature-1--plural":"Hong Kong company incorporation","entity-plans-2-feature-8":"Nominee Shareholder Setup & Maintenance","entity-plans-2-feature-8--plural":"Nominee Shareholder Setup & Maintenance","entity-plans-2-feature-7":"Nominee Director Setup & Maintenance","entity-plans-2-feature-7--plural":"Nominee Director Setup & Maintenance","entity-plans-3-features-title":"Standard Compliance, plus","entity-plans-3-features-title--plural":"Standard Compliance, plus","entity-plans-2-feature-6":"Compliance deadline monitoring","entity-plans-2-feature-6--plural":"Compliance deadline monitoring","entity-plans-2-feature-5":"Audit and tax filing coordination","entity-plans-2-feature-5--plural":"Audit and tax filing coordination","entity-plans-2-feature-4":"Annual statutory filing support","entity-plans-2-feature-4--plural":"Annual statutory filing support","entity-fit-card-2-text":"Build an international company structure that can grow alongside your store and customer base.","entity-fit-card-2-text--plural":"Build an international company structure that can grow alongside your store and customer base.","entity-compare-col-1-price":"$145 / month","entity-compare-col-1-price--plural":"$145 / month","entity-plans-2-number":"Plan 2","entity-plans-2-number--plural":"Plan 2","entity-fit-card-4-title":"Consultants","entity-fit-card-4-title--plural":"Consultants","entity-plans-4-badge":"Complete Solution","entity-plans-4-badge--plural":"Complete Solution","entity-plans-4-button":"Cho
31657ose Ultimate Suite","entity-plans-4-button--plural":"Choose Ultimate Suite","entity-fit-card-3-text":"Establish a Hong Kong company for international sourcing, purchasing, consulting, and cross-border trade.","entity-fit-card-3-text--plural":"Establish a Hong Kong company for international sourcing, purchasing, consulting, and cross-border trade.","entity-plans-1-button":"Choose Standard Compliance","entity-plans-1-button--plural":"Choose Standard Compliance","entity-plans-2-button":"Choose Executive Privacy","entity-plans-2-button--plural":"Choose Executive Privacy","entity-plans-3-button":"Choose E-Commerce Growth","entity-plans-3-button--plural":"Choose E-Commerce Growth","entity-compare-col-4-price":"$223 / month","entity-compare-col-4-price--plural":"$223 / month","entity-plans-2-badge":"Privacy Choice","entity-plans-2-badge--plural":"Privacy Choice","entity-compare-note":"Service availability is subject to KYC and AML review, business activity assessment, document approval, and the final signed service agreement. Third-party platform, marketplace, banking, and payment provider approvals cannot be guaranteed.","entity-compare-note--plural":"Service availability is subject to KYC and AML review, business activity assessment, document approval, and the final signed service agreement. Third-party platform, marketplace, banking, and payment provider approvals cannot be guaranteed.","entity-plans-4-best-for":"High-growth e-commerce companies requiring privacy, a dedicated address, and priority support.","entity-plans-4-best-for--plural":"High-growth e-commerce companies requiring privacy, a dedicated address, and priority support.","entity-plans-2-features-title":"Standard Compliance, plus","entity-plans-2-features-title--plural":"Standard Compliance, plus","entity-compare-row-3":"Company Secretary","entity-compare-row-3--plural":"Company Secretary","entity-fit-card-4-text":"Operate through a professional corporate entity with ongoing secretarial and compliance support.","entity-fit-card-4-text--plural":"Operate through a professional corporate entity with ongoing secretarial and compliance support.","entity-compare-row-2":"Government Registration Support","entity-compare-row-2--plural":"Government Registration Support","entity-fit-card-1-text":"Create a structured corporate presence with dedicated address options and verification preparation support.","entity-fit-card-1-text--plural":"Create a structured corporate presence with dedicated address options and verification preparation support.","entity-compare-row-5":"Annual Statutory Filings","entity-compare-row-5--plural":"Annual Statutory Filings","entity-compare-title":"Everything You Need,","entity-compare-title--plural":"Everything You Need,","entity-compare-row-4":"Standard Registered Office","entity-compare-row-4--plural":"Standard Registered Office","entity-compare-row-7":"Tax Filing Coordination","entity-compare-row-7--plural":"Tax Filing Coordination","entity-compare-row-6":"Audit Coordination","entity-compare-row-6--plural":"Audit Coordination","entity-compare-row-9":"Nominee Shareholder","entity-compare-row-9--plural":"Nominee Shareholder","entity-compare-row-8":"Nominee Director","entity-compare-row-8--plural":"Nominee Director","entity-compare-status-priority":"Priority","entity-compare-status-priority--plural":"Priority","entity-fit-card-6-title":"Privacy-Conscious Owners","entity-fit-card-6-title--plural":"Privacy-Conscious Owners","entity-compare-eyebrow":"Compare Your Options","entity-compare-eyebrow--plural":"Compare Your Options","entity-compare-row-1":"Hong Kong Company Formation","entity-compare-row-1--plural":"Hong Kong Company Formation","entity-plans-2-title":"Executive Privacy","entity-plans-2-title--plural":"Executive Privacy","entity-plans-1-feature-4":"Annual statutory filing support","entity-plans-1-feature-4--plural":"Annual statutory filing support","entity-plans-4-subtitle":"Privacy, physical presence, and compliance in one plan.","entity-plans-4-subtitle--plural":"Privacy, physical presence, and compliance in one plan.","entity-plans-1-feature-3":"Company secretary appointment","entity-plans-1-feature-3--plural":"Company secretary appointment","entity-plans-1-feature-2":"Government registration support","entity-plans-1-feature-2--plural":"Government registration support","entity-plans-2-best-for":"Business owners who prefer enhanced privacy on publicly accessible company records.","entity-plans-2-best-for--plural":"Business owners who prefer enhanced privacy on publicly accessible company records.","entity-plans-1-feature-6":"Compliance deadline monitoring","entity-plans-1-feature-6--plural":"Compliance deadline monitoring","entity-plans-1-feature-5":"Audit and tax filing coordination","entity-plans-1-feature-5--plural":"Audit and tax filing coordination","entity-compare-col-4-name":"Ultimate Suite","entity-compare-col-4-name--plural":"Ultimate Suite","entity-compare-row-10":"Dedicated Physical Address","entity-compare-row-10--plural":"Dedicated Physical Address","entity-plans-4-feature-1":"Hong Kong company incorporation","entity-plans-4-feature-1--plural":"Hong Kong company incorporation","entity-plans-4-feature-3":"Audit and tax filing coordination","entity-plans-4-feature-3--plural":"Audit and tax filing coordination","entity-plans-4-feature-2":"Company secretary and statutory filings","entity-plans-4-feature-2--plural":"Company secretary and statutory filings","entity-plans-4-feature-5":"Dedicated physical corporate address","entity-plans-4-feature-5--plural":"Dedicated physical corporate address","entity-plans-4-feature-4":"Nominee director and shareholder services","entity-plans-4-feature-4--plural":"Nominee director and shareholder services","entity-plans-4-feature-7":"Genuine lease agreement and electricity bill statement upon request","entity-plans-4-feature-7--plural":"Genuine lease agreement and electricity bill statement upon request","entity-compare-row-13":"Priority Support","entity-compare-row-13--plural":"Priority Support","entity-plans-4-feature-6":"Mail scanning and priority support","entity-plans-4-feature-6--plural":"Mail scanning and priority support","entity-compare-row-11":"Mail Receiving and Scanning","entity-compare-row-11--plural":"Mail Receiving and Scanning","entity-compare-row-12":"Verification Preparation Support","entity-compare-row-12--plural":"Verification Preparation Support","entity-plans-4-features-title":"Complete service package","entity-plans-4-features-title--plural":"Complete service package","entity-fit-title":"Is CJ Entity Right for Your","entity-fit-title--plural":"Is CJ Entity Right for Your","entity-plans-3-title":"E-Commerce Growth","entity-plans-3-title--plural":"E-Commerce Growth","entity-compare-service-head":"Services","entity-fit-card-1-title":"Amazon Sellers","entity-fit-card-1-title--plural":"Amazon Sellers","entity-plans-4-number":"Plan 4","entity-plans-4-number--plural":"Plan 4","advertisingservice-multiplatform-card-2-title":"Google Agency Ad Accounts","advertisingservice-multiplatform-card-2-title--plural":"Google Agency Ad Accounts","advertisingservice-accountsetup-barrier-2-title":"Regional Restrictions","advertisingservice-accountsetup-barrier-2-title--plural":"Regional Restrictions","advertisingservice-accountsetup-step-6-label":"Handover","advertisingservice-accountsetup-step-6-label--plural":"Handover","advertisingservice-realbenefits-card-4-label":"Scale Performance Graph","advertisingservice-realbenefits-card-4-label--plural":"Scale Performance Graph","advertisingservice-audience-description":"Whether you are opening your first account or planning a broader advertising structure, the service can be reviewed around your needs.","advertisingservice-audience-description--plural":"Whether you are opening your first account or planning a broader advertising structure, the service can be reviewed around your needs.","advertisingservice-realbenefits-card-1-label":"Verticals","advertisingservice-realbenefits-card-1-label--plural":"Verticals","advertisingservice-audience-kicker":"Built for Different Business Needs","advertisingservice-audience-kicker--plural":"Built for Different Business Needs","advertisingservice-realbenefits-card-4-alt":"Digital advertising performance dashboard showing campaign growth","advertisingservice-realbenefits-card-4-alt--plural":"Digital advertising performance dashboard showing campaign growth","advertisingservice-accountsetup-barrier-1-desc":"Understand which business information and documents may be required before you apply.","advertisingservice-accountsetup-barrier-1-desc--plural":"Understand which business information and documents may be required before you apply.","advertisingservice-accountsetup-step-6-title":"Launch Preparation","advertisingservice-accountsetup-step-6-title--plural":"Launch Preparation","advertisingservice-accountsetup-eyebrow":"Remove Setup Barriers","advertisingservice-accountsetup-eyebrow--plural":"Remove Setup Barriers","advertisingservice-accountsetup-barrier-2-desc":"Review suitable account options based on your business location and advertising markets.","advertisingservice-accountsetup-barrier-2-desc--plural":"Review suitable account options based on your business location and advertising markets.","advertisingservice-multiplatform-card-8-title":"Outbrain Agency Ad Accounts","advertisingservice-multiplatform-card-8-title--plural":"Outbrain Agency Ad Accounts","advertisingservice-multiplatform-card-8-desc":"Drive scalable native traffic through content discovery and high-intent audience placements.","advertisingservice-multiplatform-card-8-desc--plural":"Drive scalable native traffic through content discovery and high-intent audience placements.","advertisingservice-threestep-step-1-num":"Step 1","advertisingservice-accountsetup-step-6-desc":"Receive the account handover information and basic guidance needed to begin building campaigns.","advertisingservice-accountsetup-step-6-desc--plural":"Receive the account handover information and basic guidance needed to begin building campaigns.","advertisingservice-multiplatform-card-5-title":"AppLovin Agency Ad Accounts","advertisingservice-multiplatform-card-5-title--plural":"AppLovin Agency Ad Accounts","advertisingservice-multiplatform-card-8-alt":"Outbrain Logo","advertisingservice-multiplatform-card-8-alt--plural":"Outbrain Logo","advertisingservice-accountsetup-step-1-label":"Assessment","advertisingservice-accountsetup-step-1-label--plural":"Assessment","advertisingservice-realbenefits-card-6-alt":"Designer preparing advertising creatives on a laptop","advertisingservice-realbenefits-card-6-alt--plural":"Designer preparing advertising creatives on a laptop","advertisingservice-audience-title-accent":"Ecommerce Growth","advertisingservice-audience-title-accent--plural":"Ecommerce Growth","advertisingservice-threestep-description":"Get approved, scale campaigns, and grow your business faster. Our simple process ensures youâre up and running in no time.","advertisingservice-threestep-description--plural":"Get approved, scale campaigns, and grow your business faster. Our simple process ensures youâre up and running in no time.","advertisingservice-realbenefits-card-2-title":"Run Aggressive D2C Claims","advertisingservice-realbenefits-card-2-title--plural":"Run Aggressive D2C Claims","advertisingservice-accountsetup-step-4-label":"Verification","advertisingservice-accountsetup-step-4-label--plural":"Verification","advertisingservice-threestep-step-3-num":"Step 3","advertisingservice-realbenefits-card-6-label":"Creative Approval Process","advertisingservice-realbenefits-card-6-label--plural":"Creative Approval Process","advertisingservice-accountsetup-step-4-title":"Business Verification Guidance","advertisingservice-accountsetup-step-4-title--plural":"Business Verification Guidance","advertisingservice-multiplatform-card-7-desc":"Reach premium audiences and scale native traffic across trusted publisher networks.","advertisingservice-multiplatform-card-7-desc--plural":"Reach premium audiences and scale native traffic across trusted publisher networks.","advertisingservice-accountsetup-barrier-4-desc":"Plan clearer account structures for multiple stores, brands, teams or target markets.","advertisingservice-accountsetup-barrier-4-desc--plural":"Plan clearer account structures for multiple stores, brands, teams or target markets.","advertisingservice-threestep-title":"Launch Faster with Agency Ad Accounts","advertisingservice-threestep-title--plural":"Launch Faster with Agency Ad Accounts","advertisingservice-realbenefits-card-6-desc":"Test more creatives, launch faster, and move from review to live delivery with priority platform status.","advertisingservice-realbenefits-card-6-desc--plural":"Test more creatives, launch faster, and move from review to live delivery with priority platform status.","advertisingservice-accountsetup-barrier-4-title":"Scaling Account Structure","advertisingservice-accountsetup-barrier-4-title--plural":"Scaling Account Structure","advertisingservice-multiplatform-card-6-alt":"Snapchat Logo","advertisingservice-multiplatform-card-6-alt--plural":"Snapchat Logo","advertisingservice-accountsetup-step-4-desc":"Prepare business details and supporting documents in line with platform onboarding requirements.","advertisingservice-accountsetup-step-4-desc--plural":"Prepare business details and supporting documents in line with platform onboarding requirements.","advertisingservice-audience-card-1-label":"First Account Setup","advertisingservice-audience-card-1-label--plural":"First Account Setup","advertisingservice-accountsetup-barrier-3-title":"Billing and Access Setup","advertisingservice-accountsetup-barrier-3-title--plural":"Billing and Access Setup","advertisingservice-realbenefits-title":"Break Through Ad Restrictions, Rejections,","advertisingservice-realbenefits-title--plural":"Break Through Ad Restrictions, Rejections,","advertisingservice-accountsetup-process-title":"More Than Ad Account Opening","advertisingservice-accountsetup-process-title--plural":"More Than Ad Account Opening","advertisingservice-accountsetup-step-3-label":"Application","advertisingservice-accountsetup-step-3-label--plural":"Application","advertisingservice-accountsetup-step-3-title":"Registration Assistance","advertisingservice-accountsetup-step-3-title--plural":"Registration Assistance","advertisingservice-realbenefits-card-1-title":"Run Ads Across Multiple Verticals","advertisingservice-realbenefits-card-1-title--plural":"Run Ads Across Multiple Verticals","advertisingservice-realbenefits-description":"Stable agency ad accounts built for advertisers who need reliable delivery, scalable spend, and fewer disruptions across major platforms.","advertisingservice-realbenefits-description--plural":"Stable agency ad accounts built for advertisers who need reliable delivery, scalable spend, and fewer disruptions across major platforms.","advertisingservice-audience-title":"Designed for Different Stages of","advertisingservice-audience-title--plural":"Designed for Different Stages of","advertisingservice-realbenefits-title-accent":"and Account Limits","advertisingservice-realbenefits-title-accent--plural":"and Account Limits","advertisingservice-multiplatform-card-7-title":"Taboola Agency Ad Accounts","advertisingservice-multiplatform-card-7-title--plural":"Taboola Agency Ad Accounts","advertisingservice-realbenefits-card-1-alt":"Marketing team working across multiple digital platforms","advertisingservice-realbenefits-card-1-alt--plural":"Marketing team working across multiple digital platforms","advertisingservice-multiplatform-card-4-alt":"TikTok Logo","advertisingservice-multiplatform-card-4-alt--plural":"TikTok Logo","advertisingservice-realbenefits-card-3-alt":"Health and wellness products displayed on shelves","advertisingservice-realbenefits-card-3-alt--plural":"Health and wellness products displayed on shelves","advertisingservice-threestep-step-3-title":"Start Ads with Confidence","advertisingservice-threestep-step-3-title--plural":"Start Ads with Confidence","advertisingservice-threestep-step-1-desc":"Send us your business details so we can find the right fit.","advertisingservice-threestep-step-1-desc--plural":"Send us your business details so we can find the right fit.","advertisingservice-multiplatform-card-2-al
31657t":"Google Logo","advertisingservice-multiplatform-card-2-alt--plural":"Google Logo","advertisingservice-accountsetup-step-1-desc":"We review your platform, business type, website, target market and expected advertising budget.","advertisingservice-accountsetup-step-1-desc--plural":"We review your platform, business type, website, target market and expected advertising budget.","advertisingservice-accountsetup-step-2-title":"Account Solution Matching","advertisingservice-accountsetup-step-2-title--plural":"Account Solution Matching","advertisingservice-multiplatform-card-3-desc":"Boost your brand with strong and rare Microsoft ad account solutions built for scalable search advertising.","advertisingservice-multiplatform-card-3-desc--plural":"Boost your brand with strong and rare Microsoft ad account solutions built for scalable search advertising.","advertisingservice-multiplatform-card-4-desc":"Test product creatives faster through video while scaling campaigns with better reach and engagement.","advertisingservice-multiplatform-card-4-desc--plural":"Test product creatives faster through video while scaling campaigns with better reach and engagement.","advertisingservice-accountsetup-process-eyebrow":"Complete Setup Support","advertisingservice-accountsetup-process-eyebrow--plural":"Complete Setup Support","advertisingservice-accountsetup-step-2-label":"Recommendation","advertisingservice-multiplatform-card-6-title":"Snapchat Agency Ad Accounts","advertisingservice-multiplatform-card-6-title--plural":"Snapchat Agency Ad Accounts","advertisingservice-accountsetup-step-5-label":"Configuration","advertisingservice-accountsetup-step-5-label--plural":"Configuration","advertisingservice-realbenefits-card-3-desc":"Support more stable delivery and stronger reach for health category campaigns with whitelisted status.","advertisingservice-realbenefits-card-3-desc--plural":"Support more stable delivery and stronger reach for health category campaigns with whitelisted status.","advertisingservice-threestep-title-accent":"in 3 Clear Steps","advertisingservice-threestep-title-accent--plural":"in 3 Clear Steps","advertisingservice-realbenefits-card-3-title":"Move Beyond Health Category Restrictions","advertisingservice-realbenefits-card-3-title--plural":"Move Beyond Health Category Restrictions","advertisingservice-realbenefits-card-5-alt":"Business account handoff represented by a professional handshake","advertisingservice-realbenefits-card-5-alt--plural":"Business account handoff represented by a professional handshake","advertisingservice-accountsetup-cta":"Talk to an Account Specialist","advertisingservice-accountsetup-cta--plural":"Talk to an Account Specialist","advertisingservice-threestep-step-3-desc":"Start running ads quickly with stable, scalable accounts.","advertisingservice-threestep-step-3-desc--plural":"Start running ads quickly with stable, scalable accounts.","advertisingservice-accountsetup-barrier-1-title":"Verification Complexity","advertisingservice-accountsetup-barrier-1-title--plural":"Verification Complexity","advertisingservice-realbenefits-card-6-title":"Speed Up Creative Approval","advertisingservice-realbenefits-card-6-title--plural":"Speed Up Creative Approval","advertisingservice-realbenefits-card-5-label":"Account Handoff","advertisingservice-realbenefits-card-5-label--plural":"Account Handoff","advertisingservice-realbenefits-card-4-desc":"Expand campaign capacity with agency ad account support built for high-volume growth and massive spend.","advertisingservice-realbenefits-card-4-desc--plural":"Expand campaign capacity with agency ad account support built for high-volume growth and massive spend.","advertisingservice-accountsetup-step-3-desc":"Get guided support for the account application process and required information preparation.","advertisingservice-accountsetup-step-3-desc--plural":"Get guided support for the account application process and required information preparation.","advertisingservice-accountsetup-step-5-title":"Initial Account Setup","advertisingservice-accountsetup-step-5-title--plural":"Initial Account Setup","advertisingservice-threestep-step-2-num":"Step 2","advertisingservice-realbenefits-card-1-desc":"From beauty and wellness to e-commerce, apps, and gamingâreach your audience without platform friction.","advertisingservice-realbenefits-card-1-desc--plural":"From beauty and wellness to e-commerce, apps, and gamingâreach your audience without platform friction.","advertisingservice-accountsetup-title":"Account Setup Should Not","advertisingservice-accountsetup-title--plural":"Account Setup Should Not","advertisingservice-multiplatform-card-2-desc":"Scale Search, Shopping, and Display campaigns with higher approval and reach buyers ready to purchase.","advertisingservice-multiplatform-card-2-desc--plural":"Scale Search, Shopping, and Display campaigns with higher approval and reach buyers ready to purchase.","advertisingservice-multiplatform-card-5-desc":"Scale product campaigns through premium mobile app traffic and performance-driven delivery.","advertisingservice-multiplatform-card-5-desc--plural":"Scale product campaigns through premium mobile app traffic and performance-driven delivery.","advertisingservice-accountsetup-description":"Business verification, regional requirements, billing settings and access permissions can make ad account opening harder than expected. CJ helps organize the process from initial assessment to account handover.","advertisingservice-accountsetup-description--plural":"Business verification, regional requirements, billing settings and access permissions can make ad account opening harder than expected. CJ helps organize the process from initial assessment to account handover.","advertisingservice-accountsetup-title-accent":"Slow Down Your Growth","advertisingservice-accountsetup-title-accent--plural":"Slow Down Your Growth","advertisingservice-multiplatform-card-6-desc":"Reach younger buyers with lower CPMs and scale impulse-friendly product campaigns through visual ads.","advertisingservice-multiplatform-card-6-desc--plural":"Reach younger buyers with lower CPMs and scale impulse-friendly product campaigns through visual ads.","advertisingservice-multiplatform-card-4-title":"TikTok Agency Ad Accounts","advertisingservice-multiplatform-card-4-title--plural":"TikTok Agency Ad Accounts","advertisingservice-multiplatform-card-7-alt":"Taboola Logo","advertisingservice-multiplatform-card-7-alt--plural":"Taboola Logo","advertisingservice-threestep-step-1-title":"Share Your Business Info","advertisingservice-threestep-step-1-title--plural":"Share Your Business Info","advertisingservice-realbenefits-card-2-label":"D2C Results","advertisingservice-realbenefits-card-2-label--plural":"D2C Results","advertisingservice-realbenefits-card-5-title":"Keep Your Ads Running","advertisingservice-realbenefits-card-5-title--plural":"Keep Your Ads Running","advertisingservice-threestep-eyebrow":"Platform-ready accounts at scale","advertisingservice-threestep-eyebrow--plural":"Platform-ready accounts at scale","advertisingservice-accountsetup-step-1-title":"Account Eligibility Review","advertisingservice-accountsetup-step-1-title--plural":"Account Eligibility Review","advertisingservice-realbenefits-card-2-desc":"Drive fast growth with bold, high-impact offers built for D2C brands that need to scale aggressively.","advertisingservice-realbenefits-card-2-desc--plural":"Drive fast growth with bold, high-impact offers built for D2C brands that need to scale aggressively.","advertisingservice-threestep-step-2-title":"Top Up Your Account Easily","advertisingservice-threestep-step-2-title--plural":"Top Up Your Account Easily","advertisingservice-multiplatform-card-3-title":"Bing Agency Ad Accounts","advertisingservice-multiplatform-card-3-title--plural":"Bing Agency Ad Accounts","advertisingservice-realbenefits-card-5-desc":"If your ad account gets disabled, weâll instantly replace it for you, so your campaigns continue running without interruption.","advertisingservice-realbenefits-card-5-desc--plural":"If your ad account gets disabled, weâll instantly replace it for you, so your campaigns continue running without interruption.","advertisingservice-accountsetup-step-2-desc":"Receive a suitable solution based on account availability, advertiser eligibility and operational needs.","advertisingservice-accountsetup-step-2-desc--plural":"Receive a suitable solution based on account availability, advertiser eligibility and operational needs.","advertisingservice-multiplatform-card-5-alt":"AppLovin Logo","advertisingservice-multiplatform-card-5-alt--plural":"AppLovin Logo","advertisingservice-accountsetup-process-intro":"A structured service designed to help advertisers move from initial requirements to a properly configured account.","advertisingservice-accountsetup-process-intro--plural":"A structured service designed to help advertisers move from initial requirements to a properly configured account.","advertisingservice-accountsetup-step-5-desc":"Configure account access, permissions, business assets and ke
31657y settings before campaign launch.","advertisingservice-accountsetup-step-5-desc--plural":"Configure account access, permissions, business assets and key settings before campaign launch.","advertisingservice-multiplatform-card-3-alt":"Bing Logo","advertisingservice-multiplatform-card-3-alt--plural":"Bing Logo","advertisingservice-realbenefits-card-2-alt":"Team planning a high-growth D2C advertising strategy","advertisingservice-realbenefits-card-2-alt--plural":"Team planning a high-growth D2C advertising strategy","advertisingservice-threestep-step-2-desc":"Get approved and access your account without delay.","advertisingservice-threestep-step-2-desc--plural":"Get approved and access your account without delay.","advertisingservice-realbenefits-card-4-title":"Scale Without Limits","advertisingservice-realbenefits-card-4-title--plural":"Scale Without Limits","advertisingservice-accountsetup-barrier-3-desc":"Prepare key account settings, user access and billing configuration for a smoother launch.","advertisingservice-accountsetup-barrier-3-desc--plural":"Prepare key account settings, user access and billing configuration for a smoother launch.","advertisingservice-realbenefits-card-3-label":"Health Categorization","advertisingservice-realbenefits-card-3-label--plural":"Health Categorization","entity-support-description":"Starting a company is only the first step. CJ Entity brings company formation, compliance management, document coordination, audit support, and ongoing business services together under one clear service relationship.","entity-support-description--plural":"Starting a company is only the first step. CJ Entity brings company formation, compliance management, document coordination, audit support, and ongoing business services together under one clear service relationship.","entity-hero-feature-2-title":"Enhanced Public-Record Privacy","entity-hero-feature-2-title--plural":"Enhanced Public-Record Privacy","entity-plans-1-best-for":"Trading companies, consultants, agencies, and global e-commerce businesses.","entity-plans-1-best-for--plural":"Trading companies, consultants, agencies, and global e-commerce businesses.","entity-support-card-4-text":"Work directly with a specialist who understands international company structures and e-commerce operations.","entity-support-card-4-text--plural":"Work directly with a specialist who understands international company structures and e-commerce operations.","entity-finder-plan-2-monthly":"$170 USD per month","entity-finder-plan-2-monthly--plural":"$170 USD per month","entity-plans-upfront-label":"Upfront Setup","entity-plans-upfront-label--plural":"Upfront Setup","entity-hero-price-1-unit":"USD","entity-hero-price-1-unit--plural":"USD","entity-support-card-3-title":"Flexible Solutions","entity-support-card-3-title--plural":"Flexible Solutions","entity-finder-plan-1-best-for":"International trading businesses, consultants, agencies, and e-commerce companies that do not require nominee services or a dedicated physical address.","entity-finder-plan-1-best-for--plural":"International trading businesses, consultants, agencies, and e-commerce companies that do not require nominee services or a dedicated physical address.","entity-hero-price-1-label":"Setup Fee From","entity-hero-price-1-label--plural":"Setup Fee From","entity-finder-q1-number":"Question 1","entity-finder-q1-number--plural":"Question 1","entity-finder-title-highlight":"in 10 Seconds","entity-finder-title-highlight--plural":"in 10 Seconds","entity-finder-plan-1-title":"Plan 1: Standard Compliance","entity-finder-plan-1-title--plural":"Plan 1: Standard Compliance","entity-finder-plan-1-upfront":"$900 upfront setup","entity-finder-plan-1-upfront--plural":"$900 upfront setup","entity-hero-title":"Launch Your","entity-hero-title--plural":"Launch Your","entity-hero-image-alt":"Hong Kong skyline and company formation services","entity-hero-image-alt--plural":"Hong Kong skyline and company formation services","entity-finder-plan-4-title":"Plan 4: Ultimate Enterprise Suite","entity-finder-plan-4-title--plural":"Plan 4: Ultimate Enterprise Suite","entity-plans-1-number":"Plan 1","entity-plans-1-number--plural":"Plan 1","entity-plans-1-title":"Standard Compliance","entity-plans-1-title--plural":"Standard Compliance","entity-finder-q1-title":"Do you sell on Amazon or require a dedicated physical business address?","entity-finder-q1-title--plural":"Do you sell on Amazon or require a dedicated physical business address?","entity-finder-plan-1-monthly":"$145 USD per month","entity-finder-plan-1-monthly--plural":"$145 USD per month","entity-hero-feature-2-text":"Nominee director and shareholder options","entity-hero-feature-2-text--plural":"Nominee director and shareholder options","entity-plans-best-for-label":"Best for:","entity-plans-best-for-label--plural":"Best for:","entity-finder-q1-description":"Choose Yes if you require a unique physical address for marketplace, banking, operational, or compliance documentation.","entity-finder-q1-description--plural":"Choose Yes if you require a unique physical address for marketplace, banking, operational, or compliance documentation.","entity-hero-cta-secondary":"Contact Danny","entity-hero-cta-secondary--plural":"Contact Danny","entity-finder-plan-2-best-for":"Global founders who prefer enhanced public-record privacy while retaining beneficial ownership and operational control.","entity-finder-plan-2-best-for--plural":"Global founders who prefer enhanced public-record privacy while retaining beneficial ownership and operational control.","entity-plans-1-features-title":"What is included","entity-plans-1-features-title--plural":"What is included","entity-support-card-1-title":"Clear Pricing","entity-support-card-1-title--plural":"Clear Pricing","entity-hero-trust-3":"Dedicated Support","entity-hero-trust-3--plural":"Dedicated Support","entity-hero-feature-3-text":"One coordinated service for ongoing support","entity-hero-feature-3-text--plural":"One coordinated service for ongoing support","entity-finder-plan-2-tag-3":"Privacy Structure","entity-finder-plan-2-tag-3--plural":"Privacy Structure","entity-finder-plan-2-tag-2":"Nominee Shareholder","entity-finder-plan-2-tag-2--plural":"Nominee Shareholder","entity-finder-q2-description":"Choose Yes if you prefer a professionally structured nominee director and nominee shareholder arrangement.","entity-finder-q2-description--plural":"Choose Yes if you prefer a professionally structured nominee director and nominee shareholder arrangement.","entity-hero-trust-2":"Transparent Pricing","entity-hero-trust-2--plural":"Transparent Pricing","entity-hero-trust-1":"Managed Compliance","entity-hero-trust-1--plural":"Managed Compliance","entity-plans-monthly-suffix":"/ month","entity-plans-monthly-suffix--plural":"/ month","entity-support-card-2-title":"Ongoing Compliance","entity-support-card-2-title--plural":"Ongoing Compliance","entity-finder-q2-number":"Question 2","entity-finder-q2-number--plural":"Question 2","entity-finder-button":"View Recommended Plan","entity-finder-button--plural":"View Recommended Plan","entity-finder-plan-2-upfront":"$1,200 upfront setup","entity-finder-plan-2-upfront--plural":"$1,200 upfront setup","entity-hero-price-2-unit":"USD / MONTH","entity-hero-price-2-unit--plural":"USD / MONTH","entity-support-card-3-text":"Choose standard compliance, enhanced privacy, dedicated address support, or a complete managed service package.","entity-support-card-3-text--plural":"Choose standard compliance, enhanced privacy, dedicated address support, or a complete managed service package.","entity-plans-eyebrow":"Simple, Transparent Plans","entity-plans-eyebrow--plural":"Simple, Transparent Plans","entity-plans-title-highlight":"for Your Business","entity-plans-title-highlight--plural":"for Your Business","entity-finder-plan-3-tag-3":"Verification Preparation","entity-finder-plan-3-tag-3--plural":"Verification Preparation","entity-finder-plan-3-tag-2":"Mail Scanning","entity-finder-plan-3-tag-2--plural":"Mail Scanning","entity-finder-plan-3-tag-1":"Dedicated Address","entity-finder-plan-3-tag-1--plural":"Dedicated Address","entity-hero-disclaimer":"Services are subject to KYC, AML review, document approval, and eligibility. Third-party platform, bank, and marketplace approvals cannot be guaranteed.","entity-hero-disclaimer--plural":"Services are subject to KYC, AML review, document approval, and eligibility. Third-party platform, bank, and marketplace approvals cannot be guaranteed.","entity-finder-plan-4-description":"A fully coordinated package combining enhanced privacy, a dedicated physical address, and ongoing compliance support.","entity-finder-plan-4-description--plural":"A fully coordinated package combining enhanced privacy, a dedicated physical address, and ongoing compliance support.","entity-finder-plan-3-description":"A Hong Kong company solution designed for Amazon sellers and businesses requiring a dedicated physical address.","entity-finder-plan-3-description--plural":"A Hong Kong company solution designed for Amazon sellers and businesses requiring a dedicated physical address.","entity-finder-plan-2-description":"A professionally structured Hong Kong company package with enhanced privacy on publicly accessible corporate records.","entity-finder-plan-2-description--plural":"A professionally structured Hong Kong company package with enhanced privacy on publicly accessible corporate records.","entity-plans-monthly-label":"Monthly Service","entity-plans-monthly-label--plural":"Monthly Service","entity-finder-plan-4-monthly":"$785 USD per month","entity-finder-plan-4-monthly--plural":"$785 USD per month","entity-hero-subheading":"Build Globally. Stay Compliant.","entity-hero-subheading--plural":"Build Globally. Stay Compliant.","entity-finder-plan-1-description":"The essential Hong Kong company formation and ongoing compliance package for international entrepreneurs.","entity-finder-plan-1-description--plural":"The essential Hong Kong company formation and ongoing compliance package for international entrepreneurs.","entity-hero-feature-1-title":"Dedicated Address Options","entity-hero-feature-1-title--plural":"Dedicated Address Options","entity-finder-q2-option-yes":"Yes, I want enhanced public-record privacy","entity-finder-q2-option-yes--plural":"Yes, I want enhanced public-record privacy","entity-finder-q2-option-no":"No, I can be listed publicly","entity-finder-q2-option-no--plural":"No, I can be listed publicly","entity-hero-description":"Set up and manage your Hong Kong company through one coordinated service. From incorporation and company secretary support to audit coordination, enhanced privacy options, and dedicated address solutions, CJ Entity helps global entrepreneurs operate with greater confidence.","entity-hero-description--plural":"Set up and manage your Hong Kong company through one coordinated service. From incorporation and company secretary support to audit coordination, enhanced privacy options, and dedicated address solutions, CJ Entity helps global entrepreneurs operate with greater confidence.","entity-hero-cta-primary":"Find My Plan","entity-hero-cta-primary--
31657plural":"Find My Plan","entity-finder-plan-4-best-for":"High-growth e-commerce companies and international founders seeking a comprehensive corporate support package.","entity-finder-plan-4-best-for--plural":"High-growth e-commerce companies and international founders seeking a comprehensive corporate support package.","entity-finder-recommendation-label":"Your Recommended Plan","entity-finder-recommendation-label--plural":"Your Recommended Plan","entity-finder-plan-4-tag-2":"Dedicated Address","entity-finder-plan-4-tag-2--plural":"Dedicated Address","entity-finder-plan-4-tag-3":"Priority Support","entity-finder-plan-4-tag-3--plural":"Priority Support","entity-finder-plan-4-tag-1":"Enhanced Privacy","entity-finder-plan-4-tag-1--plural":"Enhanced Privacy","entity-support-title-highlight":"Fully Supported","entity-support-title-highlight--plural":"Fully Supported","entity-finder-plan-2-tag-1":"Nominee Director","entity-finder-plan-2-tag-1--plural":"Nominee Director","entity-finder-plan-1-tag-3":"Audit Coordination","entity-finder-plan-1-tag-3--plural":"Audit Coordination","entity-support-card-4-title":"Dedicated Support","entity-support-card-4-title--plural":"Dedicated Support","entity-finder-description":"Answer two quick questions to identify the Hong Kong company formation and compliance plan that best matches your business structure, privacy preferences, and operating requirements.","entity-finder-description--plural":"Answer two quick questions to identify the Hong Kong company formation and compliance plan that best matches your business structure, privacy preferences, and operating requirements.","entity-support-card-2-text":"Stay prepared for annual returns, statutory records, tax filings, audit coordination, and important compliance deadlines.","entity-support-card-2-text--plural":"Stay prepared for annual returns, statutory records, tax filings, audit coordination, and important compliance deadlines.","entity-finder-q1-option-no":"No, a standard registered address is sufficient","entity-finder-q1-option-no--plural":"No, a standard registered address is sufficient","entity-finder-plan-3-upfront":"$3,500 upfront setup","entity-finder-plan-3-upfront--plural":"$3,500 upfront setup","entity-finder-q2-title":"Do you want enhanced privacy on the public company register?","entity-finder-q2-title--plural":"Do you want enhanced privacy on the public company register?","entity-finder-plan-2-title":"Plan 2: Executive Privacy","entity-finder-plan-2-title--plural":"Plan 2: Executive Privacy","entity-finder-q1-option-yes":"Yes, I need a dedicated physical address","entity-finder-q1-option-yes--plural":"Yes, I need a dedicated physical address","entity-plans-1-feature-1":"Hong Kong company incorporation","entity-plans-1-feature-1--plural":"Hong Kong company incorporation","entity-hero-service-4":"Privacy & Address Options","entity-hero-service-4--plural":"Privacy & Address Options","entity-hero-service-2":"Corporate Secretary Support","entity-hero-service-2--plural":"Corporate Secretary Support","entity-hero-service-3":"Audit & Filing Coordination","entity-hero-service-3--plural":"Audit & Filing Coordination","entity-hero-service-1":"Hong Kong Company Formation","entity-hero-service-1--plural":"Hong Kong Company Formation","entity-plans-1-subtitle":"The essential foundation for global startups.","entity-plans-1-subtitle--plural":"The essential foundation for global startups.","entity-finder-plan-1-tag-2":"Company Secretary","entity-finder-plan-1-tag-2--plural":"Company Secretary","entity-finder-plan-1-tag-1":"Company Formation","entity-finder-plan-1-tag-1--plural":"Company Formation","entity-finder-title":"Find Your CJ Entity Plan","entity-finder-title--plural":"Find Your CJ Entity Plan","entity-finder-plan-3-monthly":"$766 USD per month","entity-finder-plan-3-monthly--plural":"$766 USD per month","entity-support-title":"Your Hong Kong Company,","entity-support-title--plural":"Your Hong Kong Company,","entity-hero-price-2-label":"Monthly Support From","entity-hero-price-2-label--plural":"Monthly Support From","entity-finder-plan-4-upfront":"$4,000 upfront setup","entity-finder-plan-4-upfront--plural":"$4,000 upfront setup","entity-finder-best-for-label":"Best For","entity-finder-best-for-label--plural":"Best For","entity-support-card-1-text":"Understand your setup fee and monthly service costs before getting started, with clearly defined plan inclusions.","entity-support-card-1-text--plural":"Understand your setup fee and monthly service costs before getting started, with clearly defined plan inclusions.","entity-finder-plan-3-title":"Plan 3: E-Commerce Growth","entity-finder-plan-3-title--plural":"Plan 3: E-Commerce Growth","entity-finder-plan-3-best-for":"Amazon sellers, international e-commerce brands, and businesses that require dedicated physical address documentation.","entity-finder-plan-3-best-for--plural":"Amazon sellers, international e-commerce brands, and businesses that require dedicated physical address documentation.","entity-plans-title":"Choose the Right Foundation","entity-plans-title--plural":"Choose the Right Foundation","entity-hero-title-strong":"Hong Kong Company.","entity-hero-title-strong--plural":"Hong Kong Company.","entity-hero-feature-1-text":"For eligible business and verification needs","entity-hero-feature-1-text--plural":"For eligible business and verification needs","entity-hero-feature-3-title":"Built for Global Entrepreneurs","entity-hero-feature-3-title--plural":"Built for Global Entrepreneurs","entity-plans-description":"Each plan combines Hong Kong company formation with ongoing compliance support. Choose the level of privacy, address support, and service coverage your business needs.","entity-plans-description--plural":"Eac
31657h plan combines Hong Kong company formation with ongoing compliance support. Choose the level of privacy, address support, and service coverage your business needs.","advertisingservice-lightcta-card-title-site":"Launch Your Ad Account with {{name}}","advertisingservice-lightcta-card-title-site--plural":"Launch Your Ad Account with {{name}}","advertisingservice-hero-panel-title-site":"Why our clients choose {{name}}","advertisingservice-hero-panel-title-site--plural":"Why our clients choose {{name}}","entity-cta-title-highlight-site":"{{name}} Entity?","entity-cta-title-highlight-site--plural":"{{name}} Entity?","entity-hero-description-site":"Set up and manage your Hong Kong company through one coordinated service. From incorporation and company secretary support to audit coordination, enhanced privacy options, and dedicated address solutions, {{name}} Entity helps global entrepreneurs operate with greater confidence.","entity-hero-description-site--plural":"Set up and manage your Hong Kong company through one coordinated service. From incorporation and company secretary support to audit coordination, enhanced privacy options, and dedicated address solutions, {{name}} Entity helps global entrepreneurs operate with greater confidence.","partnershiphome-directory-desc-site":"Search the {{name}} partner ecosystem by business category to find solutions that fit your current growth stage.","partnershiphome-directory-desc-site--plural":"Search the {{name}} partner ecosystem by business category to find solutions that fit your current growth stage.","partnershiphome-hero-explore-site":"Join {{fullName}}","partnershiphome-hero-explore-site--plural":"Join {{fullName}}","partnershiphome-hero-label-site":"{{name}} Partner Network","partnershiphome-hero-label-site--plural":"{{name}} Partner Network","partnershiphome-brand-label-site":"{{name}} Brand Resources","partnershiphome-brand-label-site--plural":"{{name}} Brand Resources","entity-support-description-site":"Starting a company is only the first step. {{name}} Entity brings company formation, compliance management, document coordination, audit support, and ongoing business services together under one clear service relationship.","entity-support-description-site--plural":"Starting a company is only the first step. {{name}} Entity brings company formation, compliance management, document coordination, audit support, and ongoing business services together under one clear service relationship.","entity-finder-title-site":"Find Your {{name}} Entity Plan","entity-finder-title-site--plural":"Find Your {{name}} Entity Plan","entity-fit-title-site":"Is {{name}} Entity Right for Your","entity-fit-title-site--plural":"Is {{name}} Entity Right for Your","entity-process-step-1-text-site":"Use the {{name}} Entity Plan Finder or speak with our specialist to choose the structure and service level that best match your business.","entity-process-step-1-text-site--plural":"Use the {{name}} Entity Plan Finder or speak with our specialist to choose the structure and service level that best match your business.","entity-process-description-site":"{{name}} Entity coordinates each stage of your Hong Kong company setup, from selecting the right service plan and completing KYC to company registration, document delivery, and ongoing compliance support.","entity-process-description-site--plural":"{{name}} Entity coordinates each stage of your Hong Kong company setup, from selecting the right service plan and completing KYC to company registration, document delivery, and ongoing compliance support.","entity-compare-description-site":"Compare the services included in each {{name}} Entity plan and choose the company structure that best matches your privacy, address, and compliance requirements.","entity-compare-description-site--plural":"Compare the services included in each {{name}} Entity plan and choose the company structure that best matches your privacy, address, and compliance requirements.","advertisingservice-lightcta-eyebrow-site":"{{name}} Advertising Account Services","advertisingservice-lightcta-eyebrow-site--plural":"{{name}} Advertising Account Services","advertisingservice-lightcta-description-site":"Open and manage your advertising accounts with professional support from {{name}}. From account setup and compliance guidance to campaign launch, we help you advertise more efficiently and reach the right customers across global markets.","advertisingservice-lightcta-description-site--plural":"Open and manage your advertising accounts with professional support from {{name}}. From account setup and compliance guidance to campaign launch, we help you advertise more efficiently and reach the right customers across global markets.","advertisingservice-lightcta-feature-3-site":"Dedicated {{name}} Support","advertisingservice-lightcta-feature-3-site--plural":"Dedicated {{name}} Support","advertisingservice-accountsetup-description-site":"Business verification, regional requirements, billing settings and access permissions can make ad account opening harder than expected. {{name}} helps organize the process from initial assessment to account handover.","advertisingservice-accountsetup-description-site--plural":"Business verification, regional requirements, billing settings and access permissions can make ad account opening harder than expected. {{name}} helps organize the process from initial assessment to account handover.","advertisingservice-lightcta-button-2-site":"Explore {{name}} Ads","advertisingservice-lightcta-button-2-site--plural":"Explore {{name}}
31657 Ads","--plural":"Returns or exchanges due to product quality or logistics issues or after-sales compensation are not accepted.","common-inventory-warning-tips":"{{count}} item require replenishment","common-inventory-warning-tips--plural":"{{count}} items require replenishment","home-brand-packaging":"Custom Packaging","home-brand-packaging--plural":"Custom Packaging","common-mycj-menu-brand-packaging":"Brand Packaging","common-mycj-menu-brand-packaging--plural":"Brand Packaging","common-mycj-menu-odm":"ODM Service","common-mycj-menu-odm--plural":"ODM Service","common-mycj-menu-cj-entity":"CJ Entity","common-mycj-menu-cj-entity--plural":"CJ Entity","cjbusinesstravel-city-guangzhou-name":"Guangzhou","cjbusinesstravel-city-guangzhou-name--plural":"Guangzhou","cjbusinesstravel-city-guangzhou-nav":"Food & Trade","cjbusinesstravel-city-guangzhou-nav--plural":"Food & Trade","cjbusinesstravel-city-guangzhou-subtitle":"Food, Trade and Southern Culture","cjbusinesstravel-city-guangzhou-subtitle--plural":"Food, Trade and Southern Culture","cjbusinesstravel-xp-1-text":"Explore ancient cities, imperial palaces, temples, traditional gardens, historic neighborhoods, and villages that preserve Chinaâs rich history and culture.","cjbusinesstravel-xp-1-text--plural":"Explore ancient cities, imperial palaces, temples, traditional gardens, historic neighborhoods, and villages that preserve Chinaâs rich history and culture.","cjbusinesstravel-trip-route-4-text":"Choose how long you stay in each city.","cjbusinesstravel-trip-route-4-text--plural":"Choose how long you stay in each city.","cjbusinesstravel-xp-2-tagline":"Cities & innovation","cjbusinesstravel-xp-2-tagline--plural":"Cities & innovation","cjbusinesstravel-trip-route-5-text":"Receive and confirm your personalized itinerary.","cjbusinesstravel-trip-route-5-text--plural":"Receive and confirm your personalized itinerary.","cjbusinesstravel-trip-feature-6-text":"Additional destinations can be added according to your travel goals, schedule, and special requirements.","cjbusinesstravel-trip-feature-6-text--plural":"Additional destinations can be added according to your travel goals, schedule, and special requirements.","cjbusinesstravel-trip-route-5-title":"Confirm Your Journey","cjbusinesstravel-trip-route-5-title--plural":"Confirm Your Journey","cjbusinesstravel-xp-4-category":"Local Lifestyle","cjbusinesstravel-xp-4-category--plural":"Local Lifestyle","cjbusinesstravel-trip-route-2-title":"Select Your Cities","cjbusinesstravel-trip-route-2-title--plural":"Select Your Cities","cjbusinesstravel-trip-description-lead":"We create a personalized China itinerary based on your","cjbusinesstravel-trip-description-lead--plural":"We create a personalized China itinerary based on your","cjbusinesstravel-trip-feature-5-text":"Combine city sightseeing and cultural experiences with optional business meetings and industrial visits.","cjbusinesstravel-trip-feature-5-text--plural":"Combine city sightseeing and cultural experiences with optional business meetings and industrial visits.","cjbusinesstravel-xp-3-title":"Understand China Through Food","cjbusinesstravel-xp-3-title--plural":"Understand China Through Food","cjbusinesstravel-trip-feature-3-title":"Customized Multi-City Routes","cjbusinesstravel-trip-feature-3-title--plural":"Customized Multi-City Routes","cjbusinesstravel-trip-description-tail":". Choose one city for a deeper experience or combine several destinations into a customized multi-city journey.","cjbusinesstravel-trip-description-tail--plural":". Choose one city for a deeper experience or combine several destinations into a customized multi-city journey.","cjbusinesstravel-xp-3-category":"Chinese Food Journey","cjbusinesstravel-xp-3-category--plural":"Chinese Food Journey","cjbusinesstravel-xp-3-name":"Chinese Food","cjbusinesstravel-xp-3-name--plural":"Chinese Food","cjbusinesstravel-svc-eyebrow":"Our Travel Services","cjbusinesstravel-svc-eyebrow--plural":"Our Travel Services","cjbusinesstravel-xp-3-tagline":"Regional flavors","cjbusinesstravel-xp-3-tagline--plural":"Regional flavors","cjbusinesstravel-xp-subheading":"Featured experiences may include:","cjbusinesstravel-xp-subheading--plural":"Featured experiences may include:","cjbusinesstravel-trip-description-strong":"travel dates, budget, interests, and preferred travel style","cjbusinesstravel-trip-description-strong--plural":"travel dates, budget, interests, and preferred travel style","cjbusinesstravel-xp-4-text":"Experience a more authentic side of China through neighborhood life, local markets, traditional activities, public spaces, tea culture, and everyday transportation.","cjbusinesstravel-xp-4-text--plural":"Experience a more authentic side of China through neighborhood life, local markets, traditional activities, public spaces, tea culture, and everyday transportation.","cjbusinesstravel-trip-route-3-title":"Add Experiences","cjbusinesstravel-trip-route-3-title--plural":"Add Experiences","cjbusinesstravel-xp-2-category":"Modern China","cjbusinesstravel-xp-2-category--plural":"Modern China","cjbusinesstravel-trip-feature-2-title":"Single-City Deep Experience","cjbusinesstravel-trip-feature-2-title--plural":"Single-City Deep Experience","cjbusinesstravel-xp-4-title":"Go Beyond Traditional Sightseeing","cjbusinesstravel-xp-4-title--plural":"Go Beyond Traditional Sightseeing","cjbusinesstravel-xp-1-media-title":"Step into Chinaâs Living History","cjbusinesstravel-xp-1-media-title--plural":"Step into Chinaâs Living History","cjbusinesstravel-trip-feature-3-text":"Combine several Chinese cities into one coordinated journey based on distance, transportation, and
31657your travel interests.","cjbusinesstravel-trip-feature-3-text--plural":"Combine several Chinese cities into one coordinated journey based on distance, transportation, and your travel interests.","cjbusinesstravel-xp-3-text":"Discover the culture of different Chinese regions through local restaurants, traditional dining customs, famous dishes, markets, night streets, and authentic local snacks.","cjbusinesstravel-xp-3-text--plural":"Discover the culture of different Chinese regions through local restaurants, traditional dining customs, famous dishes, markets, night streets, and authentic local snacks.","cjbusinesstravel-trip-planner-subtitle":"Flexible cities, flexible days, and flexible experiences","cjbusinesstravel-trip-planner-subtitle--plural":"Flexible cities, flexible days, and flexible experiences","cjbusinesstravel-xp-2-name":"Modern China","cjbusinesstravel-xp-2-name--plural":"Modern China","cjbusinesstravel-trip-route-3-text":"Combine culture, food, nature, and local life.","cjbusinesstravel-trip-route-3-text--plural":"Combine culture, food, nature, and local life.","cjbusinesstravel-trip-title-lead":"Explore China Through a Journey","cjbusinesstravel-trip-title-lead--plural":"Explore China Through a Journey","cjbusinesstravel-xp-title-em":"Real China","cjbusinesstravel-xp-title-em--plural":"Real China","cjbusinesstravel-xp-4-media-alt":"Authentic Chinese local lifestyle and cultural experience","cjbusinesstravel-xp-4-media-alt--plural":"Authentic Chinese local lifestyle and cultural experience","cjbusinesstravel-svc-1-title":"Transportation Across China","cjbusinesstravel-svc-1-title--plural":"Transportation Across China","cjbusinesstravel-trip-route-4-title":"Set Your Travel Pace","cjbusinesstravel-trip-route-4-title--plural":"Set Your Travel Pace","cjbusinesstravel-trip-feature-1-text":"Your itinerary is planned according to your travel dates, available budget, personal interests, and preferred pace.","cjbusinesstravel-trip-feature-1-text--plural":"Your itinerary is planned according to your travel dates, available budget, personal interests, and preferred pace.","cjbusinesstravel-trip-feature-4-title":"Flexible Travel Duration","cjbusinesstravel-trip-feature-4-title--plural":"Flexible Travel Duration","cjbusinesstravel-trip-route-1-title":"Choose Your Dates","cjbusinesstravel-trip-route-1-title--plural":"Choose Your Dates","cjbusinesstravel-xp-4-tagline":"Everyday China","cjbusinesstravel-xp-4-tagline--plural":"Everyday China","cjbusinesstravel-xp-1-media-alt":"Historic China, traditional architecture and cultural landmarks","cjbusinesstravel-xp-1-media-alt--plural":"Historic China, traditional architecture and cultural landmarks","cjbusinesstravel-trip-planner-title":"Your Personalized China Route","cjbusinesstravel-trip-planner-title--plural":"Your Personalized China Route","cjbusinesstravel-xp-title-lead":"Experience the","cjbusinesstravel-xp-title-lead--plural":"Experience the","cjbusinesstravel-xp-3-chip-1":"Guangzhou Morning Tea","cjbusinesstravel-xp-3-chip-1--plural":"Guangzhou Morning Tea","cjbusinesstravel-xp-4-chip-4":"Old Streets","cjbusinesstravel-xp-4-chip-4--plural":"Old Streets","cjbusinesstravel-xp-3-chip-2":"Chengdu Hot Pot","cjbusinesstravel-xp-3-chip-2--plural":"Chengdu Hot Pot","cjbusinesstravel-xp-4-chip-5":"Local Communities","cjbusinesstravel-xp-4-chip-5--plural":"Local Communities","cjbusinesstravel-xp-2-chip-1":"Shanghai Skyline","cjbusinesstravel-xp-2-chip-1--plural":"Shanghai Skyline","cjbusinesstravel-xp-4-chip-6":"Hanfu Experience","cjbusinesstravel-xp-4-chip-6--plural":"Hanfu Experience","cjbusinesstravel-trip-feature-1-title":"Designed Around Your Preferences","cjbusinesstravel-trip-feature-1-title--plural":"Designed Around Your Preferences","cjbusinesstravel-xp-1-chip-5":"Suzhou Gardens","cjbusinesstravel-xp-1-chip-5--plural":"Suzhou Gardens","cjbusinesstravel-xp-1-chip-6":"Hangzhou West Lake","cjbusinesstravel-xp-1-chip-6--plural":"Hangzhou West Lake","cjbusinesstravel-xp-2-chip-6":"High-Speed Rail","cjbusinesstravel-xp-2-chip-6--plural":"High-Speed Rail","cjbusinesstravel-xp-1-chip-1":"Forbidden City","cjbusinesstravel-xp-1-chip-1--plural":"Forbidden City","cjbusinesstravel-xp-2-chip-3":"Guangzhou Night Views","cjbusinesstravel-xp-2-chip-3--plural":"Guangzhou Night Views","cjbusinesstravel-xp-3-chip-5":"Beijing Roast Duck","cjbusinesstravel-xp-3-chip-5--plural":"Beijing Roast Duck","cjbusinesstravel-xp-1-chip-2":"Great Wall","cjbusinesstravel-xp-1-chip-2--plural":"Great Wall","cjbusinesstravel-xp-2-title":"Experience Chinaâs Modern Energy","cjbusinesstravel-xp-2-title--plural":"Experience Chinaâs Modern Energy","cjbusinesstravel-xp-2-chip-2":"Shenzhen Innovation","cjbusinesstravel-xp-2-chip-2--plural":"Shenzhen Innovation","cjbusinesstravel-xp-3-chip-6":"Night Markets","cjbusinesstravel-xp-3-chip-6--plural":"Night Markets","cjbusinesstravel-xp-4-chip-1":"Local Markets","cjbusinesstravel-xp-4-chip-1--plural":"Local Markets","cjbusinesstravel-xp-1-chip-3":"Xiâan Ancient City","cjbusinesstravel-xp-1-chip-3--plural":"Xiâan Ancient City","cjbusinesstravel-xp-2-chip-5":"Chongqing Cityscape","cjbusinesstravel-xp-2-chip-5--plural":"Chongqing Cityscape","cjbusinesstravel-xp-3-chip-3":"Xiâan Noodles","cjbusinesstravel-xp-3-chip-3--plural":"Xiâan Noodles","cjbusinesstravel-xp-4-chip-2":"Traditional Tea Houses","cjbusinesstravel-xp-4-chip-2--plural":"Traditional Tea Houses","cjbusinesstravel-xp-1-chip-4":"Terracotta Army","cjbusinesstravel-xp-1-chip-4--plural":"Terracotta Army","cjbusinesstravel-xp-2-chip-4":"Hangzhou Digital Economy","cjbusinesstravel-xp-2-chip-4--plural":"Hangzhou Digital Economy","cjbusinesstravel-xp-3-chip-4":"Shanghai Cuisine","cjbusinesstravel-xp-3-chip-4--plural":"Shanghai Cuisine","cjbusinesstravel-xp-4-chip-3":"City Parks","cjbusinesstravel-xp-4-chip-3--plural":"City Parks","cjbusinesstravel-xp-intro":"Explore China through its history, modern cities, regional cuisine, and everyday local life. Select an experience to preview what can be included in your personalized journey.","cjbusinesstravel-xp-intro--plural":"Explore China through its history, modern cities, regional cuisine, and everyday local life. Select an experience to preview what can be included in your personalized journey.","cjbusinesstravel-trip-feature-2-text":"Choose one destination and explore its culture, food, landmarks, neighborhoods, and local lifestyle in greater depth.","cjbusinesstravel-trip-feature-2-text--plural":"Choose one destination and explore its culture, food, landmarks, neighborhoods, and local lifestyle in greater depth.","cjbusinesstravel-xp-3-media-title":"Taste China, One City at a Time","cjbusinesstravel-xp-3-media-title--plural":"Taste China, One City at a Time","cjbusinesstravel-xp-2-media-title":"Discover the Energy of Modern China","cjbusinesstravel-xp-2-media-title--plural":"Discover the Energy of Modern China","cjbusinesstravel-trip-title-em":"Designed for You","cjbusinesstravel-trip-title-em--plural":"Designed for You","cjbusinesstravel-xp-1-tagline":"History & heritage","cjbusinesstravel-xp-1-tagline--plural":"History & heritage","cjbusinesstravel-xp-rail-label":"Featured China experiences","cjbusinesstravel-xp-rail-label--plural":"Featured China experiences","cjbusinesstravel-xp-4-media-title":"Experience China Like a Local","cjbusinesstravel-xp-4-media-title--plural":"Experience China Like a Local","cjbusinesstravel-svc-description":"From transportation and accommodation to sightseeing and itinerary coordination, our local team helps manage the details of your journey across China.","cjbusinesstravel-svc-description--plural":"From transportation and accommodation to sightseeing and itinerary coordination, our local team helps manage the details of your journey across China.","cjbusinesstravel-trip-feature-4-text":"Adjust the total number of travel days and decide how long you would like to stay in each destination.","cjbusinesstravel-trip-feature-4-text--plural":"Adjust the total number of travel days and decide how long you would like to stay in each destination.","cjbusinesstravel-xp-eyebrow":"Featured China Experiences","cjbusinesstravel-xp-eyebrow--plural":"Featured China Experiences","cjbusinesstravel-xp-1-media-label":"History & Heritage","cjbusinesstravel-xp-1-media-label--plural":"History & Heritage","cjbusinesstravel-xp-3-media-alt":"Traditional Chinese food and local dining experience","cjbusinesstravel-xp-3-media-alt--plural":"Traditional Chinese food and local dining experience","cjbusinesstravel-xp-2-media-label":"Modern Cities","cjbusinesstravel-xp-2-media-label--plural":"Modern Cities","cjbusinesstravel-trip-feature-6-title":"More Chinese Cities Available","cjbusinesstravel-trip-feature-6-title--plural":"More Chinese Cities Available","cjbusinesstravel-trip-route-1-text":"Travel at a time that works for you.","cjbusinesstravel-trip-route-1-text--plural":"Travel at a time that works for you.","cjbusinesstravel-trip-route-2-text":"Choose one city or multiple destinations.","cjbusinesstravel-trip-route-2-text--plural":"Choose one city or multiple destinations.","cjbusinesstravel-svc-title-lead":"Travel China with","cjbusinesstravel-svc-title-lead--plural":"Travel China with","cjbusinesstravel-xp-4-media-label":"Local Lifestyle","cjbusinesstravel-xp-4-media-label--plural":"Local Lifestyle","cjbusinesstravel-xp-3-media-label":"Food Journey","cjbusinesstravel-xp-3-media-label--plural":"Food Journey","cjbusinesstravel-xp-2-media-alt":"Modern Chinese city skyline and urban lifestyle","cjbusinesstravel-xp-2-media-alt--plural":"Modern Chinese city skyline and urban lifestyle","cjbusinesstravel-trip-feature-5-title":"Travel and Business Combined","cjbusinesstravel-trip-feature-5-title--plural":"Travel and Business Combined","cjbusinesstravel-xp-1-category":"Historic China","cjbusinesstravel-xp-1-category--plural":"Historic China","cjbusinesstravel-xp-2-text":"Discover modern cities, technology, digital development, innovative industries, striking skylines, and the distinctive rhythm of contemporary urban life.","cjbusinesstravel-xp-2-text--plural":"Discover modern cities, technology, digital development, innovative industries, striking skylines, and the distinctive rhythm of contemporary urban life.","cjbusinesstravel-xp-4-name":"Local Lifestyle","cjbusinesstravel-xp-4-name--plural":"Local Lifestyle","cjbusinesstravel-xp-1-name":"Historic China","cjbusinesstravel-xp-1-name--plural":"Historic China","cjbusinesstravel-xp-1-title":"Discover Chinaâs Cultural Heritage","cjbusinesstravel-xp-1-title--plural":"Discover Chinaâs Cultural Heritage","cjbusinesstravel-trip-tag-2":"Customized Multi-City Journey","cjbusinesstravel-trip-tag-2--plural":"Customized Multi-City Journey","cjbusinesstravel-trip-tag-3":"Flexible Travel Duration","cjbusinesstravel-trip-tag-3--plural":"Flexible Travel Duration","cjbusinesstravel-svc-title-em":"Comfort and Confidence","cjbusinesstravel-svc-title-em--plural":"Comfort and Confidence","cjbusinesstravel-trip-tag-1":"Single-City Deep Experience","cjbusinesstravel-trip-tag-1--plural":"Single-City Deep Experience","cjbusinesstravel-trip-tag-4":"Optional Business Activities","cjbusinesstravel-trip-tag-4--plural":"Optional Business Activities","amount-changed-refresh":"Got it, refresh","amount-changed-refresh--plural":"Got it, refresh","amount-changed-amount-due":"Amount due","amount-changed-amount-due--plural":"Amount due","amount-changed-col-order":"Order Number","amount-changed-col-changes":"Changes","amount-changed-col-changes--plural":"Changes","amount-changed-col-reference":"Reference Number","amount-changed-title":"Payment details updated, please review before paying","amount-changed-title--plural":"Payment details updated, please review before paying","amount-changed-content":"The following orders were updated before your payment. Please review the latest details before paying:","amount-changed-content--plural":"The following orders were updated before your payment. Please review the latest details before paying:","footer-about-cjdropshipping":"About CJdropshipping","footer-about-cjdropshipping--plural":"About CJdropshipping","footer-integrations":"Integrations","footer-integrations--plural":"Integrations","footer-solutions":"Solutions","footer-solutions--plural":"Solutions","footer-whistleblower
31657-policy":"Whistleblower Policy","footer-whistleblower-policy--plural":"Whistleblower Policy","footer-mercado":"Mercado","footer-sourcing-agent":"Sourcing Agent","footer-sourcing-agent--plural":"Sourcing Agent","footer-partners":"Partners","footer-partners--plural":"Partners","footer-temu":"Temu","footer-temu--plural":"Temu","footer-shoplazza":"Shoplazza","footer-shoplazza--plural":"Shoplazza","footer-tiktok-shop":"TikTok Shop","footer-tiktok-shop--plural":"TikTok Shop","footer-nuvemshop":"Nuvemshop","footer-wed2c":"WED2C","footer-aliexpress":"AliExpress","footer-etsy":"Etsy","footer-payment-agency":"Payment Agency","footer-payment-agency--plural":"Payment Agency","footer-follow-cjdropshipping":"Follow CJdropshipping","footer-follow-cjdropshipping--plural":"Follow CJdropshipping","footer-source-and-manage-anywhere-get-the-cjdropshipping-app":"Source & Manage Anywhere - Get the CJdropshipping App","footer-source-and-manage-anywhere-get-the-cjdropshipping-app--plural":"Source & Manage Anywhere - Get the CJdropshipping App","footer-cjdropshipping-vs-others":"CJdropshipping vs Others","footer-cjdropshipping-vs-others--plural":"CJdropshipping vs Others","footer-product-sourcing-request":"Product Sourcing Request","footer-product-sourcing-request--plural":"Product Sourcing Request","footer-quality-assurance":"Quality Assurance","footer-quality-assurance--plural":"Quality Assurance","footer-global-products":"Global Products","order-summary-fee-bill":"Bill","order-summary-fee-bill--plural":"Bill","ai-assistant-case-empty":"Case content is unavailable.","ai-assistant-case-empty--plural":"Case content is unavailable.","ai-assistant-send":"Send","ai-assistant-view-detail":"View detail","ai-assistant-view-detail--plural":"View detail","ai-assistant-select-product":"Select product","ai-assistant-select-product--plural":"Select product","ai-assistant-product-added-success":"Added to my products successfully.","ai-assistant-search-at-least-3-characters":"Please enter at least 3 characters to search","ai-assistant-search-at-least-3-characters--plural":"Please enter at least 3 characters to search","ai-assistant-failed-to-load-messages":"Failed to load earlier messages.","ai-assistant-failed-to-load-messages--plural":"Failed to load earlier messages.","ai-assistant-input-max-length-reached":"Maximum 10,000 characters reached.","ai-assistant-input-max-length-reached--plural":"Maximum 10,000 characters reached.","ai-assistant-stop-generating":"Stop generating","ai-assistant-stop-generating--plural":"Stop generating","admin-select-conversation":"Select a conversation from the dropdown above to view messages.","admin-select-conversation--plural":"Select a conversation from the dropdown above to view messages.","ai-assistant-product-add-failed":"The server is busy now. Please try again later.","ai-assistant-opp-type-blue-ocean":"Blue ocean","ai-assistant-opp-type-blue-ocean--plural":"Blue ocean","ai-assistant-opp-metric-competition":"Competition","ai-assistant-opp-metric-competition--plural":"Competition","ai-assistant-opp-metric-growth":"Growth","ai-assistant-opp-metric-growth--plural":"Growth","ai-assistant-opp-metric-monthly-sales":"Monthly sales","ai-assistant-opp-metric-monthly-sales--plural":"Monthly sales","ai-assistant-recommended":"Recommended","ai-assistant-order-place-your-choice":"Your choice","ai-assistant-order-place-your-choice--plural":"Your choice","ai-assistant-opp-metric-ad-density":"Ad density","ai-assistant-opp-metric-ad-density--plural":"Ad density","ai-assistant-opp-score":"Score","ai-assistant-opp-score--plural":"Score","ai-assistant-opp-rep-market-price":"Market price","ai-assistant-opp-rep-market-price--plural":"Market price","ai-assistant-opp-metric-ad-share":"Ad share","ai-assistant-opp-metric-ad-share--plural":"Ad share","ai-assistant-opp-low-confidence":"Low confidence","ai-assistant-opp-low-confidence--plural":"Low confidence","ai-assistant-candidates-empty-neutral":"No candidates available to show.","ai-assistant-candidates-empty-neutral--plural":"No candidates available to show.","ai-assistant-opp-type-golden-cross":"Golden cross","ai-assistant-opp-type-golden-cross--plural":"Golden cross","ai-assistant-opp-type-watch":"Watch","ai-assistant-opp-type-watch--plural":"Watch","ai-assistant-opp-representatives":"Market reference · not CJ products","ai-assistant-opp-representatives--plural":"Market reference · not CJ products","ai-assistant-opp-budget-overflow":"Some content was left out for length â ask about a category to see the rest.","ai-assistant-opp-budget-overflow--plural":"Some content was left out for length â ask about a category to see the rest.","ai-assistant-open-in-full-page":"Opens the full page","ai-assistant-open-in-full-page--plural":"Opens the full page","ai-assistant-logistics-estimation":"Logistics Estimation","ai-assistant-logistics-estimation--plural":"Logistics Estimation","ai-assistant-report":"Report","ai-assistant-exec-starting":"Getting things under way","ai-assistant-exec-starting--plural":"Getting things under way","ai-assistant-workspace-generating":"Workspace is being generated","ai-assistant-workspace-generating--plural":"Workspace is being generated","ai-assistant-scroll-to-latest":"Scroll to latest","ai-assistant-scroll-to-latest--plural":"Scroll to latest","ai-assistant-workspace-preparing":"Preparing workspace content...","ai-assistant-workspace-preparing--plural":"Preparing workspace content...","ai-assistant-exec-done":"All steps finished","ai-assistant-exec-done--plural":"All steps finished","ai-assistant-copy-message":"Copy message","ai-assistant-copy-message--plural":"Copy message","ai-assistant-no-workspace-content":"No w
31657orkspace content","ai-assistant-no-workspace-content--plural":"No workspace content","ai-assistant-similar-candidates":"CJ Similar Candidates","ai-assistant-similar-candidates--plural":"CJ Similar Candidates","ai-assistant-sourcing-request":"Sourcing Request","ai-assistant-opportunity-categories":"Opportunity Categories","ai-assistant-opportunity-categories--plural":"Opportunity Categories","ai-assistant-exec-waiting":"Lining up this batch","ai-assistant-exec-waiting--plural":"Lining up this batch","ai-assistant-exec-show-all":"Show earlier steps","ai-assistant-exec-show-all--plural":"Show earlier steps","ai-assistant-task-tab-finished":"Done","ai-assistant-task-tab-finished--plural":"Done","ai-assistant-done":"Done","ai-assistant-done--plural":"Done","ai-assistant-my-stores":"View my stores","ai-assistant-my-stores--plural":"View my stores","ai-assistant-decision-remaining":"Still needed","ai-assistant-decision-remaining--plural":"Still needed","ai-assistant-stores-in-task":"Stores in this task","ai-assistant-stores-in-task--plural":"Stores in this task","ai-assistant-task-close-title":"Close this task?","ai-assistant-task-close-title--plural":"Close this task?","ai-assistant-dec-processing":"Processing","ai-assistant-max-6-images-can-be-uploaded":"Up to 6 images can be uploaded.","ai-assistant-max-6-images-can-be-uploaded--plural":"Up to 6 images can be uploaded.","ai-assistant-dec-on-hold":"on hold","ai-assistant-dec-on-hold--plural":"on hold","ai-assistant-task-got-it":"Got it","ai-assistant-task-tab-running":"Processing","ai-assistant-task-cancel-title":"Cancel this queued task?","ai-assistant-task-cancel-title--plural":"Cancel this queued task?","ai-assistant-task-status-partial":"Partly done","ai-assistant-task-status-partial--plural":"Partly done","ai-assistant-stores-truncated":"More stores not listed","ai-assistant-stores-truncated--plural":"More stores not listed","ai-assistant-task-cancel-go":"Cancel task","ai-assistant-task-cancel-go--plural":"Cancel task","ai-assistant-copy-for-support":"Copy for support","ai-assistant-copy-for-support--plural":"Copy for support","ai-assistant-task-status-pending":"Queued","ai-assistant-task-status-pending--plural":"Queued","ai-assistant-dec-unknown":"unknown","ai-assistant-dec-unknown--plural":"unknown","ai-assistant-task-status-running":"Processing","ai-assistant-task-tab-pending":"Queued","ai-assistant-task-tab-pending--plural":"Queued","ai-assistant-task-close-go":"Close task","ai-assistant-task-close-go--plural":"Close task","ai-assistant-task-cancel":"Cancel","ai-assistant-need-decision-suffix":"need your decision","ai-assistant-need-decision-suffix--plural":"need your decision","ai-assistant-task-empty":"No running task in this conversation. Ask the assistant to place & pay orders and the progress will appear here.","ai-assistant-task-empty--plural":"No running task in this conversation. Ask the assistant to place & pay orders and the progress will appear here.","ai-assistant-select-all-none":"Select all / none","ai-assistant-select-all-none--plural":"Select all / none","ai-assistant-orders-succeeded":"Succeeded","ai-assistant-task-collapse":"Collapse","ai-assistant-opened-handle-then-done":"Opened â handle it, then mark done","ai-assistant-opened-handle-then-done--plural":"Opened â handle it, then mark done","ai-assistant-task-already-final-title":"This task is already finished","ai-assistant-task-already-final-title--plural":"This task is already finished","ai-assistant-copied":"Copied","ai-assistant-copied--plural":"Copied","ai-assistant-task-cancel-too-late-body":"It left the queue before I could cancel it, so nothing changed. Use âCloseâ to stop it instead.","ai-assistant-task-cancel-too-late-body--plural":"It left the queue before I could cancel it, so nothing changed. Use âCloseâ to stop it instead.","ai-assistant-process-store-orders":"Process Store Orders","ai-assistant-process-store-orders--plural":"Process Store Orders","ai-assistant-task-status-interrupted":"Interrupted","ai-assistant-task-status-interrupted--plural":"Interrupted","ai-assistant-task-status-failed":"Failed","ai-assistant-task-expand":"Expand","ai-assistant-order":"Order","ai-assistant-dec-done":"done","ai-assistant-dec-done--plural":"done","ai-assistant-paid":"Paid","ai-assistant-view-per-order":"View per-order","ai-assistant-view-per-order--plural":"View per-order","ai-assistant-task-already-final-body":"Nothing changed â this task had already wrapped up on its own. Current status: {status}.","ai-assistant-task-already-final-body--plural":"Nothing changed â it had already wrapped up on its own. Current status:","ai-assistant-not-done-yet":"Not done yet","ai-assistant-not-done-yet--plural":"Not done yet","ai-assistant-orders-failed":"Failed","ai-assistant-task-detail
31657s":"Details","ai-assistant-remove":"Remove","ai-assistant-on-hold":"on hold","ai-assistant-on-hold--plural":"on hold","ai-assistant-task-close":"Close","ai-assistant-task-gone":"This task no longer exists.","ai-assistant-task-gone--plural":"This task no longer exists.","ai-assistant-task-cancel-too-late-title":"This task has already started","ai-assistant-task-cancel-too-late-title--plural":"This task has already started","ai-assistant-needs-decision":"Needs your decision","ai-assistant-needs-decision--plural":"Needs your decision","ai-assistant-task-status-success":"Done","ai-assistant-task-status-success--plural":"Done","ai-assistant-task-status-canceled":"Canceled","ai-assistant-task-keep":"Keep it","ai-assistant-task-keep--plural":"Keep it","ai-assistant-task-tab-empty":"Nothing here right now.","ai-assistant-task-tab-empty--plural":"Nothing here right now.","ai-assistant-decision-none-checked":"These orders will stay on hold. Select at least one order to proceed.","ai-assistant-decision-none-checked--plural":"These orders will stay on hold. Select at least one order to proceed.","ai-assistant-stores":"Stores","ai-assistant-stores--plural":"Stores","ai-assistant-task-not-yours":"This task does not belong to the current account. You can start a new one.","ai-assistant-task-not-yours--plural":"This task does not belong to the current account. You can start a new one.","ai-assistant-orders-on-hold":"On hold","ai-assistant-orders-on-hold--plural":"On hold","ai-assistant-task-close-body":"Orders already paid stay done; any unresolved exceptions are kept on hold in the queue â you can reopen it later.","ai-assistant-task-close-body--plural":"Orders already paid stay done; any unresolved exceptions are kept on hold in the queue â you can reopen it later.","ai-assistant-dec-pending":"pending","ai-assistant-dec-pending--plural":"pending","ai-assistant-total-to-pay":"Total you\'ll pay","ai-assistant-total-to-pay--plural":"Total you\'ll pay","ai-assistant-store-auth-wait-stream":"You can submit once the reply above is complete.","ai-assistant-store-auth-wait-stream--plural":"You can submit once the reply above is complete.","ai-assistant-store-auth-unsupported":"This card needs a newer version of the app. Please update and try again.","ai-assistant-store-auth-unsupported--plural":"This card needs a newer version of the app. Please update and try again.","ai-assistant-agreement-privacy-policy":"Privacy Policy","ai-assistant-orders":"Orders","ai-assistant-amount-pending":"Amounts are still being calculated.","ai-assistant-amount-pending--plural":"Amounts are still being calculated.","ai-assistant-coupon-change-failed":"Couldn\'t apply this coupon â it may have just expired. Please review and try again.","ai-assistant-coupon-change-failed--plural":"Couldn\'t apply this coupon â it may have just expired. Please review and try again.","ai-assistant-product-quantity":"Product Quantity","ai-assistant-product-quantity--plural":"Product Quantity","ai-assistant-store-auth-authorized":"This store is connected now.","ai-assistant-store-auth-authorized--plural":"This store is connected now.","ai-assistant-coupon":"Coupon","ai-assistant-sync-range":"Sync Range","ai-assistant-sync-range--plural":"Sync Range","ai-assistant-variant-selection-limit":"You can select up to 3 variants.","ai-assistant-variant-selection-limit--plural":"You can select up to 3 variants.","ai-assistant-recheck":"Recheck","ai-assistant-date-start":"Start","ai-assistant-pay-expires-in":"Pay expires in","ai-assistant-pay-expires-in--plural":"Pay expires in","ai-assistant-coupon-none":"No coupon","ai-assistant-coupon-none--plural":"No coupon","ai-assistant-pay-remind-once":"We haven\'t confirmed the payment for this batch yet. You can pay again or come back later.","ai-assistant-pay-remind-once--plural":"We haven\'t confirmed the payment for this batch yet. You can pay again or come back later.","ai-assistant-product-cost":"Product Cost","ai-assistant-store-auth-timeout":"We couldn\'t confirm the result. Please don\'t submit again â ask me to check it for you.","ai-assistant-store-auth-timeout--plural":"We couldn\'t confirm the result. Please don\'t submit again â ask me to check it for you.","ai-assistant-payment-round":"Payment roun
31657d","ai-assistant-payment-round--plural":"Payment round","ai-assistant-task-card-done":"Done","ai-assistant-task-card-done--plural":"Done","ai-assistant-coupon-applying":"Applyingâ¦","ai-assistant-coupon-applying--plural":"Applyingâ¦","ai-assistant-store-not-found":"No matching store","ai-assistant-store-not-found--plural":"No matching store","ai-assistant-pay-on-cashier":"Pay via cashier","ai-assistant-pay-on-cashier--plural":"Pay via cashier","ai-assistant-cost-diff-same":"same","ai-assistant-cost-diff-same--plural":"same","ai-assistant-payment-summary":"Payment Summary","ai-assistant-payment-summary--plural":"Payment Summary","ai-assistant-max-10mb-per-file-up-to-6-images":"Max 10MB per file. Up to 6 images can be uploaded.","ai-assistant-max-10mb-per-file-up-to-6-images--plural":"Max 10MB per file. Up to 6 images can be uploaded.","ai-assistant-coupon-confirm":"Confirm coupon change","ai-assistant-coupon-confirm--plural":"Confirm coupon change","ai-assistant-price-locked":"Price locked, will be recalculated","ai-assistant-price-locked--plural":"Price locked, will be recalculated","ai-assistant-open-product-detail":"Open product detail","ai-assistant-open-product-detail--plural":"Open product detail","ai-assistant-cost-difference":"Difference","ai-assistant-duty":"Duty","ai-assistant-duty--plural":"Duty","ai-assistant-store-auth-reveal":"Show","ai-assistant-store-auth-reveal--plural":"Show","ai-assistant-agreement-user-agreement":"User Agreement","ai-assistant-store-auth-all-required":"All fields are required","ai-assistant-store-auth-all-required--plural":"All fields are required","ai-assistant-sourcing-request-result":"Sourcing Request Result","ai-assistant-sourcing-request-result--plural":"Sourcing Request Result","ai-assistant-generating-pdf":"Generating PDF...","ai-assistant-generating-pdf--plural":"Generating PDF...","ai-assistant-coupon-auto":"Best coupon (automatic)","ai-assistant-coupon-auto--plural":"Best coupon (automatic)","ai-assistant-agreement-refund-policy":"Refund, Resend & Returns Policy","ai-assistant-agreement-refund-policy--plural":"Refund, Resend & Returns Policy","ai-assistant-store-auth-hide":"Hide","ai-assistant-candidates-trimmed":"Some candidates are not all shown.","ai-assistant-candidates-trimmed--plural":"Some candidates are not all shown.","ai-assistant-date-end":"End","ai-assistant-view-order-list":"View order list","ai-assistant-view-order-list--plural":"View order list","ai-assistant-store-auth-link-blocked":"This authorization link looks invalid, so it was not opened. Please contact support.","ai-assistant-store-auth-link-blocked--plural":"This authorization link looks invalid, so it was not opened. Please contact support.","ai-assistant-export-pdf-failed":"Failed to generate PDF. Please try again.","ai-assistant-export-pdf-failed--plural":"Failed to generate PDF. Please try again.","ai-assistant-not-now-review-first":"Not now â I\'ll review first","ai-assistant-not-now-review-first--plural":"Not now â I\'ll review first","ai-assistant-pay":"Pay","ai-assistant-view-details":"View details","ai-assistant-view-details--plural":"View details","ai-assistant-task-card-expired":"Expired","ai-assistant-form-required-hint":"Please fill the required fields.","ai-assistant-form-required-hint--plural":"Please fill the required fields.","ai-assistant-close-1":"Queued task canceled.","ai-assistant-close-1--plural":"Queued task canceled.","ai-assistant-close-3":"Task closed automatically after a long wait.","ai-assistant-close-3--plural":"Task closed automatically after a long wait.","ai-assistant-close-2":"Task closed manually.","ai-assistant-close-2--plural":"Task closed manually.","ai-assistant-order-fail-9019":"This order is already paid and has been removed from this run.","ai-assistant-order-fail-9019--plural":"This order is already paid and has been removed from this run.","ai-assistant-pipe-done":"Done","ai-assistant-pipe-done--plural":"Done","ai-assistant-order-fail-9018":"This order cannot be placed again in its current status.","ai-assistant-order-fail-9018--plural":"This order cannot be placed again in its current status.","ai-assistant-order-fail-9017":"We could not find this order in the selected store.","ai-assistant-order-fail-9017--plural":"We could not find this order in the selected store.","ai-assistant-order-fail-9016":"This order did not meet the submission requirements. Check the order list for details.","ai-assistant-order-fail-9016--plural":"This order did not meet the submission requirements. Check the order list for details.","ai-assistant-pipe-fix-exceptions":"Fix exceptions","ai-assistant-pipe-fix-exceptions--plural":"Fix exceptions","ai-assistant-order-fail-9013":"This order has an open dispute and cannot be placed.","ai-assistant-order-fail-9013--plural":"This order has an open dispute and cannot be placed.","ai-assistant-step-validate":"Validating orders","ai-assistant-step-validate--plural":"Validating orders","ai-assistant-step-pay-confirm":"Confirming","ai-assistant-step-pay-confirm--plural":"Confirming","ai-assistant-step-submit":"Submitting orders","ai-assistant-step-submit--plural":"Submitting orders","ai-assistant-abort-3":"The task ran past its continuation limit and stopped.","ai-assistant-abort-3--plural":"The task ran past its continuation limit and stopped.","ai-assistant-abort-2":"The queue was full, so the task stopped. You can start it again.","ai-assistant-abort-2--plural":"The queue was full, so the task stopped. You can start it again.","ai-assistant-abort-5":"One of the steps failed.","ai-assistant-abort-5--plural":"One of the steps failed. See the step list above.","ai-assistant-abort-4":"The saved credentials were missing, so the task stopped.","ai-assistant-abort-4--plural":"The saved credentials were missing, so the task stopped.","ai-assistant-abort-1":"Your login session expired, so the task stopped.","ai-assistant-abort-1--plural":"Your login session expired, so the task stopped.","ai-assistant-task-canceled":"The task was canceled.","ai-assistant-task-canceled--plural":"The task was canceled.","ai-assistant-abort-7":"The task could not recover after submitting.","ai-assistant-abort-7--plural":"The task could not recover after submitting.","ai-assistant-abort-6":"The amounts did not match at submission, so nothing was charged.","ai-assistant-abort-6--plural":"The amounts did not match at submission, so nothing was charged.","ai-assistant-abort-8":"The pulled orders did not match the list, so the task stopped.","ai-assistant-abort-8--plural":"The pulled orders did not match the list, so the task stopped.","ai-assistant-step-pick":"Adding to Orders Picking","ai-assistant-step-pick--plural":"Adding to Orders Picking","ai-assistant-task-success":"All done.","ai-assistant-task-success--plural":"All done.","ai-assistant-task-failed":"The task failed.","ai-assistant-task-failed--plural":"The task failed.","ai-assistant-task-center":"Tasks","ai-assistant-task-center--plural":"Tasks","ai-assistant-order-fail-generic":"This batch wasn\'t paid. Please try again later or check the order list.","ai-assistant-order-fail-generic--plural":"This batch wasn\'t paid. Please try again later or check the order list.","ai-assistant-pipe-pull-triage":"Pull & triage","ai-assistant-pipe-pull-triage--plural":"Pull & triage","ai-assistant-task-partial":"Done. Some orders are still on hold.","ai-assistant-task-partial--plural":"Done. Some orders are still on hold.","ai-assistant-step-collecting-orders":"Collecting orders","ai-assistant-step-collecting-orders--plural":"Collecting orders","ai-assistant-step-pay-precheck":"Pre-checking payment","ai-assistant-step-pay-precheck--plural":"Pre-checking payment","ai-assistant-task-interrupted":"The task was interrupted.","ai-assistant-task-interrupted--plural":"The task was interrupted.","ai-assistant-step-sync-store":"Syncing store orders","ai-assistant-step-sync-store--plural":"Syncing store orders","ai-assistant-order-fail-9009":"Skipped in this run (duplicate or out of scope).","ai-assistant-order-fail-9009--plural":"Skipped in this run (duplicate or out of scope).","ai-assistant-order-fail-9008":"Store sync timed out. Please try again later.","ai-assistant-order-fail-9008--plural":"Store sync timed out. Please try again later.","ai-assistant-order-fail-9007":"We could not create the payment order. Please try again.","ai-assistant-order-fail-9007--plural":"We could not create the payment order. Please try again.","ai-assistant-order-fail-9005":"The product weight changed. The amount needs to be confirmed again.","ai-assistant-order-fail-9005--plural":"The product weight changed. The amount needs to be confirmed again.","ai-assistant-order-fail-9004":"This bundle has a configuration error and cannot be placed.","ai-assistant-order-fail-9004--plural":"This bundle has a configuration error and cannot be placed.","ai-assistant-order-fail-9003":"Fulfillment details (customs, weight, declaration) are missing for this product.","ai-assistant-order-fail-9003--plural":"Fulfillment details (customs, weight, declaration) are missing for this product.","ai-assistant-step-pay-execute":"Paying","ai-assistant-order-fail-9002":"This order is incomplete. Check the sourcing progress under Incomplete Orders.","ai-assistant-order-fail-9002--plural":"This order is incomplete. Check the sourcing progress under Incomplete Orders.","ai-assistant-pipe-pay-normal":"Pay normal orders","ai-assistant-pipe-pay-normal--plural":"Pay normal orders","ai-assistant-order-fail-9001":"Something went wrong with this order. Please try again later.","ai-assistant-order-fail-9001--plural":"Something went wrong with this order. Please try again later.","ai-assistant-step-precheck":"Pre-checking orders","ai-assistant-step-precheck--plural":"Pre-checking orders","ai-assistant-agreement":"By clicking, you agree to the {userAgreement}, {privacyPolicy} and {refundPolicy}.","ai-assistant-agreement--plural":"By clicking, you agree to the {userAgreement}, {privacyPolicy} and {refundPolicy}.","ai-assistant-stores-all":"All Stores","ai-assistant-stores-all--plural":"All Stores","ai-assistant-info-locked":"Locked","ai-assistant-info-locked--plural":"Locked","ai-assistant-payment-method":"Payment Method","ai-assistant-cj-wallet":"CJ Wallet","ai-assistant-cj-wallet--plural":"CJ Wallet","ai-assistant-exec-pill-partial":"Partial","ai-assistant-exec-pill-partial--plural":"Partial","ai-assistant-exec-pill-completed":"Completed","ai-assistant-exec-pill-failed":"Failed","wallet-remaining-limit":"Remaining Limit","wallet-remaining-limit--plural":"Remaining Limit","ai-assistant-per-order":"order","ai-assistant-total-icms":"Total ICMS","ai-assistant-total-icms--plural":"Total ICMS","ai-assistant-customs-duty":"Customs Duty","ai-assistant-customs-duty--plural":"Customs Duty","ai-assistant-price-lock-expired":"Price lock expired â tap Recheck to refresh","ai-assistant-price-lock-expired--plural":"Price lock expired â tap Recheck to refresh","ai-assistant-customs-clearance-fees":"Customs Clearance Fees","ai-assistant-customs-clearance-fees--plural":"Customs Clearance Fees","ai-assistant-total-shipping-cost":"Total Shipping Cost","ai-assistant-label-handling-cost":"Total Product Label Handling Cost","ai-assistant-label-handling-cost--plural":"Total Product Label Handling Cost","ai-assistant-batch-payable-for":"Batch still payable for","ai-assistant-batch-payable-for--plural":"Batch still payable for","ai-assistant-amount-off":"Amount Off","ai-assistant-total-vat-upon-ioss":"Total VAT upon IOSS","ai-assistant-total-vat-upon-ioss--plural":"Total VAT upon IOSS","ai-assistant-total-ioss-handling-fee":"Total IOSS Handling Fee","ai-assistant-total-ioss-handling-fee--plural":"Total IOSS Handling Fee","ai-assistant-taxes":"Taxes","ai-assistant-taxes--plural":"Taxes","ai-assistant-total-duty":"Total Duty","ai-assistant-total-duty--plural":"Total Duty","ai-assistant-price-lock-recheck-note":"When the lock ends, you\'ll need to Recheck before paying","ai-assistant-price-lock-recheck-note--plural":"When the lock ends, you\'ll need to Recheck before paying","ai-assistant-average-cogs":"Average COGS","ai-assistant-average-cogs--plural":"Average COGS","ai-assistant-total-product-cost":"Total Product Cost","common-top-cj-chrome-extension-is-only-available-on-google-chrome":"CJ Chrome Extension is only available on Google Chrome. Please switch to Chrome and try again.","common-top-cj-chrome-extension-is-only-available-on-google-chrome--plural":"CJ Chrome Extension is only available on Google Chrome. Please switch to Chrome and try again.","common-top-browser-not-supported":"Browser Not Supported","common-top-browser-not-supported--plural":"Browser Not Supported","common-top-extension-ready":"CJ Chrome Extension Is Ready","common-top-extension-ready--plural":"CJ Chrome Extension Is Ready","common-top-continue":"Continue","common-top-extension-ready-continue-to-the-platform-you
31657-selected":"The extension is installed. Continue to the platform you selected.","common-top-extension-ready-continue-to-the-platform-you-selected--plural":"The extension is installed. Continue to the platform you selected.","common-top-if-you-had-installed-the-extension-please-click-refresh-button":"If you had installed the extension, please click Refresh button.","common-top-if-you-had-installed-the-extension-please-click-refresh-button--plural":"If you had installed the extension, please click Refresh button.","common-top-close":"Close","common-top-refresh-page-required":"Refresh Page Required:","common-top-refresh-page-required--plural":"Refresh Page Required:","ai-assistant-orders-synced":"Synced","ai-assistant-orders-synced--plural":"Synced","ai-assistant-amount-paid":"Amount paid","ai-assistant-amount-paid--plural":"Amount paid","common-auto-order-and-pay":"Auto order & pay","common-auto-order-and-pay--plural":"Auto order & pay","common-auto-pay-handle-with-ai":"Handle with AI","common-auto-pay-handle-with-ai--plural":"Handle with AI","common-auto-pay-top-up":"Top up","common-auto-pay-top-up--plural":"Top up","common-auto-pay-pending-tips":"{{count}} orders are waiting for your decision.","common-auto-pay-pending-tips--plural":"{{count}} orders are waiting for your decision.","common-auto-pay-to-order-list":"To Order List","common-auto-pay-to-order-list--plural":"To Order List","common-auto-pay-low-balance-tips":"Low CJ Wallet â covers about {{count}} days. Top up to avoid pauses.","common-auto-pay-low-balance-tips--plural":"Low CJ Wallet â covers about {{count}} days. Top up to avoid pauses.","ai-assistant-coupon-unusable":"Not available","ai-assistant-coupon-unusable--plural":"Not available","ai-assistant-done-needs-open":"Open the link above first","ai-assistant-done-needs-open--plural":"Open the link above first","ai-assistant-paid-badge":"Paid","ai-assistant-decision-done-missing":"Not marked done yet","ai-assistant-decision-done-missing--plural":"Not marked done yet","ai-assistant-copy-failed":"Couldn\'t copy automatically â please select the text and copy it manually.","ai-assistant-copy-failed--plural":"Couldn\'t copy automatically â please select the text and copy it manually.","ai-assistant-copy-todo":"Copy to-do","ai-assistant-copy-todo--plural":"Copy to-do","ai-assistant-decision-done-missing-tip":"Handle them and press Done, or pick âNot done yetâ â submitting now puts these orders on hold and they will not come back to a card.","ai-assistant-decision-done-missing-tip--plural":"Handle them and press Done, or pick âNot done yetâ â submitting now puts these orders on hold and they will not come back to a card.","ai-assistant-payment-processing":"Processingâ¦","ai-assistant-payment-processing--plural":"Processingâ¦","ai-assistant-paid-at":"Paid at","ai-assistant-paid-at--plural":"Paid at","ai-assistant-coupon-usable":"Yes","ai-assistant-coupon-rule-off-only":"{off} off","ai-assistant-coupon-rule-off-only--plural":"{off} off","ai-assistant-coupon-rule":"{off} off on a purchase of {min} or more","ai-assistant-coupon-rule--plural":"{off} off on a purchase of {min} or more","ai-assistant-coupon-not-to-use":"Not to Use","ai-assistant-coupon-not-to-use--plural":"Not to Use","ai-assistant-payment-window-expires":"Payment window expires in {time}","ai-assistant-payment-window-expires--plural":"Payment window expires in {time}","ai-assistant-price-lock-ends":"Price lock ends in {time} â tap Recheck to refresh the price before paying","ai-assistant-price-lock-ends--plural":"Price lock ends in {time} â tap Recheck to refresh the price before paying","ai-assistant-clock-info-lock":"Information lock validity period: {time}","ai-assistant-clock-info-lock--plural":"Information lock validity period: {time}","ai-assistant-clock-lock-expired":"The lock has expired","ai-assistant-clock-lock-expired--plural":"The lock has expired","ai-assistant-clock-info-lock-tip":"Price, shipping and stock stay fixed until this ends. After that, tap Recheck before paying.","ai-assistant-clock-info-lock-tip--plural":"Price, shipping and stock stay fixed until this ends. After that, tap Recheck before paying.","ai-assistant-clock-inventory-reserved":"Inventory Reserved: {time}","ai-assistant-clock-inventory-reserved--plural":"Inventory Reserved: {time}","ai-assistant-clock-lock-expired-tip":"The price has expired. Tap Recheck before paying â the price may have changed.","ai-assistant-clock-lock-expired-tip--plural":"The price has expired. Tap Recheck before paying â the price may have changed.","ai-assistant-clock-inventory-reserved-tip":"Please make payment within 24 hours during which the inventory will be reserved. After it, the inventory will be released.","ai-assistant-clock-inventory-released":"Inventory Released","ai-assistant-clock-inventory-released-tip":"Inventory has been released as the order was not paid within 24 hours. The inventory status may change, so please pay the order timely.","ai-assistant-task-tab-ended":"Ended","ai-assistant-settlement-reminder-view":"View","ai-assistant-settlement-frozen-paid":"Paid {amount}","ai-assistant-settlement-frozen-paid--plural":"Paid {amount}","ai-assistant-settlement-frozen-awaiting":"Awaiting payment","ai-assistant-settlement-frozen-awaiting--plural":"Awaiting payment","ai-assistant-settlement-frozen-pay-now":"Pay now","ai-assistant-settlement-frozen-pay-now--plural":"Pay now","ai-assistant-settlement-reminder":"{count} payment pending","ai-assistant-settlement-reminder--plural":"{count} payments pending","ai-assistant-exec-waiting-for-you":"Waiting for you","ai-assistant-exec-waiting-for-you--plural":"Waiting for you","ai-assistant-exec-view-in-tasks":"View in Tasks","ai-assistant-exec-view-in-tasks--plural":"View in Tasks","ai-assistant-cashier-hint":"This payment can\'t be completed with CJ Wallet here. Please pay on the cashier page.","ai-assistant-cashier-hint--plural":"This payment can\'t be completed with CJ Wallet here. Please pay on the cashier page.","ai-assistant-pay-amount-on-cashier":"Pay {amount} via cashier","ai-assistant-pay-amount-on-cashier--plural":"Pay {amount} via cashier","ai-assistant-cashier-retry-wallet":"Try CJ Wallet again","ai-assistant-cashier-retry-wallet--plural":"Try CJ Wallet again","ai-assistant-pay-blocked-paid":"This order has already been paid.","ai-assistant-pay-blocked-paid--plural":"This order has already been paid.","ai-assistant-pay-blocked-processing":"Payment is processing, please wait.","ai-assistant-pay-blocked-processing--plural":"Payment is processing, please wait.","ai-assistant-pay-blocked-price-lock":"The price lock on this order has expired. Please recheck it before paying.","ai-assistant-pay-blocked-price-lock--plural":"The price lock on this order has expired. Please recheck it before paying.","ai-assistant-pay-blocked-abnormal":"Payment result is being confirmed. Please do not pay again.","ai-assistant-pay-blocked-abnormal--plural":"Payment result is being confirmed. Please do not pay again.","ai-assistant-form-amount-invalid":"Enter an amount above 0, with up to 2 decimal places.","ai-assistant-form-amount-invalid--plural":"Enter an amount above 0, with up to 2 decimal places.","ai-assistant-form-hours-invalid":"Enter a whole number within the allowed range.","ai-assistant-form-hours-invalid--plural":"Enter a whole number within the allowed range.","ai-assistant-form-remove":"Remove","ai-assistant-form-time-invalid":"Enter a time as HH:mm.","ai-assistant-form-time-invalid--plural":"Enter a time as HH:mm.","ai-assistant-autopay-handle":"Handle","ai-assistant-autopay-handle--plural":"Handle","ai-assistant-form-add-time":"Add","ai-assistant-pay-not-started":"This payment didn\'t start. You can tap Pay again â you won\'t be charged twice.","ai-assistant-pay-not-started--plural":"This payment didn\'t start. You can tap Pay again â you won\'t be charged twice.","ai-assistant-order-fail-9026":"This order is over your auto-pay limit. It was not placed or charged. Please confirm payment on the order list.","ai-assistant-order-fail-9026--plural":"This order is over your auto-pay limit. It was not placed or charged. Please confirm payment on the order list.","ai-assistant-pay-blocked-not-ai":"This order was not placed by AI. Please pay at the checkout page.","ai-assistant-pay-blocked-not-ai--plural":"This order was not placed by AI. Please pay at the checkout page.","ai-assistant-unread-messages":"unread messages","ai-assistant-unread-messages--plural":"unread messages","ai-assistant-select-stores":"Select stores","ai-assistant-select-stores--plural":"Select stores","ai-assistant-form-date-invalid":"Pick a date within the allowed range â no later than today in the selected time zone.","ai-assistant-form-date-invalid--plural":"Pick a date within the allowed range â no later than today in the selected time zone.","ai-assistant-decision-run-groups":"run {count} group","ai-assistant-decision-run-groups--plural":"run {count} groups","ai-assistant-decision-retried-title":"Didn\'t go through last time â choose again","ai-assistant-decision-retried-title--plural":"Didn\'t go through last time â choose again","ai-assistant-decision-group-index":"Group {index} / {total}","ai-assistant-decision-group-index--plural":"Group {index} / {total}","ai-assistant-pay-cancelled-note":"You cancelled this payment. The order stays in your order list and remains payable for {N} more hour â just tell me when you\'re ready and I\'ll bring it back.","ai-assistant-pay-cancelled-note--plural":"You cancelled this payment. The order stays in your order list and remains payable for {N} more hours â just tell me when you\'re ready and I\'ll bring it back.","ai-assistant-pay-cancelled":"Payment cancelled","ai-assistant-pay-cancelled--plural":"Payment cancelled","ai-assistant-pay-cancelled-note-no-hours":"You cancelled this payment. The order stays in your order list â just tell me when you\'re ready and I\'ll bring it back.","ai-assistant-pay-cancelled-note-no-hours--plural":"You cancelled this payment. The order stays in your order list â just tell me when you\'re ready and I\'ll bring it back.","ai-assistant-settlement-frozen-cancelled":"Cancelled · {amount}","ai-assistant-settlement-frozen-cancelled--plural":"Cancelled · {amount}","ai-assistant-task-closed-manually-count":"Closed manually · {n} succeeded","ai-assistant-task-closed-manually-count--plural":"Closed manually · {n} succeeded","ai-assistant-task-closed-timeout-count":"Closed after a long wait · {n} succeeded","ai-assistant-task-closed-timeout-count--plural":"Closed after a long wait · {n} succeeded","ai-assistant-task-closed-manually":"Closed manually","ai-assistant-task-closed-manually--
31657plural":"Closed manually","ai-assistant-task-closed-timeout":"Closed after a long wait","ai-assistant-task-closed-timeout--plural":"Closed after a long wait","ai-assistant-task-other-tasks":"Other tasks in this chat","ai-assistant-task-other-tasks--plural":"Other tasks in this chat","ai-assistant-task-closed-pay-cancelled":"You cancelled this payment","ai-assistant-task-closed-pay-cancelled--plural":"You cancelled this payment","ai-assistant-task-list-capped":"Showing the latest {n}","ai-assistant-task-list-capped--plural":"Showing the latest {n}","ai-assistant-settlement-frozen-cancelled-plain":"Cancelled","ai-assistant-stock-out-shortfall":"shortfall {n}","ai-assistant-stock-out-shortfall--plural":"shortfall {n}"}'); 31658// EXTERNAL MODULE: ./src/components/CjHeader/const/languages.ts 31659var languages = __webpack_require__(45163); 31660;// ./src/common/i18next-refact.ts 31661function i18next_refact_typeof(o) { "@babel/helpers - typeof"; return i18next_refact_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, i18next_refact_typeof(o); } 31662var i18next_refact_assign = undefined && undefined.__assign || function () { 31663 i18next_refact_assign = Object.assign || function (t) { 31664 for (var s, i = 1, n = arguments.length; i < n; i++) { 31665 s = arguments[i]; 31666 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31667 } 31668 return t; 31669 }; 31670 return i18next_refact_assign.apply(this, arguments); 31671}; 31672 31673 31674var transObj = { 31675 en: en_common_namespaceObject 31676}; 31677var localeFallbackLoaders = { 31678 zh: function zh() { 31679 return __webpack_require__.e(/* import() */ 5772).then(__webpack_require__.t.bind(__webpack_require__, 15772, 19)); 31680 }, 31681 th: function th() { 31682 return __webpack_require__.e(/* import() */ 406).then(__webpack_require__.t.bind(__webpack_require__, 40406, 19)); 31683 }, 31684 de: function de() { 31685 return __webpack_require__.e(/* import() */ 4639).then(__webpack_require__.t.bind(__webpack_require__, 24639, 19)); 31686 }, 31687 fr: function fr() { 31688 return __webpack_require__.e(/* import() */ 9506).then(__webpack_require__.t.bind(__webpack_require__, 59506, 19)); 31689 }, 31690 id: function id() { 31691 return __webpack_require__.e(/* import() */ 1261).then(__webpack_require__.t.bind(__webpack_require__, 21261, 19)); 31692 } 31693}; 31694var fallbackLoading = {}; 31695function ensureLocaleFallback(i18next, lng) { 31696 if (!lng || lng === 'en' || transObj[lng]) return Promise.resolve(transObj[lng]); 31697 if (typeof window === 'undefined' || typeof document === 'undefined') { 31698 return Promise.resolve(transObj[lng]); 31699 } 31700 var loader = localeFallbackLoaders[lng]; 31701 if (!loader) return Promise.resolve(undefined); 31702 if (!fallbackLoading[lng]) { 31703 fallbackLoading[lng] = loader().then(function (mod) { 31704 var data = mod && mod["default"] || mod; 31705 if (data && i18next_refact_typeof(data) === 'object') { 31706 transObj[lng] = data; 31707 if (i18next && i18next.addResourceBundle) { 31708 var oldTrans = i18next.getResourceBundle && i18next.getResourceBundle(lng, 'translation') || {}; 31709 i18next.addResourceBundle(lng, 'translation', i18next_refact_assign(i18next_refact_assign({}, data), oldTrans), true, true); 31710 } 31711 } 31712 return data; 31713 })["catch"](function (error) { 31714 console.warn('[i18n] locale fallback load failed:', lng, error && error.message); 31715 return undefined; 31716 }); 31717 } 31718 return fallbackLoading[lng]; 31719} 31720var run = false; 31721var customizeI18next = function customizeI18next(i18next, initialLng) { 31722 if (run) return; 31723 var lng = initialLng; 31724 if (!languages/* sixCountryLanguage */.V.includes(lng)) lng = 'en'; 31725 initialCommonTranslation(i18next, lng); 31726 if (lng !== 'en') ensureLocaleFallback(i18next, lng); 31727 i18next.t = function (t) { 31728 return function () { 31729 var _a, _b; 31730 var arg = []; 31731 for (var _i = 0; _i < arguments.length; _i++) { 31732 arg[_i] = arguments[_i]; 31733 } 31734 var key = arg[0]; 31735 var result = t.apply(this, arg); 31736 if (!result) return arg[1] || key; 31737 if (typeof result === 'string' && result.indexOf('-') > -1 && key === result && ((_a = transObj === null || transObj === void 0 ? void 0 : transObj[lng]) === null || _a === void 0 ? void 0 : _a[key])) { 31738 result = transObj[lng][key]; 31739 } 31740 if (i18next_refact_typeof(result) === 'object' && ((_b = transObj === null || transObj === void 0 ? void 0 : transObj[lng]) === null || _b === void 0 ? void 0 : _b[key])) { 31741 var text_1 = transObj[lng][key] || ''; 31742 if (i18next_refact_typeof(arg[1]) === 'object') { 31743 var vars_1 = arg[1]; 31744 var reg = /\{\{(.+?)\}\}/g; 31745 var arr = text_1.match(reg); 31746 if (arr) { 31747 arr.forEach(function (item) { 31748 var key = item.replace(/\{\{(.+?)\}\}/, '$1'); 31749 text_1 = text_1.replace(item, vars_1[key]); 31750 }); 31751 } 31752 } 31753 return text_1 || key; 31754 } 31755 if (/\{\{(.+?)\}\}/g.test(result)) { 31756 var reg = /\{\{(.+?)\}\}/g; 31757 var arr = result.match(reg); 31758 if (arr) { 31759 arr.forEach(function (item) { 31760 var key = item.replace(/\{\{(.+?)\}\}/, '$1'); 31761 result = result.replace(item, arg[1][key]); 31762 }); 31763 } 31764 } 31765 return result; 31766 }; 31767 }(i18next.t); 31768 run = true; 31769}; 31770function initialCommonTranslation(i18next, lng) { 31771 try { 31772 var pullCommon = transObj[lng]; 31773 if (pullCommon && i18next_refact_typeof(pullCommon) === 'object') { 31774 var oldTrans = i18next.getResourceBundle(lng, 'translation') || {}; 31775 i18next.addResourceBundle(lng, 'translation', i18next_refact_assign(i18next_refact_assign({}, pullCommon), oldTrans), true, true); 31776 } 31777 } catch (error) { 31778 console.warn('Error loading common translation:', error); 31779 } 31780} 31781/* harmony default export */ const i18next_refact = (customizeI18next); 31782;// ./src/components/CjProductDetail/hooks/use-lazy-component.ts 31783 31784function useLazyComponent(active, loader, options) { 31785 if (options === void 0) { 31786 options = {}; 31787 } 31788 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(null), 31789 Component = _a[0], 31790 setComponent = _a[1]; 31791 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31792 if (!active || Component) return; 31793 var mounted = true; 31794 loader().then(function (mod) { 31795 var LazyComponent = 'default' in mod ? mod["default"] : mod; 31796 if (mounted) setComponent(function () { 31797 return LazyComponent; 31798 }); 31799 })["catch"](function (error) { 31800 var _a = options.componentName, 31801 componentName = _a === void 0 ? 'unknown' : _a, 31802 _b = options.chunkName, 31803 chunkName = _b === void 0 ? 'unknown' : _b; 31804 console.error("[use-lazy-component] load failed component=".concat(componentName, " chunk=").concat(chunkName, " active=").concat(active), error); 31805 }); 31806 return function () { 31807 mounted = false;
31808 }; 31809 }, [active, Component, loader]); 31810 return Component; 31811} 31812// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsAiChat.ts 31813var useIsAiChat = __webpack_require__(92575); 31814;// ./src/hook/use-changed.ts 31815var use_changed_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31816 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31817 if (ar || !(i in from)) { 31818 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31819 ar[i] = from[i]; 31820 } 31821 } 31822 return to.concat(ar || Array.prototype.slice.call(from)); 31823}; 31824 31825/* harmony default export */ const use_changed = (function (cb, deps) { 31826 if (cb === void 0) { 31827 cb = function cb() {}; 31828 } 31829 if (deps === void 0) { 31830 deps = []; 31831 } 31832 var frist = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(true); 31833 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31834 if (frist.current) { 31835 frist.current = false; 31836 return; 31837 } 31838 cb === null || cb === void 0 ? void 0 : cb(); 31839 }, use_changed_spreadArray([], deps, true)); 31840}); 31841;// ./src/components/Menu/hooks/useHasMenu.ts 31842var useHasMenu_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31843 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31844 if (ar || !(i in from)) { 31845 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31846 ar[i] = from[i]; 31847 } 31848 } 31849 return to.concat(ar || Array.prototype.slice.call(from)); 31850}; 31851 31852 31853 31854 31855 31856var newmycjPaths = ['/invoiceNew/walletInvoice', '/payment', '/invoiceNew/orderInvoice', '/purchase/detial', '/differences', '/dispute/createDispute', '/dropshipping/orderConfirmation', '/dispute/detail', '/cancelEmail', '/productEvaluate/create', '/productEvaluate/detail', '/dashboard/cogs/detail', '/authorize/erpAuthorization', '/authorize/newAuthorizationPage', '/aiAssistant', '/authorizePage']; 31857var mobileOnlyNoMenuPages = ['/agents', '/agents/detail', '/global-warehouses', '/ready-to-ship', '/mentors']; 31858var noMenuPages = useHasMenu_spreadArray(useHasMenu_spreadArray(['/ouroffers', '/overview', '/aboutus', '/contactus', '/user-agreement', '/dispute-policy.html', '/report-platform', '/privacyPolicy', '/help-center', '/storeAuthorizationAgreement', '/service-fee', '/odm', '/printonDemand/home', '/prime', '/sourcing', '/fulfillmentservice', '/logistics', '/partnership/home', '/partnership', '/cj-entity', '/cj-business-travel', '/worldfirst', '/forgotPassword.html', '/facebookEmail.html', '/apiAuthorization.html', '/authorize.html', '/bind.html', '/bindSuccess.html', '/emailTmp.html', '/cj-faq.html', '/cj-term-of-use-seo.html', '/cjAppDownload.html', '/cus-sourcing.html', '/emailVerified.html', '/error.html', '/error02.html', '/facebookdele.html', '/features.html', '/firstAuthFromShop.html', '/firstAuthFromShopify.html', '/fromShopifyLoading.html', '/fx_mobileAccess.html', '/googlePluginLoginLoading.html', '/invoice.html', '/404', '/manualList.html', '/passreset-success.html', '/passWordEmail.html', '/payment-error.html', '/payment-success.html', '/payoneer-auth.html', '/policy.html', '/promotedoperation.html', '/login.html', '/register.html', '/register-success.html', '/resetPassword.html', '/second-authorize.html', '/suppList.html', '/toLogin.html', '/verify_email.html', '/wallet-invoice.html', '/advertisingservice', '/tiktokShopAd', '/loancredit', '/usrule.html', '/welcome.html', '/integrations/temu', '/integrations/shopify', '/integrations/shoplazza', '/integrations/woocommerce', '/integrations/tiktok-shop', '/high-quality-factory', '/agents/product-development', '/agents/cogs-reduction', '/agents/faster-order-fulfillment', '/agents/shorten-delivery-time', '/agents/cj-account-management', '/agents/customer-success-growth', '/agents/visiting-guide', '/free-temu-tiktok-stores', '/odm', '/careers', '/authRedirect.html', '/alternatives', '/ai/chatgpt', '/ai/claude', '/ai/codex', '/cjdropshipping-vs-zendrop', '/cjdropshipping-vs-autods', '/cjdropshipping-vs-spocket', '/cjdropshipping-vs-aliexpress', '/cjdropshipping-vs-day-one-fulfillment'], mobileOnlyNoMenuPages, true), newmycjPaths.reduce(function (sum, path) { 31859 sum.push.apply(sum, [path, "/mine".concat(path)]); 31860 return sum; 31861}, []), true); 31862var noMenu = function noMenu(routePath, siteCheck, SHOWMESSAGE, token, isM) { 31863 var pagesToCheck = isM ? noMenuPages : noMenuPages.filter(function (path) { 31864 return !mobileOnlyNoMenuPages.includes(path); 31865 }); 31866 var configNoMenu = pagesToCheck.some(function (path) { 31867 var reg = new RegExp('^' + path); 31868 return reg.test(routePath); 31869 }); 31870 if (/^\/mine\/calculation/i.test(routePath) && !token) { 31871 return true; 31872 } 31873 if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('QS')) { 31874 if (!siteCheck.isShow('show-side-menu')) { 31875 return true; 31876 } 31877 if (!(0,use_is_mycj/* isMyCjPageCheck */.h)(routePath) || /\/purchase\/purchaseCart/.test(routePath)) { 31878 return true; 31879 } 31880 } else if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ')) { 31881 if (!siteCheck.isShow('show-side-menu')) { 31882 return true; 31883 } 31884 if (!(0,common/* isSafeUser */.dn)(SHOWMESSAGE, token) && routePath == '/') { 31885 return true; 31886 } 31887 } else if ((0,common/* is1688 */.G3)(siteCheck)) { 31888 if (!siteCheck.isShow('show-side-menu')) { 31889 return true; 31890 } 31891 if (!(0,use_is_mycj/* isMyCjPageCheck */.h)(routePath)) return true; 31892 } else if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('QK')) { 31893 if (!siteCheck.isShow('show-side-menu')) { 31894 return true; 31895 } 31896 } 31897 return configNoMenu; 31898}; 31899function useNotMenu() { 31900 var _a = (0,PropsContext/* useGlobalProps */.v)(), 31901 routePath = _a.path, 31902 SHOWMESSAGE = _a.otherCookies.SHOWMESSAGE, 31903 token = _a.loginInfo.token, 31904 isM = _a.isM; 31905 var _b = (0,use_parent_platform/* default */.A)(), 31906 isCj = _b.isCj, 31907 isSupplierShop = _b.isSupplierShop, 31908 isBlog = _b.isBlog, 31909 isFlowVersionPage = _b.isFlowVersionPage; 31910 if (isSupplierShop || isBlog || isFlowVersionPage) return true; 31911 var siteCheck = (0,use_site_check/* default */.A)(); 31912 return noMenu(routePath, siteCheck, SHOWMESSAGE, token, isM) && isCj; 31913} 31914;// ./src/components/Menu/components/THLogo/index.less 31915// extracted by mini-css-extract-plugin 31916/* harmony default export */ const THLogo = ({"logo":"logo--nt_xD","alogo":"alogo--hqIuw","logoInfo":"logoInfo--dBfZk"}); 31917;// ./src/components/Menu/components/THLogo/index.tsx 31918 31919 31920 31921function THLogo_THLogo(_a) { 31922 var _b; 31923 var logo = _a.logo; 31924 var _c = (0,PropsContext/* useGlobalProps */.v)(), 31925 i18next = _c.i18n, 31926 siteCheck = _c.siteCheck; 31927 var style = {}; 31928 if (!siteCheck.isSite('TH', 'CF')) { 31929 style = { 31930 width: siteCheck.data('logo-width') + 'px', 31931 height: siteCheck.data('logo-height') + 'px' 31932 }; 31933 } 31934 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31935 className: THLogo.logo 31936 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", { 31937 href: "/", 31938 className: THLogo.alogo 31939 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 31940 src: logo,
31941 style: style 31942 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31943 className: THLogo.logoInfo 31944 }, siteCheck.isSite('TH', 'CF') && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31945 className: "notranslate" 31946 }, (_b = siteCheck.data('full-name')) !== null && _b !== void 0 ? _b : '1688.tech'))))); 31947} 31948// EXTERNAL MODULE: ./src/components/message/index.tsx + 1 modules 31949var message = __webpack_require__(23126); 31950// EXTERNAL MODULE: ./src/common/add-store.ts 31951var add_store = __webpack_require__(21421); 31952// EXTERNAL MODULE: ./src/common/toast.ts 31953var toast = __webpack_require__(50937); 31954;// ./src/components/Menu/hooks/useAppStore.ts 31955var useAppStore_assign = undefined && undefined.__assign || function () { 31956 useAppStore_assign = Object.assign || function (t) { 31957 for (var s, i = 1, n = arguments.length; i < n; i++) { 31958 s = arguments[i]; 31959 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31960 } 31961 return t; 31962 }; 31963 return useAppStore_assign.apply(this, arguments); 31964}; 31965var useAppStore_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 31966 function adopt(value) { 31967 return value instanceof P ? value : new P(function (resolve) { 31968 resolve(value); 31969 }); 31970 } 31971 return new (P || (P = Promise))(function (resolve, reject) { 31972 function fulfilled(value) { 31973 try { 31974 step(generator.next(value)); 31975 } catch (e) { 31976 reject(e); 31977 } 31978 } 31979 function rejected(value) { 31980 try { 31981 step(generator["throw"](value)); 31982 } catch (e) { 31983 reject(e); 31984 } 31985 } 31986 function step(result) { 31987 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 31988 } 31989 step((generator = generator.apply(thisArg, _arguments || [])).next()); 31990 }); 31991}; 31992var useAppStore_generator = undefined && undefined.__generator || function (thisArg, body) { 31993 var _ = { 31994 label: 0, 31995 sent: function sent() { 31996 if (t[0] & 1) throw t[1]; 31997 return t[1]; 31998 }, 31999 trys: [], 32000 ops: [] 32001 }, 32002 f, 32003 y, 32004 t, 32005 g; 32006 return g = { 32007 next: verb(0), 32008 "throw": verb(1), 32009 "return": verb(2) 32010 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 32011 return this; 32012 }), g; 32013 function verb(n) { 32014 return function (v) { 32015 return step([n, v]); 32016 }; 32017 } 32018 function step(op) { 32019 if (f) throw new TypeError("Generator is already executing."); 32020 while (g && (g = 0, op[0] && (_ = 0)), _) try { 32021 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 32022 if (y = 0, t) op = [op[0] & 2, t.value]; 32023 switch (op[0]) { 32024 case 0: 32025 case 1: 32026 t = op; 32027 break; 32028 case 4: 32029 _.label++; 32030 return { 32031 value: op[1], 32032 done: false 32033 }; 32034 case 5: 32035 _.label++; 32036 y = op[1]; 32037 op = [0]; 32038 continue; 32039 case 7: 32040 op = _.ops.pop(); 32041 _.trys.pop(); 32042 continue; 32043 default: 32044 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 32045 _ = 0; 32046 continue; 32047 } 32048 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 32049 _.label = op[1]; 32050 break; 32051 } 32052 if (op[0] === 6 && _.label < t[1]) { 32053 _.label = t[1]; 32054 t = op; 32055 break; 32056 } 32057 if (t && _.label < t[2]) { 32058 _.label = t[2]; 32059 _.ops.push(op); 32060 break; 32061 } 32062 if (t[2]) _.ops.pop(); 32063 _.trys.pop(); 32064 continue; 32065 } 32066 op = body.call(thisArg, _); 32067 } catch (e) { 32068 op = [6, e]; 32069 y = 0; 32070 } finally { 32071 f = t = 0; 32072 } 32073 if (op[0] & 5) throw op[1]; 32074 return { 32075 value: op[0] ? op[1] : void 0, 32076 done: true 32077 }; 32078 } 32079}; 32080 32081 32082 32083 32084 32085 32086var appListCache = null; 32087var appListRequest = null; 32088function useAddStore(props) { 32089 var _this = this; 32090 var axios = props.axios, 32091 updateCallBack = props.updateCallBack, 32092 _a = props.appType, 32093 appType = _a === void 0 ? 1 : _a; 32094 var businessTypeMap = { 32095 0: window.i18next.t('common-mycj-menu-smart-website-builder', 'Smart Website Builder'), 32096 1: window.i18next.t('common-mycj-menu-cross-border-ecommerce-platform', 'Cross-Border E-commerce Platform'), 32097 2: window.i18next.t('common-mycj-menu-erp-platform', 'ERP Platform'), 32098 4: window.i18next.t('common-mycj-menu-ai', 'AI'), 32099 3: window.i18next.t('common-mycj-menu-others-a', 'Others') 32100 }; 32101 var BUSINESS_TYPE_ORDER = [0, 1, 2, 4, 3]; 32102 var TAB_KEY = { 32103 ALL: 1, 32104 INSTALLED: 2 32105 }; 32106 var tabList = [{ 32107 label: window.i18next.t('common-mycj-menu-all', 'All'), 32108 value: TAB_KEY.ALL 32109 }, { 32110 label: window.i18next.t('common-mycj-menu-installed', 'Installed'), 32111 value: TAB_KEY.INSTALLED 32112 }]; 32113 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(TAB_KEY.ALL), 32114 activeTab = _b[0], 32115 setActiveTab = _b[1]; 32116 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32117 isVisible = _c[0], 32118 setIsVisible = _c[1]; 32119 var _d = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 32120 list = _d[0],
32121 setList = _d[1]; 32122 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(null), 32123 deleteItem = _e[0], 32124 setDeleteItem = _e[1]; 32125 var _f = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32126 showDeleteModal = _f[0], 32127 setShowDeleteModal = _f[1]; 32128 var _g = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32129 loading = _g[0], 32130 setLoading = _g[1]; 32131 var platformShow = new platform_show/* default */.Ay(); 32132 var userAddStore = new add_store/* default */.A(); 32133 var updateData = function updateData(d) { 32134 userAddStore.save(d); 32135 updateCallBack === null || updateCallBack === void 0 ? void 0 : updateCallBack(); 32136 }; 32137 var getList = function getList(params) { 32138 return useAppStore_awaiter(_this, void 0, void 0, function () { 32139 var useCache, d, platforms, newList, _loop_1, _i, BUSINESS_TYPE_ORDER_1, key, res_1, d, platforms, newList, _loop_2, _a, BUSINESS_TYPE_ORDER_2, key, res, d, platforms, newList, _loop_3, _b, BUSINESS_TYPE_ORDER_3, key; 32140 return useAppStore_generator(this, function (_c) { 32141 switch (_c.label) { 32142 case 0: 32143 useCache = !(params === null || params === void 0 ? void 0 : params.force) && appListCache; 32144 if (useCache) { 32145 d = appListCache; 32146 updateData(d); 32147 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32148 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32149 newList = []; 32150 _loop_1 = function _loop_1(key) { 32151 var obj = {}; 32152 obj.title = businessTypeMap[key]; 32153 obj.list = platforms.filter(function (item) { 32154 return item.businessType === key; 32155 }).map(function (item) { 32156 var _a; 32157 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32158 if (code == 'miaoshou') { 32159 return useAppStore_assign(useAppStore_assign({}, item), { 32160 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32161 }); 32162 } 32163 return useAppStore_assign(useAppStore_assign({}, item), { 32164 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32165 }); 32166 }); 32167 newList.push(obj); 32168 }; 32169 for (_i = 0, BUSINESS_TYPE_ORDER_1 = BUSINESS_TYPE_ORDER; _i < BUSINESS_TYPE_ORDER_1.length; _i++) { 32170 key = BUSINESS_TYPE_ORDER_1[_i]; 32171 _loop_1(key); 32172 } 32173 setList(newList); 32174 return [2]; 32175 } 32176 if (!appListRequest) return [3, 2]; 32177 return [4, appListRequest]; 32178 case 1: 32179 res_1 = _c.sent(); 32180 if (!(res_1 === null || res_1 === void 0 ? void 0 : res_1.success)) return [2]; 32181 d = res_1 === null || res_1 === void 0 ? void 0 : res_1.data; 32182 updateData(d); 32183 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32184 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32185 newList = []; 32186 _loop_2 = function _loop_2(key) { 32187 var obj = {}; 32188 obj.title = businessTypeMap[key]; 32189 obj.list = platforms.filter(function (item) { 32190 return item.businessType === key; 32191 }).map(function (item) { 32192 var _a; 32193 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32194 if (code == 'miaoshou') { 32195 return useAppStore_assign(useAppStore_assign({}, item), { 32196 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32197 }); 32198 } 32199 return useAppStore_assign(useAppStore_assign({}, item), { 32200 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32201 }); 32202 }); 32203 newList.push(obj); 32204 }; 32205 for (_a = 0, BUSINESS_TYPE_ORDER_2 = BUSINESS_TYPE_ORDER; _a < BUSINESS_TYPE_ORDER_2.length; _a++) { 32206 key = BUSINESS_TYPE_ORDER_2[_a]; 32207 _loop_2(key); 32208 } 32209 setList(newList); 32210 return [2]; 32211 case 2: 32212 if (!(params === null || params === void 0 ? void 0 : params.onlyUpdate)) {
32213 setLoading(true); 32214 } 32215 appListRequest = axios({ 32216 method: 'post', 32217 url: 'userCenterForeignWeb/userApp/list', 32218 data: { 32219 deviceType: 'PC', 32220 affiliateId: js_cookie/* default */.A.get('invite-token') || '' 32221 } 32222 }).then(function (_a) { 32223 var err = _a[0], 32224 res = _a[1]; 32225 if (err || !res) return null; 32226 return res; 32227 }); 32228 return [4, appListRequest]; 32229 case 3: 32230 res = _c.sent(); 32231 appListRequest = null; 32232 setLoading(false); 32233 if (!res) return [2]; 32234 if (res === null || res === void 0 ? void 0 : res.success) { 32235 d = res === null || res === void 0 ? void 0 : res.data; 32236 appListCache = d; 32237 updateData(d); 32238 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32239 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32240 newList = []; 32241 _loop_3 = function _loop_3(key) { 32242 var obj = {}; 32243 obj.title = businessTypeMap[key]; 32244 obj.list = platforms.filter(function (item) { 32245 return item.businessType === key; 32246 }).map(function (item) { 32247 var _a; 32248 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32249 if (code == 'miaoshou') { 32250 return useAppStore_assign(useAppStore_assign({}, item), { 32251 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32252 }); 32253 } 32254 return useAppStore_assign(useAppStore_assign({}, item), { 32255 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32256 }); 32257 }); 32258 newList.push(obj); 32259 }; 32260 for (_b = 0, BUSINESS_TYPE_ORDER_3 = BUSINESS_TYPE_ORDER; _b < BUSINESS_TYPE_ORDER_3.length; _b++) { 32261 key = BUSINESS_TYPE_ORDER_3[_b]; 32262 _loop_3(key); 32263 } 32264 setList(newList); 32265 } else if (res === null || res === void 0 ? void 0 : res.message) { 32266 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32267 } 32268 return [2]; 32269 } 32270 }); 32271 }); 32272 }; 32273 var cancelDelete = function cancelDelete() { 32274 setShowDeleteModal(false); 32275 setDeleteItem(null); 32276 }; 32277 var confirmDeleteApp = function confirmDeleteApp() { 32278 return useAppStore_awaiter(_this, void 0, void 0, function () { 32279 var success; 32280 return useAppStore_generator(this, function (_a) { 32281 switch (_a.label) { 32282 case 0: 32283 if (!deleteItem) return [2]; 32284 return [4, uninstallApp(deleteItem)]; 32285 case 1: 32286 success = _a.sent(); 32287 if (success) { 32288 cancelDelete(); 32289 getList({ 32290 onlyUpdate: !isVisible, 32291 force: true 32292 }); 32293 } 32294 return [2]; 32295 } 32296 }); 32297 }); 32298 }; 32299 var deleteStore = function deleteStore(app) { 32300 return useAppStore_awaiter(_this, void 0, void 0, function () { 32301 var _a; 32302 return useAppStore_generator(this, function (_b) { 32303 setDeleteItem(useAppStore_assign(useAppStore_assign({}, app), { 32304 showPlatformName: platformShow.showPlatformName((_a = app.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || app.platformName 32305 })); 32306 setShowDeleteModal(true); 32307 return [2]; 32308 }); 32309 }); 32310 }; 32311 var installApp = function installApp(app, options) { 32312 return useAppStore_awaiter(_this, void 0, void 0, function () { 32313 var _a, err, res; 32314 return useAppStore_generator(this, function (_b) { 32315 switch (_b.label) { 32316 case 0:
32317 setLoading(true); 32318 return [4, axios({ 32319 method: 'post', 32320 url: 'userCenterForeignWeb/userApp/install', 32321 data: { 32322 appCode: app.platformCode, 32323 type: appType 32324 } 32325 })]; 32326 case 1: 32327 _a = _b.sent(), err = _a[0], res = _a[1]; 32328 setLoading(false); 32329 if (err || !res) return [2, false]; 32330 if (res === null || res === void 0 ? void 0 : res.success) { 32331 if (!(options === null || options === void 0 ? void 0 : options.silentToast)) { 32332 (0,toast/* default */.A)(window.i18next.t('common-mycj-menu-installed-successfully', 'Installed Successfully')); 32333 } 32334 getList({ 32335 force: true 32336 }); 32337 return [2, true]; 32338 } else if (res === null || res === void 0 ? void 0 : res.message) { 32339 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32340 } 32341 return [2, false]; 32342 } 32343 }); 32344 }); 32345 }; 32346 var uninstallApp = function uninstallApp(app, options) { 32347 return useAppStore_awaiter(_this, void 0, void 0, function () { 32348 var _a, err, res; 32349 return useAppStore_generator(this, function (_b) { 32350 switch (_b.label) { 32351 case 0: 32352 setLoading(true); 32353 return [4, axios({ 32354 method: 'post', 32355 url: 'userCenterForeignWeb/userApp/uninstall', 32356 data: { 32357 appCode: app.platformCode, 32358 type: appType 32359 } 32360 })]; 32361 case 1: 32362 _a = _b.sent(), err = _a[0], res = _a[1]; 32363 setLoading(false); 32364 if (err || !res) return [2, false]; 32365 if (res === null || res === void 0 ? void 0 : res.success) { 32366 if (!(options === null || options === void 0 ? void 0 : options.silentToast)) { 32367 (0,toast/* default */.A)(window.i18next.t('common-mycj-menu-uninstalled-successfully', 'Uninstalled Successfully')); 32368 } 32369 return [2, true]; 32370 } 32371 if (res === null || res === void 0 ? void 0 : res.message) { 32372 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32373 } 32374 return [2, false]; 32375 } 32376 }); 32377 }); 32378 }; 32379 var hideBodyScroll = function hideBodyScroll(bol) { 32380 if (bol) { 32381 document.body.style.overflow = 'hidden'; 32382 } else { 32383 document.body.style.overflow = 'auto'; 32384 } 32385 }; 32386 var handleClose = function handleClose() { 32387 setIsVisible(false); 32388 hideBodyScroll(false); 32389 }; 32390 var openAddStore = function openAddStore() { 32391 return useAppStore_awaiter(_this, void 0, void 0, function () { 32392 return useAppStore_generator(this, function (_a) { 32393 switch (_a.label) { 32394 case 0: 32395 return [4, getList()]; 32396 case 1: 32397 _a.sent();
32398 setActiveTab(TAB_KEY.ALL); 32399 setIsVisible(true); 32400 hideBodyScroll(true); 32401 return [2]; 32402 } 32403 }); 32404 }); 32405 }; 32406 var changeTab = function changeTab(key) { 32407 setActiveTab(key); 32408 var appStoreContainer = document.querySelector('.appStoreContent'); 32409 if (appStoreContainer) { 32410 appStoreContainer.scrollTo({ 32411 top: 0, 32412 behavior: 'smooth' 32413 }); 32414 } 32415 }; 32416 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 32417 var handleKeyDown = function handleKeyDown(e) { 32418 if (e.key === 'Escape' && isVisible) { 32419 handleClose(); 32420 } 32421 }; 32422 if (isVisible) { 32423 document.addEventListener('keydown', handleKeyDown); 32424 } 32425 return function () { 32426 document.removeEventListener('keydown', handleKeyDown); 32427 }; 32428 }, [isVisible, handleClose]); 32429 return { 32430 isVisible: isVisible, 32431 handleClose: handleClose, 32432 openAddStore: openAddStore, 32433 deleteStore: deleteStore, 32434 installApp: installApp, 32435 uninstallApp: uninstallApp, 32436 list: list, 32437 tabList: tabList, 32438 activeTab: activeTab, 32439 setActiveTab: setActiveTab, 32440 TAB_KEY: TAB_KEY, 32441 deleteItem: deleteItem, 32442 showDeleteModal: showDeleteModal, 32443 cancelDelete: cancelDelete, 32444 confirmDeleteApp: confirmDeleteApp, 32445 loading: loading, 32446 changeTab: changeTab 32447 }; 32448} 32449;// ./src/components/Menu/hooks/useMenuUpdateGuide.ts 32450 32451 32452 32453 32454 32455var STORAGE_KEY = 'showMenuUpdateGuide_v1'; 32456var LATEST_VERSION = '1.1'; 32457function useMenuUpdateGuide(options) { 32458 var _a = options.isCjSiteShow, 32459 isCjSiteShow = _a === void 0 ? false : _a; 32460 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32461 visible = _b[0], 32462 setVisible = _b[1]; 32463 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)('full'), 32464 guideMode = _c[0], 32465 setGuideMode = _c[1]; 32466 var changeBodyOverflow = function changeBodyOverflow(lock) { 32467 if (lock) { 32468 (0,common/* lockBodyScroll */.zI)(); 32469 } else { 32470 (0,common/* unlockBodyScroll */.Wg)(); 32471 } 32472 }; 32473 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 32474 if (!isCjSiteShow || useIsCf()) { 32475 setVisible(false); 32476 changeBodyOverflow(false); 32477 return; 32478 } 32479 var alreadyShown = store/* default */.A.get(STORAGE_KEY); 32480 var startTime = new Date('2026-03-16 00:00:00').getTime(); 32481 var endTime = new Date('2026-04-30 23:59:59').getTime(); 32482 var nowTime = Date.now(); 32483 var startTimeV1_1 = new Date('2026-04-07 00:00:00').getTime(); 32484 var endTimeV1_1 = new Date('2026-04-30 23:59:59').getTime(); 32485 if (alreadyShown === LATEST_VERSION) { 32486 setVisible(false); 32487 changeBodyOverflow(false); 32488 if (nowTime > endTime) { 32489 store/* default */.A.del(STORAGE_KEY); 32490 } 32491 return; 32492 } 32493 var isInTimeWindow = nowTime >= startTime && nowTime < endTime; 32494 var isInTimeWindowV1_1 = nowTime >= startTimeV1_1 && nowTime < endTimeV1_1; 32495 if (!isInTimeWindow && !isInTimeWindowV1_1) { 32496 setVisible(false); 32497 changeBodyOverflow(false); 32498 return; 32499 } 32500 var timer = setTimeout(function () { 32501 var SHOWMESSAGE = js_cookie/* default */.A.get('SHOWMESSAGE'); 32502 if ((SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('R')) > -1) { 32503 if ((alreadyShown === true || alreadyShown === 'true') && isInTimeWindowV1_1) { 32504 setGuideMode('mini'); 32505 } else if (!alreadyShown) { 32506 setGuideMode('full'); 32507 } 32508 changeBodyOverflow(true); 32509 setVisible(true); 32510 } 32511 }, 1200); 32512 return function () { 32513 clearTimeout(timer); 32514 changeBodyOverflow(false); 32515 }; 32516 }, [isCjSiteShow]); 32517 var onOK = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 32518 store/* default */.A.set(STORAGE_KEY, LATEST_VERSION); 32519 setVisible(false); 32520 changeBodyOverflow(false); 32521 }, []); 32522 return { 32523 visible: visible, 32524 guideMode: guideMode, 32525 onOK: onOK 32526 }; 32527} 32528;// ./src/components/Menu/components/zesty/CollapsedIcon/index.less 32529// extracted by mini-css-extract-plugin 32530/* harmony default export */ const CollapsedIcon = ({"collapsedIcon":"collapsedIcon--icJfc","collapsed":"collapsed--t3MfC"}); 32531;// ./src/components/Menu/components/zesty/CollapsedIcon/index.tsx 32532 32533 32534 32535 32536function CollapsedIcon_CollapsedIcon(_a) { 32537 var _b; 32538 var onClick = _a.onClick, 32539 isCollapsed = _a.isCollapsed; 32540 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 32541 className: classnames_default()(CollapsedIcon.collapsedIcon, (_b = {}, _b[CollapsedIcon.collapsed] = isCollapsed, _b)), 32542 onClick: onClick 32543 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 32544 type: 'right' 32545 })); 32546} 32547;// ./src/components/Menu/components/ServiceCenter/service-config.ts 32548var SERVICE_LIST = [{ 32549 key: '3pl_fulfillment', 32550 appCode: 'mycj_3pl', 32551 name: '3PL Fulfillment', 32552 menuName: '3PL Fulfillment', 32553 description: "Enjoy hassle-free order processing and lightning-fast global shipping for your own products stocked in CJ's warehouse.", 32554 detailUrl: 'https://www.cjdropshipping.com/fulfillmentservice', 32555 isPreInstalled: true 32556}, { 32557 key: 'odm', 32558 appCode: 'mycj_odm', 32559 name: 'ODM Service', 32560 menuName: 'ODM Service', 32561 description: 'Build a high-margin, unique brand with custom-tailored products, personalized logos, and premium branded packaging.', 32562 detailUrl: 'https://www.cjdropshipping.com/odm', 32563 isPreInstalled: false 32564}, { 32565 key: 'brand_packaging', 32566 appCode: 'mycj_brand_packaging', 32567 name: 'Brand Packaging', 32568 menuName: 'Brand Packaging', 32569 description: 'Turn one-time buyers into loyal customers with packaging that speaks volumes.', 32570 detailUrl: 'https://www.cjdropshipping.com/customPackaging', 32571 isPreInstalled: false 32572}, { 32573 key: 'print_on_demand', 32574 appCode: 'mycj_print_on_demand', 32575 name: 'Print on Demand', 32576 menuName: 'Print on Demand', 32577 description: 'Bring your creative visions to life with custom-printed merchandise.', 32578 detailUrl: 'https://www.cjdropshipping.com/printonDemand/home', 32579 isPreInstalled: false 32580}, { 32581 key: 'buy_sell_yourstore', 32582 appCode: 'mycj_buy_sell_yourstore', 32583 name: 'Buy/Sell Your Store', 32584 menuName: 'Buy/Sell Your Store', 32585 description: 'Selling ready & healthy stores is a smart way to turn your excess costs of online business into immediate profit.', 32586 detailUrl: 'https://blog.cjdropshipping.com/detail/Sell-Your-Shopify-Store-for-Cash-Today-', 32587 isPreInstalled: false 32588}, { 32589 key: 'payment_agency', 32590 appCode: 'mycj_payment_agency', 32591 name: 'Payment Agency', 32592 menuName: 'Payment Agency', 32593 description: 'One-stop Payment Solution for Dropshipping. The trusted choice of millions of entrepreneurs.', 32594 detailUrl: 'https://www.cjdropshipping.com/payment-agency', 32595 isPreInstalled: false 32596}, { 32597 key: 'credit_service', 32598 appCode: 'mycj_credit_service', 32599 name: 'Credit Service', 32600 menuName: 'Credit Service', 32601 description: 'Short-Term Credit Support for Company with Good Reputation.', 32602 detailUrl: 'https://www.cjdropshipping.com/loancredit', 32603 isPreInstalled: false 32604}, { 32605 key: 'fast_shipping', 32606 appCode: 'mycj_fast_shipping', 32607 name: 'Faster Shipping Service', 32608 menuName: 'Faster Shipping Service', 32609 description: 'With our comprehensive shipping service and high-quality suppliers, offer an experience-oriented shipping solution.', 32610 detailUrl: 'https://www.cjdropshipping.com/logistics', 32611 isPreInstalled: false 32612}, { 32613 key: 'advertiser_agency', 32614 appCode: 'mycj_advertiser_agency',
32615 name: 'Advertiser Agency', 32616 menuName: 'Advertiser Agency', 32617 description: 'We Set Up, You Scale. Reliable Ad Accounts, Multi-Vertical Support & Managed Ad Service.', 32618 detailUrl: 'https://www.cjdropshipping.com/advertisingservice', 32619 isPreInstalled: false 32620}, { 32621 key: 'profit_operator', 32622 appCode: 'mycj_profit_operator', 32623 name: 'Profit Operator', 32624 menuName: 'Profit Operator', 32625 description: 'We Operate, You Earn. Launch Your US/EU Local Store with Zero Investment & Risk.', 32626 detailUrl: 'https://www.cjdropshipping.com/free-temu-tiktok-stores', 32627 isPreInstalled: false 32628}, { 32629 key: 'cj_entity', 32630 appCode: 'mycj_cj_entity', 32631 name: 'CJ Entity', 32632 menuName: 'CJ Entity', 32633 description: 'Launch your Hong Kong company for e-commerce.', 32634 detailUrl: 'https://www.cjdropshipping.com/cj-entity', 32635 isPreInstalled: false 32636}]; 32637var PRE_INSTALLED_KEYS = SERVICE_LIST.filter(function (s) { 32638 return s.isPreInstalled; 32639}).map(function (s) { 32640 return s.key; 32641}); 32642var ALL_SERVICE_KEYS = SERVICE_LIST.map(function (s) { 32643 return s.key; 32644}); 32645var MENU_NAME_TO_SERVICE_KEY = SERVICE_LIST.reduce(function (acc, item) { 32646 acc[item.menuName] = item.key; 32647 return acc; 32648}, {}); 32649var SERVICE_KEY_TO_APP_CODE = SERVICE_LIST.reduce(function (acc, item) { 32650 acc[item.key] = item.appCode; 32651 return acc; 32652}, {}); 32653;// ./src/common/after-lcp-scheduler.ts 32654var DEFAULT_LCP_TIMEOUT = 2500; 32655var lcpReached = false; 32656var started = false; 32657var idSeq = 0; 32658var queue = []; 32659var readyResolvers = []; 32660function after_lcp_scheduler_isBrowser() { 32661 return typeof window !== 'undefined' && typeof document !== 'undefined'; 32662} 32663function runQueue() { 32664 if (!queue.length) return; 32665 var pending = queue.slice().sort(function (a, b) { 32666 return b.priority - a.priority || a.id - b.id; 32667 }); 32668 queue = []; 32669 pending.forEach(function (item) { 32670 try { 32671 item.task(); 32672 } catch (error) { 32673 console.error('[after-lcp-scheduler] task failed', error); 32674 } 32675 }); 32676} 32677function markReached() { 32678 if (lcpReached) return; 32679 lcpReached = true; 32680 runQueue(); 32681 while (readyResolvers.length) { 32682 var resolve = readyResolvers.shift(); 32683 resolve && resolve(); 32684 } 32685} 32686function ensureStarted(timeout) { 32687 if (started || lcpReached) return; 32688 started = true; 32689 if (!after_lcp_scheduler_isBrowser()) { 32690 markReached(); 32691 return; 32692 } 32693 var settleTimer = null; 32694 var settle = function settle() { 32695 if (settleTimer) { 32696 clearTimeout(settleTimer); 32697 settleTimer = null; 32698 } 32699 markReached(); 32700 }; 32701 try { 32702 if ('PerformanceObserver' in window) { 32703 var observer_1 = new PerformanceObserver(function () { 32704 observer_1.disconnect(); 32705 setTimeout(settle, 0); 32706 }); 32707 observer_1.observe({ 32708 type: 'largest-contentful-paint', 32709 buffered: true 32710 }); 32711 } 32712 } catch (error) {} 32713 var onInteract = function onInteract() { 32714 return settle(); 32715 }; 32716 try { 32717 window.addEventListener('pointerdown', onInteract, { 32718 once: true, 32719 passive: true 32720 }); 32721 window.addEventListener('keydown', onInteract, { 32722 once: true 32723 }); 32724 } catch (error) {} 32725 settleTimer = setTimeout(settle, timeout > 0 ? timeout : DEFAULT_LCP_TIMEOUT); 32726} 32727function scheduleAfterLcp(task, options) { 32728 if (options === void 0) { 32729 options = {}; 32730 } 32731 var _a = options.priority, 32732 priority = _a === void 0 ? 0 : _a, 32733 _b = options.timeout, 32734 timeout = _b === void 0 ? DEFAULT_LCP_TIMEOUT : _b; 32735 if (!after_lcp_scheduler_isBrowser()) { 32736 return function () {}; 32737 } 32738 if (lcpReached) { 32739 setTimeout(function () { 32740 try { 32741 task(); 32742 } catch (error) { 32743 console.error('[after-lcp-scheduler] task failed', error); 32744 } 32745 }, 0); 32746 return function () {}; 32747 } 32748 var item = { 32749 id: ++idSeq, 32750 task: task, 32751 priority: priority 32752 }; 32753 queue.push(item); 32754 ensureStarted(timeout); 32755 return function () { 32756 queue = queue.filter(function (q) { 32757 return q.id !== item.id; 32758 }); 32759 }; 32760} 32761function whenAfterLcp(timeout) { 32762 if (timeout === void 0) { 32763 timeout = DEFAULT_LCP_TIMEOUT; 32764 } 32765 if (lcpReached || !after_lcp_scheduler_isBrowser()) return Promise.resolve(); 32766 return new Promise(function (resolve) { 32767 readyResolvers.push(resolve); 32768 ensureStarted(timeout); 32769 }); 32770} 32771function isAfterLcp() { 32772 return lcpReached; 32773} 32774/* harmony default export */ const after_lcp_scheduler = ((/* unused pure expression or super */ null && (scheduleAfterLcp))); 32775;// ./src/components/Menu/hooks/useServiceSubscription.ts
32776var useServiceSubscription_assign = undefined && undefined.__assign || function () { 32777 useServiceSubscription_assign = Object.assign || function (t) { 32778 for (var s, i = 1, n = arguments.length; i < n; i++) { 32779 s = arguments[i]; 32780 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 32781 } 32782 return t; 32783 }; 32784 return useServiceSubscription_assign.apply(this, arguments); 32785}; 32786var useServiceSubscription_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 32787 function adopt(value) { 32788 return value instanceof P ? value : new P(function (resolve) { 32789 resolve(value); 32790 }); 32791 } 32792 return new (P || (P = Promise))(function (resolve, reject) { 32793 function fulfilled(value) { 32794 try { 32795 step(generator.next(value)); 32796 } catch (e) { 32797 reject(e); 32798 } 32799 } 32800 function rejected(value) { 32801 try { 32802 step(generator["throw"](value)); 32803 } catch (e) { 32804 reject(e); 32805 } 32806 } 32807 function step(result) { 32808 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 32809 } 32810 step((generator = generator.apply(thisArg, _arguments || [])).next()); 32811 }); 32812}; 32813var useServiceSubscription_generator = undefined && undefined.__generator || function (thisArg, body) { 32814 var _ = { 32815 label: 0, 32816 sent: function sent() { 32817 if (t[0] & 1) throw t[1]; 32818 return t[1]; 32819 }, 32820 trys: [], 32821 ops: [] 32822 }, 32823 f, 32824 y, 32825 t, 32826 g; 32827 return g = { 32828 next: verb(0), 32829 "throw": verb(1), 32830 "return": verb(2) 32831 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 32832 return this; 32833 }), g; 32834 function verb(n) { 32835 return function (v) { 32836 return step([n, v]); 32837 }; 32838 } 32839 function step(op) { 32840 if (f) throw new TypeError("Generator is already executing."); 32841 while (g && (g = 0, op[0] && (_ = 0)), _) try { 32842 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; 32843 if (y = 0, t) op = [op[0] & 2, t.value]; 32844 switch (op[0]) { 32845 case 0: 32846 case 1: 32847 t = op; 32848 break; 32849 case 4: 32850 _.label++; 32851 return { 32852 value: op[1], 32853 done: false 32854 }; 32855 case 5: 32856 _.label++; 32857 y = op[1]; 32858 op = [0]; 32859 continue; 32860 case 7: 32861 op = _.ops.pop(); 32862 _.trys.pop(); 32863 continue; 32864 default: 32865 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 32866 _ = 0; 32867 continue; 32868 } 32869 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 32870 _.label = op[1]; 32871 break; 32872 } 32873 if (op[0] === 6 && _.label < t[1]) { 32874 _.label = t[1]; 32875 t = op; 32876 break; 32877 } 32878 if (t && _.label < t[2]) { 32879 _.label = t[2]; 32880 _.ops.push(op); 32881 break; 32882 } 32883 if (t[2]) _.ops.pop(); 32884 _.trys.pop(); 32885 continue; 32886 } 32887 op = body.call(thisArg, _); 32888 } catch (e) { 32889 op = [6, e]; 32890 y = 0; 32891 } finally { 32892 f = t = 0; 32893 } 32894 if (op[0] & 5) throw op[1]; 32895 return { 32896 value: op[0] ? op[1] : void 0, 32897 done: true 32898 }; 32899 } 32900}; 32901var useServiceSubscription_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 32902 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 32903 if (ar || !(i in from)) { 32904 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 32905 ar[i] = from[i]; 32906 } 32907 } 32908 return to.concat(ar || Array.prototype.slice.call(from)); 32909}; 32910 32911 32912 32913 32914 32915 32916 32917 32918var SUBSCRIBED_STATUS = 1; 32919var UNINSTALLED_STATUS = 2; 32920var mergePreInstalledKeys = function mergePreInstalledKeys(keys) { 32921 var mergedSet = PRE_INSTALLED_KEYS.concat(keys); 32922 return mergedSet.filter(function (v, i, a) { 32923 return a.indexOf(v) === i; 32924 }); 32925}; 32926var buildServiceListByKeys = function buildServiceListByKeys(keys) { 32927 var mergedKeys = mergePreInstalledKeys(keys); 32928 return SERVICE_LIST.map(function (item) { 32929 return useServiceSubscription_assign(useServiceSubscription_assign({}, item), { 32930 status: mergedKeys.includes(item.key) ? SUBSCRIBED_STATUS : UNINSTALLED_STATUS, 32931 installTime: undefined 32932 }); 32933 }); 32934}; 32935var getSubscribedKeysFromInstalledAppCache = function getSubscribedKeysFromInstalledAppCache() { 32936 var _a; 32937 try {
32938 var addStore = new add_store/* default */.A(); 32939 var cacheValue = (_a = addStore.get()) === null || _a === void 0 ? void 0 : _a.value; 32940 var services = cacheValue === null || cacheValue === void 0 ? void 0 : cacheValue.services; 32941 if (!Array.isArray(services)) return null; 32942 var appCodeToKeyMap_1 = Object.keys(SERVICE_KEY_TO_APP_CODE).reduce(function (acc, key) { 32943 acc[String(SERVICE_KEY_TO_APP_CODE[key]).toLowerCase()] = key; 32944 return acc; 32945 }, {}); 32946 var keys = services.filter(function (item) { 32947 return Number(item === null || item === void 0 ? void 0 : item.status) === SUBSCRIBED_STATUS; 32948 }).map(function (item) { 32949 return appCodeToKeyMap_1[String((item === null || item === void 0 ? void 0 : item.appCode) || '').toLowerCase()]; 32950 }).filter(Boolean); 32951 return mergePreInstalledKeys(keys); 32952 } catch (e) { 32953 return null; 32954 } 32955}; 32956var initSubscriptions = function initSubscriptions() { 32957 var cachedKeys = getSubscribedKeysFromInstalledAppCache(); 32958 if (cachedKeys) { 32959 return cachedKeys; 32960 } 32961 var keys; 32962 if (bar_config/* isNewUser */.mv) { 32963 keys = useServiceSubscription_spreadArray([], PRE_INSTALLED_KEYS, true); 32964 } else { 32965 keys = useServiceSubscription_spreadArray([], ALL_SERVICE_KEYS, true); 32966 } 32967 return keys; 32968}; 32969function useServiceSubscription(props) { 32970 var _this = this; 32971 if (props === void 0) { 32972 props = {}; 32973 } 32974 var axios = props.axios, 32975 updateCallBack = props.updateCallBack, 32976 _a = props.deferInitialFetch, 32977 deferInitialFetch = _a === void 0 ? false : _a; 32978 var appStoreActions = useAddStore({ 32979 axios: axios, 32980 updateCallBack: updateCallBack, 32981 appType: 2 32982 }); 32983 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(function () { 32984 return initSubscriptions(); 32985 }), 32986 subscribedKeys = _b[0], 32987 setSubscribedKeys = _b[1]; 32988 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(function () { 32989 return buildServiceListByKeys(initSubscriptions()); 32990 }), 32991 serviceList = _c[0], 32992 setServiceList = _c[1]; 32993 var _d = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32994 loading = _d[0], 32995 setLoading = _d[1]; 32996 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32997 isModalVisible = _e[0], 32998 setIsModalVisible = _e[1]; 32999 var hasRefreshedServiceStatusRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false); 33000 var syncBySubscribedKeys = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (keys) { 33001 var mergedKeys = mergePreInstalledKeys(keys); 33002 setSubscribedKeys(mergedKeys); 33003 setServiceList(buildServiceListByKeys(mergedKeys)); 33004 }, []); 33005 var refreshServiceStatus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 33006 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33007 var shouldShowLoading, _a, err, res, addStore, services, appCodeToKeyMap, statusMap, installTimeMap, nextList, nextSubscribedKeys; 33008 var _b; 33009 return useServiceSubscription_generator(this, function (_c) { 33010 switch (_c.label) { 33011 case 0: 33012 if (!axios) return [2]; 33013 shouldShowLoading = hasRefreshedServiceStatusRef.current; 33014 if (shouldShowLoading) { 33015 setLoading(true); 33016 } 33017 return [4, axios({ 33018 method: 'post', 33019 url: 'userCenterForeignWeb/userApp/list', 33020 data: { 33021 deviceType: 'PC', 33022 affiliateId: js_cookie/* default */.A.get('invite-token') || '' 33023 } 33024 })]; 33025 case 1: 33026 _a = _c.sent(), err = _a[0], res = _a[1]; 33027 hasRefreshedServiceStatusRef.current = true; 33028 if (shouldShowLoading) { 33029 setLoading(false); 33030 } 33031 if (err || !res || !(res === null || res === void 0 ? void 0 : res.success)) return [2]; 33032 try {
33033 addStore = new add_store/* default */.A(); 33034 addStore.save(res === null || res === void 0 ? void 0 : res.data); 33035 } catch (e) {} 33036 services = ((_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.services) || []; 33037 appCodeToKeyMap = Object.keys(SERVICE_KEY_TO_APP_CODE).reduce(function (acc, key) { 33038 acc[String(SERVICE_KEY_TO_APP_CODE[key]).toLowerCase()] = key; 33039 return acc; 33040 }, {}); 33041 statusMap = {}; 33042 installTimeMap = {}; 33043 services.forEach(function (item) { 33044 var serviceKey = appCodeToKeyMap[String((item === null || item === void 0 ? void 0 : item.appCode) || '').toLowerCase()]; 33045 if (serviceKey) { 33046 statusMap[serviceKey] = Number(item === null || item === void 0 ? void 0 : item.status) || UNINSTALLED_STATUS; 33047 var parsedInstallTime = Number(item === null || item === void 0 ? void 0 : item.installTime); 33048 if (!Number.isNaN(parsedInstallTime)) { 33049 installTimeMap[serviceKey] = parsedInstallTime; 33050 } 33051 } 33052 }); 33053 nextList = SERVICE_LIST.map(function (item) { 33054 return useServiceSubscription_assign(useServiceSubscription_assign({}, item), { 33055 status: PRE_INSTALLED_KEYS.includes(item.key) ? SUBSCRIBED_STATUS : statusMap[item.key] || UNINSTALLED_STATUS, 33056 installTime: installTimeMap[item.key] 33057 }); 33058 }); 33059 nextSubscribedKeys = mergePreInstalledKeys(nextList.filter(function (item) { 33060 return Number(item.status) === SUBSCRIBED_STATUS; 33061 }).map(function (item) { 33062 return item.key; 33063 })); 33064 setServiceList(nextList); 33065 setSubscribedKeys(nextSubscribedKeys); 33066 return [2]; 33067 } 33068 }); 33069 }); 33070 }, [axios]); 33071 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33072 if (!axios) return; 33073 if (!deferInitialFetch) { 33074 void refreshServiceStatus(); 33075 return; 33076 } 33077 var cancel = scheduleAfterLcp(function () { 33078 void refreshServiceStatus(); 33079 }); 33080 return cancel; 33081 }, [axios, refreshServiceStatus, deferInitialFetch]); 33082 var isSubscribed = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33083 return subscribedKeys.includes(key); 33084 }, [subscribedKeys]); 33085 var canUnsubscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33086 return !PRE_INSTALLED_KEYS.includes(key); 33087 }, []); 33088 var subscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33089 if (!axios) { 33090 var next = useServiceSubscription_spreadArray([], subscribedKeys, true); 33091 if (!next.includes(key)) next.push(key); 33092 syncBySubscribedKeys(next); 33093 return; 33094 } 33095 var appCode = SERVICE_KEY_TO_APP_CODE[key]; 33096 if (!appCode) return; 33097 void function () { 33098 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33099 var success; 33100 return useServiceSubscription_generator(this, function (_a) { 33101 switch (_a.label) { 33102 case 0: 33103 setLoading(true); 33104 return [4, appStoreActions.installApp({ 33105 platformCode: appCode, 33106 platformName: key 33107 }, { 33108 silentToast: true 33109 })]; 33110 case 1: 33111 success = _a.sent(); 33112 if (!success) return [3, 3]; 33113 (0,toast/* toast_success */.q)('Subscribed Successfully'); 33114 return [4, refreshServiceStatus()]; 33115 case 2: 33116 _a.sent(); 33117 _a.label = 3; 33118 case 3: 33119 setLoading(false); 33120 return [2]; 33121 } 33122 }); 33123 }); 33124 }(); 33125 }, [axios, appStoreActions, refreshServiceStatus, subscribedKeys, syncBySubscribedKeys]); 33126 var unsubscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33127 if (!canUnsubscribe(key)) return; 33128 if (!axios) { 33129 syncBySubscribedKeys(subscribedKeys.filter(function (k) { 33130 return k !== key; 33131 })); 33132 return; 33133 } 33134 var appCode = SERVICE_KEY_TO_APP_CODE[key]; 33135 if (!appCode) return; 33136 void function () { 33137 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33138 var success; 33139 return useServiceSubscription_generator(this, function (_a) { 33140 switch (_a.label) { 33141 case 0:
33142 setLoading(true); 33143 return [4, appStoreActions.uninstallApp({ 33144 platformCode: appCode 33145 }, { 33146 silentToast: true 33147 })]; 33148 case 1: 33149 success = _a.sent(); 33150 if (!success) return [3, 3]; 33151 (0,toast/* default */.A)('Unsubscribed Successfully'); 33152 return [4, refreshServiceStatus()]; 33153 case 2: 33154 _a.sent(); 33155 _a.label = 3; 33156 case 3: 33157 setLoading(false); 33158 return [2]; 33159 } 33160 }); 33161 }); 33162 }(); 33163 }, [axios, appStoreActions, canUnsubscribe, refreshServiceStatus, subscribedKeys, syncBySubscribedKeys]); 33164 var toggleSubscription = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33165 if (subscribedKeys.includes(key)) { 33166 unsubscribe(key); 33167 } else { 33168 subscribe(key); 33169 } 33170 }, [subscribedKeys, subscribe, unsubscribe]); 33171 var openServiceCenter = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 33172 if (!axios) { 33173 setIsModalVisible(true); 33174 return; 33175 } 33176 void function () { 33177 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33178 return useServiceSubscription_generator(this, function (_a) { 33179 switch (_a.label) { 33180 case 0: 33181 return [4, refreshServiceStatus()]; 33182 case 1: 33183 _a.sent(); 33184 setIsModalVisible(true); 33185 return [2]; 33186 } 33187 }); 33188 }); 33189 }(); 33190 }, [axios, refreshServiceStatus]); 33191 var closeServiceCenter = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 33192 setIsModalVisible(false); 33193 }, []); 33194 return { 33195 subscribedKeys: subscribedKeys, 33196 isSubscribed: isSubscribed, 33197 subscribe: subscribe, 33198 unsubscribe: unsubscribe, 33199 toggleSubscription: toggleSubscription, 33200 canUnsubscribe: canUnsubscribe, 33201 serviceList: serviceList, 33202 loading: loading, 33203 isModalVisible: isModalVisible, 33204 openServiceCenter: openServiceCenter, 33205 closeServiceCenter: closeServiceCenter 33206 }; 33207} 33208;// ./src/common/hydrate-when.ts 33209 33210 33211var DEFAULT_EVENTS = ['click', 'focus', 'mouseenter', 'touchstart']; 33212function hydrate_when_isBrowser() { 33213 return typeof window !== 'undefined' && typeof document !== 'undefined'; 33214} 33215function useHydrateWhen(strategy, options) { 33216 if (strategy === void 0) { 33217 strategy = 'immediate'; 33218 } 33219 if (options === void 0) { 33220 options = {}; 33221 } 33222 var _a = options.rootMargin, 33223 rootMargin = _a === void 0 ? '240px' : _a, 33224 _b = options.events, 33225 events = _b === void 0 ? DEFAULT_EVENTS : _b, 33226 _c = options.idleTimeout, 33227 idleTimeout = _c === void 0 ? 2000 : _c, 33228 _d = options.afterLcpTimeout, 33229 afterLcpTimeout = _d === void 0 ? 2500 : _d; 33230 var ref = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null); 33231 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(strategy === 'immediate'), 33232 active = _e[0], 33233 setActive = _e[1]; 33234 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33235 if (active) return; 33236 if (!hydrate_when_isBrowser()) { 33237 return; 33238 } 33239 var cleanup; 33240 if (strategy === 'visible') { 33241 var target = ref.current; 33242 if (!target || !('IntersectionObserver' in window)) { 33243 setActive(true); 33244 return; 33245 } 33246 var observer_1 = new IntersectionObserver(function (entries) { 33247 if (entries.some(function (entry) { 33248 return entry.isIntersecting; 33249 })) {
33250 setActive(true); 33251 observer_1.disconnect(); 33252 } 33253 }, { 33254 rootMargin: rootMargin 33255 }); 33256 observer_1.observe(target); 33257 cleanup = function cleanup() { 33258 return observer_1.disconnect(); 33259 }; 33260 } else if (strategy === 'interaction') { 33261 var target_1 = ref.current; 33262 if (!target_1) { 33263 var id = scheduleIdle(function () { 33264 return setActive(true); 33265 }, idleTimeout); 33266 cleanup = id; 33267 } else { 33268 var onTrigger_1 = function onTrigger_1() { 33269 return setActive(true); 33270 }; 33271 events.forEach(function (evt) { 33272 return target_1.addEventListener(evt, onTrigger_1, { 33273 once: true, 33274 passive: true 33275 }); 33276 }); 33277 cleanup = function cleanup() { 33278 return events.forEach(function (evt) { 33279 return target_1.removeEventListener(evt, onTrigger_1); 33280 }); 33281 }; 33282 } 33283 } else if (strategy === 'idle') { 33284 cleanup = scheduleIdle(function () { 33285 return setActive(true); 33286 }, idleTimeout); 33287 } else if (strategy === 'afterLcp') { 33288 cleanup = scheduleAfterLcp(function () { 33289 return setActive(true); 33290 }, { 33291 timeout: afterLcpTimeout 33292 }); 33293 } 33294 return function () { 33295 cleanup && cleanup(); 33296 }; 33297 }, [active, strategy, rootMargin, idleTimeout, afterLcpTimeout]); 33298 var trigger = function trigger() { 33299 return setActive(true); 33300 }; 33301 return { 33302 active: active, 33303 ref: ref, 33304 trigger: trigger 33305 }; 33306} 33307function scheduleIdle(cb, timeout) { 33308 if (!hydrate_when_isBrowser()) return function () {}; 33309 var w = window; 33310 if (typeof w.requestIdleCallback === 'function') { 33311 var handle_1 = w.requestIdleCallback(cb, { 33312 timeout: timeout 33313 }); 33314 return function () { 33315 return w.cancelIdleCallback && w.cancelIdleCallback(handle_1); 33316 }; 33317 } 33318 var timer = setTimeout(cb, Math.min(timeout, 200)); 33319 return function () { 33320 return clearTimeout(timer); 33321 }; 33322} 33323// EXTERNAL MODULE: ./src/common/authority-utils.ts 33324var authority_utils = __webpack_require__(25435); 33325;// ./src/components/Menu/index.tsx 33326var Menu_assign = undefined && undefined.__assign || function () { 33327 Menu_assign = Object.assign || function (t) { 33328 for (var s, i = 1, n = arguments.length; i < n; i++) { 33329 s = arguments[i]; 33330 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 33331 } 33332 return t; 33333 }; 33334 return Menu_assign.apply(this, arguments); 33335}; 33336 33337 33338 33339 33340 33341 33342 33343 33344 33345 33346 33347 33348 33349 33350 33351 33352 33353 33354var loadMenuChatBox = function loadMenuChatBox() { 33355 return Promise.all(/* import() */[__webpack_require__.e(1554), __webpack_require__.e(326)]).then(__webpack_require__.bind(__webpack_require__, 91554)); 33356}; 33357 33358 33359 33360 33361 33362var loadAppStore = function loadAppStore() { 33363 return __webpack_require__.e(/* import() */ 6164).then(__webpack_require__.bind(__webpack_require__, 16164)); 33364}; 33365 33366var loadMenuUpdateGuide = function loadMenuUpdateGuide() { 33367 return Promise.all(/* import() */[__webpack_require__.e(5503), __webpack_require__.e(2440)]).then(__webpack_require__.bind(__webpack_require__, 62440)); 33368}; 33369 33370 33371 33372var loadServiceCenter = function loadServiceCenter() { 33373 return __webpack_require__.e(/* import() */ 5579).then(__webpack_require__.bind(__webpack_require__, 85579)); 33374}; 33375 33376 33377 33378 33379var _handlerMenusAuth = function handlerMenusAuth(menus, token) { 33380 return menus.map(function (menu) { 33381 return Menu_assign(Menu_assign({}, menu), { 33382 route: !token ? (0,common/* handleAuthUrl */.gQ)((menu === null || menu === void 0 ? void 0 : menu.route) || '') : menu === null || menu === void 0 ? void 0 : menu.route, 33383 childs: _handlerMenusAuth((menu === null || menu === void 0 ? void 0 : menu.childs) || [], token) 33384 }); 33385 }); 33386}; 33387var PureMenu = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(function () { 33388 var _a, _b, _c; 33389 var notMenu = useNotMenu(); 33390 var _d = (0,PropsContext/* useGlobalProps */.v)(), 33391 otherCookies = _d.otherCookies, 33392 cjDomain = _d.cjDomain, 33393 getDomainByUrl = _d.getDomainByUrl, 33394 loginInfo = _d.loginInfo;
33395 var $axios = (0,useAxios/* useAxios */.q)(getDomainByUrl); 33396 var siteCheck = (0,use_site_check/* default */.A)(); 33397 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 33398 var useNewAiChat = (0,useIsAiChat/* default */.A)(siteCheck); 33399 var chatAfterLcp = typeof window !== 'undefined' && window.__MF_MENU_CHAT_AFTER_LCP__ === true; 33400 var chatActive = useHydrateWhen(chatAfterLcp ? 'afterLcp' : 'immediate').active; 33401 var LazyChatBox = useLazyComponent(!useNewAiChat && chatActive, loadMenuChatBox, { 33402 componentName: 'ChatBox', 33403 chunkName: 'cjheader-chatbox' 33404 }); 33405 var enhancersAfterLcp = typeof window !== 'undefined' && window.__MF_MENU_ENHANCERS_AFTER_LCP__ === true; 33406 var enhancersActive = useHydrateWhen(enhancersAfterLcp ? 'afterLcp' : 'immediate').active; 33407 if (notMenu || useNewAiChat) { 33408 var dom_1 = document.getElementById('chat-icon-box'); 33409 if (!dom_1) { 33410 var div_1 = document.createElement('div'); 33411 div_1.setAttribute('id', "chat-icon-box"); 33412 document.body.appendChild(div_1); 33413 loadMenuChatBox().then(function (m) { 33414 return external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default().render(/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(m["default"], { 33415 axios: $axios 33416 }), div_1); 33417 }); 33418 } 33419 if (notMenu) { 33420 return null; 33421 } 33422 } 33423 var dom = document.getElementById('chat-icon-box'); 33424 !useNewAiChat && dom && document.body.removeChild(dom); 33425 var _e = useHideAuthorize($axios, isCJSite), 33426 showAuthorizeListData = _e.showAuthorizeListData, 33427 _menus = _e.menus, 33428 updateMenus = _e.updateMenus; 33429 var hasAuthorization = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33430 return _menus.filter(function (item) { 33431 return item.name === 'Authorization'; 33432 }).length > 0; 33433 }, [_menus]); 33434 var isZesty = siteCheck.isSite('ZS'); 33435 var logoHref = isCJSite ? (0,cj_href/* cjHref */.F)('/home') : cjDomain; 33436 var _f = useIsCollapsed(), 33437 isCollapsed = _f.isCollapsed, 33438 allowSwitchToggle = _f.allowSwitch, 33439 toggleCollapsed = _f.toggle; 33440 var highlight = hooks_useActiveRoute(); 33441 var isVip = (0,useIsVip/* default */.A)(); 33442 var menuContainerRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null); 33443 var appStoreHooks = useAddStore({ 33444 axios: $axios, 33445 updateCallBack: function updateCallBack() { 33446 if (isCJSite && updateMenus) { 33447 updateMenus(); 33448 } 33449 } 33450 }); 33451 var menuUpdateGuideHooks = useMenuUpdateGuide({ 33452 isCjSiteShow: isCJSite 33453 }); 33454 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33455 if (menuUpdateGuideHooks.visible && isCollapsed) { 33456 toggleCollapsed('0'); 33457 } 33458 }, [menuUpdateGuideHooks.visible, isCollapsed, toggleCollapsed]); 33459 var menus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33460 return _handlerMenusAuth(_menus, loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.token); 33461 }, [_menus, loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.token, siteCheck]); 33462 var serviceSubscription = useServiceSubscription({ 33463 axios: $axios, 33464 deferInitialFetch: typeof window !== 'undefined' && window.__MF_MENU_SVC_DEFER__ === true, 33465 updateCallBack: function updateCallBack() { 33466 if (isCJSite && updateMenus) { 33467 updateMenus(); 33468 } 33469 } 33470 }); 33471 var LazyAppStore = useLazyComponent(isCJSite && hasAuthorization && enhancersActive, loadAppStore, { 33472 componentName: 'AppStore', 33473 chunkName: 'menu-appstore' 33474 }); 33475 var LazyMenuUpdateGuide = useLazyComponent(enhancersActive, loadMenuUpdateGuide, { 33476 componentName: 'MenuUpdateGuide', 33477 chunkName: 'menu-update-guide' 33478 }); 33479 var LazyServiceCenter = useLazyComponent(isCJSite && enhancersActive, loadServiceCenter, { 33480 componentName: 'ServiceCenter', 33481 chunkName: 'menu-service-center' 33482 }); 33483 var filteredMenus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33484 if (!isCJSite) return menus; 33485 var serviceInstallTimeMap = serviceSubscription.serviceList.reduce(function (acc, item) { 33486 acc[item.key] = Number(item.installTime) || 0; 33487 return acc; 33488 }, {}); 33489 return menus.map(function (menu) { 33490 if (menu.name === 'Service') { 33491 var sourceChilds = menu.childs || []; 33492 var childsWithIndex = sourceChilds.map(function (child, index) { 33493 return { 33494 child: child, 33495 index: index 33496 }; 33497 }).filter(function (_a) { 33498 var child = _a.child; 33499 var serviceKey = MENU_NAME_TO_SERVICE_KEY[child.name]; 33500 if (!serviceKey) return true; 33501 if (PRE_INSTALLED_KEYS.includes(serviceKey)) return true; 33502 return serviceSubscription.isSubscribed(serviceKey); 33503 }).sort(function (a, b) { 33504 var aKey = MENU_NAME_TO_SERVICE_KEY[a.child.name]; 33505 var bKey = MENU_NAME_TO_SERVICE_KEY[b.child.name]; 33506 var aIsPreInstalled = aKey ? PRE_INSTALLED_KEYS.includes(aKey) : false;
33507 var bIsPreInstalled = bKey ? PRE_INSTALLED_KEYS.includes(bKey) : false; 33508 if (aIsPreInstalled !== bIsPreInstalled) { 33509 return aIsPreInstalled ? -1 : 1; 33510 } 33511 var aInstallTime = aKey ? serviceInstallTimeMap[aKey] || 0 : 0; 33512 var bInstallTime = bKey ? serviceInstallTimeMap[bKey] || 0 : 0; 33513 if (aInstallTime === bInstallTime) { 33514 return a.index - b.index; 33515 } 33516 return aInstallTime - bInstallTime; 33517 }).map(function (_a) { 33518 var child = _a.child; 33519 return child; 33520 }); 33521 return Menu_assign(Menu_assign({}, menu), { 33522 childs: childsWithIndex 33523 }); 33524 } 33525 return menu; 33526 }); 33527 }, [menus, isCJSite, serviceSubscription.subscribedKeys, serviceSubscription.serviceList]); 33528 var isGoogleTrans = !languages/* sixCountryLanguage */.V.includes(otherCookies.lng); 33529 use_changed(function () { 33530 window.dispatchEvent(new CustomEvent('resizeMenu', { 33531 detail: { 33532 width: isCollapsed ? isZesty ? zestyMenuCollapsedWidth : collapsedWidth : expandedWidth 33533 } 33534 })); 33535 }, [isCollapsed]); 33536 var logoStyles = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33537 var style = {}; 33538 if (isQs(siteCheck)) { 33539 style.height = 70; 33540 style.backgroundColor = '#41424c'; 33541 } else if ((0,common/* is1688 */.G3)(siteCheck)) { 33542 style.height = 76; 33543 } 33544 return style; 33545 }, [siteCheck]); 33546 var NormalLogo = (0,common/* is1688 */.G3)(siteCheck) ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(THLogo_THLogo, { 33547 logo: siteCheck.data('logo') 33548 })) : (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 33549 key: "normalLogo", 33550 src: siteCheck.data('logo'), 33551 width: siteCheck.data('logo-width'), 33552 height: siteCheck.data('logo-height') 33553 })); 33554 var handleToggleCollapsed = function handleToggleCollapsed() { 33555 if (menuUpdateGuideHooks.visible) return; 33556 toggleCollapsed(); 33557 }; 33558 var collapsedKey = isZesty ? 'zs' : 'cj'; 33559 var CollapsedIcon = (_a = {}, _a['cj'] = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33560 className: Menu/* default */.A['collapsed-icon'], 33561 onClick: handleToggleCollapsed, 33562 "data-gtag-element": "toggle" 33563 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 33564 type: isCollapsed ? 'lujingbeifen2' : 'zuo' 33565 })), _a['zs'] = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(CollapsedIcon_CollapsedIcon, { 33566 onClick: handleToggleCollapsed, 33567 isCollapsed: isCollapsed 33568 }), _a)[collapsedKey]; 33569 var menuWidth = isCollapsed ? isZesty ? zestyMenuCollapsedWidth : collapsedWidth : expandedWidth; 33570 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, null, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33571 style: { 33572 width: menuWidth, 33573 height: '100vh', 33574 flexShrink: 0 33575 } 33576 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33577 className: classnames_default()(Menu/* default */.A['mycj-menu'], (_b = { 33578 notranslate: !isGoogleTrans 33579 }, _b[Menu/* default */.A.collapsed] = isCollapsed, _b[Menu/* default */.A.vip] = isVip, _b[Menu/* default */.A.zs] = isZesty, _b)), 33580 "data-gtag-module": "cj_menu" 33581 }, allowSwitchToggle && !menuUpdateGuideHooks.visible && CollapsedIcon, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33582 className: classnames_default()(Menu/* default */.A.logo, (_c = {}, _c[Menu/* default */.A['shadow-logo']] = (0,common/* is1688 */.G3)(siteCheck), _c[Menu/* default */.A.zs] = isZesty, _c)), 33583 style: logoStyles 33584 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", { 33585 href: logoHref, 33586 "data-gtag-element": "logo" 33587 }, isCollapsed ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 33588 key: "collapsedLogo", 33589 src: siteCheck.data('favicon'), 33590 width: 36, 33591 height: 36 33592 })) : NormalLogo)), isCollapsed && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(components_Menu_MenuCollapsed, { 33593 isActive: highlight.isActive, 33594 isParentActive: highlight.isParentActive, 33595 showAuthorizeListData: showAuthorizeListData, 33596 menus: filteredMenus, 33597 openAddStore: appStoreHooks.openAddStore, 33598 openServiceCenter: isCJSite ? serviceSubscription.openServiceCenter : undefined 33599 })), !isCollapsed && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(components_Menu_MenuNormal, { 33600 isActive: highlight.isActive, 33601 isParentActive: highlight.isParentActive, 33602 showAuthorizeListData: showAuthorizeListData, 33603 menus: filteredMenus, 33604 openAddStore: appStoreHooks.openAddStore, 33605 menuContainerRef: menuContainerRef, 33606 openServiceCenter: isCJSite ? serviceSubscription.openServiceCenter : undefined, 33607 disableScroll: menuUpdateGuideHooks.visible 33608 })), !useNewAiChat && chatActive && LazyChatBox ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyChatBox, { 33609 needCollapsed: true, 33610 isCollapsed: isCollapsed, 33611 axios: $axios 33612 })) : null, isCJSite && hasAuthorization && enhancersActive && LazyAppStore && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyAppStore, Menu_assign({}
33612, appStoreHooks))), enhancersActive && LazyMenuUpdateGuide && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyMenuUpdateGuide, { 33613 visible: menuUpdateGuideHooks.visible && !isCollapsed, 33614 onOK: menuUpdateGuideHooks.onOK, 33615 isCollapsed: isCollapsed, 33616 menuContainerRef: menuContainerRef, 33617 guideMode: menuUpdateGuideHooks.guideMode 33618 })), isCJSite && enhancersActive && LazyServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyServiceCenter, { 33619 visible: serviceSubscription.isModalVisible, 33620 onClose: serviceSubscription.closeServiceCenter, 33621 serviceList: serviceSubscription.serviceList, 33622 loading: serviceSubscription.loading, 33623 isSubscribed: serviceSubscription.isSubscribed, 33624 canUnsubscribe: serviceSubscription.canUnsubscribe, 33625 toggleSubscription: serviceSubscription.toggleSubscription 33626 })))); 33627}); 33628function Menu_Menu(_a) { 33629 var _b = _a.getDomainByUrl, 33630 getDomainByUrl = _b === void 0 ? function (url) { 33631 return url; 33632 } : _b, 33633 _c = _a.platform, 33634 platform = _c === void 0 ? 'cj' : _c; 33635 i18next_refact(window.i18next, 'en'); 33636 var data = { 33637 platform: platform, 33638 getDomainByUrl: getDomainByUrl 33639 }; 33640 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(PropsContext/* default */.A.Provider, { 33641 value: data 33642 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(PureMenu, null)); 33643} 33644})(); 33645 33646/******/ return __webpack_exports__; 33647/******/ })() 33648; 33649});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.