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.tiktok), { 4691 nameTrans: function nameTrans() { 4692 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 4693 }, 4694 version: 2, 4695 type: 'authorize', 4696 active: false 4697 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.tiktok_us), { 4698 nameTrans: function nameTrans() { 4699 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 4700 }, 4701 version: 2, 4702 type: 'authorize', 4703 active: false 4704 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.tiktok_us_cross), { 4705 nameTrans: function nameTrans() { 4706 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 4707 }, 4708 version: 2, 4709 type: 'authorize', 4710 active: false 4711 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.woocommerce), { 4712 nameTrans: function nameTrans() { 4713 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 4714 }, 4715 version: 2, 4716 type: 'authorize', 4717 active: false 4718 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.ebay), { 4719 nameTrans: function nameTrans() { 4720 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 4721 }, 4722 version: 2, 4723 type: 'authorize', 4724 active: false 4725 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.api), { 4726 nameTrans: function nameTrans() { 4727 return "".concat(window.i18next.t("common-mycj-menu-api")); 4728 }, 4729 version: 2, 4730 type: 'authorize', 4731 active: false 4732 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.etsy), { 4733 nameTrans: function nameTrans() { 4734 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 4735 }, 4736 version: 2, 4737 type: 'authorize', 4738 active: false 4739 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.aliexpress), { 4740 nameTrans: function nameTrans() { 4741 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 4742 }, 4743 version: 2, 4744 type: 'authorize', 4745 active: false 4746 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.wix), { 4747 nameTrans: function nameTrans() { 4748 return "".concat(window.i18next.t("common-mycj-menu-wix")); 4749 }, 4750 version: 2, 4751 type: 'authorize', 4752 active: false 4753 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.lazada), { 4754 nameTrans: function nameTrans() { 4755 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 4756 }, 4757 version: 2, 4758 type: 'authorize', 4759 active: false 4760 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shopee), { 4761 nameTrans: function nameTrans() { 4762 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 4763 }, 4764 version: 2, 4765 type: 'authorize', 4766 active: false 4767 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.squarespace), { 4768 nameTrans: function nameTrans() { 4769 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 4770 }, 4771 version: 2, 4772 type: 'authorize', 4773 active: false 4774 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shoplazza), { 4775 nameTrans: function nameTrans() { 4776 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 4777 }, 4778 version: 2, 4779 type: 'authorize', 4780 active: false 4781 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.magento), { 4782 nameTrans: function nameTrans() { 4783 return "".concat(window.i18next.t("common-mycj-menu-magento")); 4784 }, 4785 version: 2, 4786 type: 'authorize', 4787 active: false 4788 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.bigcommerce), { 4789 nameTrans: function nameTrans() { 4790 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 4791 }, 4792 version: 2, 4793 type: 'authorize', 4794 active: false 4795 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.prestashop), { 4796 nameTrans: function nameTrans() { 4797 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 4798 }, 4799 version: 2, 4800 type: 'authorize', 4801 active: false 4802 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.allvalue), { 4803 nameTrans: function nameTrans() { 4804 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 4805 }, 4806 version: 2, 4807 type: 'authorize', 4808 active: false 4809 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.nuvemshop), { 4810 nameTrans: function nameTrans() { 4811 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 4812 }, 4813 version: 2, 4814 type: 'authorize', 4815 active: false 4816 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.mercado), { 4817 nameTrans: function nameTrans() { 4818 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 4819 }, 4820 version: 2, 4821 type: 'authorize', 4822 active: false 4823 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.shipstation), { 4824 nameTrans: function nameTrans() { 4825 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 4826 }, 4827 version: 2, 4828 type: 'authorize', 4829 active: false 4830 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.orangeconnex), { 4831 nameTrans: function nameTrans() { 4832 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 4833 }, 4834 version: 2, 4835 type: 'authorize', 4836 active: false 4837 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.chatgpt), { 4838 nameTrans: function nameTrans() { 4839 return "".concat(window.i18next.t('common-mycj-menu-chatgpt', 'ChatGPT')); 4840 }, 4841 version: 2, 4842 type: 'authorize', 4843 active: false 4844 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.codex), { 4845 nameTrans: function nameTrans() { 4846 return "".concat(window.i18next.t('common-mycj-menu-codex', 'CodeX')); 4847 }, 4848 version: 2, 4849 type: 'authorize', 4850 active: false 4851 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.claude), { 4852 nameTrans: function nameTrans() { 4853 return "".concat(window.i18next.t('common-mycj-menu-claude', 'Claude')); 4854 }, 4855 version: 2, 4856 type: 'authorize', 4857 active: false 4858 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORMAll */ .Z8.others), { 4859 nameTrans: function nameTrans() { 4860 return "".concat(window.i18next.t("common-mycj-menu-others")); 4861 }, 4862 version: 2, 4863 type: 'authorize', 4864 active: false 4865 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.mabang), { 4866 nameTrans: function nameTrans() { 4867 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 4868 }, 4869 version: 2, 4870 type: 'authorize', 4871 active: false 4872 }), __assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_1__/* .PLATFORM */ .i9.miaoshou), { 4873 nameTrans: function nameTrans() { 4874 return "".concat(window.i18next.t("common-mycj-menu-miaoshou")); 4875 }, 4876 version: 2, 4877 type: 'authorize', 4878 active: false 4879 })] 4880}, { 4881 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'))), 4882 nameVal: "My CJ", 4883 nameTrans: function nameTrans() { 4884 var _a; 4885 return window.i18next.t("common-mycj-my-site", { 4886 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 4887 }); 4888 }, 4889 iconclass: 'bianzu32', 4890 active: false, 4891 childs: [{ 4892 name: 'Settings', 4893 nameTrans: function nameTrans() { 4894 return "".concat(window.i18next.t("common-mycj-menu-settings", 'Settings')); 4895 }, 4896 code: 'mycj_profile', 4897 route: '/my.html#/profile/info', 4898 active: false 4899 }, { 4900 name: 'Wallet', 4901 nameTrans: function nameTrans() { 4902 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 4903 }, 4904 code: 'mycj_wallet', 4905 route: '/mine/wallet', 4906 active: false 4907 }, { 4908 name: 'Ticket', 4909 nameTrans: function nameTrans() { 4910 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 4911 }, 4912 code: 'mycj_ticket', 4913 route: '/mine/ticket', 4914 active: false 4915 }, { 4916 name: 'CJ Prime', 4917 nameTrans: function nameTrans() { 4918 return "".concat(window.i18next.t("common-mycj-menu-cj-prime", 'CJ Prime')); 4919 }, 4920 route: '/prime', 4921 target: '_blank', 4922 active: false 4923 }, { 4924 name: 'Shipping Calculation', 4925 nameTrans: function nameTrans() { 4926 return "".concat(window.i18next.t("common-mycj-menu-shipping-calculation", 'Shipping Calculation')); 4927 }, 4928 code: 'mycj_shipping_calculation', 4929 route: '/calculation.html', 4930 active: false 4931 }, { 4932 name: 'Recent Activity', 4933 nameTrans: function nameTrans() { 4934 return "".concat(window.i18next.t("common-mycj-menu-recent-activity", 'Recent Activity')); 4935 }, 4936 active: false, 4937 childs: [{ 4938 name: 'Browsing History', 4939 nameTrans: function nameTrans() { 4940 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 4941 }, 4942 code: 'mycj_browsing_history', 4943 route: '/viewHistory', 4944 active: false 4945 }, {
4946 name: 'Products Records', 4947 nameTrans: function nameTrans() { 4948 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 4949 }, 4950 route: '/my.html#/products-connection/history', 4951 code: 'mycj_products_records', 4952 active: false 4953 }, { 4954 name: 'Video Records', 4955 nameTrans: function nameTrans() { 4956 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 4957 }, 4958 code: 'mycj_video_list', 4959 route: '/mine/listVideos', 4960 active: false 4961 }, { 4962 name: 'Saved Factories', 4963 nameTrans: function nameTrans() { 4964 return "".concat(window.i18next.t("common-mycj-menu-saved-suppliers", 'Saved Factories')); 4965 }, 4966 route: '/savedFactories', 4967 active: false 4968 }, { 4969 name: 'Export List', 4970 nameTrans: function nameTrans() { 4971 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 4972 }, 4973 iconclass: 'liwuicon_', 4974 code: 'mycj_export_list', 4975 route: '/mine/exportList', 4976 active: false 4977 }] 4978 }] 4979}]; 4980var menuPath = {}; 4981var menuNames = {}; 4982function loops(list, parent) { 4983 return (list || []).map(function (_a) { 4984 var route = _a.route, 4985 childs = _a.childs, 4986 name = _a.name, 4987 version = _a.version; 4988 var _route = route; 4989 var node = menuNames[name] = menuPath[_route] = { 4990 parent: parent, 4991 name: name, 4992 version: version, 4993 route: _route 4994 }; 4995 node['childs'] = loops(childs, node); 4996 return node; 4997 }); 4998} 4999function getPath(name) { 5000 var obj = menuNames[name]; 5001 var arr = []; 5002 while (obj && obj.name) { 5003 if (obj.childs && obj.childs[0]) { 5004 arr.push(obj.name); 5005 } else { 5006 arr.push(obj.name); 5007 } 5008 if (!obj.parent) break; 5009 obj = obj.parent; 5010 } 5011 return arr; 5012} 5013loops(menus, null); 5014var createAuthTree = function createAuthTree() { 5015 var authMapByRoute = []; 5016 var _fun = function fun(list) { 5017 return list.map(function (l) { 5018 if (l.route && l.code) authMapByRoute.push({ 5019 name: l.name, 5020 code: l.code, 5021 route: l.route 5022 }); 5023 return { 5024 name: l.name, 5025 code: l.code, 5026 route: l.route, 5027 children: l.childs && _fun(l.childs) 5028 }; 5029 }); 5030 }; 5031 return [_fun(menus), authMapByRoute]; 5032}; 5033/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAuthTree); 5034 5035/***/ }), 5036 5037/***/ 36694: 5038/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5039 5040"use strict"; 5041/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5042/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 5043/* harmony export */ }); 5044/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19284); 5045/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 5046/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 5047 5048 5049var TriggerWrapper = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(function (props, ref) { 5050 var children = props.children, 5051 getTriggerDOMNode = props.getTriggerDOMNode; 5052 var canUseRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .supportRef */ .f3)(children); 5053 5054 // When use `getTriggerDOMNode`, we should do additional work to get the real dom 5055 var setRef = react__WEBPACK_IMPORTED_MODULE_1__.useCallback(function (node) { 5056 (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_0__/* .fillRef */ .Xf)(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node); 5057 }, [getTriggerDOMNode]); 5058 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)); 5059 return canUseRef ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(children, { 5060 ref: mergedRef 5061 }) : children; 5062}); 5063if (false) // removed by dead control flow 5064{} 5065/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TriggerWrapper); 5066 5067/***/ }), 5068 5069/***/ 36762: 5070/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5071 5072"use strict"; 5073/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5074/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 5075/* harmony export */ }); 5076/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 5077var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 5078 function adopt(value) { 5079 return value instanceof P ? value : new P(function (resolve) { 5080 resolve(value); 5081 }); 5082 } 5083 return new (P || (P = Promise))(function (resolve, reject) { 5084 function fulfilled(value) {
5085 try { 5086 step(generator.next(value)); 5087 } catch (e) { 5088 reject(e); 5089 } 5090 } 5091 function rejected(value) { 5092 try { 5093 step(generator["throw"](value)); 5094 } catch (e) { 5095 reject(e); 5096 } 5097 } 5098 function step(result) { 5099 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 5100 } 5101 step((generator = generator.apply(thisArg, _arguments || [])).next()); 5102 }); 5103}; 5104var __generator = undefined && undefined.__generator || function (thisArg, body) { 5105 var _ = { 5106 label: 0, 5107 sent: function sent() { 5108 if (t[0] & 1) throw t[1]; 5109 return t[1]; 5110 }, 5111 trys: [], 5112 ops: [] 5113 }, 5114 f, 5115 y, 5116 t, 5117 g; 5118 return g = { 5119 next: verb(0), 5120 "throw": verb(1), 5121 "return": verb(2) 5122 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 5123 return this; 5124 }), g; 5125 function verb(n) { 5126 return function (v) { 5127 return step([n, v]); 5128 }; 5129 } 5130 function step(op) { 5131 if (f) throw new TypeError("Generator is already executing."); 5132 while (g && (g = 0, op[0] && (_ = 0)), _) try { 5133 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; 5134 if (y = 0, t) op = [op[0] & 2, t.value]; 5135 switch (op[0]) { 5136 case 0: 5137 case 1: 5138 t = op; 5139 break; 5140 case 4: 5141 _.label++; 5142 return { 5143 value: op[1], 5144 done: false 5145 }; 5146 case 5: 5147 _.label++; 5148 y = op[1]; 5149 op = [0]; 5150 continue; 5151 case 7: 5152 op = _.ops.pop(); 5153 _.trys.pop(); 5154 continue; 5155 default: 5156 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 5157 _ = 0; 5158 continue; 5159 } 5160 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 5161 _.label = op[1]; 5162 break; 5163 } 5164 if (op[0] === 6 && _.label < t[1]) { 5165 _.label = t[1]; 5166 t = op; 5167 break; 5168 } 5169 if (t && _.label < t[2]) { 5170 _.label = t[2]; 5171 _.ops.push(op); 5172 break; 5173 } 5174 if (t[2]) _.ops.pop(); 5175 _.trys.pop(); 5176 continue; 5177 } 5178 op = body.call(thisArg, _); 5179 } catch (e) { 5180 op = [6, e]; 5181 y = 0; 5182 } finally { 5183 f = t = 0; 5184 } 5185 if (op[0] & 5) throw op[1]; 5186 return { 5187 value: op[0] ? op[1] : void 0, 5188 done: true 5189 }; 5190 } 5191}; 5192 5193var ossHostConfig = __webpack_require__(47280); 5194var dexieLoadPromise = null; 5195function loadDexieScript() { 5196 return __awaiter(this, void 0, Promise, function () { 5197 return __generator(this, function (_a) { 5198 if (typeof Dexie !== 'undefined') { 5199 return [2, Promise.resolve()]; 5200 } 5201 if (dexieLoadPromise) { 5202 return [2, dexieLoadPromise]; 5203 } 5204 dexieLoadPromise = new Promise(function (resolve, reject) { 5205 var existingScript = document.querySelector('script[src*="[email protected]"]'); 5206 if (existingScript) { 5207 if (typeof Dexie !== 'undefined') { 5208 resolve(); 5209 return; 5210 } 5211 var checkCount_1 = 0; 5212 var maxChecks_1 = 50; 5213 var checkInterval_1 = setInterval(function () { 5214 checkCount_1++; 5215 if (typeof Dexie !== 'undefined') { 5216 clearInterval(checkInterval_1); 5217 resolve(); 5218 } else if (checkCount_1 >= maxChecks_1) { 5219 clearInterval(checkInterval_1); 5220 reject(new Error('Dexie å è½½è¶ æ¶ï¼å ¨å±åéæªå®ä¹')); 5221 } 5222 }, 100); 5223 return; 5224 } 5225 var script = document.createElement('script'); 5226 script.src = "".concat(ossHostConfig["production"] || 'https://sv-resource.oss-accelerate.aliyuncs.com', "/common-public/[email protected]"); 5227 script.async = true; 5228 script.onload = function () { 5229 if (typeof Dexie !== 'undefined') { 5230 resolve(); 5231 } else { 5232 reject(new Error('Dexie å 载失败ï¼å ¨å±åéæªå®ä¹')); 5233 } 5234 }; 5235 script.onerror = function () { 5236 reject(new Error('Dexie èæ¬å 载失败')); 5237 }; 5238 document.head.appendChild(script); 5239 });
5240 return [2, dexieLoadPromise]; 5241 }); 5242 }); 5243} 5244var CacheDatabase = function () { 5245 function CacheDatabase(DexieClass) { 5246 this.db = new DexieClass('CacheDatabase'); 5247 this.db.version(1).stores({ 5248 cache: 'key, timestamp, expiresAt' 5249 }); 5250 this.cache = this.db.cache; 5251 } 5252 return CacheDatabase; 5253}(); 5254var DexieCache = function () { 5255 function DexieCache() { 5256 this.db = null; 5257 this.DEFAULT_EXPIRE_TIME = 10 * 60 * 1000; 5258 this.DB_NAME = 'CacheDatabase'; 5259 } 5260 DexieCache.prototype.initDB = function () { 5261 return __awaiter(this, void 0, Promise, function () { 5262 return __generator(this, function (_a) { 5263 switch (_a.label) { 5264 case 0: 5265 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5266 throw new Error('Dexie cache only works in browser environment'); 5267 } 5268 return [4, loadDexieScript()]; 5269 case 1: 5270 _a.sent(); 5271 if (!this.db) { 5272 this.db = new CacheDatabase(Dexie); 5273 } 5274 return [2, this.db]; 5275 } 5276 }); 5277 }); 5278 }; 5279 DexieCache.prototype.generateCacheKey = function (key) { 5280 return key; 5281 }; 5282 DexieCache.prototype.isExpired = function (item) { 5283 if (item.expiresAt === null) { 5284 return false; 5285 } 5286 return Date.now() > item.expiresAt; 5287 }; 5288 DexieCache.prototype.getCache = function (options) { 5289 return __awaiter(this, void 0, Promise, function () { 5290 var key, _a, deleteExpiredCache, _b, getExpiredCache, db, cacheKey, item, error_1; 5291 return __generator(this, function (_c) { 5292 switch (_c.label) { 5293 case 0: 5294 key = options.key, _a = options.deleteExpiredCache, deleteExpiredCache = _a === void 0 ? true : _a, _b = options.getExpiredCache, getExpiredCache = _b === void 0 ? false : _b; 5295 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5296 return [2, null]; 5297 } 5298 _c.label = 1; 5299 case 1: 5300 _c.trys.push([1, 7,, 8]); 5301 return [4, this.initDB()]; 5302 case 2: 5303 db = _c.sent(); 5304 cacheKey = this.generateCacheKey(key); 5305 return [4, db.cache.get(cacheKey)]; 5306 case 3: 5307 item = _c.sent(); 5308 if (!item) { 5309 return [2, null]; 5310 } 5311 if (!this.isExpired(item)) return [3, 6]; 5312 if (!deleteExpiredCache) return [3, 5]; 5313 return [4, db.cache["delete"](cacheKey)]; 5314 case 4: 5315 _c.sent(); 5316 _c.label = 5; 5317 case 5: 5318 if (getExpiredCache) { 5319 return [2, item]; 5320 } 5321 return [2, null]; 5322 case 6: 5323 return [2, item]; 5324 case 7: 5325 error_1 = _c.sent(); 5326 console.warn('è·å Dexie ç¼å失败:', error_1); 5327 return [2, null]; 5328 case 8: 5329 return [2]; 5330 } 5331 }); 5332 }); 5333 }; 5334 DexieCache.prototype.setCache = function (options) { 5335 return __awaiter(this, void 0, Promise, function () { 5336 var key, data, expireTime, db, cacheKey, now, expiresAt, item, error_2; 5337 return __generator(this, function (_a) { 5338 switch (_a.label) { 5339 case 0: 5340 key = options.key, data = options.data, expireTime = options.expireTime; 5341 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5342 return [2]; 5343 } 5344 _a.label = 1; 5345 case 1: 5346 _a.trys.push([1, 4,, 5]); 5347 return [4, this.initDB()]; 5348 case 2: 5349 db = _a.sent(); 5350 cacheKey = this.generateCacheKey(key); 5351 now = Date.now(); 5352 expiresAt = expireTime === undefined || expireTime === null ? null : now + expireTime; 5353 item = { 5354 key: cacheKey, 5355 data: data, 5356 timestamp: now, 5357 expiresAt: expiresAt 5358 }; 5359 return [4, db.cache.put(item)]; 5360 case 3: 5361 _a.sent(); 5362 return [3, 5]; 5363 case 4: 5364 error_2 = _a.sent(); 5365 console.warn('设置 Dexie ç¼å失败:', error_2); 5366 return [3, 5]; 5367 case 5: 5368 return [2]; 5369 } 5370 }); 5371 }); 5372 }; 5373 DexieCache.prototype.deleteCache = function (options) { 5374 return __awaiter(this, void 0, Promise, function () { 5375 var key, db, cacheKey, error_3; 5376 return __generator(this, function (_a) { 5377 switch (_a.label) { 5378 case 0: 5379 key = options.key; 5380 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5381 return [2]; 5382 } 5383 _a.label = 1; 5384 case 1: 5385 _a.trys.push([1, 4,, 5]); 5386 return [4, this.initDB()]; 5387 case 2: 5388 db = _a.sent(); 5389 cacheKey = this.generateCacheKey(key); 5390 return [4, db.cache["delete"](cacheKey)]; 5391 case 3: 5392 _a.sent(); 5393 return [3, 5]; 5394 case 4: 5395 error_3 = _a.sent(); 5396 console.warn('å é¤ Dexie ç¼å失败:', error_3); 5397 return [3, 5]; 5398 case 5: 5399 return [2]; 5400 } 5401 }); 5402 }); 5403 }; 5404 DexieCache.prototype.cleanExpiredCache = function () { 5405 return __awaiter(this, void 0, Promise, function () { 5406 var db, now_1, allItems, expiredItems, keys, error_4; 5407 return __generator(this, function (_a) { 5408 switch (_a.label) { 5409 case 0: 5410 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5411 return [2]; 5412 } 5413 _a.label = 1; 5414 case 1: 5415 _a.trys.push([1, 6,, 7]); 5416 return [4, this.initDB()]; 5417 case 2: 5418 db = _a.sent(); 5419 now_1 = Date.now(); 5420 return [4, db.cache.toArray()]; 5421 case 3: 5422 allItems = _a.sent(); 5423 expiredItems = allItems.filter(function (item) { 5424 return item.expiresAt !== null && item.expiresAt < now_1; 5425 }); 5426 if (!(expiredItems.length > 0)) return [3, 5]; 5427 keys = expiredItems.map(function (item) { 5428 return item.key; 5429 }); 5430 return [4, db.cache.bulkDelete(keys)]; 5431 case 4: 5432 _a.sent(); 5433 console.log("\u6E05\u7406\u4E86 ".concat(expiredItems.length, " \u4E2A\u8FC7\u671F\u7F13\u5B58\u9879")); 5434 _a.label = 5; 5435 case 5: 5436 return [3, 7]; 5437 case 6: 5438 error_4 = _a.sent(); 5439 console.warn('æ¸ çè¿æç¼å失败:', error_4); 5440 return [3, 7]; 5441 case 7: 5442 return [2]; 5443 } 5444 }); 5445 }); 5446 }; 5447 DexieCache.prototype.clearAllCache = function () { 5448 return __awaiter(this, void 0, Promise, function () { 5449 var db, error_5; 5450 return __generator(this, function (_a) { 5451 switch (_a.label) { 5452 case 0: 5453 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5454 return [2]; 5455 } 5456 _a.label = 1; 5457 case 1: 5458 _a.trys.push([1, 4,, 5]); 5459 return [4, this.initDB()]; 5460 case 2: 5461 db = _a.sent(); 5462 return [4, db.cache.clear()]; 5463 case 3: 5464 _a.sent(); 5465 console.log('æ¸ é¤ææ Dexie ç¼å'); 5466 return [3, 5]; 5467 case 4: 5468 error_5 = _a.sent(); 5469 console.warn('æ¸ é¤ææç¼å失败:', error_5); 5470 return [3, 5]; 5471 case 5: 5472 return [2]; 5473 } 5474 }); 5475 }); 5476 }; 5477 DexieCache.prototype.getCachedData = function (key, requestFn, options) { 5478 if (options === void 0) { 5479 options = {}; 5480 } 5481 return __awaiter(this, void 0, Promise, function () { 5482 var expireTime, _a, forceRefresh, cached, data, error_6, cached; 5483 return __generator(this, function (_b) { 5484 switch (_b.label) { 5485 case 0: 5486 expireTime = options.expireTime, _a = options.forceRefresh, forceRefresh = _a === void 0 ? false : _a; 5487 return [4, this.cleanExpiredCache()]; 5488 case 1: 5489 _b.sent(); 5490 if (!!forceRefresh) return [3, 3]; 5491 return [4, this.getCache({ 5492 key: key 5493 })]; 5494 case 2: 5495 cached = _b.sent(); 5496 if (cached) { 5497 console.log("\u4ECE Dexie \u7F13\u5B58\u83B7\u53D6\u6570\u636E: ".concat(key)); 5498 return [2, cached.data]; 5499 } 5500 _b.label = 3; 5501 case 3: 5502 console.log("\u53D1\u8D77\u65B0\u8BF7\u6C42: ".concat(key)); 5503 _b.label = 4; 5504 case 4: 5505 _b.trys.push([4, 7,, 9]); 5506 return [4, requestFn()]; 5507 case 5: 5508 data = _b.sent(); 5509 return [4, this.setCache({ 5510 key: key, 5511 data: data, 5512 expireTime: expireTime 5513 })]; 5514 case 6: 5515 _b.sent(); 5516 return [2, data]; 5517 case 7: 5518 error_6 = _b.sent(); 5519 return [4, this.getCache({ 5520 key: key 5521 })]; 5522 case 8: 5523 cached = _b.sent(); 5524 if (cached) { 5525 console.warn("\u8BF7\u6C42\u5931\u8D25\uFF0C\u8FD4\u56DE\u8FC7\u671F\u7F13\u5B58\u6570\u636E: ".concat(key), error_6); 5526 return [2, cached.data]; 5527 } 5528 throw error_6; 5529 case 9: 5530 return [2]; 5531 } 5532 }); 5533 }); 5534 }; 5535 DexieCache.prototype.getCacheStats = function () { 5536 return __awaiter(this, void 0, Promise, function () { 5537 var db, allItems, now_2, expiredItems, error_7; 5538 return __generator(this, function (_a) { 5539 switch (_a.label) { 5540 case 0: 5541 if (!_index__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) { 5542 return [2, { 5543 totalItems: 0, 5544 expiredItems: 0 5545 }]; 5546 } 5547 _a.label = 1; 5548 case 1: 5549 _a.trys.push([1, 4,, 5]); 5550 return [4, this.initDB()]; 5551 case 2: 5552 db = _a.sent(); 5553 return [4, db.cache.toArray()]; 5554 case 3: 5555 allItems = _a.sent(); 5556 now_2 = Date.now(); 5557 expiredItems = allItems.filter(function (item) { 5558 return item.expiresAt !== null && item.expiresAt < now_2; 5559 }).length; 5560 return [2, { 5561 totalItems: allItems.length, 5562 expiredItems: expiredItems 5563 }]; 5564 case 4: 5565 error_7 = _a.sent(); 5566 console.warn('è·åç¼åç»è®¡å¤±è´¥:', error_7); 5567 return [2, { 5568 totalItems: 0, 5569 expiredItems: 0 5570 }]; 5571 case 5: 5572 return [2]; 5573 } 5574 }); 5575 }); 5576 }; 5577 return DexieCache; 5578}(); 5579var dexieCache = new DexieCache(); 5580/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (dexieCache); 5581 5582/***/ }), 5583 5584/***/ 37183: 5585/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5586 5587"use strict"; 5588/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5589/* harmony export */ A: () => (/* binding */ Button) 5590/* harmony export */ }); 5591/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53373); 5592/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__); 5593/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 5594/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 5595/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60133); 5596/* harmony import */ var _components_Menu_hooks_useIsVip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(95092); 5597var __assign = undefined && undefined.__assign || function () { 5598 __assign = Object.assign || function (t) { 5599 for (var s, i = 1, n = arguments.length; i < n; i++) { 5600 s = arguments[i]; 5601 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 5602 } 5603 return t; 5604 }; 5605 return __assign.apply(this, arguments); 5606}; 5607var __rest = undefined && undefined.__rest || function (s, e) { 5608 var t = {}; 5609 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 5610 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 5611 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 5612 } 5613 return t; 5614}; 5615 5616 5617 5618 5619function Button(props) { 5620 var _a; 5621 var _b = props.type, 5622 type = _b === void 0 ? 'primary' : _b, 5623 _c = props.size, 5624 size = _c === void 0 ? 'middle' : _c, 5625 full = props.full, 5626 title = props.title, 5627 className = props.className, 5628 disabled = props.disabled, 5629 children = props.children, 5630 _onClick = props.onClick, 5631 showVip = props.showVip, 5632 resetProps = __rest(props, ["type", "size", "full", "title", "className", "disabled", "children", "onClick", "showVip"]); 5633 var isVip = (0,_components_Menu_hooks_useIsVip__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(); 5634 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1___default().createElement("div", __assign({}, resetProps, { 5635 onClick: function onClick(e) { 5636 if (disabled) return; 5637 _onClick === null || _onClick === void 0 ? void 0 : _onClick(e); 5638 }, 5639 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) 5640 }), title, children); 5641} 5642 5643/***/ }), 5644 5645/***/ 37597: 5646/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 5647 5648"use strict"; 5649/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5650/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 5651/* harmony export */ Z8: () => (/* binding */ PLATFORMAll), 5652/* harmony export */ i9: () => (/* binding */ PLATFORM) 5653/* harmony export */ }); 5654/* unused harmony export PLATFORMLIST */ 5655/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 5656/* harmony import */ var _common_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 5657/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12097); 5658var __assign = undefined && undefined.__assign || function () { 5659 __assign = Object.assign || function (t) { 5660 for (var s, i = 1, n = arguments.length; i < n; i++) { 5661 s = arguments[i]; 5662 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 5663 } 5664 return t; 5665 }; 5666 return __assign.apply(this, arguments); 5667}; 5668 5669 5670 5671var PlatformShow = function () { 5672 function PlatformShow() { 5673 this.platformShowKey = 'platformShow'; 5674 this.platformShowList = []; 5675 var userId = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.info('userId'); 5676 if (userId) { 5677 this.platformShowKey = "platformShow_".concat(userId); 5678 } 5679 if (_common_index__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 5680 this.get(); 5681 } 5682 } 5683 PlatformShow.prototype.get = function () { 5684 var _a; 5685 this.platformShowList = (_a = _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.platformShowKey, { 5686 parse: true 5687 })) === null ||
5687_a === void 0 ? void 0 : _a.value; 5688 return _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.platformShowKey, { 5689 parse: true 5690 }); 5691 }; 5692 PlatformShow.prototype.del = function () { 5693 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.del(this.platformShowKey); 5694 }; 5695 PlatformShow.prototype.save = function (data) { 5696 var allKeys = Object.keys(localStorage); 5697 allKeys.forEach(function (key) { 5698 if (key.startsWith('platformShow_')) { 5699 localStorage.removeItem(key); 5700 } 5701 }); 5702 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set(this.platformShowKey, { 5703 value: data, 5704 expire: new Date().getTime() + 1000 * 60 * 10 5705 }); 5706 }; 5707 return PlatformShow; 5708}(); 5709var showPlatformName = function showPlatformName(platformName) { 5710 if (platformName === void 0) { 5711 platformName = ''; 5712 } 5713 var platformNameLowerCase = platformName.toLocaleLowerCase(); 5714 var platformEnum = { 5715 tiktok_us: 'TikTok Shop US (Local)', 5716 tiktok_us_cross: 'TikTok Shop US (Cross Border)', 5717 tiktok: 'TikTok Shop (Non-US)', 5718 ebay: 'eBay', 5719 wix: 'Wix', 5720 etsy: 'Etsy', 5721 shoplazza: 'Shoplazza', 5722 shopify: 'Shopify', 5723 woocommerce: 'Woocommerce', 5724 shipstation: 'Shipstation', 5725 amazon: 'Amazon', 5726 lazada: 'Lazada', 5727 shopee: 'Shopee', 5728 squarespace: 'Squarespace', 5729 orangeconnex: 'OrangeConnex', 5730 magento: 'Magento', 5731 bigcommerce: 'Bigcommerce', 5732 prestashop: 'Prestashop', 5733 nuvemshop: 'Nuvemshop', 5734 allvalue: 'AllValue', 5735 aliexpress: 'AliExpress', 5736 api: 'API', 5737 mercado: 'Mercado', 5738 temu: 'Temu Semi-Managed', 5739 temu_us_local: 'Temu Local', 5740 mabang: 'MabangERP', 5741 others: 'Others', 5742 miaoshou: 'MiaoshouERP', 5743 temu_certified_overseas: 'Temu Cooperative Warehouse', 5744 shein: 'Shein Semi-Managed', 5745 wed2c: 'WED2C', 5746 chatgpt: 'ChatGPT', 5747 codex: 'CodeX', 5748 Claude: 'Claude' 5749 }; 5750 return platformEnum[platformNameLowerCase] || platformName; 5751}; 5752PlatformShow.prototype.showPlatformName = showPlatformName; 5753/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PlatformShow); 5754var PLATFORM = { 5755 shopify: { 5756 key: 'shopify', 5757 name: 'Shopify', 5758 imageName: 'shopify', 5759 iconclass: 'shopify', 5760 appName: showPlatformName('shopify'), 5761 code: 'mycj_auth_shopify', 5762 route: '/my.html#/authorize/Shopify' 5763 }, 5764 temu: { 5765 key: 'temu', 5766 name: 'Temu', 5767 imageName: 'temu', 5768 iconclass: 'temu', 5769 appName: showPlatformName('temu'), 5770 code: 'mycj_auth_temu', 5771 route: '/mine/authorize/authorizeList/Temu' 5772 }, 5773 temu_us_local: { 5774 key: 'temu_us_local', 5775 name: 'Temu_US_Local', 5776 imageName: 'temu_us_local', 5777 iconclass: 'temu_us_local', 5778 appName: showPlatformName('temu_us_local'), 5779 code: 'mycj_auth_temu', 5780 route: '/mine/authorize/authorizeList/Temu_US_Local' 5781 }, 5782 temu_certified_overseas: { 5783 key: 'temu_certified_overseas', 5784 name: 'Temu_certified_overseas', 5785 imageName: 'temu_certified_overseas', 5786 iconclass: 'temu_certified_overseas', 5787 appName: showPlatformName('temu_certified_overseas'), 5788 code: 'mycj_auth_temu', 5789 route: '/mine/authorize/authorizeList/Temu_Certified_Overseas' 5790 }, 5791 shein: { 5792 key: 'shein', 5793 name: 'Shein', 5794 imageName: 'shein', 5795 iconclass: 'shein', 5796 appName: showPlatformName('shein'), 5797 code: 'mycj_auth_temu', 5798 route: '/mine/authorize/authorizeList/Shein' 5799 }, 5800 tiktok_us: { 5801 key: 'tiktok_us', 5802 name: 'TikTok_US', 5803 imageName: 'tiktok_us', 5804 iconclass: 'tiktok_us', 5805 appName: showPlatformName('tiktok_us'), 5806 code: 'mycj_auth_tiktok_us', 5807 route: '/mine/authorize/authorizeList/TikTok_US' 5808 }, 5809 tiktok_us_cross: { 5810 key: 'tiktok_us_cross', 5811 name: 'TikTok_US_Cross', 5812 imageName: 'tiktok_us_cross', 5813 iconclass: 'tiktok_us_cross', 5814 appName: showPlatformName('tiktok_us_cross'), 5815 code: 'mycj_auth_tiktok_us_cross', 5816 route: '/mine/authorize/authorizeList/TikTok_US_Cross' 5817 }, 5818 tiktok: { 5819 key: 'tiktok', 5820 name: 'TikTok', 5821 imageName: 'tiktok', 5822 iconclass: 'tiktok', 5823 appName: showPlatformName('tiktok'), 5824 code: 'mycj_auth_tiktok', 5825 route: '/my.html#/authorize/TikTok' 5826 }, 5827 woocommerce: { 5828 key: 'woocommerce', 5829 name: 'Woocommerce', 5830 imageName: 'woocommerce', 5831 iconclass: 'wix1', 5832 appName: showPlatformName('woocommerce'), 5833 code: 'mycj_auth_woocommerce', 5834 route: '/my.html#/authorize/Woocommerce' 5835 }, 5836 mercado: { 5837 key: 'mercado', 5838 name: 'Mercado', 5839 imageName: 'mercado', 5840 iconclass: 'mercado', 5841 appName: showPlatformName('mercado'), 5842 code: 'mycj_auth_mercado', 5843 route: '/mine/authorize/authorizeList/Mercado' 5844 }, 5845 shoplazza: { 5846 key: 'shoplazza', 5847 name: 'ShopLazza', 5848 imageName: 'shoplazza', 5849 iconclass: 'shoplazza', 5850 appName: showPlatformName('shoplazza'), 5851 code: 'mycj_auth_shoplazza', 5852 route: '/my.html#/authorize/Shoplazza' 5853 }, 5854 ebay: { 5855 key: 'ebay', 5856 name: 'eBay', 5857 imageName: 'ebay', 5858 iconclass: 'eBay', 5859 appName: showPlatformName('ebay'), 5860 code: 'mycj_auth_ebay', 5861 route: '/my.html#/authorize/Ebay' 5862 }, 5863 aliexpress: { 5864 key: 'aliexpress', 5865 name: 'AliExpress', 5866 imageName: 'aliexpress', 5867 iconclass: 'aliexpress', 5868 appName: showPlatformName('aliexpress'), 5869 code: 'mycj_auth_aliExpress', 5870 route: '/my.html#/authorize/AliExpress' 5871 }, 5872 lazada: { 5873 key: 'lazada', 5874 name: 'Lazada', 5875 imageName: 'lazada', 5876 iconclass: 'lazada', 5877 appName: showPlatformName('lazada'), 5878 code: 'mycj_auth_lazada', 5879 route: '/my.html#/authorize/Lazada' 5880 }, 5881 shopee: { 5882 key: 'shopee', 5883 name: 'Shopee', 5884 imageName: 'shopee', 5885 iconclass: 'shopee', 5886 appName: showPlatformName('shopee'), 5887 code: 'mycj_auth_shopee', 5888 route: '/my.html#/authorize/Shopee' 5889 }, 5890 nuvemshop: { 5891 key: 'nuvemshop', 5892 name: 'Nuvemshop', 5893 imageName: 'nuvemshop', 5894 iconclass: 'nuvemshop', 5895 appName: showPlatformName('nuvemshop'), 5896 code: 'mycj_auth_nuvemshop', 5897 route: '/my.html#/authorize/Nuvemshop' 5898 }, 5899 etsy: { 5900 key: 'etsy', 5901 name: 'Etsy', 5902 imageName: 'etsy', 5903 iconclass: 'etsy', 5904 appName: showPlatformName('etsy'), 5905 code: 'mycj_auth_etsy', 5906 route: '/mine/authorize/authorizeList/Etsy' 5907 }, 5908 allvalue: { 5909 key: 'allvalue', 5910 name: 'AllValue', 5911 imageName: 'allvalue', 5912 iconclass: 'allvalue', 5913 appName: showPlatformName('allvalue'), 5914 code: 'mycj_auth_allvalue', 5915 route: '/my.html#/authorize/AllValue' 5916 }, 5917 wed2c: { 5918 key: 'wed2c', 5919 name: 'WED2C', 5920 imageName: 'wed2c', 5921 iconclass: 'wed2c', 5922 appName: showPlatformName('wed2c'), 5923 code: 'mycj_auth_wed2c', 5924 route: '/mine/wed2cAuth' 5925 }, 5926 api: { 5927 key: 'api', 5928 name: 'API', 5929 imageName: 'api', 5930 iconclass: 'API', 5931 appName: showPlatformName('api'), 5932 code: 'mycj_auth_api', 5933 route: '/my.html#/authorize/APIStores' 5934 }, 5935 wix: { 5936 key: 'wix', 5937 name: 'Wix', 5938 imageName: 'wix', 5939 iconclass: 'wix', 5940 appName: showPlatformName('wix'), 5941 code: 'mycj_auth_wix', 5942 route: '/my.html#/authorize/Wix' 5943 }, 5944 squarespace: { 5945 key: 'squarespace', 5946 name: 'Squarespace', 5947 imageName: 'squarespace', 5948 iconclass: 'squarespace', 5949 appName: showPlatformName('squarespace'), 5950 code: 'mycj_auth_squarespace', 5951 route: '/my.html#/authorize/Squarespace' 5952 }, 5953 magento: { 5954 key: 'magento', 5955 name: 'Magento', 5956 imageName: 'magento', 5957 iconclass: 'magento', 5958 appName: showPlatformName('magento'), 5959 code: 'mycj_auth_magento', 5960 route: '/my.html#/authorize/Magento' 5961 }, 5962 bigcommerce: { 5963 key: 'bigcommerce', 5964 name: 'BigCommerce', 5965 imageName: 'bigcommerce', 5966 iconclass: 'bigcommerce', 5967 appName: showPlatformName('bigcommerce'), 5968 code: 'mycj_auth_bigcommerce', 5969 route: '/my.html#/authorize/Bigcommerce' 5970 }, 5971 prestashop: { 5972 key: 'prestashop', 5973 name: 'PrestaShop', 5974 imageName: 'prestashop', 5975 iconclass: 'prestashop', 5976 appName: showPlatformName('prestashop'), 5977 code: 'mycj_auth_prestashop', 5978 route: '/my.html#/authorize/Prestashop' 5979 }, 5980 shipstation: { 5981 key: 'shipstation', 5982 name: 'ShipStation', 5983 imageName: 'shipstation', 5984 iconclass: 'shipstation', 5985 appName: showPlatformName('shipstation'), 5986 code: 'mycj_auth_shipstation', 5987 route: '/my.html#/authorize/Shipstation' 5988 }, 5989 orangeconnex: { 5990 key: 'orangeconnex', 5991 name: 'OrangeConnex', 5992 imageName: 'orangeconnex', 5993 iconclass: 'orangeconnex', 5994 appName: showPlatformName('orangeconnex'), 5995 code: 'mycj_auth_orangeconnex', 5996 route: '/my.html#/authorize/OrangeConnex' 5997 }, 5998 mabang: { 5999 key: 'mabang', 6000 name: 'Mabang', 6001 imageName: 'mabang', 6002 iconclass: 'mabang', 6003 appName: showPlatformName('mabang'), 6004 code: 'mycj_auth_mabang', 6005 route: '/mine/authorize/authorizeList/Mabang' 6006 }, 6007 miaoshou: { 6008 key: 'miaoshou', 6009 name: 'Miaoshou', 6010 imageName: 'miaoshou', 6011 iconclass: 'miaoshou', 6012 appName: showPlatformName('miaoshou'), 6013 code: 'mycj_auth_miaoshou', 6014 route: '/mine/authorize/authorizeList/Miaoshou' 6015 }, 6016 chatgpt: { 6017 key: 'chatgpt', 6018 name: 'ChatGPT', 6019 imageName: 'chatgpt', 6020 iconclass: 'chatgpt', 6021 appName: showPlatformName('chatgpt'), 6022 code: 'ChatGPT', 6023 route: '/ai/chatgpt' 6024 }, 6025 codex: { 6026 key: 'codex', 6027 name: 'CodeX', 6028 imageName: 'codex', 6029 iconclass: 'codex', 6030 appName: showPlatformName('codex'), 6031 code: 'CodeX', 6032 route: '/ai/codex' 6033 }, 6034 claude: { 6035 key: 'claude', 6036 name: 'Claude', 6037 imageName: 'claude', 6038 iconclass: 'claude', 6039 appName: showPlatformName('claude'), 6040 code: 'Claude', 6041 route: '/ai/claude' 6042 } 6043}; 6044var PLATFORMAll = __assign(__assign({}, PLATFORM), { 6045 others: { 6046 key: 'others', 6047 name: 'Others', 6048 imageName: 'others', 6049 iconclass: 'others', 6050 appName: showPlatformName('others'), 6051 code: 'mycj_auth_others', 6052 route: '/mine/authorize/authorizeList/Others' 6053 } 6054}); 6055var PLATFORMLIST = Object.values(PLATFORM); 6056 6057/***/ }), 6058 6059/***/ 38818: 6060/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6061 6062"use strict"; 6063/* unused harmony export genCSSMotionList */ 6064/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 6065/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39850); 6066/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69740); 6067/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(55152); 6068/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30414); 6069/* harmony import */ var _babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2474); 6070/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(29296); 6071/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90857); 6072/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24586); 6073/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15442); 6074/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__); 6075/* harmony import */ var _CSSMotion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(89614); 6076/* harmony import */ var _util_diff__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(40657); 6077/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(73688); 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087var _excluded = ["component", "children", "onVisibleChanged", "onAllRemoved"], 6088 _excluded2 = ["status"]; 6089/* eslint react/prop-types: 0 */ 6090 6091 6092 6093 6094var MOTION_PROP_NAMES = ['eventProps', 'visible', 'children', 'motionName', 'motionAppear', 'motionEnter', 'motionLeave', 'motionLeaveImmediately', 'motionDeadline', 'removeOnLeave', 'leavedClassName', 'onAppearPrepare', 'onAppearStart', 'onAppearActive', 'onAppearEnd', 'onEnterStart', 'onEnterActive', 'onEnterEnd', 'onLeaveStart', 'onLeaveActive', 'onLeaveEnd']; 6095/** 6096 * Generate a CSSMotionList component with config 6097 * @param transitionSupport No need since CSSMotionList no longer depends on transition support 6098 * @param CSSMotion CSSMotion component 6099 */ 6100function genCSSMotionList(transitionSupport) { 6101 var CSSMotion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _CSSMotion__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A; 6102 var CSSMotionList = /*#__PURE__*/function (_React$Component) { 6103 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A)(CSSMotionList, _React$Component); 6104 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(CSSMotionList); 6105 function CSSMotionList() { 6106 var _this; 6107 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(this, CSSMotionList); 6108 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 6109 args[_key] = arguments[_key]; 6110 } 6111 _this = _super.call.apply(_super, [this].concat(args)); 6112 (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", { 6113 keyEntities: [] 6114 }); 6115 // ZombieJ: Return the count of rest keys. It's safe to refactor if need more info. 6116 (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) { 6117 _this.setState(function (prevState) { 6118 var nextKeyEntities = prevState.keyEntities.map(function (entity) { 6119 if (entity.key !== removeKey) return entity; 6120 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), {}, { 6121 status: _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8 6122 }); 6123 }); 6124 return { 6125 keyEntities: nextKeyEntities 6126 }; 6127 }, function () { 6128 var keyEntities = _this.state.keyEntities; 6129 var restKeysCount = keyEntities.filter(function (_ref) { 6130 var status = _ref.status; 6131 return status !== _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8; 6132 }).length;
6133 if (restKeysCount === 0 && _this.props.onAllRemoved) { 6134 _this.props.onAllRemoved(); 6135 } 6136 }); 6137 }); 6138 return _this; 6139 } 6140 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(CSSMotionList, [{ 6141 key: "render", 6142 value: function render() { 6143 var _this2 = this; 6144 var keyEntities = this.state.keyEntities; 6145 var _this$props = this.props, 6146 component = _this$props.component, 6147 children = _this$props.children, 6148 _onVisibleChanged = _this$props.onVisibleChanged, 6149 onAllRemoved = _this$props.onAllRemoved, 6150 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_this$props, _excluded); 6151 var Component = component || react__WEBPACK_IMPORTED_MODULE_9__.Fragment; 6152 var motionProps = {}; 6153 MOTION_PROP_NAMES.forEach(function (prop) { 6154 motionProps[prop] = restProps[prop]; 6155 delete restProps[prop]; 6156 }); 6157 delete restProps.keys; 6158 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(Component, restProps, keyEntities.map(function (_ref2, index) { 6159 var status = _ref2.status, 6160 eventProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_ref2, _excluded2); 6161 var visible = status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_ADD */ .bK || status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_KEEP */ .xI; 6162 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9__.createElement(CSSMotion, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, motionProps, { 6163 key: eventProps.key, 6164 visible: visible, 6165 eventProps: eventProps, 6166 onVisibleChanged: function onVisibleChanged(changedVisible) { 6167 _onVisibleChanged === null || _onVisibleChanged === void 0 || _onVisibleChanged(changedVisible, { 6168 key: eventProps.key 6169 }); 6170 if (!changedVisible) { 6171 _this2.removeKey(eventProps.key); 6172 } 6173 } 6174 }), function (props, ref) { 6175 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), {}, { 6176 index: index 6177 }), ref); 6178 }); 6179 })); 6180 } 6181 }], [{ 6182 key: "getDerivedStateFromProps", 6183 value: function getDerivedStateFromProps(_ref3, _ref4) { 6184 var keys = _ref3.keys; 6185 var keyEntities = _ref4.keyEntities; 6186 var parsedKeyObjects = (0,_util_diff__WEBPACK_IMPORTED_MODULE_11__/* .parseKeys */ .Ss)(keys); 6187 var mixedKeyEntities = (0,_util_diff__WEBPACK_IMPORTED_MODULE_11__/* .diffKeys */ .y$)(keyEntities, parsedKeyObjects); 6188 return { 6189 keyEntities: mixedKeyEntities.filter(function (entity) { 6190 var prevEntity = keyEntities.find(function (_ref5) { 6191 var key = _ref5.key; 6192 return entity.key === key; 6193 }); 6194 6195 // Remove if already mark as removed 6196 if (prevEntity && prevEntity.status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVED */ .e8 && entity.status === _util_diff__WEBPACK_IMPORTED_MODULE_11__/* .STATUS_REMOVE */ .au) { 6197 return false; 6198 } 6199 return true; 6200 }) 6201 }; 6202 } 6203 }]); 6204 return CSSMotionList; 6205 }(react__WEBPACK_IMPORTED_MODULE_9__.Component); 6206 (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(CSSMotionList, "defaultProps", { 6207 component: 'div' 6208 }); 6209 return CSSMotionList; 6210} 6211/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (genCSSMotionList(_util_motion__WEBPACK_IMPORTED_MODULE_12__/* .supportTransition */ .J1)); 6212 6213/***/ }), 6214 6215/***/ 38903: 6216/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6217 6218"use strict"; 6219/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6220/* harmony export */ e: () => (/* binding */ CJHEADER_VARIABLE_NAME) 6221/* harmony export */ }); 6222/* harmony import */ var _common_get_initial_handler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20194); 6223/* harmony import */ var _get_top_nav_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(72777); 6224/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62934); 6225var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 6226 function adopt(value) { 6227 return value instanceof P ? value : new P(function (resolve) { 6228 resolve(value); 6229 }); 6230 } 6231 return new (P || (P = Promise))(function (resolve, reject) { 6232 function fulfilled(value) {
vendor: 2,805 bytes, lines 6233-6346
6233 try { 6234 step(generator.next(value)); 6235 } catch (e) { 6236 reject(e); 6237 } 6238 } 6239 function rejected(value) { 6240 try { 6241 step(generator["throw"](value)); 6242 } catch (e) { 6243 reject(e); 6244 } 6245 } 6246 function step(result) { 6247 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 6248 } 6249 step((generator = generator.apply(thisArg, _arguments || [])).next()); 6250 }); 6251}; 6252var __generator = undefined && undefined.__generator || function (thisArg, body) { 6253 var _ = { 6254 label: 0, 6255 sent: function sent() { 6256 if (t[0] & 1) throw t[1]; 6257 return t[1]; 6258 }, 6259 trys: [], 6260 ops: [] 6261 }, 6262 f, 6263 y, 6264 t, 6265 g; 6266 return g = { 6267 next: verb(0), 6268 "throw": verb(1), 6269 "return": verb(2) 6270 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 6271 return this; 6272 }), g; 6273 function verb(n) { 6274 return function (v) { 6275 return step([n, v]); 6276 }; 6277 } 6278 function step(op) { 6279 if (f) throw new TypeError("Generator is already executing."); 6280 while (g && (g = 0, op[0] && (_ = 0)), _) try { 6281 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; 6282 if (y = 0, t) op = [op[0] & 2, t.value]; 6283 switch (op[0]) { 6284 case 0: 6285 case 1: 6286 t = op; 6287 break; 6288 case 4: 6289 _.label++; 6290 return { 6291 value: op[1], 6292 done: false 6293 }; 6294 case 5: 6295 _.label++; 6296 y = op[1]; 6297 op = [0]; 6298 continue; 6299 case 7: 6300 op = _.ops.pop(); 6301 _.trys.pop(); 6302 continue; 6303 default: 6304 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 6305 _ = 0; 6306 continue; 6307 } 6308 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 6309 _.label = op[1]; 6310 break; 6311 } 6312 if (op[0] === 6 && _.label < t[1]) { 6313 _.label = t[1]; 6314 t = op; 6315 break; 6316 } 6317 if (t && _.label < t[2]) { 6318 _.label = t[2]; 6319 _.ops.push(op); 6320 break; 6321 } 6322 if (t[2]) _.ops.pop(); 6323 _.trys.pop(); 6324 continue; 6325 } 6326 op = body.call(thisArg, _); 6327 } catch (e) { 6328 op = [6, e]; 6329 y = 0; 6330 } finally { 6331 f = t = 0; 6332 } 6333 if (op[0] & 5) throw op[1]; 6334 return { 6335 value: op[0] ? op[1] : void 0, 6336 done: true 6337 }; 6338 } 6339}; 6340 6341 6342 6343var CJHEADER_VARIABLE_NAME = 'cjHeaderProps'; 6344/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (function (CjHeader) { 6345 CjHeader.getInitialProps = function (_a) { 6346 var ctx = _a.ctx,
6347 getDomainByUrl = _a.getDomainByUrl, 6348 _b = _a.platform, 6349 platform = _b === void 0 ? 'cj' : _b, 6350 _c = _a.autoMode, 6351 autoMode = _c === void 0 ? false : _c, 6352 _d = _a.maxWidth, 6353 maxWidth = _d === void 0 ? '100%' : _d, 6354 _e = _a.supplierInfo, 6355 supplierInfo = _e === void 0 ? {} : _e; 6356 return __awaiter(void 0, void 0, void 0, function () { 6357 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; 6358 var _h; 6359 return __generator(this, function (_j) { 6360 switch (_j.label) { 6361 case 0: 6362 _f = getInitialHandler({ 6363 ctx: ctx, 6364 getDomainByUrl: getDomainByUrl, 6365 platform: platform 6366 }), 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; 6367 return [4, Promise.all([getWarehouses({ 6368 ctx: ctx, 6369 $axios: $axios, 6370 lng: lng 6371 }), getCategories({ 6372 ctx: ctx, 6373 $axios: $axios 6374 }), getQueryParams({ 6375 ctx: ctx 6376 }), getShowAuthorPlatform({ 6377 ctx: ctx, 6378 $axios: $axios, 6379 token: loginInfo.token 6380 })])]; 6381 case 1: 6382 _g = _j.sent(), warehouses = _g[0], categories = _g[1], querySearch = _g[2], showPlatformData = _g[3]; 6383 topNavProps = { 6384 warehouses: siteCheck.isShow('header-warehouses') ? warehouses : [] 6385 }; 6386 searchNavProps = { 6387 categories: categories 6388 }; 6389 showPlatformObject = showPlatformData === null || showPlatformData === void 0 ? void 0 : showPlatformData.showAuthorizeObject; 6390 platformKeys = showPlatformData === null || showPlatformData === void 0 ? void 0 : showPlatformData.platformKeys; 6391 siteCheckInstance = (_h = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.get) === null || _h === void 0 ? void 0 : _h.call(siteCheck); 6392 ssr = !!ctx; 6393 _props = { 6394 otherCookies: otherCookies, 6395 querySearch: querySearch, 6396 loginInfo: loginInfo, 6397 topNavProps: topNavProps, 6398 searchNavProps: searchNavProps, 6399 cjDomain: cjDomain, 6400 host: host, 6401 path: path, 6402 i18n: i18n, 6403 showPlatformObject: showPlatformObject, 6404 platformKeys: platformKeys, 6405 platform: platform, 6406 siteCheck: siteCheckInstance, 6407 ssr: ssr, 6408 autoMode: autoMode, 6409 maxWidth: maxWidth, 6410 supplierInfo: supplierInfo, 6411 _MatchReqHost: _MatchReqHost, 6412 isM: isM 6413 }; 6414 return [2, _props]; 6415 } 6416 }); 6417 }); 6418 }; 6419 CjHeader.variableName = CJHEADER_VARIABLE_NAME; 6420}); 6421 6422/***/ }), 6423 6424/***/ 39348: 6425/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6426 6427"use strict"; 6428/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6429/* harmony export */ A: () => (/* binding */ useSafeState) 6430/* harmony export */ }); 6431/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 6432/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 6433/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 6434 6435 6436/** 6437 * Same as React.useState but `setState` accept `ignoreDestroy` param to not to setState after destroyed. 6438 * We do not make this auto is to avoid real memory leak. 6439 * Developer should confirm it's safe to ignore themselves. 6440 */ 6441function useSafeState(defaultValue) { 6442 var destroyRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(false); 6443 var _React$useState = react__WEBPACK_IMPORTED_MODULE_1__.useState(defaultValue), 6444 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 6445 value = _React$useState2[0], 6446 setValue = _React$useState2[1]; 6447 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 6448 destroyRef.current = false;
6449 return function () { 6450 destroyRef.current = true; 6451 }; 6452 }, []); 6453 function safeSetState(updater, ignoreDestroy) { 6454 if (ignoreDestroy && destroyRef.current) { 6455 return; 6456 } 6457 setValue(updater); 6458 } 6459 return [value, safeSetState]; 6460} 6461 6462/***/ }), 6463 6464/***/ 39850: 6465/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 6466 6467"use strict"; 6468/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6469/* harmony export */ A: () => (/* binding */ _objectWithoutProperties) 6470/* harmony export */ }); 6471/* harmony import */ var _objectWithoutPropertiesLoose_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17502); 6472 6473function _objectWithoutProperties(e, t) { 6474 if (null == e) return {}; 6475 var o, 6476 r, 6477 i = (0,_objectWithoutPropertiesLoose_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e, t); 6478 if (Object.getOwnPropertySymbols) { 6479 var n = Object.getOwnPropertySymbols(e); 6480 for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); 6481 } 6482 return i; 6483} 6484 6485 6486/***/ }), 6487 6488/***/ 40484: 6489/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6490 6491"use strict"; 6492/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6493/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 6494/* harmony export */ }); 6495/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55152); 6496/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30414); 6497/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29296); 6498/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90857); 6499/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 6500/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 6501 6502 6503 6504 6505 6506var DomWrapper = /*#__PURE__*/function (_React$Component) { 6507 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(DomWrapper, _React$Component); 6508 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(DomWrapper); 6509 function DomWrapper() { 6510 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this, DomWrapper); 6511 return _super.apply(this, arguments); 6512 } 6513 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(DomWrapper, [{ 6514 key: "render", 6515 value: function render() { 6516 return this.props.children; 6517 } 6518 }]); 6519 return DomWrapper; 6520}(react__WEBPACK_IMPORTED_MODULE_4__.Component); 6521/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (DomWrapper); 6522 6523/***/ }), 6524 6525/***/ 40657: 6526/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6527 6528"use strict"; 6529/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6530/* harmony export */ Ss: () => (/* binding */ parseKeys), 6531/* harmony export */ au: () => (/* binding */ STATUS_REMOVE), 6532/* harmony export */ bK: () => (/* binding */ STATUS_ADD), 6533/* harmony export */ e8: () => (/* binding */ STATUS_REMOVED), 6534/* harmony export */ xI: () => (/* binding */ STATUS_KEEP), 6535/* harmony export */ y$: () => (/* binding */ diffKeys) 6536/* harmony export */ }); 6537/* unused harmony export wrapKeyToObject */ 6538/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 6539/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17545); 6540 6541 6542var STATUS_ADD = 'add'; 6543var STATUS_KEEP = 'keep'; 6544var STATUS_REMOVE = 'remove'; 6545var STATUS_REMOVED = 'removed'; 6546function wrapKeyToObject(key) { 6547 var keyObj; 6548 if (key && (0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(key) === 'object' && 'key' in key) { 6549 keyObj = key; 6550 } else { 6551 keyObj = { 6552 key: key 6553 }; 6554 } 6555 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), {}, { 6556 key: String(keyObj.key) 6557 }); 6558} 6559function parseKeys() { 6560 var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6561 return keys.map(wrapKeyToObject); 6562} 6563function diffKeys() { 6564 var prevKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6565 var currentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; 6566 var list = []; 6567 var currentIndex = 0; 6568 var currentLen = currentKeys.length; 6569 var prevKeyObjects = parseKeys(prevKeys); 6570 var currentKeyObjects = parseKeys(currentKeys); 6571 6572 // Check prev keys to insert or keep
6573 prevKeyObjects.forEach(function (keyObj) { 6574 var hit = false; 6575 for (var i = currentIndex; i < currentLen; i += 1) { 6576 var currentKeyObj = currentKeyObjects[i]; 6577 if (currentKeyObj.key === keyObj.key) { 6578 // New added keys should add before current key 6579 if (currentIndex < i) { 6580 list = list.concat(currentKeyObjects.slice(currentIndex, i).map(function (obj) { 6581 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), {}, { 6582 status: STATUS_ADD 6583 }); 6584 })); 6585 currentIndex = i; 6586 } 6587 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), {}, { 6588 status: STATUS_KEEP 6589 })); 6590 currentIndex += 1; 6591 hit = true; 6592 break; 6593 } 6594 } 6595 6596 // If not hit, it means key is removed 6597 if (!hit) { 6598 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), {}, { 6599 status: STATUS_REMOVE 6600 })); 6601 } 6602 }); 6603 6604 // Add rest to the list 6605 if (currentIndex < currentLen) { 6606 list = list.concat(currentKeyObjects.slice(currentIndex).map(function (obj) { 6607 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), {}, { 6608 status: STATUS_ADD 6609 }); 6610 })); 6611 } 6612 6613 /** 6614 * Merge same key when it remove and add again: 6615 * [1 - add, 2 - keep, 1 - remove] -> [1 - keep, 2 - keep] 6616 */ 6617 var keys = {}; 6618 list.forEach(function (_ref) { 6619 var key = _ref.key; 6620 keys[key] = (keys[key] || 0) + 1; 6621 }); 6622 var duplicatedKeys = Object.keys(keys).filter(function (key) { 6623 return keys[key] > 1; 6624 }); 6625 duplicatedKeys.forEach(function (matchKey) { 6626 // Remove `STATUS_REMOVE` node. 6627 list = list.filter(function (_ref2) { 6628 var key = _ref2.key, 6629 status = _ref2.status; 6630 return key !== matchKey || status !== STATUS_REMOVE; 6631 }); 6632 6633 // Update `STATUS_ADD` to `STATUS_KEEP` 6634 list.forEach(function (node) { 6635 if (node.key === matchKey) { 6636 // eslint-disable-next-line no-param-reassign 6637 node.status = STATUS_KEEP; 6638 } 6639 }); 6640 }); 6641 return list; 6642} 6643 6644/***/ }), 6645 6646/***/ 41580: 6647/***/ ((module) => { 6648 6649/** 6650 * Checks if `value` is the 6651 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 6652 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 6653 * 6654 * @static 6655 * @memberOf _ 6656 * @since 0.1.0 6657 * @category Lang 6658 * @param {*} value The value to check. 6659 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 6660 * @example 6661 * 6662 * _.isObject({}); 6663 * // => true 6664 * 6665 * _.isObject([1, 2, 3]); 6666 * // => true 6667 * 6668 * _.isObject(_.noop); 6669 * // => true 6670 * 6671 * _.isObject(null); 6672 * // => false 6673 */ 6674function isObject(value) { 6675 var type = typeof value; 6676 return value != null && (type == 'object' || type == 'function'); 6677} 6678 6679module.exports = isObject; 6680 6681 6682/***/ }), 6683 6684/***/ 41747: 6685/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6686 6687"use strict"; 6688/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6689/* harmony export */ A: () => (/* binding */ toArray) 6690/* harmony export */ }); 6691/* harmony import */ var _React_isFragment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20785); 6692/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 6693/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 6694 6695 6696function toArray(children) { 6697 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 6698 var ret = [];
6699 react__WEBPACK_IMPORTED_MODULE_1___default().Children.forEach(children, function (child) { 6700 if ((child === undefined || child === null) && !option.keepEmpty) { 6701 return; 6702 } 6703 if (Array.isArray(child)) { 6704 ret = ret.concat(toArray(child)); 6705 } else if ((0,_React_isFragment__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(child) && child.props) { 6706 ret = ret.concat(toArray(child.props.children, option)); 6707 } else { 6708 ret.push(child); 6709 } 6710 }); 6711 return ret; 6712} 6713 6714/***/ }), 6715 6716/***/ 42963: 6717/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6718 6719"use strict"; 6720/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6721/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 6722/* harmony export */ }); 6723/* harmony import */ var _Portal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(70297); 6724 6725 6726 6727/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_Portal__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A); 6728 6729/***/ }), 6730 6731/***/ 44148: 6732/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6733 6734"use strict"; 6735/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6736/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 6737/* harmony export */ v: () => (/* binding */ useGlobalProps) 6738/* harmony export */ }); 6739/* harmony import */ var _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84266); 6740/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 6741/* harmony import */ var _common_cj_href__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84963); 6742/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15442); 6743/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__); 6744/* harmony import */ var _get_top_nav_props__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72777); 6745/* harmony import */ var _common_check_site_show__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(27880); 6746/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12097); 6747/* harmony import */ var _get_intial_props__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(38903); 6748var __assign = undefined && undefined.__assign || function () { 6749 __assign = Object.assign || function (t) { 6750 for (var s, i = 1, n = arguments.length; i < n; i++) { 6751 s = arguments[i]; 6752 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 6753 } 6754 return t; 6755 }; 6756 return __assign.apply(this, arguments); 6757}; 6758var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 6759 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 6760 if (ar || !(i in from)) { 6761 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 6762 ar[i] = from[i]; 6763 } 6764 } 6765 return to.concat(ar || Array.prototype.slice.call(from)); 6766}; 6767 6768 6769 6770 6771 6772 6773 6774 6775var PropsContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_3__.createContext)({}); 6776function isObjectNull(obj) { 6777 return obj === null || obj === undefined || Object.keys(obj).length === 0; 6778} 6779var useGlobalProps = function useGlobalProps() { 6780 var _a; 6781 var value = (0,react__WEBPACK_IMPORTED_MODULE_3__.useContext)(PropsContext); 6782 if (_common__WEBPACK_IMPORTED_MODULE_1__/* .isBrowser */ .Bd) { 6783 var showPlatformObject = value.showPlatformObject || {}; 6784 var platformKeys = value.platformKeys || []; 6785 if (isObjectNull(value.otherCookies)) { 6786 value['otherCookies'] = (0,_get_top_nav_props__WEBPACK_IMPORTED_MODULE_4__/* .getOtherCookies */ .cc)({ 6787 ctx: undefined 6788 }); 6789 } 6790 if (isObjectNull(value.querySearch)) { 6791 value['querySearch'] = (0,_common__WEBPACK_IMPORTED_MODULE_1__/* .getQueryVariable */ .JE)(); 6792 } 6793 if (isObjectNull(value.loginInfo)) { 6794 value['loginInfo'] = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.info(); 6795 } 6796 value['host'] = location.host; 6797 value['pathname'] = value['path'] = location.pathname; 6798 value['cjDomain'] = value.platform === 'cj' ? '/' : (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_2__/* .cjHref */ .F)('/', value.host); 6799 value['i18n'] = window.i18next; 6800 value['showPlatformObject'] = __assign(__assign({}, _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A), showPlatformObject); 6801 value['platformKeys'] = __spreadArray([], platformKeys, true); 6802 if (isObjectNull(value.siteCheck)) { 6803 var siteCheck = new _common_check_site_show__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A({ 6804 getDomainByUrl: value.getDomainByUrl 6805 }); 6806 value['siteCheck'] = window['siteCheck'] = siteCheck.get(); 6807 } 6808 value['ssr'] = !!window[_get_intial_props__WEBPACK_IMPORTED_MODULE_7__/* .CJHEADER_VARIABLE_NAME */ .e]; 6809 value['_MatchReqHost'] = window['_matchedRoute']; 6810 if (((_a = window['_matchedRoute']) === null || _a === void 0 ? void 0 : _a.indexOf('paymentAgency')) > -1 && value.platform === 'cj') { 6811 value['cjDomain'] = (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_2__/* .cjHref */ .F)('/'); 6812 } 6813 if (value.isM === undefined) { 6814 value['isM'] = (0,_common__WEBPACK_IMPORTED_MODULE_1__/* .isMobile */ .Fr)(); 6815 } 6816 } 6817 return value; 6818}; 6819/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PropsContext); 6820 6821/***/ }), 6822 6823/***/ 44190: 6824/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6825 6826"use strict"; 6827/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6828/* harmony export */ $v: () => (/* binding */ createChatInternalReceptionJson), 6829/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 6830/* harmony export */ P6: () => (/* binding */ createAiChatEntry), 6831/* harmony export */ Q_: () => (/* binding */ createPlatform), 6832/* harmony export */ R6: () => (/* binding */ createChatEntry), 6833/* harmony export */ vY: () => (/* binding */ createConfigResource) 6834/* harmony export */ }); 6835/* unused harmony exports createFlag, createWarehouseJson, createCountryJson, countryInfo */ 6836var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 6837 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 6838 if (ar || !(i in from)) { 6839 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 6840 ar[i] = from[i]; 6841 } 6842 } 6843 return to.concat(ar || Array.prototype.slice.call(from)); 6844}; 6845var OssController = function () { 6846 function OssController() {} 6847 Object.defineProperty(OssController.prototype, "host", { 6848 get: function get() { 6849 var _a; 6850 if (typeof window !== 'undefined' && window.OSS_HOST && window.OSS_HOST !== '__OSSHOST__') { 6851 return window.OSS_HOST; 6852 } 6853 if (typeof process !== 'undefined' && ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.OSSHOST)) { 6854 return process.env.OSSHOST; 6855 } 6856 return "https://sv-resource.oss-accelerate.aliyuncs.com"; 6857 }, 6858 enumerable: false, 6859 configurable: true 6860 }); 6861 OssController.prototype.join = function () { 6862 var paths = []; 6863 for (var _i = 0; _i < arguments.length; _i++) { 6864 paths[_i] = arguments[_i]; 6865 } 6866 if (!paths.every(function (path) { 6867 return typeof path === 'string'; 6868 })) { 6869 throw new TypeError('All arguments to join must be of type string'); 6870 } 6871 var _paths = paths.map(function (path) { 6872 return path.replace(/^\/+|\/+$/g, ''); 6873 }); 6874 var _host = this.host; 6875 if (_host.endsWith('/')) { 6876 _host = _host.slice(0, -1); 6877 } 6878 return __spreadArray([_host], _paths, true).join('/'); 6879 }; 6880 return OssController; 6881}(); 6882/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new OssController()); 6883var createPlatform = function createPlatform(name) { 6884 return "resources/platform/".concat(name, ".png"); 6885}; 6886var createFlag = function createFlag(name) { 6887 return "resources/flag/".concat(name, ".png"); 6888}; 6889var createConfigResource = function createConfigResource(name, code) { 6890 return "config-resource/".concat(name, "/").concat(code); 6891}; 6892var createWarehouseJson = function createWarehouseJson() {
6893 return "backend/WareHouse.json"; 6894}; 6895var createCountryJson = function createCountryJson() { 6896 return "backend/Country.json"; 6897}; 6898var createChatEntry = function createChatEntry() { 6899 return "chat/javascripts/cj-chat.js"; 6900}; 6901var createAiChatEntry = function createAiChatEntry() { 6902 return "chat/javascripts/ai-cj-chat.js"; 6903}; 6904var countryInfo = function countryInfo() { 6905 return "backend/countryInfo.json"; 6906}; 6907var createChatInternalReceptionJson = function createChatInternalReceptionJson() { 6908 return 'backend/ChatInternalReceptionUser.json'; 6909}; 6910 6911/***/ }), 6912 6913/***/ 45163: 6914/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 6915 6916"use strict"; 6917/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6918/* harmony export */ V: () => (/* binding */ sixCountryLanguage) 6919/* harmony export */ }); 6920/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = (function (i18next, siteCheck) { 6921 var defaultLng = siteCheck.data('default-lng') || 'en'; 6922 return [{ 6923 opt: "".concat(defaultLng, "|en"), 6924 name: i18next.t('language-english'), 6925 nameEn: 'English', 6926 flag: siteCheck.data('en-language-flag') || 'US' 6927 }, { 6928 opt: "".concat(defaultLng, "|af"), 6929 name: i18next.t('language-afrikaans'), 6930 nameEn: 'Afrikaans', 6931 flag: 'ZA' 6932 }, { 6933 opt: "".concat(defaultLng, "|sq"), 6934 name: i18next.t('language-albanian'), 6935 nameEn: 'Albanian', 6936 flag: 'AL' 6937 }, { 6938 opt: "".concat(defaultLng, "|ar"), 6939 name: i18next.t('language-arabic'), 6940 nameEn: 'Arabic', 6941 flag: 'SA' 6942 }, { 6943 opt: "".concat(defaultLng, "|am"), 6944 name: i18next.t('language-amharic'), 6945 nameEn: 'Amharic', 6946 flag: 'ET' 6947 }, { 6948 opt: "".concat(defaultLng, "|hy"), 6949 name: i18next.t('language-armenian'), 6950 nameEn: 'Armenian', 6951 flag: 'AM' 6952 }, { 6953 opt: "".concat(defaultLng, "|az"), 6954 name: i18next.t('language-azerbaijani'), 6955 nameEn: 'Azerbaijani', 6956 flag: 'AZ' 6957 }, { 6958 opt: "".concat(defaultLng, "|be"), 6959 name: i18next.t('language-belarusian'), 6960 nameEn: 'Belarusian', 6961 flag: 'BY' 6962 }, { 6963 opt: "".concat(defaultLng, "|bg"), 6964 name: i18next.t('language-bulgarian'), 6965 nameEn: 'Bulgarian', 6966 flag: 'BG' 6967 }, { 6968 opt: "".concat(defaultLng, "|zh-CN"), 6969 name: i18next.t('language-chinese-simplified'), 6970 nameEn: 'Chinese (Simplified)', 6971 flag: 'CN' 6972 }, { 6973 opt: "".concat(defaultLng, "|zh-TW"), 6974 name: i18next.t('language-chinese-traditional'), 6975 nameEn: 'Chinese (Traditional)', 6976 flag: 'CN' 6977 }, { 6978 opt: "".concat(defaultLng, "|hr"), 6979 name: i18next.t('language-croatian'), 6980 nameEn: 'Croatian', 6981 flag: 'HR' 6982 }, { 6983 opt: "".concat(defaultLng, "|cs"), 6984 name: i18next.t('language-czech'), 6985 nameEn: 'Czech', 6986 flag: 'CZ' 6987 }, { 6988 opt: "".concat(defaultLng, "|da"), 6989 name: i18next.t('language-danish'), 6990 nameEn: 'Danish', 6991 flag: 'DK' 6992 }, { 6993 opt: "".concat(defaultLng, "|nl"), 6994 name: i18next.t('language-dutch'), 6995 nameEn: 'Dutch', 6996 flag: 'NL' 6997 }, { 6998 opt: "".concat(defaultLng, "|et"), 6999 name: i18next.t('language-estonian'), 7000 nameEn: 'Estonian', 7001 flag: 'EE' 7002 }, { 7003 opt: "".concat(defaultLng, "|tl"), 7004 name: i18next.t('language-filipino'), 7005 nameEn: 'Filipino', 7006 flag: 'PH' 7007 }, { 7008 opt: "".concat(defaultLng, "|fi"), 7009 name: i18next.t('language-finnish'), 7010 nameEn: 'Finnish', 7011 flag: 'FI' 7012 }, { 7013 opt: "".concat(defaultLng, "|fr"), 7014 name: i18next.t('language-french'), 7015 nameEn: 'French', 7016 flag: 'FR' 7017 }, { 7018 opt: "".concat(defaultLng, "|ka"), 7019 name: i18next.t('language-georgian'), 7020 nameEn: 'Georgian', 7021 flag: 'GE' 7022 }, { 7023 opt: "".concat(defaultLng, "|de"), 7024 name: i18next.t('language-german'), 7025 nameEn: 'German', 7026 flag: 'DE' 7027 }, { 7028 opt: "".concat(defaultLng, "|el"), 7029 name: i18next.t('language-greek'), 7030 nameEn: 'Greek', 7031 flag: 'GR' 7032 }, { 7033 opt: "".concat(defaultLng, "|hi"), 7034 name: i18next.t('language-hindi'), 7035 nameEn: 'Hindi', 7036 flag: 'HT' 7037 }, { 7038 opt: "".concat(defaultLng, "|hu"), 7039 name: i18next.t('language-hungarian'), 7040 nameEn: 'Hungarian', 7041 flag: 'HU' 7042 }, { 7043 opt: "".concat(defaultLng, "|is"),
7044 name: i18next.t('language-icelandic'), 7045 nameEn: 'Icelandic', 7046 flag: 'IS' 7047 }, { 7048 opt: "".concat(defaultLng, "|id"), 7049 name: i18next.t('language-indonesian'), 7050 nameEn: 'Indonesian', 7051 flag: 'ID' 7052 }, { 7053 opt: "".concat(defaultLng, "|ga"), 7054 name: i18next.t('language-irish'), 7055 nameEn: 'Irish', 7056 flag: 'IE' 7057 }, { 7058 opt: "".concat(defaultLng, "|it"), 7059 name: i18next.t('language-italian'), 7060 nameEn: 'Italian', 7061 flag: 'IT' 7062 }, { 7063 opt: "".concat(defaultLng, "|ja"), 7064 name: i18next.t('language-japanese'), 7065 nameEn: 'Japanese', 7066 flag: 'JP' 7067 }, { 7068 opt: "".concat(defaultLng, "|ko"), 7069 name: i18next.t('language-korean'), 7070 nameEn: 'Korean', 7071 flag: 'KR' 7072 }, { 7073 opt: "".concat(defaultLng, "|kk"), 7074 name: i18next.t('language-kazakh', 'Kazakh'), 7075 nameEn: 'Kazakh', 7076 flag: 'KZ' 7077 }, { 7078 opt: "".concat(defaultLng, "|ky"), 7079 name: i18next.t('language-kirghiz-kyrgyz', 'Kirghiz, Kyrgyz'), 7080 nameEn: 'Kirghiz, Kyrgyz', 7081 flag: 'KG' 7082 }, { 7083 opt: "".concat(defaultLng, "|lv"), 7084 name: i18next.t('language-latvian'), 7085 nameEn: 'Latvian', 7086 flag: 'LV' 7087 }, { 7088 opt: "".concat(defaultLng, "|lt"), 7089 name: i18next.t('language-lithuanian'), 7090 nameEn: 'Lithuanian', 7091 flag: 'LT' 7092 }, { 7093 opt: "".concat(defaultLng, "|mk"), 7094 name: i18next.t('language-macedonian'), 7095 nameEn: 'Macedonian', 7096 flag: 'MK' 7097 }, { 7098 opt: "".concat(defaultLng, "|ms"), 7099 name: i18next.t('language-malay'), 7100 nameEn: 'Malay', 7101 flag: 'MY' 7102 }, { 7103 opt: "".concat(defaultLng, "|mt"), 7104 name: i18next.t('language-maltese'), 7105 nameEn: 'Maltese', 7106 flag: 'MT' 7107 }, { 7108 opt: "".concat(defaultLng, "|no"), 7109 name: i18next.t('language-norwegian'), 7110 nameEn: 'Norwegian', 7111 flag: 'NO' 7112 }, { 7113 opt: "".concat(defaultLng, "|pl"), 7114 name: i18next.t('language-polish'), 7115 nameEn: 'Polish', 7116 flag: 'PL' 7117 }, { 7118 opt: "".concat(defaultLng, "|pt"), 7119 name: i18next.t('language-portuguese'), 7120 nameEn: 'Portuguese', 7121 flag: 'PT' 7122 }, { 7123 opt: "".concat(defaultLng, "|ro"), 7124 name: i18next.t('language-romanian'), 7125 nameEn: 'Romanian', 7126 flag: 'RO' 7127 }, { 7128 opt: "".concat(defaultLng, "|ru"), 7129 name: i18next.t('language-russian'), 7130 nameEn: 'Russian', 7131 flag: 'RU' 7132 }, { 7133 opt: "".concat(defaultLng, "|sr"), 7134 name: i18next.t('language-serbian'), 7135 nameEn: 'Serbian', 7136 flag: 'RS' 7137 }, { 7138 opt: "".concat(defaultLng, "|sk"), 7139 name: i18next.t('language-slovak'), 7140 nameEn: 'Slovak', 7141 flag: 'SK' 7142 }, { 7143 opt: "".concat(defaultLng, "|sl"), 7144 name: i18next.t('language-slovenian'), 7145 nameEn: 'Slovenian', 7146 flag: 'SI' 7147 }, { 7148 opt: "".concat(defaultLng, "|es"), 7149 name: i18next.t('language-spanish'), 7150 nameEn: 'Spanish', 7151 flag: 'ES' 7152 }, { 7153 opt: "".concat(defaultLng, "|sw"), 7154 name: i18next.t('language-swahili'), 7155 nameEn: 'Swahili', 7156 flag: 'SJ' 7157 }, { 7158 opt: "".concat(defaultLng, "|sv"), 7159 name: i18next.t('language-swedish'), 7160 nameEn: 'Swedish', 7161 flag: 'SE' 7162 }, { 7163 opt: "".concat(defaultLng, "|th"), 7164 name: i18next.t('language-thai'), 7165 nameEn: 'Thai', 7166 flag: 'TH' 7167 }, { 7168 opt: "".concat(defaultLng, "|tr"), 7169 name: i18next.t('language-turkish'), 7170 nameEn: 'Turkish', 7171 flag: 'TR' 7172 }, { 7173 opt: "".concat(defaultLng, "|tg"), 7174 name: i18next.t('language-tajik', 'Tajik'), 7175 nameEn: 'Tajik', 7176 flag: 'TJ' 7177 }, { 7178 opt: "".concat(defaultLng, "|tk"), 7179 name: i18next.t('language-turkmen', 'Turkmen'), 7180 nameEn: 'Turkmen', 7181 flag: 'TM' 7182 }, { 7183 opt: "".concat(defaultLng, "|uk"), 7184 name: i18next.t('language-ukrainian'), 7185 nameEn: 'Ukrainian', 7186 flag: 'UA' 7187 }, { 7188 opt: "".concat(defaultLng, "|ur"), 7189 name: i18next.t('language-urdu'), 7190 nameEn: 'Urdu', 7191 flag: 'PK' 7192 }, { 7193 opt: "".concat(defaultLng, "|uz"), 7194 name: i18next.t('language-uzbek', 'Uzbek'), 7195 nameEn: 'Uzbek', 7196 flag: 'UZ' 7197 }, { 7198 opt: "".concat(defaultLng, "|vi"), 7199 name: i18next.t('language-vietnamese'), 7200 nameEn: 'Vietnamese', 7201 flag: 'VN' 7202 }, { 7203 opt: "".concat(defaultLng, "|cy"), 7204 name: i18next.t('language-welsh'), 7205 nameEn: 'Welsh', 7206 flag: 'WELSH' 7207 }, { 7208 opt: "".concat(defaultLng, "|yi"),
7209 name: i18next.t('language-yiddish'), 7210 nameEn: 'Yiddish', 7211 flag: 'YIDDISH' 7212 }, { 7213 opt: "".concat(defaultLng, "|iw"), 7214 name: i18next.t('language-hebrew'), 7215 nameEn: 'Hebrew', 7216 flag: 'YIDDISH' 7217 }, { 7218 opt: "".concat(defaultLng, "|ps"), 7219 name: i18next.t('language-pashto'), 7220 nameEn: 'Pashto', 7221 flag: 'AF' 7222 }, { 7223 opt: "".concat(defaultLng, "|fa-AF"), 7224 name: i18next.t('language-dari'), 7225 nameEn: 'Dari', 7226 flag: 'AF' 7227 }]; 7228}); 7229var sixCountryLanguage = ['zh', 'en', 'de', 'fr', 'id', 'th', 'pt']; 7230 7231/***/ }), 7232 7233/***/ 45480: 7234/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7235 7236"use strict"; 7237/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7238/* harmony export */ Hs: () => (/* binding */ STEP_ACTIVATED), 7239/* harmony export */ LV: () => (/* binding */ STEP_PREPARED), 7240/* harmony export */ Mv: () => (/* binding */ STEP_START), 7241/* harmony export */ SF: () => (/* binding */ STATUS_NONE), 7242/* harmony export */ Tv: () => (/* binding */ STATUS_APPEAR), 7243/* harmony export */ Wd: () => (/* binding */ STATUS_ENTER), 7244/* harmony export */ cE: () => (/* binding */ STEP_NONE), 7245/* harmony export */ dp: () => (/* binding */ STATUS_LEAVE), 7246/* harmony export */ m7: () => (/* binding */ STEP_ACTIVE), 7247/* harmony export */ px: () => (/* binding */ STEP_PREPARE) 7248/* harmony export */ }); 7249var STATUS_NONE = 'none'; 7250var STATUS_APPEAR = 'appear'; 7251var STATUS_ENTER = 'enter'; 7252var STATUS_LEAVE = 'leave'; 7253var STEP_NONE = 'none'; 7254var STEP_PREPARE = 'prepare'; 7255var STEP_START = 'start'; 7256var STEP_ACTIVE = 'active'; 7257var STEP_ACTIVATED = 'end'; 7258/** 7259 * Used for disabled motion case. 7260 * Prepare stage will still work but start & active will be skipped. 7261 */ 7262var STEP_PREPARED = 'prepared'; 7263 7264/***/ }), 7265 7266/***/ 46538: 7267/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7268 7269"use strict"; 7270/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7271/* harmony export */ D: () => (/* binding */ placements) 7272/* harmony export */ }); 7273var autoAdjustOverflowTopBottom = { 7274 shiftX: 64, 7275 adjustY: 1 7276}; 7277var autoAdjustOverflowLeftRight = { 7278 adjustX: 1, 7279 shiftY: true 7280}; 7281var targetOffset = [0, 0]; 7282var placements = { 7283 left: { 7284 points: ['cr', 'cl'], 7285 overflow: autoAdjustOverflowLeftRight, 7286 offset: [-4, 0], 7287 targetOffset: targetOffset 7288 }, 7289 right: { 7290 points: ['cl', 'cr'], 7291 overflow: autoAdjustOverflowLeftRight, 7292 offset: [4, 0], 7293 targetOffset: targetOffset 7294 }, 7295 top: { 7296 points: ['bc', 'tc'], 7297 overflow: autoAdjustOverflowTopBottom, 7298 offset: [0, -4], 7299 targetOffset: targetOffset 7300 }, 7301 bottom: { 7302 points: ['tc', 'bc'], 7303 overflow: autoAdjustOverflowTopBottom, 7304 offset: [0, 4], 7305 targetOffset: targetOffset 7306 }, 7307 topLeft: { 7308 points: ['bl', 'tl'], 7309 overflow: autoAdjustOverflowTopBottom, 7310 offset: [0, -4], 7311 targetOffset: targetOffset 7312 }, 7313 leftTop: { 7314 points: ['tr', 'tl'], 7315 overflow: autoAdjustOverflowLeftRight, 7316 offset: [-4, 0], 7317 targetOffset: targetOffset 7318 }, 7319 topRight: { 7320 points: ['br', 'tr'], 7321 overflow: autoAdjustOverflowTopBottom, 7322 offset: [0, -4], 7323 targetOffset: targetOffset 7324 }, 7325 rightTop: { 7326 points: ['tl', 'tr'], 7327 overflow: autoAdjustOverflowLeftRight, 7328 offset: [4, 0], 7329 targetOffset: targetOffset 7330 }, 7331 bottomRight: { 7332 points: ['tr', 'br'], 7333 overflow: autoAdjustOverflowTopBottom, 7334 offset: [0, 4], 7335 targetOffset: targetOffset 7336 }, 7337 rightBottom: { 7338 points: ['bl', 'br'], 7339 overflow: autoAdjustOverflowLeftRight, 7340 offset: [4, 0], 7341 targetOffset: targetOffset 7342 }, 7343 bottomLeft: { 7344 points: ['tl', 'bl'], 7345 overflow: autoAdjustOverflowTopBottom, 7346 offset: [0, 4], 7347 targetOffset: targetOffset 7348 }, 7349 leftBottom: { 7350 points: ['br', 'bl'], 7351 overflow: autoAdjustOverflowLeftRight, 7352 offset: [-4, 0], 7353 targetOffset: targetOffset 7354 } 7355}; 7356/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (placements))); 7357 7358/***/ }), 7359 7360/***/ 46783: 7361/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7362 7363"use strict"; 7364/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7365/* harmony export */ A: () => (/* binding */ useWinClick) 7366/* harmony export */ }); 7367/* harmony import */ var rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49116); 7368/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84445); 7369/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 7370/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 7371/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61225); 7372 7373 7374 7375 7376function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) { 7377 var openRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(open); 7378 openRef.current = open; 7379 var popupPointerDownRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false); 7380 7381 // Click to hide is special action since click popup element should not hide 7382 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 7383 if (clickToHide && popupEle && (!mask || maskClosable)) { 7384 var onPointerDown = function onPointerDown() { 7385 popupPointerDownRef.current = false;
7386 }; 7387 var onTriggerClose = function onTriggerClose(e) { 7388 var _e$composedPath; 7389 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) { 7390 triggerOpen(false); 7391 } 7392 }; 7393 var win = (0,_util__WEBPACK_IMPORTED_MODULE_3__/* .getWin */ .D)(popupEle); 7394 win.addEventListener('pointerdown', onPointerDown, true); 7395 win.addEventListener('mousedown', onTriggerClose, true); 7396 win.addEventListener('contextmenu', onTriggerClose, true); 7397 7398 // shadow root 7399 var targetShadowRoot = (0,rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_0__/* .getShadowRoot */ .j)(targetEle); 7400 if (targetShadowRoot) { 7401 targetShadowRoot.addEventListener('mousedown', onTriggerClose, true); 7402 targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true); 7403 } 7404 7405 // Warning if target and popup not in same root 7406 if (false) // removed by dead control flow 7407{ var popupRoot, targetRoot, _targetEle$getRootNod, _popupEle$getRootNode; } 7408 return function () { 7409 win.removeEventListener('pointerdown', onPointerDown, true); 7410 win.removeEventListener('mousedown', onTriggerClose, true); 7411 win.removeEventListener('contextmenu', onTriggerClose, true); 7412 if (targetShadowRoot) { 7413 targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true); 7414 targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true); 7415 } 7416 }; 7417 } 7418 }, [clickToHide, targetEle, popupEle, mask, maskClosable]); 7419 function onPopupPointerDown() { 7420 popupPointerDownRef.current = true; 7421 } 7422 return onPopupPointerDown; 7423} 7424 7425/***/ }), 7426 7427/***/ 47169: 7428/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7429 7430"use strict"; 7431/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7432/* harmony export */ A: () => (/* binding */ canUseDom) 7433/* harmony export */ }); 7434function canUseDom() { 7435 return !!(typeof window !== 'undefined' && window.document && window.document.createElement); 7436} 7437 7438/***/ }), 7439 7440/***/ 47280: 7441/***/ ((module) => { 7442 7443// ignore eslint 7444/* eslint-disable */ 7445 7446// 使ç¨ossçéç¨ååï¼ä¸»è¦æ¯ä¸ºäºé²æ¢æå è¿ç¨ä¸ç´æ¥æè¿å»çèµæºå°åä¸ç´æ¥æ¾ç¤ºåcjç¸å ³ 7447module.exports = { 7448 test: 'https://test-cj-frontend.oss-cn-hangzhou.aliyuncs.com', 7449 "production-cn": 'https://cj-front-end.oss-cn-hangzhou.aliyuncs.com', 7450 production: 'https://sv-resource.oss-accelerate.aliyuncs.com' 7451} 7452 7453/***/ }), 7454 7455/***/ 47689: 7456/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7457 7458"use strict"; 7459/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7460/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 7461/* harmony export */ }); 7462/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 7463/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17545); 7464/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28299); 7465/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19284); 7466/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 7467/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 7468/* harmony import */ var _Collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23660); 7469/* harmony import */ var _utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22616); 7470/* harmony import */ var _DomWrapper__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(51778); 7471 7472 7473 7474 7475 7476 7477 7478 7479function SingleObserver(props, ref) { 7480 var children = props.children, 7481 disabled = props.disabled; 7482 var elementRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(null); 7483 var wrapperRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(null); 7484 var onCollectionResize = react__WEBPACK_IMPORTED_MODULE_4__.useContext(_Collection__WEBPACK_IMPORTED_MODULE_5__/* .CollectionContext */ .C); 7485 7486 // =========================== Children =========================== 7487 var isRenderProps = typeof children === 'function'; 7488 var mergedChildren = isRenderProps ? children(elementRef) : children; 7489 7490 // ============================= Size ============================= 7491 var sizeRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef({ 7492 width: -1, 7493 height: -1, 7494 offsetWidth: -1, 7495 offsetHeight: -1 7496 }); 7497 7498 // ============================= Ref ============================== 7499 var canRef = !isRenderProps && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.isValidElement(mergedChildren) && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .supportRef */ .f3)(mergedChildren); 7500 var originRef = canRef ? (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .getNodeRef */ .A9)(mergedChildren) : null; 7501 var mergedRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_3__/* .useComposeRef */ .xK)(originRef, elementRef); 7502 var getDom = function getDom() { 7503 var _elementRef$current; 7504 return (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay)(elementRef.current) || (
7505 // Support `nativeElement` format 7506 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); 7507 }; 7508 react__WEBPACK_IMPORTED_MODULE_4__.useImperativeHandle(ref, function () { 7509 return getDom(); 7510 }); 7511 7512 // =========================== Observe ============================ 7513 var propsRef = react__WEBPACK_IMPORTED_MODULE_4__.useRef(props); 7514 propsRef.current = props; 7515 7516 // Handler 7517 var onInternalResize = react__WEBPACK_IMPORTED_MODULE_4__.useCallback(function (target) { 7518 var _propsRef$current = propsRef.current, 7519 onResize = _propsRef$current.onResize, 7520 data = _propsRef$current.data; 7521 var _target$getBoundingCl = target.getBoundingClientRect(), 7522 width = _target$getBoundingCl.width, 7523 height = _target$getBoundingCl.height; 7524 var offsetWidth = target.offsetWidth, 7525 offsetHeight = target.offsetHeight; 7526 7527 /** 7528 * Resize observer trigger when content size changed. 7529 * In most case we just care about element size, 7530 * let's use `boundary` instead of `contentRect` here to avoid shaking. 7531 */ 7532 var fixedWidth = Math.floor(width); 7533 var fixedHeight = Math.floor(height); 7534 if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) { 7535 var size = { 7536 width: fixedWidth, 7537 height: fixedHeight, 7538 offsetWidth: offsetWidth, 7539 offsetHeight: offsetHeight 7540 }; 7541 sizeRef.current = size; 7542 7543 // IE is strange, right? 7544 var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth; 7545 var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight; 7546 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), {}, { 7547 offsetWidth: mergedOffsetWidth, 7548 offsetHeight: mergedOffsetHeight 7549 }); 7550 7551 // Let collection know what happened 7552 onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data); 7553 if (onResize) { 7554 // defer the callback but not defer to next frame 7555 Promise.resolve().then(function () { 7556 onResize(sizeInfo, target); 7557 }); 7558 } 7559 } 7560 }, []); 7561 7562 // Dynamic observe 7563 react__WEBPACK_IMPORTED_MODULE_4__.useEffect(function () { 7564 var currentElement = getDom(); 7565 if (currentElement && !disabled) { 7566 (0,_utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__/* .observe */ .lB)(currentElement, onInternalResize); 7567 } 7568 return function () { 7569 return (0,_utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__/* .unobserve */ .OV)(currentElement, onInternalResize); 7570 }; 7571 }, [elementRef.current, disabled]); 7572 7573 // ============================ Render ============================ 7574 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.createElement(_DomWrapper__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, { 7575 ref: wrapperRef 7576 }, canRef ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.cloneElement(mergedChildren, { 7577 ref: mergedRef 7578 }) : mergedChildren); 7579} 7580var RefSingleObserver = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_4__.forwardRef(SingleObserver); 7581if (false) // removed by dead control flow 7582{} 7583/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefSingleObserver); 7584 7585/***/ }), 7586 7587/***/ 48043: 7588/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7589 7590"use strict"; 7591/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7592/* harmony export */ A: () => (/* binding */ useAction) 7593/* harmony export */ }); 7594/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 7595/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 7596 7597function toArray(val) { 7598 return val ? Array.isArray(val) ? val : [val] : []; 7599} 7600function useAction(mobile, action, showAction, hideAction) { 7601 return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(function () { 7602 var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action); 7603 var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action); 7604 var showActionSet = new Set(mergedShowAction); 7605 var hideActionSet = new Set(mergedHideAction); 7606 if (mobile) { 7607 if (showActionSet.has('hover')) { 7608 showActionSet.delete('hover'); 7609 showActionSet.add('click'); 7610 } 7611 if (hideActionSet.has('hover')) { 7612 hideActionSet.delete('hover'); 7613 hideActionSet.add('click'); 7614 } 7615 } 7616 return [showActionSet, hideActionSet]; 7617 }, [mobile, action, showAction, hideAction]); 7618} 7619 7620/***/ }), 7621 7622/***/ 49105: 7623/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 7624 7625"use strict"; 7626/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7627/* harmony export */ A: () => (/* binding */ _isNativeReflectConstruct) 7628/* harmony export */ }); 7629function _isNativeReflectConstruct() { 7630 try { 7631 var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); 7632 } catch (t) {} 7633 return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { 7634 return !!t; 7635 })(); 7636} 7637 7638 7639/***/ }), 7640 7641/***/ 49116: 7642/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7643 7644"use strict"; 7645/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7646/* harmony export */ j: () => (/* binding */ getShadowRoot) 7647/* harmony export */ }); 7648/* unused harmony export inShadow */ 7649function getRoot(ele) { 7650 var _ele$getRootNode; 7651 return ele === null || ele === void 0 || (_ele$getRootNode = ele.getRootNode) === null || _ele$getRootNode === void 0 ? void 0 : _ele$getRootNode.call(ele); 7652} 7653 7654/** 7655 * Check if is in shadowRoot 7656 */ 7657function inShadow(ele) { 7658 return getRoot(ele) instanceof ShadowRoot; 7659} 7660
7661/** 7662 * Return shadowRoot if possible 7663 */ 7664function getShadowRoot(ele) { 7665 return inShadow(ele) ? getRoot(ele) : null; 7666} 7667 7668/***/ }), 7669 7670/***/ 50137: 7671/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7672 7673"use strict"; 7674/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7675/* harmony export */ A: () => (/* binding */ usePlatformHref) 7676/* harmony export */ }); 7677/* harmony import */ var _common_cj_href__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84963); 7678/* harmony import */ var _components_CjHeader_hooks_use_parent_platform__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6925); 7679 7680 7681function usePlatformHref() { 7682 var isCj = (0,_components_CjHeader_hooks_use_parent_platform__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)().isCj; 7683 return function (href) { 7684 if (href.indexOf('javascript') > -1) return href; 7685 return isCj ? href : (0,_common_cj_href__WEBPACK_IMPORTED_MODULE_0__/* .cjHref */ .F)(href); 7686 }; 7687} 7688 7689/***/ }), 7690 7691/***/ 50184: 7692/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7693 7694"use strict"; 7695/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7696/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 7697/* harmony export */ }); 7698/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 7699/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 7700 7701var OrderContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); 7702/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OrderContext); 7703 7704/***/ }), 7705 7706/***/ 50937: 7707/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7708 7709"use strict"; 7710/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7711/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 7712/* harmony export */ q: () => (/* binding */ toast_success) 7713/* harmony export */ }); 7714var toast = function toast(msg, time) { 7715 if (time === void 0) { 7716 time = 3000; 7717 } 7718 if (typeof layer !== 'undefined') { 7719 layer.msg(msg, { 7720 time: time 7721 }); 7722 } else if (typeof window.antd_message !== 'undefined') { 7723 window.antd_message.info(msg, time / 1000); 7724 } 7725}; 7726var toast_success = function toast_success(msg, time) { 7727 if (time === void 0) { 7728 time = 3000; 7729 } 7730 if (typeof layer !== 'undefined') { 7731 layer.msg(msg, { 7732 time: time 7733 }); 7734 } else if (typeof window.antd_message !== 'undefined') { 7735 window.antd_message.success(msg, time / 1000); 7736 } 7737}; 7738/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toast); 7739 7740/***/ }), 7741 7742/***/ 51187: 7743/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 7744 7745var baseGetTag = __webpack_require__(87379), 7746 isObjectLike = __webpack_require__(80547); 7747 7748/** `Object#toString` result references. */ 7749var symbolTag = '[object Symbol]'; 7750 7751/** 7752 * Checks if `value` is classified as a `Symbol` primitive or object. 7753 * 7754 * @static 7755 * @memberOf _ 7756 * @since 4.0.0 7757 * @category Lang 7758 * @param {*} value The value to check. 7759 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 7760 * @example 7761 * 7762 * _.isSymbol(Symbol.iterator); 7763 * // => true 7764 * 7765 * _.isSymbol('abc'); 7766 * // => false 7767 */ 7768function isSymbol(value) { 7769 return typeof value == 'symbol' || 7770 (isObjectLike(value) && baseGetTag(value) == symbolTag); 7771} 7772 7773module.exports = isSymbol; 7774 7775 7776/***/ }), 7777 7778/***/ 51778: 7779/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 7780 7781"use strict"; 7782/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7783/* harmony export */ A: () => (/* binding */ DomWrapper) 7784/* harmony export */ }); 7785/* harmony import */ var _babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(55152); 7786/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30414); 7787/* harmony import */ var _babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29296); 7788/* harmony import */ var _babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(90857); 7789/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15442); 7790/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_4__); 7791 7792 7793 7794 7795 7796/** 7797 * Fallback to findDOMNode if origin ref do not provide any dom element 7798 */ 7799var DomWrapper = /*#__PURE__*/function (_React$Component) { 7800 (0,_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(DomWrapper, _React$Component); 7801 var _super = (0,_babel_runtime_helpers_esm_createSuper__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(DomWrapper); 7802 function DomWrapper() { 7803 (0,_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this, DomWrapper); 7804 return _super.apply(this, arguments); 7805 } 7806 (0,_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(DomWrapper, [{ 7807 key: "render", 7808 value: function render() { 7809 return this.props.children; 7810 } 7811 }]); 7812 return DomWrapper; 7813}(react__WEBPACK_IMPORTED_MODULE_4__.Component); 7814 7815 7816/***/ }), 7817 7818/***/ 52743: 7819/***/ ((module) => { 7820 7821"use strict"; 7822 7823 7824var isMergeableObject = function isMergeableObject(value) { 7825 return isNonNullObject(value) 7826 && !isSpecial(value) 7827}; 7828 7829function isNonNullObject(value) { 7830 return !!value && typeof value === 'object' 7831} 7832 7833function isSpecial(value) { 7834 var stringValue = Object.prototype.toString.call(value); 7835 7836 return stringValue === '[object RegExp]' 7837 || stringValue === '[object Date]' 7838 || isReactElement(value) 7839} 7840 7841// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 7842var canUseSymbol = typeof Symbol === 'function' && Symbol.for; 7843var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; 7844 7845function isReactElement(value) { 7846 return value.$$typeof === REACT_ELEMENT_TYPE 7847} 7848 7849function emptyTarget(val) { 7850 return Array.isArray(val) ? [] : {} 7851} 7852 7853function cloneUnlessOtherwiseSpecified(value, options) { 7854 return (options.clone !== false && options.isMergeableObject(value)) 7855 ? deepmerge(emptyTarget(value), value, options) 7856 : value 7857} 7858 7859function defaultArrayMerge(target, source, options) { 7860 return target.concat(source).map(function(element) { 7861 return cloneUnlessOtherwiseSpecified(element, options) 7862 }) 7863} 7864 7865function getMergeFunction(key, options) { 7866 if (!options.customMerge) { 7867 return deepmerge 7868 } 7869 var customMerge = options.customMerge(key); 7870 return typeof customMerge === 'function' ? customMerge : deepmerge 7871} 7872 7873function getEnumerableOwnPropertySymbols(target) { 7874 return Object.getOwnPropertySymbols 7875 ? Object.getOwnPropertySymbols(target).filter(function(symbol) { 7876 return Object.propertyIsEnumerable.call(target, symbol) 7877 }) 7878 : [] 7879} 7880 7881function getKeys(target) { 7882 return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) 7883} 7884 7885function propertyIsOnObject(object, property) { 7886 try { 7887 return property in object 7888 } catch(_) { 7889 return false 7890 } 7891} 7892 7893// Protects from prototype poisoning and unexpected merging up the prototype chain.
7894function propertyIsUnsafe(target, key) { 7895 return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, 7896 && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, 7897 && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. 7898} 7899 7900function mergeObject(target, source, options) { 7901 var destination = {}; 7902 if (options.isMergeableObject(target)) { 7903 getKeys(target).forEach(function(key) { 7904 destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); 7905 }); 7906 } 7907 getKeys(source).forEach(function(key) { 7908 if (propertyIsUnsafe(target, key)) { 7909 return 7910 } 7911 7912 if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { 7913 destination[key] = getMergeFunction(key, options)(target[key], source[key], options); 7914 } else { 7915 destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); 7916 } 7917 }); 7918 return destination 7919} 7920 7921function deepmerge(target, source, options) { 7922 options = options || {}; 7923 options.arrayMerge = options.arrayMerge || defaultArrayMerge; 7924 options.isMergeableObject = options.isMergeableObject || isMergeableObject; 7925 // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() 7926 // implementations can use it. The caller may not replace it. 7927 options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; 7928 7929 var sourceIsArray = Array.isArray(source); 7930 var targetIsArray = Array.isArray(target); 7931 var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; 7932 7933 if (!sourceAndTargetTypesMatch) { 7934 return cloneUnlessOtherwiseSpecified(source, options) 7935 } else if (sourceIsArray) { 7936 return options.arrayMerge(target, source, options) 7937 } else { 7938 return mergeObject(target, source, options) 7939 } 7940} 7941 7942deepmerge.all = function deepmergeAll(array, options) { 7943 if (!Array.isArray(array)) { 7944 throw new Error('first argument should be an array') 7945 } 7946 7947 return array.reduce(function(prev, next) { 7948 return deepmerge(prev, next, options) 7949 }, {}) 7950}; 7951 7952var deepmerge_1 = deepmerge; 7953 7954module.exports = deepmerge_1; 7955 7956 7957/***/ }), 7958 7959/***/ 53373: 7960/***/ ((module, exports) => { 7961 7962var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 7963 Copyright (c) 2018 Jed Watson. 7964 Licensed under the MIT License (MIT), see 7965 http://jedwatson.github.io/classnames 7966*/ 7967/* global define */ 7968 7969(function () { 7970 'use strict'; 7971 7972 var hasOwn = {}.hasOwnProperty; 7973 7974 function classNames () { 7975 var classes = ''; 7976 7977 for (var i = 0; i < arguments.length; i++) { 7978 var arg = arguments[i]; 7979 if (arg) {
7980 classes = appendClass(classes, parseValue(arg)); 7981 } 7982 } 7983 7984 return classes; 7985 } 7986 7987 function parseValue (arg) { 7988 if (typeof arg === 'string' || typeof arg === 'number') { 7989 return arg; 7990 } 7991 7992 if (typeof arg !== 'object') { 7993 return ''; 7994 } 7995 7996 if (Array.isArray(arg)) { 7997 return classNames.apply(null, arg); 7998 } 7999 8000 if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) { 8001 return arg.toString(); 8002 } 8003 8004 var classes = ''; 8005 8006 for (var key in arg) { 8007 if (hasOwn.call(arg, key) && arg[key]) { 8008 classes = appendClass(classes, key); 8009 } 8010 } 8011 8012 return classes; 8013 } 8014 8015 function appendClass (value, newClass) { 8016 if (!newClass) { 8017 return value; 8018 } 8019 8020 if (value) { 8021 return value + ' ' + newClass; 8022 } 8023 8024 return value + newClass; 8025 } 8026 8027 if ( true && module.exports) { 8028 classNames.default = classNames; 8029 module.exports = classNames; 8030 } else if (true) { 8031 // register as 'classnames', consistent with npm package name 8032 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { 8033 return classNames; 8034 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), 8035 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 8036 } else // removed by dead control flow 8037{} 8038}()); 8039 8040 8041/***/ }), 8042 8043/***/ 53790: 8044/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 8045 8046"use strict"; 8047 8048 8049if (true) { 8050 module.exports = __webpack_require__(24898); 8051} else // removed by dead control flow 8052{} 8053 8054 8055/***/ }), 8056 8057/***/ 53795: 8058/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8059 8060"use strict"; 8061/* unused harmony exports default, merge */ 8062 8063 8064 8065 8066 8067function internalSet(entity, paths, value, removeIfUndefined) { 8068 if (!paths.length) { 8069 return value; 8070 } 8071 var _paths = _toArray(paths), 8072 path = _paths[0], 8073 restPath = _paths.slice(1); 8074 var clone; 8075 if (!entity && typeof path === 'number') { 8076 clone = []; 8077 } else if (Array.isArray(entity)) { 8078 clone = _toConsumableArray(entity); 8079 } else { 8080 clone = _objectSpread({}, entity); 8081 } 8082 8083 // Delete prop if `removeIfUndefined` and value is undefined 8084 if (removeIfUndefined && value === undefined && restPath.length === 1) { 8085 delete clone[path][restPath[0]]; 8086 } else { 8087 clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined); 8088 } 8089 return clone; 8090} 8091function set(entity, paths, value) { 8092 var removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; 8093 // Do nothing if `removeIfUndefined` and parent object not exist 8094 if (paths.length && removeIfUndefined && value === undefined && !get(entity, paths.slice(0, -1))) { 8095 return entity; 8096 } 8097 return internalSet(entity, paths, value, removeIfUndefined); 8098} 8099function isObject(obj) { 8100 return _typeof(obj) === 'object' && obj !== null && Object.getPrototypeOf(obj) === Object.prototype; 8101} 8102function createEmpty(source) { 8103 return Array.isArray(source) ? [] : {}; 8104} 8105var keys = typeof Reflect === 'undefined' ? Object.keys : Reflect.ownKeys; 8106 8107/** 8108 * Merge objects which will create 8109 */ 8110function merge() { 8111 for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) { 8112 sources[_key] = arguments[_key]; 8113 } 8114 var clone = createEmpty(sources[0]); 8115 sources.forEach(function (src) { 8116 function internalMerge(path, parentLoopSet) { 8117 var loopSet = new Set(parentLoopSet); 8118 var value = get(src, path); 8119 var isArr = Array.isArray(value); 8120 if (isArr || isObject(value)) { 8121 // Only add not loop obj 8122 if (!loopSet.has(value)) { 8123 loopSet.add(value); 8124 var originValue = get(clone, path); 8125 if (isArr) { 8126 // Array will always be override 8127 clone = set(clone, path, []); 8128 } else if (!originValue || _typeof(originValue) !== 'object') { 8129 // Init container if not exist 8130 clone = set(clone, path, createEmpty(value)); 8131 } 8132 keys(value).forEach(function (key) { 8133 internalMerge([].concat(_toConsumableArray(path), [key]), loopSet); 8134 }); 8135 } 8136 } else { 8137 clone = set(clone, path, value); 8138 } 8139 } 8140 internalMerge([]); 8141 }); 8142 return clone; 8143} 8144 8145/***/ }), 8146 8147/***/ 53905: 8148/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8149 8150"use strict"; 8151/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8152/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8153/* harmony export */ }); 8154/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 8155/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 8156/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 8157/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12097); 8158 8159 8160 8161/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (loginInfo, loginCallback) { 8162 if (loginInfo === void 0) { 8163 loginInfo = {}; 8164 } 8165 if (loginCallback === void 0) { 8166 loginCallback = function loginCallback() {}; 8167 } 8168 var token = loginInfo.token; 8169 var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!!token), 8170 isLogin = _a[0], 8171 setIsLogin = _a[1]; 8172 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () { 8173 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.info('token'); 8174 if (!token) { 8175 setIsLogin(false); 8176 (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .removeLogin */ ._$)(); 8177 return; 8178 } 8179 setIsLogin(true); 8180 loginCallback === null || loginCallback === void 0 ? void 0 : loginCallback({}); 8181 }, []); 8182 return { 8183 isLogin: isLogin, 8184 loginInfo: loginInfo 8185 }; 8186}); 8187 8188/***/ }), 8189 8190/***/ 55152: 8191/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 8192 8193"use strict"; 8194/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8195/* harmony export */ A: () => (/* binding */ _classCallCheck) 8196/* harmony export */ }); 8197function _classCallCheck(a, n) { 8198 if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); 8199} 8200 8201 8202/***/ }), 8203 8204/***/ 56003: 8205/***/ ((module) => { 8206 8207"use strict"; 8208module.exports = __WEBPACK_EXTERNAL_MODULE__56003__; 8209 8210/***/ }), 8211 8212/***/ 58965: 8213/***/ (() => { 8214 8215"use strict";
8216// extracted by mini-css-extract-plugin 8217/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ({}); 8218 8219/***/ }), 8220 8221/***/ 59788: 8222/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8223 8224"use strict"; 8225/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8226/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8227/* harmony export */ }); 8228/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 8229/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 8230/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 8231/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53373); 8232/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__); 8233/* harmony import */ var rc_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3251); 8234/* harmony import */ var rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77326); 8235/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(84238); 8236/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(19284); 8237/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(15442); 8238/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_8__); 8239/* harmony import */ var _Arrow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(23581); 8240/* harmony import */ var _Mask__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(27982); 8241/* harmony import */ var _PopupContent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(80745); 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254var Popup = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.forwardRef(function (props, ref) { 8255 var popup = props.popup, 8256 className = props.className, 8257 prefixCls = props.prefixCls, 8258 style = props.style, 8259 target = props.target, 8260 _onVisibleChanged = props.onVisibleChanged, 8261 open = props.open, 8262 keepDom = props.keepDom, 8263 fresh = props.fresh, 8264 onClick = props.onClick, 8265 mask = props.mask, 8266 arrow = props.arrow, 8267 arrowPos = props.arrowPos, 8268 align = props.align, 8269 motion = props.motion, 8270 maskMotion = props.maskMotion, 8271 forceRender = props.forceRender, 8272 getPopupContainer = props.getPopupContainer, 8273 autoDestroy = props.autoDestroy, 8274 Portal = props.portal, 8275 zIndex = props.zIndex, 8276 onMouseEnter = props.onMouseEnter, 8277 onMouseLeave = props.onMouseLeave, 8278 onPointerEnter = props.onPointerEnter, 8279 onPointerDownCapture = props.onPointerDownCapture, 8280 ready = props.ready, 8281 offsetX = props.offsetX, 8282 offsetY = props.offsetY, 8283 offsetR = props.offsetR, 8284 offsetB = props.offsetB, 8285 onAlign = props.onAlign, 8286 onPrepare = props.onPrepare, 8287 stretch = props.stretch, 8288 targetWidth = props.targetWidth, 8289 targetHeight = props.targetHeight; 8290 var childNode = typeof popup === 'function' ? popup() : popup; 8291 8292 // We can not remove holder only when motion finished. 8293 var isNodeVisible = open || keepDom; 8294 8295 // ======================= Container ======================== 8296 var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0; 8297 var _React$useState = react__WEBPACK_IMPORTED_MODULE_8__.useState(!getPopupContainer || !getPopupContainerNeedParams), 8298 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_React$useState, 2), 8299 show = _React$useState2[0], 8300 setShow = _React$useState2[1]; 8301 8302 // Delay to show since `getPopupContainer` need target element 8303 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A)(function () { 8304 if (!show && getPopupContainerNeedParams && target) { 8305 setShow(true); 8306 } 8307 }, [show, getPopupContainerNeedParams, target]); 8308 8309 // ========================= Render ========================= 8310 if (!show) { 8311 return null; 8312 } 8313 8314 // >>>>> Offset 8315 var AUTO = 'auto'; 8316 var offsetStyle = { 8317 left: '-1000vw', 8318 top: '-1000vh', 8319 right: AUTO, 8320 bottom: AUTO 8321 }; 8322 8323 // Set align style 8324 if (ready || !open) { 8325 var _experimental; 8326 var points = align.points; 8327 var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset); 8328 var alignRight = dynamicInset && points[0][1] === 'r'; 8329 var alignBottom = dynamicInset && points[0][0] === 'b'; 8330 if (alignRight) { 8331 offsetStyle.right = offsetR; 8332 offsetStyle.left = AUTO; 8333 } else { 8334 offsetStyle.left = offsetX; 8335 offsetStyle.right = AUTO; 8336 } 8337 if (alignBottom) { 8338 offsetStyle.bottom = offsetB; 8339 offsetStyle.top = AUTO; 8340 } else { 8341 offsetStyle.top = offsetY; 8342 offsetStyle.bottom = AUTO; 8343 } 8344 } 8345 8346 // >>>>> Misc 8347 var miscStyle = {}; 8348 if (stretch) { 8349 if (stretch.includes('height') && targetHeight) { 8350 miscStyle.height = targetHeight; 8351 } else if (stretch.includes('minHeight') && targetHeight) { 8352 miscStyle.minHeight = targetHeight; 8353 } 8354 if (stretch.includes('width') && targetWidth) { 8355 miscStyle.width = targetWidth; 8356 } else if (stretch.includes('minWidth') && targetWidth) { 8357 miscStyle.minWidth = targetWidth; 8358 } 8359 } 8360 if (!open) { 8361 miscStyle.pointerEvents = 'none'; 8362 } 8363 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(Portal, { 8364 open: forceRender || isNodeVisible, 8365 getContainer: getPopupContainer && function () { 8366 return getPopupContainer(target); 8367 }, 8368 autoDestroy: autoDestroy 8369 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_Mask__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A, { 8370 prefixCls: prefixCls, 8371 open: open, 8372 zIndex: zIndex, 8373 mask: mask, 8374 motion: maskMotion 8375 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A, { 8376 onResize: onAlign, 8377 disabled: !open 8378 }, function (resizeObserverRef) { 8379 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)({ 8380 motionAppear: true, 8381 motionEnter: true, 8382 motionLeave: true, 8383 removeOnLeave: false, 8384 forceRender: forceRender, 8385 leavedClassName: "".concat(prefixCls, "-hidden") 8386 }, motion, { 8387 onAppearPrepare: onPrepare, 8388 onEnterPrepare: onPrepare, 8389 visible: open, 8390 onVisibleChanged: function onVisibleChanged(nextVisible) { 8391 var _motion$onVisibleChan; 8392 motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible); 8393 _onVisibleChanged(nextVisible); 8394 } 8395 }), function (_ref, motionRef) { 8396 var motionClassName = _ref.className, 8397 motionStyle = _ref.style; 8398 var cls = classnames__WEBPACK_IMPORTED_MODULE_3___default()(prefixCls, motionClassName, className); 8399 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement("div", { 8400 ref: (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_7__/* .composeRef */ .K4)(resizeObserverRef, ref, motionRef), 8401 className: cls, 8402 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)({
8403 '--arrow-x': "".concat(arrowPos.x || 0, "px"), 8404 '--arrow-y': "".concat(arrowPos.y || 0, "px") 8405 }, offsetStyle), miscStyle), motionStyle), {}, { 8406 boxSizing: 'border-box', 8407 zIndex: zIndex 8408 }, style), 8409 onMouseEnter: onMouseEnter, 8410 onMouseLeave: onMouseLeave, 8411 onPointerEnter: onPointerEnter, 8412 onClick: onClick, 8413 onPointerDownCapture: onPointerDownCapture 8414 }, arrow && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_Arrow__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A, { 8415 prefixCls: prefixCls, 8416 arrow: arrow, 8417 arrowPos: arrowPos, 8418 align: align 8419 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_8__.createElement(_PopupContent__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A, { 8420 cache: !open && !fresh 8421 }, childNode)); 8422 }); 8423 })); 8424}); 8425if (false) // removed by dead control flow 8426{} 8427/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Popup); 8428 8429/***/ }), 8430 8431/***/ 59912: 8432/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8433 8434"use strict"; 8435/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8436/* harmony export */ A: () => (/* binding */ Tooltip) 8437/* harmony export */ }); 8438/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 8439/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 8440/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56003); 8441/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__); 8442/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22128); 8443/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53373); 8444/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_3__); 8445/* harmony import */ var _components_CjHeader_const_languages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45163); 8446/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44148); 8447/* harmony import */ var _RcToolTip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14919); 8448/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81002); 8449var __assign = undefined && undefined.__assign || function () { 8450 __assign = Object.assign || function (t) { 8451 for (var s, i = 1, n = arguments.length; i < n; i++) { 8452 s = arguments[i]; 8453 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 8454 } 8455 return t; 8456 }; 8457 return __assign.apply(this, arguments); 8458}; 8459var __rest = undefined && undefined.__rest || function (s, e) { 8460 var t = {}; 8461 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 8462 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 8463 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 8464 } 8465 return t; 8466}; 8467 8468 8469 8470 8471 8472 8473 8474 8475function Tooltip(props) { 8476 var _a = props.useRc, 8477 useRc = _a === void 0 ? false : _a, 8478 _b = props.rcProps, 8479 rcProps = _b === void 0 ? {} : _b, 8480 _c = props.content, 8481 content = _c === void 0 ? '' : _c, 8482 children = props.children, 8483 _d = props.placement, 8484 placement = _d === void 0 ? 'top' : _d, 8485 _e = props.white, 8486 white = _e === void 0 ? false : _e, 8487 _f = props.className, 8488 className = _f === void 0 ? '' : _f, 8489 bodyStyle = props.bodyStyle, 8490 immediateHide = props.immediateHide, 8491 noImmediateShow = props.noImmediateShow, 8492 _g = props.noImmediateShowDelay, 8493 noImmediateShowDelay = _g === void 0 ? 1000 : _g, 8494 _h = props.autoTranslate, 8495 autoTranslate = _h === void 0 ? true : _h, 8496 autoShow = props.autoShow, 8497 _j = props.autoShowDelay, 8498 autoShowDelay = _j === void 0 ? 1000 : _j, 8499 _k = props.hideArrow, 8500 hideArrow = _k === void 0 ? false : _k, 8501 _l = props.zIndex, 8502 zIndex = _l === void 0 ? 99999 : _l, 8503 resetProps = __rest(props, ["useRc", "rcProps", "content", "children", "placement", "white", "className", "bodyStyle", "immediateHide", "noImmediateShow", "noImmediateShowDelay", "autoTranslate", "autoShow", "autoShowDelay", "hideArrow", "zIndex"]); 8504 var lng = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_5__/* .useGlobalProps */ .v)().otherCookies.lng; 8505 var notranslate = autoTranslate ? false : _components_CjHeader_const_languages__WEBPACK_IMPORTED_MODULE_4__/* .sixCountryLanguage */ .V.includes(lng); 8506 var cloneRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8507 var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8508 var timerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8509 var timerEnterRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 8510 var Tip = function Tip(_a) { 8511 var _b, _c; 8512 var _d = _a.arrowStyle, 8513 arrowStyle = _d === void 0 ? {}
8513 : _d, 8514 style = _a.style; 8515 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8516 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)), 8517 style: __assign(__assign({}, style), { 8518 zIndex: zIndex 8519 }) 8520 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8521 className: _index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.box 8522 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8523 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)), 8524 style: arrowStyle 8525 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { 8526 className: _index_less__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A.content 8527 }, content))); 8528 }; 8529 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { 8530 return function () { 8531 ref.current && ref.current.remove(); 8532 }; 8533 }, []); 8534 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { 8535 if (autoShow) { 8536 setTimeout(function () { 8537 if ((0,_common__WEBPACK_IMPORTED_MODULE_7__/* .isMobileFun */ .kJ)()) { 8538 return; 8539 } 8540 handleOnMouseEnter(cloneRef.current); 8541 setTimeout(function () { 8542 handleOnLeave(ref.current); 8543 }, autoShowDelay); 8544 }, 1000); 8545 } 8546 }, []); 8547 var clearTimerVariable = function clearTimerVariable() { 8548 timerRef.current && clearTimeout(timerRef.current); 8549 }; 8550 var handleOnLeave = function handleOnLeave(dom) { 8551 function removeDom() { 8552 dom && dom.remove(); 8553 ref.current = null; 8554 } 8555 clearTimerVariable(); 8556 if (immediateHide) return removeDom(); 8557 timerRef.current = setTimeout(function () { 8558 removeDom(); 8559 }, 50); 8560 }; 8561 var handleOnMouseEnter = function handleOnMouseEnter(target) { 8562 clearTimerVariable(); 8563 if (ref.current) return; 8564 var _a = target.getBoundingClientRect(), 8565 top = _a.top, 8566 width = _a.width, 8567 left = _a.left, 8568 height = _a.height; 8569 var windowWidth = window.innerWidth; 8570 var arrowWidth = 10; 8571 var style = {}; 8572 var arrowStyle = {}; 8573 switch (placement) { 8574 case 'leftTop': 8575 style = { 8576 left: left, 8577 top: top - 10, 8578 transform: 'translateY(-100%)' 8579 }; 8580 arrowStyle = { 8581 bottom: -5, 8582 left: width / 2 - arrowWidth / 2 8583 }; 8584 break; 8585 case 'rightTop': 8586 style = { 8587 right: windowWidth - (left + width), 8588 top: top - 10, 8589 transform: 'translateY(-100%)' 8590 }; 8591 arrowStyle = { 8592 bottom: -5, 8593 right: width / 2 - arrowWidth / 2 8594 }; 8595 break; 8596 case 'right': 8597 style = { 8598 left: left + width + arrowWidth, 8599 top: top - height / 2 + 6 8600 }; 8601 arrowStyle = { 8602 bottom: height / 2, 8603 left: -arrowWidth 8604 }; 8605 break; 8606 case 'top': 8607 style = { 8608 left: left + width / 2, 8609 top: top - 10, 8610 transform: 'translate(-50%, -100%)' 8611 }; 8612 arrowStyle = { 8613 bottom: -5, 8614 left: "calc(50% - ".concat(arrowWidth / 2, "px)") 8615 }; 8616 break; 8617 case 'bottom': 8618 style = { 8619 left: left + width / 2, 8620 top: top + height + 10, 8621 transform: 'translateX(-50%)' 8622 }; 8623 arrowStyle = { 8624 top: -5, 8625 left: "calc(50% - ".concat(arrowWidth / 2, "px)"), 8626 transform: 'rotate(180deg)' 8627 }; 8628 break; 8629 case 'bottomRight': 8630 style = { 8631 right: windowWidth - (left + width), 8632 top: top + height + 10 8633 }; 8634 arrowStyle = { 8635 top: -5, 8636 right: width / 2 - arrowWidth / 2, 8637 transform: 'rotate(180deg)' 8638 }; 8639 break; 8640 case 'bottomLeft': 8641 style = { 8642 left: left, 8643 top: top + height + 10 8644 }; 8645 arrowStyle = { 8646 top: -5, 8647 left: width / 2 - arrowWidth / 2, 8648 transform: 'rotate(180deg)' 8649 }; 8650 break; 8651 case 'leftBottom': 8652 style = { 8653 left: left, 8654 top: top + height + 10 8655 }; 8656 arrowStyle = { 8657 top: -5, 8658 left: arrowWidth + 5, 8659 transform: 'rotate(180deg)' 8660 }; 8661 break; 8662 default: 8663 } 8664 var CloneTip = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Tip, { 8665 style: __assign(__assign({}, style), bodyStyle), 8666 arrowStyle: arrowStyle 8667 }), {}); 8668 var div = document.createElement('div'); 8669 div.addEventListener('mouseenter', function (e) { 8670 clearTimerVariable(); 8671 }); 8672 div.addEventListener('mouseleave', function () { 8673 handleOnLeave(ref.current); 8674 }); 8675 function show() { 8676 document.body.append(div); 8677 ref.current = div; 8678 (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); 8679 } 8680 if (noImmediateShow) { 8681 timerEnterRef && clearTimeout(timerEnterRef.current); 8682 timerEnterRef.current = setTimeout(function () { 8683 show(); 8684 }, noImmediateShowDelay); 8685 return; 8686 } 8687 show(); 8688 }; 8689 if (!content) return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(children, { 8690 ref: cloneRef 8691 }); 8692 if (useRc) { 8693 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_RcToolTip__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A, __assign({ 8694 theme: "black", 8695 placement: placement, 8696 overlay: function overlay() { 8697 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, content); 8698 }, 8699 getTooltipContainer: function getTooltipContainer(triggerNode) { 8700 if (triggerNode.parentElement) return triggerNode.parentElement; 8701 return document.body; 8702 } 8703 }
8703, rcProps), typeof children === 'string' ? (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, children)) : children); 8704 } 8705 return /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(typeof children === 'string' ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, children) : children, { 8706 ref: cloneRef, 8707 onMouseEnter: function onMouseEnter(e) { 8708 handleOnMouseEnter(e.currentTarget); 8709 }, 8710 onMouseLeave: function onMouseLeave() { 8711 if (noImmediateShow) { 8712 timerEnterRef && clearTimeout(timerEnterRef.current); 8713 } 8714 handleOnLeave(ref.current); 8715 } 8716 }); 8717} 8718 8719/***/ }), 8720 8721/***/ 60133: 8722/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8723 8724"use strict"; 8725/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8726/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8727/* harmony export */ }); 8728// extracted by mini-css-extract-plugin 8729/* 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"}); 8730 8731/***/ }), 8732 8733/***/ 60488: 8734/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8735 8736"use strict"; 8737/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8738/* harmony export */ A: () => (/* binding */ useIsZS) 8739/* harmony export */ }); 8740function useIsZS(server_siteCheck) { 8741 var _a, _b, _c; 8742 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; 8743 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; 8744} 8745 8746/***/ }), 8747 8748/***/ 61225: 8749/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8750 8751"use strict"; 8752/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8753/* harmony export */ D: () => (/* binding */ getWin), 8754/* harmony export */ H1: () => (/* binding */ getAlignPopupClassName), 8755/* harmony export */ Iq: () => (/* binding */ getVisibleArea), 8756/* harmony export */ TK: () => (/* binding */ collectScroller), 8757/* harmony export */ Vu: () => (/* binding */ getMotion), 8758/* harmony export */ ac: () => (/* binding */ toNum) 8759/* harmony export */ }); 8760/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 8761 8762function isPointsEq() { 8763 var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 8764 var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; 8765 var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined; 8766 if (isAlignPoint) { 8767 return a1[0] === a2[0]; 8768 } 8769 return a1[0] === a2[0] && a1[1] === a2[1]; 8770} 8771function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) { 8772 var points = align.points; 8773 var placements = Object.keys(builtinPlacements); 8774 for (var i = 0; i < placements.length; i += 1) { 8775 var _builtinPlacements$pl; 8776 var placement = placements[i]; 8777 if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) { 8778 return "".concat(prefixCls, "-placement-").concat(placement); 8779 } 8780 } 8781 return ''; 8782} 8783 8784/** @deprecated We should not use this if we can refactor all deps */ 8785function getMotion(prefixCls, motion, animation, transitionName) { 8786 if (motion) { 8787 return motion; 8788 } 8789 if (animation) { 8790 return { 8791 motionName: "".concat(prefixCls, "-").concat(animation) 8792 }; 8793 } 8794 if (transitionName) { 8795 return { 8796 motionName: transitionName 8797 }; 8798 } 8799 return null; 8800} 8801function getWin(ele) { 8802 return ele.ownerDocument.defaultView; 8803} 8804 8805/** 8806 * Get all the scrollable parent elements of the element 8807 * @param ele The element to be detected 8808 * @param areaOnly Only return the parent which will cut visible area 8809 */ 8810function collectScroller(ele) { 8811 var scrollerList = []; 8812 var current = ele === null || ele === void 0 ? void 0 : ele.parentElement; 8813 var scrollStyle = ['hidden', 'scroll', 'clip', 'auto']; 8814 while (current) { 8815 var _getWin$getComputedSt = getWin(current).getComputedStyle(current), 8816 overflowX = _getWin$getComputedSt.overflowX, 8817 overflowY = _getWin$getComputedSt.overflowY, 8818 overflow = _getWin$getComputedSt.overflow; 8819 if ([overflowX, overflowY, overflow].some(function (o) { 8820 return scrollStyle.includes(o); 8821 })) { 8822 scrollerList.push(current); 8823 } 8824 current = current.parentElement; 8825 } 8826 return scrollerList; 8827} 8828function toNum(num) { 8829 var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; 8830 return Number.isNaN(num) ? defaultValue : num; 8831} 8832function getPxValue(val) { 8833 return toNum(parseFloat(val), 0); 8834} 8835/** 8836 * 8837 * 8838 * ************************************** 8839 * * Border * 8840 * * ************************** * 8841 * * * * * * 8842 * * B * * S * B * 8843 * * o * * c * o * 8844 * * r * Content * r * r * 8845 * * d * * o * d * 8846 * * e * * l * e * 8847 * * r ******************** l * r * 8848 * * * Scroll * * 8849 * * ************************** * 8850 * * Border * 8851 * ************************************** 8852 * 8853 */ 8854/** 8855 * Get visible area of element 8856 */ 8857function getVisibleArea(initArea, scrollerList) { 8858 var visibleArea = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, initArea);
8859 (scrollerList || []).forEach(function (ele) { 8860 if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) { 8861 return; 8862 } 8863 8864 // Skip if static position which will not affect visible area 8865 var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele), 8866 overflow = _getWin$getComputedSt2.overflow, 8867 overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin, 8868 borderTopWidth = _getWin$getComputedSt2.borderTopWidth, 8869 borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth, 8870 borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth, 8871 borderRightWidth = _getWin$getComputedSt2.borderRightWidth; 8872 var eleRect = ele.getBoundingClientRect(); 8873 var eleOutHeight = ele.offsetHeight, 8874 eleInnerHeight = ele.clientHeight, 8875 eleOutWidth = ele.offsetWidth, 8876 eleInnerWidth = ele.clientWidth; 8877 var borderTopNum = getPxValue(borderTopWidth); 8878 var borderBottomNum = getPxValue(borderBottomWidth); 8879 var borderLeftNum = getPxValue(borderLeftWidth); 8880 var borderRightNum = getPxValue(borderRightWidth); 8881 var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000); 8882 var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000); 8883 8884 // Original visible area 8885 var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX; 8886 var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY; 8887 8888 // Cut border size 8889 var scaledBorderTopWidth = borderTopNum * scaleY; 8890 var scaledBorderBottomWidth = borderBottomNum * scaleY; 8891 var scaledBorderLeftWidth = borderLeftNum * scaleX; 8892 var scaledBorderRightWidth = borderRightNum * scaleX; 8893 8894 // Clip margin 8895 var clipMarginWidth = 0; 8896 var clipMarginHeight = 0; 8897 if (overflow === 'clip') { 8898 var clipNum = getPxValue(overflowClipMargin); 8899 clipMarginWidth = clipNum * scaleX; 8900 clipMarginHeight = clipNum * scaleY; 8901 } 8902 8903 // Region 8904 var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth; 8905 var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight; 8906 var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth; 8907 var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight; 8908 visibleArea.left = Math.max(visibleArea.left, eleLeft); 8909 visibleArea.top = Math.max(visibleArea.top, eleTop); 8910 visibleArea.right = Math.min(visibleArea.right, eleRight); 8911 visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom); 8912 }); 8913 return visibleArea; 8914} 8915 8916/***/ }), 8917 8918/***/ 62194: 8919/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 8920 8921"use strict"; 8922/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8923/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 8924/* harmony export */ }); 8925/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 8926 "/mine/invoiceNew/providerInvoice": { 8927 "module": { 8928 "show-side-menu": false 8929 } 8930 }, 8931 "/customPackaging": { 8932 "module": { 8933 "show-side-menu": false 8934 } 8935 }, 8936 "/mine/logisticForMyProducts": { 8937 "module": { 8938 "show-side-menu": false 8939 } 8940 }, 8941 "/mine/podInfoTemp": { 8942 "module": { 8943 "show-side-menu": false, 8944 "chat-body": false 8945 } 8946 }, 8947 "/factories": { 8948 "module": { 8949 "header-search-camera": false 8950 } 8951 }, 8952 "/mine/purchase/purchaseList": { 8953 "module": { 8954 "th-incomplete-product": false, 8955 "th-search-form": false, 8956 "th-show-pay-logistic": false, 8957 "th-self-pick-code": false 8958 } 8959 }, 8960 "/mine/invoiceNew/walletInvoice": { 8961 "module": { 8962 "show-side-menu": false 8963 } 8964 }, 8965 "/home": { 8966 "banner-width": "600", 8967 "module": { 8968 "global-selected-products": false 8969 }, 8970 "banner-height": "413" 8971 }, 8972 "/mine/invoiceNew/providerWalletInvoice": { 8973 "module": { 8974 "show-side-menu": false 8975 } 8976 }, 8977 "/bulkPurchase": { 8978 "module": { 8979 "show-side-menu": false 8980 } 8981 }, 8982 "/top-selling": { 8983 "module": { 8984 "show-side-menu": false 8985 } 8986 }, 8987 "/mine/aiAssistant": { 8988 "module": { 8989 "product-card-listnum": false, 8990 "ai-assistant": false, 8991 "chat-body": false 8992 } 8993 }, 8994 "/mabang": { 8995 "module": { 8996 "show-side-menu": false 8997 } 8998 }, 8999 "/loancredit": { 9000 "module": { 9001 "footer-link": false 9002 } 9003 }, 9004 "/partnership/Strat%C3%A9gieEscape": { 9005 "module": { 9006 "chat-body": false 9007 } 9008 }, 9009 "/mine/invoiceNew/orderInvoice": { 9010 "module": { 9011 "show-side-menu": false 9012 } 9013 }, 9014 "/mine/calculation": { 9015 "module": { 9016 "chat-body": false 9017 } 9018 }, 9019 "common": { 9020 "can-subscribe-nums": ["CJ10001", "CJ429035", "CJ393749", "CJ4413202", "CJ4853327", "CJ4222547", "CJ709889"], 9021 "warehouse-operation-video-users": ["CJ10001", "CJ4445350", "CJ4468131", "CJ4461784", "CJ4031737", "CJ2520452", "CJ2591528", "CJ2607137", "CJ1845582"], 9022 "list-allow-add-local-nums": ["CJ4599325", "CJ4832006", "CJ4825286", "CJ591747", "CJ2538590", "CJ4815083"],
9023 "login-data": "zJRR4N29LfElWFRWD2JVBg==", 9024 "intelligence-menu-threshold": 1, 9025 "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"], 9026 "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"], 9027 "share-image": "https://frontend.cjdropshipping.com/config-resource/cj/share1200x900.jpg", 9028 "allowed-api-user-ids": ["CJ4468131", "CJ620569", "CJ10001", "CJ429035", "CJ4224762", "CJ1452721", "CJ4985938", "CJ158602", "CJ56440", "CJ5551755"], 9029 "full-name": "CJdropshipping", 9030 "platform": 2, 9031 "source-spu-user-list": "CJ1167982,CJ2522152,CJ227789", 9032 "has-german-permission-user": "CJ10001,CJ2286027,CJ1452721", 9033 "ai-chat-hash-threshold": 100, 9034 "gbp-users": ["CJ2467479", "CJ10001"], 9035 "shopify-delivery-profiles-user-ids": ["CJ1452721"], 9036 "top-notice-list": [{ 9037 "link": "https://cjec.cjdropshipping.com/belgrade-2026/", 9038 "key": "common-costs-us-tips", 9039 "isShow": true 9040 }, { 9041 "link": "https://cjec.cjdropshipping.com/belgrade-2026/", 9042 "key": "common-header-notice", 9043 "isShow": false 9044 }], 9045 "host": "cjdropshipping.com", 9046 "logo": "https://frontend.cjdropshipping.com/config-resource/cj/new_logo.svg", 9047 "logo-white": "https://frontend.cjdropshipping.com/config-resource/cj/new_logo_white.svg", 9048 "remove-photo-request-users": ["CJ10001", "CJ4222547", "CJ5241151", "CJ5029117", "CJ4856590"], 9049 "ecomvault-nums": ["CJ591747", "CJ10001", "CJ1452721"], 9050 "login-debugger": "1", 9051 "company-name": "Yiwu Cujia Trade Co., Ltd.", 9052 "address": "F2.BUILDING 8,NO.89,SIYUAN ROAD ,YIDONG INDUSTRIAL ZONE,NIANSANLISTREET,YIWU.ZHEJIANG", 9053 "m-host": "https://m.cjdropshipping.com", 9054 "inventory-planner-menu-user": ["CJ4224762", "CJ429035", "CJ10001", "CJ2115343", "CJ4047783", "CJ2962894"], 9055 "warehouse-operation-only-picture-users": ["CJ4869824", "CJ4468131", "CJ4461784"], 9056 "favicon": "https://frontend.cjdropshipping.com/config-resource/cj/favicon.ico", 9057 "logo-height": "40", 9058 "ai-chat-users": ["CJ4215280", "CJ4215333", "CJ5067909", "CJ4569773", "CJ10001", "CJ4208389", "CJ5332187", "CJ955168"], 9059 "module": { 9060 "cj-authorie-login": false, 9061 "old-user-update-notice": false, 9062 "mycj-header-chinese-new-year-notice": false, 9063 "no-quickly-login": false, 9064 "everyone-show-photo-request": false, 9065 "use-old-chat": false 9066 }, 9067 "loading": "loading.json", 9068 "logistics-number-jump-origin-url-users": ["CJ227789", "CJ2520452", "CJ4031737", "CJ4461784", "CJ4468131", "CJ4621927", "CJ2268247", "CJ2520452"], 9069 "footer-host": "CJdropshipping.com", 9070 "third-login": { 9071 "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", 9072 "facebook": "2678412275531221", 9073 "google": "708607489636-7ihggmvci7r9b6npeo3j9v4mnb2g23fp.apps.googleusercontent.com" 9074 }, 9075 "support-multiple-warehouses-user-ids": ["CJ4546034", "CJ2284102", "CJ4597771", "CJ4714917"], 9076 "chat-domain": "https://chat.cjdropshipping.com", 9077 "footer-copyright": "æµICPå¤2020040134å·-1", 9078 "site": "CJ", 9079 "academy-home": "https://cjacademy.cjdropshipping.com/", 9080 "my-quotation-users": ["CJ2268247", "CJ227789", "CJ2520452", "CJ4031737", "CJ4461784", "CJ4468131", "CJ4621927", "CJ2520452", "CJ2520452", "CJ4461784", "CJ4031737", "CJ4869824", "CJ4621927", "CJ4067173", "CJ4855400", "CJ4879281"], 9081 "logo-width": "200", 9082 "name": "CJ", 9083 "track-on-cjpacket": "Track on CJPacket", 9084 "intelligence-menu-user": ["CJ4215280", "CJ4215333", "CJ4569773", "CJ5332187", "CJ10001", "CJ4411686", "CJ4950757", "CJ5212190", "CJ4215333", "CJ4215333", "CJ4569773", "CJ5332187", "CJ5172899"], 9085 "qksource-domain": "https://qksource.com" 9086 }, 9087 "/contactus": { 9088 "module": { 9089 "contactus-visitus": false, 9090 "contactus-comoney": false 9091 }, 9092 "company-info": "" 9093 }, 9094 "/medium-production-services": { 9095 "module": { 9096 "show-side-menu": false 9097 } 9098 }, 9099 "/mine/customization": { 9100 "module": { 9101 "odm-guide": false 9102 }, 9103 "odm-guide-users": ["CJ4215280", "CJ10001", "CJ1452721", "CJ5147146"] 9104 }, 9105 "/mine/payment": { 9106 "module": { 9107 "use-new-card-pay": false 9108 } 9109 },
9110 "/mine/pod3detail": { 9111 "module": { 9112 "show-side-menu": false, 9113 "chat-body": false 9114 } 9115 }, 9116 "/aboutus": { 9117 "company-name": "", 9118 "module": { 9119 "aboutus-more": false, 9120 "aboutus-story": false, 9121 "aboutus-email": false 9122 }, 9123 "company-info": "", 9124 "aboutus-email": "[email protected]" 9125 } 9126}); 9127 9128/***/ }), 9129 9130/***/ 62742: 9131/***/ ((module) => { 9132 9133"use strict"; 9134module.exports = __WEBPACK_EXTERNAL_MODULE__62742__; 9135 9136/***/ }), 9137 9138/***/ 62934: 9139/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9140 9141"use strict"; 9142/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9143/* harmony export */ Jv: () => (/* binding */ getAppStoreList), 9144/* harmony export */ vG: () => (/* binding */ getAuthorizeShowList) 9145/* harmony export */ }); 9146/* unused harmony exports getTransWarehouse, getWarehouseTranslate2Session, getWarehouseList, getCountryData, getThCountryData, getQueueCount, addStatisFun, getCategories, getShippingCartNum, getSearchKeys, debounceGetSearchKeys, getRate, getLogisticsEnquiryWeight */ 9147/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 9148/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3478); 9149/* harmony import */ var _common_platform_show__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37597); 9150/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44190); 9151/* harmony import */ var _common_add_store__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21421); 9152var __assign = undefined && undefined.__assign || function () { 9153 __assign = Object.assign || function (t) { 9154 for (var s, i = 1, n = arguments.length; i < n; i++) { 9155 s = arguments[i]; 9156 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 9157 } 9158 return t; 9159 }; 9160 return __assign.apply(this, arguments); 9161}; 9162var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 9163 function adopt(value) { 9164 return value instanceof P ? value : new P(function (resolve) { 9165 resolve(value); 9166 }); 9167 } 9168 return new (P || (P = Promise))(function (resolve, reject) { 9169 function fulfilled(value) { 9170 try { 9171 step(generator.next(value)); 9172 } catch (e) { 9173 reject(e); 9174 } 9175 } 9176 function rejected(value) { 9177 try { 9178 step(generator["throw"](value)); 9179 } catch (e) { 9180 reject(e); 9181 } 9182 } 9183 function step(result) { 9184 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 9185 } 9186 step((generator = generator.apply(thisArg, _arguments || [])).next()); 9187 }); 9188}; 9189var __generator = undefined && undefined.__generator || function (thisArg, body) { 9190 var _ = { 9191 label: 0, 9192 sent: function sent() { 9193 if (t[0] & 1) throw t[1]; 9194 return t[1]; 9195 }, 9196 trys: [], 9197 ops: [] 9198 }, 9199 f, 9200 y, 9201 t, 9202 g; 9203 return g = { 9204 next: verb(0), 9205 "throw": verb(1), 9206 "return": verb(2) 9207 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 9208 return this; 9209 }), g; 9210 function verb(n) { 9211 return function (v) { 9212 return step([n, v]); 9213 }; 9214 } 9215 function step(op) { 9216 if (f) throw new TypeError("Generator is already executing."); 9217 while (g && (g = 0, op[0] && (_ = 0)), _) try { 9218 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; 9219 if (y = 0, t) op = [op[0] & 2, t.value]; 9220 switch (op[0]) { 9221 case 0: 9222 case 1: 9223 t = op; 9224 break; 9225 case 4: 9226 _.label++; 9227 return { 9228 value: op[1], 9229 done: false 9230 }; 9231 case 5: 9232 _.label++; 9233 y = op[1]; 9234 op = [0]; 9235 continue; 9236 case 7: 9237 op = _.ops.pop(); 9238 _.trys.pop(); 9239 continue; 9240 default: 9241 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 9242 _ = 0; 9243 continue; 9244 } 9245 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 9246 _.label = op[1]; 9247 break; 9248 } 9249 if (op[0] === 6 && _.label < t[1]) { 9250 _.label = t[1]; 9251 t = op; 9252 break; 9253 } 9254 if (t && _.label < t[2]) { 9255 _.label = t[2];
9256 _.ops.push(op); 9257 break; 9258 } 9259 if (t[2]) _.ops.pop(); 9260 _.trys.pop(); 9261 continue; 9262 } 9263 op = body.call(thisArg, _); 9264 } catch (e) { 9265 op = [6, e]; 9266 y = 0; 9267 } finally { 9268 f = t = 0; 9269 } 9270 if (op[0] & 5) throw op[1]; 9271 return { 9272 value: op[0] ? op[1] : void 0, 9273 done: true 9274 }; 9275 } 9276}; 9277 9278 9279 9280 9281 9282var getTransWarehouse = function getTransWarehouse($axios, lng) { 9283 return __awaiter(void 0, void 0, void 0, function () { 9284 var warehouses, result; 9285 var _a; 9286 return __generator(this, function (_b) { 9287 switch (_b.label) { 9288 case 0: 9289 if (isBrowser) { 9290 warehouses = sessionStorage.getItem("warehouse_lng_".concat(lng)); 9291 if (warehouses) { 9292 return [2, [null, { 9293 result: JSON.parse(warehouses) 9294 }]]; 9295 } 9296 } 9297 return [4, $axios({ 9298 method: 'post', 9299 url: 'product-api/dbWorldInfo/getWareHouseWorldsByLanguage', 9300 headers: { 9301 language: lng 9302 }, 9303 data: {} 9304 })]; 9305 case 1: 9306 result = _b.sent(); 9307 if (isBrowser && ((_a = result[1]) === null || _a === void 0 ? void 0 : _a.result)) { 9308 sessionStorage.setItem("warehouse_lng_".concat(lng), JSON.stringify(result[1].data)); 9309 } 9310 return [2, result]; 9311 } 9312 }); 9313 }); 9314}; 9315var getWarehouseTranslate2Session = function getWarehouseTranslate2Session($axios) { 9316 return __awaiter(void 0, void 0, void 0, function () { 9317 var languages, _loop_1, i; 9318 return __generator(this, function (_a) { 9319 languages = ['zh', 'en', 'de', 'fr', 'id', 'th']; 9320 _loop_1 = function _loop_1(i) { 9321 var lng = languages[i]; 9322 getTransWarehouse($axios, lng).then(function (_a) { 9323 var err = _a[0], 9324 res = _a[1]; 9325 if (!err) { 9326 if (!isBrowser) { 9327 var result = (res || {}).result || []; 9328 sessionStorage.setItem("warehouse_lng_".concat(lng), JSON.stringify(result)); 9329 } 9330 } 9331 }); 9332 }; 9333 for (i = 0; i < languages.length; i++) { 9334 _loop_1(i); 9335 } 9336 return [2]; 9337 }); 9338 }); 9339}; 9340var getWarehouseList = function getWarehouseList(_a) { 9341 var ctx = _a.ctx,
9342 $axios = _a.$axios, 9343 lng = _a.lng; 9344 return __awaiter(void 0, void 0, void 0, function () { 9345 function addOtherData(list, ctx) { 9346 if (list === void 0) { 9347 list = []; 9348 } 9349 var arr = []; 9350 list.forEach(function (item) { 9351 var _a, _b; 9352 var env = "production" || 0; 9353 var url; 9354 if (env === 'test') { 9355 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"); 9356 } else { 9357 url = "https://".concat((_b = item === null || item === void 0 ? void 0 : item.countryCode) === null || _b === void 0 ? void 0 : _b.toLowerCase(), ".cjdropshipping.com"); 9358 } 9359 arr.push({ 9360 name: item[lng] || item['en'], 9361 href: url, 9362 image: ossController.join(createFlag(item.countryCode)), 9363 areaId: item === null || item === void 0 ? void 0 : item.areaId, 9364 areaEn: item['en'], 9365 countryCode: item === null || item === void 0 ? void 0 : item.countryCode, 9366 disabled: item.disabled 9367 }); 9368 }); 9369 return arr; 9370 } 9371 var _b, err, data, _data; 9372 var _c, _d; 9373 return __generator(this, function (_e) { 9374 switch (_e.label) { 9375 case 0: 9376 if ((_c = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _c === void 0 ? void 0 : _c.warehouseList) { 9377 return [2, [null, (_d = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _d === void 0 ? void 0 : _d.warehouseList]]; 9378 } 9379 return [4, $axios({ 9380 method: 'get', 9381 url: ossController.join(createWarehouseJson()) 9382 })]; 9383 case 1: 9384 _b = _e.sent(), err = _b[0], data = _b[1]; 9385 _data = data; 9386 return [2, err ? [err] : [null, addOtherData(_data, ctx)]]; 9387 } 9388 }); 9389 }); 9390}; 9391var getCountryData = function getCountryData($axios) { 9392 return __awaiter(void 0, void 0, void 0, function () { 9393 var _a, res; 9394 return __generator(this, function (_b) { 9395 switch (_b.label) { 9396 case 0: 9397 return [4, $axios({ 9398 method: 'get', 9399 url: ossController.join(countryInfo()) 9400 })]; 9401 case 1: 9402 _a = _b.sent(), res = _a[1]; 9403 if (!res) return [2, []]; 9404 res.symbol = res.symbol.sort(function (a, b) { 9405 return a.currency.charCodeAt(0) - b.currency.charCodeAt(0); 9406 }); 9407 return [2, res !== null && res !== void 0 ? res : {}]; 9408 } 9409 }); 9410 }); 9411}; 9412var getThCountryData = function getThCountryData($axios, code) { 9413 if (code === void 0) { 9414 code = 'th'; 9415 } 9416 return __awaiter(void 0, void 0, void 0, function () { 9417 var _a, res; 9418 return __generator(this, function (_b) { 9419 switch (_b.label) { 9420 case 0: 9421 return [4, $axios({ 9422 method: 'get', 9423 url: ossController.join(createConfigResource(code, 'countryinfo.json')) 9424 })]; 9425 case 1: 9426 _a = _b.sent(), res = _a[1]; 9427 res.countryList = res.countryList.sort(function (a, b) { 9428 return a.NAME_EN.charCodeAt(0) - b.NAME_EN.charCodeAt(0); 9429 }); 9430 return [2, res !== null && res !== void 0 ? res : {}]; 9431 } 9432 }); 9433 }); 9434}; 9435var getQueueCount = function getQueueCount($axios, params) { 9436 if (params === void 0) { 9437 params = {}; 9438 } 9439 return __awaiter(void 0, void 0, void 0, function () { 9440 var _params, _a, err, res, _b, e, d; 9441 return __generator(this, function (_c) { 9442 switch (_c.label) { 9443 case 0: 9444 _params = __assign({ 9445 pageNum: 1, 9446 pageSize: 1000, 9447 shopId: '', 9448 inputStr: '', 9449 status: '0' 9450 }, params); 9451 return [4, $axios({ 9452 method: 'post', 9453 url: 'cj-platform-web/product/listedProduct/queryListProductCount', 9454 data: _params 9455 })]; 9456 case 1: 9457 _a = _c.sent(), err = _a[0], res = _a[1]; 9458 if (err) return [2, 0]; 9459 _b = statusCode200(res), e = _b[0], d = _b[1]; 9460 if (e) return [2, 0]; 9461 return [2, d.totle]; 9462 } 9463 }); 9464 }); 9465}; 9466var addStatisFun = function addStatisFun($axios, type) { 9467 return __awaiter(void 0, void 0, void 0, function () { 9468 var _params; 9469 return __generator(this, function (_a) { 9470 switch (_a.label) { 9471 case 0: 9472 _params = { 9473 entryPage: type 9474 }; 9475 return [4, $axios({ 9476 method: 'post', 9477 url: 'pojo/home/addStatisByType', 9478 data: _params 9479 })]; 9480 case 1: 9481 _a.sent(); 9482 return [2]; 9483 } 9484 }); 9485 }); 9486}; 9487var getCategories = function getCategories(_a) { 9488 var ctx = _a.ctx,
9489 $axios = _a.$axios; 9490 return __awaiter(void 0, void 0, void 0, function () { 9491 function renameCategoriesFields(catearr) { 9492 function func(arr) { 9493 if (!arr || arr.length <= 0 || !(arr instanceof Array)) return []; 9494 return arr.map(function (_) { 9495 var id = _.dspId, 9496 nameEn = _.nameEn, 9497 nameVal = _.nameVal, 9498 _a = _.nextLevel, 9499 children = _a === void 0 ? [] : _a; 9500 var item = { 9501 id: id, 9502 nameEn: nameEn, 9503 nameVal: nameVal, 9504 children: children 9505 }; 9506 if (children && children.length > 0) { 9507 return __assign(__assign({}, item), { 9508 children: func(children) 9509 }); 9510 } 9511 return __assign(__assign({}, item), { 9512 children: [] 9513 }); 9514 }).filter(function (_) { 9515 return _.nameVal; 9516 }); 9517 } 9518 return func(catearr).filter(function (_) { 9519 return _.children.length > 0; 9520 }); 9521 } 9522 var _b, err, res, _c, e, d, da; 9523 var _d, _e; 9524 return __generator(this, function (_f) { 9525 switch (_f.label) { 9526 case 0: 9527 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]; 9528 return [4, $axios({ 9529 method: 'post', 9530 url: 'product-api/baseCategory/getCategoryTree', 9531 headers: { 9532 language: Cookies.get('lng') || 'en' 9533 } 9534 })]; 9535 case 1: 9536 _b = _f.sent(), err = _b[0], res = _b[1]; 9537 if (err || !res) return [2, []]; 9538 _c = statusCode200(res), e = _c[0], d = _c[1]; 9539 if (e) return [2, []]; 9540 da = renameCategoriesFields(d); 9541 return [2, da]; 9542 } 9543 }); 9544 }); 9545}; 9546var getShippingCartNum = function getShippingCartNum($axios) { 9547 return __awaiter(void 0, void 0, void 0, function () { 9548 var _a, err, res, _b, e, d; 9549 return __generator(this, function (_c) { 9550 switch (_c.label) { 9551 case 0: 9552 return [4, $axios({ 9553 method: 'post', 9554 url: 'cjorder-web/directOrder/getCartProductCount', 9555 data: {} 9556 })]; 9557 case 1: 9558 _a = _c.sent(), err = _a[0], res = _a[1]; 9559 if (err) return [2, 0]; 9560 _b = statusCode200(res), e = _b[0], d = _b[1]; 9561 if (e) return [2, 0]; 9562 return [2, d.cartProductCount]; 9563 } 9564 }); 9565 }); 9566}; 9567var getAuthorizeShowList = function getAuthorizeShowList($axios) { 9568 return __awaiter(void 0, void 0, void 0, function () { 9569 var requestPlatformShow, PlatformShowStatus, userPlatformShow, checkPlatformExpire, platformShowStatus, result, _a; 9570 return __generator(this, function (_b) { 9571 switch (_b.label) { 9572 case 0: 9573 requestPlatformShow = function requestPlatformShow() { 9574 return __awaiter(void 0, void 0, void 0, function () { 9575 var _a, err, res, _b, e, d; 9576 return __generator(this, function (_c) { 9577 switch (_c.label) { 9578 case 0: 9579 return [4, $axios({ 9580 method: 'post', 9581 url: 'cj-platform-web/shop/queryPlatformAuthor', 9582 data: { 9583 deviceType: 'PC' 9584 } 9585 })]; 9586 case 1: 9587 _a = _c.sent(), err = _a[0], res = _a[1]; 9588 if (err) return [2, []]; 9589 _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), e = _b[0], d = _b[1]; 9590 if (e) return [2, []]; 9591 return [2, d]; 9592 } 9593 }); 9594 }); 9595 }; 9596 if (!!_common__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 2]; 9597 return [4, requestPlatformShow()]; 9598 case 1: 9599 return [2, _b.sent()]; 9600 case 2: 9601 (function (PlatformShowStatus) { 9602 PlatformShowStatus[PlatformShowStatus["Expire"] = -1] = "Expire"; 9603 PlatformShowStatus[PlatformShowStatus["None"] = 0] = "None"; 9604 PlatformShowStatus[PlatformShowStatus["Valid"] = 1] = "Valid"; 9605 })(PlatformShowStatus || (PlatformShowStatus = {})); 9606 userPlatformShow = new _common_platform_show__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Ay(); 9607 checkPlatformExpire = function checkPlatformExpire() { 9608 var platformShow = userPlatformShow.get(); 9609 if (platformShow) { 9610 var nowDate = new Date().getTime(); 9611 if (nowDate > platformShow.expire) { 9612 userPlatformShow.del(); 9613 return PlatformShowStatus.Expire; 9614 } 9615 return PlatformShowStatus.Valid; 9616 } 9617 return PlatformShowStatus.None; 9618 }; 9619 platformShowStatus = checkPlatformExpire(); 9620 result = []; 9621 _a = platformShowStatus; 9622 switch (_a) { 9623 case PlatformShowStatus.Valid: 9624 return [3, 3]; 9625 } 9626 return [3, 4]; 9627 case 3: 9628 result = userPlatformShow.get().value; 9629 return [3, 6]; 9630 case 4: 9631 return [4, requestPlatformShow()]; 9632 case 5: 9633 result = _b.sent(); 9634 userPlatformShow.save(result); 9635 return [3, 6]; 9636 case 6: 9637 return [2, result]; 9638 } 9639 }); 9640 }); 9641}; 9642var getSearchKeys = function getSearchKeys($axios, params, callback) { 9643 $axios({ 9644 method: 'get', 9645 url: 'elastic-api/product/v1/searchSuggester', 9646 params: __assign({}, params) 9647 }).then(function (_a) { 9648 var err = _a[0], 9649 res = _a[1]; 9650 if (err) return callback === null || callback === void 0 ? void 0 : callback([]); 9651 var _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), 9652 e = _b[0], 9653 d = _b[1]; 9654 if (e) return callback === null || callback === void 0 ? void 0 : callback([]); 9655 return callback === null || callback === void 0 ? void 0 : callback((d === null || d === void 0 ? void 0 : d.suggesterList) || []); 9656 }); 9657}; 9658var debounceGetSearchKeys = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .debounce */ .sg)(getSearchKeys, 1000); 9659var getRate = function getRate($axios, currencyCode) { 9660 return __awaiter(void 0, void 0, void 0, function () { 9661 var _params, _a, err, res, _b, e, d; 9662 return __generator(this, function (_c) { 9663 switch (_c.label) { 9664 case 0: 9665 if (!currencyCode) return [2, false]; 9666 _params = { 9667 toCurrency: currencyCode 9668 }; 9669 return [4, $axios({ 9670 method: 'post', 9671 url: 'payment-center-web/paySupport/usdRateExchange', 9672 data: _params 9673 })]; 9674 case 1: 9675 _a = _c.sent(), err = _a[0], res = _a[1]; 9676 if (err) return [2, 0]; 9677 _b = statusCode200(res), e = _b[0], d = _b[1]; 9678 if (e) return [2, 0]; 9679 return [2, d]; 9680 } 9681 }); 9682 }); 9683}; 9684var getLogisticsEnquiryWeight = function getLogisticsEnquiryWeight($axios) { 9685 return __awaiter(void 0, void 0, void 0, function () { 9686 var _a, err, res, _b, e, d; 9687 return __generator(this, function (_c) { 9688 switch (_c.label) { 9689 case 0: 9690 return [4, $axios({ 9691 method: 'get', 9692 url: 'cjorder-web/directOrder/getWholesaleOrderLogisticsEnquiryWeight' 9693 })]; 9694 case 1: 9695 _a = _c.sent(), err = _a[0], res = _a[1]; 9696 if (err) return [2, 0]; 9697 _b = statusCode200(res), e = _b[0], d = _b[1]; 9698 if (e) return [2, 0]; 9699 return [2, d]; 9700 } 9701 }); 9702 }); 9703}; 9704var getAppStoreList = function getAppStoreList($axios) { 9705 return __awaiter(void 0, void 0, void 0, function () { 9706 var requestAppStoreList, AppStoreStatus, userAddStore, checkPlatformExpire, platformShowStatus, result, _a, newResult; 9707 var _b; 9708 return __generator(this, function (_c) { 9709 switch (_c.label) { 9710 case 0: 9711 requestAppStoreList = function requestAppStoreList() { 9712 return __awaiter(void 0, void 0, void 0, function () { 9713 var _a, err, res, _b, e, d; 9714 return __generator(this, function (_c) { 9715 switch (_c.label) { 9716 case 0: 9717 return [4, $axios({ 9718 method: 'post', 9719 url: 'userCenterForeignWeb/userApp/list', 9720 data: { 9721 deviceType: 'PC', 9722 affiliateId: js_cookie__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.get('invite-token') 9723 } 9724 })]; 9725 case 1: 9726 _a = _c.sent(), err = _a[0], res = _a[1]; 9727 if (err) return [2, []]; 9728 _b = (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .statusCode200 */ .GA)(res), e = _b[0], d = _b[1]; 9729 if (e) return [2, []]; 9730 return [2, d]; 9731 } 9732 }); 9733 }); 9734 }; 9735 if (!!_common__WEBPACK_IMPORTED_MODULE_0__/* .isBrowser */ .Bd) return [3, 2]; 9736 return [4, requestAppStoreList()]; 9737 case 1: 9738 return [2, _c.sent()]; 9739 case 2: 9740 (function (AppStoreStatus) { 9741 AppStoreStatus[AppStoreStatus["Expire"] = -1] = "Expire"; 9742 AppStoreStatus[AppStoreStatus["None"] = 0] = "None"; 9743 AppStoreStatus[AppStoreStatus["Valid"] = 1] = "Valid"; 9744 })(AppStoreStatus || (AppStoreStatus = {})); 9745 userAddStore = new _common_add_store__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A(); 9746 checkPlatformExpire = function checkPlatformExpire() { 9747 var addStoreList = userAddStore.get(); 9748 if (addStoreList) { 9749 var nowDate = new Date().getTime(); 9750 if (nowDate > addStoreList.expire) { 9751 userAddStore.del(); 9752 return AppStoreStatus.Expire; 9753 }
9754 return AppStoreStatus.Valid; 9755 } 9756 return AppStoreStatus.None; 9757 }; 9758 platformShowStatus = checkPlatformExpire(); 9759 result = []; 9760 _a = platformShowStatus; 9761 switch (_a) { 9762 case AppStoreStatus.Valid: 9763 return [3, 3]; 9764 } 9765 return [3, 4]; 9766 case 3: 9767 result = (_b = userAddStore.get().value) === null || _b === void 0 ? void 0 : _b.platforms; 9768 return [3, 6]; 9769 case 4: 9770 return [4, requestAppStoreList()]; 9771 case 5: 9772 newResult = _c.sent(); 9773 result = (newResult === null || newResult === void 0 ? void 0 : newResult.platforms) || []; 9774 userAddStore.save(newResult); 9775 return [3, 6]; 9776 case 6: 9777 return [2, result]; 9778 } 9779 }); 9780 }); 9781}; 9782 9783/***/ }), 9784 9785/***/ 62945: 9786/***/ ((module) => { 9787 9788/** Used to match a single whitespace character. */ 9789var reWhitespace = /\s/; 9790 9791/** 9792 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace 9793 * character of `string`. 9794 * 9795 * @private 9796 * @param {string} string The string to inspect. 9797 * @returns {number} Returns the index of the last non-whitespace character. 9798 */ 9799function trimmedEndIndex(string) { 9800 var index = string.length; 9801 9802 while (index-- && reWhitespace.test(string.charAt(index))) {} 9803 return index; 9804} 9805 9806module.exports = trimmedEndIndex; 9807 9808 9809/***/ }), 9810 9811/***/ 63301: 9812/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9813 9814"use strict"; 9815/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9816/* harmony export */ A: () => (/* binding */ useIsVP) 9817/* harmony export */ }); 9818function useIsVP(server_siteCheck) { 9819 var _a, _b; 9820 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; 9821 return ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.isShow('global-vp')) === false; 9822} 9823 9824/***/ }), 9825 9826/***/ 64948: 9827/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9828 9829"use strict"; 9830/* unused harmony export default */ 9831/* harmony import */ var _useEvent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9449); 9832/* harmony import */ var _useLayoutEffect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84238); 9833/* harmony import */ var _useState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(39348); 9834 9835 9836 9837 9838/** We only think `undefined` is empty */ 9839function hasValue(value) { 9840 return value !== undefined; 9841} 9842 9843/** 9844 * Similar to `useState` but will use props value if provided. 9845 * Note that internal use rc-util `useState` hook. 9846 */ 9847function useMergedState(defaultStateValue, option) { 9848 var _ref = option || {}, 9849 defaultValue = _ref.defaultValue, 9850 value = _ref.value, 9851 onChange = _ref.onChange, 9852 postState = _ref.postState; 9853 9854 // ======================= Init ======================= 9855 var _useState = useState(function () { 9856 if (hasValue(value)) { 9857 return value; 9858 } else if (hasValue(defaultValue)) { 9859 return typeof defaultValue === 'function' ? defaultValue() : defaultValue; 9860 } else { 9861 return typeof defaultStateValue === 'function' ? defaultStateValue() : defaultStateValue; 9862 } 9863 }), 9864 _useState2 = _slicedToArray(_useState, 2), 9865 innerValue = _useState2[0], 9866 setInnerValue = _useState2[1]; 9867 var mergedValue = value !== undefined ? value : innerValue; 9868 var postMergedValue = postState ? postState(mergedValue) : mergedValue; 9869 9870 // ====================== Change ====================== 9871 var onChangeFn = useEvent(onChange); 9872 var _useState3 = useState([mergedValue]), 9873 _useState4 = _slicedToArray(_useState3, 2), 9874 prevValue = _useState4[0], 9875 setPrevValue = _useState4[1]; 9876 useLayoutUpdateEffect(function () { 9877 var prev = prevValue[0]; 9878 if (innerValue !== prev) { 9879 onChangeFn(innerValue, prev); 9880 } 9881 }, [prevValue]); 9882 9883 // Sync value back to `undefined` when it from control to un-control 9884 useLayoutUpdateEffect(function () { 9885 if (!hasValue(value)) { 9886 setInnerValue(value); 9887 } 9888 }, [value]); 9889 9890 // ====================== Update ====================== 9891 var triggerChange = useEvent(function (updater, ignoreDestroy) { 9892 setInnerValue(updater, ignoreDestroy); 9893 setPrevValue([mergedValue], ignoreDestroy); 9894 }); 9895 return [postMergedValue, triggerChange]; 9896} 9897 9898/***/ }), 9899 9900/***/ 65555: 9901/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9902 9903"use strict"; 9904/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9905/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 9906/* harmony export */ }); 9907// extracted by mini-css-extract-plugin 9908/* 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 9908-10144
9908noAvatar":"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"}); 9909 9910/***/ }), 9911 9912/***/ 65650: 9913/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 9914 9915var root = __webpack_require__(78942); 9916 9917/** Built-in value references. */ 9918var Symbol = root.Symbol; 9919 9920module.exports = Symbol; 9921 9922 9923/***/ }), 9924 9925/***/ 65856: 9926/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 9927 9928"use strict"; 9929/* harmony export */ __webpack_require__.d(__webpack_exports__, { 9930/* harmony export */ BD: () => (/* binding */ updateCSS), 9931/* harmony export */ m6: () => (/* binding */ removeCSS) 9932/* harmony export */ }); 9933/* unused harmony exports injectCSS, clearContainerCache */ 9934/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 9935/* harmony import */ var _canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 9936/* harmony import */ var _contains__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80129); 9937 9938 9939 9940var APPEND_ORDER = 'data-rc-order'; 9941var APPEND_PRIORITY = 'data-rc-priority'; 9942var MARK_KEY = "rc-util-key"; 9943var containerCache = new Map(); 9944function getMark() { 9945 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 9946 mark = _ref.mark; 9947 if (mark) { 9948 return mark.startsWith('data-') ? mark : "data-".concat(mark); 9949 } 9950 return MARK_KEY; 9951} 9952function getContainer(option) { 9953 if (option.attachTo) { 9954 return option.attachTo; 9955 } 9956 var head = document.querySelector('head'); 9957 return head || document.body; 9958} 9959function getOrder(prepend) { 9960 if (prepend === 'queue') { 9961 return 'prependQueue'; 9962 } 9963 return prepend ? 'prepend' : 'append'; 9964} 9965 9966/** 9967 * Find style which inject by rc-util 9968 */ 9969function findStyles(container) { 9970 return Array.from((containerCache.get(container) || container).children).filter(function (node) { 9971 return node.tagName === 'STYLE'; 9972 }); 9973} 9974function injectCSS(css) { 9975 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 9976 if (!(0,_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)()) { 9977 return null; 9978 } 9979 var csp = option.csp, 9980 prepend = option.prepend, 9981 _option$priority = option.priority, 9982 priority = _option$priority === void 0 ? 0 : _option$priority; 9983 var mergedOrder = getOrder(prepend); 9984 var isPrependQueue = mergedOrder === 'prependQueue'; 9985 var styleNode = document.createElement('style'); 9986 styleNode.setAttribute(APPEND_ORDER, mergedOrder); 9987 if (isPrependQueue && priority) { 9988 styleNode.setAttribute(APPEND_PRIORITY, "".concat(priority)); 9989 } 9990 if (csp !== null && csp !== void 0 && csp.nonce) { 9991 styleNode.nonce = csp === null || csp === void 0 ? void 0 : csp.nonce; 9992 } 9993 styleNode.innerHTML = css; 9994 var container = getContainer(option); 9995 var firstChild = container.firstChild; 9996 if (prepend) { 9997 // If is queue `prepend`, it will prepend first style and then append rest style 9998 if (isPrependQueue) { 9999 var existStyle = (option.styles || findStyles(container)).filter(function (node) { 10000 // Ignore style which not injected by rc-util with prepend 10001 if (!['prepend', 'prependQueue'].includes(node.getAttribute(APPEND_ORDER))) { 10002 return false; 10003 } 10004 10005 // Ignore style which priority less then new style 10006 var nodePriority = Number(node.getAttribute(APPEND_PRIORITY) || 0); 10007 return priority >= nodePriority; 10008 }); 10009 if (existStyle.length) { 10010 container.insertBefore(styleNode, existStyle[existStyle.length - 1].nextSibling); 10011 return styleNode; 10012 } 10013 } 10014 10015 // Use `insertBefore` as `prepend` 10016 container.insertBefore(styleNode, firstChild); 10017 } else { 10018 container.appendChild(styleNode); 10019 } 10020 return styleNode; 10021} 10022function findExistNode(key) { 10023 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 10024 var container = getContainer(option); 10025 return (option.styles || findStyles(container)).find(function (node) { 10026 return node.getAttribute(getMark(option)) === key; 10027 }); 10028} 10029function removeCSS(key) { 10030 var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 10031 var existNode = findExistNode(key, option); 10032 if (existNode) { 10033 var container = getContainer(option); 10034 container.removeChild(existNode); 10035 } 10036} 10037 10038/** 10039 * qiankun will inject `appendChild` to insert into other 10040 */ 10041function syncRealContainer(container, option) { 10042 var cachedRealContainer = containerCache.get(container); 10043 10044 // Find real container when not cached or cached container removed 10045 if (!cachedRealContainer || !(0,_contains__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(document, cachedRealContainer)) { 10046 var placeholderStyle = injectCSS('', option); 10047 var parentNode = placeholderStyle.parentNode; 10048 containerCache.set(container, parentNode); 10049 container.removeChild(placeholderStyle); 10050 } 10051} 10052 10053/** 10054 * manually clear container cache to avoid global cache in unit testes 10055 */ 10056function clearContainerCache() { 10057 containerCache.clear(); 10058} 10059function updateCSS(css, key) { 10060 var originOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 10061 var container = getContainer(originOption); 10062 var styles = findStyles(container); 10063 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), {}, { 10064 styles: styles 10065 }); 10066 10067 // Sync real parent 10068 syncRealContainer(container, option); 10069 var existNode = findExistNode(key, option); 10070 if (existNode) { 10071 var _option$csp, _option$csp2; 10072 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)) { 10073 var _option$csp3; 10074 existNode.nonce = (_option$csp3 = option.csp) === null || _option$csp3 === void 0 ? void 0 : _option$csp3.nonce; 10075 } 10076 if (existNode.innerHTML !== css) { 10077 existNode.innerHTML = css; 10078 } 10079 return existNode; 10080 } 10081 var newNode = injectCSS(css, option); 10082 newNode.setAttribute(getMark(option), key); 10083 return newNode; 10084} 10085 10086/***/ }), 10087 10088/***/ 66318: 10089/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 10090 10091"use strict"; 10092/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10093/* harmony export */ A: () => (/* binding */ useWatch) 10094/* harmony export */ }); 10095/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75153); 10096/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(84238); 10097/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61225); 10098 10099 10100 10101function useWatch(open, target, popup, onAlign, onScroll) { 10102 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(function () { 10103 if (open && target && popup) { 10104 var targetElement = target; 10105 var popupElement = popup; 10106 var targetScrollList = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .collectScroller */ .TK)(targetElement); 10107 var popupScrollList = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .collectScroller */ .TK)(popupElement); 10108 var win = (0,_util__WEBPACK_IMPORTED_MODULE_2__/* .getWin */ .D)(popupElement); 10109 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))); 10110 function notifyScroll() { 10111 onAlign(); 10112 onScroll(); 10113 } 10114 mergedList.forEach(function (scroller) { 10115 scroller.addEventListener('scroll', notifyScroll, { 10116 passive: true 10117 }); 10118 }); 10119 win.addEventListener('resize', notifyScroll, { 10120 passive: true 10121 }); 10122 10123 // First time always do align 10124 onAlign(); 10125 return function () { 10126 mergedList.forEach(function (scroller) { 10127 scroller.removeEventListener('scroll', notifyScroll); 10128 win.removeEventListener('resize', notifyScroll); 10129 }); 10130 }; 10131 } 10132 }, [open, target, popup]); 10133} 10134 10135/***/ }), 10136 10137/***/ 67399: 10138/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 10139 10140"use strict"; 10141/* harmony export */ __webpack_require__.d(__webpack_exports__, { 10142/* harmony export */ Ay: () => (/* binding */ na) 10143/* harmony export */ }); 10144/* unused harmony exports errorCodes, get, isValid, parse */
vendor: 188,960 bytes, lines 10145-20145
10145function U(e) { 10146 return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; 10147} 10148var C, F; 10149function $() { 10150 if (F) return C; 10151 F = 1; 10152 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 = { 10153 overflow: "Overflow: input needs wider integers to process", 10154 "not-basic": "Illegal input >= 0x80 (not a basic code point)", 10155 "invalid-input": "Invalid input" 10156 }, _ = s - c, h = Math.floor, I = String.fromCharCode; 10157 function v(a) { 10158 throw new RangeError(P[a]); 10159 } 10160 function V(a, i) { 10161 const m = []; 10162 let n = a.length; 10163 for (; n--; ) 10164 m[n] = i(a[n]); 10165 return m; 10166 } 10167 function L(a, i) { 10168 const m = a.split("@"); 10169 let n = ""; 10170 m.length > 1 && (n = m[0] + "@", a = m[1]), a = a.replace(R, "."); 10171 const r = a.split("."), p = V(r, i).join("."); 10172 return n + p; 10173 } 10174 function S(a) { 10175 const i = []; 10176 let m = 0; 10177 const n = a.length; 10178 for (; m < n; ) { 10179 const r = a.charCodeAt(m++); 10180 if (r >= 55296 && r <= 56319 && m < n) { 10181 const p = a.charCodeAt(m++); 10182 (p & 64512) == 56320 ? i.push(((r & 1023) << 10) + (p & 1023) + 65536) : (i.push(r), m--); 10183 } else 10184 i.push(r); 10185 } 10186 return i; 10187 } 10188 const G = (a) => String.fromCodePoint(...a), W = function(a) { 10189 return a >= 48 && a < 58 ? 26 + (a - 48) : a >= 65 && a < 91 ? a - 65 : a >= 97 && a < 123 ? a - 97 : s; 10190 }, D = function(a, i) { 10191 return a + 22 + 75 * (a < 26) - ((i != 0) << 5); 10192 }, T = function(a, i, m) { 10193 let n = 0; 10194 for (a = m ? h(a / d) : a >> 1, a += h(a / i); a > _ * o >> 1; n += s) 10195 a = h(a / _); 10196 return h(n + (_ + 1) * a / (a + t)); 10197 }, E = function(a) { 10198 const i = [], m = a.length; 10199 let n = 0, r = y, p = z, j = a.lastIndexOf(g); 10200 j < 0 && (j = 0); 10201 for (let u = 0; u < j; ++u) 10202 a.charCodeAt(u) >= 128 && v("not-basic"), i.push(a.charCodeAt(u)); 10203 for (let u = j > 0 ? j + 1 : 0; u < m; ) { 10204 const k = n; 10205 for (let l = 1, b = s; ; b += s) { 10206 u >= m && v("invalid-input"); 10207 const w = W(a.charCodeAt(u++)); 10208 w >= s && v("invalid-input"), w > h((e - n) / l) && v("overflow"), n += w * l; 10209 const x = b <= p ? c : b >= p + o ? o : b - p; 10210 if (w < x) 10211 break; 10212 const q = s - x; 10213 l > h(e / q) && v("overflow"), l *= q; 10214 } 10215 const f = i.length + 1; 10216 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); 10217 } 10218 return String.fromCodePoint(...i); 10219 }, B = function(a) { 10220 const i = []; 10221 a = S(a); 10222 const m = a.length; 10223 let n = y, r = 0, p = z; 10224 for (const k of a) 10225 k < 128 && i.push(I(k)); 10226 const j = i.length; 10227 let u = j; 10228 for (j && i.push(g); u < m; ) { 10229 let k = e; 10230 for (const l of a) 10231 l >= n && l < k && (k = l); 10232 const f = u + 1; 10233 k - n > h((e - r) / f) && v("overflow"), r += (k - n) * f, n = k; 10234 for (const l of a) 10235 if (l < n && ++r > e && v("overflow"), l === n) { 10236 let b = r; 10237 for (let w = s; ; w += s) { 10238 const x = w <= p ? c : w >= p + o ? o : w - p; 10239 if (b < x) 10240 break; 10241 const q = b - x, M = s - x; 10242 i.push( 10243 I(D(x + q % M, 0)) 10244 ), b = h(q / M); 10245 } 10246 i.push(I(D(b, 0))), p = T(r, f, u === j), r = 0, ++u; 10247 } 10248 ++r, ++n; 10249 } 10250 return i.join(""); 10251 }; 10252 return C = { 10253 /** 10254 * A string representing the current Punycode.js version number. 10255 * @memberOf punycode 10256 * @type String 10257 */ 10258 version: "2.3.1", 10259 /** 10260 * An object of methods to convert from JavaScript's internal character 10261 * representation (UCS-2) to Unicode code points, and back. 10262 * @see <https://mathiasbynens.be/notes/javascript-encoding> 10263 * @memberOf punycode 10264 * @type Object 10265 */ 10266 ucs2: { 10267 decode: S, 10268 encode: G 10269 }, 10270 decode: E, 10271 encode: B, 10272 toASCII: function(a) { 10273 return L(a, function(i) { 10274 return N.test(i) ? "xn--" + B(i) : i; 10275 }); 10276 }, 10277 toUnicode: function(a) { 10278 return L(a, function(i) { 10279 return H.test(i) ? E(i.slice(4).toLowerCase()) : i; 10280 }); 10281 } 10282 }, C; 10283} 10284var J = $(); 10285const A = /* @__PURE__ */ U(J), K = [ 10286 "ac", 10287 "com.ac", 10288 "edu.ac", 10289 "gov.ac", 10290 "mil.ac", 10291 "net.ac", 10292 "org.ac", 10293 "ad", 10294 "ae", 10295 "ac.ae", 10296 "co.ae", 10297 "gov.ae", 10298 "mil.ae", 10299 "net.ae", 10300 "org.ae", 10301 "sch.ae", 10302 "aero", 10303 "airline.aero", 10304 "airport.aero", 10305 "accident-investigation.aero", 10306 "accident-prevention.aero", 10307 "aerobatic.aero", 10308 "aeroclub.aero", 10309 "aerodrome.aero", 10310 "agents.aero", 10311 "air-surveillance.aero", 10312 "air-traffic-control.aero", 10313 "aircraft.aero", 10314 "airtraffic.aero", 10315 "ambulance.aero", 10316 "association.aero", 10317 "author.aero", 10318 "ballooning.aero", 10319 "broker.aero", 10320 "caa.aero", 10321 "cargo.aero", 10322 "catering.aero", 10323 "certification.aero", 10324 "championship.aero", 10325 "charter.aero", 10326 "civilaviation.aero", 10327 "club.aero", 10328 "conference.aero", 10329 "consultant.aero", 10330 "consulting.aero", 10331 "control.aero", 10332 "council.aero", 10333 "crew.aero", 10334 "design.aero", 10335 "dgca.aero", 10336 "educator.aero", 10337 "emergency.aero", 10338 "engine.aero", 10339 "engineer.aero", 10340 "entertainment.aero", 10341 "equipment.aero", 10342 "exchange.aero", 10343 "express.aero", 10344 "federation.aero", 10345 "flight.aero", 10346 "freight.aero", 10347 "fuel.aero", 10348 "gliding.aero", 10349 "government.aero", 10350 "groundhandling.aero", 10351 "group.aero", 10352 "hanggliding.aero", 10353 "homebuilt.aero", 10354 "insurance.aero", 10355 "journal.aero", 10356 "journalist.aero", 10357 "leasing.aero", 10358 "logistics.aero", 10359 "magazine.aero", 10360 "maintenance.aero", 10361 "marketplace.aero", 10362 "media.aero", 10363 "microlight.aero", 10364 "modelling.aero", 10365 "navigation.aero", 10366 "parachuting.aero", 10367 "paragliding.aero", 10368 "passenger-association.aero", 10369 "pilot.aero", 10370 "press.aero", 10371 "production.aero", 10372 "recreation.aero", 10373 "repbody.aero", 10374 "res.aero", 10375 "research.aero", 10376 "rotorcraft.aero", 10377 "safety.aero", 10378 "scientist.aero", 10379 "services.aero", 10380 "show.aero", 10381 "skydiving.aero", 10382 "software.aero", 10383 "student.aero", 10384 "taxi.aero", 10385 "trader.aero", 10386 "trading.aero", 10387 "trainer.aero", 10388 "union.aero", 10389 "workinggroup.aero", 10390 "works.aero", 10391 "af", 10392 "com.af", 10393 "edu.af", 10394 "gov.af", 10395 "net.af", 10396 "org.af", 10397 "ag", 10398 "co.ag", 10399 "com.ag", 10400 "net.ag", 10401 "nom.ag", 10402 "org.ag", 10403 "ai", 10404 "com.ai", 10405 "net.ai", 10406 "off.ai", 10407 "org.ai", 10408 "al", 10409 "com.al", 10410 "edu.al", 10411 "gov.al", 10412 "mil.al", 10413 "net.al", 10414 "org.al", 10415 "am", 10416 "co.am", 10417 "com.am", 10418 "commune.am", 10419 "net.am", 10420 "org.am", 10421 "ao", 10422 "co.ao", 10423 "ed.ao", 10424 "edu.ao", 10425 "gov.ao", 10426 "gv.ao", 10427 "it.ao", 10428 "og.ao", 10429 "org.ao", 10430 "pb.ao", 10431 "aq", 10432 "ar", 10433 "bet.ar", 10434 "com.ar", 10435 "coop.ar", 10436 "edu.ar", 10437 "gob.ar", 10438 "gov.ar", 10439 "int.ar", 10440 "mil.ar", 10441 "musica.ar", 10442 "mutual.ar", 10443 "net.ar", 10444 "org.ar", 10445 "senasa.ar", 10446 "tur.ar", 10447 "arpa", 10448 "e164.arpa", 10449 "home.arpa", 10450 "in-addr.arpa", 10451 "ip6.arpa", 10452 "iris.arpa", 10453 "uri.arpa", 10454 "urn.arpa", 10455 "as", 10456 "gov.as", 10457 "asia", 10458 "at", 10459 "ac.at", 10460 "sth.ac.at", 10461 "co.at", 10462 "gv.at", 10463 "or.at", 10464 "au", 10465 "asn.au", 10466 "com.au", 10467 "edu.au", 10468 "gov.au", 10469 "id.au", 10470 "net.au", 10471 "org.au", 10472 "conf.au", 10473 "oz.au", 10474 "act.au", 10475 "nsw.au", 10476 "nt.au", 10477 "qld.au", 10478 "sa.au", 10479 "tas.au", 10480 "vic.au", 10481 "wa.au", 10482 "act.edu.au", 10483 "catholic.edu.au", 10484 "nsw.edu.au", 10485 "nt.edu.au", 10486 "qld.edu.au", 10487 "sa.edu.au", 10488 "tas.edu.au", 10489 "vic.edu.au", 10490 "wa.edu.au", 10491 "qld.gov.au", 10492 "sa.gov.au", 10493 "tas.gov.au", 10494 "vic.gov.au", 10495 "wa.gov.au", 10496 "schools.nsw.edu.au", 10497 "aw", 10498 "com.aw", 10499 "ax", 10500 "az", 10501 "biz.az", 10502 "com.az", 10503 "edu.az", 10504 "gov.az", 10505 "info.az", 10506 "int.az", 10507 "mil.az", 10508 "name.az", 10509 "net.az", 10510 "org.az", 10511 "pp.az", 10512 "pro.az", 10513 "ba", 10514 "com.ba", 10515 "edu.ba", 10516 "gov.ba", 10517 "mil.ba", 10518 "net.ba", 10519 "org.ba", 10520 "bb", 10521 "biz.bb", 10522 "co.bb", 10523 "com.bb", 10524 "edu.bb", 10525 "gov.bb", 10526 "info.bb", 10527 "net.bb", 10528 "org.bb", 10529 "store.bb", 10530 "tv.bb", 10531 "*.bd", 10532 "be", 10533 "ac.be", 10534 "bf", 10535 "gov.bf", 10536 "bg", 10537 "0.bg", 10538 "1.bg", 10539 "2.bg", 10540 "3.bg", 10541 "4.bg", 10542 "5.bg", 10543 "6.bg", 10544 "7.bg", 10545 "8.bg", 10546 "9.bg", 10547 "a.bg", 10548 "b.bg", 10549 "c.bg", 10550 "d.bg", 10551 "e.bg", 10552 "f.bg", 10553 "g.bg", 10554 "h.bg", 10555 "i.bg", 10556 "j.bg", 10557 "k.bg", 10558 "l.bg", 10559 "m.bg", 10560 "n.bg", 10561 "o.bg", 10562 "p.bg", 10563 "q.bg", 10564 "r.bg", 10565 "s.bg", 10566 "t.bg", 10567 "u.bg", 10568 "v.bg", 10569 "w.bg", 10570 "x.bg", 10571 "y.bg", 10572 "z.bg", 10573 "bh", 10574 "com.bh", 10575 "edu.bh", 10576 "gov.bh", 10577 "net.bh", 10578 "org.bh", 10579 "bi", 10580 "co.bi", 10581 "com.bi", 10582 "edu.bi", 10583 "or.bi", 10584 "org.bi", 10585 "biz", 10586 "bj", 10587 "africa.bj", 10588 "agro.bj", 10589 "architectes.bj", 10590 "assur.bj", 10591 "avocats.bj", 10592 "co.bj", 10593 "com.bj", 10594 "eco.bj", 10595 "econo.bj", 10596 "edu.bj", 10597 "info.bj", 10598 "loisirs.bj", 10599 "money.bj", 10600 "net.bj", 10601 "org.bj", 10602 "ote.bj", 10603 "restaurant.bj", 10604 "resto.bj", 10605 "tourism.bj", 10606 "univ.bj", 10607 "bm", 10608 "com.bm", 10609 "edu.bm", 10610 "gov.bm", 10611 "net.bm", 10612 "org.bm", 10613 "bn", 10614 "com.bn", 10615 "edu.bn", 10616 "gov.bn", 10617 "net.bn", 10618 "org.bn", 10619 "bo", 10620 "com.bo", 10621 "edu.bo", 10622 "gob.bo", 10623 "int.bo", 10624 "mil.bo", 10625 "net.bo", 10626 "org.bo", 10627 "tv.bo", 10628 "web.bo", 10629 "academia.bo", 10630 "agro.bo", 10631 "arte.bo", 10632 "blog.bo", 10633 "bolivia.bo", 10634 "ciencia.bo", 10635 "cooperativa.bo", 10636 "democracia.bo", 10637 "deporte.bo", 10638 "ecologia.bo", 10639 "economia.bo", 10640 "empresa.bo", 10641 "indigena.bo", 10642 "industria.bo", 10643 "info.bo", 10644 "medicina.bo", 10645 "movimiento.bo", 10646 "musica.bo", 10647 "natural.bo", 10648 "nombre.bo", 10649 "noticias.bo", 10650 "patria.bo", 10651 "plurinacional.bo", 10652 "politica.bo", 10653 "profesional.bo", 10654 "pueblo.bo", 10655 "revista.bo", 10656 "salud.bo", 10657 "tecnologia.bo", 10658 "tksat.bo", 10659 "transporte.bo", 10660 "wiki.bo", 10661 "br", 10662 "9guacu.br", 10663 "abc.br", 10664 "adm.br", 10665 "adv.br", 10666 "agr.br", 10667 "aju.br", 10668 "am.br", 10669 "anani.br", 10670 "aparecida.br", 10671 "app.br", 10672 "arq.br", 10673 "art.br", 10674 "ato.br", 10675 "b.br", 10676 "barueri.br", 10677 "belem.br", 10678 "bet.br", 10679 "bhz.br", 10680 "bib.br", 10681 "bio.br", 10682 "blog.br", 10683 "bmd.br", 10684 "boavista.br", 10685 "bsb.br", 10686 "campinagrande.br", 10687 "campinas.br", 10688 "caxias.br", 10689 "cim.br", 10690 "cng.br", 10691 "cnt.br", 10692 "com.br", 10693 "contagem.br", 10694 "coop.br", 10695 "coz.br", 10696 "cri.br", 10697 "cuiaba.br", 10698 "curitiba.br", 10699 "def.br", 10700 "des.br", 10701 "det.br", 10702 "dev.br", 10703 "ecn.br", 10704 "eco.br", 10705 "edu.br", 10706 "emp.br", 10707 "enf.br", 10708 "eng.br", 10709 "esp.br", 10710 "etc.br", 10711 "eti.br", 10712 "far.br", 10713 "feira.br", 10714 "flog.br", 10715 "floripa.br", 10716 "fm.br", 10717 "fnd.br", 10718 "fortal.br", 10719 "fot.br", 10720 "foz.br", 10721 "fst.br", 10722 "g12.br", 10723 "geo.br", 10724 "ggf.br", 10725 "goiania.br", 10726 "gov.br", 10727 "ac.gov.br", 10728 "al.gov.br", 10729 "am.gov.br", 10730 "ap.gov.br", 10731 "ba.gov.br", 10732 "ce.gov.br", 10733 "df.gov.br", 10734 "es.gov.br", 10735 "go.gov.br", 10736 "ma.gov.br", 10737 "mg.gov.br", 10738 "ms.gov.br", 10739 "mt.gov.br", 10740 "pa.gov.br", 10741 "pb.gov.br", 10742 "pe.gov.br", 10743 "pi.gov.br", 10744 "pr.gov.br", 10745 "rj.gov.br", 10746 "rn.gov.br", 10747 "ro.gov.br", 10748 "rr.gov.br", 10749 "rs.gov.br", 10750 "sc.gov.br", 10751 "se.gov.br", 10752 "sp.gov.br", 10753 "to.gov.br", 10754 "gru.br", 10755 "imb.br", 10756 "ind.br", 10757 "inf.br", 10758 "jab.br", 10759 "jampa.br", 10760 "jdf.br", 10761 "joinville.br", 10762 "jor.br", 10763 "jus.br", 10764 "leg.br", 10765 "leilao.br", 10766 "lel.br", 10767 "log.br", 10768 "londrina.br", 10769 "macapa.br", 10770 "maceio.br", 10771 "manaus.br", 10772 "maringa.br", 10773 "mat.br", 10774 "med.br", 10775 "mil.br", 10776 "morena.br", 10777 "mp.br", 10778 "mus.br", 10779 "natal.br", 10780 "net.br", 10781 "niteroi.br", 10782 "*.nom.br", 10783 "not.br", 10784 "ntr.br", 10785 "odo.br", 10786 "ong.br", 10787 "org.br", 10788 "osasco.br", 10789 "palmas.br", 10790 "poa.br", 10791 "ppg.br", 10792 "pro.br", 10793 "psc.br", 10794 "psi.br", 10795 "pvh.br", 10796 "qsl.br", 10797 "radio.br", 10798 "rec.br", 10799 "recife.br", 10800 "rep.br", 10801 "ribeirao.br", 10802 "rio.br", 10803 "riobranco.br", 10804 "riopreto.br", 10805 "salvador.br", 10806 "sampa.br", 10807 "santamaria.br", 10808 "santoandre.br", 10809 "saobernardo.br", 10810 "saogonca.br", 10811 "seg.br", 10812 "sjc.br", 10813 "slg.br", 10814 "slz.br", 10815 "sorocaba.br", 10816 "srv.br", 10817 "taxi.br", 10818 "tc.br", 10819 "tec.br", 10820 "teo.br", 10821 "the.br", 10822 "tmp.br", 10823 "trd.br", 10824 "tur.br", 10825 "tv.br", 10826 "udi.br", 10827 "vet.br", 10828 "vix.br", 10829 "vlog.br", 10830 "wiki.br", 10831 "zlg.br", 10832 "bs", 10833 "com.bs", 10834 "edu.bs", 10835 "gov.bs", 10836 "net.bs", 10837 "org.bs", 10838 "bt", 10839 "com.bt", 10840 "edu.bt", 10841 "gov.bt", 10842 "net.bt", 10843 "org.bt", 10844 "bv", 10845 "bw", 10846 "co.bw", 10847 "org.bw", 10848 "by", 10849 "gov.by", 10850 "mil.by", 10851 "com.by", 10852 "of.by", 10853 "bz", 10854 "co.bz", 10855 "com.bz", 10856 "edu.bz", 10857 "gov.bz", 10858 "net.bz", 10859 "org.bz", 10860 "ca", 10861 "ab.ca", 10862 "bc.ca", 10863 "mb.ca", 10864 "nb.ca", 10865 "nf.ca", 10866 "nl.ca", 10867 "ns.ca", 10868 "nt.ca", 10869 "nu.ca", 10870 "on.ca", 10871 "pe.ca", 10872 "qc.ca", 10873 "sk.ca", 10874 "yk.ca", 10875 "gc.ca", 10876 "cat", 10877 "cc", 10878 "cd", 10879 "gov.cd", 10880 "cf", 10881 "cg", 10882 "ch", 10883 "ci", 10884 "ac.ci", 10885 "aéroport.ci", 10886 "asso.ci", 10887 "co.ci", 10888 "com.ci", 10889 "ed.ci", 10890 "edu.ci", 10891 "go.ci", 10892 "gouv.ci", 10893 "int.ci", 10894 "net.ci", 10895 "or.ci", 10896 "org.ci", 10897 "*.ck", 10898 "!www.ck", 10899 "cl", 10900 "co.cl", 10901 "gob.cl", 10902 "gov.cl", 10903 "mil.cl", 10904 "cm", 10905 "co.cm", 10906 "com.cm", 10907 "gov.cm", 10908 "net.cm", 10909 "cn", 10910 "ac.cn", 10911 "com.cn", 10912 "edu.cn", 10913 "gov.cn", 10914 "mil.cn", 10915 "net.cn", 10916 "org.cn", 10917 "å ¬å¸.cn", 10918 "網絡.cn", 10919 "ç½ç».cn", 10920 "ah.cn", 10921 "bj.cn", 10922 "cq.cn", 10923 "fj.cn", 10924 "gd.cn", 10925 "gs.cn", 10926 "gx.cn", 10927 "gz.cn", 10928 "ha.cn", 10929 "hb.cn", 10930 "he.cn", 10931 "hi.cn", 10932 "hk.cn", 10933 "hl.cn", 10934 "hn.cn", 10935 "jl.cn", 10936 "js.cn", 10937 "jx.cn", 10938 "ln.cn", 10939 "mo.cn", 10940 "nm.cn", 10941 "nx.cn", 10942 "qh.cn", 10943 "sc.cn", 10944 "sd.cn", 10945 "sh.cn", 10946 "sn.cn", 10947 "sx.cn", 10948 "tj.cn", 10949 "tw.cn", 10950 "xj.cn", 10951 "xz.cn", 10952 "yn.cn", 10953 "zj.cn", 10954 "co", 10955 "com.co", 10956 "edu.co", 10957 "gov.co", 10958 "mil.co", 10959 "net.co", 10960 "nom.co", 10961 "org.co", 10962 "com", 10963 "coop", 10964 "cr", 10965 "ac.cr", 10966 "co.cr", 10967 "ed.cr", 10968 "fi.cr", 10969 "go.cr", 10970 "or.cr", 10971 "sa.cr", 10972 "cu", 10973 "com.cu", 10974 "edu.cu", 10975 "gob.cu", 10976 "inf.cu", 10977 "nat.cu", 10978 "net.cu", 10979 "org.cu", 10980 "cv", 10981 "com.cv", 10982 "edu.cv", 10983 "id.cv", 10984 "int.cv", 10985 "net.cv", 10986 "nome.cv", 10987 "org.cv", 10988 "publ.cv", 10989 "cw", 10990 "com.cw", 10991 "edu.cw", 10992 "net.cw", 10993 "org.cw", 10994 "cx", 10995 "gov.cx", 10996 "cy", 10997 "ac.cy", 10998 "biz.cy", 10999 "com.cy", 11000 "ekloges.cy", 11001 "gov.cy", 11002 "ltd.cy", 11003 "mil.cy", 11004 "net.cy", 11005 "org.cy", 11006 "press.cy", 11007 "pro.cy", 11008 "tm.cy", 11009 "cz", 11010 "de", 11011 "dj", 11012 "dk", 11013 "dm", 11014 "co.dm", 11015 "com.dm", 11016 "edu.dm", 11017 "gov.dm", 11018 "net.dm", 11019 "org.dm", 11020 "do", 11021 "art.do", 11022 "com.do", 11023 "edu.do", 11024 "gob.do", 11025 "gov.do", 11026 "mil.do", 11027 "net.do", 11028 "org.do", 11029 "sld.do", 11030 "web.do", 11031 "dz", 11032 "art.dz", 11033 "asso.dz", 11034 "com.dz", 11035 "edu.dz", 11036 "gov.dz", 11037 "net.dz", 11038 "org.dz", 11039 "pol.dz", 11040 "soc.dz", 11041 "tm.dz", 11042 "ec", 11043 "com.ec", 11044 "edu.ec", 11045 "fin.ec", 11046 "gob.ec", 11047 "gov.ec", 11048 "info.ec", 11049 "k12.ec", 11050 "med.ec", 11051 "mil.ec", 11052 "net.ec", 11053 "org.ec", 11054 "pro.ec", 11055 "edu", 11056 "ee", 11057 "aip.ee", 11058 "com.ee", 11059 "edu.ee", 11060 "fie.ee", 11061 "gov.ee", 11062 "lib.ee", 11063 "med.ee", 11064 "org.ee", 11065 "pri.ee", 11066 "riik.ee", 11067 "eg", 11068 "ac.eg", 11069 "com.eg", 11070 "edu.eg", 11071 "eun.eg", 11072 "gov.eg", 11073 "info.eg", 11074 "me.eg", 11075 "mil.eg", 11076 "name.eg", 11077 "net.eg", 11078 "org.eg", 11079 "sci.eg", 11080 "sport.eg", 11081 "tv.eg", 11082 "*.er", 11083 "es", 11084 "com.es", 11085 "edu.es", 11086 "gob.es", 11087 "nom.es", 11088 "org.es", 11089 "et", 11090 "biz.et", 11091 "com.et", 11092 "edu.et", 11093 "gov.et", 11094 "info.et", 11095 "name.et", 11096 "net.et", 11097 "org.et", 11098 "eu", 11099 "fi", 11100 "aland.fi", 11101 "fj", 11102 "ac.fj", 11103 "biz.fj", 11104 "com.fj", 11105 "gov.fj", 11106 "info.fj", 11107 "mil.fj", 11108 "name.fj", 11109 "net.fj", 11110 "org.fj", 11111 "pro.fj", 11112 "*.fk", 11113 "fm", 11114 "com.fm", 11115 "edu.fm", 11116 "net.fm", 11117 "org.fm", 11118 "fo", 11119 "fr", 11120 "asso.fr", 11121 "com.fr", 11122 "gouv.fr", 11123 "nom.fr", 11124 "prd.fr", 11125 "tm.fr", 11126 "avoues.fr", 11127 "cci.fr", 11128 "greta.fr", 11129 "huissier-justice.fr", 11130 "ga", 11131 "gb", 11132 "gd", 11133 "edu.gd", 11134 "gov.gd", 11135 "ge", 11136 "com.ge", 11137 "edu.ge", 11138 "gov.ge", 11139 "net.ge", 11140 "org.ge", 11141 "pvt.ge", 11142 "school.ge", 11143 "gf", 11144 "gg", 11145 "co.gg", 11146 "net.gg", 11147 "org.gg", 11148 "gh", 11149 "com.gh", 11150 "edu.gh", 11151 "gov.gh", 11152 "mil.gh", 11153 "org.gh", 11154 "gi", 11155 "com.gi", 11156 "edu.gi", 11157 "gov.gi", 11158 "ltd.gi", 11159 "mod.gi", 11160 "org.gi", 11161 "gl", 11162 "co.gl", 11163 "com.gl", 11164 "edu.gl", 11165 "net.gl", 11166 "org.gl", 11167 "gm", 11168 "gn", 11169 "ac.gn", 11170 "com.gn", 11171 "edu.gn", 11172 "gov.gn", 11173 "net.gn", 11174 "org.gn", 11175 "gov", 11176 "gp", 11177 "asso.gp", 11178 "com.gp", 11179 "edu.gp", 11180 "mobi.gp", 11181 "net.gp", 11182 "org.gp", 11183 "gq", 11184 "gr", 11185 "com.gr", 11186 "edu.gr", 11187 "gov.gr", 11188 "net.gr", 11189 "org.gr", 11190 "gs", 11191 "gt", 11192 "com.gt", 11193 "edu.gt", 11194 "gob.gt", 11195 "ind.gt", 11196 "mil.gt", 11197 "net.gt", 11198 "org.gt", 11199 "gu", 11200 "com.gu", 11201 "edu.gu", 11202 "gov.gu", 11203 "guam.gu", 11204 "info.gu", 11205 "net.gu", 11206 "org.gu", 11207 "web.gu", 11208 "gw", 11209 "gy", 11210 "co.gy", 11211 "com.gy", 11212 "edu.gy", 11213 "gov.gy", 11214 "net.gy", 11215 "org.gy", 11216 "hk", 11217 "com.hk", 11218 "edu.hk", 11219 "gov.hk", 11220 "idv.hk", 11221 "net.hk", 11222 "org.hk", 11223 "个人.hk", 11224 "å人.hk", 11225 "å ¬å¸.hk", 11226 "æ¿åº.hk", 11227 "æè².hk", 11228 "æè².hk", 11229 "ç®äºº.hk", 11230 "çµç¹.hk", 11231 "çµç».hk", 11232 "網絡.hk", 11233 "ç¶²ç».hk", 11234 "ç»ç¹.hk", 11235 "ç»ç».hk", 11236 "ç½çµ¡.hk", 11237 "ç½ç».hk", 11238 "hm", 11239 "hn", 11240 "com.hn", 11241 "edu.hn", 11242 "gob.hn", 11243 "mil.hn", 11244 "net.hn", 11245 "org.hn", 11246 "hr", 11247 "com.hr", 11248 "from.hr", 11249 "iz.hr", 11250 "name.hr", 11251 "ht", 11252 "adult.ht", 11253 "art.ht", 11254 "asso.ht", 11255 "com.ht", 11256 "coop.ht", 11257 "edu.ht", 11258 "firm.ht", 11259 "gouv.ht", 11260 "info.ht", 11261 "med.ht", 11262 "net.ht", 11263 "org.ht", 11264 "perso.ht", 11265 "pol.ht", 11266 "pro.ht", 11267 "rel.ht", 11268 "shop.ht", 11269 "hu", 11270 "2000.hu", 11271 "agrar.hu", 11272 "bolt.hu", 11273 "casino.hu", 11274 "city.hu", 11275 "co.hu", 11276 "erotica.hu", 11277 "erotika.hu", 11278 "film.hu", 11279 "forum.hu", 11280 "games.hu", 11281 "hotel.hu", 11282 "info.hu", 11283 "ingatlan.hu", 11284 "jogasz.hu", 11285 "konyvelo.hu", 11286 "lakas.hu", 11287 "media.hu", 11288 "news.hu", 11289 "org.hu", 11290 "priv.hu", 11291 "reklam.hu", 11292 "sex.hu", 11293 "shop.hu", 11294 "sport.hu", 11295 "suli.hu", 11296 "szex.hu", 11297 "tm.hu", 11298 "tozsde.hu", 11299 "utazas.hu", 11300 "video.hu", 11301 "id", 11302 "ac.id", 11303 "biz.id", 11304 "co.id", 11305 "desa.id", 11306 "go.id", 11307 "mil.id", 11308 "my.id", 11309 "net.id", 11310 "or.id", 11311 "ponpes.id", 11312 "sch.id", 11313 "web.id", 11314 "ie", 11315 "gov.ie", 11316 "il", 11317 "ac.il", 11318 "co.il", 11319 "gov.il", 11320 "idf.il", 11321 "k12.il", 11322 "muni.il", 11323 "net.il", 11324 "org.il", 11325 "×שר××", 11326 "××§××××.×שר××", 11327 "×ש××.×שר××", 11328 "צ××.×שר××", 11329 "××ש×.×שר××", 11330 "im", 11331 "ac.im", 11332 "co.im", 11333 "ltd.co.im", 11334 "plc.co.im", 11335 "com.im", 11336 "net.im", 11337 "org.im", 11338 "tt.im", 11339 "tv.im", 11340 "in", 11341 "5g.in", 11342 "6g.in", 11343 "ac.in", 11344 "ai.in", 11345 "am.in", 11346 "bihar.in", 11347 "biz.in", 11348 "business.in", 11349 "ca.in", 11350 "cn.in", 11351 "co.in", 11352 "com.in", 11353 "coop.in", 11354 "cs.in", 11355 "delhi.in", 11356 "dr.in", 11357 "edu.in", 11358 "er.in", 11359 "firm.in", 11360 "gen.in", 11361 "gov.in", 11362 "gujarat.in", 11363 "ind.in", 11364 "info.in", 11365 "int.in", 11366 "internet.in", 11367 "io.in", 11368 "me.in", 11369 "mil.in", 11370 "net.in", 11371 "nic.in", 11372 "org.in", 11373 "pg.in", 11374 "post.in", 11375 "pro.in", 11376 "res.in", 11377 "travel.in", 11378 "tv.in", 11379 "uk.in", 11380 "up.in", 11381 "us.in", 11382 "info", 11383 "int", 11384 "eu.int", 11385 "io", 11386 "co.io", 11387 "com.io", 11388 "edu.io", 11389 "gov.io", 11390 "mil.io", 11391 "net.io", 11392 "nom.io", 11393 "org.io", 11394 "iq", 11395 "com.iq", 11396 "edu.iq", 11397 "gov.iq", 11398 "mil.iq", 11399 "net.iq", 11400 "org.iq", 11401 "ir", 11402 "ac.ir", 11403 "co.ir", 11404 "gov.ir", 11405 "id.ir", 11406 "net.ir", 11407 "org.ir", 11408 "sch.ir", 11409 "Ø§ÛØ±Ø§Ù.ir", 11410 "Ø§ÙØ±Ø§Ù.ir", 11411 "is", 11412 "it", 11413 "edu.it", 11414 "gov.it", 11415 "abr.it", 11416 "abruzzo.it", 11417 "aosta-valley.it", 11418 "aostavalley.it", 11419 "bas.it", 11420 "basilicata.it", 11421 "cal.it", 11422 "calabria.it", 11423 "cam.it", 11424 "campania.it", 11425 "emilia-romagna.it", 11426 "emiliaromagna.it", 11427 "emr.it", 11428 "friuli-v-giulia.it", 11429 "friuli-ve-giulia.it", 11430 "friuli-vegiulia.it", 11431 "friuli-venezia-giulia.it", 11432 "friuli-veneziagiulia.it", 11433 "friuli-vgiulia.it", 11434 "friuliv-giulia.it", 11435 "friulive-giulia.it", 11436 "friulivegiulia.it", 11437 "friulivenezia-giulia.it", 11438 "friuliveneziagiulia.it", 11439 "friulivgiulia.it", 11440 "fvg.it", 11441 "laz.it", 11442 "lazio.it", 11443 "lig.it", 11444 "liguria.it", 11445 "lom.it", 11446 "lombardia.it", 11447 "lombardy.it", 11448 "lucania.it", 11449 "mar.it", 11450 "marche.it", 11451 "mol.it", 11452 "molise.it", 11453 "piedmont.it", 11454 "piemonte.it", 11455 "pmn.it", 11456 "pug.it", 11457 "puglia.it", 11458 "sar.it", 11459 "sardegna.it", 11460 "sardinia.it", 11461 "sic.it", 11462 "sicilia.it", 11463 "sicily.it", 11464 "taa.it", 11465 "tos.it", 11466 "toscana.it", 11467 "trentin-sud-tirol.it", 11468 "trentin-süd-tirol.it", 11469 "trentin-sudtirol.it", 11470 "trentin-südtirol.it", 11471 "trentin-sued-tirol.it", 11472 "trentin-suedtirol.it", 11473 "trentino.it", 11474 "trentino-a-adige.it", 11475 "trentino-aadige.it", 11476 "trentino-alto-adige.it", 11477 "trentino-altoadige.it", 11478 "trentino-s-tirol.it", 11479 "trentino-stirol.it", 11480 "trentino-sud-tirol.it", 11481 "trentino-süd-tirol.it", 11482 "trentino-sudtirol.it", 11483 "trentino-südtirol.it", 11484 "trentino-sued-tirol.it", 11485 "trentino-suedtirol.it", 11486 "trentinoa-adige.it", 11487 "trentinoaadige.it", 11488 "trentinoalto-adige.it", 11489 "trentinoaltoadige.it", 11490 "trentinos-tirol.it", 11491 "trentinostirol.it", 11492 "trentinosud-tirol.it", 11493 "trentinosüd-tirol.it", 11494 "trentinosudtirol.it", 11495 "trentinosüdtirol.it", 11496 "trentinosued-tirol.it", 11497 "trentinosuedtirol.it", 11498 "trentinsud-tirol.it", 11499 "trentinsüd-tirol.it", 11500 "trentinsudtirol.it", 11501 "trentinsüdtirol.it", 11502 "trentinsued-tirol.it", 11503 "trentinsuedtirol.it", 11504 "tuscany.it", 11505 "umb.it", 11506 "umbria.it", 11507 "val-d-aosta.it", 11508 "val-daosta.it", 11509 "vald-aosta.it", 11510 "valdaosta.it", 11511 "valle-aosta.it", 11512 "valle-d-aosta.it", 11513 "valle-daosta.it", 11514 "valleaosta.it", 11515 "valled-aosta.it", 11516 "valledaosta.it", 11517 "vallee-aoste.it", 11518 "vallée-aoste.it", 11519 "vallee-d-aoste.it", 11520 "vallée-d-aoste.it", 11521 "valleeaoste.it", 11522 "valléeaoste.it", 11523 "valleedaoste.it", 11524 "valléedaoste.it", 11525 "vao.it", 11526 "vda.it", 11527 "ven.it", 11528 "veneto.it", 11529 "ag.it", 11530 "agrigento.it", 11531 "al.it", 11532 "alessandria.it", 11533 "alto-adige.it", 11534 "altoadige.it", 11535 "an.it", 11536 "ancona.it", 11537 "andria-barletta-trani.it", 11538 "andria-trani-barletta.it", 11539 "andriabarlettatrani.it", 11540 "andriatranibarletta.it", 11541 "ao.it", 11542 "aosta.it", 11543 "aoste.it", 11544 "ap.it", 11545 "aq.it", 11546 "aquila.it", 11547 "ar.it", 11548 "arezzo.it", 11549 "ascoli-piceno.it", 11550 "ascolipiceno.it", 11551 "asti.it", 11552 "at.it", 11553 "av.it", 11554 "avellino.it", 11555 "ba.it", 11556 "balsan.it", 11557 "balsan-sudtirol.it", 11558 "balsan-südtirol.it", 11559 "balsan-suedtirol.it", 11560 "bari.it", 11561 "barletta-trani-andria.it", 11562 "barlettatraniandria.it", 11563 "belluno.it", 11564 "benevento.it", 11565 "bergamo.it", 11566 "bg.it", 11567 "bi.it", 11568 "biella.it", 11569 "bl.it", 11570 "bn.it", 11571 "bo.it", 11572 "bologna.it", 11573 "bolzano.it", 11574 "bolzano-altoadige.it", 11575 "bozen.it", 11576 "bozen-sudtirol.it", 11577 "bozen-südtirol.it", 11578 "bozen-suedtirol.it", 11579 "br.it", 11580 "brescia.it", 11581 "brindisi.it", 11582 "bs.it", 11583 "bt.it", 11584 "bulsan.it", 11585 "bulsan-sudtirol.it", 11586 "bulsan-südtirol.it", 11587 "bulsan-suedtirol.it", 11588 "bz.it", 11589 "ca.it", 11590 "cagliari.it", 11591 "caltanissetta.it", 11592 "campidano-medio.it", 11593 "campidanomedio.it", 11594 "campobasso.it", 11595 "carbonia-iglesias.it", 11596 "carboniaiglesias.it", 11597 "carrara-massa.it", 11598 "carraramassa.it", 11599 "caserta.it", 11600 "catania.it", 11601 "catanzaro.it", 11602 "cb.it", 11603 "ce.it", 11604 "cesena-forli.it", 11605 "cesena-forlì.it", 11606 "cesenaforli.it", 11607 "cesenaforlì.it", 11608 "ch.it", 11609 "chieti.it", 11610 "ci.it", 11611 "cl.it", 11612 "cn.it", 11613 "co.it", 11614 "como.it", 11615 "cosenza.it", 11616 "cr.it", 11617 "cremona.it", 11618 "crotone.it", 11619 "cs.it", 11620 "ct.it", 11621 "cuneo.it", 11622 "cz.it", 11623 "dell-ogliastra.it", 11624 "dellogliastra.it", 11625 "en.it", 11626 "enna.it", 11627 "fc.it", 11628 "fe.it", 11629 "fermo.it", 11630 "ferrara.it", 11631 "fg.it", 11632 "fi.it", 11633 "firenze.it", 11634 "florence.it", 11635 "fm.it", 11636 "foggia.it", 11637 "forli-cesena.it", 11638 "forlì-cesena.it", 11639 "forlicesena.it", 11640 "forlìcesena.it", 11641 "fr.it", 11642 "frosinone.it", 11643 "ge.it", 11644 "genoa.it", 11645 "genova.it", 11646 "go.it", 11647 "gorizia.it", 11648 "gr.it", 11649 "grosseto.it", 11650 "iglesias-carbonia.it", 11651 "iglesiascarbonia.it", 11652 "im.it", 11653 "imperia.it", 11654 "is.it", 11655 "isernia.it", 11656 "kr.it", 11657 "la-spezia.it", 11658 "laquila.it", 11659 "laspezia.it", 11660 "latina.it", 11661 "lc.it", 11662 "le.it", 11663 "lecce.it", 11664 "lecco.it", 11665 "li.it", 11666 "livorno.it", 11667 "lo.it", 11668 "lodi.it", 11669 "lt.it", 11670 "lu.it", 11671 "lucca.it", 11672 "macerata.it", 11673 "mantova.it", 11674 "massa-carrara.it", 11675 "massacarrara.it", 11676 "matera.it", 11677 "mb.it", 11678 "mc.it", 11679 "me.it", 11680 "medio-campidano.it", 11681 "mediocampidano.it", 11682 "messina.it", 11683 "mi.it", 11684 "milan.it", 11685 "milano.it", 11686 "mn.it", 11687 "mo.it", 11688 "modena.it", 11689 "monza.it", 11690 "monza-brianza.it", 11691 "monza-e-della-brianza.it", 11692 "monzabrianza.it", 11693 "monzaebrianza.it", 11694 "monzaedellabrianza.it", 11695 "ms.it", 11696 "mt.it", 11697 "na.it", 11698 "naples.it", 11699 "napoli.it", 11700 "no.it", 11701 "novara.it", 11702 "nu.it", 11703 "nuoro.it", 11704 "og.it", 11705 "ogliastra.it", 11706 "olbia-tempio.it", 11707 "olbiatempio.it", 11708 "or.it", 11709 "oristano.it", 11710 "ot.it", 11711 "pa.it", 11712 "padova.it", 11713 "padua.it", 11714 "palermo.it", 11715 "parma.it", 11716 "pavia.it", 11717 "pc.it", 11718 "pd.it", 11719 "pe.it", 11720 "perugia.it", 11721 "pesaro-urbino.it", 11722 "pesarourbino.it", 11723 "pescara.it", 11724 "pg.it", 11725 "pi.it", 11726 "piacenza.it", 11727 "pisa.it", 11728 "pistoia.it", 11729 "pn.it", 11730 "po.it", 11731 "pordenone.it", 11732 "potenza.it", 11733 "pr.it", 11734 "prato.it", 11735 "pt.it", 11736 "pu.it", 11737 "pv.it", 11738 "pz.it", 11739 "ra.it", 11740 "ragusa.it", 11741 "ravenna.it", 11742 "rc.it", 11743 "re.it", 11744 "reggio-calabria.it", 11745 "reggio-emilia.it", 11746 "reggiocalabria.it", 11747 "reggioemilia.it", 11748 "rg.it", 11749 "ri.it", 11750 "rieti.it", 11751 "rimini.it", 11752 "rm.it", 11753 "rn.it", 11754 "ro.it", 11755 "roma.it", 11756 "rome.it", 11757 "rovigo.it", 11758 "sa.it", 11759 "salerno.it", 11760 "sassari.it", 11761 "savona.it", 11762 "si.it", 11763 "siena.it", 11764 "siracusa.it", 11765 "so.it", 11766 "sondrio.it", 11767 "sp.it", 11768 "sr.it", 11769 "ss.it", 11770 "südtirol.it", 11771 "suedtirol.it", 11772 "sv.it", 11773 "ta.it", 11774 "taranto.it", 11775 "te.it", 11776 "tempio-olbia.it", 11777 "tempioolbia.it", 11778 "teramo.it", 11779 "terni.it", 11780 "tn.it", 11781 "to.it", 11782 "torino.it", 11783 "tp.it", 11784 "tr.it", 11785 "trani-andria-barletta.it", 11786 "trani-barletta-andria.it", 11787 "traniandriabarletta.it", 11788 "tranibarlettaandria.it", 11789 "trapani.it", 11790 "trento.it", 11791 "treviso.it", 11792 "trieste.it", 11793 "ts.it", 11794 "turin.it", 11795 "tv.it", 11796 "ud.it", 11797 "udine.it", 11798 "urbino-pesaro.it", 11799 "urbinopesaro.it", 11800 "va.it", 11801 "varese.it", 11802 "vb.it", 11803 "vc.it", 11804 "ve.it", 11805 "venezia.it", 11806 "venice.it", 11807 "verbania.it", 11808 "vercelli.it", 11809 "verona.it", 11810 "vi.it", 11811 "vibo-valentia.it", 11812 "vibovalentia.it", 11813 "vicenza.it", 11814 "viterbo.it", 11815 "vr.it", 11816 "vs.it", 11817 "vt.it", 11818 "vv.it", 11819 "je", 11820 "co.je", 11821 "net.je", 11822 "org.je", 11823 "*.jm", 11824 "jo", 11825 "agri.jo", 11826 "ai.jo", 11827 "com.jo", 11828 "edu.jo", 11829 "eng.jo", 11830 "fm.jo", 11831 "gov.jo", 11832 "mil.jo", 11833 "net.jo", 11834 "org.jo", 11835 "per.jo", 11836 "phd.jo", 11837 "sch.jo", 11838 "tv.jo", 11839 "jobs", 11840 "jp", 11841 "ac.jp", 11842 "ad.jp", 11843 "co.jp", 11844 "ed.jp", 11845 "go.jp", 11846 "gr.jp", 11847 "lg.jp", 11848 "ne.jp", 11849 "or.jp", 11850 "aichi.jp", 11851 "akita.jp", 11852 "aomori.jp", 11853 "chiba.jp", 11854 "ehime.jp", 11855 "fukui.jp", 11856 "fukuoka.jp", 11857 "fukushima.jp", 11858 "gifu.jp", 11859 "gunma.jp", 11860 "hiroshima.jp", 11861 "hokkaido.jp", 11862 "hyogo.jp", 11863 "ibaraki.jp", 11864 "ishikawa.jp", 11865 "iwate.jp", 11866 "kagawa.jp", 11867 "kagoshima.jp", 11868 "kanagawa.jp", 11869 "kochi.jp", 11870 "kumamoto.jp", 11871 "kyoto.jp", 11872 "mie.jp", 11873 "miyagi.jp", 11874 "miyazaki.jp", 11875 "nagano.jp", 11876 "nagasaki.jp", 11877 "nara.jp", 11878 "niigata.jp", 11879 "oita.jp", 11880 "okayama.jp", 11881 "okinawa.jp", 11882 "osaka.jp", 11883 "saga.jp", 11884 "saitama.jp", 11885 "shiga.jp", 11886 "shimane.jp", 11887 "shizuoka.jp", 11888 "tochigi.jp", 11889 "tokushima.jp", 11890 "tokyo.jp", 11891 "tottori.jp", 11892 "toyama.jp", 11893 "wakayama.jp", 11894 "yamagata.jp", 11895 "yamaguchi.jp", 11896 "yamanashi.jp", 11897 "ä¸é.jp", 11898 "京é½.jp", 11899 "ä½è³.jp", 11900 "å µåº«.jp", 11901 "åæµ·é.jp", 11902 "åè.jp", 11903 "åæå±±.jp", 11904 "å¼ç.jp", 11905 "大å.jp", 11906 "大éª.jp", 11907 "å¥è¯.jp", 11908 "å®®å.jp", 11909 "å®®å´.jp", 11910 "å¯å±±.jp", 11911 "å±±å£.jp", 11912 "山形.jp", 11913 "山梨.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 "*.kawasaki.jp", 11945 "!city.kawasaki.jp", 11946 "*.kitakyushu.jp", 11947 "!city.kitakyushu.jp", 11948 "*.kobe.jp", 11949 "!city.kobe.jp", 11950 "*.nagoya.jp", 11951 "!city.nagoya.jp", 11952 "*.sapporo.jp", 11953 "!city.sapporo.jp", 11954 "*.sendai.jp", 11955 "!city.sendai.jp", 11956 "*.yokohama.jp", 11957 "!city.yokohama.jp", 11958 "aisai.aichi.jp", 11959 "ama.aichi.jp", 11960 "anjo.aichi.jp", 11961 "asuke.aichi.jp", 11962 "chiryu.aichi.jp", 11963 "chita.aichi.jp", 11964 "fuso.aichi.jp", 11965 "gamagori.aichi.jp", 11966 "handa.aichi.jp", 11967 "hazu.aichi.jp", 11968 "hekinan.aichi.jp", 11969 "higashiura.aichi.jp", 11970 "ichinomiya.aichi.jp", 11971 "inazawa.aichi.jp", 11972 "inuyama.aichi.jp", 11973 "isshiki.aichi.jp", 11974 "iwakura.aichi.jp", 11975 "kanie.aichi.jp", 11976 "kariya.aichi.jp", 11977 "kasugai.aichi.jp", 11978 "kira.aichi.jp", 11979 "kiyosu.aichi.jp", 11980 "komaki.aichi.jp", 11981 "konan.aichi.jp", 11982 "kota.aichi.jp", 11983 "mihama.aichi.jp", 11984 "miyoshi.aichi.jp", 11985 "nishio.aichi.jp", 11986 "nisshin.aichi.jp", 11987 "obu.aichi.jp", 11988 "oguchi.aichi.jp", 11989 "oharu.aichi.jp", 11990 "okazaki.aichi.jp", 11991 "owariasahi.aichi.jp", 11992 "seto.aichi.jp", 11993 "shikatsu.aichi.jp", 11994 "shinshiro.aichi.jp", 11995 "shitara.aichi.jp", 11996 "tahara.aichi.jp", 11997 "takahama.aichi.jp", 11998 "tobishima.aichi.jp", 11999 "toei.aichi.jp", 12000 "togo.aichi.jp", 12001 "tokai.aichi.jp", 12002 "tokoname.aichi.jp", 12003 "toyoake.aichi.jp", 12004 "toyohashi.aichi.jp", 12005 "toyokawa.aichi.jp", 12006 "toyone.aichi.jp", 12007 "toyota.aichi.jp", 12008 "tsushima.aichi.jp", 12009 "yatomi.aichi.jp", 12010 "akita.akita.jp", 12011 "daisen.akita.jp", 12012 "fujisato.akita.jp", 12013 "gojome.akita.jp", 12014 "hachirogata.akita.jp", 12015 "happou.akita.jp", 12016 "higashinaruse.akita.jp", 12017 "honjo.akita.jp", 12018 "honjyo.akita.jp", 12019 "ikawa.akita.jp", 12020 "kamikoani.akita.jp", 12021 "kamioka.akita.jp", 12022 "katagami.akita.jp", 12023 "kazuno.akita.jp", 12024 "kitaakita.akita.jp", 12025 "kosaka.akita.jp", 12026 "kyowa.akita.jp", 12027 "misato.akita.jp", 12028 "mitane.akita.jp", 12029 "moriyoshi.akita.jp", 12030 "nikaho.akita.jp", 12031 "noshiro.akita.jp", 12032 "odate.akita.jp", 12033 "oga.akita.jp", 12034 "ogata.akita.jp", 12035 "semboku.akita.jp", 12036 "yokote.akita.jp", 12037 "yurihonjo.akita.jp", 12038 "aomori.aomori.jp", 12039 "gonohe.aomori.jp", 12040 "hachinohe.aomori.jp", 12041 "hashikami.aomori.jp", 12042 "hiranai.aomori.jp", 12043 "hirosaki.aomori.jp", 12044 "itayanagi.aomori.jp", 12045 "kuroishi.aomori.jp", 12046 "misawa.aomori.jp", 12047 "mutsu.aomori.jp", 12048 "nakadomari.aomori.jp", 12049 "noheji.aomori.jp", 12050 "oirase.aomori.jp", 12051 "owani.aomori.jp", 12052 "rokunohe.aomori.jp", 12053 "sannohe.aomori.jp", 12054 "shichinohe.aomori.jp", 12055 "shingo.aomori.jp", 12056 "takko.aomori.jp", 12057 "towada.aomori.jp", 12058 "tsugaru.aomori.jp", 12059 "tsuruta.aomori.jp", 12060 "abiko.chiba.jp", 12061 "asahi.chiba.jp", 12062 "chonan.chiba.jp", 12063 "chosei.chiba.jp", 12064 "choshi.chiba.jp", 12065 "chuo.chiba.jp", 12066 "funabashi.chiba.jp", 12067 "futtsu.chiba.jp", 12068 "hanamigawa.chiba.jp", 12069 "ichihara.chiba.jp", 12070 "ichikawa.chiba.jp", 12071 "ichinomiya.chiba.jp", 12072 "inzai.chiba.jp", 12073 "isumi.chiba.jp", 12074 "kamagaya.chiba.jp", 12075 "kamogawa.chiba.jp", 12076 "kashiwa.chiba.jp", 12077 "katori.chiba.jp", 12078 "katsuura.chiba.jp", 12079 "kimitsu.chiba.jp", 12080 "kisarazu.chiba.jp", 12081 "kozaki.chiba.jp", 12082 "kujukuri.chiba.jp", 12083 "kyonan.chiba.jp", 12084 "matsudo.chiba.jp", 12085 "midori.chiba.jp", 12086 "mihama.chiba.jp", 12087 "minamiboso.chiba.jp", 12088 "mobara.chiba.jp", 12089 "mutsuzawa.chiba.jp", 12090 "nagara.chiba.jp", 12091 "nagareyama.chiba.jp", 12092 "narashino.chiba.jp", 12093 "narita.chiba.jp", 12094 "noda.chiba.jp", 12095 "oamishirasato.chiba.jp", 12096 "omigawa.chiba.jp", 12097 "onjuku.chiba.jp", 12098 "otaki.chiba.jp", 12099 "sakae.chiba.jp", 12100 "sakura.chiba.jp", 12101 "shimofusa.chiba.jp", 12102 "shirako.chiba.jp", 12103 "shiroi.chiba.jp", 12104 "shisui.chiba.jp", 12105 "sodegaura.chiba.jp", 12106 "sosa.chiba.jp", 12107 "tako.chiba.jp", 12108 "tateyama.chiba.jp", 12109 "togane.chiba.jp", 12110 "tohnosho.chiba.jp", 12111 "tomisato.chiba.jp", 12112 "urayasu.chiba.jp", 12113 "yachimata.chiba.jp", 12114 "yachiyo.chiba.jp", 12115 "yokaichiba.chiba.jp", 12116 "yokoshibahikari.chiba.jp", 12117 "yotsukaido.chiba.jp", 12118 "ainan.ehime.jp", 12119 "honai.ehime.jp", 12120 "ikata.ehime.jp", 12121 "imabari.ehime.jp", 12122 "iyo.ehime.jp", 12123 "kamijima.ehime.jp", 12124 "kihoku.ehime.jp", 12125 "kumakogen.ehime.jp", 12126 "masaki.ehime.jp", 12127 "matsuno.ehime.jp", 12128 "matsuyama.ehime.jp", 12129 "namikata.ehime.jp", 12130 "niihama.ehime.jp", 12131 "ozu.ehime.jp", 12132 "saijo.ehime.jp", 12133 "seiyo.ehime.jp", 12134 "shikokuchuo.ehime.jp", 12135 "tobe.ehime.jp", 12136 "toon.ehime.jp", 12137 "uchiko.ehime.jp", 12138 "uwajima.ehime.jp", 12139 "yawatahama.ehime.jp", 12140 "echizen.fukui.jp", 12141 "eiheiji.fukui.jp", 12142 "fukui.fukui.jp", 12143 "ikeda.fukui.jp", 12144 "katsuyama.fukui.jp", 12145 "mihama.fukui.jp", 12146 "minamiechizen.fukui.jp", 12147 "obama.fukui.jp", 12148 "ohi.fukui.jp", 12149 "ono.fukui.jp", 12150 "sabae.fukui.jp", 12151 "sakai.fukui.jp", 12152 "takahama.fukui.jp", 12153 "tsuruga.fukui.jp", 12154 "wakasa.fukui.jp", 12155 "ashiya.fukuoka.jp", 12156 "buzen.fukuoka.jp", 12157 "chikugo.fukuoka.jp", 12158 "chikuho.fukuoka.jp", 12159 "chikujo.fukuoka.jp", 12160 "chikushino.fukuoka.jp", 12161 "chikuzen.fukuoka.jp", 12162 "chuo.fukuoka.jp", 12163 "dazaifu.fukuoka.jp", 12164 "fukuchi.fukuoka.jp", 12165 "hakata.fukuoka.jp", 12166 "higashi.fukuoka.jp", 12167 "hirokawa.fukuoka.jp", 12168 "hisayama.fukuoka.jp", 12169 "iizuka.fukuoka.jp", 12170 "inatsuki.fukuoka.jp", 12171 "kaho.fukuoka.jp", 12172 "kasuga.fukuoka.jp", 12173 "kasuya.fukuoka.jp", 12174 "kawara.fukuoka.jp", 12175 "keisen.fukuoka.jp", 12176 "koga.fukuoka.jp", 12177 "kurate.fukuoka.jp", 12178 "kurogi.fukuoka.jp", 12179 "kurume.fukuoka.jp", 12180 "minami.fukuoka.jp", 12181 "miyako.fukuoka.jp", 12182 "miyama.fukuoka.jp", 12183 "miyawaka.fukuoka.jp", 12184 "mizumaki.fukuoka.jp", 12185 "munakata.fukuoka.jp", 12186 "nakagawa.fukuoka.jp", 12187 "nakama.fukuoka.jp", 12188 "nishi.fukuoka.jp", 12189 "nogata.fukuoka.jp", 12190 "ogori.fukuoka.jp", 12191 "okagaki.fukuoka.jp", 12192 "okawa.fukuoka.jp", 12193 "oki.fukuoka.jp", 12194 "omuta.fukuoka.jp", 12195 "onga.fukuoka.jp", 12196 "onojo.fukuoka.jp", 12197 "oto.fukuoka.jp", 12198 "saigawa.fukuoka.jp", 12199 "sasaguri.fukuoka.jp", 12200 "shingu.fukuoka.jp", 12201 "shinyoshitomi.fukuoka.jp", 12202 "shonai.fukuoka.jp", 12203 "soeda.fukuoka.jp", 12204 "sue.fukuoka.jp", 12205 "tachiarai.fukuoka.jp", 12206 "tagawa.fukuoka.jp", 12207 "takata.fukuoka.jp", 12208 "toho.fukuoka.jp", 12209 "toyotsu.fukuoka.jp", 12210 "tsuiki.fukuoka.jp", 12211 "ukiha.fukuoka.jp", 12212 "umi.fukuoka.jp", 12213 "usui.fukuoka.jp", 12214 "yamada.fukuoka.jp", 12215 "yame.fukuoka.jp", 12216 "yanagawa.fukuoka.jp", 12217 "yukuhashi.fukuoka.jp", 12218 "aizubange.fukushima.jp", 12219 "aizumisato.fukushima.jp", 12220 "aizuwakamatsu.fukushima.jp", 12221 "asakawa.fukushima.jp", 12222 "bandai.fukushima.jp", 12223 "date.fukushima.jp", 12224 "fukushima.fukushima.jp", 12225 "furudono.fukushima.jp", 12226 "futaba.fukushima.jp", 12227 "hanawa.fukushima.jp", 12228 "higashi.fukushima.jp", 12229 "hirata.fukushima.jp", 12230 "hirono.fukushima.jp", 12231 "iitate.fukushima.jp", 12232 "inawashiro.fukushima.jp", 12233 "ishikawa.fukushima.jp", 12234 "iwaki.fukushima.jp", 12235 "izumizaki.fukushima.jp", 12236 "kagamiishi.fukushima.jp", 12237 "kaneyama.fukushima.jp", 12238 "kawamata.fukushima.jp", 12239 "kitakata.fukushima.jp", 12240 "kitashiobara.fukushima.jp", 12241 "koori.fukushima.jp", 12242 "koriyama.fukushima.jp", 12243 "kunimi.fukushima.jp", 12244 "miharu.fukushima.jp", 12245 "mishima.fukushima.jp", 12246 "namie.fukushima.jp", 12247 "nango.fukushima.jp", 12248 "nishiaizu.fukushima.jp", 12249 "nishigo.fukushima.jp", 12250 "okuma.fukushima.jp", 12251 "omotego.fukushima.jp", 12252 "ono.fukushima.jp", 12253 "otama.fukushima.jp", 12254 "samegawa.fukushima.jp", 12255 "shimogo.fukushima.jp", 12256 "shirakawa.fukushima.jp", 12257 "showa.fukushima.jp", 12258 "soma.fukushima.jp", 12259 "sukagawa.fukushima.jp", 12260 "taishin.fukushima.jp", 12261 "tamakawa.fukushima.jp", 12262 "tanagura.fukushima.jp", 12263 "tenei.fukushima.jp", 12264 "yabuki.fukushima.jp", 12265 "yamato.fukushima.jp", 12266 "yamatsuri.fukushima.jp", 12267 "yanaizu.fukushima.jp", 12268 "yugawa.fukushima.jp", 12269 "anpachi.gifu.jp", 12270 "ena.gifu.jp", 12271 "gifu.gifu.jp", 12272 "ginan.gifu.jp", 12273 "godo.gifu.jp", 12274 "gujo.gifu.jp", 12275 "hashima.gifu.jp", 12276 "hichiso.gifu.jp", 12277 "hida.gifu.jp", 12278 "higashishirakawa.gifu.jp", 12279 "ibigawa.gifu.jp", 12280 "ikeda.gifu.jp", 12281 "kakamigahara.gifu.jp", 12282 "kani.gifu.jp", 12283 "kasahara.gifu.jp", 12284 "kasamatsu.gifu.jp", 12285 "kawaue.gifu.jp", 12286 "kitagata.gifu.jp", 12287 "mino.gifu.jp", 12288 "minokamo.gifu.jp", 12289 "mitake.gifu.jp", 12290 "mizunami.gifu.jp", 12291 "motosu.gifu.jp", 12292 "nakatsugawa.gifu.jp", 12293 "ogaki.gifu.jp", 12294 "sakahogi.gifu.jp", 12295 "seki.gifu.jp", 12296 "sekigahara.gifu.jp", 12297 "shirakawa.gifu.jp", 12298 "tajimi.gifu.jp", 12299 "takayama.gifu.jp", 12300 "tarui.gifu.jp", 12301 "toki.gifu.jp", 12302 "tomika.gifu.jp", 12303 "wanouchi.gifu.jp", 12304 "yamagata.gifu.jp", 12305 "yaotsu.gifu.jp", 12306 "yoro.gifu.jp", 12307 "annaka.gunma.jp", 12308 "chiyoda.gunma.jp", 12309 "fujioka.gunma.jp", 12310 "higashiagatsuma.gunma.jp", 12311 "isesaki.gunma.jp", 12312 "itakura.gunma.jp", 12313 "kanna.gunma.jp", 12314 "kanra.gunma.jp", 12315 "katashina.gunma.jp", 12316 "kawaba.gunma.jp", 12317 "kiryu.gunma.jp", 12318 "kusatsu.gunma.jp", 12319 "maebashi.gunma.jp", 12320 "meiwa.gunma.jp", 12321 "midori.gunma.jp", 12322 "minakami.gunma.jp", 12323 "naganohara.gunma.jp", 12324 "nakanojo.gunma.jp", 12325 "nanmoku.gunma.jp", 12326 "numata.gunma.jp", 12327 "oizumi.gunma.jp", 12328 "ora.gunma.jp", 12329 "ota.gunma.jp", 12330 "shibukawa.gunma.jp", 12331 "shimonita.gunma.jp", 12332 "shinto.gunma.jp", 12333 "showa.gunma.jp", 12334 "takasaki.gunma.jp", 12335 "takayama.gunma.jp", 12336 "tamamura.gunma.jp", 12337 "tatebayashi.gunma.jp", 12338 "tomioka.gunma.jp", 12339 "tsukiyono.gunma.jp", 12340 "tsumagoi.gunma.jp", 12341 "ueno.gunma.jp", 12342 "yoshioka.gunma.jp", 12343 "asaminami.hiroshima.jp", 12344 "daiwa.hiroshima.jp", 12345 "etajima.hiroshima.jp", 12346 "fuchu.hiroshima.jp", 12347 "fukuyama.hiroshima.jp", 12348 "hatsukaichi.hiroshima.jp", 12349 "higashihiroshima.hiroshima.jp", 12350 "hongo.hiroshima.jp", 12351 "jinsekikogen.hiroshima.jp", 12352 "kaita.hiroshima.jp", 12353 "kui.hiroshima.jp", 12354 "kumano.hiroshima.jp", 12355 "kure.hiroshima.jp", 12356 "mihara.hiroshima.jp", 12357 "miyoshi.hiroshima.jp", 12358 "naka.hiroshima.jp", 12359 "onomichi.hiroshima.jp", 12360 "osakikamijima.hiroshima.jp", 12361 "otake.hiroshima.jp", 12362 "saka.hiroshima.jp", 12363 "sera.hiroshima.jp", 12364 "seranishi.hiroshima.jp", 12365 "shinichi.hiroshima.jp", 12366 "shobara.hiroshima.jp", 12367 "takehara.hiroshima.jp", 12368 "abashiri.hokkaido.jp", 12369 "abira.hokkaido.jp", 12370 "aibetsu.hokkaido.jp", 12371 "akabira.hokkaido.jp", 12372 "akkeshi.hokkaido.jp", 12373 "asahikawa.hokkaido.jp", 12374 "ashibetsu.hokkaido.jp", 12375 "ashoro.hokkaido.jp", 12376 "assabu.hokkaido.jp", 12377 "atsuma.hokkaido.jp", 12378 "bibai.hokkaido.jp", 12379 "biei.hokkaido.jp", 12380 "bifuka.hokkaido.jp", 12381 "bihoro.hokkaido.jp", 12382 "biratori.hokkaido.jp", 12383 "chippubetsu.hokkaido.jp", 12384 "chitose.hokkaido.jp", 12385 "date.hokkaido.jp", 12386 "ebetsu.hokkaido.jp", 12387 "embetsu.hokkaido.jp", 12388 "eniwa.hokkaido.jp", 12389 "erimo.hokkaido.jp", 12390 "esan.hokkaido.jp", 12391 "esashi.hokkaido.jp", 12392 "fukagawa.hokkaido.jp", 12393 "fukushima.hokkaido.jp", 12394 "furano.hokkaido.jp", 12395 "furubira.hokkaido.jp", 12396 "haboro.hokkaido.jp", 12397 "hakodate.hokkaido.jp", 12398 "hamatonbetsu.hokkaido.jp", 12399 "hidaka.hokkaido.jp", 12400 "higashikagura.hokkaido.jp", 12401 "higashikawa.hokkaido.jp", 12402 "hiroo.hokkaido.jp", 12403 "hokuryu.hokkaido.jp", 12404 "hokuto.hokkaido.jp", 12405 "honbetsu.hokkaido.jp", 12406 "horokanai.hokkaido.jp", 12407 "horonobe.hokkaido.jp", 12408 "ikeda.hokkaido.jp", 12409 "imakane.hokkaido.jp", 12410 "ishikari.hokkaido.jp", 12411 "iwamizawa.hokkaido.jp", 12412 "iwanai.hokkaido.jp", 12413 "kamifurano.hokkaido.jp", 12414 "kamikawa.hokkaido.jp", 12415 "kamishihoro.hokkaido.jp", 12416 "kamisunagawa.hokkaido.jp", 12417 "kamoenai.hokkaido.jp", 12418 "kayabe.hokkaido.jp", 12419 "kembuchi.hokkaido.jp", 12420 "kikonai.hokkaido.jp", 12421 "kimobetsu.hokkaido.jp", 12422 "kitahiroshima.hokkaido.jp", 12423 "kitami.hokkaido.jp", 12424 "kiyosato.hokkaido.jp", 12425 "koshimizu.hokkaido.jp", 12426 "kunneppu.hokkaido.jp", 12427 "kuriyama.hokkaido.jp", 12428 "kuromatsunai.hokkaido.jp", 12429 "kushiro.hokkaido.jp", 12430 "kutchan.hokkaido.jp", 12431 "kyowa.hokkaido.jp", 12432 "mashike.hokkaido.jp", 12433 "matsumae.hokkaido.jp", 12434 "mikasa.hokkaido.jp", 12435 "minamifurano.hokkaido.jp", 12436 "mombetsu.hokkaido.jp", 12437 "moseushi.hokkaido.jp", 12438 "mukawa.hokkaido.jp", 12439 "muroran.hokkaido.jp", 12440 "naie.hokkaido.jp", 12441 "nakagawa.hokkaido.jp", 12442 "nakasatsunai.hokkaido.jp", 12443 "nakatombetsu.hokkaido.jp", 12444 "nanae.hokkaido.jp", 12445 "nanporo.hokkaido.jp", 12446 "nayoro.hokkaido.jp", 12447 "nemuro.hokkaido.jp", 12448 "niikappu.hokkaido.jp", 12449 "niki.hokkaido.jp", 12450 "nishiokoppe.hokkaido.jp", 12451 "noboribetsu.hokkaido.jp", 12452 "numata.hokkaido.jp", 12453 "obihiro.hokkaido.jp", 12454 "obira.hokkaido.jp", 12455 "oketo.hokkaido.jp", 12456 "okoppe.hokkaido.jp", 12457 "otaru.hokkaido.jp", 12458 "otobe.hokkaido.jp", 12459 "otofuke.hokkaido.jp", 12460 "otoineppu.hokkaido.jp", 12461 "oumu.hokkaido.jp", 12462 "ozora.hokkaido.jp", 12463 "pippu.hokkaido.jp", 12464 "rankoshi.hokkaido.jp", 12465 "rebun.hokkaido.jp", 12466 "rikubetsu.hokkaido.jp", 12467 "rishiri.hokkaido.jp", 12468 "rishirifuji.hokkaido.jp", 12469 "saroma.hokkaido.jp", 12470 "sarufutsu.hokkaido.jp", 12471 "shakotan.hokkaido.jp", 12472 "shari.hokkaido.jp", 12473 "shibecha.hokkaido.jp", 12474 "shibetsu.hokkaido.jp", 12475 "shikabe.hokkaido.jp", 12476 "shikaoi.hokkaido.jp", 12477 "shimamaki.hokkaido.jp", 12478 "shimizu.hokkaido.jp", 12479 "shimokawa.hokkaido.jp", 12480 "shinshinotsu.hokkaido.jp", 12481 "shintoku.hokkaido.jp", 12482 "shiranuka.hokkaido.jp", 12483 "shiraoi.hokkaido.jp", 12484 "shiriuchi.hokkaido.jp", 12485 "sobetsu.hokkaido.jp", 12486 "sunagawa.hokkaido.jp", 12487 "taiki.hokkaido.jp", 12488 "takasu.hokkaido.jp", 12489 "takikawa.hokkaido.jp", 12490 "takinoue.hokkaido.jp", 12491 "teshikaga.hokkaido.jp", 12492 "tobetsu.hokkaido.jp", 12493 "tohma.hokkaido.jp", 12494 "tomakomai.hokkaido.jp", 12495 "tomari.hokkaido.jp", 12496 "toya.hokkaido.jp", 12497 "toyako.hokkaido.jp", 12498 "toyotomi.hokkaido.jp", 12499 "toyoura.hokkaido.jp", 12500 "tsubetsu.hokkaido.jp", 12501 "tsukigata.hokkaido.jp", 12502 "urakawa.hokkaido.jp", 12503 "urausu.hokkaido.jp", 12504 "uryu.hokkaido.jp", 12505 "utashinai.hokkaido.jp", 12506 "wakkanai.hokkaido.jp", 12507 "wassamu.hokkaido.jp", 12508 "yakumo.hokkaido.jp", 12509 "yoichi.hokkaido.jp", 12510 "aioi.hyogo.jp", 12511 "akashi.hyogo.jp", 12512 "ako.hyogo.jp", 12513 "amagasaki.hyogo.jp", 12514 "aogaki.hyogo.jp", 12515 "asago.hyogo.jp", 12516 "ashiya.hyogo.jp", 12517 "awaji.hyogo.jp", 12518 "fukusaki.hyogo.jp", 12519 "goshiki.hyogo.jp", 12520 "harima.hyogo.jp", 12521 "himeji.hyogo.jp", 12522 "ichikawa.hyogo.jp", 12523 "inagawa.hyogo.jp", 12524 "itami.hyogo.jp", 12525 "kakogawa.hyogo.jp", 12526 "kamigori.hyogo.jp", 12527 "kamikawa.hyogo.jp", 12528 "kasai.hyogo.jp", 12529 "kasuga.hyogo.jp", 12530 "kawanishi.hyogo.jp", 12531 "miki.hyogo.jp", 12532 "minamiawaji.hyogo.jp", 12533 "nishinomiya.hyogo.jp", 12534 "nishiwaki.hyogo.jp", 12535 "ono.hyogo.jp", 12536 "sanda.hyogo.jp", 12537 "sannan.hyogo.jp", 12538 "sasayama.hyogo.jp", 12539 "sayo.hyogo.jp", 12540 "shingu.hyogo.jp", 12541 "shinonsen.hyogo.jp", 12542 "shiso.hyogo.jp", 12543 "sumoto.hyogo.jp", 12544 "taishi.hyogo.jp", 12545 "taka.hyogo.jp", 12546 "takarazuka.hyogo.jp", 12547 "takasago.hyogo.jp", 12548 "takino.hyogo.jp", 12549 "tamba.hyogo.jp", 12550 "tatsuno.hyogo.jp", 12551 "toyooka.hyogo.jp", 12552 "yabu.hyogo.jp", 12553 "yashiro.hyogo.jp", 12554 "yoka.hyogo.jp", 12555 "yokawa.hyogo.jp", 12556 "ami.ibaraki.jp", 12557 "asahi.ibaraki.jp", 12558 "bando.ibaraki.jp", 12559 "chikusei.ibaraki.jp", 12560 "daigo.ibaraki.jp", 12561 "fujishiro.ibaraki.jp", 12562 "hitachi.ibaraki.jp", 12563 "hitachinaka.ibaraki.jp", 12564 "hitachiomiya.ibaraki.jp", 12565 "hitachiota.ibaraki.jp", 12566 "ibaraki.ibaraki.jp", 12567 "ina.ibaraki.jp", 12568 "inashiki.ibaraki.jp", 12569 "itako.ibaraki.jp", 12570 "iwama.ibaraki.jp", 12571 "joso.ibaraki.jp", 12572 "kamisu.ibaraki.jp", 12573 "kasama.ibaraki.jp", 12574 "kashima.ibaraki.jp", 12575 "kasumigaura.ibaraki.jp", 12576 "koga.ibaraki.jp", 12577 "miho.ibaraki.jp", 12578 "mito.ibaraki.jp", 12579 "moriya.ibaraki.jp", 12580 "naka.ibaraki.jp", 12581 "namegata.ibaraki.jp", 12582 "oarai.ibaraki.jp", 12583 "ogawa.ibaraki.jp", 12584 "omitama.ibaraki.jp", 12585 "ryugasaki.ibaraki.jp", 12586 "sakai.ibaraki.jp", 12587 "sakuragawa.ibaraki.jp", 12588 "shimodate.ibaraki.jp", 12589 "shimotsuma.ibaraki.jp", 12590 "shirosato.ibaraki.jp", 12591 "sowa.ibaraki.jp", 12592 "suifu.ibaraki.jp", 12593 "takahagi.ibaraki.jp", 12594 "tamatsukuri.ibaraki.jp", 12595 "tokai.ibaraki.jp", 12596 "tomobe.ibaraki.jp", 12597 "tone.ibaraki.jp", 12598 "toride.ibaraki.jp", 12599 "tsuchiura.ibaraki.jp", 12600 "tsukuba.ibaraki.jp", 12601 "uchihara.ibaraki.jp", 12602 "ushiku.ibaraki.jp", 12603 "yachiyo.ibaraki.jp", 12604 "yamagata.ibaraki.jp", 12605 "yawara.ibaraki.jp", 12606 "yuki.ibaraki.jp", 12607 "anamizu.ishikawa.jp", 12608 "hakui.ishikawa.jp", 12609 "hakusan.ishikawa.jp", 12610 "kaga.ishikawa.jp", 12611 "kahoku.ishikawa.jp", 12612 "kanazawa.ishikawa.jp", 12613 "kawakita.ishikawa.jp", 12614 "komatsu.ishikawa.jp", 12615 "nakanoto.ishikawa.jp", 12616 "nanao.ishikawa.jp", 12617 "nomi.ishikawa.jp", 12618 "nonoichi.ishikawa.jp", 12619 "noto.ishikawa.jp", 12620 "shika.ishikawa.jp", 12621 "suzu.ishikawa.jp", 12622 "tsubata.ishikawa.jp", 12623 "tsurugi.ishikawa.jp", 12624 "uchinada.ishikawa.jp", 12625 "wajima.ishikawa.jp", 12626 "fudai.iwate.jp", 12627 "fujisawa.iwate.jp", 12628 "hanamaki.iwate.jp", 12629 "hiraizumi.iwate.jp", 12630 "hirono.iwate.jp", 12631 "ichinohe.iwate.jp", 12632 "ichinoseki.iwate.jp", 12633 "iwaizumi.iwate.jp", 12634 "iwate.iwate.jp", 12635 "joboji.iwate.jp", 12636 "kamaishi.iwate.jp", 12637 "kanegasaki.iwate.jp", 12638 "karumai.iwate.jp", 12639 "kawai.iwate.jp", 12640 "kitakami.iwate.jp", 12641 "kuji.iwate.jp", 12642 "kunohe.iwate.jp", 12643 "kuzumaki.iwate.jp", 12644 "miyako.iwate.jp", 12645 "mizusawa.iwate.jp", 12646 "morioka.iwate.jp", 12647 "ninohe.iwate.jp", 12648 "noda.iwate.jp", 12649 "ofunato.iwate.jp", 12650 "oshu.iwate.jp", 12651 "otsuchi.iwate.jp", 12652 "rikuzentakata.iwate.jp", 12653 "shiwa.iwate.jp", 12654 "shizukuishi.iwate.jp", 12655 "sumita.iwate.jp", 12656 "tanohata.iwate.jp", 12657 "tono.iwate.jp", 12658 "yahaba.iwate.jp", 12659 "yamada.iwate.jp", 12660 "ayagawa.kagawa.jp", 12661 "higashikagawa.kagawa.jp", 12662 "kanonji.kagawa.jp", 12663 "kotohira.kagawa.jp", 12664 "manno.kagawa.jp", 12665 "marugame.kagawa.jp", 12666 "mitoyo.kagawa.jp", 12667 "naoshima.kagawa.jp", 12668 "sanuki.kagawa.jp", 12669 "tadotsu.kagawa.jp", 12670 "takamatsu.kagawa.jp", 12671 "tonosho.kagawa.jp", 12672 "uchinomi.kagawa.jp", 12673 "utazu.kagawa.jp", 12674 "zentsuji.kagawa.jp", 12675 "akune.kagoshima.jp", 12676 "amami.kagoshima.jp", 12677 "hioki.kagoshima.jp", 12678 "isa.kagoshima.jp", 12679 "isen.kagoshima.jp", 12680 "izumi.kagoshima.jp", 12681 "kagoshima.kagoshima.jp", 12682 "kanoya.kagoshima.jp", 12683 "kawanabe.kagoshima.jp", 12684 "kinko.kagoshima.jp", 12685 "kouyama.kagoshima.jp", 12686 "makurazaki.kagoshima.jp", 12687 "matsumoto.kagoshima.jp", 12688 "minamitane.kagoshima.jp", 12689 "nakatane.kagoshima.jp", 12690 "nishinoomote.kagoshima.jp", 12691 "satsumasendai.kagoshima.jp", 12692 "soo.kagoshima.jp", 12693 "tarumizu.kagoshima.jp", 12694 "yusui.kagoshima.jp", 12695 "aikawa.kanagawa.jp", 12696 "atsugi.kanagawa.jp", 12697 "ayase.kanagawa.jp", 12698 "chigasaki.kanagawa.jp", 12699 "ebina.kanagawa.jp", 12700 "fujisawa.kanagawa.jp", 12701 "hadano.kanagawa.jp", 12702 "hakone.kanagawa.jp", 12703 "hiratsuka.kanagawa.jp", 12704 "isehara.kanagawa.jp", 12705 "kaisei.kanagawa.jp", 12706 "kamakura.kanagawa.jp", 12707 "kiyokawa.kanagawa.jp", 12708 "matsuda.kanagawa.jp", 12709 "minamiashigara.kanagawa.jp", 12710 "miura.kanagawa.jp", 12711 "nakai.kanagawa.jp", 12712 "ninomiya.kanagawa.jp", 12713 "odawara.kanagawa.jp", 12714 "oi.kanagawa.jp", 12715 "oiso.kanagawa.jp", 12716 "sagamihara.kanagawa.jp", 12717 "samukawa.kanagawa.jp", 12718 "tsukui.kanagawa.jp", 12719 "yamakita.kanagawa.jp", 12720 "yamato.kanagawa.jp", 12721 "yokosuka.kanagawa.jp", 12722 "yugawara.kanagawa.jp", 12723 "zama.kanagawa.jp", 12724 "zushi.kanagawa.jp", 12725 "aki.kochi.jp", 12726 "geisei.kochi.jp", 12727 "hidaka.kochi.jp", 12728 "higashitsuno.kochi.jp", 12729 "ino.kochi.jp", 12730 "kagami.kochi.jp", 12731 "kami.kochi.jp", 12732 "kitagawa.kochi.jp", 12733 "kochi.kochi.jp", 12734 "mihara.kochi.jp", 12735 "motoyama.kochi.jp", 12736 "muroto.kochi.jp", 12737 "nahari.kochi.jp", 12738 "nakamura.kochi.jp", 12739 "nankoku.kochi.jp", 12740 "nishitosa.kochi.jp", 12741 "niyodogawa.kochi.jp", 12742 "ochi.kochi.jp", 12743 "okawa.kochi.jp", 12744 "otoyo.kochi.jp", 12745 "otsuki.kochi.jp", 12746 "sakawa.kochi.jp", 12747 "sukumo.kochi.jp", 12748 "susaki.kochi.jp", 12749 "tosa.kochi.jp", 12750 "tosashimizu.kochi.jp", 12751 "toyo.kochi.jp", 12752 "tsuno.kochi.jp", 12753 "umaji.kochi.jp", 12754 "yasuda.kochi.jp", 12755 "yusuhara.kochi.jp", 12756 "amakusa.kumamoto.jp", 12757 "arao.kumamoto.jp", 12758 "aso.kumamoto.jp", 12759 "choyo.kumamoto.jp", 12760 "gyokuto.kumamoto.jp", 12761 "kamiamakusa.kumamoto.jp", 12762 "kikuchi.kumamoto.jp", 12763 "kumamoto.kumamoto.jp", 12764 "mashiki.kumamoto.jp", 12765 "mifune.kumamoto.jp", 12766 "minamata.kumamoto.jp", 12767 "minamioguni.kumamoto.jp", 12768 "nagasu.kumamoto.jp", 12769 "nishihara.kumamoto.jp", 12770 "oguni.kumamoto.jp", 12771 "ozu.kumamoto.jp", 12772 "sumoto.kumamoto.jp", 12773 "takamori.kumamoto.jp", 12774 "uki.kumamoto.jp", 12775 "uto.kumamoto.jp", 12776 "yamaga.kumamoto.jp", 12777 "yamato.kumamoto.jp", 12778 "yatsushiro.kumamoto.jp", 12779 "ayabe.kyoto.jp", 12780 "fukuchiyama.kyoto.jp", 12781 "higashiyama.kyoto.jp", 12782 "ide.kyoto.jp", 12783 "ine.kyoto.jp", 12784 "joyo.kyoto.jp", 12785 "kameoka.kyoto.jp", 12786 "kamo.kyoto.jp", 12787 "kita.kyoto.jp", 12788 "kizu.kyoto.jp", 12789 "kumiyama.kyoto.jp", 12790 "kyotamba.kyoto.jp", 12791 "kyotanabe.kyoto.jp", 12792 "kyotango.kyoto.jp", 12793 "maizuru.kyoto.jp", 12794 "minami.kyoto.jp", 12795 "minamiyamashiro.kyoto.jp", 12796 "miyazu.kyoto.jp", 12797 "muko.kyoto.jp", 12798 "nagaokakyo.kyoto.jp", 12799 "nakagyo.kyoto.jp", 12800 "nantan.kyoto.jp", 12801 "oyamazaki.kyoto.jp", 12802 "sakyo.kyoto.jp", 12803 "seika.kyoto.jp", 12804 "tanabe.kyoto.jp", 12805 "uji.kyoto.jp", 12806 "ujitawara.kyoto.jp", 12807 "wazuka.kyoto.jp", 12808 "yamashina.kyoto.jp", 12809 "yawata.kyoto.jp", 12810 "asahi.mie.jp", 12811 "inabe.mie.jp", 12812 "ise.mie.jp", 12813 "kameyama.mie.jp", 12814 "kawagoe.mie.jp", 12815 "kiho.mie.jp", 12816 "kisosaki.mie.jp", 12817 "kiwa.mie.jp", 12818 "komono.mie.jp", 12819 "kumano.mie.jp", 12820 "kuwana.mie.jp", 12821 "matsusaka.mie.jp", 12822 "meiwa.mie.jp", 12823 "mihama.mie.jp", 12824 "minamiise.mie.jp", 12825 "misugi.mie.jp", 12826 "miyama.mie.jp", 12827 "nabari.mie.jp", 12828 "shima.mie.jp", 12829 "suzuka.mie.jp", 12830 "tado.mie.jp", 12831 "taiki.mie.jp", 12832 "taki.mie.jp", 12833 "tamaki.mie.jp", 12834 "toba.mie.jp", 12835 "tsu.mie.jp", 12836 "udono.mie.jp", 12837 "ureshino.mie.jp", 12838 "watarai.mie.jp", 12839 "yokkaichi.mie.jp", 12840 "furukawa.miyagi.jp", 12841 "higashimatsushima.miyagi.jp", 12842 "ishinomaki.miyagi.jp", 12843 "iwanuma.miyagi.jp", 12844 "kakuda.miyagi.jp", 12845 "kami.miyagi.jp", 12846 "kawasaki.miyagi.jp", 12847 "marumori.miyagi.jp", 12848 "matsushima.miyagi.jp", 12849 "minamisanriku.miyagi.jp", 12850 "misato.miyagi.jp", 12851 "murata.miyagi.jp", 12852 "natori.miyagi.jp", 12853 "ogawara.miyagi.jp", 12854 "ohira.miyagi.jp", 12855 "onagawa.miyagi.jp", 12856 "osaki.miyagi.jp", 12857 "rifu.miyagi.jp", 12858 "semine.miyagi.jp", 12859 "shibata.miyagi.jp", 12860 "shichikashuku.miyagi.jp", 12861 "shikama.miyagi.jp", 12862 "shiogama.miyagi.jp", 12863 "shiroishi.miyagi.jp", 12864 "tagajo.miyagi.jp", 12865 "taiwa.miyagi.jp", 12866 "tome.miyagi.jp", 12867 "tomiya.miyagi.jp", 12868 "wakuya.miyagi.jp", 12869 "watari.miyagi.jp", 12870 "yamamoto.miyagi.jp", 12871 "zao.miyagi.jp", 12872 "aya.miyazaki.jp", 12873 "ebino.miyazaki.jp", 12874 "gokase.miyazaki.jp", 12875 "hyuga.miyazaki.jp", 12876 "kadogawa.miyazaki.jp", 12877 "kawaminami.miyazaki.jp", 12878 "kijo.miyazaki.jp", 12879 "kitagawa.miyazaki.jp", 12880 "kitakata.miyazaki.jp", 12881 "kitaura.miyazaki.jp", 12882 "kobayashi.miyazaki.jp", 12883 "kunitomi.miyazaki.jp", 12884 "kushima.miyazaki.jp", 12885 "mimata.miyazaki.jp", 12886 "miyakonojo.miyazaki.jp", 12887 "miyazaki.miyazaki.jp", 12888 "morotsuka.miyazaki.jp", 12889 "nichinan.miyazaki.jp", 12890 "nishimera.miyazaki.jp", 12891 "nobeoka.miyazaki.jp", 12892 "saito.miyazaki.jp", 12893 "shiiba.miyazaki.jp", 12894 "shintomi.miyazaki.jp", 12895 "takaharu.miyazaki.jp", 12896 "takanabe.miyazaki.jp", 12897 "takazaki.miyazaki.jp", 12898 "tsuno.miyazaki.jp", 12899 "achi.nagano.jp", 12900 "agematsu.nagano.jp", 12901 "anan.nagano.jp", 12902 "aoki.nagano.jp", 12903 "asahi.nagano.jp", 12904 "azumino.nagano.jp", 12905 "chikuhoku.nagano.jp", 12906 "chikuma.nagano.jp", 12907 "chino.nagano.jp", 12908 "fujimi.nagano.jp", 12909 "hakuba.nagano.jp", 12910 "hara.nagano.jp", 12911 "hiraya.nagano.jp", 12912 "iida.nagano.jp", 12913 "iijima.nagano.jp", 12914 "iiyama.nagano.jp", 12915 "iizuna.nagano.jp", 12916 "ikeda.nagano.jp", 12917 "ikusaka.nagano.jp", 12918 "ina.nagano.jp", 12919 "karuizawa.nagano.jp", 12920 "kawakami.nagano.jp", 12921 "kiso.nagano.jp", 12922 "kisofukushima.nagano.jp", 12923 "kitaaiki.nagano.jp", 12924 "komagane.nagano.jp", 12925 "komoro.nagano.jp", 12926 "matsukawa.nagano.jp", 12927 "matsumoto.nagano.jp", 12928 "miasa.nagano.jp", 12929 "minamiaiki.nagano.jp", 12930 "minamimaki.nagano.jp", 12931 "minamiminowa.nagano.jp", 12932 "minowa.nagano.jp", 12933 "miyada.nagano.jp", 12934 "miyota.nagano.jp", 12935 "mochizuki.nagano.jp", 12936 "nagano.nagano.jp", 12937 "nagawa.nagano.jp", 12938 "nagiso.nagano.jp", 12939 "nakagawa.nagano.jp", 12940 "nakano.nagano.jp", 12941 "nozawaonsen.nagano.jp", 12942 "obuse.nagano.jp", 12943 "ogawa.nagano.jp", 12944 "okaya.nagano.jp", 12945 "omachi.nagano.jp", 12946 "omi.nagano.jp", 12947 "ookuwa.nagano.jp", 12948 "ooshika.nagano.jp", 12949 "otaki.nagano.jp", 12950 "otari.nagano.jp", 12951 "sakae.nagano.jp", 12952 "sakaki.nagano.jp", 12953 "saku.nagano.jp", 12954 "sakuho.nagano.jp", 12955 "shimosuwa.nagano.jp", 12956 "shinanomachi.nagano.jp", 12957 "shiojiri.nagano.jp", 12958 "suwa.nagano.jp", 12959 "suzaka.nagano.jp", 12960 "takagi.nagano.jp", 12961 "takamori.nagano.jp", 12962 "takayama.nagano.jp", 12963 "tateshina.nagano.jp", 12964 "tatsuno.nagano.jp", 12965 "togakushi.nagano.jp", 12966 "togura.nagano.jp", 12967 "tomi.nagano.jp", 12968 "ueda.nagano.jp", 12969 "wada.nagano.jp", 12970 "yamagata.nagano.jp", 12971 "yamanouchi.nagano.jp", 12972 "yasaka.nagano.jp", 12973 "yasuoka.nagano.jp", 12974 "chijiwa.nagasaki.jp", 12975 "futsu.nagasaki.jp", 12976 "goto.nagasaki.jp", 12977 "hasami.nagasaki.jp", 12978 "hirado.nagasaki.jp", 12979 "iki.nagasaki.jp", 12980 "isahaya.nagasaki.jp", 12981 "kawatana.nagasaki.jp", 12982 "kuchinotsu.nagasaki.jp", 12983 "matsuura.nagasaki.jp", 12984 "nagasaki.nagasaki.jp", 12985 "obama.nagasaki.jp", 12986 "omura.nagasaki.jp", 12987 "oseto.nagasaki.jp", 12988 "saikai.nagasaki.jp", 12989 "sasebo.nagasaki.jp", 12990 "seihi.nagasaki.jp", 12991 "shimabara.nagasaki.jp", 12992 "shinkamigoto.nagasaki.jp", 12993 "togitsu.nagasaki.jp", 12994 "tsushima.nagasaki.jp", 12995 "unzen.nagasaki.jp", 12996 "ando.nara.jp", 12997 "gose.nara.jp", 12998 "heguri.nara.jp", 12999 "higashiyoshino.nara.jp", 13000 "ikaruga.nara.jp", 13001 "ikoma.nara.jp", 13002 "kamikitayama.nara.jp", 13003 "kanmaki.nara.jp", 13004 "kashiba.nara.jp", 13005 "kashihara.nara.jp", 13006 "katsuragi.nara.jp", 13007 "kawai.nara.jp", 13008 "kawakami.nara.jp", 13009 "kawanishi.nara.jp", 13010 "koryo.nara.jp", 13011 "kurotaki.nara.jp", 13012 "mitsue.nara.jp", 13013 "miyake.nara.jp", 13014 "nara.nara.jp", 13015 "nosegawa.nara.jp", 13016 "oji.nara.jp", 13017 "ouda.nara.jp", 13018 "oyodo.nara.jp", 13019 "sakurai.nara.jp", 13020 "sango.nara.jp", 13021 "shimoichi.nara.jp", 13022 "shimokitayama.nara.jp", 13023 "shinjo.nara.jp", 13024 "soni.nara.jp", 13025 "takatori.nara.jp", 13026 "tawaramoto.nara.jp", 13027 "tenkawa.nara.jp", 13028 "tenri.nara.jp", 13029 "uda.nara.jp", 13030 "yamatokoriyama.nara.jp", 13031 "yamatotakada.nara.jp", 13032 "yamazoe.nara.jp", 13033 "yoshino.nara.jp", 13034 "aga.niigata.jp", 13035 "agano.niigata.jp", 13036 "gosen.niigata.jp", 13037 "itoigawa.niigata.jp", 13038 "izumozaki.niigata.jp", 13039 "joetsu.niigata.jp", 13040 "kamo.niigata.jp", 13041 "kariwa.niigata.jp", 13042 "kashiwazaki.niigata.jp", 13043 "minamiuonuma.niigata.jp", 13044 "mitsuke.niigata.jp", 13045 "muika.niigata.jp", 13046 "murakami.niigata.jp", 13047 "myoko.niigata.jp", 13048 "nagaoka.niigata.jp", 13049 "niigata.niigata.jp", 13050 "ojiya.niigata.jp", 13051 "omi.niigata.jp", 13052 "sado.niigata.jp", 13053 "sanjo.niigata.jp", 13054 "seiro.niigata.jp", 13055 "seirou.niigata.jp", 13056 "sekikawa.niigata.jp", 13057 "shibata.niigata.jp", 13058 "tagami.niigata.jp", 13059 "tainai.niigata.jp", 13060 "tochio.niigata.jp", 13061 "tokamachi.niigata.jp", 13062 "tsubame.niigata.jp", 13063 "tsunan.niigata.jp", 13064 "uonuma.niigata.jp", 13065 "yahiko.niigata.jp", 13066 "yoita.niigata.jp", 13067 "yuzawa.niigata.jp", 13068 "beppu.oita.jp", 13069 "bungoono.oita.jp", 13070 "bungotakada.oita.jp", 13071 "hasama.oita.jp", 13072 "hiji.oita.jp", 13073 "himeshima.oita.jp", 13074 "hita.oita.jp", 13075 "kamitsue.oita.jp", 13076 "kokonoe.oita.jp", 13077 "kuju.oita.jp", 13078 "kunisaki.oita.jp", 13079 "kusu.oita.jp", 13080 "oita.oita.jp", 13081 "saiki.oita.jp", 13082 "taketa.oita.jp", 13083 "tsukumi.oita.jp", 13084 "usa.oita.jp", 13085 "usuki.oita.jp", 13086 "yufu.oita.jp", 13087 "akaiwa.okayama.jp", 13088 "asakuchi.okayama.jp", 13089 "bizen.okayama.jp", 13090 "hayashima.okayama.jp", 13091 "ibara.okayama.jp", 13092 "kagamino.okayama.jp", 13093 "kasaoka.okayama.jp", 13094 "kibichuo.okayama.jp", 13095 "kumenan.okayama.jp", 13096 "kurashiki.okayama.jp", 13097 "maniwa.okayama.jp", 13098 "misaki.okayama.jp", 13099 "nagi.okayama.jp", 13100 "niimi.okayama.jp", 13101 "nishiawakura.okayama.jp", 13102 "okayama.okayama.jp", 13103 "satosho.okayama.jp", 13104 "setouchi.okayama.jp", 13105 "shinjo.okayama.jp", 13106 "shoo.okayama.jp", 13107 "soja.okayama.jp", 13108 "takahashi.okayama.jp", 13109 "tamano.okayama.jp", 13110 "tsuyama.okayama.jp", 13111 "wake.okayama.jp", 13112 "yakage.okayama.jp", 13113 "aguni.okinawa.jp", 13114 "ginowan.okinawa.jp", 13115 "ginoza.okinawa.jp", 13116 "gushikami.okinawa.jp", 13117 "haebaru.okinawa.jp", 13118 "higashi.okinawa.jp", 13119 "hirara.okinawa.jp", 13120 "iheya.okinawa.jp", 13121 "ishigaki.okinawa.jp", 13122 "ishikawa.okinawa.jp", 13123 "itoman.okinawa.jp", 13124 "izena.okinawa.jp", 13125 "kadena.okinawa.jp", 13126 "kin.okinawa.jp", 13127 "kitadaito.okinawa.jp", 13128 "kitanakagusuku.okinawa.jp", 13129 "kumejima.okinawa.jp", 13130 "kunigami.okinawa.jp", 13131 "minamidaito.okinawa.jp", 13132 "motobu.okinawa.jp", 13133 "nago.okinawa.jp", 13134 "naha.okinawa.jp", 13135 "nakagusuku.okinawa.jp", 13136 "nakijin.okinawa.jp", 13137 "nanjo.okinawa.jp", 13138 "nishihara.okinawa.jp", 13139 "ogimi.okinawa.jp", 13140 "okinawa.okinawa.jp", 13141 "onna.okinawa.jp", 13142 "shimoji.okinawa.jp", 13143 "taketomi.okinawa.jp", 13144 "tarama.okinawa.jp", 13145 "tokashiki.okinawa.jp", 13146 "tomigusuku.okinawa.jp", 13147 "tonaki.okinawa.jp", 13148 "urasoe.okinawa.jp", 13149 "uruma.okinawa.jp", 13150 "yaese.okinawa.jp", 13151 "yomitan.okinawa.jp", 13152 "yonabaru.okinawa.jp", 13153 "yonaguni.okinawa.jp", 13154 "zamami.okinawa.jp", 13155 "abeno.osaka.jp", 13156 "chihayaakasaka.osaka.jp", 13157 "chuo.osaka.jp", 13158 "daito.osaka.jp", 13159 "fujiidera.osaka.jp", 13160 "habikino.osaka.jp", 13161 "hannan.osaka.jp", 13162 "higashiosaka.osaka.jp", 13163 "higashisumiyoshi.osaka.jp", 13164 "higashiyodogawa.osaka.jp", 13165 "hirakata.osaka.jp", 13166 "ibaraki.osaka.jp", 13167 "ikeda.osaka.jp", 13168 "izumi.osaka.jp", 13169 "izumiotsu.osaka.jp", 13170 "izumisano.osaka.jp", 13171 "kadoma.osaka.jp", 13172 "kaizuka.osaka.jp", 13173 "kanan.osaka.jp", 13174 "kashiwara.osaka.jp", 13175 "katano.osaka.jp", 13176 "kawachinagano.osaka.jp", 13177 "kishiwada.osaka.jp", 13178 "kita.osaka.jp", 13179 "kumatori.osaka.jp", 13180 "matsubara.osaka.jp", 13181 "minato.osaka.jp", 13182 "minoh.osaka.jp", 13183 "misaki.osaka.jp", 13184 "moriguchi.osaka.jp", 13185 "neyagawa.osaka.jp", 13186 "nishi.osaka.jp", 13187 "nose.osaka.jp", 13188 "osakasayama.osaka.jp", 13189 "sakai.osaka.jp", 13190 "sayama.osaka.jp", 13191 "sennan.osaka.jp", 13192 "settsu.osaka.jp", 13193 "shijonawate.osaka.jp", 13194 "shimamoto.osaka.jp", 13195 "suita.osaka.jp", 13196 "tadaoka.osaka.jp", 13197 "taishi.osaka.jp", 13198 "tajiri.osaka.jp", 13199 "takaishi.osaka.jp", 13200 "takatsuki.osaka.jp", 13201 "tondabayashi.osaka.jp", 13202 "toyonaka.osaka.jp", 13203 "toyono.osaka.jp", 13204 "yao.osaka.jp", 13205 "ariake.saga.jp", 13206 "arita.saga.jp", 13207 "fukudomi.saga.jp", 13208 "genkai.saga.jp", 13209 "hamatama.saga.jp", 13210 "hizen.saga.jp", 13211 "imari.saga.jp", 13212 "kamimine.saga.jp", 13213 "kanzaki.saga.jp", 13214 "karatsu.saga.jp", 13215 "kashima.saga.jp", 13216 "kitagata.saga.jp", 13217 "kitahata.saga.jp", 13218 "kiyama.saga.jp", 13219 "kouhoku.saga.jp", 13220 "kyuragi.saga.jp", 13221 "nishiarita.saga.jp", 13222 "ogi.saga.jp", 13223 "omachi.saga.jp", 13224 "ouchi.saga.jp", 13225 "saga.saga.jp", 13226 "shiroishi.saga.jp", 13227 "taku.saga.jp", 13228 "tara.saga.jp", 13229 "tosu.saga.jp", 13230 "yoshinogari.saga.jp", 13231 "arakawa.saitama.jp", 13232 "asaka.saitama.jp", 13233 "chichibu.saitama.jp", 13234 "fujimi.saitama.jp", 13235 "fujimino.saitama.jp", 13236 "fukaya.saitama.jp", 13237 "hanno.saitama.jp", 13238 "hanyu.saitama.jp", 13239 "hasuda.saitama.jp", 13240 "hatogaya.saitama.jp", 13241 "hatoyama.saitama.jp", 13242 "hidaka.saitama.jp", 13243 "higashichichibu.saitama.jp", 13244 "higashimatsuyama.saitama.jp", 13245 "honjo.saitama.jp", 13246 "ina.saitama.jp", 13247 "iruma.saitama.jp", 13248 "iwatsuki.saitama.jp", 13249 "kamiizumi.saitama.jp", 13250 "kamikawa.saitama.jp", 13251 "kamisato.saitama.jp", 13252 "kasukabe.saitama.jp", 13253 "kawagoe.saitama.jp", 13254 "kawaguchi.saitama.jp", 13255 "kawajima.saitama.jp", 13256 "kazo.saitama.jp", 13257 "kitamoto.saitama.jp", 13258 "koshigaya.saitama.jp", 13259 "kounosu.saitama.jp", 13260 "kuki.saitama.jp", 13261 "kumagaya.saitama.jp", 13262 "matsubushi.saitama.jp", 13263 "minano.saitama.jp", 13264 "misato.saitama.jp", 13265 "miyashiro.saitama.jp", 13266 "miyoshi.saitama.jp", 13267 "moroyama.saitama.jp", 13268 "nagatoro.saitama.jp", 13269 "namegawa.saitama.jp", 13270 "niiza.saitama.jp", 13271 "ogano.saitama.jp", 13272 "ogawa.saitama.jp", 13273 "ogose.saitama.jp", 13274 "okegawa.saitama.jp", 13275 "omiya.saitama.jp", 13276 "otaki.saitama.jp", 13277 "ranzan.saitama.jp", 13278 "ryokami.saitama.jp", 13279 "saitama.saitama.jp", 13280 "sakado.saitama.jp", 13281 "satte.saitama.jp", 13282 "sayama.saitama.jp", 13283 "shiki.saitama.jp", 13284 "shiraoka.saitama.jp", 13285 "soka.saitama.jp", 13286 "sugito.saitama.jp", 13287 "toda.saitama.jp", 13288 "tokigawa.saitama.jp", 13289 "tokorozawa.saitama.jp", 13290 "tsurugashima.saitama.jp", 13291 "urawa.saitama.jp", 13292 "warabi.saitama.jp", 13293 "yashio.saitama.jp", 13294 "yokoze.saitama.jp", 13295 "yono.saitama.jp", 13296 "yorii.saitama.jp", 13297 "yoshida.saitama.jp", 13298 "yoshikawa.saitama.jp", 13299 "yoshimi.saitama.jp", 13300 "aisho.shiga.jp", 13301 "gamo.shiga.jp", 13302 "higashiomi.shiga.jp", 13303 "hikone.shiga.jp", 13304 "koka.shiga.jp", 13305 "konan.shiga.jp", 13306 "kosei.shiga.jp", 13307 "koto.shiga.jp", 13308 "kusatsu.shiga.jp", 13309 "maibara.shiga.jp", 13310 "moriyama.shiga.jp", 13311 "nagahama.shiga.jp", 13312 "nishiazai.shiga.jp", 13313 "notogawa.shiga.jp", 13314 "omihachiman.shiga.jp", 13315 "otsu.shiga.jp", 13316 "ritto.shiga.jp", 13317 "ryuoh.shiga.jp", 13318 "takashima.shiga.jp", 13319 "takatsuki.shiga.jp", 13320 "torahime.shiga.jp", 13321 "toyosato.shiga.jp", 13322 "yasu.shiga.jp", 13323 "akagi.shimane.jp", 13324 "ama.shimane.jp", 13325 "gotsu.shimane.jp", 13326 "hamada.shimane.jp", 13327 "higashiizumo.shimane.jp", 13328 "hikawa.shimane.jp", 13329 "hikimi.shimane.jp", 13330 "izumo.shimane.jp", 13331 "kakinoki.shimane.jp", 13332 "masuda.shimane.jp", 13333 "matsue.shimane.jp", 13334 "misato.shimane.jp", 13335 "nishinoshima.shimane.jp", 13336 "ohda.shimane.jp", 13337 "okinoshima.shimane.jp", 13338 "okuizumo.shimane.jp", 13339 "shimane.shimane.jp", 13340 "tamayu.shimane.jp", 13341 "tsuwano.shimane.jp", 13342 "unnan.shimane.jp", 13343 "yakumo.shimane.jp", 13344 "yasugi.shimane.jp", 13345 "yatsuka.shimane.jp", 13346 "arai.shizuoka.jp", 13347 "atami.shizuoka.jp", 13348 "fuji.shizuoka.jp", 13349 "fujieda.shizuoka.jp", 13350 "fujikawa.shizuoka.jp", 13351 "fujinomiya.shizuoka.jp", 13352 "fukuroi.shizuoka.jp", 13353 "gotemba.shizuoka.jp", 13354 "haibara.shizuoka.jp", 13355 "hamamatsu.shizuoka.jp", 13356 "higashiizu.shizuoka.jp", 13357 "ito.shizuoka.jp", 13358 "iwata.shizuoka.jp", 13359 "izu.shizuoka.jp", 13360 "izunokuni.shizuoka.jp", 13361 "kakegawa.shizuoka.jp", 13362 "kannami.shizuoka.jp", 13363 "kawanehon.shizuoka.jp", 13364 "kawazu.shizuoka.jp", 13365 "kikugawa.shizuoka.jp", 13366 "kosai.shizuoka.jp", 13367 "makinohara.shizuoka.jp", 13368 "matsuzaki.shizuoka.jp", 13369 "minamiizu.shizuoka.jp", 13370 "mishima.shizuoka.jp", 13371 "morimachi.shizuoka.jp", 13372 "nishiizu.shizuoka.jp", 13373 "numazu.shizuoka.jp", 13374 "omaezaki.shizuoka.jp", 13375 "shimada.shizuoka.jp", 13376 "shimizu.shizuoka.jp", 13377 "shimoda.shizuoka.jp", 13378 "shizuoka.shizuoka.jp", 13379 "susono.shizuoka.jp", 13380 "yaizu.shizuoka.jp", 13381 "yoshida.shizuoka.jp", 13382 "ashikaga.tochigi.jp", 13383 "bato.tochigi.jp", 13384 "haga.tochigi.jp", 13385 "ichikai.tochigi.jp", 13386 "iwafune.tochigi.jp", 13387 "kaminokawa.tochigi.jp", 13388 "kanuma.tochigi.jp", 13389 "karasuyama.tochigi.jp", 13390 "kuroiso.tochigi.jp", 13391 "mashiko.tochigi.jp", 13392 "mibu.tochigi.jp", 13393 "moka.tochigi.jp", 13394 "motegi.tochigi.jp", 13395 "nasu.tochigi.jp", 13396 "nasushiobara.tochigi.jp", 13397 "nikko.tochigi.jp", 13398 "nishikata.tochigi.jp", 13399 "nogi.tochigi.jp", 13400 "ohira.tochigi.jp", 13401 "ohtawara.tochigi.jp", 13402 "oyama.tochigi.jp", 13403 "sakura.tochigi.jp", 13404 "sano.tochigi.jp", 13405 "shimotsuke.tochigi.jp", 13406 "shioya.tochigi.jp", 13407 "takanezawa.tochigi.jp", 13408 "tochigi.tochigi.jp", 13409 "tsuga.tochigi.jp", 13410 "ujiie.tochigi.jp", 13411 "utsunomiya.tochigi.jp", 13412 "yaita.tochigi.jp", 13413 "aizumi.tokushima.jp", 13414 "anan.tokushima.jp", 13415 "ichiba.tokushima.jp", 13416 "itano.tokushima.jp", 13417 "kainan.tokushima.jp", 13418 "komatsushima.tokushima.jp", 13419 "matsushige.tokushima.jp", 13420 "mima.tokushima.jp", 13421 "minami.tokushima.jp", 13422 "miyoshi.tokushima.jp", 13423 "mugi.tokushima.jp", 13424 "nakagawa.tokushima.jp", 13425 "naruto.tokushima.jp", 13426 "sanagochi.tokushima.jp", 13427 "shishikui.tokushima.jp", 13428 "tokushima.tokushima.jp", 13429 "wajiki.tokushima.jp", 13430 "adachi.tokyo.jp", 13431 "akiruno.tokyo.jp", 13432 "akishima.tokyo.jp", 13433 "aogashima.tokyo.jp", 13434 "arakawa.tokyo.jp", 13435 "bunkyo.tokyo.jp", 13436 "chiyoda.tokyo.jp", 13437 "chofu.tokyo.jp", 13438 "chuo.tokyo.jp", 13439 "edogawa.tokyo.jp", 13440 "fuchu.tokyo.jp", 13441 "fussa.tokyo.jp", 13442 "hachijo.tokyo.jp", 13443 "hachioji.tokyo.jp", 13444 "hamura.tokyo.jp", 13445 "higashikurume.tokyo.jp", 13446 "higashimurayama.tokyo.jp", 13447 "higashiyamato.tokyo.jp", 13448 "hino.tokyo.jp", 13449 "hinode.tokyo.jp", 13450 "hinohara.tokyo.jp", 13451 "inagi.tokyo.jp", 13452 "itabashi.tokyo.jp", 13453 "katsushika.tokyo.jp", 13454 "kita.tokyo.jp", 13455 "kiyose.tokyo.jp", 13456 "kodaira.tokyo.jp", 13457 "koganei.tokyo.jp", 13458 "kokubunji.tokyo.jp", 13459 "komae.tokyo.jp", 13460 "koto.tokyo.jp", 13461 "kouzushima.tokyo.jp", 13462 "kunitachi.tokyo.jp", 13463 "machida.tokyo.jp", 13464 "meguro.tokyo.jp", 13465 "minato.tokyo.jp", 13466 "mitaka.tokyo.jp", 13467 "mizuho.tokyo.jp", 13468 "musashimurayama.tokyo.jp", 13469 "musashino.tokyo.jp", 13470 "nakano.tokyo.jp", 13471 "nerima.tokyo.jp", 13472 "ogasawara.tokyo.jp", 13473 "okutama.tokyo.jp", 13474 "ome.tokyo.jp", 13475 "oshima.tokyo.jp", 13476 "ota.tokyo.jp", 13477 "setagaya.tokyo.jp", 13478 "shibuya.tokyo.jp", 13479 "shinagawa.tokyo.jp", 13480 "shinjuku.tokyo.jp", 13481 "suginami.tokyo.jp", 13482 "sumida.tokyo.jp", 13483 "tachikawa.tokyo.jp", 13484 "taito.tokyo.jp", 13485 "tama.tokyo.jp", 13486 "toshima.tokyo.jp", 13487 "chizu.tottori.jp", 13488 "hino.tottori.jp", 13489 "kawahara.tottori.jp", 13490 "koge.tottori.jp", 13491 "kotoura.tottori.jp", 13492 "misasa.tottori.jp", 13493 "nanbu.tottori.jp", 13494 "nichinan.tottori.jp", 13495 "sakaiminato.tottori.jp", 13496 "tottori.tottori.jp", 13497 "wakasa.tottori.jp", 13498 "yazu.tottori.jp", 13499 "yonago.tottori.jp", 13500 "asahi.toyama.jp", 13501 "fuchu.toyama.jp", 13502 "fukumitsu.toyama.jp", 13503 "funahashi.toyama.jp", 13504 "himi.toyama.jp", 13505 "imizu.toyama.jp", 13506 "inami.toyama.jp", 13507 "johana.toyama.jp", 13508 "kamiichi.toyama.jp", 13509 "kurobe.toyama.jp", 13510 "nakaniikawa.toyama.jp", 13511 "namerikawa.toyama.jp", 13512 "nanto.toyama.jp", 13513 "nyuzen.toyama.jp", 13514 "oyabe.toyama.jp", 13515 "taira.toyama.jp", 13516 "takaoka.toyama.jp", 13517 "tateyama.toyama.jp", 13518 "toga.toyama.jp", 13519 "tonami.toyama.jp", 13520 "toyama.toyama.jp", 13521 "unazuki.toyama.jp", 13522 "uozu.toyama.jp", 13523 "yamada.toyama.jp", 13524 "arida.wakayama.jp", 13525 "aridagawa.wakayama.jp", 13526 "gobo.wakayama.jp", 13527 "hashimoto.wakayama.jp", 13528 "hidaka.wakayama.jp", 13529 "hirogawa.wakayama.jp", 13530 "inami.wakayama.jp", 13531 "iwade.wakayama.jp", 13532 "kainan.wakayama.jp", 13533 "kamitonda.wakayama.jp", 13534 "katsuragi.wakayama.jp", 13535 "kimino.wakayama.jp", 13536 "kinokawa.wakayama.jp", 13537 "kitayama.wakayama.jp", 13538 "koya.wakayama.jp", 13539 "koza.wakayama.jp", 13540 "kozagawa.wakayama.jp", 13541 "kudoyama.wakayama.jp", 13542 "kushimoto.wakayama.jp", 13543 "mihama.wakayama.jp", 13544 "misato.wakayama.jp", 13545 "nachikatsuura.wakayama.jp", 13546 "shingu.wakayama.jp", 13547 "shirahama.wakayama.jp", 13548 "taiji.wakayama.jp", 13549 "tanabe.wakayama.jp", 13550 "wakayama.wakayama.jp", 13551 "yuasa.wakayama.jp", 13552 "yura.wakayama.jp", 13553 "asahi.yamagata.jp", 13554 "funagata.yamagata.jp", 13555 "higashine.yamagata.jp", 13556 "iide.yamagata.jp", 13557 "kahoku.yamagata.jp", 13558 "kaminoyama.yamagata.jp", 13559 "kaneyama.yamagata.jp", 13560 "kawanishi.yamagata.jp", 13561 "mamurogawa.yamagata.jp", 13562 "mikawa.yamagata.jp", 13563 "murayama.yamagata.jp", 13564 "nagai.yamagata.jp", 13565 "nakayama.yamagata.jp", 13566 "nanyo.yamagata.jp", 13567 "nishikawa.yamagata.jp", 13568 "obanazawa.yamagata.jp", 13569 "oe.yamagata.jp", 13570 "oguni.yamagata.jp", 13571 "ohkura.yamagata.jp", 13572 "oishida.yamagata.jp", 13573 "sagae.yamagata.jp", 13574 "sakata.yamagata.jp", 13575 "sakegawa.yamagata.jp", 13576 "shinjo.yamagata.jp", 13577 "shirataka.yamagata.jp", 13578 "shonai.yamagata.jp", 13579 "takahata.yamagata.jp", 13580 "tendo.yamagata.jp", 13581 "tozawa.yamagata.jp", 13582 "tsuruoka.yamagata.jp", 13583 "yamagata.yamagata.jp", 13584 "yamanobe.yamagata.jp", 13585 "yonezawa.yamagata.jp", 13586 "yuza.yamagata.jp", 13587 "abu.yamaguchi.jp", 13588 "hagi.yamaguchi.jp", 13589 "hikari.yamaguchi.jp", 13590 "hofu.yamaguchi.jp", 13591 "iwakuni.yamaguchi.jp", 13592 "kudamatsu.yamaguchi.jp", 13593 "mitou.yamaguchi.jp", 13594 "nagato.yamaguchi.jp", 13595 "oshima.yamaguchi.jp", 13596 "shimonoseki.yamaguchi.jp", 13597 "shunan.yamaguchi.jp", 13598 "tabuse.yamaguchi.jp", 13599 "tokuyama.yamaguchi.jp", 13600 "toyota.yamaguchi.jp", 13601 "ube.yamaguchi.jp", 13602 "yuu.yamaguchi.jp", 13603 "chuo.yamanashi.jp", 13604 "doshi.yamanashi.jp", 13605 "fuefuki.yamanashi.jp", 13606 "fujikawa.yamanashi.jp", 13607 "fujikawaguchiko.yamanashi.jp", 13608 "fujiyoshida.yamanashi.jp", 13609 "hayakawa.yamanashi.jp", 13610 "hokuto.yamanashi.jp", 13611 "ichikawamisato.yamanashi.jp", 13612 "kai.yamanashi.jp", 13613 "kofu.yamanashi.jp", 13614 "koshu.yamanashi.jp", 13615 "kosuge.yamanashi.jp", 13616 "minami-alps.yamanashi.jp", 13617 "minobu.yamanashi.jp", 13618 "nakamichi.yamanashi.jp", 13619 "nanbu.yamanashi.jp", 13620 "narusawa.yamanashi.jp", 13621 "nirasaki.yamanashi.jp", 13622 "nishikatsura.yamanashi.jp", 13623 "oshino.yamanashi.jp", 13624 "otsuki.yamanashi.jp", 13625 "showa.yamanashi.jp", 13626 "tabayama.yamanashi.jp", 13627 "tsuru.yamanashi.jp", 13628 "uenohara.yamanashi.jp", 13629 "yamanakako.yamanashi.jp", 13630 "yamanashi.yamanashi.jp", 13631 "ke", 13632 "ac.ke", 13633 "co.ke", 13634 "go.ke", 13635 "info.ke", 13636 "me.ke", 13637 "mobi.ke", 13638 "ne.ke", 13639 "or.ke", 13640 "sc.ke", 13641 "kg", 13642 "com.kg", 13643 "edu.kg", 13644 "gov.kg", 13645 "mil.kg", 13646 "net.kg", 13647 "org.kg", 13648 "*.kh", 13649 "ki", 13650 "biz.ki", 13651 "com.ki", 13652 "edu.ki", 13653 "gov.ki", 13654 "info.ki", 13655 "net.ki", 13656 "org.ki", 13657 "km", 13658 "ass.km", 13659 "com.km", 13660 "edu.km", 13661 "gov.km", 13662 "mil.km", 13663 "nom.km", 13664 "org.km", 13665 "prd.km", 13666 "tm.km", 13667 "asso.km", 13668 "coop.km", 13669 "gouv.km", 13670 "medecin.km", 13671 "notaires.km", 13672 "pharmaciens.km", 13673 "presse.km", 13674 "veterinaire.km", 13675 "kn", 13676 "edu.kn", 13677 "gov.kn", 13678 "net.kn", 13679 "org.kn", 13680 "kp", 13681 "com.kp", 13682 "edu.kp", 13683 "gov.kp", 13684 "org.kp", 13685 "rep.kp", 13686 "tra.kp", 13687 "kr", 13688 "ac.kr", 13689 "co.kr", 13690 "es.kr", 13691 "go.kr", 13692 "hs.kr", 13693 "kg.kr", 13694 "mil.kr", 13695 "ms.kr", 13696 "ne.kr", 13697 "or.kr", 13698 "pe.kr", 13699 "re.kr", 13700 "sc.kr", 13701 "busan.kr", 13702 "chungbuk.kr", 13703 "chungnam.kr", 13704 "daegu.kr", 13705 "daejeon.kr", 13706 "gangwon.kr", 13707 "gwangju.kr", 13708 "gyeongbuk.kr", 13709 "gyeonggi.kr", 13710 "gyeongnam.kr", 13711 "incheon.kr", 13712 "jeju.kr", 13713 "jeonbuk.kr", 13714 "jeonnam.kr", 13715 "seoul.kr", 13716 "ulsan.kr", 13717 "kw", 13718 "com.kw", 13719 "edu.kw", 13720 "emb.kw", 13721 "gov.kw", 13722 "ind.kw", 13723 "net.kw", 13724 "org.kw", 13725 "ky", 13726 "com.ky", 13727 "edu.ky", 13728 "net.ky", 13729 "org.ky", 13730 "kz", 13731 "com.kz", 13732 "edu.kz", 13733 "gov.kz", 13734 "mil.kz", 13735 "net.kz", 13736 "org.kz", 13737 "la", 13738 "com.la", 13739 "edu.la", 13740 "gov.la", 13741 "info.la", 13742 "int.la", 13743 "net.la", 13744 "org.la", 13745 "per.la", 13746 "lb", 13747 "com.lb", 13748 "edu.lb", 13749 "gov.lb", 13750 "net.lb", 13751 "org.lb", 13752 "lc", 13753 "co.lc", 13754 "com.lc", 13755 "edu.lc", 13756 "gov.lc", 13757 "net.lc", 13758 "org.lc", 13759 "li", 13760 "lk", 13761 "ac.lk", 13762 "assn.lk", 13763 "com.lk", 13764 "edu.lk", 13765 "gov.lk", 13766 "grp.lk", 13767 "hotel.lk", 13768 "int.lk", 13769 "ltd.lk", 13770 "net.lk", 13771 "ngo.lk", 13772 "org.lk", 13773 "sch.lk", 13774 "soc.lk", 13775 "web.lk", 13776 "lr", 13777 "com.lr", 13778 "edu.lr", 13779 "gov.lr", 13780 "net.lr", 13781 "org.lr", 13782 "ls", 13783 "ac.ls", 13784 "biz.ls", 13785 "co.ls", 13786 "edu.ls", 13787 "gov.ls", 13788 "info.ls", 13789 "net.ls", 13790 "org.ls", 13791 "sc.ls", 13792 "lt", 13793 "gov.lt", 13794 "lu", 13795 "lv", 13796 "asn.lv", 13797 "com.lv", 13798 "conf.lv", 13799 "edu.lv", 13800 "gov.lv", 13801 "id.lv", 13802 "mil.lv", 13803 "net.lv", 13804 "org.lv", 13805 "ly", 13806 "com.ly", 13807 "edu.ly", 13808 "gov.ly", 13809 "id.ly", 13810 "med.ly", 13811 "net.ly", 13812 "org.ly", 13813 "plc.ly", 13814 "sch.ly", 13815 "ma", 13816 "ac.ma", 13817 "co.ma", 13818 "gov.ma", 13819 "net.ma", 13820 "org.ma", 13821 "press.ma", 13822 "mc", 13823 "asso.mc", 13824 "tm.mc", 13825 "md", 13826 "me", 13827 "ac.me", 13828 "co.me", 13829 "edu.me", 13830 "gov.me", 13831 "its.me", 13832 "net.me", 13833 "org.me", 13834 "priv.me", 13835 "mg", 13836 "co.mg", 13837 "com.mg", 13838 "edu.mg", 13839 "gov.mg", 13840 "mil.mg", 13841 "nom.mg", 13842 "org.mg", 13843 "prd.mg", 13844 "mh", 13845 "mil", 13846 "mk", 13847 "com.mk", 13848 "edu.mk", 13849 "gov.mk", 13850 "inf.mk", 13851 "name.mk", 13852 "net.mk", 13853 "org.mk", 13854 "ml", 13855 "com.ml", 13856 "edu.ml", 13857 "gouv.ml", 13858 "gov.ml", 13859 "net.ml", 13860 "org.ml", 13861 "presse.ml", 13862 "*.mm", 13863 "mn", 13864 "edu.mn", 13865 "gov.mn", 13866 "org.mn", 13867 "mo", 13868 "com.mo", 13869 "edu.mo", 13870 "gov.mo", 13871 "net.mo", 13872 "org.mo", 13873 "mobi", 13874 "mp", 13875 "mq", 13876 "mr", 13877 "gov.mr", 13878 "ms", 13879 "com.ms", 13880 "edu.ms", 13881 "gov.ms", 13882 "net.ms", 13883 "org.ms", 13884 "mt", 13885 "com.mt", 13886 "edu.mt", 13887 "net.mt", 13888 "org.mt", 13889 "mu", 13890 "ac.mu", 13891 "co.mu", 13892 "com.mu", 13893 "gov.mu", 13894 "net.mu", 13895 "or.mu", 13896 "org.mu", 13897 "museum", 13898 "mv", 13899 "aero.mv", 13900 "biz.mv", 13901 "com.mv", 13902 "coop.mv", 13903 "edu.mv", 13904 "gov.mv", 13905 "info.mv", 13906 "int.mv", 13907 "mil.mv", 13908 "museum.mv", 13909 "name.mv", 13910 "net.mv", 13911 "org.mv", 13912 "pro.mv", 13913 "mw", 13914 "ac.mw", 13915 "biz.mw", 13916 "co.mw", 13917 "com.mw", 13918 "coop.mw", 13919 "edu.mw", 13920 "gov.mw", 13921 "int.mw", 13922 "net.mw", 13923 "org.mw", 13924 "mx", 13925 "com.mx", 13926 "edu.mx", 13927 "gob.mx", 13928 "net.mx", 13929 "org.mx", 13930 "my", 13931 "biz.my", 13932 "com.my", 13933 "edu.my", 13934 "gov.my", 13935 "mil.my", 13936 "name.my", 13937 "net.my", 13938 "org.my", 13939 "mz", 13940 "ac.mz", 13941 "adv.mz", 13942 "co.mz", 13943 "edu.mz", 13944 "gov.mz", 13945 "mil.mz", 13946 "net.mz", 13947 "org.mz", 13948 "na", 13949 "alt.na", 13950 "co.na", 13951 "com.na", 13952 "gov.na", 13953 "net.na", 13954 "org.na", 13955 "name", 13956 "nc", 13957 "asso.nc", 13958 "nom.nc", 13959 "ne", 13960 "net", 13961 "nf", 13962 "arts.nf", 13963 "com.nf", 13964 "firm.nf", 13965 "info.nf", 13966 "net.nf", 13967 "other.nf", 13968 "per.nf", 13969 "rec.nf", 13970 "store.nf", 13971 "web.nf", 13972 "ng", 13973 "com.ng", 13974 "edu.ng", 13975 "gov.ng", 13976 "i.ng", 13977 "mil.ng", 13978 "mobi.ng", 13979 "name.ng", 13980 "net.ng", 13981 "org.ng", 13982 "sch.ng", 13983 "ni", 13984 "ac.ni", 13985 "biz.ni", 13986 "co.ni", 13987 "com.ni", 13988 "edu.ni", 13989 "gob.ni", 13990 "in.ni", 13991 "info.ni", 13992 "int.ni", 13993 "mil.ni", 13994 "net.ni", 13995 "nom.ni", 13996 "org.ni", 13997 "web.ni", 13998 "nl", 13999 "no", 14000 "fhs.no", 14001 "folkebibl.no", 14002 "fylkesbibl.no", 14003 "idrett.no", 14004 "museum.no", 14005 "priv.no", 14006 "vgs.no", 14007 "dep.no", 14008 "herad.no", 14009 "kommune.no", 14010 "mil.no", 14011 "stat.no", 14012 "aa.no", 14013 "ah.no", 14014 "bu.no", 14015 "fm.no", 14016 "hl.no", 14017 "hm.no", 14018 "jan-mayen.no", 14019 "mr.no", 14020 "nl.no", 14021 "nt.no", 14022 "of.no", 14023 "ol.no", 14024 "oslo.no", 14025 "rl.no", 14026 "sf.no", 14027 "st.no", 14028 "svalbard.no", 14029 "tm.no", 14030 "tr.no", 14031 "va.no", 14032 "vf.no", 14033 "gs.aa.no", 14034 "gs.ah.no", 14035 "gs.bu.no", 14036 "gs.fm.no", 14037 "gs.hl.no", 14038 "gs.hm.no", 14039 "gs.jan-mayen.no", 14040 "gs.mr.no", 14041 "gs.nl.no", 14042 "gs.nt.no", 14043 "gs.of.no", 14044 "gs.ol.no", 14045 "gs.oslo.no", 14046 "gs.rl.no", 14047 "gs.sf.no", 14048 "gs.st.no", 14049 "gs.svalbard.no", 14050 "gs.tm.no", 14051 "gs.tr.no", 14052 "gs.va.no", 14053 "gs.vf.no", 14054 "akrehamn.no", 14055 "Ã¥krehamn.no", 14056 "algard.no", 14057 "Ã¥lgÃ¥rd.no", 14058 "arna.no", 14059 "bronnoysund.no", 14060 "brønnøysund.no", 14061 "brumunddal.no", 14062 "bryne.no", 14063 "drobak.no", 14064 "drøbak.no", 14065 "egersund.no", 14066 "fetsund.no", 14067 "floro.no", 14068 "florø.no", 14069 "fredrikstad.no", 14070 "hokksund.no", 14071 "honefoss.no", 14072 "hønefoss.no", 14073 "jessheim.no", 14074 "jorpeland.no", 14075 "jørpeland.no", 14076 "kirkenes.no", 14077 "kopervik.no", 14078 "krokstadelva.no", 14079 "langevag.no", 14080 "langevÃ¥g.no", 14081 "leirvik.no", 14082 "mjondalen.no", 14083 "mjøndalen.no", 14084 "mo-i-rana.no", 14085 "mosjoen.no", 14086 "mosjøen.no", 14087 "nesoddtangen.no", 14088 "orkanger.no", 14089 "osoyro.no", 14090 "osøyro.no", 14091 "raholt.no", 14092 "rÃ¥holt.no", 14093 "sandnessjoen.no", 14094 "sandnessjøen.no", 14095 "skedsmokorset.no", 14096 "slattum.no", 14097 "spjelkavik.no", 14098 "stathelle.no", 14099 "stavern.no", 14100 "stjordalshalsen.no", 14101 "stjørdalshalsen.no", 14102 "tananger.no", 14103 "tranby.no", 14104 "vossevangen.no", 14105 "aarborte.no", 14106 "aejrie.no", 14107 "afjord.no", 14108 "Ã¥fjord.no", 14109 "agdenes.no", 14110 "nes.akershus.no", 14111 "aknoluokta.no", 14112 "ákÅoluokta.no", 14113 "al.no", 14114 "Ã¥l.no", 14115 "alaheadju.no", 14116 "álaheadju.no", 14117 "alesund.no", 14118 "Ã¥lesund.no", 14119 "alstahaug.no", 14120 "alta.no", 14121 "áltá.no", 14122 "alvdal.no", 14123 "amli.no", 14124 "Ã¥mli.no", 14125 "amot.no", 14126 "Ã¥mot.no", 14127 "andasuolo.no", 14128 "andebu.no", 14129 "andoy.no", 14130 "andøy.no", 14131 "ardal.no", 14132 "Ã¥rdal.no", 14133 "aremark.no", 14134 "arendal.no", 14135 "Ã¥s.no", 14136 "aseral.no", 14137 "Ã¥seral.no", 14138 "asker.no", 14139 "askim.no", 14140 "askoy.no", 14141 "askøy.no", 14142 "askvoll.no", 14143 "asnes.no", 14144 "Ã¥snes.no", 14145 "audnedaln.no", 14146 "aukra.no", 14147 "aure.no", 14148 "aurland.no", 14149 "aurskog-holand.no", 14150 "aurskog-høland.no", 14151 "austevoll.no", 14152 "austrheim.no", 14153 "averoy.no", 14154 "averøy.no", 14155 "badaddja.no", 14156 "bÃ¥dÃ¥ddjÃ¥.no", 14157 "bærum.no", 14158 "bahcavuotna.no", 14159 "báhcavuotna.no", 14160 "bahccavuotna.no", 14161 "báhccavuotna.no", 14162 "baidar.no", 14163 "báidár.no", 14164 "bajddar.no", 14165 "bájddar.no", 14166 "balat.no", 14167 "bálát.no", 14168 "balestrand.no", 14169 "ballangen.no", 14170 "balsfjord.no", 14171 "bamble.no", 14172 "bardu.no", 14173 "barum.no", 14174 "batsfjord.no", 14175 "bÃ¥tsfjord.no", 14176 "bearalvahki.no", 14177 "bearalváhki.no", 14178 "beardu.no", 14179 "beiarn.no", 14180 "berg.no", 14181 "bergen.no", 14182 "berlevag.no", 14183 "berlevÃ¥g.no", 14184 "bievat.no", 14185 "bievát.no", 14186 "bindal.no", 14187 "birkenes.no", 14188 "bjarkoy.no", 14189 "bjarkøy.no", 14190 "bjerkreim.no", 14191 "bjugn.no", 14192 "bodo.no", 14193 "bodø.no", 14194 "bokn.no", 14195 "bomlo.no", 14196 "bømlo.no", 14197 "bremanger.no", 14198 "bronnoy.no", 14199 "brønnøy.no", 14200 "budejju.no", 14201 "nes.buskerud.no", 14202 "bygland.no", 14203 "bykle.no", 14204 "cahcesuolo.no", 14205 "Äáhcesuolo.no", 14206 "davvenjarga.no", 14207 "davvenjárga.no", 14208 "davvesiida.no", 14209 "deatnu.no", 14210 "dielddanuorri.no", 14211 "divtasvuodna.no", 14212 "divttasvuotna.no", 14213 "donna.no", 14214 "dønna.no", 14215 "dovre.no", 14216 "drammen.no", 14217 "drangedal.no", 14218 "dyroy.no", 14219 "dyrøy.no", 14220 "eid.no", 14221 "eidfjord.no", 14222 "eidsberg.no", 14223 "eidskog.no", 14224 "eidsvoll.no", 14225 "eigersund.no", 14226 "elverum.no", 14227 "enebakk.no", 14228 "engerdal.no", 14229 "etne.no", 14230 "etnedal.no", 14231 "evenassi.no", 14232 "evenášši.no", 14233 "evenes.no", 14234 "evje-og-hornnes.no", 14235 "farsund.no", 14236 "fauske.no", 14237 "fedje.no", 14238 "fet.no", 14239 "finnoy.no", 14240 "finnøy.no", 14241 "fitjar.no", 14242 "fjaler.no", 14243 "fjell.no", 14244 "fla.no", 14245 "flÃ¥.no", 14246 "flakstad.no", 14247 "flatanger.no", 14248 "flekkefjord.no", 14249 "flesberg.no", 14250 "flora.no", 14251 "folldal.no", 14252 "forde.no", 14253 "førde.no", 14254 "forsand.no", 14255 "fosnes.no", 14256 "fræna.no", 14257 "frana.no", 14258 "frei.no", 14259 "frogn.no", 14260 "froland.no", 14261 "frosta.no", 14262 "froya.no", 14263 "frøya.no", 14264 "fuoisku.no", 14265 "fuossko.no", 14266 "fusa.no", 14267 "fyresdal.no", 14268 "gaivuotna.no", 14269 "gáivuotna.no", 14270 "galsa.no", 14271 "gálsá.no", 14272 "gamvik.no", 14273 "gangaviika.no", 14274 "gáÅgaviika.no", 14275 "gaular.no", 14276 "gausdal.no", 14277 "giehtavuoatna.no", 14278 "gildeskal.no", 14279 "gildeskÃ¥l.no", 14280 "giske.no", 14281 "gjemnes.no", 14282 "gjerdrum.no", 14283 "gjerstad.no", 14284 "gjesdal.no", 14285 "gjovik.no", 14286 "gjøvik.no", 14287 "gloppen.no", 14288 "gol.no", 14289 "gran.no", 14290 "grane.no", 14291 "granvin.no", 14292 "gratangen.no", 14293 "grimstad.no", 14294 "grong.no", 14295 "grue.no", 14296 "gulen.no", 14297 "guovdageaidnu.no", 14298 "ha.no", 14299 "hÃ¥.no", 14300 "habmer.no", 14301 "hábmer.no", 14302 "hadsel.no", 14303 "hægebostad.no", 14304 "hagebostad.no", 14305 "halden.no", 14306 "halsa.no", 14307 "hamar.no", 14308 "hamaroy.no", 14309 "hammarfeasta.no", 14310 "hámmárfeasta.no", 14311 "hammerfest.no", 14312 "hapmir.no", 14313 "hápmir.no", 14314 "haram.no", 14315 "hareid.no", 14316 "harstad.no", 14317 "hasvik.no", 14318 "hattfjelldal.no", 14319 "haugesund.no", 14320 "os.hedmark.no", 14321 "valer.hedmark.no", 14322 "vÃ¥ler.hedmark.no", 14323 "hemne.no", 14324 "hemnes.no", 14325 "hemsedal.no", 14326 "hitra.no", 14327 "hjartdal.no", 14328 "hjelmeland.no", 14329 "hobol.no", 14330 "hobøl.no", 14331 "hof.no", 14332 "hol.no", 14333 "hole.no", 14334 "holmestrand.no", 14335 "holtalen.no", 14336 "holtÃ¥len.no", 14337 "os.hordaland.no", 14338 "hornindal.no", 14339 "horten.no", 14340 "hoyanger.no", 14341 "høyanger.no", 14342 "hoylandet.no", 14343 "høylandet.no", 14344 "hurdal.no", 14345 "hurum.no", 14346 "hvaler.no", 14347 "hyllestad.no", 14348 "ibestad.no", 14349 "inderoy.no", 14350 "inderøy.no", 14351 "iveland.no", 14352 "ivgu.no", 14353 "jevnaker.no", 14354 "jolster.no", 14355 "jølster.no", 14356 "jondal.no", 14357 "kafjord.no", 14358 "kÃ¥fjord.no", 14359 "karasjohka.no", 14360 "kárášjohka.no", 14361 "karasjok.no", 14362 "karlsoy.no", 14363 "karmoy.no", 14364 "karmøy.no", 14365 "kautokeino.no", 14366 "klabu.no", 14367 "klæbu.no", 14368 "klepp.no", 14369 "kongsberg.no", 14370 "kongsvinger.no", 14371 "kraanghke.no", 14372 "krÃ¥anghke.no", 14373 "kragero.no", 14374 "kragerø.no", 14375 "kristiansand.no", 14376 "kristiansund.no", 14377 "krodsherad.no", 14378 "krødsherad.no", 14379 "kvæfjord.no", 14380 "kvænangen.no", 14381 "kvafjord.no", 14382 "kvalsund.no", 14383 "kvam.no", 14384 "kvanangen.no", 14385 "kvinesdal.no", 14386 "kvinnherad.no", 14387 "kviteseid.no", 14388 "kvitsoy.no", 14389 "kvitsøy.no", 14390 "laakesvuemie.no", 14391 "lærdal.no", 14392 "lahppi.no", 14393 "láhppi.no", 14394 "lardal.no", 14395 "larvik.no", 14396 "lavagis.no", 14397 "lavangen.no", 14398 "leangaviika.no", 14399 "leaÅgaviika.no", 14400 "lebesby.no", 14401 "leikanger.no", 14402 "leirfjord.no", 14403 "leka.no", 14404 "leksvik.no", 14405 "lenvik.no", 14406 "lerdal.no", 14407 "lesja.no", 14408 "levanger.no", 14409 "lier.no", 14410 "lierne.no", 14411 "lillehammer.no", 14412 "lillesand.no", 14413 "lindas.no", 14414 "lindÃ¥s.no", 14415 "lindesnes.no", 14416 "loabat.no", 14417 "loabát.no", 14418 "lodingen.no", 14419 "lødingen.no", 14420 "lom.no", 14421 "loppa.no", 14422 "lorenskog.no", 14423 "lørenskog.no", 14424 "loten.no", 14425 "løten.no", 14426 "lund.no", 14427 "lunner.no", 14428 "luroy.no", 14429 "lurøy.no", 14430 "luster.no", 14431 "lyngdal.no", 14432 "lyngen.no", 14433 "malatvuopmi.no", 14434 "málatvuopmi.no", 14435 "malselv.no", 14436 "mÃ¥lselv.no", 14437 "malvik.no", 14438 "mandal.no", 14439 "marker.no", 14440 "marnardal.no", 14441 "masfjorden.no", 14442 "masoy.no", 14443 "mÃ¥søy.no", 14444 "matta-varjjat.no", 14445 "mátta-várjjat.no", 14446 "meland.no", 14447 "meldal.no", 14448 "melhus.no", 14449 "meloy.no", 14450 "meløy.no", 14451 "meraker.no", 14452 "merÃ¥ker.no", 14453 "midsund.no", 14454 "midtre-gauldal.no", 14455 "moareke.no", 14456 "moÃ¥reke.no", 14457 "modalen.no", 14458 "modum.no", 14459 "molde.no", 14460 "heroy.more-og-romsdal.no", 14461 "sande.more-og-romsdal.no", 14462 "herøy.møre-og-romsdal.no", 14463 "sande.møre-og-romsdal.no", 14464 "moskenes.no", 14465 "moss.no", 14466 "mosvik.no", 14467 "muosat.no", 14468 "muosát.no", 14469 "naamesjevuemie.no", 14470 "nååmesjevuemie.no", 14471 "nærøy.no", 14472 "namdalseid.no", 14473 "namsos.no", 14474 "namsskogan.no", 14475 "nannestad.no", 14476 "naroy.no", 14477 "narviika.no", 14478 "narvik.no", 14479 "naustdal.no", 14480 "navuotna.no", 14481 "návuotna.no", 14482 "nedre-eiker.no", 14483 "nesna.no", 14484 "nesodden.no", 14485 "nesseby.no", 14486 "nesset.no", 14487 "nissedal.no", 14488 "nittedal.no", 14489 "nord-aurdal.no", 14490 "nord-fron.no", 14491 "nord-odal.no", 14492 "norddal.no", 14493 "nordkapp.no", 14494 "bo.nordland.no", 14495 "bø.nordland.no", 14496 "heroy.nordland.no", 14497 "herøy.nordland.no", 14498 "nordre-land.no", 14499 "nordreisa.no", 14500 "nore-og-uvdal.no", 14501 "notodden.no", 14502 "notteroy.no", 14503 "nøtterøy.no", 14504 "odda.no", 14505 "oksnes.no", 14506 "øksnes.no", 14507 "omasvuotna.no", 14508 "oppdal.no", 14509 "oppegard.no", 14510 "oppegÃ¥rd.no", 14511 "orkdal.no", 14512 "orland.no", 14513 "ørland.no", 14514 "orskog.no", 14515 "ørskog.no", 14516 "orsta.no", 14517 "ørsta.no", 14518 "osen.no", 14519 "osteroy.no", 14520 "osterøy.no", 14521 "valer.ostfold.no", 14522 "vÃ¥ler.østfold.no", 14523 "ostre-toten.no", 14524 "østre-toten.no", 14525 "overhalla.no", 14526 "ovre-eiker.no", 14527 "øvre-eiker.no", 14528 "oyer.no", 14529 "øyer.no", 14530 "oygarden.no", 14531 "øygarden.no", 14532 "oystre-slidre.no", 14533 "øystre-slidre.no", 14534 "porsanger.no", 14535 "porsangu.no", 14536 "porsáÅgu.no", 14537 "porsgrunn.no", 14538 "rade.no", 14539 "rÃ¥de.no", 14540 "radoy.no", 14541 "radøy.no", 14542 "rælingen.no", 14543 "rahkkeravju.no", 14544 "ráhkkerávju.no", 14545 "raisa.no", 14546 "ráisa.no", 14547 "rakkestad.no", 14548 "ralingen.no", 14549 "rana.no", 14550 "randaberg.no", 14551 "rauma.no", 14552 "rendalen.no", 14553 "rennebu.no", 14554 "rennesoy.no", 14555 "rennesøy.no", 14556 "rindal.no", 14557 "ringebu.no", 14558 "ringerike.no", 14559 "ringsaker.no", 14560 "risor.no", 14561 "risør.no", 14562 "rissa.no", 14563 "roan.no", 14564 "rodoy.no", 14565 "rødøy.no", 14566 "rollag.no", 14567 "romsa.no", 14568 "romskog.no", 14569 "rømskog.no", 14570 "roros.no", 14571 "røros.no", 14572 "rost.no", 14573 "røst.no", 14574 "royken.no", 14575 "røyken.no", 14576 "royrvik.no", 14577 "røyrvik.no", 14578 "ruovat.no", 14579 "rygge.no", 14580 "salangen.no", 14581 "salat.no", 14582 "sálat.no", 14583 "sálát.no", 14584 "saltdal.no", 14585 "samnanger.no", 14586 "sandefjord.no", 14587 "sandnes.no", 14588 "sandoy.no", 14589 "sandøy.no", 14590 "sarpsborg.no", 14591 "sauda.no", 14592 "sauherad.no", 14593 "sel.no", 14594 "selbu.no", 14595 "selje.no", 14596 "seljord.no", 14597 "siellak.no", 14598 "sigdal.no", 14599 "siljan.no", 14600 "sirdal.no", 14601 "skanit.no", 14602 "skánit.no", 14603 "skanland.no", 14604 "skÃ¥nland.no", 14605 "skaun.no", 14606 "skedsmo.no", 14607 "ski.no", 14608 "skien.no", 14609 "skierva.no", 14610 "skiervá.no", 14611 "skiptvet.no", 14612 "skjak.no", 14613 "skjÃ¥k.no", 14614 "skjervoy.no", 14615 "skjervøy.no", 14616 "skodje.no", 14617 "smola.no", 14618 "smøla.no", 14619 "snaase.no", 14620 "snÃ¥ase.no", 14621 "snasa.no", 14622 "snÃ¥sa.no", 14623 "snillfjord.no", 14624 "snoasa.no", 14625 "sogndal.no", 14626 "sogne.no", 14627 "søgne.no", 14628 "sokndal.no", 14629 "sola.no", 14630 "solund.no", 14631 "somna.no", 14632 "sømna.no", 14633 "sondre-land.no", 14634 "søndre-land.no", 14635 "songdalen.no", 14636 "sor-aurdal.no", 14637 "sør-aurdal.no", 14638 "sor-fron.no", 14639 "sør-fron.no", 14640 "sor-odal.no", 14641 "sør-odal.no", 14642 "sor-varanger.no", 14643 "sør-varanger.no", 14644 "sorfold.no", 14645 "sørfold.no", 14646 "sorreisa.no", 14647 "sørreisa.no", 14648 "sortland.no", 14649 "sorum.no", 14650 "sørum.no", 14651 "spydeberg.no", 14652 "stange.no", 14653 "stavanger.no", 14654 "steigen.no", 14655 "steinkjer.no", 14656 "stjordal.no", 14657 "stjørdal.no", 14658 "stokke.no", 14659 "stor-elvdal.no", 14660 "stord.no", 14661 "stordal.no", 14662 "storfjord.no", 14663 "strand.no", 14664 "stranda.no", 14665 "stryn.no", 14666 "sula.no", 14667 "suldal.no", 14668 "sund.no", 14669 "sunndal.no", 14670 "surnadal.no", 14671 "sveio.no", 14672 "svelvik.no", 14673 "sykkylven.no", 14674 "tana.no", 14675 "bo.telemark.no", 14676 "bø.telemark.no", 14677 "time.no", 14678 "tingvoll.no", 14679 "tinn.no", 14680 "tjeldsund.no", 14681 "tjome.no", 14682 "tjøme.no", 14683 "tokke.no", 14684 "tolga.no", 14685 "tonsberg.no", 14686 "tønsberg.no", 14687 "torsken.no", 14688 "træna.no", 14689 "trana.no", 14690 "tranoy.no", 14691 "tranøy.no", 14692 "troandin.no", 14693 "trogstad.no", 14694 "trøgstad.no", 14695 "tromsa.no", 14696 "tromso.no", 14697 "tromsø.no", 14698 "trondheim.no", 14699 "trysil.no", 14700 "tvedestrand.no", 14701 "tydal.no", 14702 "tynset.no", 14703 "tysfjord.no", 14704 "tysnes.no", 14705 "tysvær.no", 14706 "tysvar.no", 14707 "ullensaker.no", 14708 "ullensvang.no", 14709 "ulvik.no", 14710 "unjarga.no", 14711 "unjárga.no", 14712 "utsira.no", 14713 "vaapste.no", 14714 "vadso.no", 14715 "vadsø.no", 14716 "værøy.no", 14717 "vaga.no", 14718 "vÃ¥gÃ¥.no", 14719 "vagan.no", 14720 "vÃ¥gan.no", 14721 "vagsoy.no", 14722 "vÃ¥gsøy.no", 14723 "vaksdal.no", 14724 "valle.no", 14725 "vang.no", 14726 "vanylven.no", 14727 "vardo.no", 14728 "vardø.no", 14729 "varggat.no", 14730 "várggát.no", 14731 "varoy.no", 14732 "vefsn.no", 14733 "vega.no", 14734 "vegarshei.no", 14735 "vegÃ¥rshei.no", 14736 "vennesla.no", 14737 "verdal.no", 14738 "verran.no", 14739 "vestby.no", 14740 "sande.vestfold.no", 14741 "vestnes.no", 14742 "vestre-slidre.no", 14743 "vestre-toten.no", 14744 "vestvagoy.no", 14745 "vestvÃ¥gøy.no", 14746 "vevelstad.no", 14747 "vik.no", 14748 "vikna.no", 14749 "vindafjord.no", 14750 "voagat.no", 14751 "volda.no", 14752 "voss.no", 14753 "*.np", 14754 "nr", 14755 "biz.nr", 14756 "com.nr", 14757 "edu.nr", 14758 "gov.nr", 14759 "info.nr", 14760 "net.nr", 14761 "org.nr", 14762 "nu", 14763 "nz", 14764 "ac.nz", 14765 "co.nz", 14766 "cri.nz", 14767 "geek.nz", 14768 "gen.nz", 14769 "govt.nz", 14770 "health.nz", 14771 "iwi.nz", 14772 "kiwi.nz", 14773 "maori.nz", 14774 "mÄori.nz", 14775 "mil.nz", 14776 "net.nz", 14777 "org.nz", 14778 "parliament.nz", 14779 "school.nz", 14780 "om", 14781 "co.om", 14782 "com.om", 14783 "edu.om", 14784 "gov.om", 14785 "med.om", 14786 "museum.om", 14787 "net.om", 14788 "org.om", 14789 "pro.om", 14790 "onion", 14791 "org", 14792 "pa", 14793 "abo.pa", 14794 "ac.pa", 14795 "com.pa", 14796 "edu.pa", 14797 "gob.pa", 14798 "ing.pa", 14799 "med.pa", 14800 "net.pa", 14801 "nom.pa", 14802 "org.pa", 14803 "sld.pa", 14804 "pe", 14805 "com.pe", 14806 "edu.pe", 14807 "gob.pe", 14808 "mil.pe", 14809 "net.pe", 14810 "nom.pe", 14811 "org.pe", 14812 "pf", 14813 "com.pf", 14814 "edu.pf", 14815 "org.pf", 14816 "*.pg", 14817 "ph", 14818 "com.ph", 14819 "edu.ph", 14820 "gov.ph", 14821 "i.ph", 14822 "mil.ph", 14823 "net.ph", 14824 "ngo.ph", 14825 "org.ph", 14826 "pk", 14827 "ac.pk", 14828 "biz.pk", 14829 "com.pk", 14830 "edu.pk", 14831 "fam.pk", 14832 "gkp.pk", 14833 "gob.pk", 14834 "gog.pk", 14835 "gok.pk", 14836 "gon.pk", 14837 "gop.pk", 14838 "gos.pk", 14839 "gov.pk", 14840 "net.pk", 14841 "org.pk", 14842 "web.pk", 14843 "pl", 14844 "com.pl", 14845 "net.pl", 14846 "org.pl", 14847 "agro.pl", 14848 "aid.pl", 14849 "atm.pl", 14850 "auto.pl", 14851 "biz.pl", 14852 "edu.pl", 14853 "gmina.pl", 14854 "gsm.pl", 14855 "info.pl", 14856 "mail.pl", 14857 "media.pl", 14858 "miasta.pl", 14859 "mil.pl", 14860 "nieruchomosci.pl", 14861 "nom.pl", 14862 "pc.pl", 14863 "powiat.pl", 14864 "priv.pl", 14865 "realestate.pl", 14866 "rel.pl", 14867 "sex.pl", 14868 "shop.pl", 14869 "sklep.pl", 14870 "sos.pl", 14871 "szkola.pl", 14872 "targi.pl", 14873 "tm.pl", 14874 "tourism.pl", 14875 "travel.pl", 14876 "turystyka.pl", 14877 "gov.pl", 14878 "ap.gov.pl", 14879 "griw.gov.pl", 14880 "ic.gov.pl", 14881 "is.gov.pl", 14882 "kmpsp.gov.pl", 14883 "konsulat.gov.pl", 14884 "kppsp.gov.pl", 14885 "kwp.gov.pl", 14886 "kwpsp.gov.pl", 14887 "mup.gov.pl", 14888 "mw.gov.pl", 14889 "oia.gov.pl", 14890 "oirm.gov.pl", 14891 "oke.gov.pl", 14892 "oow.gov.pl", 14893 "oschr.gov.pl", 14894 "oum.gov.pl", 14895 "pa.gov.pl", 14896 "pinb.gov.pl", 14897 "piw.gov.pl", 14898 "po.gov.pl", 14899 "pr.gov.pl", 14900 "psp.gov.pl", 14901 "psse.gov.pl", 14902 "pup.gov.pl", 14903 "rzgw.gov.pl", 14904 "sa.gov.pl", 14905 "sdn.gov.pl", 14906 "sko.gov.pl", 14907 "so.gov.pl", 14908 "sr.gov.pl", 14909 "starostwo.gov.pl", 14910 "ug.gov.pl", 14911 "ugim.gov.pl", 14912 "um.gov.pl", 14913 "umig.gov.pl", 14914 "upow.gov.pl", 14915 "uppo.gov.pl", 14916 "us.gov.pl", 14917 "uw.gov.pl", 14918 "uzs.gov.pl", 14919 "wif.gov.pl", 14920 "wiih.gov.pl", 14921 "winb.gov.pl", 14922 "wios.gov.pl", 14923 "witd.gov.pl", 14924 "wiw.gov.pl", 14925 "wkz.gov.pl", 14926 "wsa.gov.pl", 14927 "wskr.gov.pl", 14928 "wsse.gov.pl", 14929 "wuoz.gov.pl", 14930 "wzmiuw.gov.pl", 14931 "zp.gov.pl", 14932 "zpisdn.gov.pl", 14933 "augustow.pl", 14934 "babia-gora.pl", 14935 "bedzin.pl", 14936 "beskidy.pl", 14937 "bialowieza.pl", 14938 "bialystok.pl", 14939 "bielawa.pl", 14940 "bieszczady.pl", 14941 "boleslawiec.pl", 14942 "bydgoszcz.pl", 14943 "bytom.pl", 14944 "cieszyn.pl", 14945 "czeladz.pl", 14946 "czest.pl", 14947 "dlugoleka.pl", 14948 "elblag.pl", 14949 "elk.pl", 14950 "glogow.pl", 14951 "gniezno.pl", 14952 "gorlice.pl", 14953 "grajewo.pl", 14954 "ilawa.pl", 14955 "jaworzno.pl", 14956 "jelenia-gora.pl", 14957 "jgora.pl", 14958 "kalisz.pl", 14959 "karpacz.pl", 14960 "kartuzy.pl", 14961 "kaszuby.pl", 14962 "katowice.pl", 14963 "kazimierz-dolny.pl", 14964 "kepno.pl", 14965 "ketrzyn.pl", 14966 "klodzko.pl", 14967 "kobierzyce.pl", 14968 "kolobrzeg.pl", 14969 "konin.pl", 14970 "konskowola.pl", 14971 "kutno.pl", 14972 "lapy.pl", 14973 "lebork.pl", 14974 "legnica.pl", 14975 "lezajsk.pl", 14976 "limanowa.pl", 14977 "lomza.pl", 14978 "lowicz.pl", 14979 "lubin.pl", 14980 "lukow.pl", 14981 "malbork.pl", 14982 "malopolska.pl", 14983 "mazowsze.pl", 14984 "mazury.pl", 14985 "mielec.pl", 14986 "mielno.pl", 14987 "mragowo.pl", 14988 "naklo.pl", 14989 "nowaruda.pl", 14990 "nysa.pl", 14991 "olawa.pl", 14992 "olecko.pl", 14993 "olkusz.pl", 14994 "olsztyn.pl", 14995 "opoczno.pl", 14996 "opole.pl", 14997 "ostroda.pl", 14998 "ostroleka.pl", 14999 "ostrowiec.pl", 15000 "ostrowwlkp.pl", 15001 "pila.pl", 15002 "pisz.pl", 15003 "podhale.pl", 15004 "podlasie.pl", 15005 "polkowice.pl", 15006 "pomorskie.pl", 15007 "pomorze.pl", 15008 "prochowice.pl", 15009 "pruszkow.pl", 15010 "przeworsk.pl", 15011 "pulawy.pl", 15012 "radom.pl", 15013 "rawa-maz.pl", 15014 "rybnik.pl", 15015 "rzeszow.pl", 15016 "sanok.pl", 15017 "sejny.pl", 15018 "skoczow.pl", 15019 "slask.pl", 15020 "slupsk.pl", 15021 "sosnowiec.pl", 15022 "stalowa-wola.pl", 15023 "starachowice.pl", 15024 "stargard.pl", 15025 "suwalki.pl", 15026 "swidnica.pl", 15027 "swiebodzin.pl", 15028 "swinoujscie.pl", 15029 "szczecin.pl", 15030 "szczytno.pl", 15031 "tarnobrzeg.pl", 15032 "tgory.pl", 15033 "turek.pl", 15034 "tychy.pl", 15035 "ustka.pl", 15036 "walbrzych.pl", 15037 "warmia.pl", 15038 "warszawa.pl", 15039 "waw.pl", 15040 "wegrow.pl", 15041 "wielun.pl", 15042 "wlocl.pl", 15043 "wloclawek.pl", 15044 "wodzislaw.pl", 15045 "wolomin.pl", 15046 "wroclaw.pl", 15047 "zachpomor.pl", 15048 "zagan.pl", 15049 "zarow.pl", 15050 "zgora.pl", 15051 "zgorzelec.pl", 15052 "pm", 15053 "pn", 15054 "co.pn", 15055 "edu.pn", 15056 "gov.pn", 15057 "net.pn", 15058 "org.pn", 15059 "post", 15060 "pr", 15061 "biz.pr", 15062 "com.pr", 15063 "edu.pr", 15064 "gov.pr", 15065 "info.pr", 15066 "isla.pr", 15067 "name.pr", 15068 "net.pr", 15069 "org.pr", 15070 "pro.pr", 15071 "ac.pr", 15072 "est.pr", 15073 "prof.pr", 15074 "pro", 15075 "aaa.pro", 15076 "aca.pro", 15077 "acct.pro", 15078 "avocat.pro", 15079 "bar.pro", 15080 "cpa.pro", 15081 "eng.pro", 15082 "jur.pro", 15083 "law.pro", 15084 "med.pro", 15085 "recht.pro", 15086 "ps", 15087 "com.ps", 15088 "edu.ps", 15089 "gov.ps", 15090 "net.ps", 15091 "org.ps", 15092 "plo.ps", 15093 "sec.ps", 15094 "pt", 15095 "com.pt", 15096 "edu.pt", 15097 "gov.pt", 15098 "int.pt", 15099 "net.pt", 15100 "nome.pt", 15101 "org.pt", 15102 "publ.pt", 15103 "pw", 15104 "belau.pw", 15105 "co.pw", 15106 "ed.pw", 15107 "go.pw", 15108 "or.pw", 15109 "py", 15110 "com.py", 15111 "coop.py", 15112 "edu.py", 15113 "gov.py", 15114 "mil.py", 15115 "net.py", 15116 "org.py", 15117 "qa", 15118 "com.qa", 15119 "edu.qa", 15120 "gov.qa", 15121 "mil.qa", 15122 "name.qa", 15123 "net.qa", 15124 "org.qa", 15125 "sch.qa", 15126 "re", 15127 "asso.re", 15128 "com.re", 15129 "ro", 15130 "arts.ro", 15131 "com.ro", 15132 "firm.ro", 15133 "info.ro", 15134 "nom.ro", 15135 "nt.ro", 15136 "org.ro", 15137 "rec.ro", 15138 "store.ro", 15139 "tm.ro", 15140 "www.ro", 15141 "rs", 15142 "ac.rs", 15143 "co.rs", 15144 "edu.rs", 15145 "gov.rs", 15146 "in.rs", 15147 "org.rs", 15148 "ru", 15149 "rw", 15150 "ac.rw", 15151 "co.rw", 15152 "coop.rw", 15153 "gov.rw", 15154 "mil.rw", 15155 "net.rw", 15156 "org.rw", 15157 "sa", 15158 "com.sa", 15159 "edu.sa", 15160 "gov.sa", 15161 "med.sa", 15162 "net.sa", 15163 "org.sa", 15164 "pub.sa", 15165 "sch.sa", 15166 "sb", 15167 "com.sb", 15168 "edu.sb", 15169 "gov.sb", 15170 "net.sb", 15171 "org.sb", 15172 "sc", 15173 "com.sc", 15174 "edu.sc", 15175 "gov.sc", 15176 "net.sc", 15177 "org.sc", 15178 "sd", 15179 "com.sd", 15180 "edu.sd", 15181 "gov.sd", 15182 "info.sd", 15183 "med.sd", 15184 "net.sd", 15185 "org.sd", 15186 "tv.sd", 15187 "se", 15188 "a.se", 15189 "ac.se", 15190 "b.se", 15191 "bd.se", 15192 "brand.se", 15193 "c.se", 15194 "d.se", 15195 "e.se", 15196 "f.se", 15197 "fh.se", 15198 "fhsk.se", 15199 "fhv.se", 15200 "g.se", 15201 "h.se", 15202 "i.se", 15203 "k.se", 15204 "komforb.se", 15205 "kommunalforbund.se", 15206 "komvux.se", 15207 "l.se", 15208 "lanbib.se", 15209 "m.se", 15210 "n.se", 15211 "naturbruksgymn.se", 15212 "o.se", 15213 "org.se", 15214 "p.se", 15215 "parti.se", 15216 "pp.se", 15217 "press.se", 15218 "r.se", 15219 "s.se", 15220 "t.se", 15221 "tm.se", 15222 "u.se", 15223 "w.se", 15224 "x.se", 15225 "y.se", 15226 "z.se", 15227 "sg", 15228 "com.sg", 15229 "edu.sg", 15230 "gov.sg", 15231 "net.sg", 15232 "org.sg", 15233 "sh", 15234 "com.sh", 15235 "gov.sh", 15236 "mil.sh", 15237 "net.sh", 15238 "org.sh", 15239 "si", 15240 "sj", 15241 "sk", 15242 "sl", 15243 "com.sl", 15244 "edu.sl", 15245 "gov.sl", 15246 "net.sl", 15247 "org.sl", 15248 "sm", 15249 "sn", 15250 "art.sn", 15251 "com.sn", 15252 "edu.sn", 15253 "gouv.sn", 15254 "org.sn", 15255 "perso.sn", 15256 "univ.sn", 15257 "so", 15258 "com.so", 15259 "edu.so", 15260 "gov.so", 15261 "me.so", 15262 "net.so", 15263 "org.so", 15264 "sr", 15265 "ss", 15266 "biz.ss", 15267 "co.ss", 15268 "com.ss", 15269 "edu.ss", 15270 "gov.ss", 15271 "me.ss", 15272 "net.ss", 15273 "org.ss", 15274 "sch.ss", 15275 "st", 15276 "co.st", 15277 "com.st", 15278 "consulado.st", 15279 "edu.st", 15280 "embaixada.st", 15281 "mil.st", 15282 "net.st", 15283 "org.st", 15284 "principe.st", 15285 "saotome.st", 15286 "store.st", 15287 "su", 15288 "sv", 15289 "com.sv", 15290 "edu.sv", 15291 "gob.sv", 15292 "org.sv", 15293 "red.sv", 15294 "sx", 15295 "gov.sx", 15296 "sy", 15297 "com.sy", 15298 "edu.sy", 15299 "gov.sy", 15300 "mil.sy", 15301 "net.sy", 15302 "org.sy", 15303 "sz", 15304 "ac.sz", 15305 "co.sz", 15306 "org.sz", 15307 "tc", 15308 "td", 15309 "tel", 15310 "tf", 15311 "tg", 15312 "th", 15313 "ac.th", 15314 "co.th", 15315 "go.th", 15316 "in.th", 15317 "mi.th", 15318 "net.th", 15319 "or.th", 15320 "tj", 15321 "ac.tj", 15322 "biz.tj", 15323 "co.tj", 15324 "com.tj", 15325 "edu.tj", 15326 "go.tj", 15327 "gov.tj", 15328 "int.tj", 15329 "mil.tj", 15330 "name.tj", 15331 "net.tj", 15332 "nic.tj", 15333 "org.tj", 15334 "test.tj", 15335 "web.tj", 15336 "tk", 15337 "tl", 15338 "gov.tl", 15339 "tm", 15340 "co.tm", 15341 "com.tm", 15342 "edu.tm", 15343 "gov.tm", 15344 "mil.tm", 15345 "net.tm", 15346 "nom.tm", 15347 "org.tm", 15348 "tn", 15349 "com.tn", 15350 "ens.tn", 15351 "fin.tn", 15352 "gov.tn", 15353 "ind.tn", 15354 "info.tn", 15355 "intl.tn", 15356 "mincom.tn", 15357 "nat.tn", 15358 "net.tn", 15359 "org.tn", 15360 "perso.tn", 15361 "tourism.tn", 15362 "to", 15363 "com.to", 15364 "edu.to", 15365 "gov.to", 15366 "mil.to", 15367 "net.to", 15368 "org.to", 15369 "tr", 15370 "av.tr", 15371 "bbs.tr", 15372 "bel.tr", 15373 "biz.tr", 15374 "com.tr", 15375 "dr.tr", 15376 "edu.tr", 15377 "gen.tr", 15378 "gov.tr", 15379 "info.tr", 15380 "k12.tr", 15381 "kep.tr", 15382 "mil.tr", 15383 "name.tr", 15384 "net.tr", 15385 "org.tr", 15386 "pol.tr", 15387 "tel.tr", 15388 "tsk.tr", 15389 "tv.tr", 15390 "web.tr", 15391 "nc.tr", 15392 "gov.nc.tr", 15393 "tt", 15394 "biz.tt", 15395 "co.tt", 15396 "com.tt", 15397 "edu.tt", 15398 "gov.tt", 15399 "info.tt", 15400 "mil.tt", 15401 "name.tt", 15402 "net.tt", 15403 "org.tt", 15404 "pro.tt", 15405 "tv", 15406 "tw", 15407 "club.tw", 15408 "com.tw", 15409 "ebiz.tw", 15410 "edu.tw", 15411 "game.tw", 15412 "gov.tw", 15413 "idv.tw", 15414 "mil.tw", 15415 "net.tw", 15416 "org.tw", 15417 "tz", 15418 "ac.tz", 15419 "co.tz", 15420 "go.tz", 15421 "hotel.tz", 15422 "info.tz", 15423 "me.tz", 15424 "mil.tz", 15425 "mobi.tz", 15426 "ne.tz", 15427 "or.tz", 15428 "sc.tz", 15429 "tv.tz", 15430 "ua", 15431 "com.ua", 15432 "edu.ua", 15433 "gov.ua", 15434 "in.ua", 15435 "net.ua", 15436 "org.ua", 15437 "cherkassy.ua", 15438 "cherkasy.ua", 15439 "chernigov.ua", 15440 "chernihiv.ua", 15441 "chernivtsi.ua", 15442 "chernovtsy.ua", 15443 "ck.ua", 15444 "cn.ua", 15445 "cr.ua", 15446 "crimea.ua", 15447 "cv.ua", 15448 "dn.ua", 15449 "dnepropetrovsk.ua", 15450 "dnipropetrovsk.ua", 15451 "donetsk.ua", 15452 "dp.ua", 15453 "if.ua", 15454 "ivano-frankivsk.ua", 15455 "kh.ua", 15456 "kharkiv.ua", 15457 "kharkov.ua", 15458 "kherson.ua", 15459 "khmelnitskiy.ua", 15460 "khmelnytskyi.ua", 15461 "kiev.ua", 15462 "kirovograd.ua", 15463 "km.ua", 15464 "kr.ua", 15465 "kropyvnytskyi.ua", 15466 "krym.ua", 15467 "ks.ua", 15468 "kv.ua", 15469 "kyiv.ua", 15470 "lg.ua", 15471 "lt.ua", 15472 "lugansk.ua", 15473 "luhansk.ua", 15474 "lutsk.ua", 15475 "lv.ua", 15476 "lviv.ua", 15477 "mk.ua", 15478 "mykolaiv.ua", 15479 "nikolaev.ua", 15480 "od.ua", 15481 "odesa.ua", 15482 "odessa.ua", 15483 "pl.ua", 15484 "poltava.ua", 15485 "rivne.ua", 15486 "rovno.ua", 15487 "rv.ua", 15488 "sb.ua", 15489 "sebastopol.ua", 15490 "sevastopol.ua", 15491 "sm.ua", 15492 "sumy.ua", 15493 "te.ua", 15494 "ternopil.ua", 15495 "uz.ua", 15496 "uzhgorod.ua", 15497 "uzhhorod.ua", 15498 "vinnica.ua", 15499 "vinnytsia.ua", 15500 "vn.ua", 15501 "volyn.ua", 15502 "yalta.ua", 15503 "zakarpattia.ua", 15504 "zaporizhzhe.ua", 15505 "zaporizhzhia.ua", 15506 "zhitomir.ua", 15507 "zhytomyr.ua", 15508 "zp.ua", 15509 "zt.ua", 15510 "ug", 15511 "ac.ug", 15512 "co.ug", 15513 "com.ug", 15514 "go.ug", 15515 "ne.ug", 15516 "or.ug", 15517 "org.ug", 15518 "sc.ug", 15519 "uk", 15520 "ac.uk", 15521 "co.uk", 15522 "gov.uk", 15523 "ltd.uk", 15524 "me.uk", 15525 "net.uk", 15526 "nhs.uk", 15527 "org.uk", 15528 "plc.uk", 15529 "police.uk", 15530 "*.sch.uk", 15531 "us", 15532 "dni.us", 15533 "fed.us", 15534 "isa.us", 15535 "kids.us", 15536 "nsn.us", 15537 "ak.us", 15538 "al.us", 15539 "ar.us", 15540 "as.us", 15541 "az.us", 15542 "ca.us", 15543 "co.us", 15544 "ct.us", 15545 "dc.us", 15546 "de.us", 15547 "fl.us", 15548 "ga.us", 15549 "gu.us", 15550 "hi.us", 15551 "ia.us", 15552 "id.us", 15553 "il.us", 15554 "in.us", 15555 "ks.us", 15556 "ky.us", 15557 "la.us", 15558 "ma.us", 15559 "md.us", 15560 "me.us", 15561 "mi.us", 15562 "mn.us", 15563 "mo.us", 15564 "ms.us", 15565 "mt.us", 15566 "nc.us", 15567 "nd.us", 15568 "ne.us", 15569 "nh.us", 15570 "nj.us", 15571 "nm.us", 15572 "nv.us", 15573 "ny.us", 15574 "oh.us", 15575 "ok.us", 15576 "or.us", 15577 "pa.us", 15578 "pr.us", 15579 "ri.us", 15580 "sc.us", 15581 "sd.us", 15582 "tn.us", 15583 "tx.us", 15584 "ut.us", 15585 "va.us", 15586 "vi.us", 15587 "vt.us", 15588 "wa.us", 15589 "wi.us", 15590 "wv.us", 15591 "wy.us", 15592 "k12.ak.us", 15593 "k12.al.us", 15594 "k12.ar.us", 15595 "k12.as.us", 15596 "k12.az.us", 15597 "k12.ca.us", 15598 "k12.co.us", 15599 "k12.ct.us", 15600 "k12.dc.us", 15601 "k12.fl.us", 15602 "k12.ga.us", 15603 "k12.gu.us", 15604 "k12.ia.us", 15605 "k12.id.us", 15606 "k12.il.us", 15607 "k12.in.us", 15608 "k12.ks.us", 15609 "k12.ky.us", 15610 "k12.la.us", 15611 "k12.ma.us", 15612 "k12.md.us", 15613 "k12.me.us", 15614 "k12.mi.us", 15615 "k12.mn.us", 15616 "k12.mo.us", 15617 "k12.ms.us", 15618 "k12.mt.us", 15619 "k12.nc.us", 15620 "k12.ne.us", 15621 "k12.nh.us", 15622 "k12.nj.us", 15623 "k12.nm.us", 15624 "k12.nv.us", 15625 "k12.ny.us", 15626 "k12.oh.us", 15627 "k12.ok.us", 15628 "k12.or.us", 15629 "k12.pa.us", 15630 "k12.pr.us", 15631 "k12.sc.us", 15632 "k12.tn.us", 15633 "k12.tx.us", 15634 "k12.ut.us", 15635 "k12.va.us", 15636 "k12.vi.us", 15637 "k12.vt.us", 15638 "k12.wa.us", 15639 "k12.wi.us", 15640 "cc.ak.us", 15641 "lib.ak.us", 15642 "cc.al.us", 15643 "lib.al.us", 15644 "cc.ar.us", 15645 "lib.ar.us", 15646 "cc.as.us", 15647 "lib.as.us", 15648 "cc.az.us", 15649 "lib.az.us", 15650 "cc.ca.us", 15651 "lib.ca.us", 15652 "cc.co.us", 15653 "lib.co.us", 15654 "cc.ct.us", 15655 "lib.ct.us", 15656 "cc.dc.us", 15657 "lib.dc.us", 15658 "cc.de.us", 15659 "cc.fl.us", 15660 "cc.ga.us", 15661 "cc.gu.us", 15662 "cc.hi.us", 15663 "cc.ia.us", 15664 "cc.id.us", 15665 "cc.il.us", 15666 "cc.in.us", 15667 "cc.ks.us", 15668 "cc.ky.us", 15669 "cc.la.us", 15670 "cc.ma.us", 15671 "cc.md.us", 15672 "cc.me.us", 15673 "cc.mi.us", 15674 "cc.mn.us", 15675 "cc.mo.us", 15676 "cc.ms.us", 15677 "cc.mt.us", 15678 "cc.nc.us", 15679 "cc.nd.us", 15680 "cc.ne.us", 15681 "cc.nh.us", 15682 "cc.nj.us", 15683 "cc.nm.us", 15684 "cc.nv.us", 15685 "cc.ny.us", 15686 "cc.oh.us", 15687 "cc.ok.us", 15688 "cc.or.us", 15689 "cc.pa.us", 15690 "cc.pr.us", 15691 "cc.ri.us", 15692 "cc.sc.us", 15693 "cc.sd.us", 15694 "cc.tn.us", 15695 "cc.tx.us", 15696 "cc.ut.us", 15697 "cc.va.us", 15698 "cc.vi.us", 15699 "cc.vt.us", 15700 "cc.wa.us", 15701 "cc.wi.us", 15702 "cc.wv.us", 15703 "cc.wy.us", 15704 "k12.wy.us", 15705 "lib.fl.us", 15706 "lib.ga.us", 15707 "lib.gu.us", 15708 "lib.hi.us", 15709 "lib.ia.us", 15710 "lib.id.us", 15711 "lib.il.us", 15712 "lib.in.us", 15713 "lib.ks.us", 15714 "lib.ky.us", 15715 "lib.la.us", 15716 "lib.ma.us", 15717 "lib.md.us", 15718 "lib.me.us", 15719 "lib.mi.us", 15720 "lib.mn.us", 15721 "lib.mo.us", 15722 "lib.ms.us", 15723 "lib.mt.us", 15724 "lib.nc.us", 15725 "lib.nd.us", 15726 "lib.ne.us", 15727 "lib.nh.us", 15728 "lib.nj.us", 15729 "lib.nm.us", 15730 "lib.nv.us", 15731 "lib.ny.us", 15732 "lib.oh.us", 15733 "lib.ok.us", 15734 "lib.or.us", 15735 "lib.pa.us", 15736 "lib.pr.us", 15737 "lib.ri.us", 15738 "lib.sc.us", 15739 "lib.sd.us", 15740 "lib.tn.us", 15741 "lib.tx.us", 15742 "lib.ut.us", 15743 "lib.va.us", 15744 "lib.vi.us", 15745 "lib.vt.us", 15746 "lib.wa.us", 15747 "lib.wi.us", 15748 "lib.wy.us", 15749 "chtr.k12.ma.us", 15750 "paroch.k12.ma.us", 15751 "pvt.k12.ma.us", 15752 "ann-arbor.mi.us", 15753 "cog.mi.us", 15754 "dst.mi.us", 15755 "eaton.mi.us", 15756 "gen.mi.us", 15757 "mus.mi.us", 15758 "tec.mi.us", 15759 "washtenaw.mi.us", 15760 "uy", 15761 "com.uy", 15762 "edu.uy", 15763 "gub.uy", 15764 "mil.uy", 15765 "net.uy", 15766 "org.uy", 15767 "uz", 15768 "co.uz", 15769 "com.uz", 15770 "net.uz", 15771 "org.uz", 15772 "va", 15773 "vc", 15774 "com.vc", 15775 "edu.vc", 15776 "gov.vc", 15777 "mil.vc", 15778 "net.vc", 15779 "org.vc", 15780 "ve", 15781 "arts.ve", 15782 "bib.ve", 15783 "co.ve", 15784 "com.ve", 15785 "e12.ve", 15786 "edu.ve", 15787 "firm.ve", 15788 "gob.ve", 15789 "gov.ve", 15790 "info.ve", 15791 "int.ve", 15792 "mil.ve", 15793 "net.ve", 15794 "nom.ve", 15795 "org.ve", 15796 "rar.ve", 15797 "rec.ve", 15798 "store.ve", 15799 "tec.ve", 15800 "web.ve", 15801 "vg", 15802 "vi", 15803 "co.vi", 15804 "com.vi", 15805 "k12.vi", 15806 "net.vi", 15807 "org.vi", 15808 "vn", 15809 "ac.vn", 15810 "ai.vn", 15811 "biz.vn", 15812 "com.vn", 15813 "edu.vn", 15814 "gov.vn", 15815 "health.vn", 15816 "id.vn", 15817 "info.vn", 15818 "int.vn", 15819 "io.vn", 15820 "name.vn", 15821 "net.vn", 15822 "org.vn", 15823 "pro.vn", 15824 "angiang.vn", 15825 "bacgiang.vn", 15826 "backan.vn", 15827 "baclieu.vn", 15828 "bacninh.vn", 15829 "baria-vungtau.vn", 15830 "bentre.vn", 15831 "binhdinh.vn", 15832 "binhduong.vn", 15833 "binhphuoc.vn", 15834 "binhthuan.vn", 15835 "camau.vn", 15836 "cantho.vn", 15837 "caobang.vn", 15838 "daklak.vn", 15839 "daknong.vn", 15840 "danang.vn", 15841 "dienbien.vn", 15842 "dongnai.vn", 15843 "dongthap.vn", 15844 "gialai.vn", 15845 "hagiang.vn", 15846 "haiduong.vn", 15847 "haiphong.vn", 15848 "hanam.vn", 15849 "hanoi.vn", 15850 "hatinh.vn", 15851 "haugiang.vn", 15852 "hoabinh.vn", 15853 "hungyen.vn", 15854 "khanhhoa.vn", 15855 "kiengiang.vn", 15856 "kontum.vn", 15857 "laichau.vn", 15858 "lamdong.vn", 15859 "langson.vn", 15860 "laocai.vn", 15861 "longan.vn", 15862 "namdinh.vn", 15863 "nghean.vn", 15864 "ninhbinh.vn", 15865 "ninhthuan.vn", 15866 "phutho.vn", 15867 "phuyen.vn", 15868 "quangbinh.vn", 15869 "quangnam.vn", 15870 "quangngai.vn", 15871 "quangninh.vn", 15872 "quangtri.vn", 15873 "soctrang.vn", 15874 "sonla.vn", 15875 "tayninh.vn", 15876 "thaibinh.vn", 15877 "thainguyen.vn", 15878 "thanhhoa.vn", 15879 "thanhphohochiminh.vn", 15880 "thuathienhue.vn", 15881 "tiengiang.vn", 15882 "travinh.vn", 15883 "tuyenquang.vn", 15884 "vinhlong.vn", 15885 "vinhphuc.vn", 15886 "yenbai.vn", 15887 "vu", 15888 "com.vu", 15889 "edu.vu", 15890 "net.vu", 15891 "org.vu", 15892 "wf", 15893 "ws", 15894 "com.ws", 15895 "edu.ws", 15896 "gov.ws", 15897 "net.ws", 15898 "org.ws", 15899 "yt", 15900 "ا٠ارات", 15901 "Õ°Õ¡Õµ", 15902 "বাà¦à¦²à¦¾", 15903 "бг", 15904 "Ø§ÙØ¨ØØ±ÙÙ", 15905 "бел", 15906 "ä¸å½", 15907 "ä¸å", 15908 "Ø§ÙØ¬Ø²Ø§Ø¦Ø±", 15909 "٠صر", 15910 "еÑ", 15911 "ÎµÏ ", 15912 "Ù ÙØ±ÙتاÙÙØ§", 15913 "áá", 15914 "ελ", 15915 "馿¸¯", 15916 "å人.馿¸¯", 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 "xxx", 15988 "ye", 15989 "com.ye", 15990 "edu.ye", 15991 "gov.ye", 15992 "mil.ye", 15993 "net.ye", 15994 "org.ye", 15995 "ac.za", 15996 "agric.za", 15997 "alt.za", 15998 "co.za", 15999 "edu.za", 16000 "gov.za", 16001 "grondar.za", 16002 "law.za", 16003 "mil.za", 16004 "net.za", 16005 "ngo.za", 16006 "nic.za", 16007 "nis.za", 16008 "nom.za", 16009 "org.za", 16010 "school.za", 16011 "tm.za", 16012 "web.za", 16013 "zm", 16014 "ac.zm", 16015 "biz.zm", 16016 "co.zm", 16017 "com.zm", 16018 "edu.zm", 16019 "gov.zm", 16020 "info.zm", 16021 "mil.zm", 16022 "net.zm", 16023 "org.zm", 16024 "sch.zm", 16025 "zw", 16026 "ac.zw", 16027 "co.zw", 16028 "gov.zw", 16029 "mil.zw", 16030 "org.zw", 16031 "aaa", 16032 "aarp", 16033 "abb", 16034 "abbott", 16035 "abbvie", 16036 "abc", 16037 "able", 16038 "abogado", 16039 "abudhabi", 16040 "academy", 16041 "accenture", 16042 "accountant", 16043 "accountants", 16044 "aco", 16045 "actor", 16046 "ads", 16047 "adult", 16048 "aeg", 16049 "aetna", 16050 "afl", 16051 "africa", 16052 "agakhan", 16053 "agency", 16054 "aig", 16055 "airbus", 16056 "airforce", 16057 "airtel", 16058 "akdn", 16059 "alibaba", 16060 "alipay", 16061 "allfinanz", 16062 "allstate", 16063 "ally", 16064 "alsace", 16065 "alstom", 16066 "amazon", 16067 "americanexpress", 16068 "americanfamily", 16069 "amex", 16070 "amfam", 16071 "amica", 16072 "amsterdam", 16073 "analytics", 16074 "android", 16075 "anquan", 16076 "anz", 16077 "aol", 16078 "apartments", 16079 "app", 16080 "apple", 16081 "aquarelle", 16082 "arab", 16083 "aramco", 16084 "archi", 16085 "army", 16086 "art", 16087 "arte", 16088 "asda", 16089 "associates", 16090 "athleta", 16091 "attorney", 16092 "auction", 16093 "audi", 16094 "audible", 16095 "audio", 16096 "auspost", 16097 "author", 16098 "auto", 16099 "autos", 16100 "aws", 16101 "axa", 16102 "azure", 16103 "baby", 16104 "baidu", 16105 "banamex", 16106 "band", 16107 "bank", 16108 "bar", 16109 "barcelona", 16110 "barclaycard", 16111 "barclays", 16112 "barefoot", 16113 "bargains", 16114 "baseball", 16115 "basketball", 16116 "bauhaus", 16117 "bayern", 16118 "bbc", 16119 "bbt", 16120 "bbva", 16121 "bcg", 16122 "bcn", 16123 "beats", 16124 "beauty", 16125 "beer", 16126 "bentley", 16127 "berlin", 16128 "best", 16129 "bestbuy", 16130 "bet", 16131 "bharti", 16132 "bible", 16133 "bid", 16134 "bike", 16135 "bing", 16136 "bingo", 16137 "bio", 16138 "black", 16139 "blackfriday", 16140 "blockbuster", 16141 "blog", 16142 "bloomberg", 16143 "blue", 16144 "bms", 16145 "bmw", 16146 "bnpparibas", 16147 "boats", 16148 "boehringer", 16149 "bofa", 16150 "bom", 16151 "bond", 16152 "boo", 16153 "book", 16154 "booking", 16155 "bosch", 16156 "bostik", 16157 "boston", 16158 "bot", 16159 "boutique", 16160 "box", 16161 "bradesco", 16162 "bridgestone", 16163 "broadway", 16164 "broker", 16165 "brother", 16166 "brussels", 16167 "build", 16168 "builders", 16169 "business", 16170 "buy", 16171 "buzz", 16172 "bzh", 16173 "cab", 16174 "cafe", 16175 "cal", 16176 "call", 16177 "calvinklein", 16178 "cam", 16179 "camera", 16180 "camp", 16181 "canon", 16182 "capetown", 16183 "capital", 16184 "capitalone", 16185 "car", 16186 "caravan", 16187 "cards", 16188 "care", 16189 "career", 16190 "careers", 16191 "cars", 16192 "casa", 16193 "case", 16194 "cash", 16195 "casino", 16196 "catering", 16197 "catholic", 16198 "cba", 16199 "cbn", 16200 "cbre", 16201 "center", 16202 "ceo", 16203 "cern", 16204 "cfa", 16205 "cfd", 16206 "chanel", 16207 "channel", 16208 "charity", 16209 "chase", 16210 "chat", 16211 "cheap", 16212 "chintai", 16213 "christmas", 16214 "chrome", 16215 "church", 16216 "cipriani", 16217 "circle", 16218 "cisco", 16219 "citadel", 16220 "citi", 16221 "citic", 16222 "city", 16223 "claims", 16224 "cleaning", 16225 "click", 16226 "clinic", 16227 "clinique", 16228 "clothing", 16229 "cloud", 16230 "club", 16231 "clubmed", 16232 "coach", 16233 "codes", 16234 "coffee", 16235 "college", 16236 "cologne", 16237 "commbank", 16238 "community", 16239 "company", 16240 "compare", 16241 "computer", 16242 "comsec", 16243 "condos", 16244 "construction", 16245 "consulting", 16246 "contact", 16247 "contractors", 16248 "cooking", 16249 "cool", 16250 "corsica", 16251 "country", 16252 "coupon", 16253 "coupons", 16254 "courses", 16255 "cpa", 16256 "credit", 16257 "creditcard", 16258 "creditunion", 16259 "cricket", 16260 "crown", 16261 "crs", 16262 "cruise", 16263 "cruises", 16264 "cuisinella", 16265 "cymru", 16266 "cyou", 16267 "dad", 16268 "dance", 16269 "data", 16270 "date", 16271 "dating", 16272 "datsun", 16273 "day", 16274 "dclk", 16275 "dds", 16276 "deal", 16277 "dealer", 16278 "deals", 16279 "degree", 16280 "delivery", 16281 "dell", 16282 "deloitte", 16283 "delta", 16284 "democrat", 16285 "dental", 16286 "dentist", 16287 "desi", 16288 "design", 16289 "dev", 16290 "dhl", 16291 "diamonds", 16292 "diet", 16293 "digital", 16294 "direct", 16295 "directory", 16296 "discount", 16297 "discover", 16298 "dish", 16299 "diy", 16300 "dnp", 16301 "docs", 16302 "doctor", 16303 "dog", 16304 "domains", 16305 "dot", 16306 "download", 16307 "drive", 16308 "dtv", 16309 "dubai", 16310 "dunlop", 16311 "dupont", 16312 "durban", 16313 "dvag", 16314 "dvr", 16315 "earth", 16316 "eat", 16317 "eco", 16318 "edeka", 16319 "education", 16320 "email", 16321 "emerck", 16322 "energy", 16323 "engineer", 16324 "engineering", 16325 "enterprises", 16326 "epson", 16327 "equipment", 16328 "ericsson", 16329 "erni", 16330 "esq", 16331 "estate", 16332 "eurovision", 16333 "eus", 16334 "events", 16335 "exchange", 16336 "expert", 16337 "exposed", 16338 "express", 16339 "extraspace", 16340 "fage", 16341 "fail", 16342 "fairwinds", 16343 "faith", 16344 "family", 16345 "fan", 16346 "fans", 16347 "farm", 16348 "farmers", 16349 "fashion", 16350 "fast", 16351 "fedex", 16352 "feedback", 16353 "ferrari", 16354 "ferrero", 16355 "fidelity", 16356 "fido", 16357 "film", 16358 "final", 16359 "finance", 16360 "financial", 16361 "fire", 16362 "firestone", 16363 "firmdale", 16364 "fish", 16365 "fishing", 16366 "fit", 16367 "fitness", 16368 "flickr", 16369 "flights", 16370 "flir", 16371 "florist", 16372 "flowers", 16373 "fly", 16374 "foo", 16375 "food", 16376 "football", 16377 "ford", 16378 "forex", 16379 "forsale", 16380 "forum", 16381 "foundation", 16382 "fox", 16383 "free", 16384 "fresenius", 16385 "frl", 16386 "frogans", 16387 "frontier", 16388 "ftr", 16389 "fujitsu", 16390 "fun", 16391 "fund", 16392 "furniture", 16393 "futbol", 16394 "fyi", 16395 "gal", 16396 "gallery", 16397 "gallo", 16398 "gallup", 16399 "game", 16400 "games", 16401 "gap", 16402 "garden", 16403 "gay", 16404 "gbiz", 16405 "gdn", 16406 "gea", 16407 "gent", 16408 "genting", 16409 "george", 16410 "ggee", 16411 "gift", 16412 "gifts", 16413 "gives", 16414 "giving", 16415 "glass", 16416 "gle", 16417 "global", 16418 "globo", 16419 "gmail", 16420 "gmbh", 16421 "gmo", 16422 "gmx", 16423 "godaddy", 16424 "gold", 16425 "goldpoint", 16426 "golf", 16427 "goo", 16428 "goodyear", 16429 "goog", 16430 "google", 16431 "gop", 16432 "got", 16433 "grainger", 16434 "graphics", 16435 "gratis", 16436 "green", 16437 "gripe", 16438 "grocery", 16439 "group", 16440 "gucci", 16441 "guge", 16442 "guide", 16443 "guitars", 16444 "guru", 16445 "hair", 16446 "hamburg", 16447 "hangout", 16448 "haus", 16449 "hbo", 16450 "hdfc", 16451 "hdfcbank", 16452 "health", 16453 "healthcare", 16454 "help", 16455 "helsinki", 16456 "here", 16457 "hermes", 16458 "hiphop", 16459 "hisamitsu", 16460 "hitachi", 16461 "hiv", 16462 "hkt", 16463 "hockey", 16464 "holdings", 16465 "holiday", 16466 "homedepot", 16467 "homegoods", 16468 "homes", 16469 "homesense", 16470 "honda", 16471 "horse", 16472 "hospital", 16473 "host", 16474 "hosting", 16475 "hot", 16476 "hotels", 16477 "hotmail", 16478 "house", 16479 "how", 16480 "hsbc", 16481 "hughes", 16482 "hyatt", 16483 "hyundai", 16484 "ibm", 16485 "icbc", 16486 "ice", 16487 "icu", 16488 "ieee", 16489 "ifm", 16490 "ikano", 16491 "imamat", 16492 "imdb", 16493 "immo", 16494 "immobilien", 16495 "inc", 16496 "industries", 16497 "infiniti", 16498 "ing", 16499 "ink", 16500 "institute", 16501 "insurance", 16502 "insure", 16503 "international", 16504 "intuit", 16505 "investments", 16506 "ipiranga", 16507 "irish", 16508 "ismaili", 16509 "ist", 16510 "istanbul", 16511 "itau", 16512 "itv", 16513 "jaguar", 16514 "java", 16515 "jcb", 16516 "jeep", 16517 "jetzt", 16518 "jewelry", 16519 "jio", 16520 "jll", 16521 "jmp", 16522 "jnj", 16523 "joburg", 16524 "jot", 16525 "joy", 16526 "jpmorgan", 16527 "jprs", 16528 "juegos", 16529 "juniper", 16530 "kaufen", 16531 "kddi", 16532 "kerryhotels", 16533 "kerrylogistics", 16534 "kerryproperties", 16535 "kfh", 16536 "kia", 16537 "kids", 16538 "kim", 16539 "kindle", 16540 "kitchen", 16541 "kiwi", 16542 "koeln", 16543 "komatsu", 16544 "kosher", 16545 "kpmg", 16546 "kpn", 16547 "krd", 16548 "kred", 16549 "kuokgroup", 16550 "kyoto", 16551 "lacaixa", 16552 "lamborghini", 16553 "lamer", 16554 "lancaster", 16555 "land", 16556 "landrover", 16557 "lanxess", 16558 "lasalle", 16559 "lat", 16560 "latino", 16561 "latrobe", 16562 "law", 16563 "lawyer", 16564 "lds", 16565 "lease", 16566 "leclerc", 16567 "lefrak", 16568 "legal", 16569 "lego", 16570 "lexus", 16571 "lgbt", 16572 "lidl", 16573 "life", 16574 "lifeinsurance", 16575 "lifestyle", 16576 "lighting", 16577 "like", 16578 "lilly", 16579 "limited", 16580 "limo", 16581 "lincoln", 16582 "link", 16583 "lipsy", 16584 "live", 16585 "living", 16586 "llc", 16587 "llp", 16588 "loan", 16589 "loans", 16590 "locker", 16591 "locus", 16592 "lol", 16593 "london", 16594 "lotte", 16595 "lotto", 16596 "love", 16597 "lpl", 16598 "lplfinancial", 16599 "ltd", 16600 "ltda", 16601 "lundbeck", 16602 "luxe", 16603 "luxury", 16604 "madrid", 16605 "maif", 16606 "maison", 16607 "makeup", 16608 "man", 16609 "management", 16610 "mango", 16611 "map", 16612 "market", 16613 "marketing", 16614 "markets", 16615 "marriott", 16616 "marshalls", 16617 "mattel", 16618 "mba", 16619 "mckinsey", 16620 "med", 16621 "media", 16622 "meet", 16623 "melbourne", 16624 "meme", 16625 "memorial", 16626 "men", 16627 "menu", 16628 "merck", 16629 "merckmsd", 16630 "miami", 16631 "microsoft", 16632 "mini", 16633 "mint", 16634 "mit", 16635 "mitsubishi", 16636 "mlb", 16637 "mls", 16638 "mma", 16639 "mobile", 16640 "moda", 16641 "moe", 16642 "moi", 16643 "mom", 16644 "monash", 16645 "money", 16646 "monster", 16647 "mormon", 16648 "mortgage", 16649 "moscow", 16650 "moto", 16651 "motorcycles", 16652 "mov", 16653 "movie", 16654 "msd", 16655 "mtn", 16656 "mtr", 16657 "music", 16658 "nab", 16659 "nagoya", 16660 "navy", 16661 "nba", 16662 "nec", 16663 "netbank", 16664 "netflix", 16665 "network", 16666 "neustar", 16667 "new", 16668 "news", 16669 "next", 16670 "nextdirect", 16671 "nexus", 16672 "nfl", 16673 "ngo", 16674 "nhk", 16675 "nico", 16676 "nike", 16677 "nikon", 16678 "ninja", 16679 "nissan", 16680 "nissay", 16681 "nokia", 16682 "norton", 16683 "now", 16684 "nowruz", 16685 "nowtv", 16686 "nra", 16687 "nrw", 16688 "ntt", 16689 "nyc", 16690 "obi", 16691 "observer", 16692 "office", 16693 "okinawa", 16694 "olayan", 16695 "olayangroup", 16696 "ollo", 16697 "omega", 16698 "one", 16699 "ong", 16700 "onl", 16701 "online", 16702 "ooo", 16703 "open", 16704 "oracle", 16705 "orange", 16706 "organic", 16707 "origins", 16708 "osaka", 16709 "otsuka", 16710 "ott", 16711 "ovh", 16712 "page", 16713 "panasonic", 16714 "paris", 16715 "pars", 16716 "partners", 16717 "parts", 16718 "party", 16719 "pay", 16720 "pccw", 16721 "pet", 16722 "pfizer", 16723 "pharmacy", 16724 "phd", 16725 "philips", 16726 "phone", 16727 "photo", 16728 "photography", 16729 "photos", 16730 "physio", 16731 "pics", 16732 "pictet", 16733 "pictures", 16734 "pid", 16735 "pin", 16736 "ping", 16737 "pink", 16738 "pioneer", 16739 "pizza", 16740 "place", 16741 "play", 16742 "playstation", 16743 "plumbing", 16744 "plus", 16745 "pnc", 16746 "pohl", 16747 "poker", 16748 "politie", 16749 "porn", 16750 "pramerica", 16751 "praxi", 16752 "press", 16753 "prime", 16754 "prod", 16755 "productions", 16756 "prof", 16757 "progressive", 16758 "promo", 16759 "properties", 16760 "property", 16761 "protection", 16762 "pru", 16763 "prudential", 16764 "pub", 16765 "pwc", 16766 "qpon", 16767 "quebec", 16768 "quest", 16769 "racing", 16770 "radio", 16771 "read", 16772 "realestate", 16773 "realtor", 16774 "realty", 16775 "recipes", 16776 "red", 16777 "redstone", 16778 "redumbrella", 16779 "rehab", 16780 "reise", 16781 "reisen", 16782 "reit", 16783 "reliance", 16784 "ren", 16785 "rent", 16786 "rentals", 16787 "repair", 16788 "report", 16789 "republican", 16790 "rest", 16791 "restaurant", 16792 "review", 16793 "reviews", 16794 "rexroth", 16795 "rich", 16796 "richardli", 16797 "ricoh", 16798 "ril", 16799 "rio", 16800 "rip", 16801 "rocks", 16802 "rodeo", 16803 "rogers", 16804 "room", 16805 "rsvp", 16806 "rugby", 16807 "ruhr", 16808 "run", 16809 "rwe", 16810 "ryukyu", 16811 "saarland", 16812 "safe", 16813 "safety", 16814 "sakura", 16815 "sale", 16816 "salon", 16817 "samsclub", 16818 "samsung", 16819 "sandvik", 16820 "sandvikcoromant", 16821 "sanofi", 16822 "sap", 16823 "sarl", 16824 "sas", 16825 "save", 16826 "saxo", 16827 "sbi", 16828 "sbs", 16829 "scb", 16830 "schaeffler", 16831 "schmidt", 16832 "scholarships", 16833 "school", 16834 "schule", 16835 "schwarz", 16836 "science", 16837 "scot", 16838 "search", 16839 "seat", 16840 "secure", 16841 "security", 16842 "seek", 16843 "select", 16844 "sener", 16845 "services", 16846 "seven", 16847 "sew", 16848 "sex", 16849 "sexy", 16850 "sfr", 16851 "shangrila", 16852 "sharp", 16853 "shell", 16854 "shia", 16855 "shiksha", 16856 "shoes", 16857 "shop", 16858 "shopping", 16859 "shouji", 16860 "show", 16861 "silk", 16862 "sina", 16863 "singles", 16864 "site", 16865 "ski", 16866 "skin", 16867 "sky", 16868 "skype", 16869 "sling", 16870 "smart", 16871 "smile", 16872 "sncf", 16873 "soccer", 16874 "social", 16875 "softbank", 16876 "software", 16877 "sohu", 16878 "solar", 16879 "solutions", 16880 "song", 16881 "sony", 16882 "soy", 16883 "spa", 16884 "space", 16885 "sport", 16886 "spot", 16887 "srl", 16888 "stada", 16889 "staples", 16890 "star", 16891 "statebank", 16892 "statefarm", 16893 "stc", 16894 "stcgroup", 16895 "stockholm", 16896 "storage", 16897 "store", 16898 "stream", 16899 "studio", 16900 "study", 16901 "style", 16902 "sucks", 16903 "supplies", 16904 "supply", 16905 "support", 16906 "surf", 16907 "surgery", 16908 "suzuki", 16909 "swatch", 16910 "swiss", 16911 "sydney", 16912 "systems", 16913 "tab", 16914 "taipei", 16915 "talk", 16916 "taobao", 16917 "target", 16918 "tatamotors", 16919 "tatar", 16920 "tattoo", 16921 "tax", 16922 "taxi", 16923 "tci", 16924 "tdk", 16925 "team", 16926 "tech", 16927 "technology", 16928 "temasek", 16929 "tennis", 16930 "teva", 16931 "thd", 16932 "theater", 16933 "theatre", 16934 "tiaa", 16935 "tickets", 16936 "tienda", 16937 "tips", 16938 "tires", 16939 "tirol", 16940 "tjmaxx", 16941 "tjx", 16942 "tkmaxx", 16943 "tmall", 16944 "today", 16945 "tokyo", 16946 "tools", 16947 "top", 16948 "toray", 16949 "toshiba", 16950 "total", 16951 "tours", 16952 "town", 16953 "toyota", 16954 "toys", 16955 "trade", 16956 "trading", 16957 "training", 16958 "travel", 16959 "travelers", 16960 "travelersinsurance", 16961 "trust", 16962 "trv", 16963 "tube", 16964 "tui", 16965 "tunes", 16966 "tushu", 16967 "tvs", 16968 "ubank", 16969 "ubs", 16970 "unicom", 16971 "university", 16972 "uno", 16973 "uol", 16974 "ups", 16975 "vacations", 16976 "vana", 16977 "vanguard", 16978 "vegas", 16979 "ventures", 16980 "verisign", 16981 "versicherung", 16982 "vet", 16983 "viajes", 16984 "video", 16985 "vig", 16986 "viking", 16987 "villas", 16988 "vin", 16989 "vip", 16990 "virgin", 16991 "visa", 16992 "vision", 16993 "viva", 16994 "vivo", 16995 "vlaanderen", 16996 "vodka", 16997 "volvo", 16998 "vote", 16999 "voting", 17000 "voto", 17001 "voyage", 17002 "wales", 17003 "walmart", 17004 "walter", 17005 "wang", 17006 "wanggou", 17007 "watch", 17008 "watches", 17009 "weather", 17010 "weatherchannel", 17011 "webcam", 17012 "weber", 17013 "website", 17014 "wed", 17015 "wedding", 17016 "weibo", 17017 "weir", 17018 "whoswho", 17019 "wien", 17020 "wiki", 17021 "williamhill", 17022 "win", 17023 "windows", 17024 "wine", 17025 "winners", 17026 "wme", 17027 "wolterskluwer", 17028 "woodside", 17029 "work", 17030 "works", 17031 "world", 17032 "wow", 17033 "wtc", 17034 "wtf", 17035 "xbox", 17036 "xerox", 17037 "xihuan", 17038 "xin", 17039 "à¤à¥à¤®", 17040 "ã»ã¼ã«", 17041 "ä½å±±", 17042 "æ å", 17043 "éå¢", 17044 "å¨çº¿", 17045 "ç¹ç", 17046 "à¸à¸à¸¡", 17047 "å «å¦", 17048 "Ù ÙÙØ¹", 17049 "å ¬ç", 17050 "å ¬å¸", 17051 "馿 ¼éæ", 17052 "ç½ç«", 17053 "ç§»å¨", 17054 "æç±ä½ ", 17055 "моÑква", 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 "vermögensberater", 17122 "vermögensberatung", 17123 "ä¼ä¸", 17124 "ä¿¡æ¯", 17125 "åé大é åº", 17126 "åé", 17127 "广ä¸", 17128 "æ¿å¡", 17129 "xyz", 17130 "yachts", 17131 "yahoo", 17132 "yamaxun", 17133 "yandex", 17134 "yodobashi", 17135 "yoga", 17136 "yokohama", 17137 "you", 17138 "youtube", 17139 "yun", 17140 "zappos", 17141 "zara", 17142 "zero", 17143 "zip", 17144 "zone", 17145 "zuerich", 17146 "co.krd", 17147 "edu.krd", 17148 "art.pl", 17149 "gliwice.pl", 17150 "krakow.pl", 17151 "poznan.pl", 17152 "wroc.pl", 17153 "zakopane.pl", 17154 "lib.de.us", 17155 "12chars.dev", 17156 "12chars.it", 17157 "12chars.pro", 17158 "cc.ua", 17159 "inf.ua", 17160 "ltd.ua", 17161 "611.to", 17162 "a2hosted.com", 17163 "cpserver.com", 17164 "aaa.vodka", 17165 "*.on-acorn.io", 17166 "activetrail.biz", 17167 "adaptable.app", 17168 "adobeaemcloud.com", 17169 "*.dev.adobeaemcloud.com", 17170 "aem.live", 17171 "hlx.live", 17172 "adobeaemcloud.net", 17173 "aem.page", 17174 "hlx.page", 17175 "hlx3.page", 17176 "adobeio-static.net", 17177 "adobeioruntime.net", 17178 "africa.com", 17179 "beep.pl", 17180 "airkitapps.com", 17181 "airkitapps-au.com", 17182 "airkitapps.eu", 17183 "aivencloud.com", 17184 "akadns.net", 17185 "akamai.net", 17186 "akamai-staging.net", 17187 "akamaiedge.net", 17188 "akamaiedge-staging.net", 17189 "akamaihd.net", 17190 "akamaihd-staging.net", 17191 "akamaiorigin.net", 17192 "akamaiorigin-staging.net", 17193 "akamaized.net", 17194 "akamaized-staging.net", 17195 "edgekey.net", 17196 "edgekey-staging.net", 17197 "edgesuite.net", 17198 "edgesuite-staging.net", 17199 "barsy.ca", 17200 "*.compute.estate", 17201 "*.alces.network", 17202 "kasserver.com", 17203 "altervista.org", 17204 "alwaysdata.net", 17205 "myamaze.net", 17206 "execute-api.cn-north-1.amazonaws.com.cn", 17207 "execute-api.cn-northwest-1.amazonaws.com.cn", 17208 "execute-api.af-south-1.amazonaws.com", 17209 "execute-api.ap-east-1.amazonaws.com", 17210 "execute-api.ap-northeast-1.amazonaws.com", 17211 "execute-api.ap-northeast-2.amazonaws.com", 17212 "execute-api.ap-northeast-3.amazonaws.com", 17213 "execute-api.ap-south-1.amazonaws.com", 17214 "execute-api.ap-south-2.amazonaws.com", 17215 "execute-api.ap-southeast-1.amazonaws.com", 17216 "execute-api.ap-southeast-2.amazonaws.com", 17217 "execute-api.ap-southeast-3.amazonaws.com", 17218 "execute-api.ap-southeast-4.amazonaws.com", 17219 "execute-api.ap-southeast-5.amazonaws.com", 17220 "execute-api.ca-central-1.amazonaws.com", 17221 "execute-api.ca-west-1.amazonaws.com", 17222 "execute-api.eu-central-1.amazonaws.com", 17223 "execute-api.eu-central-2.amazonaws.com", 17224 "execute-api.eu-north-1.amazonaws.com", 17225 "execute-api.eu-south-1.amazonaws.com", 17226 "execute-api.eu-south-2.amazonaws.com", 17227 "execute-api.eu-west-1.amazonaws.com", 17228 "execute-api.eu-west-2.amazonaws.com", 17229 "execute-api.eu-west-3.amazonaws.com", 17230 "execute-api.il-central-1.amazonaws.com", 17231 "execute-api.me-central-1.amazonaws.com", 17232 "execute-api.me-south-1.amazonaws.com", 17233 "execute-api.sa-east-1.amazonaws.com", 17234 "execute-api.us-east-1.amazonaws.com", 17235 "execute-api.us-east-2.amazonaws.com", 17236 "execute-api.us-gov-east-1.amazonaws.com", 17237 "execute-api.us-gov-west-1.amazonaws.com", 17238 "execute-api.us-west-1.amazonaws.com", 17239 "execute-api.us-west-2.amazonaws.com", 17240 "cloudfront.net", 17241 "auth.af-south-1.amazoncognito.com", 17242 "auth.ap-east-1.amazoncognito.com", 17243 "auth.ap-northeast-1.amazoncognito.com", 17244 "auth.ap-northeast-2.amazoncognito.com", 17245 "auth.ap-northeast-3.amazoncognito.com", 17246 "auth.ap-south-1.amazoncognito.com", 17247 "auth.ap-south-2.amazoncognito.com", 17248 "auth.ap-southeast-1.amazoncognito.com", 17249 "auth.ap-southeast-2.amazoncognito.com", 17250 "auth.ap-southeast-3.amazoncognito.com", 17251 "auth.ap-southeast-4.amazoncognito.com", 17252 "auth.ca-central-1.amazoncognito.com", 17253 "auth.ca-west-1.amazoncognito.com", 17254 "auth.eu-central-1.amazoncognito.com", 17255 "auth.eu-central-2.amazoncognito.com", 17256 "auth.eu-north-1.amazoncognito.com", 17257 "auth.eu-south-1.amazoncognito.com", 17258 "auth.eu-south-2.amazoncognito.com", 17259 "auth.eu-west-1.amazoncognito.com", 17260 "auth.eu-west-2.amazoncognito.com", 17261 "auth.eu-west-3.amazoncognito.com", 17262 "auth.il-central-1.amazoncognito.com", 17263 "auth.me-central-1.amazoncognito.com", 17264 "auth.me-south-1.amazoncognito.com", 17265 "auth.sa-east-1.amazoncognito.com", 17266 "auth.us-east-1.amazoncognito.com", 17267 "auth-fips.us-east-1.amazoncognito.com", 17268 "auth.us-east-2.amazoncognito.com", 17269 "auth-fips.us-east-2.amazoncognito.com", 17270 "auth-fips.us-gov-west-1.amazoncognito.com", 17271 "auth.us-west-1.amazoncognito.com", 17272 "auth-fips.us-west-1.amazoncognito.com", 17273 "auth.us-west-2.amazoncognito.com", 17274 "auth-fips.us-west-2.amazoncognito.com", 17275 "*.compute.amazonaws.com.cn", 17276 "*.compute.amazonaws.com", 17277 "*.compute-1.amazonaws.com", 17278 "us-east-1.amazonaws.com", 17279 "emrappui-prod.cn-north-1.amazonaws.com.cn", 17280 "emrnotebooks-prod.cn-north-1.amazonaws.com.cn", 17281 "emrstudio-prod.cn-north-1.amazonaws.com.cn", 17282 "emrappui-prod.cn-northwest-1.amazonaws.com.cn", 17283 "emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn", 17284 "emrstudio-prod.cn-northwest-1.amazonaws.com.cn", 17285 "emrappui-prod.af-south-1.amazonaws.com", 17286 "emrnotebooks-prod.af-south-1.amazonaws.com", 17287 "emrstudio-prod.af-south-1.amazonaws.com", 17288 "emrappui-prod.ap-east-1.amazonaws.com", 17289 "emrnotebooks-prod.ap-east-1.amazonaws.com", 17290 "emrstudio-prod.ap-east-1.amazonaws.com", 17291 "emrappui-prod.ap-northeast-1.amazonaws.com", 17292 "emrnotebooks-prod.ap-northeast-1.amazonaws.com", 17293 "emrstudio-prod.ap-northeast-1.amazonaws.com", 17294 "emrappui-prod.ap-northeast-2.amazonaws.com", 17295 "emrnotebooks-prod.ap-northeast-2.amazonaws.com", 17296 "emrstudio-prod.ap-northeast-2.amazonaws.com", 17297 "emrappui-prod.ap-northeast-3.amazonaws.com", 17298 "emrnotebooks-prod.ap-northeast-3.amazonaws.com", 17299 "emrstudio-prod.ap-northeast-3.amazonaws.com", 17300 "emrappui-prod.ap-south-1.amazonaws.com", 17301 "emrnotebooks-prod.ap-south-1.amazonaws.com", 17302 "emrstudio-prod.ap-south-1.amazonaws.com", 17303 "emrappui-prod.ap-south-2.amazonaws.com", 17304 "emrnotebooks-prod.ap-south-2.amazonaws.com", 17305 "emrstudio-prod.ap-south-2.amazonaws.com", 17306 "emrappui-prod.ap-southeast-1.amazonaws.com", 17307 "emrnotebooks-prod.ap-southeast-1.amazonaws.com", 17308 "emrstudio-prod.ap-southeast-1.amazonaws.com", 17309 "emrappui-prod.ap-southeast-2.amazonaws.com", 17310 "emrnotebooks-prod.ap-southeast-2.amazonaws.com", 17311 "emrstudio-prod.ap-southeast-2.amazonaws.com", 17312 "emrappui-prod.ap-southeast-3.amazonaws.com", 17313 "emrnotebooks-prod.ap-southeast-3.amazonaws.com", 17314 "emrstudio-prod.ap-southeast-3.amazonaws.com", 17315 "emrappui-prod.ap-southeast-4.amazonaws.com", 17316 "emrnotebooks-prod.ap-southeast-4.amazonaws.com", 17317 "emrstudio-prod.ap-southeast-4.amazonaws.com", 17318 "emrappui-prod.ca-central-1.amazonaws.com", 17319 "emrnotebooks-prod.ca-central-1.amazonaws.com", 17320 "emrstudio-prod.ca-central-1.amazonaws.com", 17321 "emrappui-prod.ca-west-1.amazonaws.com", 17322 "emrnotebooks-prod.ca-west-1.amazonaws.com", 17323 "emrstudio-prod.ca-west-1.amazonaws.com", 17324 "emrappui-prod.eu-central-1.amazonaws.com", 17325 "emrnotebooks-prod.eu-central-1.amazonaws.com", 17326 "emrstudio-prod.eu-central-1.amazonaws.com", 17327 "emrappui-prod.eu-central-2.amazonaws.com", 17328 "emrnotebooks-prod.eu-central-2.amazonaws.com", 17329 "emrstudio-prod.eu-central-2.amazonaws.com", 17330 "emrappui-prod.eu-north-1.amazonaws.com", 17331 "emrnotebooks-prod.eu-north-1.amazonaws.com", 17332 "emrstudio-prod.eu-north-1.amazonaws.com", 17333 "emrappui-prod.eu-south-1.amazonaws.com", 17334 "emrnotebooks-prod.eu-south-1.amazonaws.com", 17335 "emrstudio-prod.eu-south-1.amazonaws.com", 17336 "emrappui-prod.eu-south-2.amazonaws.com", 17337 "emrnotebooks-prod.eu-south-2.amazonaws.com", 17338 "emrstudio-prod.eu-south-2.amazonaws.com", 17339 "emrappui-prod.eu-west-1.amazonaws.com", 17340 "emrnotebooks-prod.eu-west-1.amazonaws.com", 17341 "emrstudio-prod.eu-west-1.amazonaws.com", 17342 "emrappui-prod.eu-west-2.amazonaws.com", 17343 "emrnotebooks-prod.eu-west-2.amazonaws.com", 17344 "emrstudio-prod.eu-west-2.amazonaws.com", 17345 "emrappui-prod.eu-west-3.amazonaws.com", 17346 "emrnotebooks-prod.eu-west-3.amazonaws.com", 17347 "emrstudio-prod.eu-west-3.amazonaws.com", 17348 "emrappui-prod.il-central-1.amazonaws.com", 17349 "emrnotebooks-prod.il-central-1.amazonaws.com", 17350 "emrstudio-prod.il-central-1.amazonaws.com", 17351 "emrappui-prod.me-central-1.amazonaws.com", 17352 "emrnotebooks-prod.me-central-1.amazonaws.com", 17353 "emrstudio-prod.me-central-1.amazonaws.com", 17354 "emrappui-prod.me-south-1.amazonaws.com", 17355 "emrnotebooks-prod.me-south-1.amazonaws.com", 17356 "emrstudio-prod.me-south-1.amazonaws.com", 17357 "emrappui-prod.sa-east-1.amazonaws.com", 17358 "emrnotebooks-prod.sa-east-1.amazonaws.com", 17359 "emrstudio-prod.sa-east-1.amazonaws.com", 17360 "emrappui-prod.us-east-1.amazonaws.com", 17361 "emrnotebooks-prod.us-east-1.amazonaws.com", 17362 "emrstudio-prod.us-east-1.amazonaws.com", 17363 "emrappui-prod.us-east-2.amazonaws.com", 17364 "emrnotebooks-prod.us-east-2.amazonaws.com", 17365 "emrstudio-prod.us-east-2.amazonaws.com", 17366 "emrappui-prod.us-gov-east-1.amazonaws.com", 17367 "emrnotebooks-prod.us-gov-east-1.amazonaws.com", 17368 "emrstudio-prod.us-gov-east-1.amazonaws.com", 17369 "emrappui-prod.us-gov-west-1.amazonaws.com", 17370 "emrnotebooks-prod.us-gov-west-1.amazonaws.com", 17371 "emrstudio-prod.us-gov-west-1.amazonaws.com", 17372 "emrappui-prod.us-west-1.amazonaws.com", 17373 "emrnotebooks-prod.us-west-1.amazonaws.com", 17374 "emrstudio-prod.us-west-1.amazonaws.com", 17375 "emrappui-prod.us-west-2.amazonaws.com", 17376 "emrnotebooks-prod.us-west-2.amazonaws.com", 17377 "emrstudio-prod.us-west-2.amazonaws.com", 17378 "*.cn-north-1.airflow.amazonaws.com.cn", 17379 "*.cn-northwest-1.airflow.amazonaws.com.cn", 17380 "*.af-south-1.airflow.amazonaws.com", 17381 "*.ap-east-1.airflow.amazonaws.com", 17382 "*.ap-northeast-1.airflow.amazonaws.com", 17383 "*.ap-northeast-2.airflow.amazonaws.com", 17384 "*.ap-northeast-3.airflow.amazonaws.com", 17385 "*.ap-south-1.airflow.amazonaws.com", 17386 "*.ap-south-2.airflow.amazonaws.com", 17387 "*.ap-southeast-1.airflow.amazonaws.com", 17388 "*.ap-southeast-2.airflow.amazonaws.com", 17389 "*.ap-southeast-3.airflow.amazonaws.com", 17390 "*.ap-southeast-4.airflow.amazonaws.com", 17391 "*.ca-central-1.airflow.amazonaws.com", 17392 "*.ca-west-1.airflow.amazonaws.com", 17393 "*.eu-central-1.airflow.amazonaws.com", 17394 "*.eu-central-2.airflow.amazonaws.com", 17395 "*.eu-north-1.airflow.amazonaws.com", 17396 "*.eu-south-1.airflow.amazonaws.com", 17397 "*.eu-south-2.airflow.amazonaws.com", 17398 "*.eu-west-1.airflow.amazonaws.com", 17399 "*.eu-west-2.airflow.amazonaws.com", 17400 "*.eu-west-3.airflow.amazonaws.com", 17401 "*.il-central-1.airflow.amazonaws.com", 17402 "*.me-central-1.airflow.amazonaws.com", 17403 "*.me-south-1.airflow.amazonaws.com", 17404 "*.sa-east-1.airflow.amazonaws.com", 17405 "*.us-east-1.airflow.amazonaws.com", 17406 "*.us-east-2.airflow.amazonaws.com", 17407 "*.us-west-1.airflow.amazonaws.com", 17408 "*.us-west-2.airflow.amazonaws.com", 17409 "s3.dualstack.cn-north-1.amazonaws.com.cn", 17410 "s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn", 17411 "s3-website.dualstack.cn-north-1.amazonaws.com.cn", 17412 "s3.cn-north-1.amazonaws.com.cn", 17413 "s3-accesspoint.cn-north-1.amazonaws.com.cn", 17414 "s3-deprecated.cn-north-1.amazonaws.com.cn", 17415 "s3-object-lambda.cn-north-1.amazonaws.com.cn", 17416 "s3-website.cn-north-1.amazonaws.com.cn", 17417 "s3.dualstack.cn-northwest-1.amazonaws.com.cn", 17418 "s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn", 17419 "s3.cn-northwest-1.amazonaws.com.cn", 17420 "s3-accesspoint.cn-northwest-1.amazonaws.com.cn", 17421 "s3-object-lambda.cn-northwest-1.amazonaws.com.cn", 17422 "s3-website.cn-northwest-1.amazonaws.com.cn", 17423 "s3.dualstack.af-south-1.amazonaws.com", 17424 "s3-accesspoint.dualstack.af-south-1.amazonaws.com", 17425 "s3-website.dualstack.af-south-1.amazonaws.com", 17426 "s3.af-south-1.amazonaws.com", 17427 "s3-accesspoint.af-south-1.amazonaws.com", 17428 "s3-object-lambda.af-south-1.amazonaws.com", 17429 "s3-website.af-south-1.amazonaws.com", 17430 "s3.dualstack.ap-east-1.amazonaws.com", 17431 "s3-accesspoint.dualstack.ap-east-1.amazonaws.com", 17432 "s3.ap-east-1.amazonaws.com", 17433 "s3-accesspoint.ap-east-1.amazonaws.com", 17434 "s3-object-lambda.ap-east-1.amazonaws.com", 17435 "s3-website.ap-east-1.amazonaws.com", 17436 "s3.dualstack.ap-northeast-1.amazonaws.com", 17437 "s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com", 17438 "s3-website.dualstack.ap-northeast-1.amazonaws.com", 17439 "s3.ap-northeast-1.amazonaws.com", 17440 "s3-accesspoint.ap-northeast-1.amazonaws.com", 17441 "s3-object-lambda.ap-northeast-1.amazonaws.com", 17442 "s3-website.ap-northeast-1.amazonaws.com", 17443 "s3.dualstack.ap-northeast-2.amazonaws.com", 17444 "s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com", 17445 "s3-website.dualstack.ap-northeast-2.amazonaws.com", 17446 "s3.ap-northeast-2.amazonaws.com", 17447 "s3-accesspoint.ap-northeast-2.amazonaws.com", 17448 "s3-object-lambda.ap-northeast-2.amazonaws.com", 17449 "s3-website.ap-northeast-2.amazonaws.com", 17450 "s3.dualstack.ap-northeast-3.amazonaws.com", 17451 "s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com", 17452 "s3-website.dualstack.ap-northeast-3.amazonaws.com", 17453 "s3.ap-northeast-3.amazonaws.com", 17454 "s3-accesspoint.ap-northeast-3.amazonaws.com", 17455 "s3-object-lambda.ap-northeast-3.amazonaws.com", 17456 "s3-website.ap-northeast-3.amazonaws.com", 17457 "s3.dualstack.ap-south-1.amazonaws.com", 17458 "s3-accesspoint.dualstack.ap-south-1.amazonaws.com", 17459 "s3-website.dualstack.ap-south-1.amazonaws.com", 17460 "s3.ap-south-1.amazonaws.com", 17461 "s3-accesspoint.ap-south-1.amazonaws.com", 17462 "s3-object-lambda.ap-south-1.amazonaws.com", 17463 "s3-website.ap-south-1.amazonaws.com", 17464 "s3.dualstack.ap-south-2.amazonaws.com", 17465 "s3-accesspoint.dualstack.ap-south-2.amazonaws.com", 17466 "s3-website.dualstack.ap-south-2.amazonaws.com", 17467 "s3.ap-south-2.amazonaws.com", 17468 "s3-accesspoint.ap-south-2.amazonaws.com", 17469 "s3-object-lambda.ap-south-2.amazonaws.com", 17470 "s3-website.ap-south-2.amazonaws.com", 17471 "s3.dualstack.ap-southeast-1.amazonaws.com", 17472 "s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com", 17473 "s3-website.dualstack.ap-southeast-1.amazonaws.com", 17474 "s3.ap-southeast-1.amazonaws.com", 17475 "s3-accesspoint.ap-southeast-1.amazonaws.com", 17476 "s3-object-lambda.ap-southeast-1.amazonaws.com", 17477 "s3-website.ap-southeast-1.amazonaws.com", 17478 "s3.dualstack.ap-southeast-2.amazonaws.com", 17479 "s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com", 17480 "s3-website.dualstack.ap-southeast-2.amazonaws.com", 17481 "s3.ap-southeast-2.amazonaws.com", 17482 "s3-accesspoint.ap-southeast-2.amazonaws.com", 17483 "s3-object-lambda.ap-southeast-2.amazonaws.com", 17484 "s3-website.ap-southeast-2.amazonaws.com", 17485 "s3.dualstack.ap-southeast-3.amazonaws.com", 17486 "s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com", 17487 "s3-website.dualstack.ap-southeast-3.amazonaws.com", 17488 "s3.ap-southeast-3.amazonaws.com", 17489 "s3-accesspoint.ap-southeast-3.amazonaws.com", 17490 "s3-object-lambda.ap-southeast-3.amazonaws.com", 17491 "s3-website.ap-southeast-3.amazonaws.com", 17492 "s3.dualstack.ap-southeast-4.amazonaws.com", 17493 "s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com", 17494 "s3-website.dualstack.ap-southeast-4.amazonaws.com", 17495 "s3.ap-southeast-4.amazonaws.com", 17496 "s3-accesspoint.ap-southeast-4.amazonaws.com", 17497 "s3-object-lambda.ap-southeast-4.amazonaws.com", 17498 "s3-website.ap-southeast-4.amazonaws.com", 17499 "s3.dualstack.ap-southeast-5.amazonaws.com", 17500 "s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com", 17501 "s3-website.dualstack.ap-southeast-5.amazonaws.com", 17502 "s3.ap-southeast-5.amazonaws.com", 17503 "s3-accesspoint.ap-southeast-5.amazonaws.com", 17504 "s3-deprecated.ap-southeast-5.amazonaws.com", 17505 "s3-object-lambda.ap-southeast-5.amazonaws.com", 17506 "s3-website.ap-southeast-5.amazonaws.com", 17507 "s3.dualstack.ca-central-1.amazonaws.com", 17508 "s3-accesspoint.dualstack.ca-central-1.amazonaws.com", 17509 "s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com", 17510 "s3-fips.dualstack.ca-central-1.amazonaws.com", 17511 "s3-website.dualstack.ca-central-1.amazonaws.com", 17512 "s3.ca-central-1.amazonaws.com", 17513 "s3-accesspoint.ca-central-1.amazonaws.com", 17514 "s3-accesspoint-fips.ca-central-1.amazonaws.com", 17515 "s3-fips.ca-central-1.amazonaws.com", 17516 "s3-object-lambda.ca-central-1.amazonaws.com", 17517 "s3-website.ca-central-1.amazonaws.com", 17518 "s3.dualstack.ca-west-1.amazonaws.com", 17519 "s3-accesspoint.dualstack.ca-west-1.amazonaws.com", 17520 "s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com", 17521 "s3-fips.dualstack.ca-west-1.amazonaws.com", 17522 "s3-website.dualstack.ca-west-1.amazonaws.com", 17523 "s3.ca-west-1.amazonaws.com", 17524 "s3-accesspoint.ca-west-1.amazonaws.com", 17525 "s3-accesspoint-fips.ca-west-1.amazonaws.com", 17526 "s3-fips.ca-west-1.amazonaws.com", 17527 "s3-object-lambda.ca-west-1.amazonaws.com", 17528 "s3-website.ca-west-1.amazonaws.com", 17529 "s3.dualstack.eu-central-1.amazonaws.com", 17530 "s3-accesspoint.dualstack.eu-central-1.amazonaws.com", 17531 "s3-website.dualstack.eu-central-1.amazonaws.com", 17532 "s3.eu-central-1.amazonaws.com", 17533 "s3-accesspoint.eu-central-1.amazonaws.com", 17534 "s3-object-lambda.eu-central-1.amazonaws.com", 17535 "s3-website.eu-central-1.amazonaws.com", 17536 "s3.dualstack.eu-central-2.amazonaws.com", 17537 "s3-accesspoint.dualstack.eu-central-2.amazonaws.com", 17538 "s3-website.dualstack.eu-central-2.amazonaws.com", 17539 "s3.eu-central-2.amazonaws.com", 17540 "s3-accesspoint.eu-central-2.amazonaws.com", 17541 "s3-object-lambda.eu-central-2.amazonaws.com", 17542 "s3-website.eu-central-2.amazonaws.com", 17543 "s3.dualstack.eu-north-1.amazonaws.com", 17544 "s3-accesspoint.dualstack.eu-north-1.amazonaws.com", 17545 "s3.eu-north-1.amazonaws.com", 17546 "s3-accesspoint.eu-north-1.amazonaws.com", 17547 "s3-object-lambda.eu-north-1.amazonaws.com", 17548 "s3-website.eu-north-1.amazonaws.com", 17549 "s3.dualstack.eu-south-1.amazonaws.com", 17550 "s3-accesspoint.dualstack.eu-south-1.amazonaws.com", 17551 "s3-website.dualstack.eu-south-1.amazonaws.com", 17552 "s3.eu-south-1.amazonaws.com", 17553 "s3-accesspoint.eu-south-1.amazonaws.com", 17554 "s3-object-lambda.eu-south-1.amazonaws.com", 17555 "s3-website.eu-south-1.amazonaws.com", 17556 "s3.dualstack.eu-south-2.amazonaws.com", 17557 "s3-accesspoint.dualstack.eu-south-2.amazonaws.com", 17558 "s3-website.dualstack.eu-south-2.amazonaws.com", 17559 "s3.eu-south-2.amazonaws.com", 17560 "s3-accesspoint.eu-south-2.amazonaws.com", 17561 "s3-object-lambda.eu-south-2.amazonaws.com", 17562 "s3-website.eu-south-2.amazonaws.com", 17563 "s3.dualstack.eu-west-1.amazonaws.com", 17564 "s3-accesspoint.dualstack.eu-west-1.amazonaws.com", 17565 "s3-website.dualstack.eu-west-1.amazonaws.com", 17566 "s3.eu-west-1.amazonaws.com", 17567 "s3-accesspoint.eu-west-1.amazonaws.com", 17568 "s3-deprecated.eu-west-1.amazonaws.com", 17569 "s3-object-lambda.eu-west-1.amazonaws.com", 17570 "s3-website.eu-west-1.amazonaws.com", 17571 "s3.dualstack.eu-west-2.amazonaws.com", 17572 "s3-accesspoint.dualstack.eu-west-2.amazonaws.com", 17573 "s3.eu-west-2.amazonaws.com", 17574 "s3-accesspoint.eu-west-2.amazonaws.com", 17575 "s3-object-lambda.eu-west-2.amazonaws.com", 17576 "s3-website.eu-west-2.amazonaws.com", 17577 "s3.dualstack.eu-west-3.amazonaws.com", 17578 "s3-accesspoint.dualstack.eu-west-3.amazonaws.com", 17579 "s3-website.dualstack.eu-west-3.amazonaws.com", 17580 "s3.eu-west-3.amazonaws.com", 17581 "s3-accesspoint.eu-west-3.amazonaws.com", 17582 "s3-object-lambda.eu-west-3.amazonaws.com", 17583 "s3-website.eu-west-3.amazonaws.com", 17584 "s3.dualstack.il-central-1.amazonaws.com", 17585 "s3-accesspoint.dualstack.il-central-1.amazonaws.com", 17586 "s3-website.dualstack.il-central-1.amazonaws.com", 17587 "s3.il-central-1.amazonaws.com", 17588 "s3-accesspoint.il-central-1.amazonaws.com", 17589 "s3-object-lambda.il-central-1.amazonaws.com", 17590 "s3-website.il-central-1.amazonaws.com", 17591 "s3.dualstack.me-central-1.amazonaws.com", 17592 "s3-accesspoint.dualstack.me-central-1.amazonaws.com", 17593 "s3-website.dualstack.me-central-1.amazonaws.com", 17594 "s3.me-central-1.amazonaws.com", 17595 "s3-accesspoint.me-central-1.amazonaws.com", 17596 "s3-object-lambda.me-central-1.amazonaws.com", 17597 "s3-website.me-central-1.amazonaws.com", 17598 "s3.dualstack.me-south-1.amazonaws.com", 17599 "s3-accesspoint.dualstack.me-south-1.amazonaws.com", 17600 "s3.me-south-1.amazonaws.com", 17601 "s3-accesspoint.me-south-1.amazonaws.com", 17602 "s3-object-lambda.me-south-1.amazonaws.com", 17603 "s3-website.me-south-1.amazonaws.com", 17604 "s3.amazonaws.com", 17605 "s3-1.amazonaws.com", 17606 "s3-ap-east-1.amazonaws.com", 17607 "s3-ap-northeast-1.amazonaws.com", 17608 "s3-ap-northeast-2.amazonaws.com", 17609 "s3-ap-northeast-3.amazonaws.com", 17610 "s3-ap-south-1.amazonaws.com", 17611 "s3-ap-southeast-1.amazonaws.com", 17612 "s3-ap-southeast-2.amazonaws.com", 17613 "s3-ca-central-1.amazonaws.com", 17614 "s3-eu-central-1.amazonaws.com", 17615 "s3-eu-north-1.amazonaws.com", 17616 "s3-eu-west-1.amazonaws.com", 17617 "s3-eu-west-2.amazonaws.com", 17618 "s3-eu-west-3.amazonaws.com", 17619 "s3-external-1.amazonaws.com", 17620 "s3-fips-us-gov-east-1.amazonaws.com", 17621 "s3-fips-us-gov-west-1.amazonaws.com", 17622 "mrap.accesspoint.s3-global.amazonaws.com", 17623 "s3-me-south-1.amazonaws.com", 17624 "s3-sa-east-1.amazonaws.com", 17625 "s3-us-east-2.amazonaws.com", 17626 "s3-us-gov-east-1.amazonaws.com", 17627 "s3-us-gov-west-1.amazonaws.com", 17628 "s3-us-west-1.amazonaws.com", 17629 "s3-us-west-2.amazonaws.com", 17630 "s3-website-ap-northeast-1.amazonaws.com", 17631 "s3-website-ap-southeast-1.amazonaws.com", 17632 "s3-website-ap-southeast-2.amazonaws.com", 17633 "s3-website-eu-west-1.amazonaws.com", 17634 "s3-website-sa-east-1.amazonaws.com", 17635 "s3-website-us-east-1.amazonaws.com", 17636 "s3-website-us-gov-west-1.amazonaws.com", 17637 "s3-website-us-west-1.amazonaws.com", 17638 "s3-website-us-west-2.amazonaws.com", 17639 "s3.dualstack.sa-east-1.amazonaws.com", 17640 "s3-accesspoint.dualstack.sa-east-1.amazonaws.com", 17641 "s3-website.dualstack.sa-east-1.amazonaws.com", 17642 "s3.sa-east-1.amazonaws.com", 17643 "s3-accesspoint.sa-east-1.amazonaws.com", 17644 "s3-object-lambda.sa-east-1.amazonaws.com", 17645 "s3-website.sa-east-1.amazonaws.com", 17646 "s3.dualstack.us-east-1.amazonaws.com", 17647 "s3-accesspoint.dualstack.us-east-1.amazonaws.com", 17648 "s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com", 17649 "s3-fips.dualstack.us-east-1.amazonaws.com", 17650 "s3-website.dualstack.us-east-1.amazonaws.com", 17651 "s3.us-east-1.amazonaws.com", 17652 "s3-accesspoint.us-east-1.amazonaws.com", 17653 "s3-accesspoint-fips.us-east-1.amazonaws.com", 17654 "s3-deprecated.us-east-1.amazonaws.com", 17655 "s3-fips.us-east-1.amazonaws.com", 17656 "s3-object-lambda.us-east-1.amazonaws.com", 17657 "s3-website.us-east-1.amazonaws.com", 17658 "s3.dualstack.us-east-2.amazonaws.com", 17659 "s3-accesspoint.dualstack.us-east-2.amazonaws.com", 17660 "s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com", 17661 "s3-fips.dualstack.us-east-2.amazonaws.com", 17662 "s3-website.dualstack.us-east-2.amazonaws.com", 17663 "s3.us-east-2.amazonaws.com", 17664 "s3-accesspoint.us-east-2.amazonaws.com", 17665 "s3-accesspoint-fips.us-east-2.amazonaws.com", 17666 "s3-deprecated.us-east-2.amazonaws.com", 17667 "s3-fips.us-east-2.amazonaws.com", 17668 "s3-object-lambda.us-east-2.amazonaws.com", 17669 "s3-website.us-east-2.amazonaws.com", 17670 "s3.dualstack.us-gov-east-1.amazonaws.com", 17671 "s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com", 17672 "s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com", 17673 "s3-fips.dualstack.us-gov-east-1.amazonaws.com", 17674 "s3.us-gov-east-1.amazonaws.com", 17675 "s3-accesspoint.us-gov-east-1.amazonaws.com", 17676 "s3-accesspoint-fips.us-gov-east-1.amazonaws.com", 17677 "s3-fips.us-gov-east-1.amazonaws.com", 17678 "s3-object-lambda.us-gov-east-1.amazonaws.com", 17679 "s3-website.us-gov-east-1.amazonaws.com", 17680 "s3.dualstack.us-gov-west-1.amazonaws.com", 17681 "s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com", 17682 "s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com", 17683 "s3-fips.dualstack.us-gov-west-1.amazonaws.com", 17684 "s3.us-gov-west-1.amazonaws.com", 17685 "s3-accesspoint.us-gov-west-1.amazonaws.com", 17686 "s3-accesspoint-fips.us-gov-west-1.amazonaws.com", 17687 "s3-fips.us-gov-west-1.amazonaws.com", 17688 "s3-object-lambda.us-gov-west-1.amazonaws.com", 17689 "s3-website.us-gov-west-1.amazonaws.com", 17690 "s3.dualstack.us-west-1.amazonaws.com", 17691 "s3-accesspoint.dualstack.us-west-1.amazonaws.com", 17692 "s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com", 17693 "s3-fips.dualstack.us-west-1.amazonaws.com", 17694 "s3-website.dualstack.us-west-1.amazonaws.com", 17695 "s3.us-west-1.amazonaws.com", 17696 "s3-accesspoint.us-west-1.amazonaws.com", 17697 "s3-accesspoint-fips.us-west-1.amazonaws.com", 17698 "s3-fips.us-west-1.amazonaws.com", 17699 "s3-object-lambda.us-west-1.amazonaws.com", 17700 "s3-website.us-west-1.amazonaws.com", 17701 "s3.dualstack.us-west-2.amazonaws.com", 17702 "s3-accesspoint.dualstack.us-west-2.amazonaws.com", 17703 "s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com", 17704 "s3-fips.dualstack.us-west-2.amazonaws.com", 17705 "s3-website.dualstack.us-west-2.amazonaws.com", 17706 "s3.us-west-2.amazonaws.com", 17707 "s3-accesspoint.us-west-2.amazonaws.com", 17708 "s3-accesspoint-fips.us-west-2.amazonaws.com", 17709 "s3-deprecated.us-west-2.amazonaws.com", 17710 "s3-fips.us-west-2.amazonaws.com", 17711 "s3-object-lambda.us-west-2.amazonaws.com", 17712 "s3-website.us-west-2.amazonaws.com", 17713 "labeling.ap-northeast-1.sagemaker.aws", 17714 "labeling.ap-northeast-2.sagemaker.aws", 17715 "labeling.ap-south-1.sagemaker.aws", 17716 "labeling.ap-southeast-1.sagemaker.aws", 17717 "labeling.ap-southeast-2.sagemaker.aws", 17718 "labeling.ca-central-1.sagemaker.aws", 17719 "labeling.eu-central-1.sagemaker.aws", 17720 "labeling.eu-west-1.sagemaker.aws", 17721 "labeling.eu-west-2.sagemaker.aws", 17722 "labeling.us-east-1.sagemaker.aws", 17723 "labeling.us-east-2.sagemaker.aws", 17724 "labeling.us-west-2.sagemaker.aws", 17725 "notebook.af-south-1.sagemaker.aws", 17726 "notebook.ap-east-1.sagemaker.aws", 17727 "notebook.ap-northeast-1.sagemaker.aws", 17728 "notebook.ap-northeast-2.sagemaker.aws", 17729 "notebook.ap-northeast-3.sagemaker.aws", 17730 "notebook.ap-south-1.sagemaker.aws", 17731 "notebook.ap-south-2.sagemaker.aws", 17732 "notebook.ap-southeast-1.sagemaker.aws", 17733 "notebook.ap-southeast-2.sagemaker.aws", 17734 "notebook.ap-southeast-3.sagemaker.aws", 17735 "notebook.ap-southeast-4.sagemaker.aws", 17736 "notebook.ca-central-1.sagemaker.aws", 17737 "notebook-fips.ca-central-1.sagemaker.aws", 17738 "notebook.ca-west-1.sagemaker.aws", 17739 "notebook-fips.ca-west-1.sagemaker.aws", 17740 "notebook.eu-central-1.sagemaker.aws", 17741 "notebook.eu-central-2.sagemaker.aws", 17742 "notebook.eu-north-1.sagemaker.aws", 17743 "notebook.eu-south-1.sagemaker.aws", 17744 "notebook.eu-south-2.sagemaker.aws", 17745 "notebook.eu-west-1.sagemaker.aws", 17746 "notebook.eu-west-2.sagemaker.aws", 17747 "notebook.eu-west-3.sagemaker.aws", 17748 "notebook.il-central-1.sagemaker.aws", 17749 "notebook.me-central-1.sagemaker.aws", 17750 "notebook.me-south-1.sagemaker.aws", 17751 "notebook.sa-east-1.sagemaker.aws", 17752 "notebook.us-east-1.sagemaker.aws", 17753 "notebook-fips.us-east-1.sagemaker.aws", 17754 "notebook.us-east-2.sagemaker.aws", 17755 "notebook-fips.us-east-2.sagemaker.aws", 17756 "notebook.us-gov-east-1.sagemaker.aws", 17757 "notebook-fips.us-gov-east-1.sagemaker.aws", 17758 "notebook.us-gov-west-1.sagemaker.aws", 17759 "notebook-fips.us-gov-west-1.sagemaker.aws", 17760 "notebook.us-west-1.sagemaker.aws", 17761 "notebook-fips.us-west-1.sagemaker.aws", 17762 "notebook.us-west-2.sagemaker.aws", 17763 "notebook-fips.us-west-2.sagemaker.aws", 17764 "notebook.cn-north-1.sagemaker.com.cn", 17765 "notebook.cn-northwest-1.sagemaker.com.cn", 17766 "studio.af-south-1.sagemaker.aws", 17767 "studio.ap-east-1.sagemaker.aws", 17768 "studio.ap-northeast-1.sagemaker.aws", 17769 "studio.ap-northeast-2.sagemaker.aws", 17770 "studio.ap-northeast-3.sagemaker.aws", 17771 "studio.ap-south-1.sagemaker.aws", 17772 "studio.ap-southeast-1.sagemaker.aws", 17773 "studio.ap-southeast-2.sagemaker.aws", 17774 "studio.ap-southeast-3.sagemaker.aws", 17775 "studio.ca-central-1.sagemaker.aws", 17776 "studio.eu-central-1.sagemaker.aws", 17777 "studio.eu-north-1.sagemaker.aws", 17778 "studio.eu-south-1.sagemaker.aws", 17779 "studio.eu-south-2.sagemaker.aws", 17780 "studio.eu-west-1.sagemaker.aws", 17781 "studio.eu-west-2.sagemaker.aws", 17782 "studio.eu-west-3.sagemaker.aws", 17783 "studio.il-central-1.sagemaker.aws", 17784 "studio.me-central-1.sagemaker.aws", 17785 "studio.me-south-1.sagemaker.aws", 17786 "studio.sa-east-1.sagemaker.aws", 17787 "studio.us-east-1.sagemaker.aws", 17788 "studio.us-east-2.sagemaker.aws", 17789 "studio.us-gov-east-1.sagemaker.aws", 17790 "studio-fips.us-gov-east-1.sagemaker.aws", 17791 "studio.us-gov-west-1.sagemaker.aws", 17792 "studio-fips.us-gov-west-1.sagemaker.aws", 17793 "studio.us-west-1.sagemaker.aws", 17794 "studio.us-west-2.sagemaker.aws", 17795 "studio.cn-north-1.sagemaker.com.cn", 17796 "studio.cn-northwest-1.sagemaker.com.cn", 17797 "*.experiments.sagemaker.aws", 17798 "analytics-gateway.ap-northeast-1.amazonaws.com", 17799 "analytics-gateway.ap-northeast-2.amazonaws.com", 17800 "analytics-gateway.ap-south-1.amazonaws.com", 17801 "analytics-gateway.ap-southeast-1.amazonaws.com", 17802 "analytics-gateway.ap-southeast-2.amazonaws.com", 17803 "analytics-gateway.eu-central-1.amazonaws.com", 17804 "analytics-gateway.eu-west-1.amazonaws.com", 17805 "analytics-gateway.us-east-1.amazonaws.com", 17806 "analytics-gateway.us-east-2.amazonaws.com", 17807 "analytics-gateway.us-west-2.amazonaws.com", 17808 "amplifyapp.com", 17809 "*.awsapprunner.com", 17810 "webview-assets.aws-cloud9.af-south-1.amazonaws.com", 17811 "vfs.cloud9.af-south-1.amazonaws.com", 17812 "webview-assets.cloud9.af-south-1.amazonaws.com", 17813 "webview-assets.aws-cloud9.ap-east-1.amazonaws.com", 17814 "vfs.cloud9.ap-east-1.amazonaws.com", 17815 "webview-assets.cloud9.ap-east-1.amazonaws.com", 17816 "webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com", 17817 "vfs.cloud9.ap-northeast-1.amazonaws.com", 17818 "webview-assets.cloud9.ap-northeast-1.amazonaws.com", 17819 "webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com", 17820 "vfs.cloud9.ap-northeast-2.amazonaws.com", 17821 "webview-assets.cloud9.ap-northeast-2.amazonaws.com", 17822 "webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com", 17823 "vfs.cloud9.ap-northeast-3.amazonaws.com", 17824 "webview-assets.cloud9.ap-northeast-3.amazonaws.com", 17825 "webview-assets.aws-cloud9.ap-south-1.amazonaws.com", 17826 "vfs.cloud9.ap-south-1.amazonaws.com", 17827 "webview-assets.cloud9.ap-south-1.amazonaws.com", 17828 "webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com", 17829 "vfs.cloud9.ap-southeast-1.amazonaws.com", 17830 "webview-assets.cloud9.ap-southeast-1.amazonaws.com", 17831 "webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com", 17832 "vfs.cloud9.ap-southeast-2.amazonaws.com", 17833 "webview-assets.cloud9.ap-southeast-2.amazonaws.com", 17834 "webview-assets.aws-cloud9.ca-central-1.amazonaws.com", 17835 "vfs.cloud9.ca-central-1.amazonaws.com", 17836 "webview-assets.cloud9.ca-central-1.amazonaws.com", 17837 "webview-assets.aws-cloud9.eu-central-1.amazonaws.com", 17838 "vfs.cloud9.eu-central-1.amazonaws.com", 17839 "webview-assets.cloud9.eu-central-1.amazonaws.com", 17840 "webview-assets.aws-cloud9.eu-north-1.amazonaws.com", 17841 "vfs.cloud9.eu-north-1.amazonaws.com", 17842 "webview-assets.cloud9.eu-north-1.amazonaws.com", 17843 "webview-assets.aws-cloud9.eu-south-1.amazonaws.com", 17844 "vfs.cloud9.eu-south-1.amazonaws.com", 17845 "webview-assets.cloud9.eu-south-1.amazonaws.com", 17846 "webview-assets.aws-cloud9.eu-west-1.amazonaws.com", 17847 "vfs.cloud9.eu-west-1.amazonaws.com", 17848 "webview-assets.cloud9.eu-west-1.amazonaws.com", 17849 "webview-assets.aws-cloud9.eu-west-2.amazonaws.com", 17850 "vfs.cloud9.eu-west-2.amazonaws.com", 17851 "webview-assets.cloud9.eu-west-2.amazonaws.com", 17852 "webview-assets.aws-cloud9.eu-west-3.amazonaws.com", 17853 "vfs.cloud9.eu-west-3.amazonaws.com", 17854 "webview-assets.cloud9.eu-west-3.amazonaws.com", 17855 "webview-assets.aws-cloud9.il-central-1.amazonaws.com", 17856 "vfs.cloud9.il-central-1.amazonaws.com", 17857 "webview-assets.aws-cloud9.me-south-1.amazonaws.com", 17858 "vfs.cloud9.me-south-1.amazonaws.com", 17859 "webview-assets.cloud9.me-south-1.amazonaws.com", 17860 "webview-assets.aws-cloud9.sa-east-1.amazonaws.com", 17861 "vfs.cloud9.sa-east-1.amazonaws.com", 17862 "webview-assets.cloud9.sa-east-1.amazonaws.com", 17863 "webview-assets.aws-cloud9.us-east-1.amazonaws.com", 17864 "vfs.cloud9.us-east-1.amazonaws.com", 17865 "webview-assets.cloud9.us-east-1.amazonaws.com", 17866 "webview-assets.aws-cloud9.us-east-2.amazonaws.com", 17867 "vfs.cloud9.us-east-2.amazonaws.com", 17868 "webview-assets.cloud9.us-east-2.amazonaws.com", 17869 "webview-assets.aws-cloud9.us-west-1.amazonaws.com", 17870 "vfs.cloud9.us-west-1.amazonaws.com", 17871 "webview-assets.cloud9.us-west-1.amazonaws.com", 17872 "webview-assets.aws-cloud9.us-west-2.amazonaws.com", 17873 "vfs.cloud9.us-west-2.amazonaws.com", 17874 "webview-assets.cloud9.us-west-2.amazonaws.com", 17875 "awsapps.com", 17876 "cn-north-1.eb.amazonaws.com.cn", 17877 "cn-northwest-1.eb.amazonaws.com.cn", 17878 "elasticbeanstalk.com", 17879 "af-south-1.elasticbeanstalk.com", 17880 "ap-east-1.elasticbeanstalk.com", 17881 "ap-northeast-1.elasticbeanstalk.com", 17882 "ap-northeast-2.elasticbeanstalk.com", 17883 "ap-northeast-3.elasticbeanstalk.com", 17884 "ap-south-1.elasticbeanstalk.com", 17885 "ap-southeast-1.elasticbeanstalk.com", 17886 "ap-southeast-2.elasticbeanstalk.com", 17887 "ap-southeast-3.elasticbeanstalk.com", 17888 "ca-central-1.elasticbeanstalk.com", 17889 "eu-central-1.elasticbeanstalk.com", 17890 "eu-north-1.elasticbeanstalk.com", 17891 "eu-south-1.elasticbeanstalk.com", 17892 "eu-west-1.elasticbeanstalk.com", 17893 "eu-west-2.elasticbeanstalk.com", 17894 "eu-west-3.elasticbeanstalk.com", 17895 "il-central-1.elasticbeanstalk.com", 17896 "me-south-1.elasticbeanstalk.com", 17897 "sa-east-1.elasticbeanstalk.com", 17898 "us-east-1.elasticbeanstalk.com", 17899 "us-east-2.elasticbeanstalk.com", 17900 "us-gov-east-1.elasticbeanstalk.com", 17901 "us-gov-west-1.elasticbeanstalk.com", 17902 "us-west-1.elasticbeanstalk.com", 17903 "us-west-2.elasticbeanstalk.com", 17904 "*.elb.amazonaws.com.cn", 17905 "*.elb.amazonaws.com", 17906 "awsglobalaccelerator.com", 17907 "*.private.repost.aws", 17908 "eero.online", 17909 "eero-stage.online", 17910 "apigee.io", 17911 "panel.dev", 17912 "siiites.com", 17913 "appspacehosted.com", 17914 "appspaceusercontent.com", 17915 "appudo.net", 17916 "on-aptible.com", 17917 "f5.si", 17918 "arvanedge.ir", 17919 "user.aseinet.ne.jp", 17920 "gv.vc", 17921 "d.gv.vc", 17922 "user.party.eus", 17923 "pimienta.org", 17924 "poivron.org", 17925 "potager.org", 17926 "sweetpepper.org", 17927 "myasustor.com", 17928 "cdn.prod.atlassian-dev.net", 17929 "translated.page", 17930 "myfritz.link", 17931 "myfritz.net", 17932 "onavstack.net", 17933 "*.awdev.ca", 17934 "*.advisor.ws", 17935 "ecommerce-shop.pl", 17936 "b-data.io", 17937 "balena-devices.com", 17938 "base.ec", 17939 "official.ec", 17940 "buyshop.jp", 17941 "fashionstore.jp", 17942 "handcrafted.jp", 17943 "kawaiishop.jp", 17944 "supersale.jp", 17945 "theshop.jp", 17946 "shopselect.net", 17947 "base.shop", 17948 "beagleboard.io", 17949 "*.beget.app", 17950 "pages.gay", 17951 "bnr.la", 17952 "bitbucket.io", 17953 "blackbaudcdn.net", 17954 "of.je", 17955 "bluebite.io", 17956 "boomla.net", 17957 "boutir.com", 17958 "boxfuse.io", 17959 "square7.ch", 17960 "bplaced.com", 17961 "bplaced.de", 17962 "square7.de", 17963 "bplaced.net", 17964 "square7.net", 17965 "*.s.brave.io", 17966 "shop.brendly.hr", 17967 "shop.brendly.rs", 17968 "browsersafetymark.io", 17969 "radio.am", 17970 "radio.fm", 17971 "uk0.bigv.io", 17972 "dh.bytemark.co.uk", 17973 "vm.bytemark.co.uk", 17974 "cafjs.com", 17975 "canva-apps.cn", 17976 "*.my.canvasite.cn", 17977 "canva-apps.com", 17978 "*.my.canva.site", 17979 "drr.ac", 17980 "uwu.ai", 17981 "carrd.co", 17982 "crd.co", 17983 "ju.mp", 17984 "api.gov.uk", 17985 "cdn77-storage.com", 17986 "rsc.contentproxy9.cz", 17987 "r.cdn77.net", 17988 "cdn77-ssl.net", 17989 "c.cdn77.org", 17990 "rsc.cdn77.org", 17991 "ssl.origin.cdn77-secure.org", 17992 "za.bz", 17993 "br.com", 17994 "cn.com", 17995 "de.com", 17996 "eu.com", 17997 "jpn.com", 17998 "mex.com", 17999 "ru.com", 18000 "sa.com", 18001 "uk.com", 18002 "us.com", 18003 "za.com", 18004 "com.de", 18005 "gb.net", 18006 "hu.net", 18007 "jp.net", 18008 "se.net", 18009 "uk.net", 18010 "ae.org", 18011 "com.se", 18012 "cx.ua", 18013 "discourse.group", 18014 "discourse.team", 18015 "clerk.app", 18016 "clerkstage.app", 18017 "*.lcl.dev", 18018 "*.lclstage.dev", 18019 "*.stg.dev", 18020 "*.stgstage.dev", 18021 "cleverapps.cc", 18022 "*.services.clever-cloud.com", 18023 "cleverapps.io", 18024 "cleverapps.tech", 18025 "clickrising.net", 18026 "cloudns.asia", 18027 "cloudns.be", 18028 "cloud-ip.biz", 18029 "cloudns.biz", 18030 "cloudns.cc", 18031 "cloudns.ch", 18032 "cloudns.cl", 18033 "cloudns.club", 18034 "dnsabr.com", 18035 "ip-ddns.com", 18036 "cloudns.cx", 18037 "cloudns.eu", 18038 "cloudns.in", 18039 "cloudns.info", 18040 "ddns-ip.net", 18041 "dns-cloud.net", 18042 "dns-dynamic.net", 18043 "cloudns.nz", 18044 "cloudns.org", 18045 "ip-dynamic.org", 18046 "cloudns.ph", 18047 "cloudns.pro", 18048 "cloudns.pw", 18049 "cloudns.us", 18050 "c66.me", 18051 "cloud66.ws", 18052 "cloud66.zone", 18053 "jdevcloud.com", 18054 "wpdevcloud.com", 18055 "cloudaccess.host", 18056 "freesite.host", 18057 "cloudaccess.net", 18058 "*.cloudera.site", 18059 "cf-ipfs.com", 18060 "cloudflare-ipfs.com", 18061 "trycloudflare.com", 18062 "pages.dev", 18063 "r2.dev", 18064 "workers.dev", 18065 "cloudflare.net", 18066 "cdn.cloudflare.net", 18067 "cdn.cloudflareanycast.net", 18068 "cdn.cloudflarecn.net", 18069 "cdn.cloudflareglobal.net", 18070 "cust.cloudscale.ch", 18071 "objects.lpg.cloudscale.ch", 18072 "objects.rma.cloudscale.ch", 18073 "wnext.app", 18074 "cnpy.gdn", 18075 "*.otap.co", 18076 "co.ca", 18077 "co.com", 18078 "codeberg.page", 18079 "csb.app", 18080 "preview.csb.app", 18081 "co.nl", 18082 "co.no", 18083 "webhosting.be", 18084 "hosting-cluster.nl", 18085 "ctfcloud.net", 18086 "convex.site", 18087 "ac.ru", 18088 "edu.ru", 18089 "gov.ru", 18090 "int.ru", 18091 "mil.ru", 18092 "test.ru", 18093 "dyn.cosidns.de", 18094 "dnsupdater.de", 18095 "dynamisches-dns.de", 18096 "internet-dns.de", 18097 "l-o-g-i-n.de", 18098 "dynamic-dns.info", 18099 "feste-ip.net", 18100 "knx-server.net", 18101 "static-access.net", 18102 "craft.me", 18103 "realm.cz", 18104 "on.crisp.email", 18105 "*.cryptonomic.net", 18106 "curv.dev", 18107 "cfolks.pl", 18108 "cyon.link", 18109 "cyon.site", 18110 "platform0.app", 18111 "fnwk.site", 18112 "folionetwork.site", 18113 "biz.dk", 18114 "co.dk", 18115 "firm.dk", 18116 "reg.dk", 18117 "store.dk", 18118 "dyndns.dappnode.io", 18119 "builtwithdark.com", 18120 "darklang.io", 18121 "demo.datadetect.com", 18122 "instance.datadetect.com", 18123 "edgestack.me", 18124 "dattolocal.com", 18125 "dattorelay.com", 18126 "dattoweb.com", 18127 "mydatto.com", 18128 "dattolocal.net", 18129 "mydatto.net", 18130 "ddnss.de", 18131 "dyn.ddnss.de", 18132 "dyndns.ddnss.de", 18133 "dyn-ip24.de", 18134 "dyndns1.de", 18135 "home-webserver.de", 18136 "dyn.home-webserver.de", 18137 "myhome-server.de", 18138 "ddnss.org", 18139 "debian.net", 18140 "definima.io", 18141 "definima.net", 18142 "deno.dev", 18143 "deno-staging.dev", 18144 "dedyn.io", 18145 "deta.app", 18146 "deta.dev", 18147 "dfirma.pl", 18148 "dkonto.pl", 18149 "you2.pl", 18150 "ondigitalocean.app", 18151 "*.digitaloceanspaces.com", 18152 "us.kg", 18153 "rss.my.id", 18154 "diher.solutions", 18155 "discordsays.com", 18156 "discordsez.com", 18157 "jozi.biz", 18158 "dnshome.de", 18159 "online.th", 18160 "shop.th", 18161 "drayddns.com", 18162 "shoparena.pl", 18163 "dreamhosters.com", 18164 "durumis.com", 18165 "mydrobo.com", 18166 "drud.io", 18167 "drud.us", 18168 "duckdns.org", 18169 "dy.fi", 18170 "tunk.org", 18171 "dyndns.biz", 18172 "for-better.biz", 18173 "for-more.biz", 18174 "for-some.biz", 18175 "for-the.biz", 18176 "selfip.biz", 18177 "webhop.biz", 18178 "ftpaccess.cc", 18179 "game-server.cc", 18180 "myphotos.cc", 18181 "scrapping.cc", 18182 "blogdns.com", 18183 "cechire.com", 18184 "dnsalias.com", 18185 "dnsdojo.com", 18186 "doesntexist.com", 18187 "dontexist.com", 18188 "doomdns.com", 18189 "dyn-o-saur.com", 18190 "dynalias.com", 18191 "dyndns-at-home.com", 18192 "dyndns-at-work.com", 18193 "dyndns-blog.com", 18194 "dyndns-free.com", 18195 "dyndns-home.com", 18196 "dyndns-ip.com", 18197 "dyndns-mail.com", 18198 "dyndns-office.com", 18199 "dyndns-pics.com", 18200 "dyndns-remote.com", 18201 "dyndns-server.com", 18202 "dyndns-web.com", 18203 "dyndns-wiki.com", 18204 "dyndns-work.com", 18205 "est-a-la-maison.com", 18206 "est-a-la-masion.com", 18207 "est-le-patron.com", 18208 "est-mon-blogueur.com", 18209 "from-ak.com", 18210 "from-al.com", 18211 "from-ar.com", 18212 "from-ca.com", 18213 "from-ct.com", 18214 "from-dc.com", 18215 "from-de.com", 18216 "from-fl.com", 18217 "from-ga.com", 18218 "from-hi.com", 18219 "from-ia.com", 18220 "from-id.com", 18221 "from-il.com", 18222 "from-in.com", 18223 "from-ks.com", 18224 "from-ky.com", 18225 "from-ma.com", 18226 "from-md.com", 18227 "from-mi.com", 18228 "from-mn.com", 18229 "from-mo.com", 18230 "from-ms.com", 18231 "from-mt.com", 18232 "from-nc.com", 18233 "from-nd.com", 18234 "from-ne.com", 18235 "from-nh.com", 18236 "from-nj.com", 18237 "from-nm.com", 18238 "from-nv.com", 18239 "from-oh.com", 18240 "from-ok.com", 18241 "from-or.com", 18242 "from-pa.com", 18243 "from-pr.com", 18244 "from-ri.com", 18245 "from-sc.com", 18246 "from-sd.com", 18247 "from-tn.com", 18248 "from-tx.com", 18249 "from-ut.com", 18250 "from-va.com", 18251 "from-vt.com", 18252 "from-wa.com", 18253 "from-wi.com", 18254 "from-wv.com", 18255 "from-wy.com", 18256 "getmyip.com", 18257 "gotdns.com", 18258 "hobby-site.com", 18259 "homelinux.com", 18260 "homeunix.com", 18261 "iamallama.com", 18262 "is-a-anarchist.com", 18263 "is-a-blogger.com", 18264 "is-a-bookkeeper.com", 18265 "is-a-bulls-fan.com", 18266 "is-a-caterer.com", 18267 "is-a-chef.com", 18268 "is-a-conservative.com", 18269 "is-a-cpa.com", 18270 "is-a-cubicle-slave.com", 18271 "is-a-democrat.com", 18272 "is-a-designer.com", 18273 "is-a-doctor.com", 18274 "is-a-financialadvisor.com", 18275 "is-a-geek.com", 18276 "is-a-green.com", 18277 "is-a-guru.com", 18278 "is-a-hard-worker.com", 18279 "is-a-hunter.com", 18280 "is-a-landscaper.com", 18281 "is-a-lawyer.com", 18282 "is-a-liberal.com", 18283 "is-a-libertarian.com", 18284 "is-a-llama.com", 18285 "is-a-musician.com", 18286 "is-a-nascarfan.com", 18287 "is-a-nurse.com", 18288 "is-a-painter.com", 18289 "is-a-personaltrainer.com", 18290 "is-a-photographer.com", 18291 "is-a-player.com", 18292 "is-a-republican.com", 18293 "is-a-rockstar.com", 18294 "is-a-socialist.com", 18295 "is-a-student.com", 18296 "is-a-teacher.com", 18297 "is-a-techie.com", 18298 "is-a-therapist.com", 18299 "is-an-accountant.com", 18300 "is-an-actor.com", 18301 "is-an-actress.com", 18302 "is-an-anarchist.com", 18303 "is-an-artist.com", 18304 "is-an-engineer.com", 18305 "is-an-entertainer.com", 18306 "is-certified.com", 18307 "is-gone.com", 18308 "is-into-anime.com", 18309 "is-into-cars.com", 18310 "is-into-cartoons.com", 18311 "is-into-games.com", 18312 "is-leet.com", 18313 "is-not-certified.com", 18314 "is-slick.com", 18315 "is-uberleet.com", 18316 "is-with-theband.com", 18317 "isa-geek.com", 18318 "isa-hockeynut.com", 18319 "issmarterthanyou.com", 18320 "likes-pie.com", 18321 "likescandy.com", 18322 "neat-url.com", 18323 "saves-the-whales.com", 18324 "selfip.com", 18325 "sells-for-less.com", 18326 "sells-for-u.com", 18327 "servebbs.com", 18328 "simple-url.com", 18329 "space-to-rent.com", 18330 "teaches-yoga.com", 18331 "writesthisblog.com", 18332 "ath.cx", 18333 "fuettertdasnetz.de", 18334 "isteingeek.de", 18335 "istmein.de", 18336 "lebtimnetz.de", 18337 "leitungsen.de", 18338 "traeumtgerade.de", 18339 "barrel-of-knowledge.info", 18340 "barrell-of-knowledge.info", 18341 "dyndns.info", 18342 "for-our.info", 18343 "groks-the.info", 18344 "groks-this.info", 18345 "here-for-more.info", 18346 "knowsitall.info", 18347 "selfip.info", 18348 "webhop.info", 18349 "forgot.her.name", 18350 "forgot.his.name", 18351 "at-band-camp.net", 18352 "blogdns.net", 18353 "broke-it.net", 18354 "buyshouses.net", 18355 "dnsalias.net", 18356 "dnsdojo.net", 18357 "does-it.net", 18358 "dontexist.net", 18359 "dynalias.net", 18360 "dynathome.net", 18361 "endofinternet.net", 18362 "from-az.net", 18363 "from-co.net", 18364 "from-la.net", 18365 "from-ny.net", 18366 "gets-it.net", 18367 "ham-radio-op.net", 18368 "homeftp.net", 18369 "homeip.net", 18370 "homelinux.net", 18371 "homeunix.net", 18372 "in-the-band.net", 18373 "is-a-chef.net", 18374 "is-a-geek.net", 18375 "isa-geek.net", 18376 "kicks-ass.net", 18377 "office-on-the.net", 18378 "podzone.net", 18379 "scrapper-site.net", 18380 "selfip.net", 18381 "sells-it.net", 18382 "servebbs.net", 18383 "serveftp.net", 18384 "thruhere.net", 18385 "webhop.net", 18386 "merseine.nu", 18387 "mine.nu", 18388 "shacknet.nu", 18389 "blogdns.org", 18390 "blogsite.org", 18391 "boldlygoingnowhere.org", 18392 "dnsalias.org", 18393 "dnsdojo.org", 18394 "doesntexist.org", 18395 "dontexist.org", 18396 "doomdns.org", 18397 "dvrdns.org", 18398 "dynalias.org", 18399 "dyndns.org", 18400 "go.dyndns.org", 18401 "home.dyndns.org", 18402 "endofinternet.org", 18403 "endoftheinternet.org", 18404 "from-me.org", 18405 "game-host.org", 18406 "gotdns.org", 18407 "hobby-site.org", 18408 "homedns.org", 18409 "homeftp.org", 18410 "homelinux.org", 18411 "homeunix.org", 18412 "is-a-bruinsfan.org", 18413 "is-a-candidate.org", 18414 "is-a-celticsfan.org", 18415 "is-a-chef.org", 18416 "is-a-geek.org", 18417 "is-a-knight.org", 18418 "is-a-linux-user.org", 18419 "is-a-patsfan.org", 18420 "is-a-soxfan.org", 18421 "is-found.org", 18422 "is-lost.org", 18423 "is-saved.org", 18424 "is-very-bad.org", 18425 "is-very-evil.org", 18426 "is-very-good.org", 18427 "is-very-nice.org", 18428 "is-very-sweet.org", 18429 "isa-geek.org", 18430 "kicks-ass.org", 18431 "misconfused.org", 18432 "podzone.org", 18433 "readmyblog.org", 18434 "selfip.org", 18435 "sellsyourhome.org", 18436 "servebbs.org", 18437 "serveftp.org", 18438 "servegame.org", 18439 "stuff-4-sale.org", 18440 "webhop.org", 18441 "better-than.tv", 18442 "dyndns.tv", 18443 "on-the-web.tv", 18444 "worse-than.tv", 18445 "is-by.us", 18446 "land-4-sale.us", 18447 "stuff-4-sale.us", 18448 "dyndns.ws", 18449 "mypets.ws", 18450 "ddnsfree.com", 18451 "ddnsgeek.com", 18452 "giize.com", 18453 "gleeze.com", 18454 "kozow.com", 18455 "loseyourip.com", 18456 "ooguy.com", 18457 "theworkpc.com", 18458 "casacam.net", 18459 "dynu.net", 18460 "accesscam.org", 18461 "camdvr.org", 18462 "freeddns.org", 18463 "mywire.org", 18464 "webredirect.org", 18465 "myddns.rocks", 18466 "dynv6.net", 18467 "e4.cz", 18468 "easypanel.app", 18469 "easypanel.host", 18470 "*.ewp.live", 18471 "twmail.cc", 18472 "twmail.net", 18473 "twmail.org", 18474 "mymailer.com.tw", 18475 "url.tw", 18476 "at.emf.camp", 18477 "rt.ht", 18478 "elementor.cloud", 18479 "elementor.cool", 18480 "en-root.fr", 18481 "mytuleap.com", 18482 "tuleap-partners.com", 18483 "encr.app", 18484 "encoreapi.com", 18485 "eu.encoway.cloud", 18486 "eu.org", 18487 "al.eu.org", 18488 "asso.eu.org", 18489 "at.eu.org", 18490 "au.eu.org", 18491 "be.eu.org", 18492 "bg.eu.org", 18493 "ca.eu.org", 18494 "cd.eu.org", 18495 "ch.eu.org", 18496 "cn.eu.org", 18497 "cy.eu.org", 18498 "cz.eu.org", 18499 "de.eu.org", 18500 "dk.eu.org", 18501 "edu.eu.org", 18502 "ee.eu.org", 18503 "es.eu.org", 18504 "fi.eu.org", 18505 "fr.eu.org", 18506 "gr.eu.org", 18507 "hr.eu.org", 18508 "hu.eu.org", 18509 "ie.eu.org", 18510 "il.eu.org", 18511 "in.eu.org", 18512 "int.eu.org", 18513 "is.eu.org", 18514 "it.eu.org", 18515 "jp.eu.org", 18516 "kr.eu.org", 18517 "lt.eu.org", 18518 "lu.eu.org", 18519 "lv.eu.org", 18520 "me.eu.org", 18521 "mk.eu.org", 18522 "mt.eu.org", 18523 "my.eu.org", 18524 "net.eu.org", 18525 "ng.eu.org", 18526 "nl.eu.org", 18527 "no.eu.org", 18528 "nz.eu.org", 18529 "pl.eu.org", 18530 "pt.eu.org", 18531 "ro.eu.org", 18532 "ru.eu.org", 18533 "se.eu.org", 18534 "si.eu.org", 18535 "sk.eu.org", 18536 "tr.eu.org", 18537 "uk.eu.org", 18538 "us.eu.org", 18539 "eurodir.ru", 18540 "eu-1.evennode.com", 18541 "eu-2.evennode.com", 18542 "eu-3.evennode.com", 18543 "eu-4.evennode.com", 18544 "us-1.evennode.com", 18545 "us-2.evennode.com", 18546 "us-3.evennode.com", 18547 "us-4.evennode.com", 18548 "relay.evervault.app", 18549 "relay.evervault.dev", 18550 "expo.app", 18551 "staging.expo.app", 18552 "onfabrica.com", 18553 "ru.net", 18554 "adygeya.ru", 18555 "bashkiria.ru", 18556 "bir.ru", 18557 "cbg.ru", 18558 "com.ru", 18559 "dagestan.ru", 18560 "grozny.ru", 18561 "kalmykia.ru", 18562 "kustanai.ru", 18563 "marine.ru", 18564 "mordovia.ru", 18565 "msk.ru", 18566 "mytis.ru", 18567 "nalchik.ru", 18568 "nov.ru", 18569 "pyatigorsk.ru", 18570 "spb.ru", 18571 "vladikavkaz.ru", 18572 "vladimir.ru", 18573 "abkhazia.su", 18574 "adygeya.su", 18575 "aktyubinsk.su", 18576 "arkhangelsk.su", 18577 "armenia.su", 18578 "ashgabad.su", 18579 "azerbaijan.su", 18580 "balashov.su", 18581 "bashkiria.su", 18582 "bryansk.su", 18583 "bukhara.su", 18584 "chimkent.su", 18585 "dagestan.su", 18586 "east-kazakhstan.su", 18587 "exnet.su", 18588 "georgia.su", 18589 "grozny.su", 18590 "ivanovo.su", 18591 "jambyl.su", 18592 "kalmykia.su", 18593 "kaluga.su", 18594 "karacol.su", 18595 "karaganda.su", 18596 "karelia.su", 18597 "khakassia.su", 18598 "krasnodar.su", 18599 "kurgan.su", 18600 "kustanai.su", 18601 "lenug.su", 18602 "mangyshlak.su", 18603 "mordovia.su", 18604 "msk.su", 18605 "murmansk.su", 18606 "nalchik.su", 18607 "navoi.su", 18608 "north-kazakhstan.su", 18609 "nov.su", 18610 "obninsk.su", 18611 "penza.su", 18612 "pokrovsk.su", 18613 "sochi.su", 18614 "spb.su", 18615 "tashkent.su", 18616 "termez.su", 18617 "togliatti.su", 18618 "troitsk.su", 18619 "tselinograd.su", 18620 "tula.su", 18621 "tuva.su", 18622 "vladikavkaz.su", 18623 "vladimir.su", 18624 "vologda.su", 18625 "channelsdvr.net", 18626 "u.channelsdvr.net", 18627 "edgecompute.app", 18628 "fastly-edge.com", 18629 "fastly-terrarium.com", 18630 "freetls.fastly.net", 18631 "map.fastly.net", 18632 "a.prod.fastly.net", 18633 "global.prod.fastly.net", 18634 "a.ssl.fastly.net", 18635 "b.ssl.fastly.net", 18636 "global.ssl.fastly.net", 18637 "fastlylb.net", 18638 "map.fastlylb.net", 18639 "*.user.fm", 18640 "fastvps-server.com", 18641 "fastvps.host", 18642 "myfast.host", 18643 "fastvps.site", 18644 "myfast.space", 18645 "conn.uk", 18646 "copro.uk", 18647 "hosp.uk", 18648 "fedorainfracloud.org", 18649 "fedorapeople.org", 18650 "cloud.fedoraproject.org", 18651 "app.os.fedoraproject.org", 18652 "app.os.stg.fedoraproject.org", 18653 "mydobiss.com", 18654 "fh-muenster.io", 18655 "filegear.me", 18656 "firebaseapp.com", 18657 "fldrv.com", 18658 "flutterflow.app", 18659 "fly.dev", 18660 "shw.io", 18661 "edgeapp.net", 18662 "forgeblocks.com", 18663 "id.forgerock.io", 18664 "framer.ai", 18665 "framer.app", 18666 "framercanvas.com", 18667 "framer.media", 18668 "framer.photos", 18669 "framer.website", 18670 "framer.wiki", 18671 "0e.vc", 18672 "freebox-os.com", 18673 "freeboxos.com", 18674 "fbx-os.fr", 18675 "fbxos.fr", 18676 "freebox-os.fr", 18677 "freeboxos.fr", 18678 "freedesktop.org", 18679 "freemyip.com", 18680 "*.frusky.de", 18681 "wien.funkfeuer.at", 18682 "daemon.asia", 18683 "dix.asia", 18684 "mydns.bz", 18685 "0am.jp", 18686 "0g0.jp", 18687 "0j0.jp", 18688 "0t0.jp", 18689 "mydns.jp", 18690 "pgw.jp", 18691 "wjg.jp", 18692 "keyword-on.net", 18693 "live-on.net", 18694 "server-on.net", 18695 "mydns.tw", 18696 "mydns.vc", 18697 "*.futurecms.at", 18698 "*.ex.futurecms.at", 18699 "*.in.futurecms.at", 18700 "futurehosting.at", 18701 "futuremailing.at", 18702 "*.ex.ortsinfo.at", 18703 "*.kunden.ortsinfo.at", 18704 "*.statics.cloud", 18705 "aliases121.com", 18706 "campaign.gov.uk", 18707 "service.gov.uk", 18708 "independent-commission.uk", 18709 "independent-inquest.uk", 18710 "independent-inquiry.uk", 18711 "independent-panel.uk", 18712 "independent-review.uk", 18713 "public-inquiry.uk", 18714 "royal-commission.uk", 18715 "gehirn.ne.jp", 18716 "usercontent.jp", 18717 "gentapps.com", 18718 "gentlentapis.com", 18719 "lab.ms", 18720 "cdn-edges.net", 18721 "localcert.net", 18722 "localhostcert.net", 18723 "gsj.bz", 18724 "githubusercontent.com", 18725 "githubpreview.dev", 18726 "github.io", 18727 "gitlab.io", 18728 "gitapp.si", 18729 "gitpage.si", 18730 "glitch.me", 18731 "nog.community", 18732 "co.ro", 18733 "shop.ro", 18734 "lolipop.io", 18735 "angry.jp", 18736 "babyblue.jp", 18737 "babymilk.jp", 18738 "backdrop.jp", 18739 "bambina.jp", 18740 "bitter.jp", 18741 "blush.jp", 18742 "boo.jp", 18743 "boy.jp", 18744 "boyfriend.jp", 18745 "but.jp", 18746 "candypop.jp", 18747 "capoo.jp", 18748 "catfood.jp", 18749 "cheap.jp", 18750 "chicappa.jp", 18751 "chillout.jp", 18752 "chips.jp", 18753 "chowder.jp", 18754 "chu.jp", 18755 "ciao.jp", 18756 "cocotte.jp", 18757 "coolblog.jp", 18758 "cranky.jp", 18759 "cutegirl.jp", 18760 "daa.jp", 18761 "deca.jp", 18762 "deci.jp", 18763 "digick.jp", 18764 "egoism.jp", 18765 "fakefur.jp", 18766 "fem.jp", 18767 "flier.jp", 18768 "floppy.jp", 18769 "fool.jp", 18770 "frenchkiss.jp", 18771 "girlfriend.jp", 18772 "girly.jp", 18773 "gloomy.jp", 18774 "gonna.jp", 18775 "greater.jp", 18776 "hacca.jp", 18777 "heavy.jp", 18778 "her.jp", 18779 "hiho.jp", 18780 "hippy.jp", 18781 "holy.jp", 18782 "hungry.jp", 18783 "icurus.jp", 18784 "itigo.jp", 18785 "jellybean.jp", 18786 "kikirara.jp", 18787 "kill.jp", 18788 "kilo.jp", 18789 "kuron.jp", 18790 "littlestar.jp", 18791 "lolipopmc.jp", 18792 "lolitapunk.jp", 18793 "lomo.jp", 18794 "lovepop.jp", 18795 "lovesick.jp", 18796 "main.jp", 18797 "mods.jp", 18798 "mond.jp", 18799 "mongolian.jp", 18800 "moo.jp", 18801 "namaste.jp", 18802 "nikita.jp", 18803 "nobushi.jp", 18804 "noor.jp", 18805 "oops.jp", 18806 "parallel.jp", 18807 "parasite.jp", 18808 "pecori.jp", 18809 "peewee.jp", 18810 "penne.jp", 18811 "pepper.jp", 18812 "perma.jp", 18813 "pigboat.jp", 18814 "pinoko.jp", 18815 "punyu.jp", 18816 "pupu.jp", 18817 "pussycat.jp", 18818 "pya.jp", 18819 "raindrop.jp", 18820 "readymade.jp", 18821 "sadist.jp", 18822 "schoolbus.jp", 18823 "secret.jp", 18824 "staba.jp", 18825 "stripper.jp", 18826 "sub.jp", 18827 "sunnyday.jp", 18828 "thick.jp", 18829 "tonkotsu.jp", 18830 "under.jp", 18831 "upper.jp", 18832 "velvet.jp", 18833 "verse.jp", 18834 "versus.jp", 18835 "vivian.jp", 18836 "watson.jp", 18837 "weblike.jp", 18838 "whitesnow.jp", 18839 "zombie.jp", 18840 "heteml.net", 18841 "graphic.design", 18842 "goip.de", 18843 "blogspot.ae", 18844 "blogspot.al", 18845 "blogspot.am", 18846 "*.hosted.app", 18847 "*.run.app", 18848 "web.app", 18849 "blogspot.com.ar", 18850 "blogspot.co.at", 18851 "blogspot.com.au", 18852 "blogspot.ba", 18853 "blogspot.be", 18854 "blogspot.bg", 18855 "blogspot.bj", 18856 "blogspot.com.br", 18857 "blogspot.com.by", 18858 "blogspot.ca", 18859 "blogspot.cf", 18860 "blogspot.ch", 18861 "blogspot.cl", 18862 "blogspot.com.co", 18863 "*.0emm.com", 18864 "appspot.com", 18865 "*.r.appspot.com", 18866 "blogspot.com", 18867 "codespot.com", 18868 "googleapis.com", 18869 "googlecode.com", 18870 "pagespeedmobilizer.com", 18871 "withgoogle.com", 18872 "withyoutube.com", 18873 "blogspot.cv", 18874 "blogspot.com.cy", 18875 "blogspot.cz", 18876 "blogspot.de", 18877 "*.gateway.dev", 18878 "blogspot.dk", 18879 "blogspot.com.ee", 18880 "blogspot.com.eg", 18881 "blogspot.com.es", 18882 "blogspot.fi", 18883 "blogspot.fr", 18884 "cloud.goog", 18885 "translate.goog", 18886 "*.usercontent.goog", 18887 "blogspot.gr", 18888 "blogspot.hk", 18889 "blogspot.hr", 18890 "blogspot.hu", 18891 "blogspot.co.id", 18892 "blogspot.ie", 18893 "blogspot.co.il", 18894 "blogspot.in", 18895 "blogspot.is", 18896 "blogspot.it", 18897 "blogspot.jp", 18898 "blogspot.co.ke", 18899 "blogspot.kr", 18900 "blogspot.li", 18901 "blogspot.lt", 18902 "blogspot.lu", 18903 "blogspot.md", 18904 "blogspot.mk", 18905 "blogspot.com.mt", 18906 "blogspot.mx", 18907 "blogspot.my", 18908 "cloudfunctions.net", 18909 "blogspot.com.ng", 18910 "blogspot.nl", 18911 "blogspot.no", 18912 "blogspot.co.nz", 18913 "blogspot.pe", 18914 "blogspot.pt", 18915 "blogspot.qa", 18916 "blogspot.re", 18917 "blogspot.ro", 18918 "blogspot.rs", 18919 "blogspot.ru", 18920 "blogspot.se", 18921 "blogspot.sg", 18922 "blogspot.si", 18923 "blogspot.sk", 18924 "blogspot.sn", 18925 "blogspot.td", 18926 "blogspot.com.tr", 18927 "blogspot.tw", 18928 "blogspot.ug", 18929 "blogspot.co.uk", 18930 "blogspot.com.uy", 18931 "blogspot.vn", 18932 "blogspot.co.za", 18933 "goupile.fr", 18934 "pymnt.uk", 18935 "cloudapps.digital", 18936 "london.cloudapps.digital", 18937 "gov.nl", 18938 "grafana-dev.net", 18939 "grayjayleagues.com", 18940 "günstigbestellen.de", 18941 "günstigliefern.de", 18942 "fin.ci", 18943 "free.hr", 18944 "caa.li", 18945 "ua.rs", 18946 "conf.se", 18947 "häkkinen.fi", 18948 "hrsn.dev", 18949 "hashbang.sh", 18950 "hasura.app", 18951 "hasura-app.io", 18952 "hatenablog.com", 18953 "hatenadiary.com", 18954 "hateblo.jp", 18955 "hatenablog.jp", 18956 "hatenadiary.jp", 18957 "hatenadiary.org", 18958 "pages.it.hs-heilbronn.de", 18959 "pages-research.it.hs-heilbronn.de", 18960 "heiyu.space", 18961 "helioho.st", 18962 "heliohost.us", 18963 "hepforge.org", 18964 "herokuapp.com", 18965 "herokussl.com", 18966 "heyflow.page", 18967 "heyflow.site", 18968 "ravendb.cloud", 18969 "ravendb.community", 18970 "development.run", 18971 "ravendb.run", 18972 "homesklep.pl", 18973 "*.kin.one", 18974 "*.id.pub", 18975 "*.kin.pub", 18976 "secaas.hk", 18977 "hoplix.shop", 18978 "orx.biz", 18979 "biz.gl", 18980 "biz.ng", 18981 "co.biz.ng", 18982 "dl.biz.ng", 18983 "go.biz.ng", 18984 "lg.biz.ng", 18985 "on.biz.ng", 18986 "col.ng", 18987 "firm.ng", 18988 "gen.ng", 18989 "ltd.ng", 18990 "ngo.ng", 18991 "plc.ng", 18992 "ie.ua", 18993 "hostyhosting.io", 18994 "hf.space", 18995 "static.hf.space", 18996 "hypernode.io", 18997 "iobb.net", 18998 "co.cz", 18999 "*.moonscale.io", 19000 "moonscale.net", 19001 "gr.com", 19002 "iki.fi", 19003 "ibxos.it", 19004 "iliadboxos.it", 19005 "smushcdn.com", 19006 "wphostedmail.com", 19007 "wpmucdn.com", 19008 "tempurl.host", 19009 "wpmudev.host", 19010 "dyn-berlin.de", 19011 "in-berlin.de", 19012 "in-brb.de", 19013 "in-butter.de", 19014 "in-dsl.de", 19015 "in-vpn.de", 19016 "in-dsl.net", 19017 "in-vpn.net", 19018 "in-dsl.org", 19019 "in-vpn.org", 19020 "biz.at", 19021 "info.at", 19022 "info.cx", 19023 "ac.leg.br", 19024 "al.leg.br", 19025 "am.leg.br", 19026 "ap.leg.br", 19027 "ba.leg.br", 19028 "ce.leg.br", 19029 "df.leg.br", 19030 "es.leg.br", 19031 "go.leg.br", 19032 "ma.leg.br", 19033 "mg.leg.br", 19034 "ms.leg.br", 19035 "mt.leg.br", 19036 "pa.leg.br", 19037 "pb.leg.br", 19038 "pe.leg.br", 19039 "pi.leg.br", 19040 "pr.leg.br", 19041 "rj.leg.br", 19042 "rn.leg.br", 19043 "ro.leg.br", 19044 "rr.leg.br", 19045 "rs.leg.br", 19046 "sc.leg.br", 19047 "se.leg.br", 19048 "sp.leg.br", 19049 "to.leg.br", 19050 "pixolino.com", 19051 "na4u.ru", 19052 "apps-1and1.com", 19053 "live-website.com", 19054 "apps-1and1.net", 19055 "websitebuilder.online", 19056 "app-ionos.space", 19057 "iopsys.se", 19058 "*.dweb.link", 19059 "ipifony.net", 19060 "ir.md", 19061 "is-a-good.dev", 19062 "is-a.dev", 19063 "iservschule.de", 19064 "mein-iserv.de", 19065 "schulplattform.de", 19066 "schulserver.de", 19067 "test-iserv.de", 19068 "iserv.dev", 19069 "mel.cloudlets.com.au", 19070 "cloud.interhostsolutions.be", 19071 "alp1.ae.flow.ch", 19072 "appengine.flow.ch", 19073 "es-1.axarnet.cloud", 19074 "diadem.cloud", 19075 "vip.jelastic.cloud", 19076 "jele.cloud", 19077 "it1.eur.aruba.jenv-aruba.cloud", 19078 "it1.jenv-aruba.cloud", 19079 "keliweb.cloud", 19080 "cs.keliweb.cloud", 19081 "oxa.cloud", 19082 "tn.oxa.cloud", 19083 "uk.oxa.cloud", 19084 "primetel.cloud", 19085 "uk.primetel.cloud", 19086 "ca.reclaim.cloud", 19087 "uk.reclaim.cloud", 19088 "us.reclaim.cloud", 19089 "ch.trendhosting.cloud", 19090 "de.trendhosting.cloud", 19091 "jele.club", 19092 "dopaas.com", 19093 "paas.hosted-by-previder.com", 19094 "rag-cloud.hosteur.com", 19095 "rag-cloud-ch.hosteur.com", 19096 "jcloud.ik-server.com", 19097 "jcloud-ver-jpc.ik-server.com", 19098 "demo.jelastic.com", 19099 "paas.massivegrid.com", 19100 "jed.wafaicloud.com", 19101 "ryd.wafaicloud.com", 19102 "j.scaleforce.com.cy", 19103 "jelastic.dogado.eu", 19104 "fi.cloudplatform.fi", 19105 "demo.datacenter.fi", 19106 "paas.datacenter.fi", 19107 "jele.host", 19108 "mircloud.host", 19109 "paas.beebyte.io", 19110 "sekd1.beebyteapp.io", 19111 "jele.io", 19112 "jc.neen.it", 19113 "jcloud.kz", 19114 "cloudjiffy.net", 19115 "fra1-de.cloudjiffy.net", 19116 "west1-us.cloudjiffy.net", 19117 "jls-sto1.elastx.net", 19118 "jls-sto2.elastx.net", 19119 "jls-sto3.elastx.net", 19120 "fr-1.paas.massivegrid.net", 19121 "lon-1.paas.massivegrid.net", 19122 "lon-2.paas.massivegrid.net", 19123 "ny-1.paas.massivegrid.net", 19124 "ny-2.paas.massivegrid.net", 19125 "sg-1.paas.massivegrid.net", 19126 "jelastic.saveincloud.net", 19127 "nordeste-idc.saveincloud.net", 19128 "j.scaleforce.net", 19129 "sdscloud.pl", 19130 "unicloud.pl", 19131 "mircloud.ru", 19132 "enscaled.sg", 19133 "jele.site", 19134 "jelastic.team", 19135 "orangecloud.tn", 19136 "j.layershift.co.uk", 19137 "phx.enscaled.us", 19138 "mircloud.us", 19139 "myjino.ru", 19140 "*.hosting.myjino.ru", 19141 "*.landing.myjino.ru", 19142 "*.spectrum.myjino.ru", 19143 "*.vps.myjino.ru", 19144 "jotelulu.cloud", 19145 "webadorsite.com", 19146 "jouwweb.site", 19147 "*.cns.joyent.com", 19148 "*.triton.zone", 19149 "js.org", 19150 "kaas.gg", 19151 "khplay.nl", 19152 "kapsi.fi", 19153 "ezproxy.kuleuven.be", 19154 "kuleuven.cloud", 19155 "keymachine.de", 19156 "kinghost.net", 19157 "uni5.net", 19158 "knightpoint.systems", 19159 "koobin.events", 19160 "webthings.io", 19161 "krellian.net", 19162 "oya.to", 19163 "git-repos.de", 19164 "lcube-server.de", 19165 "svn-repos.de", 19166 "leadpages.co", 19167 "lpages.co", 19168 "lpusercontent.com", 19169 "lelux.site", 19170 "libp2p.direct", 19171 "runcontainers.dev", 19172 "co.business", 19173 "co.education", 19174 "co.events", 19175 "co.financial", 19176 "co.network", 19177 "co.place", 19178 "co.technology", 19179 "linkyard-cloud.ch", 19180 "linkyard.cloud", 19181 "members.linode.com", 19182 "*.nodebalancer.linode.com", 19183 "*.linodeobjects.com", 19184 "ip.linodeusercontent.com", 19185 "we.bs", 19186 "filegear-sg.me", 19187 "ggff.net", 19188 "*.user.localcert.dev", 19189 "lodz.pl", 19190 "pabianice.pl", 19191 "plock.pl", 19192 "sieradz.pl", 19193 "skierniewice.pl", 19194 "zgierz.pl", 19195 "loginline.app", 19196 "loginline.dev", 19197 "loginline.io", 19198 "loginline.services", 19199 "loginline.site", 19200 "lohmus.me", 19201 "servers.run", 19202 "krasnik.pl", 19203 "leczna.pl", 19204 "lubartow.pl", 19205 "lublin.pl", 19206 "poniatowa.pl", 19207 "swidnik.pl", 19208 "glug.org.uk", 19209 "lug.org.uk", 19210 "lugs.org.uk", 19211 "barsy.bg", 19212 "barsy.club", 19213 "barsycenter.com", 19214 "barsyonline.com", 19215 "barsy.de", 19216 "barsy.dev", 19217 "barsy.eu", 19218 "barsy.gr", 19219 "barsy.in", 19220 "barsy.info", 19221 "barsy.io", 19222 "barsy.me", 19223 "barsy.menu", 19224 "barsyonline.menu", 19225 "barsy.mobi", 19226 "barsy.net", 19227 "barsy.online", 19228 "barsy.org", 19229 "barsy.pro", 19230 "barsy.pub", 19231 "barsy.ro", 19232 "barsy.rs", 19233 "barsy.shop", 19234 "barsyonline.shop", 19235 "barsy.site", 19236 "barsy.store", 19237 "barsy.support", 19238 "barsy.uk", 19239 "barsy.co.uk", 19240 "barsyonline.co.uk", 19241 "*.magentosite.cloud", 19242 "hb.cldmail.ru", 19243 "matlab.cloud", 19244 "modelscape.com", 19245 "mwcloudnonprod.com", 19246 "polyspace.com", 19247 "mayfirst.info", 19248 "mayfirst.org", 19249 "mazeplay.com", 19250 "mcdir.me", 19251 "mcdir.ru", 19252 "vps.mcdir.ru", 19253 "mcpre.ru", 19254 "mediatech.by", 19255 "mediatech.dev", 19256 "hra.health", 19257 "medusajs.app", 19258 "miniserver.com", 19259 "memset.net", 19260 "messerli.app", 19261 "atmeta.com", 19262 "apps.fbsbx.com", 19263 "*.cloud.metacentrum.cz", 19264 "custom.metacentrum.cz", 19265 "flt.cloud.muni.cz", 19266 "usr.cloud.muni.cz", 19267 "meteorapp.com", 19268 "eu.meteorapp.com", 19269 "co.pl", 19270 "*.azurecontainer.io", 19271 "azure-api.net", 19272 "azure-mobile.net", 19273 "azureedge.net", 19274 "azurefd.net", 19275 "azurestaticapps.net", 19276 "1.azurestaticapps.net", 19277 "2.azurestaticapps.net", 19278 "3.azurestaticapps.net", 19279 "4.azurestaticapps.net", 19280 "5.azurestaticapps.net", 19281 "6.azurestaticapps.net", 19282 "7.azurestaticapps.net", 19283 "centralus.azurestaticapps.net", 19284 "eastasia.azurestaticapps.net", 19285 "eastus2.azurestaticapps.net", 19286 "westeurope.azurestaticapps.net", 19287 "westus2.azurestaticapps.net", 19288 "azurewebsites.net", 19289 "cloudapp.net", 19290 "trafficmanager.net", 19291 "blob.core.windows.net", 19292 "servicebus.windows.net", 19293 "routingthecloud.com", 19294 "sn.mynetname.net", 19295 "routingthecloud.net", 19296 "routingthecloud.org", 19297 "csx.cc", 19298 "mydbserver.com", 19299 "webspaceconfig.de", 19300 "mittwald.info", 19301 "mittwaldserver.info", 19302 "typo3server.info", 19303 "project.space", 19304 "modx.dev", 19305 "bmoattachments.org", 19306 "net.ru", 19307 "org.ru", 19308 "pp.ru", 19309 "hostedpi.com", 19310 "caracal.mythic-beasts.com", 19311 "customer.mythic-beasts.com", 19312 "fentiger.mythic-beasts.com", 19313 "lynx.mythic-beasts.com", 19314 "ocelot.mythic-beasts.com", 19315 "oncilla.mythic-beasts.com", 19316 "onza.mythic-beasts.com", 19317 "sphinx.mythic-beasts.com", 19318 "vs.mythic-beasts.com", 19319 "x.mythic-beasts.com", 19320 "yali.mythic-beasts.com", 19321 "cust.retrosnub.co.uk", 19322 "ui.nabu.casa", 19323 "cloud.nospamproxy.com", 19324 "netfy.app", 19325 "netlify.app", 19326 "4u.com", 19327 "nfshost.com", 19328 "ipfs.nftstorage.link", 19329 "ngo.us", 19330 "ngrok.app", 19331 "ngrok-free.app", 19332 "ngrok.dev", 19333 "ngrok-free.dev", 19334 "ngrok.io", 19335 "ap.ngrok.io", 19336 "au.ngrok.io", 19337 "eu.ngrok.io", 19338 "in.ngrok.io", 19339 "jp.ngrok.io", 19340 "sa.ngrok.io", 19341 "us.ngrok.io", 19342 "ngrok.pizza", 19343 "ngrok.pro", 19344 "torun.pl", 19345 "nh-serv.co.uk", 19346 "nimsite.uk", 19347 "mmafan.biz", 19348 "myftp.biz", 19349 "no-ip.biz", 19350 "no-ip.ca", 19351 "fantasyleague.cc", 19352 "gotdns.ch", 19353 "3utilities.com", 19354 "blogsyte.com", 19355 "ciscofreak.com", 19356 "damnserver.com", 19357 "ddnsking.com", 19358 "ditchyourip.com", 19359 "dnsiskinky.com", 19360 "dynns.com", 19361 "geekgalaxy.com", 19362 "health-carereform.com", 19363 "homesecuritymac.com", 19364 "homesecuritypc.com", 19365 "myactivedirectory.com", 19366 "mysecuritycamera.com", 19367 "myvnc.com", 19368 "net-freaks.com", 19369 "onthewifi.com", 19370 "point2this.com", 19371 "quicksytes.com", 19372 "securitytactics.com", 19373 "servebeer.com", 19374 "servecounterstrike.com", 19375 "serveexchange.com", 19376 "serveftp.com", 19377 "servegame.com", 19378 "servehalflife.com", 19379 "servehttp.com", 19380 "servehumour.com", 19381 "serveirc.com", 19382 "servemp3.com", 19383 "servep2p.com", 19384 "servepics.com", 19385 "servequake.com", 19386 "servesarcasm.com", 19387 "stufftoread.com", 19388 "unusualperson.com", 19389 "workisboring.com", 19390 "dvrcam.info", 19391 "ilovecollege.info", 19392 "no-ip.info", 19393 "brasilia.me", 19394 "ddns.me", 19395 "dnsfor.me", 19396 "hopto.me", 19397 "loginto.me", 19398 "noip.me", 19399 "webhop.me", 19400 "bounceme.net", 19401 "ddns.net", 19402 "eating-organic.net", 19403 "mydissent.net", 19404 "myeffect.net", 19405 "mymediapc.net", 19406 "mypsx.net", 19407 "mysecuritycamera.net", 19408 "nhlfan.net", 19409 "no-ip.net", 19410 "pgafan.net", 19411 "privatizehealthinsurance.net", 19412 "redirectme.net", 19413 "serveblog.net", 19414 "serveminecraft.net", 19415 "sytes.net", 19416 "cable-modem.org", 19417 "collegefan.org", 19418 "couchpotatofries.org", 19419 "hopto.org", 19420 "mlbfan.org", 19421 "myftp.org", 19422 "mysecuritycamera.org", 19423 "nflfan.org", 19424 "no-ip.org", 19425 "read-books.org", 19426 "ufcfan.org", 19427 "zapto.org", 19428 "no-ip.co.uk", 19429 "golffan.us", 19430 "noip.us", 19431 "pointto.us", 19432 "stage.nodeart.io", 19433 "*.developer.app", 19434 "noop.app", 19435 "*.northflank.app", 19436 "*.build.run", 19437 "*.code.run", 19438 "*.database.run", 19439 "*.migration.run", 19440 "noticeable.news", 19441 "notion.site", 19442 "dnsking.ch", 19443 "mypi.co", 19444 "n4t.co", 19445 "001www.com", 19446 "myiphost.com", 19447 "forumz.info", 19448 "soundcast.me", 19449 "tcp4.me", 19450 "dnsup.net", 19451 "hicam.net", 19452 "now-dns.net", 19453 "ownip.net", 19454 "vpndns.net", 19455 "dynserv.org", 19456 "now-dns.org", 19457 "x443.pw", 19458 "now-dns.top", 19459 "ntdll.top", 19460 "freeddns.us", 19461 "nsupdate.info", 19462 "nerdpol.ovh", 19463 "nyc.mn", 19464 "prvcy.page", 19465 "obl.ong", 19466 "observablehq.cloud", 19467 "static.observableusercontent.com", 19468 "omg.lol", 19469 "cloudycluster.net", 19470 "omniwe.site", 19471 "123webseite.at", 19472 "123website.be", 19473 "simplesite.com.br", 19474 "123website.ch", 19475 "simplesite.com", 19476 "123webseite.de", 19477 "123hjemmeside.dk", 19478 "123miweb.es", 19479 "123kotisivu.fi", 19480 "123siteweb.fr", 19481 "simplesite.gr", 19482 "123homepage.it", 19483 "123website.lu", 19484 "123website.nl", 19485 "123hjemmeside.no", 19486 "service.one", 19487 "simplesite.pl", 19488 "123paginaweb.pt", 19489 "123minsida.se", 19490 "is-a-fullstack.dev", 19491 "is-cool.dev", 19492 "is-not-a.dev", 19493 "localplayer.dev", 19494 "is-local.org", 19495 "opensocial.site", 19496 "opencraft.hosting", 19497 "16-b.it", 19498 "32-b.it", 19499 "64-b.it", 19500 "orsites.com", 19501 "operaunite.com", 19502 "*.customer-oci.com", 19503 "*.oci.customer-oci.com", 19504 "*.ocp.customer-oci.com", 19505 "*.ocs.customer-oci.com", 19506 "*.oraclecloudapps.com", 19507 "*.oraclegovcloudapps.com", 19508 "*.oraclegovcloudapps.uk", 19509 "tech.orange", 19510 "can.re", 19511 "authgear-staging.com", 19512 "authgearapps.com", 19513 "skygearapp.com", 19514 "outsystemscloud.com", 19515 "*.hosting.ovh.net", 19516 "*.webpaas.ovh.net", 19517 "ownprovider.com", 19518 "own.pm", 19519 "*.owo.codes", 19520 "ox.rs", 19521 "oy.lc", 19522 "pgfog.com", 19523 "pagexl.com", 19524 "gotpantheon.com", 19525 "pantheonsite.io", 19526 "*.paywhirl.com", 19527 "*.xmit.co", 19528 "xmit.dev", 19529 "madethis.site", 19530 "srv.us", 19531 "gh.srv.us", 19532 "gl.srv.us", 19533 "lk3.ru", 19534 "mypep.link", 19535 "perspecta.cloud", 19536 "on-web.fr", 19537 "*.upsun.app", 19538 "upsunapp.com", 19539 "ent.platform.sh", 19540 "eu.platform.sh", 19541 "us.platform.sh", 19542 "*.platformsh.site", 19543 "*.tst.site", 19544 "platter-app.com", 19545 "platter-app.dev", 19546 "platterp.us", 19547 "pley.games", 19548 "onporter.run", 19549 "co.bn", 19550 "postman-echo.com", 19551 "pstmn.io", 19552 "mock.pstmn.io", 19553 "httpbin.org", 19554 "prequalifyme.today", 19555 "xen.prgmr.com", 19556 "priv.at", 19557 "protonet.io", 19558 "chirurgiens-dentistes-en-france.fr", 19559 "byen.site", 19560 "pubtls.org", 19561 "pythonanywhere.com", 19562 "eu.pythonanywhere.com", 19563 "qa2.com", 19564 "qcx.io", 19565 "*.sys.qcx.io", 19566 "myqnapcloud.cn", 19567 "alpha-myqnapcloud.com", 19568 "dev-myqnapcloud.com", 19569 "mycloudnas.com", 19570 "mynascloud.com", 19571 "myqnapcloud.com", 19572 "qoto.io", 19573 "qualifioapp.com", 19574 "ladesk.com", 19575 "qbuser.com", 19576 "*.quipelements.com", 19577 "vapor.cloud", 19578 "vaporcloud.io", 19579 "rackmaze.com", 19580 "rackmaze.net", 19581 "cloudsite.builders", 19582 "myradweb.net", 19583 "servername.us", 19584 "web.in", 19585 "in.net", 19586 "myrdbx.io", 19587 "site.rb-hosting.io", 19588 "*.on-rancher.cloud", 19589 "*.on-k3s.io", 19590 "*.on-rio.io", 19591 "ravpage.co.il", 19592 "readthedocs-hosted.com", 19593 "readthedocs.io", 19594 "rhcloud.com", 19595 "instances.spawn.cc", 19596 "onrender.com", 19597 "app.render.com", 19598 "replit.app", 19599 "id.replit.app", 19600 "firewalledreplit.co", 19601 "id.firewalledreplit.co", 19602 "repl.co", 19603 "id.repl.co", 19604 "replit.dev", 19605 "archer.replit.dev", 19606 "bones.replit.dev", 19607 "canary.replit.dev", 19608 "global.replit.dev", 19609 "hacker.replit.dev", 19610 "id.replit.dev", 19611 "janeway.replit.dev", 19612 "kim.replit.dev", 19613 "kira.replit.dev", 19614 "kirk.replit.dev", 19615 "odo.replit.dev", 19616 "paris.replit.dev", 19617 "picard.replit.dev", 19618 "pike.replit.dev", 19619 "prerelease.replit.dev", 19620 "reed.replit.dev", 19621 "riker.replit.dev", 19622 "sisko.replit.dev", 19623 "spock.replit.dev", 19624 "staging.replit.dev", 19625 "sulu.replit.dev", 19626 "tarpit.replit.dev", 19627 "teams.replit.dev", 19628 "tucker.replit.dev", 19629 "wesley.replit.dev", 19630 "worf.replit.dev", 19631 "repl.run", 19632 "resindevice.io", 19633 "devices.resinstaging.io", 19634 "hzc.io", 19635 "adimo.co.uk", 19636 "itcouldbewor.se", 19637 "aus.basketball", 19638 "nz.basketball", 19639 "git-pages.rit.edu", 19640 "rocky.page", 19641 "rub.de", 19642 "ruhr-uni-bochum.de", 19643 "io.noc.ruhr-uni-bochum.de", 19644 "биз.ÑÑÑ", 19645 "ком.ÑÑÑ", 19646 "кÑÑм.ÑÑÑ", 19647 "миÑ.ÑÑÑ", 19648 "мÑк.ÑÑÑ", 19649 "оÑг.ÑÑÑ", 19650 "ÑамаÑа.ÑÑÑ", 19651 "ÑоÑи.ÑÑÑ", 19652 "Ñпб.ÑÑÑ", 19653 "Ñ.ÑÑÑ", 19654 "ras.ru", 19655 "nyat.app", 19656 "180r.com", 19657 "dojin.com", 19658 "sakuratan.com", 19659 "sakuraweb.com", 19660 "x0.com", 19661 "2-d.jp", 19662 "bona.jp", 19663 "crap.jp", 19664 "daynight.jp", 19665 "eek.jp", 19666 "flop.jp", 19667 "halfmoon.jp", 19668 "jeez.jp", 19669 "matrix.jp", 19670 "mimoza.jp", 19671 "ivory.ne.jp", 19672 "mail-box.ne.jp", 19673 "mints.ne.jp", 19674 "mokuren.ne.jp", 19675 "opal.ne.jp", 19676 "sakura.ne.jp", 19677 "sumomo.ne.jp", 19678 "topaz.ne.jp", 19679 "netgamers.jp", 19680 "nyanta.jp", 19681 "o0o0.jp", 19682 "rdy.jp", 19683 "rgr.jp", 19684 "rulez.jp", 19685 "s3.isk01.sakurastorage.jp", 19686 "s3.isk02.sakurastorage.jp", 19687 "saloon.jp", 19688 "sblo.jp", 19689 "skr.jp", 19690 "tank.jp", 19691 "uh-oh.jp", 19692 "undo.jp", 19693 "rs.webaccel.jp", 19694 "user.webaccel.jp", 19695 "websozai.jp", 19696 "xii.jp", 19697 "squares.net", 19698 "jpn.org", 19699 "kirara.st", 19700 "x0.to", 19701 "from.tv", 19702 "sakura.tv", 19703 "*.builder.code.com", 19704 "*.dev-builder.code.com", 19705 "*.stg-builder.code.com", 19706 "*.001.test.code-builder-stg.platform.salesforce.com", 19707 "*.d.crm.dev", 19708 "*.w.crm.dev", 19709 "*.wa.crm.dev", 19710 "*.wb.crm.dev", 19711 "*.wc.crm.dev", 19712 "*.wd.crm.dev", 19713 "*.we.crm.dev", 19714 "*.wf.crm.dev", 19715 "sandcats.io", 19716 "logoip.com", 19717 "logoip.de", 19718 "fr-par-1.baremetal.scw.cloud", 19719 "fr-par-2.baremetal.scw.cloud", 19720 "nl-ams-1.baremetal.scw.cloud", 19721 "cockpit.fr-par.scw.cloud", 19722 "fnc.fr-par.scw.cloud", 19723 "functions.fnc.fr-par.scw.cloud", 19724 "k8s.fr-par.scw.cloud", 19725 "nodes.k8s.fr-par.scw.cloud", 19726 "s3.fr-par.scw.cloud", 19727 "s3-website.fr-par.scw.cloud", 19728 "whm.fr-par.scw.cloud", 19729 "priv.instances.scw.cloud", 19730 "pub.instances.scw.cloud", 19731 "k8s.scw.cloud", 19732 "cockpit.nl-ams.scw.cloud", 19733 "k8s.nl-ams.scw.cloud", 19734 "nodes.k8s.nl-ams.scw.cloud", 19735 "s3.nl-ams.scw.cloud", 19736 "s3-website.nl-ams.scw.cloud", 19737 "whm.nl-ams.scw.cloud", 19738 "cockpit.pl-waw.scw.cloud", 19739 "k8s.pl-waw.scw.cloud", 19740 "nodes.k8s.pl-waw.scw.cloud", 19741 "s3.pl-waw.scw.cloud", 19742 "s3-website.pl-waw.scw.cloud", 19743 "scalebook.scw.cloud", 19744 "smartlabeling.scw.cloud", 19745 "dedibox.fr", 19746 "schokokeks.net", 19747 "gov.scot", 19748 "service.gov.scot", 19749 "scrysec.com", 19750 "client.scrypted.io", 19751 "firewall-gateway.com", 19752 "firewall-gateway.de", 19753 "my-gateway.de", 19754 "my-router.de", 19755 "spdns.de", 19756 "spdns.eu", 19757 "firewall-gateway.net", 19758 "my-firewall.org", 19759 "myfirewall.org", 19760 "spdns.org", 19761 "seidat.net", 19762 "sellfy.store", 19763 "minisite.ms", 19764 "senseering.net", 19765 "servebolt.cloud", 19766 "biz.ua", 19767 "co.ua", 19768 "pp.ua", 19769 "as.sh.cn", 19770 "sheezy.games", 19771 "shiftedit.io", 19772 "myshopblocks.com", 19773 "myshopify.com", 19774 "shopitsite.com", 19775 "shopware.shop", 19776 "shopware.store", 19777 "mo-siemens.io", 19778 "1kapp.com", 19779 "appchizi.com", 19780 "applinzi.com", 19781 "sinaapp.com", 19782 "vipsinaapp.com", 19783 "siteleaf.net", 19784 "small-web.org", 19785 "aeroport.fr", 19786 "avocat.fr", 19787 "chambagri.fr", 19788 "chirurgiens-dentistes.fr", 19789 "experts-comptables.fr", 19790 "medecin.fr", 19791 "notaires.fr", 19792 "pharmacien.fr", 19793 "port.fr", 19794 "veterinaire.fr", 19795 "vp4.me", 19796 "*.snowflake.app", 19797 "*.privatelink.snowflake.app", 19798 "streamlit.app", 19799 "streamlitapp.com", 19800 "try-snowplow.com", 19801 "mafelo.net", 19802 "playstation-cloud.com", 19803 "srht.site", 19804 "apps.lair.io", 19805 "*.stolos.io", 19806 "spacekit.io", 19807 "ind.mom", 19808 "customer.speedpartner.de", 19809 "myspreadshop.at", 19810 "myspreadshop.com.au", 19811 "myspreadshop.be", 19812 "myspreadshop.ca", 19813 "myspreadshop.ch", 19814 "myspreadshop.com", 19815 "myspreadshop.de", 19816 "myspreadshop.dk", 19817 "myspreadshop.es", 19818 "myspreadshop.fi", 19819 "myspreadshop.fr", 19820 "myspreadshop.ie", 19821 "myspreadshop.it", 19822 "myspreadshop.net", 19823 "myspreadshop.nl", 19824 "myspreadshop.no", 19825 "myspreadshop.pl", 19826 "myspreadshop.se", 19827 "myspreadshop.co.uk", 19828 "w-corp-staticblitz.com", 19829 "w-credentialless-staticblitz.com", 19830 "w-staticblitz.com", 19831 "stackhero-network.com", 19832 "runs.onstackit.cloud", 19833 "stackit.gg", 19834 "stackit.rocks", 19835 "stackit.run", 19836 "stackit.zone", 19837 "musician.io", 19838 "novecore.site", 19839 "api.stdlib.com", 19840 "feedback.ac", 19841 "forms.ac", 19842 "assessments.cx", 19843 "calculators.cx", 19844 "funnels.cx", 19845 "paynow.cx", 19846 "quizzes.cx", 19847 "researched.cx", 19848 "tests.cx", 19849 "surveys.so", 19850 "storebase.store", 19851 "storipress.app", 19852 "storj.farm", 19853 "strapiapp.com", 19854 "media.strapiapp.com", 19855 "vps-host.net", 19856 "atl.jelastic.vps-host.net", 19857 "njs.jelastic.vps-host.net", 19858 "ric.jelastic.vps-host.net", 19859 "streak-link.com", 19860 "streaklinks.com", 19861 "streakusercontent.com", 19862 "soc.srcf.net", 19863 "user.srcf.net", 19864 "utwente.io", 19865 "temp-dns.com", 19866 "supabase.co", 19867 "supabase.in", 19868 "supabase.net", 19869 "syncloud.it", 19870 "dscloud.biz", 19871 "direct.quickconnect.cn", 19872 "dsmynas.com", 19873 "familyds.com", 19874 "diskstation.me", 19875 "dscloud.me", 19876 "i234.me", 19877 "myds.me", 19878 "synology.me", 19879 "dscloud.mobi", 19880 "dsmynas.net", 19881 "familyds.net", 19882 "dsmynas.org", 19883 "familyds.org", 19884 "direct.quickconnect.to", 19885 "vpnplus.to", 19886 "mytabit.com", 19887 "mytabit.co.il", 19888 "tabitorder.co.il", 19889 "taifun-dns.de", 19890 "ts.net", 19891 "*.c.ts.net", 19892 "gda.pl", 19893 "gdansk.pl", 19894 "gdynia.pl", 19895 "med.pl", 19896 "sopot.pl", 19897 "taveusercontent.com", 19898 "p.tawk.email", 19899 "p.tawkto.email", 19900 "site.tb-hosting.com", 19901 "edugit.io", 19902 "s3.teckids.org", 19903 "telebit.app", 19904 "telebit.io", 19905 "*.telebit.xyz", 19906 "*.firenet.ch", 19907 "*.svc.firenet.ch", 19908 "reservd.com", 19909 "thingdustdata.com", 19910 "cust.dev.thingdust.io", 19911 "reservd.dev.thingdust.io", 19912 "cust.disrec.thingdust.io", 19913 "reservd.disrec.thingdust.io", 19914 "cust.prod.thingdust.io", 19915 "cust.testing.thingdust.io", 19916 "reservd.testing.thingdust.io", 19917 "tickets.io", 19918 "arvo.network", 19919 "azimuth.network", 19920 "tlon.network", 19921 "torproject.net", 19922 "pages.torproject.net", 19923 "townnews-staging.com", 19924 "12hp.at", 19925 "2ix.at", 19926 "4lima.at", 19927 "lima-city.at", 19928 "12hp.ch", 19929 "2ix.ch", 19930 "4lima.ch", 19931 "lima-city.ch", 19932 "trafficplex.cloud", 19933 "de.cool", 19934 "12hp.de", 19935 "2ix.de", 19936 "4lima.de", 19937 "lima-city.de", 19938 "1337.pictures", 19939 "clan.rip", 19940 "lima-city.rocks", 19941 "webspace.rocks", 19942 "lima.zone", 19943 "*.transurl.be", 19944 "*.transurl.eu", 19945 "site.transip.me", 19946 "*.transurl.nl", 19947 "tuxfamily.org", 19948 "dd-dns.de", 19949 "dray-dns.de", 19950 "draydns.de", 19951 "dyn-vpn.de", 19952 "dynvpn.de", 19953 "mein-vigor.de", 19954 "my-vigor.de", 19955 "my-wan.de", 19956 "syno-ds.de", 19957 "synology-diskstation.de", 19958 "synology-ds.de", 19959 "diskstation.eu", 19960 "diskstation.org", 19961 "typedream.app", 19962 "pro.typeform.com", 19963 "*.uberspace.de", 19964 "uber.space", 19965 "hk.com", 19966 "inc.hk", 19967 "ltd.hk", 19968 "hk.org", 19969 "it.com", 19970 "unison-services.cloud", 19971 "virtual-user.de", 19972 "virtualuser.de", 19973 "name.pm", 19974 "sch.tf", 19975 "biz.wf", 19976 "sch.wf", 19977 "org.yt", 19978 "rs.ba", 19979 "bielsko.pl", 19980 "upli.io", 19981 "urown.cloud", 19982 "dnsupdate.info", 19983 "us.org", 19984 "v.ua", 19985 "express.val.run", 19986 "web.val.run", 19987 "vercel.app", 19988 "v0.build", 19989 "vercel.dev", 19990 "vusercontent.net", 19991 "now.sh", 19992 "2038.io", 19993 "router.management", 19994 "v-info.info", 19995 "voorloper.cloud", 19996 "*.vultrobjects.com", 19997 "wafflecell.com", 19998 "webflow.io", 19999 "webflowtest.io", 20000 "*.webhare.dev", 20001 "bookonline.app", 20002 "hotelwithflight.com", 20003 "reserve-online.com", 20004 "reserve-online.net", 20005 "cprapid.com", 20006 "pleskns.com", 20007 "wp2.host", 20008 "pdns.page", 20009 "plesk.page", 20010 "wpsquared.site", 20011 "*.wadl.top", 20012 "remotewd.com", 20013 "box.ca", 20014 "pages.wiardweb.com", 20015 "toolforge.org", 20016 "wmcloud.org", 20017 "wmflabs.org", 20018 "wdh.app", 20019 "panel.gg", 20020 "daemon.panel.gg", 20021 "wixsite.com", 20022 "wixstudio.com", 20023 "editorx.io", 20024 "wixstudio.io", 20025 "wix.run", 20026 "messwithdns.com", 20027 "woltlab-demo.com", 20028 "myforum.community", 20029 "community-pro.de", 20030 "diskussionsbereich.de", 20031 "community-pro.net", 20032 "meinforum.net", 20033 "affinitylottery.org.uk", 20034 "raffleentry.org.uk", 20035 "weeklylottery.org.uk", 20036 "wpenginepowered.com", 20037 "js.wpenginepowered.com", 20038 "half.host", 20039 "xnbay.com", 20040 "u2.xnbay.com", 20041 "u2-local.xnbay.com", 20042 "cistron.nl", 20043 "demon.nl", 20044 "xs4all.space", 20045 "yandexcloud.net", 20046 "storage.yandexcloud.net", 20047 "website.yandexcloud.net", 20048 "official.academy", 20049 "yolasite.com", 20050 "yombo.me", 20051 "ynh.fr", 20052 "nohost.me", 20053 "noho.st", 20054 "za.net", 20055 "za.org", 20056 "zap.cloud", 20057 "zeabur.app", 20058 "bss.design", 20059 "basicserver.io", 20060 "virtualserver.io", 20061 "enterprisecloud.nu" 20062], Q = K.reduce( 20063 (e, s) => { 20064 const c = s.replace(/^(\*\.|\!)/, ""), o = A.toASCII(c), t = s.charAt(0); 20065 if (e.has(o)) 20066 throw new Error(`Multiple rules found for ${s} (${o})`); 20067 return e.set(o, { 20068 rule: s, 20069 suffix: c, 20070 punySuffix: o, 20071 wildcard: t === "*", 20072 exception: t === "!" 20073 }), e; 20074 }, 20075 /* @__PURE__ */ new Map() 20076), X = (e) => { 20077 const c = A.toASCII(e).split("."); 20078 for (let o = 0; o < c.length; o++) { 20079 const t = c.slice(o).join("."), d = Q.get(t); 20080 if (d) 20081 return d; 20082 } 20083 return null; 20084}, Y = { 20085 DOMAIN_TOO_SHORT: "Domain name too short.", 20086 DOMAIN_TOO_LONG: "Domain name too long. It should be no more than 255 chars.", 20087 LABEL_STARTS_WITH_DASH: "Domain name label can not start with a dash.", 20088 LABEL_ENDS_WITH_DASH: "Domain name label can not end with a dash.", 20089 LABEL_TOO_LONG: "Domain name label should be at most 63 chars long.", 20090 LABEL_TOO_SHORT: "Domain name label should be at least 1 character long.", 20091 LABEL_INVALID_CHARS: "Domain name label can only contain alphanumeric characters or dashes." 20092}, Z = (e) => { 20093 const s = A.toASCII(e); 20094 if (s.length < 1) 20095 return "DOMAIN_TOO_SHORT"; 20096 if (s.length > 255) 20097 return "DOMAIN_TOO_LONG"; 20098 const c = s.split("."); 20099 let o; 20100 for (let t = 0; t < c.length; ++t) { 20101 if (o = c[t], !o.length) 20102 return "LABEL_TOO_SHORT"; 20103 if (o.length > 63) 20104 return "LABEL_TOO_LONG"; 20105 if (o.charAt(0) === "-") 20106 return "LABEL_STARTS_WITH_DASH"; 20107 if (o.charAt(o.length - 1) === "-") 20108 return "LABEL_ENDS_WITH_DASH"; 20109 if (!/^[a-z0-9\-_]+$/.test(o)) 20110 return "LABEL_INVALID_CHARS"; 20111 } 20112}, O = (e) => { 20113 if (typeof e != "string") 20114 throw new TypeError("Domain name must be a string."); 20115 let s = e.slice(0).toLowerCase(); 20116 s.charAt(s.length - 1) === "." && (s = s.slice(0, s.length - 1)); 20117 const c = Z(s); 20118 if (c) 20119 return { 20120 input: e, 20121 error: { 20122 message: Y[c], 20123 code: c 20124 } 20125 }; 20126 const o = { 20127 input: e, 20128 tld: null, 20129 sld: null, 20130 domain: null, 20131 subdomain: null, 20132 listed: !1 20133 }, t = s.split("."); 20134 if (t[t.length - 1] === "local") 20135 return o; 20136 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); 20137 if (!z) 20138 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()); 20139 o.listed = !0; 20140 const y = z.suffix.split("."), g = t.slice(0, t.length - y.length); 20141 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(); 20142}, aa = (e) => e && O(e).domain || null, oa = (e) => { 20143 const s = O(e); 20144 return !!(s.domain && s.listed); 20145}, na = { parse: O, get: aa, isValid: oa };
20146 20147 20148 20149/***/ }), 20150 20151/***/ 67536: 20152/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20153 20154"use strict"; 20155/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20156/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 20157/* harmony export */ }); 20158var raf = function raf(callback) { 20159 return +setTimeout(callback, 16); 20160}; 20161var caf = function caf(num) { 20162 return clearTimeout(num); 20163}; 20164if (typeof window !== 'undefined' && 'requestAnimationFrame' in window) { 20165 raf = function raf(callback) { 20166 return window.requestAnimationFrame(callback); 20167 }; 20168 caf = function caf(handle) { 20169 return window.cancelAnimationFrame(handle); 20170 }; 20171} 20172var rafUUID = 0; 20173var rafIds = new Map(); 20174function cleanup(id) { 20175 rafIds.delete(id); 20176} 20177var wrapperRaf = function wrapperRaf(callback) { 20178 var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; 20179 rafUUID += 1; 20180 var id = rafUUID; 20181 function callRef(leftTimes) { 20182 if (leftTimes === 0) { 20183 // Clean up 20184 cleanup(id); 20185 20186 // Trigger 20187 callback(); 20188 } else { 20189 // Next raf 20190 var realId = raf(function () { 20191 callRef(leftTimes - 1); 20192 }); 20193 20194 // Bind real raf id 20195 rafIds.set(id, realId); 20196 } 20197 } 20198 callRef(times); 20199 return id; 20200}; 20201wrapperRaf.cancel = function (id) { 20202 var realId = rafIds.get(id); 20203 cleanup(id); 20204 return caf(realId); 20205}; 20206if (false) // removed by dead control flow 20207{} 20208/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (wrapperRaf); 20209 20210/***/ }), 20211 20212/***/ 69055: 20213/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20214 20215"use strict"; 20216/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20217/* harmony export */ A: () => (/* binding */ useIsQk) 20218/* harmony export */ }); 20219function useIsQk(server_siteCheck) { 20220 var _a, _b; 20221 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;
20222 return ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.isShow('global-qkff')) === false; 20223} 20224 20225/***/ }), 20226 20227/***/ 69740: 20228/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20229 20230"use strict"; 20231/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20232/* harmony export */ A: () => (/* binding */ _objectSpread2) 20233/* harmony export */ }); 20234/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24586); 20235 20236function ownKeys(e, r) { 20237 var t = Object.keys(e); 20238 if (Object.getOwnPropertySymbols) { 20239 var o = Object.getOwnPropertySymbols(e); 20240 r && (o = o.filter(function (r) { 20241 return Object.getOwnPropertyDescriptor(e, r).enumerable; 20242 })), t.push.apply(t, o); 20243 } 20244 return t; 20245} 20246function _objectSpread2(e) { 20247 for (var r = 1; r < arguments.length; r++) { 20248 var t = null != arguments[r] ? arguments[r] : {}; 20249 r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { 20250 (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e, r, t[r]); 20251 }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { 20252 Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); 20253 }); 20254 } 20255 return e; 20256} 20257 20258 20259/***/ }), 20260 20261/***/ 70297: 20262/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20263 20264"use strict"; 20265/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20266/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 20267/* harmony export */ }); 20268/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 20269/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 20270/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 20271/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(56003); 20272/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_2__); 20273/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(47169); 20274/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84445); 20275/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19284); 20276/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50184); 20277/* harmony import */ var _useDom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(74234); 20278/* harmony import */ var _useScrollLocker__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(6553); 20279/* harmony import */ var _mock__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(71161); 20280 20281 20282 20283 20284 20285 20286 20287 20288 20289 20290var getPortalContainer = function getPortalContainer(getContainer) { 20291 if (getContainer === false) { 20292 return false; 20293 } 20294 if (!(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)() || !getContainer) { 20295 return null; 20296 } 20297 if (typeof getContainer === 'string') { 20298 return document.querySelector(getContainer); 20299 } 20300 if (typeof getContainer === 'function') { 20301 return getContainer(); 20302 } 20303 return getContainer; 20304}; 20305var Portal = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(function (props, ref) { 20306 var open = props.open, 20307 autoLock = props.autoLock, 20308 getContainer = props.getContainer, 20309 debug = props.debug, 20310 _props$autoDestroy = props.autoDestroy, 20311 autoDestroy = _props$autoDestroy === void 0 ? true : _props$autoDestroy, 20312 children = props.children; 20313 var _React$useState = react__WEBPACK_IMPORTED_MODULE_1__.useState(open), 20314 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 20315 shouldRender = _React$useState2[0], 20316 setShouldRender = _React$useState2[1]; 20317 var mergedRender = shouldRender || open; 20318 20319 // ========================= Warning ========================= 20320 if (false) // removed by dead control flow 20321{} 20322
20323 // ====================== Should Render ====================== 20324 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 20325 if (autoDestroy || open) { 20326 setShouldRender(open); 20327 } 20328 }, [open, autoDestroy]); 20329 20330 // ======================== Container ======================== 20331 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_1__.useState(function () { 20332 return getPortalContainer(getContainer); 20333 }), 20334 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState3, 2), 20335 innerContainer = _React$useState4[0], 20336 setInnerContainer = _React$useState4[1]; 20337 react__WEBPACK_IMPORTED_MODULE_1__.useEffect(function () { 20338 var customizeContainer = getPortalContainer(getContainer); 20339 20340 // Tell component that we check this in effect which is safe to be `null` 20341 setInnerContainer(customizeContainer !== null && customizeContainer !== void 0 ? customizeContainer : null); 20342 }); 20343 var _useDom = (0,_useDom__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A)(mergedRender && !innerContainer, debug), 20344 _useDom2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useDom, 2), 20345 defaultContainer = _useDom2[0], 20346 queueCreate = _useDom2[1]; 20347 var mergedContainer = innerContainer !== null && innerContainer !== void 0 ? innerContainer : defaultContainer; 20348 20349 // ========================= Locker ========================== 20350 (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)); 20351 20352 // =========================== Ref =========================== 20353 var childRef = null; 20354 if (children && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__/* .supportRef */ .f3)(children) && ref) { 20355 var _ref = children; 20356 childRef = _ref.ref; 20357 } 20358 var mergedRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_5__/* .useComposeRef */ .xK)(childRef, ref); 20359 20360 // ========================= Render ========================== 20361 // Do not render when nothing need render 20362 // When innerContainer is `undefined`, it may not ready since user use ref in the same render 20363 if (!mergedRender || !(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)() || innerContainer === undefined) { 20364 return null; 20365 } 20366 20367 // Render inline 20368 var renderInline = mergedContainer === false || (0,_mock__WEBPACK_IMPORTED_MODULE_9__/* .inlineMock */ .O)(); 20369 var reffedChildren = children; 20370 if (ref) { 20371 reffedChildren = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.cloneElement(children, { 20372 ref: mergedRef 20373 }); 20374 } 20375 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement(_Context__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .A.Provider, { 20376 value: queueCreate 20377 }, renderInline ? reffedChildren : /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_2__.createPortal)(reffedChildren, mergedContainer)); 20378}); 20379if (false) // removed by dead control flow 20380{} 20381/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Portal); 20382 20383/***/ }), 20384 20385/***/ 71161: 20386/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20387 20388"use strict"; 20389/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20390/* harmony export */ O: () => (/* binding */ inlineMock) 20391/* harmony export */ }); 20392/* unused harmony export inline */ 20393var inline = false; 20394function inlineMock(nextInline) { 20395 if (typeof nextInline === 'boolean') { 20396 inline = nextInline; 20397 } 20398 return inline; 20399} 20400 20401/***/ }), 20402 20403/***/ 71850: 20404/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20405 20406"use strict"; 20407/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20408/* harmony export */ A: () => (/* binding */ useIsMyCJ), 20409/* harmony export */ h: () => (/* binding */ isMyCjPageCheck) 20410/* harmony export */ }); 20411/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44148); 20412/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 20413/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 20414 20415 20416var isMyCjPageCheck = function isMyCjPageCheck(path) { 20417 return path.startsWith('/my.html') || path.startsWith('/mine/'); 20418}; 20419function useIsMyCJ() { 20420 var path = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__/* .useGlobalProps */ .v)().path; 20421 var isMyCJPage = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () { 20422 return isMyCjPageCheck(path); 20423 }, [path]); 20424 var isOld = path.startsWith('/my.html'); 20425 var isNew = path.startsWith('/mine/'); 20426 return { 20427 isMyCJPage: isMyCJPage, 20428 isOld: isOld, 20429 isNew: isNew 20430 }; 20431} 20432 20433/***/ }), 20434 20435/***/ 72715: 20436/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20437 20438"use strict"; 20439/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20440/* harmony export */ A: () => (/* binding */ _getPrototypeOf) 20441/* harmony export */ }); 20442function _getPrototypeOf(t) { 20443 return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { 20444 return t.__proto__ || Object.getPrototypeOf(t); 20445 }, _getPrototypeOf(t); 20446} 20447 20448 20449/***/ }), 20450 20451/***/ 72777: 20452/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20453 20454"use strict"; 20455/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20456/* harmony export */ cc: () => (/* binding */ getOtherCookies) 20457/* harmony export */ }); 20458/* unused harmony exports getWarehouses, getShowAuthorPlatform, getCurrencys, getQueryParams */ 20459/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62934); 20460/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4703); 20461/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 20462/* harmony import */ var _components_CjHeader_const_show_authorize_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84266); 20463/* harmony import */ var _common_get_cookies__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74372); 20464var __assign = undefined && undefined.__assign || function () { 20465 __assign = Object.assign || function (t) { 20466 for (var s, i = 1, n = arguments.length; i < n; i++) { 20467 s = arguments[i]; 20468 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 20469 } 20470 return t; 20471 }; 20472 return __assign.apply(this, arguments); 20473}; 20474var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 20475 function adopt(value) { 20476 return value instanceof P ? value : new P(function (resolve) { 20477 resolve(value); 20478 }); 20479 } 20480 return new (P || (P = Promise))(function (resolve, reject) { 20481 function fulfilled(value) {
vendor: 2,671 bytes, lines 20482-20595
20482 try { 20483 step(generator.next(value)); 20484 } catch (e) { 20485 reject(e); 20486 } 20487 } 20488 function rejected(value) { 20489 try { 20490 step(generator["throw"](value)); 20491 } catch (e) { 20492 reject(e); 20493 } 20494 } 20495 function step(result) { 20496 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 20497 } 20498 step((generator = generator.apply(thisArg, _arguments || [])).next()); 20499 }); 20500}; 20501var __generator = undefined && undefined.__generator || function (thisArg, body) { 20502 var _ = { 20503 label: 0, 20504 sent: function sent() { 20505 if (t[0] & 1) throw t[1]; 20506 return t[1]; 20507 }, 20508 trys: [], 20509 ops: [] 20510 }, 20511 f, 20512 y, 20513 t, 20514 g; 20515 return g = { 20516 next: verb(0), 20517 "throw": verb(1), 20518 "return": verb(2) 20519 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 20520 return this; 20521 }), g; 20522 function verb(n) { 20523 return function (v) { 20524 return step([n, v]); 20525 }; 20526 } 20527 function step(op) { 20528 if (f) throw new TypeError("Generator is already executing."); 20529 while (g && (g = 0, op[0] && (_ = 0)), _) try { 20530 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; 20531 if (y = 0, t) op = [op[0] & 2, t.value]; 20532 switch (op[0]) { 20533 case 0: 20534 case 1: 20535 t = op; 20536 break; 20537 case 4: 20538 _.label++; 20539 return { 20540 value: op[1], 20541 done: false 20542 }; 20543 case 5: 20544 _.label++; 20545 y = op[1]; 20546 op = [0]; 20547 continue; 20548 case 7: 20549 op = _.ops.pop(); 20550 _.trys.pop(); 20551 continue; 20552 default: 20553 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 20554 _ = 0; 20555 continue; 20556 } 20557 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 20558 _.label = op[1]; 20559 break; 20560 } 20561 if (op[0] === 6 && _.label < t[1]) { 20562 _.label = t[1]; 20563 t = op; 20564 break; 20565 } 20566 if (t && _.label < t[2]) { 20567 _.label = t[2]; 20568 _.ops.push(op); 20569 break; 20570 } 20571 if (t[2]) _.ops.pop(); 20572 _.trys.pop(); 20573 continue; 20574 } 20575 op = body.call(thisArg, _); 20576 } catch (e) { 20577 op = [6, e]; 20578 y = 0; 20579 } finally { 20580 f = t = 0; 20581 } 20582 if (op[0] & 5) throw op[1]; 20583 return { 20584 value: op[0] ? op[1] : void 0, 20585 done: true 20586 }; 20587 } 20588}; 20589 20590 20591 20592 20593 20594var getWarehouses = function getWarehouses(_a) { 20595 var ctx = _a.ctx,
20596 $axios = _a.$axios, 20597 lng = _a.lng; 20598 return __awaiter(void 0, void 0, void 0, function () { 20599 var _b, err, data; 20600 return __generator(this, function (_c) { 20601 switch (_c.label) { 20602 case 0: 20603 return [4, getWarehouseList({ 20604 ctx: ctx, 20605 $axios: $axios, 20606 lng: lng 20607 })]; 20608 case 1: 20609 _b = _c.sent(), err = _b[0], data = _b[1]; 20610 if (!err && data) return [2, data]; 20611 return [2, []]; 20612 } 20613 }); 20614 }); 20615}; 20616var getShowAuthorPlatform = function getShowAuthorPlatform(_a) { 20617 var ctx = _a.ctx, 20618 $axios = _a.$axios, 20619 token = _a.token; 20620 return __awaiter(void 0, void 0, void 0, function () { 20621 var showAuthorizeObject, platformKeys, data, _b, _i, data_1, element, item; 20622 var _c; 20623 return __generator(this, function (_d) { 20624 switch (_d.label) { 20625 case 0: 20626 showAuthorizeObject = __assign({}, showAuthorizeDefaultData); 20627 platformKeys = []; 20628 if (!ctx) return [3, 1]; 20629 _b = (_c = ctx === null || ctx === void 0 ? void 0 : ctx.commonTopSSRProps) === null || _c === void 0 ? void 0 : _c.platformShowList; 20630 return [3, 3]; 20631 case 1: 20632 return [4, getAuthorizeShowList($axios)]; 20633 case 2: 20634 _b = _d.sent(); 20635 _d.label = 3; 20636 case 3: 20637 data = _b; 20638 if (data && data.length > 0) { 20639 for (_i = 0, data_1 = data; _i < data_1.length; _i++) { 20640 element = data_1[_i]; 20641 item = element; 20642 if (showAuthorizeObject[item.shopPlatformType]) { 20643 showAuthorizeObject[item.shopPlatformType].isAuthor = item.isAuthor; 20644 showAuthorizeObject[item.shopPlatformType].isShow = item.isShow; 20645 platformKeys.push(item.shopPlatformType); 20646 } 20647 } 20648 } 20649 return [2, { 20650 showAuthorizeObject: showAuthorizeObject, 20651 platformKeys: platformKeys 20652 }]; 20653 } 20654 }); 20655 }); 20656}; 20657var getCurrencys = function getCurrencys(_a) { 20658 var $axios = _a.$axios, 20659 siteCheck = _a.siteCheck; 20660 return __awaiter(void 0, void 0, void 0, function () { 20661 function request() { 20662 var _a; 20663 return __awaiter(this, void 0, void 0, function () { 20664 return __generator(this, function (_b) { 20665 switch (_b.label) { 20666 case 0: 20667 if (!is1688(siteCheck)) return [3, 2]; 20668 return [4, getThCountryData($axios, (_a = siteCheck.data('name')) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase())]; 20669 case 1: 20670 return [2, _b.sent()]; 20671 case 2: 20672 return [4, getCountryData($axios)]; 20673 case 3: 20674 return [2, _b.sent()]; 20675 } 20676 }); 20677 }); 20678 } 20679 var currencys, currentTime; 20680 return __generator(this, function (_b) { 20681 switch (_b.label) { 20682 case 0: 20683 currencys = {}; 20684 if (!isBrowser) return [3, 3]; 20685 currentTime = new Date().getTime(); 20686 currencys = store.get('@country/data', { 20687 parse: true 20688 }); 20689 if ((currencys === null || currencys === void 0 ? void 0 : currencys.updateTime) - 1723432631219 < 0) { 20690 currencys = null; 20691 } 20692 if (!(!currencys || currentTime - (currencys.updateTime || 0) > 60 * 60 * 24 * 1000)) return [3, 2]; 20693 return [4, request()]; 20694 case 1: 20695 currencys = _b.sent(); 20696 store.set('@country/data', __assign(__assign({}, currencys), { 20697 updateTime: currentTime 20698 })); 20699 _b.label = 2; 20700 case 2: 20701 return [3, 5]; 20702 case 3: 20703 return [4, request()]; 20704 case 4: 20705 currencys = _b.sent(); 20706 _b.label = 5; 20707 case 5: 20708 return [2, currencys]; 20709 } 20710 }); 20711 }); 20712}; 20713var getQueryParams = function getQueryParams(_a) { 20714 var ctx = _a.ctx; 20715 var querySearch = isBrowser ? getQueryVariable() : ctx === null || ctx === void 0 ? void 0 : ctx.query; 20716 return querySearch !== null && querySearch !== void 0 ? querySearch : {}; 20717}; 20718var getOtherCookies = function getOtherCookies(_a) { 20719 var ctx = _a.ctx; 20720 return (0,_common_get_cookies__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(ctx, [{ 20721 name: 'lng' 20722 }, { 20723 name: 'shopPlatformTypesList' 20724 }, { 20725 name: 'currency' 20726 }, { 20727 name: 'SHOWMESSAGE' 20728 }, { 20729 name: 'cjLoginToken' 20730 }, { 20731 name: 'cur' 20732 }, { 20733 name: 'country' 20734 }, { 20735 name: 'searchSku' 20736 }]); 20737}; 20738 20739/***/ }), 20740 20741/***/ 72880: 20742/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20743 20744"use strict"; 20745/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20746/* harmony export */ A: () => (/* binding */ _nonIterableSpread) 20747/* harmony export */ }); 20748function _nonIterableSpread() { 20749 throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); 20750} 20751 20752 20753/***/ }), 20754 20755/***/ 73688: 20756/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20757 20758"use strict"; 20759/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20760/* harmony export */ J1: () => (/* binding */ supportTransition), 20761/* harmony export */ Vc: () => (/* binding */ animationEndName), 20762/* harmony export */ by: () => (/* binding */ getTransitionName), 20763/* harmony export */ m8: () => (/* binding */ transitionEndName) 20764/* harmony export */ }); 20765/* unused harmony exports getVendorPrefixes, getVendorPrefixedEventName */ 20766/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545);
20767/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 20768 20769 20770// ================= Transition ================= 20771// Event wrapper. Copy from react source code 20772function makePrefixMap(styleProp, eventName) { 20773 var prefixes = {}; 20774 prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); 20775 prefixes["Webkit".concat(styleProp)] = "webkit".concat(eventName); 20776 prefixes["Moz".concat(styleProp)] = "moz".concat(eventName); 20777 prefixes["ms".concat(styleProp)] = "MS".concat(eventName); 20778 prefixes["O".concat(styleProp)] = "o".concat(eventName.toLowerCase()); 20779 return prefixes; 20780} 20781function getVendorPrefixes(domSupport, win) { 20782 var prefixes = { 20783 animationend: makePrefixMap('Animation', 'AnimationEnd'), 20784 transitionend: makePrefixMap('Transition', 'TransitionEnd') 20785 }; 20786 if (domSupport) { 20787 if (!('AnimationEvent' in win)) { 20788 delete prefixes.animationend.animation; 20789 } 20790 if (!('TransitionEvent' in win)) { 20791 delete prefixes.transitionend.transition; 20792 } 20793 } 20794 return prefixes; 20795} 20796var vendorPrefixes = getVendorPrefixes((0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(), typeof window !== 'undefined' ? window : {}); 20797var style = {}; 20798if ((0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)()) { 20799 var _document$createEleme = document.createElement('div'); 20800 style = _document$createEleme.style; 20801} 20802var prefixedEventNames = {}; 20803function getVendorPrefixedEventName(eventName) { 20804 if (prefixedEventNames[eventName]) { 20805 return prefixedEventNames[eventName]; 20806 } 20807 var prefixMap = vendorPrefixes[eventName]; 20808 if (prefixMap) { 20809 var stylePropList = Object.keys(prefixMap); 20810 var len = stylePropList.length; 20811 for (var i = 0; i < len; i += 1) { 20812 var styleProp = stylePropList[i]; 20813 if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) { 20814 prefixedEventNames[eventName] = prefixMap[styleProp]; 20815 return prefixedEventNames[eventName]; 20816 } 20817 } 20818 } 20819 return ''; 20820} 20821var internalAnimationEndName = getVendorPrefixedEventName('animationend'); 20822var internalTransitionEndName = getVendorPrefixedEventName('transitionend'); 20823var supportTransition = !!(internalAnimationEndName && internalTransitionEndName); 20824var animationEndName = internalAnimationEndName || 'animationend'; 20825var transitionEndName = internalTransitionEndName || 'transitionend'; 20826function getTransitionName(transitionName, transitionType) { 20827 if (!transitionName) return null; 20828 if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(transitionName) === 'object') { 20829 var type = transitionType.replace(/-\w/g, function (match) { 20830 return match[1].toUpperCase(); 20831 }); 20832 return transitionName[type]; 20833 } 20834 return "".concat(transitionName, "-").concat(transitionType); 20835} 20836 20837/***/ }), 20838 20839/***/ 74234: 20840/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20841 20842"use strict"; 20843/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20844/* harmony export */ A: () => (/* binding */ useDom) 20845/* harmony export */ }); 20846/* harmony import */ var _babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(75153); 20847/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79082); 20848/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 20849/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 20850/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84238); 20851/* harmony import */ var rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47169); 20852/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50184); 20853 20854 20855 20856 20857 20858 20859var EMPTY_LIST = []; 20860 20861/** 20862 * Will add `div` to document. Nest call will keep order 20863 * @param render Render DOM in document 20864 */ 20865function useDom(render, debug) { 20866 var _React$useState = react__WEBPACK_IMPORTED_MODULE_2__.useState(function () {
20867 if (!(0,rc_util_es_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)()) { 20868 return null; 20869 } 20870 var defaultEle = document.createElement('div'); 20871 if (false) // removed by dead control flow 20872{} 20873 return defaultEle; 20874 }), 20875 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState, 1), 20876 ele = _React$useState2[0]; 20877 20878 // ========================== Order ========================== 20879 var appendedRef = react__WEBPACK_IMPORTED_MODULE_2__.useRef(false); 20880 var queueCreate = react__WEBPACK_IMPORTED_MODULE_2__.useContext(_Context__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A); 20881 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_2__.useState(EMPTY_LIST), 20882 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState3, 2), 20883 queue = _React$useState4[0], 20884 setQueue = _React$useState4[1]; 20885 var mergedQueueCreate = queueCreate || (appendedRef.current ? undefined : function (appendFn) { 20886 setQueue(function (origin) { 20887 var newQueue = [appendFn].concat((0,_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(origin)); 20888 return newQueue; 20889 }); 20890 }); 20891 20892 // =========================== DOM =========================== 20893 function append() { 20894 if (!ele.parentElement) { 20895 document.body.appendChild(ele); 20896 } 20897 appendedRef.current = true; 20898 } 20899 function cleanup() { 20900 var _ele$parentElement; 20901 (_ele$parentElement = ele.parentElement) === null || _ele$parentElement === void 0 ? void 0 : _ele$parentElement.removeChild(ele); 20902 appendedRef.current = false; 20903 } 20904 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 20905 if (render) { 20906 if (queueCreate) { 20907 queueCreate(append); 20908 } else { 20909 append(); 20910 } 20911 } else { 20912 cleanup(); 20913 } 20914 return cleanup; 20915 }, [render]); 20916 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(function () { 20917 if (queue.length) { 20918 queue.forEach(function (appendFn) { 20919 return appendFn(); 20920 }); 20921 setQueue(EMPTY_LIST); 20922 } 20923 }, [queue]); 20924 return [ele, mergedQueueCreate]; 20925} 20926 20927/***/ }), 20928 20929/***/ 74372: 20930/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20931 20932"use strict"; 20933/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20934/* harmony export */ A: () => (/* binding */ getCookies) 20935/* harmony export */ }); 20936/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93584); 20937/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3478); 20938 20939 20940function getCookies(ctx, names) { 20941 var obj = {}; 20942 var customCookies = ctx ? ctx.customCookies || {} : {}; 20943 names.forEach(function (_) { 20944 var name = _.name; 20945 var value = ctx ? customCookies[name] ? customCookies[name] : ctx === null || ctx === void 0 ? void 0 : ctx.cookies.get(name, { 20946 signed: false 20947 }) : js_cookie__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.get(name); 20948 if (_.decode) { 20949 try { 20950 value = js_base64__WEBPACK_IMPORTED_MODULE_0__/* .Base64 */ .o4.decode(value || ''); 20951 } catch (_a) { 20952 console.log('base64è§£ææ¥é', value); 20953 } 20954 } 20955 value = _.parse ? JSON.parse(value || '') : value; 20956 obj[name] = value !== null && value !== void 0 ? value : ''; 20957 }); 20958 return obj !== null && obj !== void 0 ? obj : {}; 20959} 20960 20961/***/ }), 20962 20963/***/ 74430: 20964/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 20965 20966"use strict"; 20967/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20968/* harmony export */ A: () => (/* binding */ _iterableToArray) 20969/* harmony export */ }); 20970function _iterableToArray(r) { 20971 if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); 20972} 20973 20974 20975/***/ }), 20976 20977/***/ 74568: 20978/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 20979 20980"use strict"; 20981/* harmony export */ __webpack_require__.d(__webpack_exports__, { 20982/* harmony export */ o: () => (/* binding */ Context) 20983/* harmony export */ }); 20984/* unused harmony export default */ 20985/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 20986/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 20987 20988var _excluded = (/* unused pure expression or super */ null && (["children"])); 20989 20990var Context = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({}); 20991function MotionProvider(_ref) { 20992 var children = _ref.children, 20993 props = _objectWithoutProperties(_ref, _excluded); 20994 return /*#__PURE__*/React.createElement(Context.Provider, { 20995 value: props 20996 }, children); 20997} 20998 20999/***/ }), 21000 21001/***/ 74967: 21002/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 21003 21004/** Detect free variable `global` from Node.js. */ 21005var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g; 21006 21007module.exports = freeGlobal; 21008 21009 21010/***/ }), 21011 21012/***/ 75153: 21013/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 21014 21015"use strict"; 21016/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21017/* harmony export */ A: () => (/* binding */ _toConsumableArray) 21018/* harmony export */ }); 21019/* harmony import */ var _arrayWithoutHoles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23492); 21020/* harmony import */ var _iterableToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(74430); 21021/* harmony import */ var _unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27985); 21022/* harmony import */ var _nonIterableSpread_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(72880); 21023 21024 21025 21026 21027function _toConsumableArray(r) { 21028 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)(); 21029} 21030 21031 21032/***/ }), 21033 21034/***/ 75476: 21035/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21036 21037"use strict"; 21038/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21039/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21040/* harmony export */ }); 21041/* unused harmony export resetUuid */ 21042/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 21043/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 21044/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 21045/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 21046 21047 21048 21049function getUseId() { 21050 // We need fully clone React function here to avoid webpack warning React 17 do not export `useId` 21051 var fullClone = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, react__WEBPACK_IMPORTED_MODULE_2__); 21052 return fullClone.useId; 21053} 21054var uuid = 0; 21055 21056/** @private Note only worked in develop env. Not work in production. */ 21057function resetUuid() { 21058 if (false) // removed by dead control flow 21059{} 21060} 21061var useOriginId = getUseId(); 21062/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useOriginId ? 21063// Use React `useId` 21064function useId(id) { 21065 var reactId = useOriginId(); 21066
21067 // Developer passed id is single source of truth 21068 if (id) { 21069 return id; 21070 } 21071 21072 // Test env always return mock id 21073 if (false) // removed by dead control flow 21074{} 21075 return reactId; 21076} : 21077// Use compatible of `useId` 21078function useCompatId(id) { 21079 // Inner id for accessibility usage. Only work in client side 21080 var _React$useState = react__WEBPACK_IMPORTED_MODULE_2__.useState('ssr-id'), 21081 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useState, 2), 21082 innerId = _React$useState2[0], 21083 setInnerId = _React$useState2[1]; 21084 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 21085 var nextId = uuid; 21086 uuid += 1; 21087 setInnerId("rc_unique_".concat(nextId)); 21088 }, []); 21089 21090 // Developer passed id is single source of truth 21091 if (id) { 21092 return id; 21093 } 21094 21095 // Test env always return mock id 21096 if (false) // removed by dead control flow 21097{} 21098 21099 // Return react native id or inner id 21100 return innerId; 21101}); 21102 21103/***/ }), 21104 21105/***/ 76293: 21106/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21107 21108"use strict"; 21109/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21110/* harmony export */ A: () => (/* binding */ useStatus) 21111/* harmony export */ }); 21112/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 21113/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24586); 21114/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 21115/* harmony import */ var rc_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(99973); 21116/* harmony import */ var rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39348); 21117/* harmony import */ var rc_util_es_hooks_useSyncState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(86597); 21118/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15442); 21119/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__); 21120/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(45480); 21121/* harmony import */ var _useDomMotionEvents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1680); 21122/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25893); 21123/* harmony import */ var _useStepQueue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(78422); 21124 21125 21126 21127 21128 21129 21130 21131 21132 21133 21134 21135 21136function useStatus(supportMotion, visible, getElement, _ref) { 21137 var _ref$motionEnter = _ref.motionEnter, 21138 motionEnter = _ref$motionEnter === void 0 ? true : _ref$motionEnter, 21139 _ref$motionAppear = _ref.motionAppear, 21140 motionAppear = _ref$motionAppear === void 0 ? true : _ref$motionAppear, 21141 _ref$motionLeave = _ref.motionLeave, 21142 motionLeave = _ref$motionLeave === void 0 ? true : _ref$motionLeave, 21143 motionDeadline = _ref.motionDeadline, 21144 motionLeaveImmediately = _ref.motionLeaveImmediately, 21145 onAppearPrepare = _ref.onAppearPrepare, 21146 onEnterPrepare = _ref.onEnterPrepare, 21147 onLeavePrepare = _ref.onLeavePrepare, 21148 onAppearStart = _ref.onAppearStart, 21149 onEnterStart = _ref.onEnterStart, 21150 onLeaveStart = _ref.onLeaveStart, 21151 onAppearActive = _ref.onAppearActive, 21152 onEnterActive = _ref.onEnterActive, 21153 onLeaveActive = _ref.onLeaveActive, 21154 onAppearEnd = _ref.onAppearEnd, 21155 onEnterEnd = _ref.onEnterEnd, 21156 onLeaveEnd = _ref.onLeaveEnd, 21157 onVisibleChanged = _ref.onVisibleChanged; 21158 // Used for outer render usage to avoid `visible: false & status: none` to render nothing 21159 var _useState = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(), 21160 _useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useState, 2), 21161 asyncVisible = _useState2[0], 21162 setAsyncVisible = _useState2[1]; 21163 var _useSyncState = (0,rc_util_es_hooks_useSyncState__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF), 21164 _useSyncState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useSyncState, 2), 21165 getStatus = _useSyncState2[0], 21166 setStatus = _useSyncState2[1]; 21167 var _useState3 = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(null), 21168 _useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useState3, 2), 21169 style = _useState4[0], 21170 setStyle = _useState4[1]; 21171 var currentStatus = getStatus(); 21172 var mountedRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(false); 21173 var deadlineRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(null); 21174 21175 // =========================== Dom Node =========================== 21176 function getDomElement() { 21177 return getElement(); 21178 } 21179
21180 // ========================== Motion End ========================== 21181 var activeRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(false); 21182 21183 /** 21184 * Clean up status & style 21185 */ 21186 function updateMotionEndStatus() { 21187 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21188 setStyle(null, true); 21189 } 21190 var onInternalMotionEnd = (0,rc_util__WEBPACK_IMPORTED_MODULE_3__/* .useEvent */ ._q)(function (event) { 21191 var status = getStatus(); 21192 // Do nothing since not in any transition status. 21193 // This may happen when `motionDeadline` trigger. 21194 if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21195 return; 21196 } 21197 var element = getDomElement(); 21198 if (event && !event.deadline && event.target !== element) { 21199 // event exists 21200 // not initiated by deadline 21201 // transitionEnd not fired by inner elements 21202 return; 21203 } 21204 var currentActive = activeRef.current; 21205 var canEnd; 21206 if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv && currentActive) { 21207 canEnd = onAppearEnd === null || onAppearEnd === void 0 ? void 0 : onAppearEnd(element, event); 21208 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd && currentActive) { 21209 canEnd = onEnterEnd === null || onEnterEnd === void 0 ? void 0 : onEnterEnd(element, event); 21210 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp && currentActive) { 21211 canEnd = onLeaveEnd === null || onLeaveEnd === void 0 ? void 0 : onLeaveEnd(element, event); 21212 } 21213 21214 // Only update status when `canEnd` and not destroyed 21215 if (currentActive && canEnd !== false) { 21216 updateMotionEndStatus(); 21217 } 21218 }); 21219 var _useDomMotionEvents = (0,_useDomMotionEvents__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(onInternalMotionEnd), 21220 _useDomMotionEvents2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useDomMotionEvents, 1), 21221 patchMotionEvents = _useDomMotionEvents2[0]; 21222 21223 // ============================= Step ============================= 21224 var getEventHandlers = function getEventHandlers(targetStatus) { 21225 switch (targetStatus) { 21226 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv: 21227 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); 21228 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd: 21229 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); 21230 case _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp: 21231 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); 21232 default: 21233 return {}; 21234 } 21235 }; 21236 var eventHandlers = react__WEBPACK_IMPORTED_MODULE_6__.useMemo(function () { 21237 return getEventHandlers(currentStatus); 21238 }, [currentStatus]);
21239 var _useStepQueue = (0,_useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay)(currentStatus, !supportMotion, function (newStep) { 21240 // Only prepare step can be skip 21241 if (newStep === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px) { 21242 var onPrepare = eventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px]; 21243 if (!onPrepare) { 21244 return _useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .SkipStep */ .es; 21245 } 21246 return onPrepare(getDomElement()); 21247 } 21248 21249 // Rest step is sync update 21250 if (step in eventHandlers) { 21251 var _eventHandlers$step; 21252 setStyle(((_eventHandlers$step = eventHandlers[step]) === null || _eventHandlers$step === void 0 ? void 0 : _eventHandlers$step.call(eventHandlers, getDomElement(), null)) || null); 21253 } 21254 if (step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_ACTIVE */ .m7 && currentStatus !== _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21255 // Patch events when motion needed 21256 patchMotionEvents(getDomElement()); 21257 if (motionDeadline > 0) { 21258 clearTimeout(deadlineRef.current); 21259 deadlineRef.current = setTimeout(function () { 21260 onInternalMotionEnd({ 21261 deadline: true 21262 }); 21263 }, motionDeadline); 21264 } 21265 } 21266 if (step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARED */ .LV) { 21267 updateMotionEndStatus(); 21268 } 21269 return _useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .DoStep */ .qB; 21270 }), 21271 _useStepQueue2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useStepQueue, 2), 21272 startStep = _useStepQueue2[0], 21273 step = _useStepQueue2[1]; 21274 var active = (0,_useStepQueue__WEBPACK_IMPORTED_MODULE_10__/* .isActive */ .$m)(step); 21275 activeRef.current = active; 21276 21277 // ============================ Status ============================ 21278 var visibleRef = (0,react__WEBPACK_IMPORTED_MODULE_6__.useRef)(null); 21279 21280 // Update with new status 21281 (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(function () { 21282 // When use Suspense, the `visible` will repeat trigger, 21283 // But not real change of the `visible`, we need to skip it. 21284 // https://github.com/ant-design/ant-design/issues/44379 21285 if (mountedRef.current && visibleRef.current === visible) { 21286 return; 21287 } 21288 setAsyncVisible(visible); 21289 var isMounted = mountedRef.current; 21290 mountedRef.current = true; 21291 21292 // if (!supportMotion) { 21293 // return; 21294 // } 21295 21296 var nextStatus; 21297 21298 // Appear 21299 if (!isMounted && visible && motionAppear) { 21300 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv; 21301 } 21302 21303 // Enter 21304 if (isMounted && visible && motionEnter) { 21305 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd; 21306 } 21307 21308 // Leave 21309 if (isMounted && !visible && motionLeave || !isMounted && motionLeaveImmediately && !visible && motionLeave) { 21310 nextStatus = _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp; 21311 } 21312 var nextEventHandlers = getEventHandlers(nextStatus); 21313 21314 // Update to next status 21315 if (nextStatus && (supportMotion || nextEventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px])) { 21316 setStatus(nextStatus); 21317 startStep(); 21318 } else { 21319 // Set back in case no motion but prev status has prepare step 21320 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21321 } 21322 visibleRef.current = visible; 21323 }, [visible]); 21324 21325 // ============================ Effect ============================ 21326 // Reset when motion changed 21327 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21328 if ( 21329 // Cancel appear 21330 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_APPEAR */ .Tv && !motionAppear || 21331 // Cancel enter 21332 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_ENTER */ .Wd && !motionEnter || 21333 // Cancel leave 21334 currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_LEAVE */ .dp && !motionLeave) { 21335 setStatus(_interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF); 21336 } 21337 }, [motionAppear, motionEnter, motionLeave]); 21338 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21339 return function () { 21340 mountedRef.current = false;
21341 clearTimeout(deadlineRef.current); 21342 }; 21343 }, []); 21344 21345 // Trigger `onVisibleChanged` 21346 var firstMountChangeRef = react__WEBPACK_IMPORTED_MODULE_6__.useRef(false); 21347 (0,react__WEBPACK_IMPORTED_MODULE_6__.useEffect)(function () { 21348 // [visible & motion not end] => [!visible & motion end] still need trigger onVisibleChanged 21349 if (asyncVisible) { 21350 firstMountChangeRef.current = true; 21351 } 21352 if (asyncVisible !== undefined && currentStatus === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STATUS_NONE */ .SF) { 21353 // Skip first render is invisible since it's nothing changed 21354 if (firstMountChangeRef.current || asyncVisible) { 21355 onVisibleChanged === null || onVisibleChanged === void 0 || onVisibleChanged(asyncVisible); 21356 } 21357 firstMountChangeRef.current = true; 21358 } 21359 }, [asyncVisible, currentStatus]); 21360 21361 // ============================ Styles ============================ 21362 var mergedStyle = style; 21363 if (eventHandlers[_interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_PREPARE */ .px] && step === _interface__WEBPACK_IMPORTED_MODULE_7__/* .STEP_START */ .Mv) { 21364 mergedStyle = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({ 21365 transition: 'none' 21366 }, mergedStyle); 21367 } 21368 return [currentStatus, step, mergedStyle, asyncVisible !== null && asyncVisible !== void 0 ? asyncVisible : visible]; 21369} 21370 21371/***/ }), 21372 21373/***/ 77326: 21374/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21375 21376"use strict"; 21377/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21378/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21379/* harmony export */ }); 21380/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 21381/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 21382/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 21383/* harmony import */ var rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41747); 21384/* harmony import */ var rc_util_es_warning__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84445); 21385/* harmony import */ var _SingleObserver__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47689); 21386/* harmony import */ var _Collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(23660); 21387/* harmony import */ var _utils_observerUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22616); 21388 21389 21390 21391 21392 21393 21394var INTERNAL_PREFIX_KEY = 'rc-observer-key'; 21395 21396 21397function ResizeObserver(props, ref) { 21398 var children = props.children; 21399 var childNodes = typeof children === 'function' ? [children] : (0,rc_util_es_Children_toArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(children); 21400 if (false) // removed by dead control flow 21401{} 21402 return childNodes.map(function (child, index) { 21403 var key = (child === null || child === void 0 ? void 0 : child.key) || "".concat(INTERNAL_PREFIX_KEY, "-").concat(index); 21404 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, { 21405 key: key, 21406 ref: index === 0 ? ref : undefined 21407 }), child); 21408 }); 21409} 21410var RefResizeObserver = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.forwardRef(ResizeObserver); 21411if (false) // removed by dead control flow 21412{} 21413RefResizeObserver.Collection = _Collection__WEBPACK_IMPORTED_MODULE_5__/* .Collection */ .p; 21414/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RefResizeObserver); 21415 21416/***/ }), 21417 21418/***/ 77427: 21419/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21420 21421"use strict"; 21422/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21423/* harmony export */ Q: () => (/* binding */ createInstance) 21424/* harmony export */ }); 21425/* unused harmony export urlAddSlash */ 21426/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62742); 21427/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_0__); 21428/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12097); 21429/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 21430/* harmony import */ var _cj_href__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84963); 21431/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93584); 21432/* harmony import */ var _common_toast__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50937); 21433var __assign = undefined && undefined.__assign || function () { 21434 __assign = Object.assign || function (t) { 21435 for (var s, i = 1, n = arguments.length; i < n; i++) { 21436 s = arguments[i]; 21437 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 21438 } 21439 return t; 21440 }; 21441 return __assign.apply(this, arguments); 21442}; 21443var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 21444 function adopt(value) { 21445 return value instanceof P ? value : new P(function (resolve) { 21446 resolve(value); 21447 }); 21448 } 21449 return new (P || (P = Promise))(function (resolve, reject) { 21450 function fulfilled(value) {
21451 try { 21452 step(generator.next(value)); 21453 } catch (e) { 21454 reject(e); 21455 } 21456 } 21457 function rejected(value) { 21458 try { 21459 step(generator["throw"](value)); 21460 } catch (e) { 21461 reject(e); 21462 } 21463 } 21464 function step(result) { 21465 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 21466 } 21467 step((generator = generator.apply(thisArg, _arguments || [])).next()); 21468 }); 21469}; 21470var __generator = undefined && undefined.__generator || function (thisArg, body) { 21471 var _ = { 21472 label: 0, 21473 sent: function sent() { 21474 if (t[0] & 1) throw t[1]; 21475 return t[1]; 21476 }, 21477 trys: [], 21478 ops: [] 21479 }, 21480 f, 21481 y, 21482 t, 21483 g; 21484 return g = { 21485 next: verb(0), 21486 "throw": verb(1), 21487 "return": verb(2) 21488 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 21489 return this; 21490 }), g; 21491 function verb(n) { 21492 return function (v) { 21493 return step([n, v]); 21494 }; 21495 } 21496 function step(op) { 21497 if (f) throw new TypeError("Generator is already executing."); 21498 while (g && (g = 0, op[0] && (_ = 0)), _) try { 21499 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; 21500 if (y = 0, t) op = [op[0] & 2, t.value]; 21501 switch (op[0]) { 21502 case 0: 21503 case 1: 21504 t = op; 21505 break; 21506 case 4: 21507 _.label++; 21508 return { 21509 value: op[1], 21510 done: false 21511 }; 21512 case 5: 21513 _.label++; 21514 y = op[1]; 21515 op = [0]; 21516 continue; 21517 case 7: 21518 op = _.ops.pop(); 21519 _.trys.pop(); 21520 continue; 21521 default: 21522 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 21523 _ = 0; 21524 continue; 21525 } 21526 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 21527 _.label = op[1]; 21528 break; 21529 } 21530 if (op[0] === 6 && _.label < t[1]) { 21531 _.label = t[1]; 21532 t = op; 21533 break; 21534 } 21535 if (t && _.label < t[2]) { 21536 _.label = t[2]; 21537 _.ops.push(op); 21538 break; 21539 } 21540 if (t[2]) _.ops.pop(); 21541 _.trys.pop(); 21542 continue; 21543 } 21544 op = body.call(thisArg, _); 21545 } catch (e) { 21546 op = [6, e]; 21547 y = 0; 21548 } finally { 21549 f = t = 0; 21550 } 21551 if (op[0] & 5) throw op[1]; 21552 return { 21553 value: op[0] ? op[1] : void 0, 21554 done: true 21555 }; 21556 } 21557}; 21558var __rest = undefined && undefined.__rest || function (s, e) { 21559 var t = {}; 21560 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 21561 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 21562 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 21563 } 21564 return t; 21565}; 21566 21567 21568 21569 21570 21571 21572function resDataProcess(data) { 21573 var _a; 21574 var _data = data; 21575 try { 21576 if (typeof data.result === 'string') { 21577 _data.result = JSON.parse(data.result); 21578 } 21579 } catch (e) { 21580 console.error('resDataProcess error:', (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : ''); 21581 } 21582 return _data; 21583} 21584var To = function To(promise) { 21585 return promise.then(function (res) { 21586 return [null, res]; 21587 })["catch"](function (err) { 21588 return [err]; 21589 }); 21590}; 21591var urlAddSlash = function urlAddSlash(url) { 21592 return (url === null || url === void 0 ? void 0 : url.startsWith('http')) ? url : (url === null || url === void 0 ? void 0 : url.startsWith('/')) ? url : "/".concat(url); 21593}; 21594var createInstance = function createInstance(token, getDomainByUrl) { 21595 return function (_a) { 21596 return __awaiter(void 0, void 0, void 0, function () { 21597 var requestErrorCount, error, response, _request, data, result; 21598 var url = _a.url, 21599 otherConfig = __rest(_a, ["url"]); 21600 return __generator(this, function (_b) { 21601 switch (_b.label) { 21602 case 0: 21603 requestErrorCount = 0; 21604 error = null; 21605 response = null; 21606 _request = function request() { 21607 return __awaiter(void 0, void 0, Promise, function () { 21608 var apiUrl, callerHeaders; 21609 var _a; 21610 var _b, _c, _d; 21611 return __generator(this, function (_e) { 21612 switch (_e.label) { 21613 case 0: 21614 apiUrl = (0,_index__WEBPACK_IMPORTED_MODULE_2__/* .useVipPrefix */ .Bz)({ 21615 url: url 21616 }); 21617 if (getDomainByUrl) { 21618 apiUrl = getDomainByUrl(apiUrl); 21619 } else { 21620 apiUrl = urlAddSlash(apiUrl); 21621 } 21622 callerHeaders = otherConfig.headers || {}; 21623 return [4, To(axios__WEBPACK_IMPORTED_MODULE_0___default()(__assign(__assign({ 21624 url: apiUrl, 21625 timeout: 15000 21626 }, otherConfig), { 21627 headers: __assign(__assign({ 21628 Accept: 'application/json;charset=utf-8', 21629 'Content-Type': 'application/json;charset=utf-8' 21630 }, callerHeaders), { 21631 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')) || '', 21632 'cj-area': ((_c = callerHeaders['cj-area']) !== null && _c !== void 0 ? _c : !_index__WEBPACK_IMPORTED_MODULE_2__/* .isBrowser */ .Bd ? process.env.areacode : window.__AREACODE__) || '000000' 21633 }) 21634 })))]; 21635 case 1: 21636 _a = _e.sent(), error = _a[0], response = _a[1]; 21637 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))) { 21638 if (requestErrorCount < 2) { 21639 requestErrorCount++; 21640 return [2, _request()]; 21641 } 21642 } 21643 return [2]; 21644 } 21645 }); 21646 }); 21647 }; 21648 return [4, _request()]; 21649 case 1: 21650 _b.sent(); 21651 if ((response === null || response === void 0 ? void 0 : response.status) === 200) { 21652 data = response.data; 21653 if (data.data === null) data.data = {}; 21654 result = resDataProcess(data); 21655 clearLoginStoreInfo(url, result); 21656 clearBlockedUser(result); 21657 return [2, [null, result]]; 21658 } 21659 return [2, [error]]; 21660 } 21661 }); 21662 }); 21663 }; 21664}; 21665function clearLoginStoreInfo(url, response) { 21666 var _a; 21667 if (typeof window === 'undefined') return; 21668 var codeNoLogin = (response === null || response === void 0 ? void 0 : response.code) == 601; 21669 var noLogin = (response === null || response === void 0 ? void 0 : response.message) == 'Sorry, you are not logged in'; 21670 if (noLogin || codeNoLogin) { 21671 console.error('mf-component: è¯·æ±æ¥å£è·³åºç»å½=>', url, JSON.stringify(__assign({}, response || {}))); 21672 window.__Sentry__ && window.__Sentry__.withScope(function (scope) { 21673 scope.setTags({ 21674 apiUrl: url, 21675 apiError: true, 21676 errorType: 'client', 21677 isToCJ: !!_common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.info('loginfromerp') 21678 }); 21679 scope.setExtras({ 21680 request: { 21681 url: url 21682 }, 21683 response: response 21684 }); 21685 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'), ")")); 21686 }); 21687 var isInternalAccount = window.loginInfoController.info('internalAccount'); 21688 _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.clear(); 21689 (0,_common_toast__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(response === null || response === void 0 ? void 0 : response.message); 21690 if (isInternalAccount) { 21691 window.location.href = '/authority-login.html'; 21692 return; 21693 } 21694 if (location.pathname.indexOf('my.html') > -1 || location.pathname.indexOf('mine') > -1) { 21695 var loginHref = '/login.html'; 21696 if ((_a = window.siteCheck) === null || _a === void 0 ? void 0 : _a.isSite('CJ')) { 21697 loginHref = (0,_cj_href__WEBPACK_IMPORTED_MODULE_3__/* .cjHref */ .F)(loginHref); 21698 } 21699 return location.href = "".concat(loginHref, "?target=") + js_base64__WEBPACK_IMPORTED_MODULE_4__/* .Base64 */ .o4.encode(location.href); 21700 } 21701 location.reload(); 21702 } 21703} 21704function clearBlockedUser(response) { 21705 var _a; 21706 if (typeof window === 'undefined') return; 21707 var codeBlocked = (response === null || response === void 0 ? void 0 : response.code) == 8880014; 21708 if (codeBlocked) { 21709 _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A.clear(); 21710 var href = "/mine/intercept"; 21711 if ((_a = window.siteCheck) === null || _a === void 0 ? void 0 : _a.isSite('CJ')) { 21712 href = (0,_cj_href__WEBPACK_IMPORTED_MODULE_3__/* .cjHref */ .F)(href); 21713 } 21714 location.href = href; 21715 } 21716} 21717 21718/***/ }), 21719 21720/***/ 77517: 21721/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21722 21723"use strict"; 21724/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21725/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21726/* harmony export */ }); 21727// extracted by mini-css-extract-plugin 21728/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({"tooltipOverlayBox":"tooltipOverlayBox--VYaHT","light":"light--gjfAs"}); 21729 21730/***/ }), 21731 21732/***/ 78068: 21733/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21734 21735"use strict"; 21736/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21737/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__) 21738/* harmony export */ }); 21739/* unused harmony exports defaultUserMenu, helpMenuList */ 21740/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 21741/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(77427); 21742/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81002); 21743var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 21744 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 21745 if (ar || !(i in from)) { 21746 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 21747 ar[i] = from[i]; 21748 } 21749 } 21750 return to.concat(ar || Array.prototype.slice.call(from)); 21751}; 21752 21753 21754 21755var defaultUserMenu = function defaultUserMenu(isCommonTop, i18next, getDomainByUrl, isQk, siteCheck) { 21756 return __spreadArray(__spreadArray([{ 21757 icon: 'gerenzhongxin', 21758 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-profile') : 'Profile', 21759 code: 'mycj_profile', 21760 route: '/my.html#/profile' 21761 }, { 21762 icon: 'zhanghu', 21763 code: 'mycj_wallet', 21764 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-wallet') : 'Wallet', 21765 route: '/mine/wallet' 21766 }], isQk ? [] : __spreadArray(__spreadArray([{ 21767 icon: 'wuliu', 21768 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-tool') : 'Tool', 21769 children: __spreadArray(__spreadArray([], siteCheck && siteCheck.isShow('header-track-orders') ? [{ 21770 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-track-orders') : 'Track Orders', 21771 route: siteCheck && siteCheck.isShow('global-vp') ? 'https://cjpacket.com/' : 'https://cjpacket.com/', 21772 target: '_blank' 21773 }] : [], true), siteCheck && siteCheck.isShow('header-shipping-calculation') ? [{ 21774 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-shipping-calculation') : 'Shipping Calculation', 21775 route: '/calculation.html', 21776 target: '_blank' 21777 }] : [], true) 21778 }], siteCheck && siteCheck.isShow('header-user-account') ? [{ 21779 icon: 'zizhanghu', 21780 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-account') : 'Account', 21781 code: 'mycj_account', 21782 route: '/my.html#/accountManage' 21783 }] : [], true), siteCheck && siteCheck.isShow('header-user-affiliate') ? [{ 21784 icon: 'fenxiaoicon', 21785 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-affiliate') : 'Affiliate', 21786 route: 'https://affiliate.cjdropshipping.com/', 21787 target: '_blank' 21788 }] : [], true), true), [{ 21789 icon: 'tuichu', 21790 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-log-out') : 'Log out', 21791 loginOut: function loginOut() { 21792 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('token'); 21793 var isInternalAccount = window.loginInfoController.info('internalAccount'); 21794 var myAxios = (0,_common_request__WEBPACK_IMPORTED_MODULE_1__/* .createInstance */ .Q)(token, getDomainByUrl); 21795 myAxios({ 21796 url: 'userCenterForeignWeb/foreign/signOut', 21797 method: 'POST', 21798 data: { 21799 token: token 21800 } 21801 }).then(function () { 21802 (0,_common__WEBPACK_IMPORTED_MODULE_2__/* .removeLogin */ ._$)(); 21803 if (isInternalAccount) { 21804 window.location.href = '/authority-login.html'; 21805 return; 21806 } 21807 location.href = '/'; 21808 }); 21809 } 21810 }], false); 21811}; 21812function getElitesUrl() { 21813 var t = Date.now(); 21814 var url = 'https://elites.cjdropshipping.com/cross'; 21815 var token = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('token'); 21816 if (token) { 21817 try { 21818 url = "".concat(url, "?_t=").concat(t, "&token=").concat(token); 21819 } catch (err) { 21820 console.error('ElitesUrl token decode err', err); 21821 } 21822 } 21823 return url; 21824} 21825var helpMenuList = function helpMenuList(isCommonTop, i18next, tipNumber, siteCheck) { 21826 return __spreadArray(__spreadArray([{ 21827 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-ticket') : 'Ticket', 21828 icon: 'ticket', 21829 code: 'mycj_ticket', 21830 route: '/mine/ticket', 21831 isShowTips: true, 21832 tipNum: tipNumber 21833 }, { 21834 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-help-center') : 'Help Center', 21835 icon: 'tutorial', 21836 route: '/help-center', 21837 target: '_blank' 21838 }], siteCheck && siteCheck.isShow('header-help-elites') ? [{ 21839 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-elites') : 'Elites', 21840 icon: 'elites', 21841 code: 'mycj_elites', 21842 route: getElitesUrl(), 21843 target: '_blank' 21844 }] : [], true), siteCheck && siteCheck.isShow('header-help-blog') ? [{ 21845 name: isCommonTop ? i18next === null || i18next === void 0 ? void 0 : i18next.t('common-top-blog') : 'Blog', 21846 icon: 'boke', 21847 route: 'https://www.cjdropshipping.com/blogs', 21848 target: '_blank' 21849 }] : [], true); 21850}; 21851var createAuthTree = function createAuthTree() { 21852 var userMenu = defaultUserMenu(false); 21853 var helpMenu = helpMenuList(false); 21854 var authMapByRoute = []; 21855 var _fun = function fun(list) { 21856 return list.map(function (l) { 21857 if (l.route && l.code) authMapByRoute.push({ 21858 name: l.name, 21859 code: l.code, 21860 route: l.route 21861 }); 21862 return { 21863 name: l.name, 21864 code: l.code, 21865 route: l.route, 21866 children: l.children && _fun(l.children) 21867 }; 21868 }); 21869 }; 21870 return [[{ 21871 name: 'Management', 21872 children: _fun(userMenu) 21873 }, { 21874 name: 'Support Center', 21875 children: _fun(helpMenu) 21876 }], authMapByRoute]; 21877}; 21878/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAut
21878hTree); 21879 21880/***/ }), 21881 21882/***/ 78422: 21883/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21884 21885"use strict"; 21886/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21887/* harmony export */ $m: () => (/* binding */ isActive), 21888/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 21889/* harmony export */ es: () => (/* binding */ SkipStep), 21890/* harmony export */ qB: () => (/* binding */ DoStep) 21891/* harmony export */ }); 21892/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 21893/* harmony import */ var rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39348); 21894/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 21895/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 21896/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(45480); 21897/* harmony import */ var _useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(25893); 21898/* harmony import */ var _useNextFrame__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20181); 21899 21900 21901 21902 21903 21904 21905var 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]; 21906var SIMPLE_STEP_QUEUE = [_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARE */ .px, _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARED */ .LV]; 21907 21908/** Skip current step */ 21909var SkipStep = false; 21910/** Current step should be update in */ 21911var DoStep = true; 21912function isActive(step) { 21913 return step === _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVE */ .m7 || step === _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVATED */ .Hs; 21914} 21915/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (status, prepareOnly, callback) { 21916 var _useState = (0,rc_util_es_hooks_useState__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_NONE */ .cE), 21917 _useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useState, 2), 21918 step = _useState2[0], 21919 setStep = _useState2[1]; 21920 var _useNextFrame = (0,_useNextFrame__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .A)(), 21921 _useNextFrame2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_useNextFrame, 2), 21922 nextFrame = _useNextFrame2[0], 21923 cancelNextFrame = _useNextFrame2[1]; 21924 function startQueue() { 21925 setStep(_interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_PREPARE */ .px, true); 21926 } 21927 var STEP_QUEUE = prepareOnly ? SIMPLE_STEP_QUEUE : FULL_STEP_QUEUE; 21928 (0,_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A)(function () { 21929 if (step !== _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_NONE */ .cE && step !== _interface__WEBPACK_IMPORTED_MODULE_3__/* .STEP_ACTIVATED */ .Hs) { 21930 var index = STEP_QUEUE.indexOf(step); 21931 var nextStep = STEP_QUEUE[index + 1]; 21932 var result = callback(step); 21933 if (result === SkipStep) { 21934 // Skip when no needed 21935 setStep(nextStep, true); 21936 } else if (nextStep) { 21937 // Do as frame for step update 21938 nextFrame(function (info) { 21939 function doNext() { 21940 // Skip since current queue is ood 21941 if (info.isCanceled()) return; 21942 setStep(nextStep, true); 21943 } 21944 if (result === true) { 21945 doNext(); 21946 } else { 21947 // Only promise should be async 21948 Promise.resolve(result).then(doNext); 21949 } 21950 }); 21951 } 21952 } 21953 }, [status, step]); 21954 react__WEBPACK_IMPORTED_MODULE_2__.useEffect(function () { 21955 return function () { 21956 cancelNextFrame(); 21957 }; 21958 }, []); 21959 return [startQueue, step]; 21960}); 21961 21962/***/ }), 21963 21964/***/ 78942: 21965/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 21966 21967var freeGlobal = __webpack_require__(74967); 21968 21969/** Detect free variable `self`. */ 21970var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 21971 21972/** Used as a reference to the global object. */ 21973var root = freeGlobal || freeSelf || Function('return this')(); 21974 21975module.exports = root; 21976 21977 21978/***/ }), 21979 21980/***/ 78977: 21981/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 21982 21983"use strict"; 21984/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21985/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 21986/* harmony export */ }); 21987/* unused harmony export generateTrigger */ 21988/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69740); 21989/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79082); 21990/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39850); 21991/* harmony import */ var _rc_component_portal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42963); 21992/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 21993/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 21994/* harmony import */ var rc_resize_observer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(77326); 21995/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(28299); 21996/* harmony import */ var rc_util_es_Dom_shadow__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(49116); 21997/* harmony import */ var rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9449); 21998/* harmony import */ var rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(75476); 21999/* harmony import */ var rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(84238); 22000/* harmony import */ var rc_util_es_isMobile__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(26651); 22001/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(15442); 22002/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__); 22003/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(59788); 22004/* harmony import */ var _TriggerWrapper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(36694); 22005/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(85086); 22006/* harmony import */ var _hooks_useAction__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(48043); 22007/* harmony import */ var _hooks_useAlign__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(24628); 22008/* harmony import */ var _hooks_useWatch__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(66318); 22009/* harmony import */ var _hooks_useWinClick__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(46783); 22010/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(61225); 22011 22012 22013 22014var _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"]; 22015 22016 22017 22018 22019 22020 22021 22022 22023 22024 22025 22026 22027 22028 22029 22030 22031 22032 22033 22034// Removed Props List 22035// Seems this can be auto 22036// getDocument?: (element?: HTMLElement) => Document; 22037 22038// New version will not wrap popup with `rc-trigger-popup-content` when multiple children 22039 22040function generateTrigger() { 22041 var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _rc_component_portal__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A; 22042 var Trigger = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.forwardRef(function (props, ref) { 22043 var _props$prefixCls = props.prefixCls, 22044 prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls, 22045 children = props.children, 22046 _props$action = props.action, 22047 action = _props$action === void 0 ? 'hover' : _props$action, 22048 showAction = props.showAction, 22049 hideAction = props.hideAction, 22050 popupVisible = props.popupVisible, 22051 defaultPopupVisible = props.defaultPopupVisible, 22052 onPopupVisibleChange = props.onPopupVisibleChange, 22053 afterPopupVisibleChange = props.afterPopupVisibleChange, 22054 mouseEnterDelay = props.mouseEnterDelay, 22055 _props$mouseLeaveDela = props.mouseLeaveDelay,
22056 mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, 22057 focusDelay = props.focusDelay, 22058 blurDelay = props.blurDelay, 22059 mask = props.mask, 22060 _props$maskClosable = props.maskClosable, 22061 maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable, 22062 getPopupContainer = props.getPopupContainer, 22063 forceRender = props.forceRender, 22064 autoDestroy = props.autoDestroy, 22065 destroyPopupOnHide = props.destroyPopupOnHide, 22066 popup = props.popup, 22067 popupClassName = props.popupClassName, 22068 popupStyle = props.popupStyle, 22069 popupPlacement = props.popupPlacement, 22070 _props$builtinPlaceme = props.builtinPlacements, 22071 builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme, 22072 popupAlign = props.popupAlign, 22073 zIndex = props.zIndex, 22074 stretch = props.stretch, 22075 getPopupClassNameFromAlign = props.getPopupClassNameFromAlign, 22076 fresh = props.fresh, 22077 alignPoint = props.alignPoint, 22078 onPopupClick = props.onPopupClick, 22079 onPopupAlign = props.onPopupAlign, 22080 arrow = props.arrow, 22081 popupMotion = props.popupMotion, 22082 maskMotion = props.maskMotion, 22083 popupTransitionName = props.popupTransitionName, 22084 popupAnimation = props.popupAnimation, 22085 maskTransitionName = props.maskTransitionName, 22086 maskAnimation = props.maskAnimation, 22087 className = props.className, 22088 getTriggerDOMNode = props.getTriggerDOMNode, 22089 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(props, _excluded); 22090 var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false; 22091 22092 // =========================== Mobile =========================== 22093 var _React$useState = react__WEBPACK_IMPORTED_MODULE_12__.useState(false), 22094 _React$useState2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState, 2), 22095 mobile = _React$useState2[0], 22096 setMobile = _React$useState2[1]; 22097 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22098 setMobile((0,rc_util_es_isMobile__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .A)()); 22099 }, []); 22100 22101 // ========================== Context =========================== 22102 var subPopupElements = react__WEBPACK_IMPORTED_MODULE_12__.useRef({}); 22103 var parentContext = react__WEBPACK_IMPORTED_MODULE_12__.useContext(_context__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .A); 22104 var context = react__WEBPACK_IMPORTED_MODULE_12__.useMemo(function () { 22105 return { 22106 registerSubPopup: function registerSubPopup(id, subPopupEle) { 22107 subPopupElements.current[id] = subPopupEle; 22108 parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle); 22109 } 22110 }; 22111 }, [parentContext]); 22112 22113 // =========================== Popup ============================ 22114 var id = (0,rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)(); 22115 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22116 _React$useState4 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState3, 2), 22117 popupEle = _React$useState4[0], 22118 setPopupEle = _React$useState4[1]; 22119 22120 // Used for forwardRef popup. Not use internal 22121 var externalPopupRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(null); 22122 var setPopupRef = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (node) { 22123 externalPopupRef.current = node; 22124 if ((0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__/* .isDOM */ .fk)(node) && popupEle !== node) { 22125 setPopupEle(node); 22126 } 22127 parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node); 22128 }); 22129 22130 // =========================== Target =========================== 22131 // Use state to control here since `useRef` update not trigger render 22132 var _React$useState5 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22133 _React$useState6 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState5, 2), 22134 targetEle = _React$useState6[0], 22135 setTargetEle = _React$useState6[1]; 22136 22137 // Used for forwardRef target. Not use internal 22138 var externalForwardRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(null); 22139 var setTargetRef = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (node) { 22140 if ((0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_6__/* .isDOM */ .fk)(node) && targetEle !== node) { 22141 setTargetEle(node); 22142 externalForwardRef.current = node; 22143 } 22144 }); 22145 22146 // ========================== Children ========================== 22147 var child = react__WEBPACK_IMPORTED_MODULE_12__.Children.only(children); 22148 var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {}; 22149 var cloneProps = {}; 22150 var inPopupOrChild = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (ele) { 22151 var _getShadowRoot, _getShadowRoot2; 22152 var childDOM = targetEle; 22153 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) { 22154 return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle; 22155 }); 22156 }); 22157 22158 // =========================== Motion =========================== 22159 var mergePopupMotion = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getMotion */ .Vu)(prefixCls, popupMotion, popupAnimation, popupTransitionName); 22160 var mergeMaskMotion = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getMotion */ .Vu)(prefixCls, maskMotion, maskAnimation, maskTransitionName); 22161 22162 // ============================ Open ============================ 22163 var _React$useState7 = react__WEBPACK_IMPORTED_MODULE_12__.useState(defaultPopupVisible || false), 22164 _React$useState8 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState7, 2), 22165 internalOpen = _React$useState8[0], 22166 setInternalOpen = _React$useState8[1]; 22167 22168 // Render still use props as first priority 22169 var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen; 22170 22171 // We use effect sync here in case `popupVisible` back to `undefined` 22172 var setMergedOpen = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (nextOpen) { 22173 if (popupVisible === undefined) { 22174 setInternalOpen(nextOpen); 22175 } 22176 }); 22177 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22178 setInternalOpen(popupVisible || false); 22179 }, [popupVisible]); 22180 var openRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(mergedOpen); 22181 openRef.current = mergedOpen; 22182 var lastTriggerRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef([]); 22183 lastTriggerRef.current = []; 22184 var internalTriggerOpen = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function (nextOpen) { 22185 var _lastTriggerRef$curre; 22186 setMergedOpen(nextOpen); 22187 22188 // Enter or Pointer will both trigger open state change 22189 // We only need take one to avoid duplicated change event trigger 22190 // Use `lastTriggerRef` to record last open type 22191 if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) { 22192 lastTriggerRef.current.push(nextOpen); 22193 onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen); 22194 } 22195 }); 22196 22197 // Trigger for delay 22198 var delayRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef();
22199 var clearDelay = function clearDelay() { 22200 clearTimeout(delayRef.current); 22201 }; 22202 var triggerOpen = function triggerOpen(nextOpen) { 22203 var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 22204 clearDelay(); 22205 if (delay === 0) { 22206 internalTriggerOpen(nextOpen); 22207 } else { 22208 delayRef.current = setTimeout(function () { 22209 internalTriggerOpen(nextOpen); 22210 }, delay * 1000); 22211 } 22212 }; 22213 react__WEBPACK_IMPORTED_MODULE_12__.useEffect(function () { 22214 return clearDelay; 22215 }, []); 22216 22217 // ========================== Motion ============================ 22218 var _React$useState9 = react__WEBPACK_IMPORTED_MODULE_12__.useState(false), 22219 _React$useState10 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState9, 2), 22220 inMotion = _React$useState10[0], 22221 setInMotion = _React$useState10[1]; 22222 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function (firstMount) { 22223 if (!firstMount || mergedOpen) { 22224 setInMotion(true); 22225 } 22226 }, [mergedOpen]); 22227 var _React$useState11 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22228 _React$useState12 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState11, 2), 22229 motionPrepareResolve = _React$useState12[0], 22230 setMotionPrepareResolve = _React$useState12[1]; 22231 22232 // =========================== Align ============================ 22233 var _React$useState13 = react__WEBPACK_IMPORTED_MODULE_12__.useState(null), 22234 _React$useState14 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState13, 2), 22235 mousePos = _React$useState14[0], 22236 setMousePos = _React$useState14[1]; 22237 var setMousePosByEvent = function setMousePosByEvent(event) { 22238 setMousePos([event.clientX, event.clientY]); 22239 }; 22240 var _useAlign = (0,_hooks_useAlign__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .A)(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign), 22241 _useAlign2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_useAlign, 11), 22242 ready = _useAlign2[0], 22243 offsetX = _useAlign2[1], 22244 offsetY = _useAlign2[2], 22245 offsetR = _useAlign2[3], 22246 offsetB = _useAlign2[4], 22247 arrowX = _useAlign2[5], 22248 arrowY = _useAlign2[6], 22249 scaleX = _useAlign2[7], 22250 scaleY = _useAlign2[8], 22251 alignInfo = _useAlign2[9], 22252 onAlign = _useAlign2[10]; 22253 var _useAction = (0,_hooks_useAction__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .A)(mobile, action, showAction, hideAction), 22254 _useAction2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_useAction, 2), 22255 showActions = _useAction2[0], 22256 hideActions = _useAction2[1]; 22257 var clickToShow = showActions.has('click'); 22258 var clickToHide = hideActions.has('click') || hideActions.has('contextMenu'); 22259 var triggerAlign = (0,rc_util_es_hooks_useEvent__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(function () { 22260 if (!inMotion) { 22261 onAlign(); 22262 } 22263 }); 22264 var onScroll = function onScroll() { 22265 if (openRef.current && alignPoint && clickToHide) { 22266 triggerOpen(false); 22267 } 22268 }; 22269 (0,_hooks_useWatch__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .A)(mergedOpen, targetEle, popupEle, triggerAlign, onScroll); 22270 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22271 triggerAlign(); 22272 }, [mousePos, popupPlacement]); 22273 22274 // When no builtinPlacements and popupAlign changed 22275 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22276 if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) { 22277 triggerAlign(); 22278 } 22279 }, [JSON.stringify(popupAlign)]); 22280 var alignedClassName = react__WEBPACK_IMPORTED_MODULE_12__.useMemo(function () { 22281 var baseClassName = (0,_util__WEBPACK_IMPORTED_MODULE_20__/* .getAlignPopupClassName */ .H1)(builtinPlacements, prefixCls, al
22281ignInfo, alignPoint); 22282 return classnames__WEBPACK_IMPORTED_MODULE_4___default()(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo)); 22283 }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]); 22284 22285 // ============================ Refs ============================ 22286 react__WEBPACK_IMPORTED_MODULE_12__.useImperativeHandle(ref, function () { 22287 return { 22288 nativeElement: externalForwardRef.current, 22289 popupElement: externalPopupRef.current, 22290 forceAlign: triggerAlign 22291 }; 22292 }); 22293 22294 // ========================== Stretch =========================== 22295 var _React$useState15 = react__WEBPACK_IMPORTED_MODULE_12__.useState(0), 22296 _React$useState16 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState15, 2), 22297 targetWidth = _React$useState16[0], 22298 setTargetWidth = _React$useState16[1]; 22299 var _React$useState17 = react__WEBPACK_IMPORTED_MODULE_12__.useState(0), 22300 _React$useState18 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(_React$useState17, 2), 22301 targetHeight = _React$useState18[0], 22302 setTargetHeight = _React$useState18[1]; 22303 var syncTargetSize = function syncTargetSize() { 22304 if (stretch && targetEle) { 22305 var rect = targetEle.getBoundingClientRect(); 22306 setTargetWidth(rect.width); 22307 setTargetHeight(rect.height); 22308 } 22309 }; 22310 var onTargetResize = function onTargetResize() { 22311 syncTargetSize(); 22312 triggerAlign(); 22313 }; 22314 22315 // ========================== Motion ============================ 22316 var onVisibleChanged = function onVisibleChanged(visible) { 22317 setInMotion(false); 22318 onAlign(); 22319 afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible); 22320 }; 22321 22322 // We will trigger align when motion is in prepare 22323 var onPrepare = function onPrepare() { 22324 return new Promise(function (resolve) { 22325 syncTargetSize(); 22326 setMotionPrepareResolve(function () { 22327 return resolve; 22328 }); 22329 }); 22330 }; 22331 (0,rc_util_es_hooks_useLayoutEffect__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(function () { 22332 if (motionPrepareResolve) { 22333 onAlign(); 22334 motionPrepareResolve(); 22335 setMotionPrepareResolve(null); 22336 } 22337 }, [motionPrepareResolve]); 22338 22339 // =========================== Action =========================== 22340 /** 22341 * Util wrapper for trigger action 22342 */ 22343 function wrapperAction(eventName, nextOpen, delay, preEvent) { 22344 cloneProps[eventName] = function (event) { 22345 var _originChildProps$eve; 22346 preEvent === null || preEvent === void 0 || preEvent(event); 22347 triggerOpen(nextOpen, delay); 22348 22349 // Pass to origin 22350 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 22351 args[_key - 1] = arguments[_key]; 22352 } 22353 (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args)); 22354 }; 22355 } 22356 22357 // ======================= Action: Click ======================== 22358 if (clickToShow || clickToHide) { 22359 cloneProps.onClick = function (event) { 22360 var _originChildProps$onC; 22361 if (openRef.current && clickToHide) { 22362 triggerOpen(false); 22363 } else if (!openRef.current && clickToShow) { 22364 setMousePosByEvent(event); 22365 triggerOpen(true); 22366 } 22367 22368 // Pass to origin 22369 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 22370 args[_key2 - 1] = arguments[_key2]; 22371 } 22372 (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args)); 22373 }; 22374 } 22375 22376 // Click to hide is special action since click popup element should not hide 22377 var onPopupPointerDown = (0,_hooks_useWinClick__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .A)(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen); 22378 22379 // ======================= Action: Hover ======================== 22380 var hoverToShow = showActions.has('hover'); 22381 var hoverToHide = hideActions.has('hover'); 22382 var onPopupMouseEnter; 22383 var onPopupMouseLeave; 22384 if (hoverToShow) { 22385 // Compatible with old browser which not support pointer event 22386 wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) { 22387 setMousePosByEvent(event); 22388 }); 22389 wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) { 22390 setMousePosByEvent(event); 22391 }); 22392 onPopupMouseEnter = function onPopupMouseEnter(event) { 22393 // Only trigger re-open when popup is visible 22394 if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) { 22395 triggerOpen(true, mouseEnterDelay); 22396 } 22397 }; 22398 22399 // Align Point 22400 if (alignPoint) { 22401 cloneProps.onMouseMove = function (event) { 22402 var _originChildProps$onM; 22403 // setMousePosByEvent(event); 22404 (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event); 22405 }; 22406 } 22407 } 22408 if (hoverToHide) { 22409 wrapperAction('onMouseLeave', false, mouseLeaveDelay); 22410 wrapperAction('onPointerLeave', false, mouseLeaveDelay); 22411 onPopupMouseLeave = function onPopupMouseLeave() { 22412 triggerOpen(false, mouseLeaveDelay); 22413 }; 22414 } 22415 22416 // ======================= Action: Focus ======================== 22417 if (showActions.has('focus')) { 22418 wrapperAction('onFocus', true, focusDelay); 22419 } 22420 if (hideActions.has('focus')) { 22421 wrapperAction('onBlur', false, blurDelay); 22422 } 22423 22424 // ==================== Action: ContextMenu ===================== 22425 if (showActions.has('contextMenu')) { 22426 cloneProps.onContextMenu = function (event) { 22427 var _originChildProps$onC2; 22428 if (openRef.current && hideActions.has('contextMenu')) { 22429 triggerOpen(false); 22430 } else { 22431 setMousePosByEvent(event); 22432 triggerOpen(true); 22433 } 22434 event.preventDefault(); 22435 22436 // Pass to origin 22437 for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { 22438 args[_key3 - 1] = arguments[_key3]; 22439 } 22440 (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args)); 22441 }; 22442 } 22443 22444 // ========================= ClassName ========================== 22445 if (className) { 22446 cloneProps.className = classnames__WEBPACK_IMPORTED_MODULE_4___default()(originChildProps.className, className); 22447 } 22448 22449 // ============================ Perf ============================ 22450 var renderedRef = react__WEBPACK_IMPORTED_MODULE_12__.useRef(false); 22451 renderedRef.current || (renderedRef.current = forceRender || mergedOpen || inMotion); 22452 22453 // =========================== Render =========================== 22454 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); 22455 22456 // Pass props into cloneProps for nest usage 22457 var passedProps = {}; 22458 var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur']; 22459 passedEventList.forEach(function (eventName) { 22460 if (restProps[eventName]) { 22461 passedProps[eventName] = function () { 22462 var _mergedChildrenProps$; 22463 for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
22464 args[_key4] = arguments[_key4]; 22465 } 22466 (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args)); 22467 restProps[eventName].apply(restProps, args); 22468 }; 22469 } 22470 }); 22471 22472 // Child Node 22473 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)); 22474 var arrowPos = { 22475 x: arrowX, 22476 y: arrowY 22477 }; 22478 var innerArrow = arrow ? (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)({}, arrow !== true ? arrow : {}) : null; 22479 22480 // Render 22481 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, { 22482 disabled: !mergedOpen, 22483 ref: setTargetRef, 22484 onResize: onTargetResize 22485 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_TriggerWrapper__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .A, { 22486 getTriggerDOMNode: getTriggerDOMNode 22487 }, triggerNode)), renderedRef.current && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_context__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .A.Provider, { 22488 value: context 22489 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_12__.createElement(_Popup__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .A, { 22490 portal: PortalComponent, 22491 ref: setPopupRef, 22492 prefixCls: prefixCls, 22493 popup: popup, 22494 className: classnames__WEBPACK_IMPORTED_MODULE_4___default()(popupClassName, alignedClassName), 22495 style: popupStyle, 22496 target: targetEle, 22497 onMouseEnter: onPopupMouseEnter, 22498 onMouseLeave: onPopupMouseLeave 22499 // https://github.com/ant-design/ant-design/issues/43924 22500 , 22501 onPointerEnter: onPopupMouseEnter, 22502 zIndex: zIndex 22503 // Open 22504 , 22505 open: mergedOpen, 22506 keepDom: inMotion, 22507 fresh: fresh 22508 // Click 22509 , 22510 onClick: onPopupClick, 22511 onPointerDownCapture: onPopupPointerDown 22512 // Mask 22513 , 22514 mask: mask 22515 // Motion 22516 , 22517 motion: mergePopupMotion, 22518 maskMotion: mergeMaskMotion, 22519 onVisibleChanged: onVisibleChanged, 22520 onPrepare: onPrepare 22521 // Portal 22522 , 22523 forceRender: forceRender, 22524 autoDestroy: mergedAutoDestroy, 22525 getPopupContainer: getPopupContainer 22526 // Arrow 22527 , 22528 align: alignInfo, 22529 arrow: innerArrow, 22530 arrowPos: arrowPos 22531 // Align 22532 , 22533 ready: ready, 22534 offsetX: offsetX, 22535 offsetY: offsetY, 22536 offsetR: offsetR, 22537 offsetB: offsetB, 22538 onAlign: triggerAlign 22539 // Stretch 22540 , 22541 stretch: stretch, 22542 targetWidth: targetWidth / scaleX, 22543 targetHeight: targetHeight / scaleY 22544 }))); 22545 }); 22546 if (false) // removed by dead control flow 22547{} 22548 return Trigger; 22549} 22550/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (generateTrigger(_rc_component_portal__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)); 22551 22552/***/ }), 22553 22554/***/ 79082: 22555/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 22556 22557"use strict"; 22558/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22559/* harmony export */ A: () => (/* binding */ _slicedToArray) 22560/* harmony export */ }); 22561/* harmony import */ var _arrayWithHoles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(96488); 22562/* harmony import */ var _iterableToArrayLimit_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23171); 22563/* harmony import */ var _unsupportedIterableToArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(27985); 22564/* harmony import */ var _nonIterableRest_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5405); 22565 22566 22567 22568 22569function _slicedToArray(r, e) { 22570 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)(); 22571} 22572 22573 22574/***/ }), 22575 22576/***/ 79191: 22577/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22578 22579"use strict"; 22580/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22581/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__), 22582/* harmony export */ E: () => (/* binding */ STORAGE_GUIDE_DATA) 22583/* harmony export */ }); 22584/* harmony import */ var _common_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4703); 22585/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44148); 22586/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15442); 22587/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 22588/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(77427); 22589var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 22590 function adopt(value) { 22591 return value instanceof P ? value : new P(function (resolve) { 22592 resolve(value); 22593 }); 22594 } 22595 return new (P || (P = Promise))(function (resolve, reject) { 22596 function fulfilled(value) {
22597 try { 22598 step(generator.next(value)); 22599 } catch (e) { 22600 reject(e); 22601 } 22602 } 22603 function rejected(value) { 22604 try { 22605 step(generator["throw"](value)); 22606 } catch (e) { 22607 reject(e); 22608 } 22609 } 22610 function step(result) { 22611 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 22612 } 22613 step((generator = generator.apply(thisArg, _arguments || [])).next()); 22614 }); 22615}; 22616var __generator = undefined && undefined.__generator || function (thisArg, body) { 22617 var _ = { 22618 label: 0, 22619 sent: function sent() { 22620 if (t[0] & 1) throw t[1]; 22621 return t[1]; 22622 }, 22623 trys: [], 22624 ops: [] 22625 }, 22626 f, 22627 y, 22628 t, 22629 g; 22630 return g = { 22631 next: verb(0), 22632 "throw": verb(1), 22633 "return": verb(2) 22634 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 22635 return this; 22636 }), g; 22637 function verb(n) { 22638 return function (v) { 22639 return step([n, v]); 22640 }; 22641 } 22642 function step(op) { 22643 if (f) throw new TypeError("Generator is already executing."); 22644 while (g && (g = 0, op[0] && (_ = 0)), _) try { 22645 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; 22646 if (y = 0, t) op = [op[0] & 2, t.value]; 22647 switch (op[0]) { 22648 case 0: 22649 case 1: 22650 t = op; 22651 break; 22652 case 4: 22653 _.label++; 22654 return { 22655 value: op[1], 22656 done: false 22657 }; 22658 case 5: 22659 _.label++; 22660 y = op[1]; 22661 op = [0]; 22662 continue; 22663 case 7: 22664 op = _.ops.pop(); 22665 _.trys.pop(); 22666 continue; 22667 default: 22668 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 22669 _ = 0; 22670 continue; 22671 } 22672 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 22673 _.label = op[1]; 22674 break; 22675 } 22676 if (op[0] === 6 && _.label < t[1]) { 22677 _.label = t[1]; 22678 t = op; 22679 break; 22680 } 22681 if (t && _.label < t[2]) { 22682 _.label = t[2]; 22683 _.ops.push(op); 22684 break; 22685 } 22686 if (t[2]) _.ops.pop(); 22687 _.trys.pop(); 22688 continue; 22689 } 22690 op = body.call(thisArg, _); 22691 } catch (e) { 22692 op = [6, e]; 22693 y = 0; 22694 } finally { 22695 f = t = 0; 22696 } 22697 if (op[0] & 5) throw op[1]; 22698 return { 22699 value: op[0] ? op[1] : void 0, 22700 done: true 22701 }; 22702 } 22703}; 22704 22705 22706 22707 22708var STORAGE_GUIDE_DATA = 'cj_guide_data'; 22709var useGuidShow = function useGuidShow(_a) { 22710 var _b = _a === void 0 ? {} : _a, 22711 _c = _b.getDomainByUrl, 22712 getDomainByUrl = _c === void 0 ? function (v) { 22713 return v; 22714 } : _c; 22715 var loginInfo = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_1__/* .useGlobalProps */ .v)().loginInfo; 22716 var _d = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false), 22717 loading = _d[0], 22718 setLoading = _d[1]; 22719 var axios = (0,_common_request__WEBPACK_IMPORTED_MODULE_3__/* .createInstance */ .Q)(); 22720 var getIsShow = function getIsShow() { 22721 return __awaiter(void 0, void 0, void 0, function () { 22722 var data, _a, res; 22723 return __generator(this, function (_b) { 22724 switch (_b.label) { 22725 case 0: 22726 data = _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(STORAGE_GUIDE_DATA); 22727 if (data) return [2]; 22728 setLoading(true); 22729 return [4, axios({ 22730 method: 'POST', 22731 url: 'chat-web/app/message/guide/getDspGuideNodeByLoginName', 22732 data: { 22733 accLoginName: loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.loginName 22734 } 22735 })]; 22736 case 1: 22737 _a = _b.sent(), res = _a[1]; 22738 setLoading(false); 22739 if (res === null || res === void 0 ? void 0 : res.data) { 22740 _common_store__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set(STORAGE_GUIDE_DATA, res.data); 22741 } 22742 return [2]; 22743 } 22744 }); 22745 }); 22746 }; 22747 return { 22748 loading: loading, 22749 getIsShow: getIsShow 22750 }; 22751}; 22752/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useGuidShow); 22753 22754/***/ }), 22755 22756/***/ 79328: 22757/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22758 22759"use strict"; 22760/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22761/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 22762/* harmony export */ }); 22763/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + "assets/nav-bg.38bd807e.png"); 22764 22765/***/ }), 22766 22767/***/ 79824: 22768/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 22769 22770"use strict"; 22771/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22772/* harmony export */ A: () => (/* binding */ toPrimitive) 22773/* harmony export */ }); 22774/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 22775 22776function toPrimitive(t, r) { 22777 if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t) || !t) return t; 22778 var e = t[Symbol.toPrimitive]; 22779 if (void 0 !== e) { 22780 var i = e.call(t, r || "default"); 22781 if ("object" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(i)) return i; 22782 throw new TypeError("@@toPrimitive must return a primitive value."); 22783 } 22784 return ("string" === r ? String : Number)(t); 22785} 22786 22787 22788/***/ }), 22789 22790/***/ 80129: 22791/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22792 22793"use strict"; 22794/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22795/* harmony export */ A: () => (/* binding */ contains) 22796/* harmony export */ }); 22797function contains(root, n) { 22798 if (!root) { 22799 return false;
22800 } 22801 22802 // Use native if support 22803 if (root.contains) { 22804 return root.contains(n); 22805 } 22806 22807 // `document.contains` not support with IE11 22808 var node = n; 22809 while (node) { 22810 if (node === root) { 22811 return true; 22812 } 22813 node = node.parentNode; 22814 } 22815 return false; 22816} 22817 22818/***/ }), 22819 22820/***/ 80547: 22821/***/ ((module) => { 22822 22823/** 22824 * Checks if `value` is object-like. A value is object-like if it's not `null` 22825 * and has a `typeof` result of "object". 22826 * 22827 * @static 22828 * @memberOf _ 22829 * @since 4.0.0 22830 * @category Lang 22831 * @param {*} value The value to check. 22832 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 22833 * @example 22834 * 22835 * _.isObjectLike({}); 22836 * // => true 22837 * 22838 * _.isObjectLike([1, 2, 3]); 22839 * // => true 22840 * 22841 * _.isObjectLike(_.noop); 22842 * // => false 22843 * 22844 * _.isObjectLike(null); 22845 * // => false 22846 */ 22847function isObjectLike(value) { 22848 return value != null && typeof value == 'object'; 22849} 22850 22851module.exports = isObjectLike; 22852 22853 22854/***/ }), 22855 22856/***/ 80745: 22857/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22858 22859"use strict"; 22860/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22861/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 22862/* harmony export */ }); 22863/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 22864/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 22865 22866var PopupContent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.memo(function (_ref) { 22867 var children = _ref.children; 22868 return children; 22869}, function (_, next) { 22870 return next.cache; 22871}); 22872if (false) // removed by dead control flow 22873{} 22874/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PopupContent); 22875 22876/***/ }), 22877 22878/***/ 81002: 22879/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 22880 22881"use strict"; 22882/* harmony export */ __webpack_require__.d(__webpack_exports__, { 22883/* harmony export */ Bd: () => (/* binding */ isBrowser), 22884/* harmony export */ Bz: () => (/* binding */ useVipPrefix), 22885/* harmony export */ Fr: () => (/* binding */ isMobile), 22886/* harmony export */ G3: () => (/* binding */ is1688), 22887/* harmony export */ GA: () => (/* binding */ statusCode200), 22888/* harmony export */ JE: () => (/* binding */ getQueryVariable), 22889/* harmony export */ Me: () => (/* binding */ httpsOptionsConfig), 22890/* harmony export */ SR: () => (/* binding */ getTopDomain), 22891/* harmony export */ Wc: () => (/* reexport safe */ _cookies_refact__WEBPACK_IMPORTED_MODULE_0__.W), 22892/* harmony export */ Wg: () => (/* binding */ unlockBodyScroll), 22893/* harmony export */ _$: () => (/* binding */ removeLogin), 22894/* harmony export */ cH: () => (/* binding */ isInViewport), 22895/* harmony export */ dn: () => (/* binding */ isSafeUser), 22896/* harmony export */ gQ: () => (/* binding */ handleAuthUrl), 22897/* harmony export */ hQ: () => (/* binding */ getRouteHref), 22898/* harmony export */ kJ: () => (/* binding */ isMobileFun), 22899/* harmony export */ sg: () => (/* binding */ debounce), 22900/* harmony export */ t_: () => (/* binding */ isShowNewFeatures), 22901/* harmony export */ zI: () => (/* binding */ lockBodyScroll) 22902/* harmony export */ }); 22903/* 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 */ 22904/* harmony import */ var js_base64__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(93584); 22905/* harmony import */ var _cookies_refact__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(84873); 22906/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12097); 22907/* harmony import */ var _authority_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25435); 22908/* harmony import */ var psl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67399); 22909/* harmony import */ var _replace_prefix_for_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20000); 22910 22911 22912 22913 22914 22915 22916 22917var getRouteHref = function getRouteHref(router) { 22918 if (!router.route) return '#'; 22919 if (!(0,_authority_utils__WEBPACK_IMPORTED_MODULE_2__/* .hasAuth */ .Vm)({ 22920 code: router.code 22921 })) return _authority_utils__WEBPACK_IMPORTED_MODULE_2__/* .noAuthPath */ .Z7; 22922 return router.route; 22923};
22924function getTopDomain(host) { 22925 if (host === void 0) { 22926 host = location === null || location === void 0 ? void 0 : location.hostname; 22927 } 22928 var ip_pattern = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; 22929 if (ip_pattern.test(host)) { 22930 return host; 22931 } 22932 var domain = ''; 22933 var p = psl__WEBPACK_IMPORTED_MODULE_3__/* ["default"].parse */ .Ay.parse(host); 22934 if (p.listed) { 22935 domain = p.domain; 22936 } else { 22937 domain = host; 22938 } 22939 return domain === 'localhost' ? domain : ".".concat(domain); 22940} 22941function statusCode200(data) { 22942 var errormsg = 'api request error!'; 22943 if (!data) { 22944 return [errormsg]; 22945 } 22946 if (data.success) { 22947 return [null, data.data]; 22948 } 22949 return +data.statusCode === 200 ? [null, data.result] : [data.message || errormsg]; 22950} 22951var isBrowser = typeof window != 'undefined'; 22952var getQueryVariable = function getQueryVariable(name) { 22953 var _a; 22954 try { 22955 var searchParams = new URLSearchParams(location.search); 22956 var query = Array.from(searchParams.entries()).reduce(function (obj, _a) { 22957 var key = _a[0], 22958 value = _a[1]; 22959 obj[key] = value; 22960 return obj; 22961 }, {}); 22962 if (name) { 22963 return (_a = query[name]) !== null && _a !== void 0 ? _a : ''; 22964 } 22965 return query; 22966 } catch (e) { 22967 return name ? '' : {}; 22968 } 22969}; 22970function debounce(fn, wait, immediate) { 22971 if (immediate === void 0) { 22972 immediate = false; 22973 } 22974 var timer, 22975 startTimeStamp = 0; 22976 var context, args; 22977 var _run = function run(timerInterval) { 22978 timer = setTimeout(function () { 22979 var now = Date.now(); 22980 var interval = now - startTimeStamp; 22981 if (interval < timerInterval) { 22982 startTimeStamp = now; 22983 _run(wait - interval); 22984 } else { 22985 if (!immediate) { 22986 fn.apply(context, args); 22987 } 22988 clearTimeout(timer); 22989 timer = null; 22990 } 22991 }, timerInterval); 22992 }; 22993 return function () { 22994 context = this; 22995 args = arguments; 22996 var now = Date.now(); 22997 startTimeStamp = now; 22998 if (!timer) { 22999 if (immediate) { 23000 fn.apply(context, args); 23001 } 23002 _run(wait); 23003 } 23004 }; 23005} 23006function isSupportWebpFun() { 23007 if (typeof window === 'undefined') return false; 23008 try { 23009 return document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0; 23010 } catch (err) { 23011 return false; 23012 } 23013} 23014var isSupportWebp = isSupportWebpFun(); 23015var IMG_SIZE = function IMG_SIZE(url) { 23016 var args = []; 23017 for (var _i = 1; _i < arguments.length; _i++) { 23018 args[_i - 1] = arguments[_i]; 23019 } 23020 if (isBrowser && is1688()) return url; 23021 if (typeof url !== 'string' || !url.trim()) return url; 23022 if (url.indexOf('data:image') > -1) return url; 23023 try { 23024 var _url = new URL(url); 23025 if (_url.searchParams.size > 0) { 23026 _url.search = ''; 23027 } 23028 var webpT = 'image/format,webp,'; 23029 var json = {}; 23030 var size = 200; 23031 var xOssProcess = "".concat(isSupportWebp ? webpT : '', "image/resize,m_fill,m_pad"); 23032 if (args.length === 1) json = { 23033 w: args[0] 23034 };else if (args.length === 2) json = { 23035 w: args[0], 23036 h: args[1] 23037 };else { 23038 json = { 23039 w: size, 23040 h: size 23041 }; 23042 } 23043 for (var k in json) xOssProcess += ",".concat(k, "_").concat(json[k]); 23044 _url.search = "?x-oss-process=".concat(xOssProcess); 23045 return HTTPS_PREFIX(_url.toString()); 23046 } catch (e) { 23047 console.error("\u56FE\u7247url: ".concat(url, " \u5904\u7406\u62A5\u9519"), JSON.stringify(e)); 23048 return url; 23049 } 23050}; 23051var HTTPS_PREFIX = function HTTPS_PREFIX(url) { 23052 var str = url; 23053 if (!(str === null || str === void 0 ? void 0 : str.startsWith('https'))) { 23054 var suffix = str.replace(/^http:\/\//, ''); 23055 str = "https://".concat(suffix); 23056 } 23057 return str; 23058}; 23059var handleAuthUrl = function handleAuthUrl(url) { 23060 var _href = url; 23061 if (_href.indexOf('my.html') > -1 || _href.indexOf('mine') > -1) { 23062 _href = "/login.html?target=".concat(js_base64__WEBPACK_IMPORTED_MODULE_5__/* .Base64 */ .o4.encode(url)); 23063 } 23064 return _href; 23065}; 23066var isMobileFun = function isMobileFun() { 23067 return window.innerWidth < 700; 23068}; 23069var isTabletFun = function isTabletFun() { 23070 return window.innerWidth > 700 && window.innerWidth < 1200; 23071}; 23072var jumpMobileFun = function jumpMobileFun(_a) { 23073 var _b; 23074 var url = _a.url, 23075 _c = _a._back_url, 23076 _back_url = _c === void 0 ? window.location.href : _c, 23077 _source_url = _a._source_url, 23078 isLogin = _a.isLogin, 23079 _d = _a.shouldJump, 23080 shouldJump = _d === void 0 ? true : _d, 23081 _e = _a.openInNewTab, 23082 openInNewTab = _e === void 0 ? false : _e, 23083 _f = _a.noBackUrl, 23084 noBackUrl = _f === void 0 ? false : _f; 23085 var m_host = (_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('m-host'); 23086 if (!m_host || !url) { 23087 return shouldJump ? undefined : ''; 23088 } 23089 var m_url = "".concat(m_host).concat(url); 23090 if (isLogin) { 23091 if (shouldJump) { 23092 if (openInNewTab) { 23093 window.open("".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)), '_blank'); 23094 } else { 23095 window.location.href = "".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)); 23096 } 23097 return; 23098 } 23099 return "".concat(m_url).concat(noBackUrl ? '' : "".concat(url.includes('?') ? '&' : '?', "_back_url=").concat(_back_url)); 23100 } 23101 var loginUrl = "".concat(m_host, "/login-register?_source_url=").concat(_source_url || m_url).concat(noBackUrl ? '' : "&_back_url=".concat(_back_url)); 23102 if (shouldJump) { 23103 if (openInNewTab) { 23104 window.open(loginUrl, '_blank'); 23105 } else { 23106 window.location.href = loginUrl; 23107 } 23108 return; 23109 } 23110 return loginUrl; 23111}; 23112var originalStyles = { 23113 html: { 23114 overflow: '', 23115 position: '', 23116 top: '', 23117 width: '' 23118 }, 23119 body: { 23120 overflow: '', 23121 position: '', 23122 top: '', 23123 width: '' 23124 } 23125};
23126var isLocked = false; 23127var lockedScrollY = 0; 23128var lockBodyScroll = function lockBodyScroll() { 23129 if (isLocked) return; 23130 var html = document.documentElement; 23131 var body = document.body; 23132 originalStyles.html = { 23133 overflow: html.style.overflow, 23134 position: html.style.position, 23135 top: html.style.top, 23136 width: html.style.width 23137 }; 23138 originalStyles.body = { 23139 overflow: body.style.overflow, 23140 position: body.style.position, 23141 top: body.style.top, 23142 width: body.style.width 23143 }; 23144 lockedScrollY = window.scrollY || window.pageYOffset; 23145 html.style.overflow = 'hidden'; 23146 html.style.position = 'fixed'; 23147 html.style.top = "-".concat(lockedScrollY, "px"); 23148 html.style.width = '100%'; 23149 body.style.overflow = 'hidden'; 23150 body.style.position = 'fixed'; 23151 body.style.top = "-".concat(lockedScrollY, "px"); 23152 body.style.width = '100%'; 23153 if (/iPad|iPhone|iPod/.test(navigator.userAgent)) { 23154 body.style.position = 'fixed'; 23155 body.style.top = "-".concat(lockedScrollY, "px"); 23156 } 23157 isLocked = true; 23158}; 23159var unlockBodyScroll = function unlockBodyScroll() { 23160 if (!isLocked) return; 23161 var html = document.documentElement; 23162 var body = document.body; 23163 html.style.overflow = originalStyles.html.overflow; 23164 html.style.position = originalStyles.html.position; 23165 html.style.top = originalStyles.html.top; 23166 html.style.width = originalStyles.html.width; 23167 body.style.overflow = originalStyles.body.overflow; 23168 body.style.position = originalStyles.body.position; 23169 body.style.top = originalStyles.body.top; 23170 body.style.width = originalStyles.body.width; 23171 window.scrollTo(0, lockedScrollY); 23172 isLocked = false; 23173}; 23174var handleServiceItemClick = function handleServiceItemClick(service) { 23175 if (isMobileFun()) { 23176 if (service.isThirdLink) { 23177 if (service.openInNewTab) { 23178 window.open(service.mlink, '_blank'); 23179 } else { 23180 window.location.href = service.mlink; 23181 } 23182 return; 23183 } 23184 jumpMobileFun({ 23185 url: service.mlink, 23186 _back_url: window.location.href, 23187 isLogin: true, 23188 openInNewTab: service.openInNewTab 23189 }); 23190 return; 23191 } 23192 if (service.openInNewTab) { 23193 window.open(service.link, '_blank'); 23194 } else { 23195 window.location.href = service.link; 23196 } 23197}; 23198var removeLogin = function removeLogin() { 23199 var _a; 23200 (_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); 23201}; 23202function cartesian(arr) { 23203 if (arr.length < 2) return arr[0] || []; 23204 return [].reduce.call(arr, function (col, set) { 23205 var res = []; 23206 col.forEach(function (c) { 23207 set.forEach(function (s) { 23208 var t = [].concat(Array.isArray(c) ? c : [c]); 23209 t.push(s); 23210 res.push(t); 23211 }); 23212 }); 23213 return res; 23214 }); 23215} 23216var cookieGenerator = function cookieGenerator(cookie) { 23217 if (cookie === void 0) { 23218 cookie = {}; 23219 } 23220 var arr = Object.keys(cookie).filter(function (k) { 23221 return cookie[k]; 23222 }).map(function (k) { 23223 var v = cookie[k]; 23224 return "".concat(k, "=").concat(v); 23225 }); 23226 return arr.join(';'); 23227}; 23228var cookieParser = function cookieParser(cookie) { 23229 var r = null; 23230 if (!cookie) { 23231 return null; 23232 } 23233 try { 23234 var tmp = decodeURIComponent(cookie); 23235 var arr = tmp.split(';'); 23236 var obj_1 = {}; 23237 arr.forEach(function (_) { 23238 var t = _.split('='); 23239 obj_1[t[0]] = t[1]; 23240 }); 23241 r = obj_1; 23242 return r; 23243 } catch (error) { 23244 console.log('error', error); 23245 } 23246}; 23247var isPageType = function isPageType(_path) { 23248 var path = _path; 23249 switch (path) { 23250 case '/': 23251 path = '/home.html'; 23252 break; 23253 default: 23254 break; 23255 } 23256 return { 23257 isHome: ['/home.html'].includes(path) 23258 }; 23259}; 23260var toUnitShow = function toUnitShow(num) { 23261 if (isNaN(num) || !num || num == null || num <= 0) return 0; 23262 if (num < 1000) return num; 23263 if (num < 100000) return "".concat((num / 1000).toFixed(1), "K"); 23264 return "99K+"; 23265}; 23266var getProductHref = function getProductHref(id, name) { 23267 if (name === void 0) { 23268 name = ''; 23269 } 23270 function urlQueryFormat(url, encode) { 23271 if (url === void 0) { 23272 url = ''; 23273 } 23274 if (encode === void 0) { 23275 encode = true; 23276 } 23277 var _url = String(url); 23278 _url = _url.toLocaleLowerCase(); 23279 function _(reg, value) { 23280 if (value === void 0) { 23281 value = ''; 23282 } 23283 _url = _url.replace(reg, value); 23284 } 23285 _(/,/g); 23286 _(/( )?&/g); 23287 _(/'/g); 23288 _(/\?/g); 23289 _(/ /g, '-'); 23290 _url = encode ? encodeURIComponent(_url) : decodeURIComponent(_url); 23291 return _url; 23292 } 23293 return "/product/".concat(urlQueryFormat(name), "-p-").concat(id, ".html"); 23294}; 23295function priceFormat(price) { 23296 if (!price) return '0.00'; 23297 var _price = price.replace('--', '-'); 23298 var arr = _price.split('-'); 23299 if (arr.length == 1) { 23300 return "".concat(Number(arr[0]).toFixed(2)); 23301 } else { 23302 return "".concat(Number(arr[0]).toFixed(2), "-").concat(Number(arr[1]).toFixed(2)); 23303 } 23304} 23305function ratePrice(price, rate) { 23306 if (rate === void 0) { 23307 rate = 1; 23308 } 23309 var resultPrice = price * rate; 23310 return resultPrice.toFixed(2); 23311} 23312var joinVideoScreenUrl = function joinVideoScreenUrl(url, size) { 23313 if (size === void 0) { 23314 size = []; 23315 } 23316 var joinTemp = []; 23317 size[0] && joinTemp.push("w_".concat(size[0])); 23318 size[1] && joinTemp.push("h_".concat(size[1])); 23319 var joinStr = joinTemp.join(',');
23320 return "".concat(url, "?x-oss-process=video/snapshot,t_1,m_fast") + (joinStr ? ",".concat(joinStr) : ''); 23321}; 23322function isNodeExist(node) { 23323 if (!node) return false; 23324 return document.contains(node); 23325} 23326function isVip() { 23327 return loginInfoController.info('vip') == '1' && document.body.classList.contains('vip'); 23328} 23329function goLogin(url) { 23330 if (url === void 0) { 23331 url = ''; 23332 } 23333 var goUrl = url; 23334 if (!goUrl) { 23335 goUrl = location.origin + location.pathname + '?' + location.search; 23336 } 23337 location.href = '/login.html?target=' + Base64.encode(goUrl); 23338} 23339function uniqueArr(arr, key) { 23340 if (key === void 0) { 23341 key = ''; 23342 } 23343 var res = new Map(); 23344 return arr.filter(function (a) { 23345 var _key = key ? a[key] : a; 23346 return !res.has(_key) && res.set(_key, 1); 23347 }); 23348} 23349function isInViewport(el, offsetHeight) { 23350 if (offsetHeight === void 0) { 23351 offsetHeight = 0; 23352 } 23353 if (!el) return true; 23354 var rect = el.getBoundingClientRect(); 23355 return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) - offsetHeight && rect.right <= (window.innerWidth || document.documentElement.clientWidth); 23356} 23357function isSafeUser(SHOWMESSAGE, token) { 23358 var _a; 23359 if (SHOWMESSAGE === void 0) { 23360 SHOWMESSAGE = ''; 23361 } 23362 if (token === void 0) { 23363 token = ''; 23364 } 23365 if (typeof window !== 'undefined') { 23366 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'); 23367 } 23368 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('S')) > -1 && !!token; 23369} 23370var noReplaceUrl = ['/order-center/proxyOrder/saveOrder/excelImportOrder', '/order-center/proxyOrder/saveOrder/excelImportOrderV2', '/order-center/proxyOrder/saveOrder/excelImportOrderV3', '/order-center/proxyOrder/saveOrder/excelImportOrderV4']; 23371function useVipPrefix(_a) { 23372 var _b; 23373 var _c = _a === void 0 ? {} : _a, 23374 _d = _c.SHOWMESSAGE, 23375 SHOWMESSAGE = _d === void 0 ? '' : _d, 23376 _e = _c.token, 23377 token = _e === void 0 ? '' : _e, 23378 _f = _c.url, 23379 url = _f === void 0 ? '' : _f; 23380 if (!url || url.startsWith('http')) return url; 23381 var hasPreLine = url === null || url === void 0 ? void 0 : url.startsWith('/'); 23382 var diagonalLineUrl = hasPreLine ? url : "/".concat(url); 23383 if (noReplaceUrl.some(function (u) { 23384 return u === diagonalLineUrl; 23385 })) return url; 23386 var prefix = (_b = diagonalLineUrl === null || diagonalLineUrl === void 0 ? void 0 : diagonalLineUrl.split('/')) === null || _b === void 0 ? void 0 : _b[1]; 23387 var _g = _replace_prefix_for_api__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .A[prefix] || {}, 23388 normalPrefix = _g.normal, 23389 vipPrefix = _g.vip; 23390 var _SHOWMESSAGE = SHOWMESSAGE; 23391 var _token = token; 23392 if (typeof window !== 'undefined') { 23393 _SHOWMESSAGE = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('SHOWMESSAGE') || ''; 23394 _token = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('token') || ''; 23395 } 23396 var needReplace = (_SHOWMESSAGE === null || _SHOWMESSAGE === void 0 ? void 0 : _SHOWMESSAGE.indexOf('V')) > -1 && !!_token; 23397 if (needReplace && vipPrefix) return url.replace("".concat(prefix), "".concat(vipPrefix)); 23398 if (normalPrefix) return url.replace("".concat(prefix), "".concat(normalPrefix)); 23399 return url; 23400} 23401function isMobile(ctx) { 23402 var _a; 23403 if (ctx === void 0) { 23404 ctx = null; 23405 } 23406 if (ctx) { 23407 var ua = ((_a = ctx === null || ctx === void 0 ? void 0 : ctx.req) === null || _a === void 0 ? void 0 : _a.headers['user-agent']) || ''; 23408 return /Mobile|mobile|android|iphone|ipod|phone|blackberry|windows phone|ipad/i.test(ua); 23409 } 23410 if (typeof window === 'undefined') return false; 23411 return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); 23412} 23413function isShowNewInventory(SHOWMESSAGE) { 23414 var _a, _b; 23415 if (SHOWMESSAGE === void 0) { 23416 SHOWMESSAGE = ''; 23417 } 23418 if (typeof window !== 'undefined') { 23419 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; 23420 } 23421 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) > -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) === -1; 23422} 23423function isOldNewInventory(SHOWMESSAGE) { 23424 var _a, _b; 23425 if (SHOWMESSAGE === void 0) { 23426 SHOWMESSAGE = ''; 23427 } 23428 if (typeof window !== 'undefined') { 23429 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; 23430 } 23431 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) > -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) > -1; 23432} 23433function isOldInventory(SHOWMESSAGE) { 23434 var _a, _b; 23435 if (SHOWMESSAGE === void 0) { 23436 SHOWMESSAGE = ''; 23437 } 23438 if (typeof window !== 'undefined') { 23439 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; 23440 } 23441 return (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('K')) === -1 && (SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('k')) > -1; 23442}
23443var parseSize = function parseSize(targetSize, size) { 23444 var t_width = targetSize[0], 23445 t_height = targetSize[1]; 23446 var width = size[0], 23447 height = size[1]; 23448 var newWidth = 0, 23449 newHeight = 0; 23450 var targetRatio = t_width / t_height; 23451 var ratio = width / height; 23452 if (targetRatio > ratio) { 23453 newWidth = ratio * t_height; 23454 newHeight = t_height; 23455 } else { 23456 newWidth = t_width; 23457 newHeight = t_width / ratio; 23458 } 23459 return [parseInt(newWidth + ''), parseInt(newHeight + '')]; 23460}; 23461function getVideoScreen(url, size) { 23462 if (size === void 0) { 23463 size = [200, 200]; 23464 } 23465 var _a = parseSize(size, [200, 200]), 23466 width = _a[0], 23467 height = _a[1]; 23468 return new Promise(function (resolve) { 23469 var video = document.createElement('video'); 23470 video.crossOrigin = 'anonymous'; 23471 video.src = url; 23472 video.width = width; 23473 video.height = height; 23474 video.preload = 'auto'; 23475 video.currentTime = 2; 23476 video.onloadeddata = function () { 23477 var canvas = document.createElement('canvas'); 23478 var t_w = size[0]; 23479 var t_h = size[1]; 23480 canvas.width = t_w; 23481 canvas.height = t_h; 23482 var x = 0; 23483 var y = 0; 23484 if (t_w === width) { 23485 y = (t_h - height) / 2; 23486 } else { 23487 x = (t_w - width) / 2; 23488 } 23489 var ctx = canvas.getContext('2d'); 23490 ctx.drawImage(video, x, y, canvas.width, canvas.height); 23491 ctx.fillStyle = '#000'; 23492 var fileType = 'image/jpeg'; 23493 var base64Url = canvas.toDataURL(fileType); 23494 resolve(base64Url); 23495 }; 23496 }); 23497} 23498function is1688(_siteCheck) { 23499 var siteCheck = _siteCheck !== null && _siteCheck !== void 0 ? _siteCheck : window === null || window === void 0 ? void 0 : window.siteCheck; 23500 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')); 23501} 23502function getSecureSameSiteCookiesOptions() { 23503 var cookieOptions = {}; 23504 if (false) // removed by dead control flow 23505{} 23506 cookieOptions.secure = true; 23507 cookieOptions.sameSite = 'None'; 23508 return cookieOptions; 23509} 23510function isSku(value) { 23511 var regSKU = /^[A-Za-z]{4}[A-Za-z0-9]*[0-9]{2}[A-Za-z]{2}$/; 23512 var regOldSKU = /^CJ[0-9A-Za-z]{3,11}-[0-9A-Za-z+]+.*$/; 23513 var packageSKU = /^BZ[0-9A-Za-z]{3,11}-[0-9A-Za-z+]+.*$/; 23514 return regSKU.test(value) || regOldSKU.test(value) || packageSKU.test(value); 23515} 23516function setSearchSku(value) { 23517 if (value === void 0) { 23518 value = ''; 23519 } 23520 if (value && isSku(value)) { 23521 Cookies.set('searchSku', value); 23522 } else { 23523 Cookies.remove('searchSku'); 23524 } 23525} 23526function isShowNewFeatures() { 23527 var maxNewTime = new Date('2025/5/20').getTime(); 23528 var cacheNew = _cookies_refact__WEBPACK_IMPORTED_MODULE_0__/* .Cookies */ .W.get('view-cogs'); 23529 var isShowNew = new Date().getTime() < maxNewTime && !cacheNew; 23530 return isShowNew; 23531} 23532function getVolume(_long, width, height, number) { 23533 _long = parseFloat(_long) || 0; 23534 width = parseFloat(width) || 0; 23535 height = parseFloat(height) || 0; 23536 number = parseInt(number) || 0; 23537 return _long * width * height * number; 23538} 23539function getStandard(name, content) { 23540 var reg = RegExp(name + '=(\\d+)', 'gi'); 23541 var result = reg.exec(content); 23542 return Array.isArray(result) ? parseInt(result[1]) / 10 : null; 23543} 23544function qsImageHostChange(url) { 23545 return url.replace(/https:\/\/oss-cf.cjdropshipping.com/g, 'https://oss-cf.yesourcing.com'); 23546} 23547function httpsOptionsConfig() { 23548 if (typeof window !== 'undefined' && location.href.includes('offline.pre')) { 23549 return {}; 23550 } 23551 return { 23552 secure: true, 23553 sameSite: 'None' 23554 }; 23555} 23556function goSupplierShopPage(shopId, domainName, siteName, openInNewTab) { 23557 if (siteName === void 0) { 23558 siteName = 'cj'; 23559 } 23560 if (openInNewTab === void 0) { 23561 openInNewTab = false; 23562 } 23563 var host = {"qs":"https://shop.qksource.com","cj":"https://shop.cjdropshipping.com"}[siteName]; 23564 if (domainName) { 23565 var hasDev = /dev-/.test(host); 23566 host = host.replace(/(dev-)?shop/i, (hasDev ? 'dev-' : '') + domainName); 23567 if (openInNewTab) { 23568 window.open(host, '_blank'); 23569 } else { 23570 location.href = host; 23571 } 23572 return; 23573 } 23574 if (openInNewTab) { 23575 window.open("/seller/".concat(shopId), '_blank'); 23576 } else { 23577 location.href = "/seller/".concat(shopId); 23578 } 23579} 23580 23581/***/ }), 23582 23583/***/ 81943: 23584/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23585 23586"use strict"; 23587/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23588/* harmony export */ Ay: () => (__WEBPACK_DEFAULT_EXPORT__), 23589/* harmony export */ DD: () => (/* binding */ menuPath), 23590/* harmony export */ T_: () => (/* binding */ menus), 23591/* harmony export */ Yn: () => (/* binding */ getPath) 23592/* harmony export */ }); 23593/* unused harmony export menuNames */ 23594/* harmony import */ var _common_platform_show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37597); 23595var __assign = undefined && undefined.__assign || function () { 23596 __assign = Object.assign || function (t) { 23597 for (var s, i = 1, n = arguments.length; i < n; i++) { 23598 s = arguments[i]; 23599 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 23600 } 23601 return t; 23602 }; 23603 return __assign.apply(this, arguments); 23604}; 23605var _a; 23606 23607var menus = [{ 23608 name: 'Catalog', 23609 nameTrans: function nameTrans() { 23610 return "".concat(window.i18next.t("common-mycj-menu-catalog", 'Catalog')); 23611 }, 23612 iconclass: 'Catalog', 23613 active: true, 23614 childs: [], 23615 route: '/list/wholesale-all-categories-l-all.html' 23616}, { 23617 name: 'Products', 23618 nameTrans: function nameTrans() { 23619 return "".concat(window.i18next.t("common-mycj-menu-products", 'Products')); 23620 }, 23621 iconclass: 'Products', 23622 active: false,
23623 code: 'mycj_products', 23624 childs: [{ 23625 name: 'My Products', 23626 nameTrans: function nameTrans() { 23627 return "".concat(window.i18next.t("common-mycj-menu-my-products", 'My Products')); 23628 }, 23629 code: 'mycj_my_products', 23630 route: '/mine/myQuotation', 23631 active: false 23632 }, { 23633 name: 'My Upsell', 23634 nameTrans: function nameTrans() { 23635 return "".concat(window.i18next.t("common-mycj-menu-my-upsell", 'My Upsell')); 23636 }, 23637 code: 'mycj_my_upsell', 23638 route: '/mine/myUpsell', 23639 active: false 23640 }, { 23641 name: 'Store Products', 23642 nameTrans: function nameTrans() { 23643 return "".concat(window.i18next.t("common-mycj-menu-store-products", 'Store Products')); 23644 }, 23645 code: 'mycj_store_products', 23646 route: '/mine/products/connection', 23647 active: false, 23648 tip: function tip() { 23649 return window.i18next.t("common-mycj-menu-store-products-tip"); 23650 } 23651 }] 23652}, { 23653 name: 'Orders', 23654 nameTrans: function nameTrans() { 23655 return "".concat(window.i18next.t("common-mycj-menu-orders", 'Orders')); 23656 }, 23657 iconclass: 'Orders1', 23658 active: false, 23659 code: 'mycj_orders', 23660 childs: [{ 23661 name: 'Store Orders', 23662 nameTrans: function nameTrans() { 23663 return "".concat(window.i18next.t("common-mycj-menu-store-orders", 'Store Orders')); 23664 }, 23665 active: false, 23666 code: 'mycj_store_orders', 23667 route: '/mine/dropshipping/zestyOrder' 23668 }, { 23669 name: 'Disputes', 23670 nameTrans: function nameTrans() { 23671 return "".concat(window.i18next.t("common-mycj-menu-disputes", 'Disputes')); 23672 }, 23673 code: 'mycj_disputes', 23674 route: '/mine/dispute/list', 23675 active: false 23676 }, { 23677 name: 'Undelivered Orders', 23678 nameTrans: function nameTrans() { 23679 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders", 'Undelivered Orders')); 23680 }, 23681 code: 'mycj_undelivered_orders', 23682 route: '/mine/undeliveredOrder', 23683 active: false 23684 }] 23685}, { 23686 name: 'Tracking', 23687 nameTrans: function nameTrans() { 23688 return "".concat(window.i18next.t("common-mycj-menu-tracking", 'Tracking')); 23689 }, 23690 iconclass: 'Tracking', 23691 active: false, 23692 code: 'mycj_tracking', 23693 childs: [{ 23694 name: 'Tracking List', 23695 nameTrans: function nameTrans() { 23696 return "".concat(window.i18next.t("common-mycj-menu-tracking-list", 'Tracking List')); 23697 }, 23698 active: false, 23699 code: 'mycj_tracking', 23700 route: '/mine/tracking' 23701 }, { 23702 name: 'Tracking Changes', 23703 nameTrans: function nameTrans() { 23704 return "".concat(window.i18next.t("common-mycj-menu-tracking-changes", 'Tracking Changes')); 23705 }, 23706 active: false, 23707 code: 'mycj_tracking_changes', 23708 route: '/mine/tracking/changes' 23709 }] 23710}, { 23711 name: 'Authorization', 23712 nameTrans: function nameTrans() { 23713 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 23714 }, 23715 iconclass: 'Authorization', 23716 active: false, 23717 special: true, 23718 code: 'mycj_authorization', 23719 childs: [__assign(__assign({}, _common_platform_show__WEBPACK_IMPORTED_MODULE_0__/* .PLATFORM */ .i9.api), { 23720 nameTrans: function nameTrans() { 23721 return "".concat(window.i18next.t("common-mycj-menu-api")); 23722 }, 23723 version: 2, 23724 type: 'authorize', 23725 active: false 23726 })] 23727}, { 23728 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'))), 23729 nameVal: "My CJ", 23730 nameTrans: function nameTrans() { 23731 var _a; 23732 return window.i18next.t("common-mycj-my-site", { 23733 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('full-name') 23734 }); 23735 }, 23736 iconclass: 'a-MyCJZesty', 23737 active: false, 23738 childs: [{ 23739 name: 'Dashboard', 23740 nameTrans: function nameTrans() { 23741 return "".concat(window.i18next.t("common-mycj-menu-dashboard", 'Dashboard')); 23742 }, 23743 code: 'mycj_dashboard', 23744 route: '/mine/zestyDashboard', 23745 active: false 23746 }, { 23747 name: 'Profile', 23748 nameTrans: function nameTrans() { 23749 return "".concat(window.i18next.t("common-mycj-menu-profile")); 23750 }, 23751 code: 'mycj_profile', 23752 route: '/my.html#/profile/info', 23753 active: false 23754 }, { 23755 name: 'Wallet', 23756 nameTrans: function nameTrans() { 23757 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 23758 }, 23759 code: 'mycj_wallet', 23760 route: '/mine/wallet', 23761 active: false 23762 }, { 23763 name: 'Ticket', 23764 nameTrans: function nameTrans() { 23765 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 23766 }, 23767 code: 'mycj_ticket', 23768 route: '/mine/ticket', 23769 active: false 23770 }, { 23771 name: 'Sub-account', 23772 nameTrans: function nameTrans() { 23773 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 23774 }, 23775 code: 'mycj_sub_account', 23776 route: '/my.html#/accountManage', 23777 active: false 23778 }, { 23779 name: 'Export List', 23780 nameTrans: function nameTrans() { 23781 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 23782 }, 23783 iconclass: 'liwuicon_', 23784 code: 'mycj_export_list', 23785 route: '/mine/exportList', 23786 active: false 23787 }, { 23788 name: 'Warehouse Operation Video', 23789 nameTrans: function nameTrans() { 23790 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 23791 }, 23792 code: 'mycj_order-video', 23793 route: '/mine/orderVideo', 23794 active: false 23795 }] 23796}]; 23797var menuPath = {}; 23798var menuNames = {}; 23799function loops(list, parent) { 23800 return (list || []).map(function (_a) { 23801 var route = _a.route, 23802 childs = _a.childs, 23803 name = _a.name, 23804 version = _a.version; 23805 var _route = route; 23806 var node = menuNames[name] = menuPath[_route] = { 23807 parent: parent, 23808 name: name, 23809 version: version, 23810 route: _route 23811 }; 23812 node['childs'] = loops(childs, node); 23813 return node; 23814 }); 23815} 23816function getPath(name) { 23817 var obj = menuNames[name]; 23818 var arr = []; 23819 while (obj && obj.name) { 23820 if (obj.childs && obj.childs[0]) { 23821 arr.push(obj.name); 23822 } else { 23823 arr.push(obj.name); 23824 } 23825 if (!obj.parent) break; 23826 obj = obj.parent; 23827 } 23828 return arr; 23829} 23830loops(menus, null); 23831var createAuthTree = function createAuthTree() { 23832 var authMapByRoute = []; 23833 var _fun = function fun(list) { 23834 return list.map(function (l) { 23835 if (l.route && l.code) authMapByRoute.push({ 23836 name: l.name, 23837 code: l.code, 23838 route: l.route 23839 }); 23840 return { 23841 name: l.name, 23842 code: l.code, 23843 route: l.route, 23844 children: l.childs && _fun(l.childs) 23845 }; 23846 }); 23847 };
23848 return [_fun(menus), authMapByRoute]; 23849}; 23850/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createAuthTree); 23851 23852/***/ }), 23853 23854/***/ 82058: 23855/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23856 23857"use strict"; 23858/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23859/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23860/* harmony export */ }); 23861/* harmony import */ var _components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44148); 23862 23863/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function () { 23864 var siteCheck = (0,_components_CjHeader_contexts_PropsContext__WEBPACK_IMPORTED_MODULE_0__/* .useGlobalProps */ .v)().siteCheck; 23865 return siteCheck; 23866}); 23867 23868/***/ }), 23869 23870/***/ 84238: 23871/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23872 23873"use strict"; 23874/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23875/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23876/* harmony export */ }); 23877/* unused harmony export useLayoutUpdateEffect */ 23878/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 23879/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23880/* harmony import */ var _Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47169); 23881 23882 23883 23884/** 23885 * Wrap `React.useLayoutEffect` which will not throw warning message in test env 23886 */ 23887var useInternalLayoutEffect = true && (0,_Dom_canUseDom__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)() ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect; 23888var useLayoutEffect = function useLayoutEffect(callback, deps) { 23889 var firstMountRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(true); 23890 useInternalLayoutEffect(function () { 23891 return callback(firstMountRef.current); 23892 }, deps); 23893 23894 // We tell react that first mount has passed 23895 useInternalLayoutEffect(function () { 23896 firstMountRef.current = false; 23897 return function () { 23898 firstMountRef.current = true; 23899 }; 23900 }, []); 23901}; 23902var useLayoutUpdateEffect = function useLayoutUpdateEffect(callback, deps) { 23903 useLayoutEffect(function (firstMount) { 23904 if (!firstMount) { 23905 return callback(); 23906 } 23907 }, deps); 23908}; 23909/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useLayoutEffect); 23910 23911/***/ }), 23912 23913/***/ 84266: 23914/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 23915 23916"use strict"; 23917/* harmony export */ __webpack_require__.d(__webpack_exports__, { 23918/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 23919/* harmony export */ }); 23920/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 23921 shopify: { 23922 Title: 'Shopify', 23923 value: 'shopify', 23924 otherValue: [], 23925 isAuthor: true, 23926 isShow: true 23927 }, 23928 wed2c: { 23929 Title: 'WED2C', 23930 value: 'wed2c', 23931 otherValue: [], 23932 isAuthor: true, 23933 isShow: true 23934 }, 23935 temu: { 23936 Title: 'Temu', 23937 value: 'temu', 23938 otherValue: [], 23939 isAuthor: true, 23940 isShow: true 23941 }, 23942 temu_us_local: { 23943 Title: 'Temu US Local', 23944 value: 'temu_us_local', 23945 otherValue: [], 23946 isAuthor: true, 23947 isShow: true 23948 }, 23949 temu_certified_overseas: { 23950 Title: 'Temu Cooperative Warehouse', 23951 value: 'temu_certified_overseas', 23952 otherValue: [], 23953 isAuthor: true, 23954 isShow: true 23955 }, 23956 shein: { 23957 Title: 'Shein', 23958 value: 'shein', 23959 otherValue: [], 23960 isAuthor: true, 23961 isShow: true 23962 }, 23963 tiktok: { 23964 Title: 'TikTok', 23965 value: 'tikTok', 23966 otherValue: [], 23967 isAuthor: true, 23968 isShow: true 23969 }, 23970 tiktok_us: { 23971 Title: 'TikTok_US', 23972 value: 'TikTok_US', 23973 otherValue: [], 23974 isAuthor: true, 23975 isShow: true 23976 }, 23977 tiktok_us_cross: { 23978 Title: 'TikTok_US_Cross', 23979 value: 'TikTok_US_Cross', 23980 otherValue: [], 23981 isAuthor: true, 23982 isShow: true 23983 }, 23984 woocommerce: { 23985 Title: 'Woocommerce', 23986 value: 'woocommerce', 23987 otherValue: [], 23988 isAuthor: true, 23989 isShow: true 23990 }, 23991 ebay: { 23992 Title: 'Ebay', 23993 value: 'ebay', 23994 otherValue: [], 23995 isAuthor: true, 23996 isShow: true 23997 }, 23998 api: { 23999 Title: 'API', 24000 value: 'api', 24001 otherValue: ['CJ API', 'cj api'], 24002 isAuthor: true, 24003 isShow: true 24004 }, 24005 etsy: { 24006 Title: 'Etsy', 24007 value: 'etsy', 24008 otherValue: [], 24009 isAuthor: true, 24010 isShow: true 24011 }, 24012 aliexpress: { 24013 Title: 'AliExpress', 24014 value: 'aliexpress', 24015 otherValue: [], 24016 isAuthor: true, 24017 isShow: true 24018 }, 24019 wix: { 24020 Title: 'Wix', 24021 value: 'wix', 24022 otherValue: [], 24023 isAuthor: true, 24024 isShow: true 24025 }, 24026 lazada: { 24027 Title: 'Lazada', 24028 value: 'lazada', 24029 otherValue: [], 24030 isAuthor: false, 24031 isShow: false 24032 }, 24033 shopee: { 24034 Title: 'Shopee', 24035 value: 'shopee', 24036 otherValue: [], 24037 isAuthor: false, 24038 isShow: false 24039 }, 24040 squarespace: { 24041 Title: 'Squarespace', 24042 value: 'squarespace', 24043 otherValue: [], 24044 isAuthor: true, 24045 isShow: true 24046 }, 24047 shoplazza: { 24048 Title: 'Shoplazza', 24049 value: 'shoplazza', 24050 otherValue: [], 24051 isAuthor: true, 24052 isShow: true 24053 }, 24054 magento: { 24055 Title: 'Magento', 24056 value: 'magento', 24057 otherValue: [], 24058 isAuthor: true, 24059 isShow: true 24060 }, 24061 bigcommerce: { 24062 Title: 'Bigcommerce', 24063 value: 'bigcommerce', 24064 otherValue: [], 24065 isAuthor: true, 24066 isShow: true 24067 }, 24068 prestashop: { 24069 Title: 'PrestaShop', 24070 value: 'prestaShop', 24071 otherValue: [], 24072 isAuthor: true, 24073 isShow: true 24074 }, 24075 allvalue: { 24076 Title: 'AllValue', 24077 value: 'allValue', 24078 otherValue: [], 24079 isAuthor: true, 24080 isShow: true 24081 }, 24082 nuvemshop: { 24083 Title: 'Nuvemshop', 24084 value: 'nuvemshop', 24085 otherValue: [], 24086 isAuthor: false, 24087 isShow: false 24088 }, 24089 shipstation: { 24090 Title: 'Shipstation', 24091 value: 'shipstation', 24092 otherValue: [], 24093 isAuthor: true, 24094 isShow: true 24095 }, 24096 mercado: { 24097 Title: 'Mercado', 24098 value: 'mercado', 24099 otherValue: [], 24100 isAuthor: true, 24101 isShow: true 24102 }, 24103 others: { 24104 Title: 'Others', 24105 value: 'others', 24106 otherValue: [], 24107 isAuthor: false, 24108 isShow: false 24109 }, 24110 mabang: { 24111 Title: 'MabangERP', 24112 value: 'mabang', 24113 otherValue: [], 24114 isAuthor: true, 24115 isShow: true 24116 }, 24117 miaoshou: { 24118 Title: '妿ERP', 24119 value: 'miaoshou', 24120 otherValue: [], 24121 isAuthor: true, 24122 isShow: true 24123 } 24124}); 24125 24126/***/ }), 24127 24128/***/ 84445: 24129/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24130 24131"use strict"; 24132/* unused harmony exports preMessage, warning, note, resetWarned, call, warningOnce, noteOnce */ 24133/* eslint-disable no-console */ 24134var warned = {}; 24135var preWarningFns = []; 24136 24137/** 24138 * Pre warning enable you to parse content before console.error. 24139 * Modify to null will prevent warning. 24140 */ 24141var preMessage = function preMessage(fn) { 24142 preWarningFns.push(fn); 24143}; 24144 24145/** 24146 * Warning if condition not match. 24147 * @param valid Condition 24148 * @param message Warning message 24149 * @example 24150 * ```js 24151 * warning(false, 'some error'); // print some error 24152 * warning(true, 'some error'); // print nothing 24153 * warning(1 === 2, 'some error'); // print some error 24154 * ``` 24155 */ 24156function warning(valid, message) { 24157 if (false) // removed by dead control flow
24158{ var finalMessage; } 24159} 24160 24161/** @see Similar to {@link warning} */ 24162function note(valid, message) { 24163 if (false) // removed by dead control flow 24164{ var finalMessage; } 24165} 24166function resetWarned() { 24167 warned = {}; 24168} 24169function call(method, valid, message) { 24170 if (!valid && !warned[message]) { 24171 method(false, message); 24172 warned[message] = true; 24173 } 24174} 24175 24176/** @see Same as {@link warning}, but only warn once for the same message */ 24177function warningOnce(valid, message) { 24178 call(warning, valid, message); 24179} 24180 24181/** @see Same as {@link warning}, but only warn once for the same message */ 24182function noteOnce(valid, message) { 24183 call(note, valid, message); 24184} 24185warningOnce.preMessage = preMessage; 24186warningOnce.resetWarned = resetWarned; 24187warningOnce.noteOnce = noteOnce; 24188/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (warningOnce))); 24189 24190/***/ }), 24191 24192/***/ 84873: 24193/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24194 24195"use strict"; 24196/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24197/* harmony export */ W: () => (/* reexport safe */ js_cookie__WEBPACK_IMPORTED_MODULE_0__.A) 24198/* harmony export */ }); 24199/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3478); 24200/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81002); 24201var __assign = undefined && undefined.__assign || function () { 24202 __assign = Object.assign || function (t) { 24203 for (var s, i = 1, n = arguments.length; i < n; i++) { 24204 s = arguments[i]; 24205 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 24206 } 24207 return t; 24208 }; 24209 return __assign.apply(this, arguments); 24210}; 24211 24212 24213js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set = function (set) { 24214 return function (key, value, options) { 24215 if (options === void 0) { 24216 options = {}; 24217 } 24218 var _options = __assign({ 24219 path: '/', 24220 domain: (0,___WEBPACK_IMPORTED_MODULE_1__/* .getTopDomain */ .SR)(), 24221 expires: 3 24222 }, options); 24223 return set.apply(this, [key, value, _options]); 24224 }; 24225}(js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.set); 24226js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.remove = function (remove) { 24227 return function (key, options) { 24228 if (options === void 0) { 24229 options = {}; 24230 } 24231 var _options = __assign({ 24232 path: '/', 24233 domain: (0,___WEBPACK_IMPORTED_MODULE_1__/* .getTopDomain */ .SR)(), 24234 expires: -1 24235 }, options); 24236 return remove.apply(this, [key, _options]); 24237 }; 24238}(js_cookie__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.remove); 24239 24240 24241/***/ }), 24242 24243/***/ 84963: 24244/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24245 24246"use strict"; 24247/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24248/* harmony export */ F: () => (/* binding */ cjHref) 24249/* harmony export */ }); 24250/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81002); 24251 24252var cjHref = function cjHref(href, host) { 24253 var _a; 24254 if (href.indexOf('http') > -1 || href == '#') return href; 24255 var domain = host ? (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .getTopDomain */ .SR)(host) : (0,_common__WEBPACK_IMPORTED_MODULE_0__/* .getTopDomain */ .SR)(); 24256 var cjTestDomain = 'http://www.cjdropshipping.offline.pre.com'; 24257 var todo = { 24258 localhost: cjTestDomain, 24259 '.pre.com': cjTestDomain, 24260 '.pre.cn': cjTestDomain, 24261 '.cjdropshipping.com': 'https://www.cjdropshipping.com', 24262 '.cjdropshipping.cn': 'https://app.cjdropshipping.cn', 24263 '.cj.com': cjTestDomain 24264 }; 24265 if (domain.indexOf('localhost') > -1) domain = 'localhost'; 24266 var centerText = '/'; 24267 if (href.startsWith('/')) centerText = ''; 24268 return ((_a = todo[domain]) !== null && _a !== void 0 ? _a : '') + centerText + href; 24269}; 24270 24271/***/ }), 24272 24273/***/ 85086: 24274/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24275 24276"use strict"; 24277/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24278/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24279/* harmony export */ }); 24280/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15442); 24281/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24282 24283var TriggerContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null); 24284/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TriggerContext); 24285 24286/***/ }), 24287 24288/***/ 86284: 24289/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24290 24291"use strict"; 24292/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24293/* harmony export */ A: () => (/* binding */ _arrayLikeToArray) 24294/* harmony export */ }); 24295function _arrayLikeToArray(r, a) { 24296 (null == a || a > r.length) && (a = r.length); 24297 for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; 24298 return n; 24299} 24300 24301 24302/***/ }), 24303 24304/***/ 86403: 24305/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 24306 24307var trimmedEndIndex = __webpack_require__(62945); 24308 24309/** Used to match leading whitespace. */ 24310var reTrimStart = /^\s+/; 24311 24312/** 24313 * The base implementation of `_.trim`. 24314 * 24315 * @private 24316 * @param {string} string The string to trim. 24317 * @returns {string} Returns the trimmed string. 24318 */ 24319function baseTrim(string) { 24320 return string
24321 ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') 24322 : string; 24323} 24324 24325module.exports = baseTrim; 24326 24327 24328/***/ }), 24329 24330/***/ 86488: 24331/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24332 24333"use strict"; 24334/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24335/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24336/* harmony export */ }); 24337/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23294); 24338/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(93607); 24339 24340 24341 24342/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_Tooltip__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A); 24343 24344/***/ }), 24345 24346/***/ 86597: 24347/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24348 24349"use strict"; 24350/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24351/* harmony export */ A: () => (/* binding */ useSyncState) 24352/* harmony export */ }); 24353/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79082); 24354/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24355/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24356/* harmony import */ var _useEvent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9449); 24357 24358 24359 24360/** 24361 * Same as React.useState but will always get latest state. 24362 * This is useful when React merge multiple state updates into one. 24363 * e.g. onTransitionEnd trigger multiple event at once will be merged state update in React. 24364 */ 24365function useSyncState(defaultValue) { 24366 var _React$useReducer = react__WEBPACK_IMPORTED_MODULE_1__.useReducer(function (x) { 24367 return x + 1; 24368 }, 0), 24369 _React$useReducer2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(_React$useReducer, 2), 24370 forceUpdate = _React$useReducer2[1]; 24371 var currentValueRef = react__WEBPACK_IMPORTED_MODULE_1__.useRef(defaultValue); 24372 var getValue = (0,_useEvent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(function () { 24373 return currentValueRef.current; 24374 }); 24375 var setValue = (0,_useEvent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(function (updater) { 24376 currentValueRef.current = typeof updater === 'function' ? updater(currentValueRef.current) : updater; 24377 forceUpdate(); 24378 }); 24379 return [getValue, setValue]; 24380} 24381 24382/***/ }), 24383 24384/***/ 87379: 24385/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 24386 24387var Symbol = __webpack_require__(65650), 24388 getRawTag = __webpack_require__(8870), 24389 objectToString = __webpack_require__(29005); 24390 24391/** `Object#toString` result references. */ 24392var nullTag = '[object Null]', 24393 undefinedTag = '[object Undefined]'; 24394 24395/** Built-in value references. */ 24396var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 24397 24398/** 24399 * The base implementation of `getTag` without fallbacks for buggy environments. 24400 * 24401 * @private 24402 * @param {*} value The value to query. 24403 * @returns {string} Returns the `toStringTag`. 24404 */ 24405function baseGetTag(value) { 24406 if (value == null) { 24407 return value === undefined ? undefinedTag : nullTag; 24408 } 24409 return (symToStringTag && symToStringTag in Object(value)) 24410 ? getRawTag(value) 24411 : objectToString(value); 24412} 24413 24414module.exports = baseGetTag; 24415 24416 24417/***/ }), 24418 24419/***/ 89575: 24420/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24421 24422"use strict"; 24423/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24424/* harmony export */ A: () => (/* binding */ _extends) 24425/* harmony export */ }); 24426function _extends() { 24427 return _extends = Object.assign ? Object.assign.bind() : function (n) { 24428 for (var e = 1; e < arguments.length; e++) { 24429 var t = arguments[e]; 24430 for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); 24431 } 24432 return n; 24433 }, _extends.apply(null, arguments); 24434} 24435 24436 24437/***/ }), 24438 24439/***/ 89614: 24440/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24441 24442"use strict"; 24443/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24444/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 24445/* harmony export */ }); 24446/* unused harmony export genCSSMotion */ 24447/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24586); 24448/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 24449/* harmony import */ var _babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(79082); 24450/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17545); 24451/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 24452/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 24453/* harmony import */ var rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28299); 24454/* harmony import */ var rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(19284); 24455/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15442); 24456/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__); 24457/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(74568); 24458/* harmony import */ var _DomWrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(40484); 24459/* harmony import */ var _hooks_useStatus__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(76293); 24460/* harmony import */ var _hooks_useStepQueue__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(78422); 24461/* harmony import */ var _interface__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(45480); 24462/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(73688); 24463 24464 24465 24466 24467/* eslint-disable react/default-props-match-prop-types, react/no-multi-comp, react/prop-types */ 24468 24469 24470 24471 24472 24473 24474 24475 24476 24477 24478 24479/** 24480 * `transitionSupport` is used for none transition test case. 24481 * Default we use browser transition event support check. 24482 */ 24483function genCSSMotion(config) { 24484 var transitionSupport = config; 24485 if ((0,_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .A)(config) === 'object') { 24486 transitionSupport = config.transitionSupport; 24487 } 24488 function isSupportTransition(props, contextMotion) { 24489 return !!(props.motionName && transitionSupport && contextMotion !== false); 24490 } 24491 var CSSMotion = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.forwardRef(function (props, ref) { 24492 var _props$visible = props.visible, 24493 visible = _props$visible === void 0 ? true : _props$visible, 24494 _props$removeOnLeave = props.removeOnLeave, 24495 removeOnLeave = _props$removeOnLeave === void 0 ? true : _props$removeOnLeave, 24496 forceRender = props.forceRender, 24497 children = props.children, 24498 motionName = props.motionName, 24499 leavedClassName = props.leavedClassName, 24500 eventProps = props.eventProps; 24501 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_7__.useContext(_context__WEBPACK_IMPORTED_MODULE_8__/* .Context */ .o), 24502 contextMotion = _React$useContext.motion; 24503 var supportMotion = isSupportTransition(props, contextMotion); 24504 24505 // Ref to the react node, it may be a HTMLElement 24506 var nodeRef = (0,react__WEBPACK_IMPORTED_MODULE_7__.useRef)(); 24507 // Ref to the dom wrapper in case ref can not pass to HTMLElement 24508 var wrapperNodeRef = (0,react__WEBPACK_IMPORTED_MODULE_7__.useRef)(); 24509 function getDomElement() {
24510 try { 24511 // Here we're avoiding call for findDOMNode since it's deprecated 24512 // in strict mode. We're calling it only when node ref is not 24513 // an instance of DOM HTMLElement. Otherwise use 24514 // findDOMNode as a final resort 24515 return nodeRef.current instanceof HTMLElement ? nodeRef.current : (0,rc_util_es_Dom_findDOMNode__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Ay)(wrapperNodeRef.current); 24516 } catch (e) { 24517 // Only happen when `motionDeadline` trigger but element removed. 24518 return null; 24519 } 24520 } 24521 var _useStatus = (0,_hooks_useStatus__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .A)(supportMotion, visible, getDomElement, props), 24522 _useStatus2 = (0,_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(_useStatus, 4), 24523 status = _useStatus2[0], 24524 statusStep = _useStatus2[1], 24525 statusStyle = _useStatus2[2], 24526 mergedVisible = _useStatus2[3]; 24527 24528 // Record whether content has rendered 24529 // Will return null for un-rendered even when `removeOnLeave={false}` 24530 var renderedRef = react__WEBPACK_IMPORTED_MODULE_7__.useRef(mergedVisible); 24531 if (mergedVisible) { 24532 renderedRef.current = true; 24533 } 24534 24535 // ====================== Refs ====================== 24536 var setNodeRef = react__WEBPACK_IMPORTED_MODULE_7__.useCallback(function (node) { 24537 nodeRef.current = node; 24538 (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .fillRef */ .Xf)(ref, node); 24539 }, [ref]); 24540 24541 // ===================== Render ===================== 24542 var motionChildren; 24543 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), {}, { 24544 visible: visible 24545 }); 24546 if (!children) { 24547 // No children 24548 motionChildren = null; 24549 } else if (status === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STATUS_NONE */ .SF) { 24550 // Stable children 24551 if (mergedVisible) { 24552 motionChildren = children((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, mergedProps), setNodeRef); 24553 } else if (!removeOnLeave && renderedRef.current && leavedClassName) { 24554 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), {}, { 24555 className: leavedClassName 24556 }), setNodeRef); 24557 } else if (forceRender || !removeOnLeave && !leavedClassName) { 24558 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), {}, { 24559 style: { 24560 display: 'none' 24561 } 24562 }), setNodeRef); 24563 } else { 24564 motionChildren = null; 24565 } 24566 } else { 24567 // In motion 24568 var statusSuffix; 24569 if (statusStep === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STEP_PREPARE */ .px) { 24570 statusSuffix = 'prepare'; 24571 } else if ((0,_hooks_useStepQueue__WEBPACK_IMPORTED_MODULE_11__/* .isActive */ .$m)(statusStep)) { 24572 statusSuffix = 'active'; 24573 } else if (statusStep === _interface__WEBPACK_IMPORTED_MODULE_12__/* .STEP_START */ .Mv) { 24574 statusSuffix = 'start'; 24575 } 24576 var motionCls = (0,_util_motion__WEBPACK_IMPORTED_MODULE_13__/* .getTransitionName */ .by)(motionName, "".concat(status, "-").concat(statusSuffix)); 24577 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), {}, { 24578 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')), 24579 style: statusStyle 24580 }), setNodeRef); 24581 } 24582 24583 // Auto inject ref if child node not have `ref` props 24584 if ( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.isValidElement(motionChildren) && (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .supportRef */ .f3)(motionChildren)) { 24585 var originNodeRef = (0,rc_util_es_ref__WEBPACK_IMPORTED_MODULE_6__/* .getNodeRef */ .A9)(motionChildren); 24586 if (!originNodeRef) { 24587 motionChildren = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.cloneElement(motionChildren, {
24588 ref: setNodeRef 24589 }); 24590 } 24591 } 24592 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_7__.createElement(_DomWrapper__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A, { 24593 ref: wrapperNodeRef 24594 }, motionChildren); 24595 }); 24596 CSSMotion.displayName = 'CSSMotion'; 24597 return CSSMotion; 24598} 24599/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (genCSSMotion(_util_motion__WEBPACK_IMPORTED_MODULE_13__/* .supportTransition */ .J1)); 24600 24601/***/ }), 24602 24603/***/ 90857: 24604/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24605 24606"use strict"; 24607/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24608/* harmony export */ A: () => (/* binding */ _createSuper) 24609/* harmony export */ }); 24610/* harmony import */ var _getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(72715); 24611/* harmony import */ var _isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49105); 24612/* harmony import */ var _possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95309); 24613 24614 24615 24616function _createSuper(t) { 24617 var r = (0,_isNativeReflectConstruct_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(); 24618 return function () { 24619 var e, 24620 o = (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(t); 24621 if (r) { 24622 var s = (0,_getPrototypeOf_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(this).constructor; 24623 e = Reflect.construct(o, arguments, s); 24624 } else e = o.apply(this, arguments); 24625 return (0,_possibleConstructorReturn_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(this, e); 24626 }; 24627} 24628 24629 24630/***/ }), 24631 24632/***/ 92252: 24633/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24634 24635"use strict"; 24636/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24637/* harmony export */ A: () => (/* binding */ useMyCjReactRoute) 24638/* harmony export */ }); 24639/* harmony import */ var _hook_use_is_mycj__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71850); 24640/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24641/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24642 24643 24644function useMyCjReactRoute() { 24645 var isNew = (0,_hook_use_is_mycj__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)().isNew; 24646 var _a = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true), 24647 isNewCogs = _a[0], 24648 setIsNewCogs = _a[1]; 24649 var changeRoute = function changeRoute(routeName) { 24650 var route = routeName.replace(/\/mine/, ''); 24651 window.dispatchEvent(new CustomEvent('onUmiChangeRoute', { 24652 detail: route 24653 })); 24654 }; 24655 var viewCogs = function viewCogs(childMenu) { 24656 window.addEventListener('viewcogs', function (e) { 24657 setIsNewCogs(e.detail); 24658 console.log(childMenu.isNew, 'childMenu.isNew'); 24659 }); 24660 }; 24661 var isMyCjRoute = function isMyCjRoute(route) { 24662 return (route === null || route === void 0 ? void 0 : route.indexOf('mine')) > -1; 24663 }; 24664 var canUseNewMyCjRouteJump = function canUseNewMyCjRouteJump(route) { 24665 return isMyCjRoute(route) && isNew; 24666 }; 24667 var getAProps = function getAProps(route) { 24668 if (isMyCjRoute(route) && isNew) { 24669 return { 24670 onClick: function onClick(e) { 24671 e.preventDefault(); 24672 changeRoute(route); 24673 } 24674 }; 24675 } 24676 return {}; 24677 }; 24678 return { 24679 changeRoute: changeRoute, 24680 getAProps: getAProps, 24681 canUseNewMyCjRouteJump: canUseNewMyCjRouteJump, 24682 viewCogs: viewCogs, 24683 isNewCogs: isNewCogs 24684 }; 24685} 24686 24687/***/ }), 24688 24689/***/ 92513: 24690/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24691 24692"use strict"; 24693/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24694/* harmony export */ p: () => (/* binding */ getAxios), 24695/* harmony export */ q: () => (/* binding */ useAxios) 24696/* harmony export */ }); 24697/* harmony import */ var _common_request__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77427); 24698/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15442); 24699/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); 24700 24701 24702var getAxios = function getAxios(token, getDomainByUrl) { 24703 if (token === void 0) { 24704 token = ''; 24705 } 24706 return (0,_common_request__WEBPACK_IMPORTED_MODULE_0__/* .createInstance */ .Q)(token, getDomainByUrl); 24707}; 24708var useAxios = function useAxios(getDomainByUrl) { 24709 return (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function () { 24710 return (0,_common_request__WEBPACK_IMPORTED_MODULE_0__/* .createInstance */ .Q)('', getDomainByUrl); 24711 }, []); 24712}; 24713 24714/***/ }), 24715 24716/***/ 92575: 24717/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 24718 24719"use strict"; 24720/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24721/* harmony export */ A: () => (/* binding */ useIsAiChat) 24722/* harmony export */ }); 24723/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 24724 24725function hashCode(str) { 24726 var hash = 0; 24727 for (var i = 0; i < str.length; i++) { 24728 var _char = str.charCodeAt(i); 24729 hash = (hash << 5) - hash + _char | 0; 24730 } 24731 return Math.abs(hash); 24732} 24733function useIsAiChat(server_siteCheck) { 24734 var _a, _b, _c, _d, _e, _f, _g; 24735 var siteCheck = typeof window !== 'undefined' ? window === null || window === void 0 ? void 0 : window.siteCheck : server_siteCheck; 24736 var userId = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('userId') || ''; 24737 if (!siteCheck) return false;
24738 if (!((_a = siteCheck.isSite) === null || _a === void 0 ? void 0 : _a.call(siteCheck, 'CJ'))) return false; 24739 if (((_b = siteCheck.isShow) === null || _b === void 0 ? void 0 : _b.call(siteCheck, 'use-old-chat')) === true) return false; 24740 if (((_c = siteCheck.isShow) === null || _c === void 0 ? void 0 : _c.call(siteCheck, 'use-ai-chat-full-user')) === true) return true; 24741 var aiChatUsers = ((_d = siteCheck.data) === null || _d === void 0 ? void 0 : _d.call(siteCheck, 'ai-chat-users')) || []; 24742 if (aiChatUsers.length > 0) { 24743 var customerNo = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('num') || ''; 24744 if (customerNo && aiChatUsers.includes(customerNo)) { 24745 return true; 24746 } 24747 } 24748 var useHash = ((_e = siteCheck.isShow) === null || _e === void 0 ? void 0 : _e.call(siteCheck, 'ai-chat-use-hash')) === true; 24749 if (!userId || !useHash) return false; 24750 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; 24751 var level = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('moneyLevelType'); 24752 if (!level) return false; 24753 if (level && Number(level) < 2) { 24754 return hashCode(String(userId)) % 100 < threshold; 24755 } 24756 return false; 24757} 24758 24759/***/ }), 24760 24761/***/ 93584: 24762/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 24763 24764"use strict"; 24765/* harmony export */ __webpack_require__.d(__webpack_exports__, { 24766/* harmony export */ D4: () => (/* binding */ decode), 24767/* harmony export */ lF: () => (/* binding */ encode), 24768/* harmony export */ o4: () => (/* binding */ gBase64) 24769/* harmony export */ }); 24770/* unused harmony exports version, VERSION, atob, atobPolyfill, btoa, btoaPolyfill, fromBase64, toBase64, utob, encodeURI, encodeURL, btou, isValid, fromUint8Array, toUint8Array, extendString, extendUint8Array, extendBuiltins */ 24771/** 24772 * base64.ts 24773 * 24774 * Licensed under the BSD 3-Clause License. 24775 * http://opensource.org/licenses/BSD-3-Clause 24776 * 24777 * References: 24778 * http://en.wikipedia.org/wiki/Base64 24779 * 24780 * @author Dan Kogai (https://github.com/dankogai) 24781 */ 24782const version = '3.7.7'; 24783/** 24784 * @deprecated use lowercase `version`. 24785 */ 24786const VERSION = version; 24787const _hasBuffer = typeof Buffer === 'function'; 24788const _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined; 24789const _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined; 24790const b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; 24791const b64chs = Array.prototype.slice.call(b64ch); 24792const b64tab = ((a) => { 24793 let tab = {}; 24794 a.forEach((c, i) => tab[c] = i); 24795 return tab; 24796})(b64chs); 24797const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; 24798const _fromCC = String.fromCharCode.bind(String); 24799const _U8Afrom = typeof Uint8Array.from === 'function' 24800 ? Uint8Array.from.bind(Uint8Array) 24801 : (it) => new Uint8Array(Array.prototype.slice.call(it, 0)); 24802const _mkUriSafe = (src) => src 24803 .replace(/=/g, '').replace(/[+\/]/g, (m0) => m0 == '+' ? '-' : '_'); 24804const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ''); 24805/** 24806 * polyfill version of `btoa` 24807 */ 24808const btoaPolyfill = (bin) => { 24809 // console.log('polyfilled'); 24810 let u32, c0, c1, c2, asc = ''; 24811 const pad = bin.length % 3; 24812 for (let i = 0; i < bin.length;) { 24813 if ((c0 = bin.charCodeAt(i++)) > 255 || 24814 (c1 = bin.charCodeAt(i++)) > 255 || 24815 (c2 = bin.charCodeAt(i++)) > 255) 24816 throw new TypeError('invalid character found'); 24817 u32 = (c0 << 16) | (c1 << 8) | c2; 24818 asc += b64chs[u32 >> 18 & 63] 24819 + b64chs[u32 >> 12 & 63] 24820 + b64chs[u32 >> 6 & 63] 24821 + b64chs[u32 & 63]; 24822 } 24823 return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; 24824}; 24825/** 24826 * does what `window.btoa` of web browsers do. 24827 * @param {String} bin binary string 24828 * @returns {string} Base64-encoded string 24829 */ 24830const _btoa = typeof btoa === 'function' ? (bin) => btoa(bin) 24831 : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64') 24832 : btoaPolyfill; 24833const _fromUint8Array = _hasBuffer 24834 ? (u8a) => Buffer.from(u8a).toString('base64') 24835 : (u8a) => { 24836 // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326 24837 const maxargs = 0x1000; 24838 let strs = []; 24839 for (let i = 0, l = u8a.length; i < l; i += maxargs) { 24840 strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); 24841 } 24842 return _btoa(strs.join('')); 24843 }; 24844/** 24845 * converts a Uint8Array to a Base64 string. 24846 * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5 24847 * @returns {string} Base64 string 24848 */ 24849const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); 24850// This trick is found broken https://github.com/dankogai/js-base64/issues/130 24851// const utob = (src: string) => unescape(encodeURIComponent(src)); 24852// reverting good old fationed regexp 24853const cb_utob = (c) => { 24854 if (c.length < 2) {
24855 var cc = c.charCodeAt(0); 24856 return cc < 0x80 ? c 24857 : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6)) 24858 + _fromCC(0x80 | (cc & 0x3f))) 24859 : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f)) 24860 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 24861 + _fromCC(0x80 | (cc & 0x3f))); 24862 } 24863 else { 24864 var cc = 0x10000 24865 + (c.charCodeAt(0) - 0xD800) * 0x400 24866 + (c.charCodeAt(1) - 0xDC00); 24867 return (_fromCC(0xf0 | ((cc >>> 18) & 0x07)) 24868 + _fromCC(0x80 | ((cc >>> 12) & 0x3f)) 24869 + _fromCC(0x80 | ((cc >>> 6) & 0x3f)) 24870 + _fromCC(0x80 | (cc & 0x3f))); 24871 } 24872}; 24873const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; 24874/** 24875 * @deprecated should have been internal use only. 24876 * @param {string} src UTF-8 string 24877 * @returns {string} UTF-16 string 24878 */ 24879const utob = (u) => u.replace(re_utob, cb_utob); 24880// 24881const _encode = _hasBuffer 24882 ? (s) => Buffer.from(s, 'utf8').toString('base64') 24883 : _TE 24884 ? (s) => _fromUint8Array(_TE.encode(s)) 24885 : (s) => _btoa(utob(s)); 24886/** 24887 * converts a UTF-8-encoded string to a Base64 string. 24888 * @param {boolean} [urlsafe] if `true` make the result URL-safe 24889 * @returns {string} Base64 string 24890 */ 24891const encode = (src, urlsafe = false) => urlsafe 24892 ? _mkUriSafe(_encode(src)) 24893 : _encode(src); 24894/** 24895 * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5. 24896 * @returns {string} Base64 string 24897 */ 24898const encodeURI = (src) => encode(src, true); 24899// This trick is found broken https://github.com/dankogai/js-base64/issues/130 24900// const btou = (src: string) => decodeURIComponent(escape(src)); 24901// reverting good old fationed regexp 24902const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; 24903const cb_btou = (cccc) => { 24904 switch (cccc.length) { 24905 case 4: 24906 var cp = ((0x07 & cccc.charCodeAt(0)) << 18) 24907 | ((0x3f & cccc.charCodeAt(1)) << 12) 24908 | ((0x3f & cccc.charCodeAt(2)) << 6) 24909 | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000; 24910 return (_fromCC((offset >>> 10) + 0xD800) 24911 + _fromCC((offset & 0x3FF) + 0xDC00)); 24912 case 3: 24913 return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12) 24914 | ((0x3f & cccc.charCodeAt(1)) << 6) 24915 | (0x3f & cccc.charCodeAt(2))); 24916 default: 24917 return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6) 24918 | (0x3f & cccc.charCodeAt(1))); 24919 } 24920}; 24921/** 24922 * @deprecated should have been internal use only. 24923 * @param {string} src UTF-16 string 24924 * @returns {string} UTF-8 string 24925 */ 24926const btou = (b) => b.replace(re_btou, cb_btou); 24927/** 24928 * polyfill version of `atob` 24929 */ 24930const atobPolyfill = (asc) => { 24931 // console.log('polyfilled'); 24932 asc = asc.replace(/\s+/g, ''); 24933 if (!b64re.test(asc)) 24934 throw new TypeError('malformed base64.'); 24935 asc += '=='.slice(2 - (asc.length & 3)); 24936 let u24, bin = '', r1, r2; 24937 for (let i = 0; i < asc.length;) { 24938 u24 = b64tab[asc.charAt(i++)] << 18 24939 | b64tab[asc.charAt(i++)] << 12 24940 | (r1 = b64tab[asc.charAt(i++)]) << 6 24941 | (r2 = b64tab[asc.charAt(i++)]); 24942 bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) 24943 : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) 24944 : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255); 24945 } 24946 return bin; 24947}; 24948/** 24949 * does what `window.atob` of web browsers do. 24950 * @param {String} asc Base64-encoded string 24951 * @returns {string} binary string 24952 */ 24953const _atob = typeof atob === 'function' ? (asc) => atob(_tidyB64(asc)) 24954 : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary') 24955 : atobPolyfill; 24956// 24957const _toUint8Array = _hasBuffer 24958 ? (a) => _U8Afrom(Buffer.from(a, 'base64')) 24959 : (a) => _U8Afrom(_atob(a).split('').map(c => c.charCodeAt(0))); 24960/** 24961 * converts a Base64 string to a Uint8Array. 24962 */ 24963const toUint8Array = (a) => _toUint8Array(_unURI(a)); 24964// 24965const _decode = _hasBuffer 24966 ? (a) => Buffer.from(a, 'base64').toString('utf8') 24967 : _TD 24968 ? (a) => _TD.decode(_toUint8Array(a)) 24969 : (a) => btou(_atob(a)); 24970const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/')); 24971/** 24972 * converts a Base64 string to a UTF-8 string. 24973 * @param {String} src Base64 string. Both normal and URL-safe are supported 24974 * @returns {string} UTF-8 string 24975 */ 24976const decode = (src) => _decode(_unURI(src)); 24977/** 24978 * check if a value is a valid Base64 string 24979 * @param {String} src a value to check 24980 */ 24981const isValid = (src) => { 24982 if (typeof src !== 'string') 24983 return false;
24984 const s = src.replace(/\s+/g, '').replace(/={0,2}$/, ''); 24985 return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); 24986}; 24987// 24988const _noEnum = (v) => { 24989 return { 24990 value: v, enumerable: false, writable: true, configurable: true 24991 }; 24992}; 24993/** 24994 * extend String.prototype with relevant methods 24995 */ 24996const extendString = function () { 24997 const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body)); 24998 _add('fromBase64', function () { return decode(this); }); 24999 _add('toBase64', function (urlsafe) { return encode(this, urlsafe); }); 25000 _add('toBase64URI', function () { return encode(this, true); }); 25001 _add('toBase64URL', function () { return encode(this, true); }); 25002 _add('toUint8Array', function () { return toUint8Array(this); }); 25003}; 25004/** 25005 * extend Uint8Array.prototype with relevant methods 25006 */ 25007const extendUint8Array = function () { 25008 const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); 25009 _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); }); 25010 _add('toBase64URI', function () { return fromUint8Array(this, true); }); 25011 _add('toBase64URL', function () { return fromUint8Array(this, true); }); 25012}; 25013/** 25014 * extend Builtin prototypes with relevant methods 25015 */ 25016const extendBuiltins = () => { 25017 extendString(); 25018 extendUint8Array(); 25019}; 25020const gBase64 = { 25021 version: version, 25022 VERSION: VERSION, 25023 atob: _atob, 25024 atobPolyfill: atobPolyfill, 25025 btoa: _btoa, 25026 btoaPolyfill: btoaPolyfill, 25027 fromBase64: decode, 25028 toBase64: encode, 25029 encode: encode, 25030 encodeURI: encodeURI, 25031 encodeURL: encodeURI, 25032 utob: utob, 25033 btou: btou, 25034 decode: decode, 25035 isValid: isValid, 25036 fromUint8Array: fromUint8Array, 25037 toUint8Array: toUint8Array, 25038 extendString: extendString, 25039 extendUint8Array: extendUint8Array, 25040 extendBuiltins: extendBuiltins 25041}; 25042// makecjs:CUT // 25043 25044 25045 25046 25047 25048 25049 25050 25051 25052 25053 25054 25055 25056 25057 25058 25059 25060 25061 25062 25063// and finally, 25064 25065 25066 25067/***/ }), 25068 25069/***/ 93607: 25070/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25071 25072"use strict"; 25073/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25074/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25075/* harmony export */ }); 25076/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(89575); 25077/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69740); 25078/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(39850); 25079/* harmony import */ var _rc_component_trigger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(78977); 25080/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53373); 25081/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__); 25082/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(15442); 25083/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__); 25084/* harmony import */ var _placements__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46538); 25085/* harmony import */ var _Popup__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23294); 25086/* harmony import */ var rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(75476); 25087 25088 25089 25090var _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"]; 25091 25092 25093 25094 25095 25096 25097 25098var Tooltip = function Tooltip(props, ref) { 25099 var overlayClassName = props.overlayClassName, 25100 _props$trigger = props.trigger, 25101 trigger = _props$trigger === void 0 ? ['hover'] : _props$trigger, 25102 _props$mouseEnterDela = props.mouseEnterDelay, 25103 mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0 : _props$mouseEnterDela, 25104 _props$mouseLeaveDela = props.mouseLeaveDelay,
25105 mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela, 25106 overlayStyle = props.overlayStyle, 25107 _props$prefixCls = props.prefixCls, 25108 prefixCls = _props$prefixCls === void 0 ? 'rc-tooltip' : _props$prefixCls, 25109 children = props.children, 25110 onVisibleChange = props.onVisibleChange, 25111 afterVisibleChange = props.afterVisibleChange, 25112 transitionName = props.transitionName, 25113 animation = props.animation, 25114 motion = props.motion, 25115 _props$placement = props.placement, 25116 placement = _props$placement === void 0 ? 'right' : _props$placement, 25117 _props$align = props.align, 25118 align = _props$align === void 0 ? {} : _props$align, 25119 _props$destroyTooltip = props.destroyTooltipOnHide, 25120 destroyTooltipOnHide = _props$destroyTooltip === void 0 ? false : _props$destroyTooltip, 25121 defaultVisible = props.defaultVisible, 25122 getTooltipContainer = props.getTooltipContainer, 25123 overlayInnerStyle = props.overlayInnerStyle, 25124 arrowContent = props.arrowContent, 25125 overlay = props.overlay, 25126 id = props.id, 25127 _props$showArrow = props.showArrow, 25128 showArrow = _props$showArrow === void 0 ? true : _props$showArrow, 25129 tooltipClassNames = props.classNames, 25130 tooltipStyles = props.styles, 25131 restProps = (0,_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A)(props, _excluded); 25132 var mergedId = (0,rc_util_es_hooks_useId__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)(id); 25133 var triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_5__.useRef)(null); 25134 (0,react__WEBPACK_IMPORTED_MODULE_5__.useImperativeHandle)(ref, function () { 25135 return triggerRef.current; 25136 }); 25137 var extraProps = (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)({}, restProps); 25138 if ('visible' in props) { 25139 extraProps.popupVisible = props.visible; 25140 } 25141 var getPopupElement = function getPopupElement() { 25142 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.createElement(_Popup__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .A, { 25143 key: "content", 25144 prefixCls: prefixCls, 25145 id: mergedId, 25146 bodyClassName: tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.body, 25147 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) 25148 }, overlay); 25149 }; 25150 var getChildren = function getChildren() { 25151 var child = react__WEBPACK_IMPORTED_MODULE_5__.Children.only(children); 25152 var originalProps = (child === null || child === void 0 ? void 0 : child.props) || {}; 25153 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), {}, { 25154 'aria-describedby': overlay ? mergedId : null 25155 }); 25156 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_5__.cloneElement(children, childProps); 25157 }; 25158 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)({ 25159 popupClassName: classnames__WEBPACK_IMPORTED_MODULE_4___default()(overlayClassName, tooltipClassNames === null || tooltipClassNames === void 0 ? void 0 : tooltipClassNames.root), 25160 prefixCls: prefixCls, 25161 popup: getPopupElement, 25162 action: trigger, 25163 builtinPlacements: _placements__WEBPACK_IMPORTED_MODULE_6__/* .placements */ .D, 25164 popupPlacement: placement, 25165 ref: triggerRef, 25166 popupAlign: align, 25167 getPopupContainer: getTooltipContainer, 25168 onPopupVisibleChange: onVisibleChange, 25169 afterPopupVisibleChange: afterVisibleChange, 25170 popupTransitionName: transitionName, 25171 popupAnimation: animation, 25172 popupMotion: motion, 25173 defaultPopupVisible: defaultVisible, 25174 autoDestroy: destroyTooltipOnHide, 25175 mouseLeaveDelay: mouseLeaveDelay, 25176 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), 25177 mouseEnterDelay: mouseEnterDelay, 25178 arrow: showArrow 25179 }, extraProps), getChildren()); 25180}; 25181/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_5__.forwardRef)(Tooltip)); 25182 25183/***/ }), 25184 25185/***/ 94495: 25186/***/ ((module, __unused_webpack_exports, __webpack_require__) => { 25187 25188var root = __webpack_require__(78942); 25189 25190/** 25191 * Gets the timestamp of the number of milliseconds that have elapsed since 25192 * the Unix epoch (1 January 1970 00:00:00 UTC). 25193 * 25194 * @static 25195 * @memberOf _ 25196 * @since 2.4.0 25197 * @category Date 25198 * @returns {number} Returns the timestamp. 25199 * @example 25200 * 25201 * _.defer(function(stamp) { 25202 * console.log(_.now() - stamp); 25203 * }, _.now()); 25204 * // => Logs the number of milliseconds it took for the deferred invocation. 25205 */ 25206var now = function() { 25207 return root.Date.now(); 25208}; 25209 25210module.exports = now; 25211 25212 25213/***/ }), 25214 25215/***/ 95092: 25216/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25217 25218"use strict"; 25219/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25220/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25221/* harmony export */ }); 25222/* harmony import */ var _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12097); 25223 25224var useIsVip = function useIsVip() { 25225 var isVip = _common_login_info_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.info('vip') == '1'; 25226 return isVip; 25227}; 25228/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useIsVip); 25229 25230/***/ }), 25231 25232/***/ 95309: 25233/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 25234 25235"use strict"; 25236/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25237/* harmony export */ A: () => (/* binding */ _possibleConstructorReturn) 25238/* harmony export */ }); 25239/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17545); 25240/* harmony import */ var _assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2474); 25241 25242 25243function _possibleConstructorReturn(t, e) { 25244 if (e && ("object" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A)(e) || "function" == typeof e)) return e; 25245 if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); 25246 return (0,_assertThisInitialized_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A)(t); 25247} 25248 25249 25250/***/ }), 25251 25252/***/ 96488: 25253/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { 25254 25255"use strict"; 25256/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25257/* harmony export */ A: () => (/* binding */ _arrayWithHoles) 25258/* harmony export */ }); 25259function _arrayWithHoles(r) { 25260 if (Array.isArray(r)) return r; 25261} 25262 25263 25264/***/ }), 25265 25266/***/ 96551: 25267/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25268 25269"use strict"; 25270/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25271/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25272/* harmony export */ }); 25273/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ 25274 common: { 25275 module: { 25276 'mycj-menu': { 25277 'print-on-demand': false, 25278 orders: { 25279 'undelivered-orders': false, 25280 'orders-tracking': false 25281 }, 25282 'store-authorization': { 25283 wed2c: false 25284 }, 25285 'my-cj': { 25286 customization: false, 25287 'my-photography': false, 25288 dashboard: false, 25289 sourcing: false 25290 } 25291 }, 25292 'mycj-header': { 25293 notice: false 25294 }, 25295 header: { 25296 'check-list': false, 25297 'support-center': false, 25298 'user-account': false, 25299 'cart-count': false, 25300 'search-queue': false, 25301 'video-selection': false 25302 }, 25303 'product-video': { 25304 'sell-and-earn': false, 25305 purchase: false, 25306 customize: false 25307 }, 25308 'photography-request': false, 25309 'chat-body': false 25310 } 25311 }, 25312 '/product': { 25313 module: { 25314 productdetail: { 25315 counseling: false, 25316 'photography-request': false, 25317 customize: false, 25318 reviews: false, 25319 'sell-and-earn': false, 25320 design: false, 25321 connect: false 25322 } 25323 } 25324 } 25325}); 25326 25327/***/ }), 25328 25329/***/ 98331: 25330/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25331 25332"use strict"; 25333/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25334/* harmony export */ $: () => (/* binding */ isBodyOverflowing) 25335/* harmony export */ }); 25336/** 25337 * Test usage export. Do not use in your production 25338 */ 25339function isBodyOverflowing() { 25340 return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth; 25341} 25342 25343/***/ }), 25344 25345/***/ 99126: 25346/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 25347 25348"use strict"; 25349/* harmony export */ __webpack_require__.d(__webpack_exports__, { 25350/* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__) 25351/* harmony export */ }); 25352/** 25353 * A collection of shims that provide minimal functionality of the ES6 collections. 25354 * 25355 * These implementations are not meant to be used outside of the ResizeObserver 25356 * modules as they cover only a limited range of use cases. 25357 */ 25358/* eslint-disable require-jsdoc, valid-jsdoc */ 25359var MapShim = (function () { 25360 if (typeof Map !== 'undefined') { 25361 return Map; 25362 } 25363 /** 25364 * Returns index in provided array that matches the specified key. 25365 * 25366 * @param {Array<Array>} arr 25367 * @param {*} key 25368 * @returns {number} 25369 */ 25370 function getIndex(arr, key) { 25371 var result = -1; 25372 arr.some(function (entry, index) { 25373 if (entry[0] === key) { 25374 result = index; 25375 return true; 25376 } 25377 return false; 25378 }); 25379 return result; 25380 } 25381 return /** @class */ (function () { 25382 function class_1() { 25383 this.__entries__ = []; 25384 } 25385 Object.defineProperty(class_1.prototype, "size", { 25386 /** 25387 * @returns {boolean} 25388 */ 25389 get: function () { 25390 return this.__entries__.length; 25391 }, 25392 enumerable: true, 25393 configurable: true 25394 }); 25395 /** 25396 * @param {*} key 25397 * @returns {*} 25398 */ 25399 class_1.prototype.get = function (key) { 25400 var index = getIndex(this.__entries__, key); 25401 var entry = this.__entries__[index]; 25402 return entry && entry[1]; 25403 }; 25404 /** 25405 * @param {*} key 25406 * @param {*} value 25407 * @returns {void} 25408 */ 25409 class_1.prototype.set = function (key, value) { 25410 var index = getIndex(this.__entries__, key); 25411 if (~index) { 25412 this.__entries__[index][1] = value; 25413 } 25414 else { 25415 this.__entries__.push([key, value]); 25416 } 25417 }; 25418 /** 25419 * @param {*} key 25420 * @returns {void} 25421 */ 25422 class_1.prototype.delete = function (key) { 25423 var entries = this.__entries__; 25424 var index = getIndex(entries, key); 25425 if (~index) {
vendor: 1,332 bytes, lines 25426-25466
25426 entries.splice(index, 1); 25427 } 25428 }; 25429 /** 25430 * @param {*} key 25431 * @returns {void} 25432 */ 25433 class_1.prototype.has = function (key) { 25434 return !!~getIndex(this.__entries__, key); 25435 }; 25436 /** 25437 * @returns {void} 25438 */ 25439 class_1.prototype.clear = function () { 25440 this.__entries__.splice(0); 25441 }; 25442 /** 25443 * @param {Function} callback 25444 * @param {*} [ctx=null] 25445 * @returns {void} 25446 */ 25447 class_1.prototype.forEach = function (callback, ctx) { 25448 if (ctx === void 0) { ctx = null; } 25449 for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) { 25450 var entry = _a[_i]; 25451 callback.call(ctx, entry[1], entry[0]); 25452 } 25453 }; 25454 return class_1; 25455 }()); 25456})(); 25457 25458/** 25459 * Detects whether window and document objects are available in current environment. 25460 */ 25461var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; 25462 25463// Returns global object of a current environment. 25464var global$1 = (function () { 25465 if (typeof __webpack_require__.g !== 'undefined' && __webpack_require__.g.Math === Math) { 25466 return __webpack_require__.g
vendor: 30,132 bytes, lines 25466-26279
25466; 25467 } 25468 if (typeof self !== 'undefined' && self.Math === Math) { 25469 return self; 25470 } 25471 if (typeof window !== 'undefined' && window.Math === Math) { 25472 return window; 25473 } 25474 // eslint-disable-next-line no-new-func 25475 return Function('return this')(); 25476})(); 25477 25478/** 25479 * A shim for the requestAnimationFrame which falls back to the setTimeout if 25480 * first one is not supported. 25481 * 25482 * @returns {number} Requests' identifier. 25483 */ 25484var requestAnimationFrame$1 = (function () { 25485 if (typeof requestAnimationFrame === 'function') { 25486 // It's required to use a bounded function because IE sometimes throws 25487 // an "Invalid calling object" error if rAF is invoked without the global 25488 // object on the left hand side. 25489 return requestAnimationFrame.bind(global$1); 25490 } 25491 return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); }; 25492})(); 25493 25494// Defines minimum timeout before adding a trailing call. 25495var trailingTimeout = 2; 25496/** 25497 * Creates a wrapper function which ensures that provided callback will be 25498 * invoked only once during the specified delay period. 25499 * 25500 * @param {Function} callback - Function to be invoked after the delay period. 25501 * @param {number} delay - Delay after which to invoke callback. 25502 * @returns {Function} 25503 */ 25504function throttle (callback, delay) { 25505 var leadingCall = false, trailingCall = false, lastCallTime = 0; 25506 /** 25507 * Invokes the original callback function and schedules new invocation if 25508 * the "proxy" was called during current request. 25509 * 25510 * @returns {void} 25511 */ 25512 function resolvePending() { 25513 if (leadingCall) { 25514 leadingCall = false; 25515 callback(); 25516 } 25517 if (trailingCall) { 25518 proxy(); 25519 } 25520 } 25521 /** 25522 * Callback invoked after the specified delay. It will further postpone 25523 * invocation of the original function delegating it to the 25524 * requestAnimationFrame. 25525 * 25526 * @returns {void} 25527 */ 25528 function timeoutCallback() { 25529 requestAnimationFrame$1(resolvePending); 25530 } 25531 /** 25532 * Schedules invocation of the original function. 25533 * 25534 * @returns {void} 25535 */ 25536 function proxy() { 25537 var timeStamp = Date.now(); 25538 if (leadingCall) { 25539 // Reject immediately following calls. 25540 if (timeStamp - lastCallTime < trailingTimeout) { 25541 return; 25542 } 25543 // Schedule new call to be in invoked when the pending one is resolved. 25544 // This is important for "transitions" which never actually start 25545 // immediately so there is a chance that we might miss one if change 25546 // happens amids the pending invocation. 25547 trailingCall = true; 25548 } 25549 else { 25550 leadingCall = true; 25551 trailingCall = false; 25552 setTimeout(timeoutCallback, delay); 25553 } 25554 lastCallTime = timeStamp; 25555 } 25556 return proxy; 25557} 25558 25559// Minimum delay before invoking the update of observers. 25560var REFRESH_DELAY = 20; 25561// A list of substrings of CSS properties used to find transition events that 25562// might affect dimensions of observed elements. 25563var transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; 25564// Check if MutationObserver is available. 25565var mutationObserverSupported = typeof MutationObserver !== 'undefined'; 25566/** 25567 * Singleton controller class which handles updates of ResizeObserver instances. 25568 */ 25569var ResizeObserverController = /** @class */ (function () { 25570 /** 25571 * Creates a new instance of ResizeObserverController. 25572 * 25573 * @private 25574 */ 25575 function ResizeObserverController() { 25576 /** 25577 * Indicates whether DOM listeners have been added. 25578 * 25579 * @private {boolean} 25580 */ 25581 this.connected_ = false; 25582 /** 25583 * Tells that controller has subscribed for Mutation Events. 25584 * 25585 * @private {boolean} 25586 */ 25587 this.mutationEventsAdded_ = false; 25588 /** 25589 * Keeps reference to the instance of MutationObserver. 25590 * 25591 * @private {MutationObserver} 25592 */ 25593 this.mutationsObserver_ = null; 25594 /** 25595 * A list of connected observers. 25596 * 25597 * @private {Array<ResizeObserverSPI>} 25598 */ 25599 this.observers_ = []; 25600 this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); 25601 this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); 25602 } 25603 /** 25604 * Adds observer to observers list. 25605 * 25606 * @param {ResizeObserverSPI} observer - Observer to be added. 25607 * @returns {void} 25608 */ 25609 ResizeObserverController.prototype.addObserver = function (observer) { 25610 if (!~this.observers_.indexOf(observer)) { 25611 this.observers_.push(observer); 25612 } 25613 // Add listeners if they haven't been added yet. 25614 if (!this.connected_) { 25615 this.connect_(); 25616 } 25617 }; 25618 /** 25619 * Removes observer from observers list. 25620 * 25621 * @param {ResizeObserverSPI} observer - Observer to be removed. 25622 * @returns {void} 25623 */ 25624 ResizeObserverController.prototype.removeObserver = function (observer) { 25625 var observers = this.observers_; 25626 var index = observers.indexOf(observer); 25627 // Remove observer if it's present in registry. 25628 if (~index) { 25629 observers.splice(index, 1); 25630 } 25631 // Remove listeners if controller has no connected observers. 25632 if (!observers.length && this.connected_) { 25633 this.disconnect_(); 25634 } 25635 }; 25636 /** 25637 * Invokes the update of observers. It will continue running updates insofar 25638 * it detects changes. 25639 * 25640 * @returns {void} 25641 */ 25642 ResizeObserverController.prototype.refresh = function () { 25643 var changesDetected = this.updateObservers_(); 25644 // Continue running updates if changes have been detected as there might 25645 // be future ones caused by CSS transitions. 25646 if (changesDetected) { 25647 this.refresh(); 25648 } 25649 }; 25650 /** 25651 * Updates every observer from observers list and notifies them of queued 25652 * entries. 25653 * 25654 * @private 25655 * @returns {boolean} Returns "true" if any observer has detected changes in 25656 * dimensions of it's elements. 25657 */ 25658 ResizeObserverController.prototype.updateObservers_ = function () { 25659 // Collect observers that have active observations. 25660 var activeObservers = this.observers_.filter(function (observer) { 25661 return observer.gatherActive(), observer.hasActive(); 25662 }); 25663 // Deliver notifications in a separate cycle in order to avoid any 25664 // collisions between observers, e.g. when multiple instances of 25665 // ResizeObserver are tracking the same element and the callback of one 25666 // of them changes content dimensions of the observed target. Sometimes 25667 // this may result in notifications being blocked for the rest of observers. 25668 activeObservers.forEach(function (observer) { return observer.broadcastActive(); }); 25669 return activeObservers.length > 0; 25670 }; 25671 /** 25672 * Initializes DOM listeners. 25673 * 25674 * @private 25675 * @returns {void} 25676 */ 25677 ResizeObserverController.prototype.connect_ = function () { 25678 // Do nothing if running in a non-browser environment or if listeners 25679 // have been already added. 25680 if (!isBrowser || this.connected_) { 25681 return; 25682 } 25683 // Subscription to the "Transitionend" event is used as a workaround for 25684 // delayed transitions. This way it's possible to capture at least the 25685 // final state of an element. 25686 document.addEventListener('transitionend', this.onTransitionEnd_); 25687 window.addEventListener('resize', this.refresh); 25688 if (mutationObserverSupported) { 25689 this.mutationsObserver_ = new MutationObserver(this.refresh); 25690 this.mutationsObserver_.observe(document, { 25691 attributes: true, 25692 childList: true, 25693 characterData: true, 25694 subtree: true 25695 }); 25696 } 25697 else { 25698 document.addEventListener('DOMSubtreeModified', this.refresh); 25699 this.mutationEventsAdded_ = true; 25700 } 25701 this.connected_ = true; 25702 }; 25703 /** 25704 * Removes DOM listeners. 25705 * 25706 * @private 25707 * @returns {void} 25708 */ 25709 ResizeObserverController.prototype.disconnect_ = function () { 25710 // Do nothing if running in a non-browser environment or if listeners 25711 // have been already removed. 25712 if (!isBrowser || !this.connected_) { 25713 return; 25714 } 25715 document.removeEventListener('transitionend', this.onTransitionEnd_); 25716 window.removeEventListener('resize', this.refresh); 25717 if (this.mutationsObserver_) { 25718 this.mutationsObserver_.disconnect(); 25719 } 25720 if (this.mutationEventsAdded_) { 25721 document.removeEventListener('DOMSubtreeModified', this.refresh); 25722 } 25723 this.mutationsObserver_ = null; 25724 this.mutationEventsAdded_ = false; 25725 this.connected_ = false; 25726 }; 25727 /** 25728 * "Transitionend" event handler. 25729 * 25730 * @private 25731 * @param {TransitionEvent} event 25732 * @returns {void} 25733 */ 25734 ResizeObserverController.prototype.onTransitionEnd_ = function (_a) { 25735 var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b; 25736 // Detect whether transition may affect dimensions of an element. 25737 var isReflowProperty = transitionKeys.some(function (key) { 25738 return !!~propertyName.indexOf(key); 25739 }); 25740 if (isReflowProperty) { 25741 this.refresh(); 25742 } 25743 }; 25744 /** 25745 * Returns instance of the ResizeObserverController. 25746 * 25747 * @returns {ResizeObserverController} 25748 */ 25749 ResizeObserverController.getInstance = function () { 25750 if (!this.instance_) { 25751 this.instance_ = new ResizeObserverController(); 25752 } 25753 return this.instance_; 25754 }; 25755 /** 25756 * Holds reference to the controller's instance. 25757 * 25758 * @private {ResizeObserverController} 25759 */ 25760 ResizeObserverController.instance_ = null; 25761 return ResizeObserverController; 25762}()); 25763 25764/** 25765 * Defines non-writable/enumerable properties of the provided target object. 25766 * 25767 * @param {Object} target - Object for which to define properties. 25768 * @param {Object} props - Properties to be defined. 25769 * @returns {Object} Target object. 25770 */ 25771var defineConfigurable = (function (target, props) { 25772 for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) { 25773 var key = _a[_i]; 25774 Object.defineProperty(target, key, { 25775 value: props[key], 25776 enumerable: false, 25777 writable: false, 25778 configurable: true 25779 }); 25780 } 25781 return target; 25782}); 25783 25784/** 25785 * Returns the global object associated with provided element. 25786 * 25787 * @param {Object} target 25788 * @returns {Object} 25789 */ 25790var getWindowOf = (function (target) { 25791 // Assume that the element is an instance of Node, which means that it 25792 // has the "ownerDocument" property from which we can retrieve a 25793 // corresponding global object. 25794 var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; 25795 // Return the local global object if it's not possible extract one from 25796 // provided element. 25797 return ownerGlobal || global$1; 25798}); 25799 25800// Placeholder of an empty content rectangle. 25801var emptyRect = createRectInit(0, 0, 0, 0); 25802/** 25803 * Converts provided string to a number. 25804 * 25805 * @param {number|string} value 25806 * @returns {number} 25807 */ 25808function toFloat(value) { 25809 return parseFloat(value) || 0; 25810} 25811/** 25812 * Extracts borders size from provided styles. 25813 * 25814 * @param {CSSStyleDeclaration} styles 25815 * @param {...string} positions - Borders positions (top, right, ...) 25816 * @returns {number} 25817 */ 25818function getBordersSize(styles) { 25819 var positions = []; 25820 for (var _i = 1; _i < arguments.length; _i++) { 25821 positions[_i - 1] = arguments[_i]; 25822 } 25823 return positions.reduce(function (size, position) { 25824 var value = styles['border-' + position + '-width']; 25825 return size + toFloat(value); 25826 }, 0); 25827} 25828/** 25829 * Extracts paddings sizes from provided styles. 25830 * 25831 * @param {CSSStyleDeclaration} styles 25832 * @returns {Object} Paddings box. 25833 */ 25834function getPaddings(styles) { 25835 var positions = ['top', 'right', 'bottom', 'left']; 25836 var paddings = {}; 25837 for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { 25838 var position = positions_1[_i]; 25839 var value = styles['padding-' + position]; 25840 paddings[position] = toFloat(value); 25841 } 25842 return paddings; 25843} 25844/** 25845 * Calculates content rectangle of provided SVG element. 25846 * 25847 * @param {SVGGraphicsElement} target - Element content rectangle of which needs 25848 * to be calculated. 25849 * @returns {DOMRectInit} 25850 */ 25851function getSVGContentRect(target) { 25852 var bbox = target.getBBox(); 25853 return createRectInit(0, 0, bbox.width, bbox.height); 25854} 25855/** 25856 * Calculates content rectangle of provided HTMLElement. 25857 * 25858 * @param {HTMLElement} target - Element for which to calculate the content rectangle. 25859 * @returns {DOMRectInit} 25860 */ 25861function getHTMLElementContentRect(target) { 25862 // Client width & height properties can't be 25863 // used exclusively as they provide rounded values. 25864 var clientWidth = target.clientWidth, clientHeight = target.clientHeight; 25865 // By this condition we can catch all non-replaced inline, hidden and 25866 // detached elements. Though elements with width & height properties less 25867 // than 0.5 will be discarded as well. 25868 // 25869 // Without it we would need to implement separate methods for each of 25870 // those cases and it's not possible to perform a precise and performance 25871 // effective test for hidden elements. E.g. even jQuery's ':visible' filter 25872 // gives wrong results for elements with width & height less than 0.5. 25873 if (!clientWidth && !clientHeight) { 25874 return emptyRect; 25875 } 25876 var styles = getWindowOf(target).getComputedStyle(target); 25877 var paddings = getPaddings(styles); 25878 var horizPad = paddings.left + paddings.right; 25879 var vertPad = paddings.top + paddings.bottom; 25880 // Computed styles of width & height are being used because they are the 25881 // only dimensions available to JS that contain non-rounded values. It could 25882 // be possible to utilize the getBoundingClientRect if only it's data wasn't 25883 // affected by CSS transformations let alone paddings, borders and scroll bars. 25884 var width = toFloat(styles.width), height = toFloat(styles.height); 25885 // Width & height include paddings and borders when the 'border-box' box 25886 // model is applied (except for IE). 25887 if (styles.boxSizing === 'border-box') { 25888 // Following conditions are required to handle Internet Explorer which 25889 // doesn't include paddings and borders to computed CSS dimensions. 25890 // 25891 // We can say that if CSS dimensions + paddings are equal to the "client" 25892 // properties then it's either IE, and thus we don't need to subtract 25893 // anything, or an element merely doesn't have paddings/borders styles. 25894 if (Math.round(width + horizPad) !== clientWidth) { 25895 width -= getBordersSize(styles, 'left', 'right') + horizPad; 25896 } 25897 if (Math.round(height + vertPad) !== clientHeight) { 25898 height -= getBordersSize(styles, 'top', 'bottom') + vertPad; 25899 } 25900 } 25901 // Following steps can't be applied to the document's root element as its 25902 // client[Width/Height] properties represent viewport area of the window. 25903 // Besides, it's as well not necessary as the <html> itself neither has 25904 // rendered scroll bars nor it can be clipped. 25905 if (!isDocumentElement(target)) { 25906 // In some browsers (only in Firefox, actually) CSS width & height 25907 // include scroll bars size which can be removed at this step as scroll 25908 // bars are the only difference between rounded dimensions + paddings 25909 // and "client" properties, though that is not always true in Chrome. 25910 var vertScrollbar = Math.round(width + horizPad) - clientWidth; 25911 var horizScrollbar = Math.round(height + vertPad) - clientHeight; 25912 // Chrome has a rather weird rounding of "client" properties. 25913 // E.g. for an element with content width of 314.2px it sometimes gives 25914 // the client width of 315px and for the width of 314.7px it may give 25915 // 314px. And it doesn't happen all the time. So just ignore this delta 25916 // as a non-relevant. 25917 if (Math.abs(vertScrollbar) !== 1) { 25918 width -= vertScrollbar; 25919 } 25920 if (Math.abs(horizScrollbar) !== 1) { 25921 height -= horizScrollbar; 25922 } 25923 } 25924 return createRectInit(paddings.left, paddings.top, width, height); 25925} 25926/** 25927 * Checks whether provided element is an instance of the SVGGraphicsElement. 25928 * 25929 * @param {Element} target - Element to be checked. 25930 * @returns {boolean} 25931 */ 25932var isSVGGraphicsElement = (function () { 25933 // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement 25934 // interface. 25935 if (typeof SVGGraphicsElement !== 'undefined') { 25936 return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; }; 25937 } 25938 // If it's so, then check that element is at least an instance of the 25939 // SVGElement and that it has the "getBBox" method. 25940 // eslint-disable-next-line no-extra-parens 25941 return function (target) { return (target instanceof getWindowOf(target).SVGElement && 25942 typeof target.getBBox === 'function'); }; 25943})(); 25944/** 25945 * Checks whether provided element is a document element (<html>). 25946 * 25947 * @param {Element} target - Element to be checked. 25948 * @returns {boolean} 25949 */ 25950function isDocumentElement(target) { 25951 return target === getWindowOf(target).document.documentElement; 25952} 25953/** 25954 * Calculates an appropriate content rectangle for provided html or svg element. 25955 * 25956 * @param {Element} target - Element content rectangle of which needs to be calculated. 25957 * @returns {DOMRectInit} 25958 */ 25959function getContentRect(target) { 25960 if (!isBrowser) { 25961 return emptyRect; 25962 } 25963 if (isSVGGraphicsElement(target)) { 25964 return getSVGContentRect(target); 25965 } 25966 return getHTMLElementContentRect(target); 25967} 25968/** 25969 * Creates rectangle with an interface of the DOMRectReadOnly. 25970 * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly 25971 * 25972 * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions. 25973 * @returns {DOMRectReadOnly} 25974 */ 25975function createReadOnlyRect(_a) { 25976 var x = _a.x, y = _a.y, width = _a.width, height = _a.height; 25977 // If DOMRectReadOnly is available use it as a prototype for the rectangle. 25978 var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object; 25979 var rect = Object.create(Constr.prototype); 25980 // Rectangle's properties are not writable and non-enumerable. 25981 defineConfigurable(rect, { 25982 x: x, y: y, width: width, height: height, 25983 top: y, 25984 right: x + width, 25985 bottom: height + y, 25986 left: x 25987 }); 25988 return rect; 25989} 25990/** 25991 * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates. 25992 * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit 25993 * 25994 * @param {number} x - X coordinate. 25995 * @param {number} y - Y coordinate. 25996 * @param {number} width - Rectangle's width. 25997 * @param {number} height - Rectangle's height. 25998 * @returns {DOMRectInit} 25999 */ 26000function createRectInit(x, y, width, height) { 26001 return { x: x, y: y, width: width, height: height }; 26002} 26003 26004/** 26005 * Class that is responsible for computations of the content rectangle of 26006 * provided DOM element and for keeping track of it's changes. 26007 */ 26008var ResizeObservation = /** @class */ (function () { 26009 /** 26010 * Creates an instance of ResizeObservation. 26011 * 26012 * @param {Element} target - Element to be observed. 26013 */ 26014 function ResizeObservation(target) { 26015 /** 26016 * Broadcasted width of content rectangle. 26017 * 26018 * @type {number} 26019 */ 26020 this.broadcastWidth = 0; 26021 /** 26022 * Broadcasted height of content rectangle. 26023 * 26024 * @type {number} 26025 */ 26026 this.broadcastHeight = 0; 26027 /** 26028 * Reference to the last observed content rectangle. 26029 * 26030 * @private {DOMRectInit} 26031 */ 26032 this.contentRect_ = createRectInit(0, 0, 0, 0); 26033 this.target = target; 26034 } 26035 /** 26036 * Updates content rectangle and tells whether it's width or height properties 26037 * have changed since the last broadcast. 26038 * 26039 * @returns {boolean} 26040 */ 26041 ResizeObservation.prototype.isActive = function () { 26042 var rect = getContentRect(this.target); 26043 this.contentRect_ = rect; 26044 return (rect.width !== this.broadcastWidth || 26045 rect.height !== this.broadcastHeight); 26046 }; 26047 /** 26048 * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data 26049 * from the corresponding properties of the last observed content rectangle. 26050 * 26051 * @returns {DOMRectInit} Last observed content rectangle. 26052 */ 26053 ResizeObservation.prototype.broadcastRect = function () { 26054 var rect = this.contentRect_; 26055 this.broadcastWidth = rect.width; 26056 this.broadcastHeight = rect.height; 26057 return rect; 26058 }; 26059 return ResizeObservation; 26060}()); 26061 26062var ResizeObserverEntry = /** @class */ (function () { 26063 /** 26064 * Creates an instance of ResizeObserverEntry. 26065 * 26066 * @param {Element} target - Element that is being observed. 26067 * @param {DOMRectInit} rectInit - Data of the element's content rectangle. 26068 */ 26069 function ResizeObserverEntry(target, rectInit) { 26070 var contentRect = createReadOnlyRect(rectInit); 26071 // According to the specification following properties are not writable 26072 // and are also not enumerable in the native implementation. 26073 // 26074 // Property accessors are not being used as they'd require to define a 26075 // private WeakMap storage which may cause memory leaks in browsers that 26076 // don't support this type of collections. 26077 defineConfigurable(this, { target: target, contentRect: contentRect }); 26078 } 26079 return ResizeObserverEntry; 26080}()); 26081 26082var ResizeObserverSPI = /** @class */ (function () { 26083 /** 26084 * Creates a new instance of ResizeObserver. 26085 * 26086 * @param {ResizeObserverCallback} callback - Callback function that is invoked 26087 * when one of the observed elements changes it's content dimensions. 26088 * @param {ResizeObserverController} controller - Controller instance which 26089 * is responsible for the updates of observer. 26090 * @param {ResizeObserver} callbackCtx - Reference to the public 26091 * ResizeObserver instance which will be passed to callback function. 26092 */ 26093 function ResizeObserverSPI(callback, controller, callbackCtx) { 26094 /** 26095 * Collection of resize observations that have detected changes in dimensions 26096 * of elements. 26097 * 26098 * @private {Array<ResizeObservation>} 26099 */ 26100 this.activeObservations_ = []; 26101 /** 26102 * Registry of the ResizeObservation instances. 26103 * 26104 * @private {Map<Element, ResizeObservation>} 26105 */ 26106 this.observations_ = new MapShim(); 26107 if (typeof callback !== 'function') { 26108 throw new TypeError('The callback provided as parameter 1 is not a function.'); 26109 } 26110 this.callback_ = callback; 26111 this.controller_ = controller; 26112 this.callbackCtx_ = callbackCtx; 26113 } 26114 /** 26115 * Starts observing provided element. 26116 * 26117 * @param {Element} target - Element to be observed. 26118 * @returns {void} 26119 */ 26120 ResizeObserverSPI.prototype.observe = function (target) { 26121 if (!arguments.length) { 26122 throw new TypeError('1 argument required, but only 0 present.'); 26123 } 26124 // Do nothing if current environment doesn't have the Element interface. 26125 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 26126 return; 26127 } 26128 if (!(target instanceof getWindowOf(target).Element)) { 26129 throw new TypeError('parameter 1 is not of type "Element".'); 26130 } 26131 var observations = this.observations_; 26132 // Do nothing if element is already being observed. 26133 if (observations.has(target)) { 26134 return; 26135 } 26136 observations.set(target, new ResizeObservation(target)); 26137 this.controller_.addObserver(this); 26138 // Force the update of observations. 26139 this.controller_.refresh(); 26140 }; 26141 /** 26142 * Stops observing provided element. 26143 * 26144 * @param {Element} target - Element to stop observing. 26145 * @returns {void} 26146 */ 26147 ResizeObserverSPI.prototype.unobserve = function (target) { 26148 if (!arguments.length) { 26149 throw new TypeError('1 argument required, but only 0 present.'); 26150 } 26151 // Do nothing if current environment doesn't have the Element interface. 26152 if (typeof Element === 'undefined' || !(Element instanceof Object)) { 26153 return; 26154 } 26155 if (!(target instanceof getWindowOf(target).Element)) { 26156 throw new TypeError('parameter 1 is not of type "Element".'); 26157 } 26158 var observations = this.observations_; 26159 // Do nothing if element is not being observed. 26160 if (!observations.has(target)) { 26161 return; 26162 } 26163 observations.delete(target); 26164 if (!observations.size) { 26165 this.controller_.removeObserver(this); 26166 } 26167 }; 26168 /** 26169 * Stops observing all elements. 26170 * 26171 * @returns {void} 26172 */ 26173 ResizeObserverSPI.prototype.disconnect = function () { 26174 this.clearActive(); 26175 this.observations_.clear(); 26176 this.controller_.removeObserver(this); 26177 }; 26178 /** 26179 * Collects observation instances the associated element of which has changed 26180 * it's content rectangle. 26181 * 26182 * @returns {void} 26183 */ 26184 ResizeObserverSPI.prototype.gatherActive = function () { 26185 var _this = this; 26186 this.clearActive(); 26187 this.observations_.forEach(function (observation) { 26188 if (observation.isActive()) { 26189 _this.activeObservations_.push(observation); 26190 } 26191 }); 26192 }; 26193 /** 26194 * Invokes initial callback function with a list of ResizeObserverEntry 26195 * instances collected from active resize observations. 26196 * 26197 * @returns {void} 26198 */ 26199 ResizeObserverSPI.prototype.broadcastActive = function () { 26200 // Do nothing if observer doesn't have active observations. 26201 if (!this.hasActive()) { 26202 return; 26203 } 26204 var ctx = this.callbackCtx_; 26205 // Create ResizeObserverEntry instance for every active observation. 26206 var entries = this.activeObservations_.map(function (observation) { 26207 return new ResizeObserverEntry(observation.target, observation.broadcastRect()); 26208 }); 26209 this.callback_.call(ctx, entries, ctx); 26210 this.clearActive(); 26211 }; 26212 /** 26213 * Clears the collection of active observations. 26214 * 26215 * @returns {void} 26216 */ 26217 ResizeObserverSPI.prototype.clearActive = function () { 26218 this.activeObservations_.splice(0); 26219 }; 26220 /** 26221 * Tells whether observer has active observations. 26222 * 26223 * @returns {boolean} 26224 */ 26225 ResizeObserverSPI.prototype.hasActive = function () { 26226 return this.activeObservations_.length > 0; 26227 }; 26228 return ResizeObserverSPI; 26229}()); 26230 26231// Registry of internal observers. If WeakMap is not available use current shim 26232// for the Map collection as it has all required methods and because WeakMap 26233// can't be fully polyfilled anyway. 26234var observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim(); 26235/** 26236 * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation 26237 * exposing only those methods and properties that are defined in the spec. 26238 */ 26239var ResizeObserver = /** @class */ (function () { 26240 /** 26241 * Creates a new instance of ResizeObserver. 26242 * 26243 * @param {ResizeObserverCallback} callback - Callback that is invoked when 26244 * dimensions of the observed elements change. 26245 */ 26246 function ResizeObserver(callback) { 26247 if (!(this instanceof ResizeObserver)) { 26248 throw new TypeError('Cannot call a class as a function.'); 26249 } 26250 if (!arguments.length) { 26251 throw new TypeError('1 argument required, but only 0 present.'); 26252 } 26253 var controller = ResizeObserverController.getInstance(); 26254 var observer = new ResizeObserverSPI(callback, controller, this); 26255 observers.set(this, observer); 26256 } 26257 return ResizeObserver; 26258}()); 26259// Expose public methods of ResizeObserver. 26260[ 26261 'observe', 26262 'unobserve', 26263 'disconnect' 26264].forEach(function (method) { 26265 ResizeObserver.prototype[method] = function () { 26266 var _a; 26267 return (_a = observers.get(this))[method].apply(_a, arguments); 26268 }; 26269}); 26270 26271var index = (function () { 26272 // Export existing implementation if available. 26273 if (typeof global$1.ResizeObserver !== 'undefined') { 26274 return global$1.ResizeObserver; 26275 } 26276 return ResizeObserver; 26277})(); 26278 26279/* harmony default export */
vendor: 2,865 bytes, lines 26279-26288
26279const __WEBPACK_DEFAULT_EXPORT__ = (index); 26280 26281 26282/***/ }), 26283 26284/***/ 99437: 26285/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 26286 26287/*! For license information please see index.js.LICENSE.txt */ 26288!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}
26288var 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;
26288if(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];
26288this.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
26288:""}),"";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
26288: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
26288ding 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 26289{ 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})())); 26290 26291/***/ }), 26292 26293/***/ 99973: 26294/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { 26295 26296"use strict"; 26297/* harmony export */ __webpack_require__.d(__webpack_exports__, { 26298/* harmony export */ _q: () => (/* reexport safe */ _hooks_useEvent__WEBPACK_IMPORTED_MODULE_0__.A) 26299/* harmony export */ }); 26300/* harmony import */ var _hooks_useEvent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9449); 26301/* harmony import */ var _hooks_useMergedState__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64948); 26302/* harmony import */ var _ref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(19284); 26303/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53795); 26304/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(84445); 26305 26306 26307 26308 26309 26310 26311 26312/***/ }) 26313 26314/******/ }); 26315/************************************************************************/ 26316/******/ // The module cache 26317/******/ var __webpack_module_cache__ = {}; 26318/******/ 26319/******/ // The require function 26320/******/ function __webpack_require__(moduleId) { 26321/******/ // Check if module is in cache 26322/******/ var cachedModule = __webpack_module_cache__[moduleId]; 26323/******/ if (cachedModule !== undefined) { 26324/******/ return cachedModule.exports; 26325/******/ } 26326/******/ // Create a new module (and put it into the cache) 26327/******/ var module = __webpack_module_cache__[moduleId] = { 26328/******/ // no module.id needed 26329/******/ // no module.loaded needed 26330/******/ exports: {} 26331/******/ }; 26332/******/ 26333/******/ // Execute the module function 26334/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 26335/******/ 26336/******/ // Return the exports of the module 26337/******/ return module.exports; 26338/******/ } 26339/******/ 26340/******/ // expose the modules object (__webpack_modules__) 26341/******/ __webpack_require__.m = __webpack_modules__; 26342/******/ 26343/************************************************************************/ 26344/******/ /* webpack/runtime/compat get default export */ 26345/******/ (() => { 26346/******/ // getDefaultExport function for compatibility with non-harmony modules 26347/******/ __webpack_require__.n = (module) => {
26348/******/ var getter = module && module.__esModule ? 26349/******/ () => (module['default']) : 26350/******/ () => (module); 26351/******/ __webpack_require__.d(getter, { a: getter }); 26352/******/ return getter; 26353/******/ }; 26354/******/ })(); 26355/******/ 26356/******/ /* webpack/runtime/create fake namespace object */ 26357/******/ (() => { 26358/******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__); 26359/******/ var leafPrototypes; 26360/******/ // create a fake namespace object 26361/******/ // mode & 1: value is a module id, require it 26362/******/ // mode & 2: merge all properties of value into the ns 26363/******/ // mode & 4: return value when already ns object 26364/******/ // mode & 16: return value when it's Promise-like 26365/******/ // mode & 8|1: behave like require 26366/******/ __webpack_require__.t = function(value, mode) { 26367/******/ if(mode & 1) value = this(value); 26368/******/ if(mode & 8) return value; 26369/******/ if(typeof value === 'object' && value) { 26370/******/ if((mode & 4) && value.__esModule) return value; 26371/******/ if((mode & 16) && typeof value.then === 'function') return value; 26372/******/ } 26373/******/ var ns = Object.create(null); 26374/******/ __webpack_require__.r(ns); 26375/******/ var def = {}; 26376/******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)]; 26377/******/ for(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) { 26378/******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key]))); 26379/******/ } 26380/******/ def['default'] = () => (value); 26381/******/ __webpack_require__.d(ns, def); 26382/******/ return ns; 26383/******/ }; 26384/******/ })(); 26385/******/ 26386/******/ /* webpack/runtime/define property getters */ 26387/******/ (() => { 26388/******/ // define getter functions for harmony exports 26389/******/ __webpack_require__.d = (exports, definition) => { 26390/******/ for(var key in definition) { 26391/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 26392/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 26393/******/ } 26394/******/ } 26395/******/ }; 26396/******/ })(); 26397/******/ 26398/******/ /* webpack/runtime/ensure chunk */ 26399/******/ (() => { 26400/******/ __webpack_require__.f = {}; 26401/******/ // This file contains only the entry chunk. 26402/******/ // The chunk loading function for additional chunks 26403/******/ __webpack_require__.e = (chunkId) => { 26404/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { 26405/******/ __webpack_require__.f[key](chunkId, promises); 26406/******/ return promises; 26407/******/ }, [])); 26408/******/ }; 26409/******/ })(); 26410/******/ 26411/******/ /* webpack/runtime/get javascript chunk filename */ 26412/******/ (() => { 26413/******/ // This function allow to reference async chunks 26414/******/ __webpack_require__.u = (chunkId) => { 26415/******/ // return url for filenames based on template 26416/******/ return "" + chunkId + "." + {"326":"4bc08576","406":"f608243a","1261":"93733d8f","1554":"3e96d156","2440":"3e7d73ab","4639":"f9393676","5503":"37fabb60","5579":"52682a8b","5772":"56977352","6164":"27d93440","9506":"1a6e6559"}[chunkId] + ".js"; 26417/******/ }; 26418/******/ })(); 26419/******/ 26420/******/ /* webpack/runtime/get mini-css chunk filename */ 26421/******/ (() => { 26422/******/ // This function allow to reference async chunks 26423/******/ __webpack_require__.miniCssF = (chunkId) => { 26424/******/ // return url for filenames based on template 26425/******/ return "" + chunkId + "." + {"326":"5a7b3210","2440":"f5b2275a","5579":"2b74cea0","6164":"813fff74"}[chunkId] + ".css"; 26426/******/ }; 26427/******/ })(); 26428/******/ 26429/******/ /* webpack/runtime/global */ 26430/******/ (() => { 26431/******/ __webpack_require__.g = (function() { 26432/******/ if (typeof globalThis === 'object') return globalThis; 26433/******/ try { 26434/******/ return this || new Function('return this')(); 26435/******/ } catch (e) { 26436/******/ if (typeof window === 'object') return window; 26437/******/ } 26438/******/ })(); 26439/******/ })(); 26440/******/ 26441/******/ /* webpack/runtime/hasOwnProperty shorthand */ 26442/******/ (() => { 26443/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 26444/******/ })(); 26445/******/ 26446/******/ /* webpack/runtime/load script */ 26447/******/ (() => { 26448/******/ var inProgress = {}; 26449/******/ var dataWebpackPrefix = "@cckj/mf-mycj-components:"; 26450/******/ // loadScript function to load a script via script tag 26451/******/ __webpack_require__.l = (url, done, key, chunkId) => { 26452/******/ if(inProgress[url]) { inProgress[url].push(done); return; } 26453/******/ var script, needAttach; 26454/******/ if(key !== undefined) { 26455/******/ var scripts = document.getElementsByTagName("script"); 26456/******/ for(var i = 0; i < scripts.length; i++) { 26457/******/ var s = scripts[i]; 26458/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } 26459/******/ } 26460/******/ } 26461/******/ if(!script) { 26462/******/ needAttach = true; 26463/******/ script = document.createElement('script'); 26464/******/ 26465/******/ script.charset = 'utf-8'; 26466/******/ script.timeout = 120; 26467/******/ if (__webpack_require__.nc) { 26468/******/ script.setAttribute("nonce", __webpack_require__.nc); 26469/******/ } 26470/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); 26471/******/ 26472/******/ script.src = url; 26473/******/ } 26474/******/ inProgress[url] = [done]; 26475/******/ var onScriptComplete = (prev, event) => { 26476/******/ // avoid mem leaks in IE. 26477/******/ script.onerror = script.onload = null; 26478/******/ clearTimeout(timeout);
26479/******/ var doneFns = inProgress[url]; 26480/******/ delete inProgress[url]; 26481/******/ script.parentNode && script.parentNode.removeChild(script); 26482/******/ doneFns && doneFns.forEach((fn) => (fn(event))); 26483/******/ if(prev) return prev(event); 26484/******/ } 26485/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); 26486/******/ script.onerror = onScriptComplete.bind(null, script.onerror); 26487/******/ script.onload = onScriptComplete.bind(null, script.onload); 26488/******/ needAttach && document.head.appendChild(script); 26489/******/ }; 26490/******/ })(); 26491/******/ 26492/******/ /* webpack/runtime/make namespace object */ 26493/******/ (() => { 26494/******/ // define __esModule on exports 26495/******/ __webpack_require__.r = (exports) => { 26496/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 26497/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 26498/******/ } 26499/******/ Object.defineProperty(exports, '__esModule', { value: true }); 26500/******/ }; 26501/******/ })(); 26502/******/ 26503/******/ /* webpack/runtime/publicPath */ 26504/******/ (() => { 26505/******/ __webpack_require__.p = "https://sv-resource.oss-accelerate.aliyuncs.com/mf-components-v3/"; 26506/******/ })(); 26507/******/ 26508/******/ /* webpack/runtime/css loading */ 26509/******/ (() => { 26510/******/ if (typeof document === "undefined") return; 26511/******/ var createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => { 26512/******/ var linkTag = document.createElement("link"); 26513/******/ 26514/******/ linkTag.rel = "stylesheet"; 26515/******/ linkTag.type = "text/css"; 26516/******/ if (__webpack_require__.nc) { 26517/******/ linkTag.nonce = __webpack_require__.nc; 26518/******/ } 26519/******/ var onLinkComplete = (event) => { 26520/******/ // avoid mem leaks. 26521/******/ linkTag.onerror = linkTag.onload = null; 26522/******/ if (event.type === 'load') { 26523/******/ resolve(); 26524/******/ } else { 26525/******/ var errorType = event && event.type; 26526/******/ var realHref = event && event.target && event.target.href || fullhref; 26527/******/ var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + errorType + ": " + realHref + ")"); 26528/******/ err.name = "ChunkLoadError"; 26529/******/ err.code = "CSS_CHUNK_LOAD_FAILED"; 26530/******/ err.type = errorType; 26531/******/ err.request = realHref; 26532/******/ if (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag) 26533/******/ reject(err); 26534/******/ } 26535/******/ } 26536/******/ linkTag.onerror = linkTag.onload = onLinkComplete; 26537/******/ linkTag.href = fullhref; 26538/******/ 26539/******/ 26540/******/ if (oldTag) { 26541/******/ oldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling); 26542/******/ } else { 26543/******/ document.head.appendChild(linkTag); 26544/******/ } 26545/******/ return linkTag; 26546/******/ }; 26547/******/ var findStylesheet = (href, fullhref) => { 26548/******/ var existingLinkTags = document.getElementsByTagName("link"); 26549/******/ for(var i = 0; i < existingLinkTags.length; i++) { 26550/******/ var tag = existingLinkTags[i]; 26551/******/ var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href"); 26552/******/ if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return tag; 26553/******/ } 26554/******/ var existingStyleTags = document.getElementsByTagName("style"); 26555/******/ for(var i = 0; i < existingStyleTags.length; i++) { 26556/******/ var tag = existingStyleTags[i]; 26557/******/ var dataHref = tag.getAttribute("data-href"); 26558/******/ if(dataHref === href || dataHref === fullhref) return tag; 26559/******/ } 26560/******/ }; 26561/******/ var loadStylesheet = (chunkId) => { 26562/******/ return new Promise((resolve, reject) => { 26563/******/ var href = __webpack_require__.miniCssF(chunkId); 26564/******/ var fullhref = __webpack_require__.p + href; 26565/******/ if(findStylesheet(href, fullhref)) return resolve(); 26566/******/ createStylesheet(chunkId, fullhref, null, resolve, reject); 26567/******/ }); 26568/******/ } 26569/******/ // object to store loaded CSS chunks 26570/******/ var installedCssChunks = { 26571/******/ 6488: 0, 26572/******/ 7420: 0, 26573/******/ 8430: 0 26574/******/ }; 26575/******/ 26576/******/ __webpack_require__.f.miniCss = (chunkId, promises) => { 26577/******/ var cssChunks = {"326":1,"2440":1,"5579":1,"6164":1}; 26578/******/ if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]); 26579/******/ else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) { 26580/******/ promises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => { 26581/******/ installedCssChunks[chunkId] = 0; 26582/******/ }, (e) => { 26583/******/ delete installedCssChunks[chunkId]; 26584/******/ throw e; 26585/******/ })); 26586/******/ } 26587/******/ }; 26588/******/ 26589/******/ // no hmr 26590/******/ 26591/******/ // no prefetching 26592/******/ 26593/******/ // no preloaded
vendor: 4,947 bytes, lines 26594-26705
26594/******/ })(); 26595/******/ 26596/******/ /* webpack/runtime/jsonp chunk loading */ 26597/******/ (() => { 26598/******/ // no baseURI 26599/******/ 26600/******/ // object to store loaded and loading chunks 26601/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 26602/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 26603/******/ var installedChunks = { 26604/******/ 6488: 0, 26605/******/ 7420: 0, 26606/******/ 8430: 0 26607/******/ }; 26608/******/ 26609/******/ __webpack_require__.f.j = (chunkId, promises) => { 26610/******/ // JSONP chunk loading for javascript 26611/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; 26612/******/ if(installedChunkData !== 0) { // 0 means "already installed". 26613/******/ 26614/******/ // a Promise means "currently loading". 26615/******/ if(installedChunkData) { 26616/******/ promises.push(installedChunkData[2]); 26617/******/ } else { 26618/******/ if(true) { // all chunks have JS 26619/******/ // setup Promise in chunk cache 26620/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); 26621/******/ promises.push(installedChunkData[2] = promise); 26622/******/ 26623/******/ // start chunk loading 26624/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); 26625/******/ // create error before stack unwound to get useful stacktrace later 26626/******/ var error = new Error(); 26627/******/ var loadingEnded = (event) => { 26628/******/ if(__webpack_require__.o(installedChunks, chunkId)) { 26629/******/ installedChunkData = installedChunks[chunkId]; 26630/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; 26631/******/ if(installedChunkData) { 26632/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); 26633/******/ var realSrc = event && event.target && event.target.src; 26634/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; 26635/******/ error.name = 'ChunkLoadError'; 26636/******/ error.type = errorType; 26637/******/ error.request = realSrc; 26638/******/ installedChunkData[1](error); 26639/******/ } 26640/******/ } 26641/******/ }; 26642/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); 26643/******/ } 26644/******/ } 26645/******/ } 26646/******/ }; 26647/******/ 26648/******/ // no prefetching 26649/******/ 26650/******/ // no preloaded 26651/******/ 26652/******/ // no HMR 26653/******/ 26654/******/ // no HMR manifest 26655/******/ 26656/******/ // no on chunks loaded 26657/******/ 26658/******/ // install a JSONP callback for chunk loading 26659/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { 26660/******/ var [chunkIds, moreModules, runtime] = data; 26661/******/ // add "moreModules" to the modules object, 26662/******/ // then flag all "chunkIds" as loaded and fire callback 26663/******/ var moduleId, chunkId, i = 0; 26664/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { 26665/******/ for(moduleId in moreModules) { 26666/******/ if(__webpack_require__.o(moreModules, moduleId)) { 26667/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 26668/******/ } 26669/******/ } 26670/******/ if(runtime) var result = runtime(__webpack_require__); 26671/******/ } 26672/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 26673/******/ for(;i < chunkIds.length; i++) { 26674/******/ chunkId = chunkIds[i]; 26675/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 26676/******/ installedChunks[chunkId][0](); 26677/******/ } 26678/******/ installedChunks[chunkId] = 0; 26679/******/ } 26680/******/ 26681/******/ } 26682/******/ 26683/******/ var chunkLoadingGlobal = this["webpackChunk_cckj_mf_mycj_components"] = this["webpackChunk_cckj_mf_mycj_components"] || []; 26684/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 26685/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 26686/******/ })(); 26687/******/ 26688/************************************************************************/ 26689var __webpack_exports__ = {}; 26690// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 26691(() => { 26692"use strict"; 26693/* harmony import */ var _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44190); 26694 26695(function setRuntimePublicPath() { 26696 var host = _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay && _common_oss_controller__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Ay.host; 26697 if (host) { 26698 __webpack_require__.p = String(host).replace(/\/+$/, '') + '/mf-components-v3/'; 26699 } 26700})(); 26701})(); 26702 26703// This entry needs to be wrapped in an IIFE because it needs to be in strict mode. 26704(() => { 26705"use strict";
26706// ESM COMPAT FLAG 26707__webpack_require__.r(__webpack_exports__); 26708 26709// EXPORTS 26710__webpack_require__.d(__webpack_exports__, { 26711 "default": () => (/* binding */ Menu_Menu), 26712 fetchAuth: () => (/* reexport */ authority_utils/* fetchAuth */.tw), 26713 goNoAuthPath: () => (/* reexport */ authority_utils/* goNoAuthPath */.lU), 26714 hasAuth: () => (/* reexport */ authority_utils/* hasAuth */.Vm) 26715}); 26716 26717// EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react"} 26718var external_root_React_commonjs2_react_commonjs_react_amd_react_ = __webpack_require__(15442); 26719var external_root_React_commonjs2_react_commonjs_react_amd_react_default = /*#__PURE__*/__webpack_require__.n(external_root_React_commonjs2_react_commonjs_react_amd_react_); 26720// EXTERNAL MODULE: ./src/common/index.ts 26721var common = __webpack_require__(81002); 26722// EXTERNAL MODULE: ./src/universalComps/Iconfont/index.tsx 26723var Iconfont = __webpack_require__(12191); 26724// EXTERNAL MODULE: ./src/common/login-info-controller.ts 26725var login_info_controller = __webpack_require__(12097); 26726;// ./src/components/Menu/hooks/useIsShowMenuItem.ts 26727 26728var useIsShowOrangeConnex = function useIsShowOrangeConnex(routerName) { 26729 if (!/orangeconnex/i.test(routerName)) return true; 26730 var flag = login_info_controller/* default */.A.info('loginName') == 'EbayOC001'; 26731 return flag; 26732}; 26733var useIsShowMiaoshou = function useIsShowMiaoshou(routerName, siteCheck) { 26734 if (!/miaoshou/i.test(routerName)) return true; 26735 var flag = (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJCN')) || siteCheck.isSite('CJ') && (window === null || window === void 0 ? void 0 : window.isChina); 26736 return flag; 26737}; 26738var popoverFixed = function popoverFixed(boxDom) { 26739 var popoverDom = boxDom === null || boxDom === void 0 ? void 0 : boxDom.getElementsByClassName('popoverDom')[0]; 26740 var height = popoverDom === null || popoverDom === void 0 ? void 0 : popoverDom.clientHeight; 26741 var getBoundingClientRect = boxDom.getBoundingClientRect(); 26742 if (!popoverDom) return; 26743 popoverDom.style.position = 'fixed'; 26744 popoverDom.style.left = getBoundingClientRect.left + boxDom.offsetWidth / 2 + 'px'; 26745 popoverDom.style.top = getBoundingClientRect.top - height + 'px'; 26746 popoverDom.style.bottom = 'auto'; 26747}; 26748var isShowAuthorizeType = function isShowAuthorizeType(showAuthorizeListData, routeName) { 26749 if (showAuthorizeListData === void 0) { 26750 showAuthorizeListData = {}; 26751 } 26752 var type = String(routeName).toLocaleLowerCase(); 26753 if (showAuthorizeListData[type]) { 26754 return showAuthorizeListData[type].isAuthor; 26755 } else { 26756 for (var key in showAuthorizeListData) { 26757 if (Object.prototype.hasOwnProperty.call(showAuthorizeListData, key) && showAuthorizeListData[key].otherValue.includes(type)) { 26758 return showAuthorizeListData[key].isAuthor; 26759 } 26760 } 26761 } 26762 return true; 26763}; 26764// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsVip.ts 26765var useIsVip = __webpack_require__(95092); 26766;// ./src/components/Menu/MenuCollapsed/index.less 26767// extracted by mini-css-extract-plugin 26768/* 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"}); 26769// EXTERNAL MODULE: ../../node_modules/classnames/index.js 26770var classnames = __webpack_require__(53373); 26771var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 26772// EXTERNAL MODULE: ./src/hook/use-platform-href.ts 26773var use_platform_href = __webpack_require__(50137); 26774// EXTERNAL MODULE: ./src/components/Menu/hooks/useMyCjReactRoute.ts 26775var useMyCjReactRoute = __webpack_require__(92252); 26776;// ./src/components/Menu/MenuNormal/index.less 26777// extracted by mini-css-extract-plugin 26778/* 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"}); 26779;// ./src/components/Menu/hooks/useMenuChilds.ts 26780function useMenuChilds(_a) { 26781 var selector = _a.selector, 26782 _b = _a.useNewLogic, 26783 useNewLogic = _b === void 0 ? false : _b; 26784 var handlerMouseMove = function handlerMouseMove(e, addTop, isCjSpecial) { 26785 if (addTop === void 0) { 26786 addTop = 0; 26787 } 26788 var shouldUseNewLogic = isCjSpecial !== undefined ? isCjSpecial : useNewLogic; 26789 var target = e.currentTarget; 26790 var specialMenuBox = target.querySelector(selector); 26791 var rect = target.getBoundingClientRect(); 26792 if (!specialMenuBox) return; 26793 if (shouldUseNewLogic) { 26794 specialMenuBox.style.position = 'fixed'; 26795 specialMenuBox.style.left = "".concat(rect.left + target.offsetWidth, "px"); 26796 specialMenuBox.style.display = 'block'; 26797 specialMenuBox.style.visibility = 'hidden'; 26798 var windowHeight_1 = window.innerHeight; 26799 specialMenuBox.style.maxHeight = "".concat(windowHeight_1, "px"); 26800 specialMenuBox.style.overflow = 'auto'; 26801 specialMenuBox.style.overflowY = 'auto'; 26802 specialMenuBox.style.overflowX = 'hidden'; 26803 requestAnimationFrame(function () { 26804 requestAnimationFrame(function () { 26805 var boxHeight = specialMenuBox.scrollHeight; 26806 var actualHeight = Math.min(boxHeight, windowHeight_1); 26807 var top = rect.top - 10 + addTop; 26808 if (top + actualHeight > windowHeight_1) { 26809 top = windowHeight_1 - actualHeight; 26810 if (top < 0) { 26811 top = 0; 26812 } 26813 } 26814 if (top < 0) { 26815 top = 0; 26816 } 26817 specialMenuBox.style.top = "".concat(top, "px"); 26818 specialMenuBox.style.visibility = 'visible'; 26819 }); 26820 }); 26821 } else { 26822 specialMenuBox.style.position = 'fixed'; 26823 specialMenuBox.style.left = "".concat(rect.left + target.offsetWidth, "px"); 26824 var windowHeight = window.innerHeight; 26825 var boxHeight = specialMenuBox.offsetHeight; 26826 if (boxHeight + rect.top > windowHeight) { 26827 specialMenuBox.style.top = "".concat(windowHeight - boxHeight, "px"); 26828 } else { 26829 specialMenuBox.style.top = "".concat(rect.top - 10 + addTop, "px"); 26830 } 26831 specialMenuBox.style.display = 'block'; 26832 } 26833 }; 26834 var handlerMouseLeave = function handlerMouseLeave(target) { 26835 var childBoxThree = target.querySelector(selector); 26836 if (!childBoxThree) return; 26837 childBoxThree.style.display = 'none'; 26838 childBoxThree.style.maxHeight = ''; 26839 childBoxThree.style.overflowY = ''; 26840 childBoxThree.style.overflow = ''; 26841 childBoxThree.style.overflowX = ''; 26842 childBoxThree.style.visibility = ''; 26843 }; 26844 return { 26845 handlerMouseMove: handlerMouseMove, 26846 handlerMouseLeave: handlerMouseLeave 26847 }; 26848} 26849// EXTERNAL MODULE: ./src/universalComps/Tooltip/index.tsx 26850var Tooltip = __webpack_require__(59912); 26851// EXTERNAL MODULE: ./src/components/Menu/MenuNormal/MultipleMenuItem.tsx + 3 modules 26852var MultipleMenuItem = __webpack_require__(16754); 26853// EXTERNAL MODULE: ./src/common/gtag.ts 26854var gtag = __webpack_require__(11543); 26855;// ./src/components/ExtensionGuide/detect.ts 26856var CRX_ATTR = 'data-cjcrx'; 26857var CRX_INSTALLED_VALUE = 'addYes'; 26858var EXTENSION_STORE_URL = 'https://chrome.google.com/webstore/detail/cjdropshipping/mbndljkgaoailfnpeodnlejigmkdpokb?utm_source=chrome-ntp-icon'; 26859var SOURCE_PLATFORM_URLS = { 26860 '1688': 'https://www.1688.com/',
26861 taobao: 'https://www.taobao.com/', 26862 aliexpress: 'https://alitems.com/g/1e8d11449400282ca80416525dc3e8/', 26863 ebay: 'https://www.ebay.com/' 26864}; 26865var isExtensionInstalled = function isExtensionInstalled() { 26866 var _a; 26867 return ((_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.getAttribute(CRX_ATTR)) === CRX_INSTALLED_VALUE; 26868}; 26869var DEFAULT_WAIT_MS = 3000; 26870var defaultWaitMs = function defaultWaitMs() { 26871 try { 26872 var raw = typeof process !== 'undefined' && process.env && process.env.EXT_GUIDE_WAIT_MS; 26873 var n = Number(raw); 26874 return raw && !Number.isNaN(n) && n >= 0 ? n : DEFAULT_WAIT_MS; 26875 } catch (e) { 26876 return DEFAULT_WAIT_MS; 26877 } 26878}; 26879var detect_waitForExtension = function waitForExtension(timeoutMs) { 26880 if (timeoutMs === void 0) { 26881 timeoutMs = defaultWaitMs(); 26882 } 26883 return new Promise(function (resolve) { 26884 if (isExtensionInstalled()) return resolve(true); 26885 if (typeof MutationObserver === 'undefined' || !(document === null || document === void 0 ? void 0 : document.body)) return resolve(false); 26886 var settled = false; 26887 var finish = function finish(installed) { 26888 if (settled) return; 26889 settled = true; 26890 observer.disconnect(); 26891 document.removeEventListener('DOMContentLoaded', check); 26892 window.removeEventListener('load', check); 26893 clearTimeout(timer); 26894 resolve(installed); 26895 }; 26896 var check = function check() { 26897 if (isExtensionInstalled()) finish(true); 26898 }; 26899 var observer = new MutationObserver(check); 26900 observer.observe(document.body, { 26901 attributes: true, 26902 attributeFilter: [CRX_ATTR] 26903 }); 26904 document.addEventListener('DOMContentLoaded', check); 26905 window.addEventListener('load', check); 26906 var timer = setTimeout(function () { 26907 return finish(false); 26908 }, timeoutMs); 26909 }); 26910}; 26911var isChromeBrowser = function isChromeBrowser() { 26912 return /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); 26913}; 26914var detect_isAllowedTargetUrl = function isAllowedTargetUrl(url) { 26915 return !!url && Object.values(SOURCE_PLATFORM_URLS).indexOf(url) > -1; 26916}; 26917// EXTERNAL MODULE: external {"root":"ReactDOM","commonjs2":"react-dom","commonjs":"react-dom","amd":"react-dom"} 26918var external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_ = __webpack_require__(56003); 26919var 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_); 26920// EXTERNAL MODULE: ./src/universalComps/button/index.tsx 26921var universalComps_button = __webpack_require__(37183); 26922;// ./src/components/ExtensionGuide/storage.ts 26923var RESUME_STORAGE_KEY = 'sourcingUrl'; 26924var saveResumeUrl = function saveResumeUrl(targetUrl) { 26925 try { 26926 sessionStorage.setItem(RESUME_STORAGE_KEY, targetUrl); 26927 } catch (e) {} 26928}; 26929var storage_takeResumeUrl = function takeResumeUrl() { 26930 try { 26931 var value = sessionStorage.getItem(RESUME_STORAGE_KEY); 26932 sessionStorage.removeItem(RESUME_STORAGE_KEY); 26933 return value; 26934 } catch (e) { 26935 return null; 26936 } 26937}; 26938;// ./src/components/ExtensionGuide/index.less 26939// extracted by mini-css-extract-plugin 26940/* harmony default export */ const ExtensionGuide = ({"mask":"mask--rGfYk","box":"box--l7olb","title":"title--QbR7E","text":"text--eByoV","footer":"footer--yKQKt","btn":"btn--a0nM5"}); 26941;// ./src/components/ExtensionGuide/ExtensionGuideModal.tsx 26942 26943 26944 26945 26946 26947var COPY = { 26948 install: { 26949 title: function title() { 26950 return window.i18next.t('common-top-install-cj-chrome-extension', 'Install CJ Chrome Extension'); 26951 }, 26952 text: function text() { 26953 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?'); 26954 } 26955 }, 26956 refresh: { 26957 title: function title() { 26958 return window.i18next.t('common-top-refresh-page-required', 'Refresh Page Required:'); 26959 }, 26960 text: function text() { 26961 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.'); 26962 } 26963 }, 26964 noChrome: { 26965 title: function title() { 26966 return window.i18next.t('common-top-browser-not-supported', 'Browser Not Supported'); 26967 }, 26968 text: function text() { 26969 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.'); 26970 } 26971 }, 26972 resume: { 26973 title: function title() { 26974 return window.i18next.t('common-top-extension-ready', 'CJ Chrome Extension Is Ready'); 26975 }, 26976 text: function text() { 26977 return window.i18next.t('common-top-extension-ready-continue-to-the-platform-you
26977-selected', 'The extension is installed. Continue to the platform you selected.'); 26978 } 26979 } 26980}; 26981var ExtensionGuideModal = function ExtensionGuideModal(_a) { 26982 var targetUrl = _a.targetUrl, 26983 onClose = _a.onClose, 26984 initialStep = _a.initialStep; 26985 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(initialStep || (isChromeBrowser() ? 'install' : 'noChrome')), 26986 step = _b[0], 26987 setStep = _b[1]; 26988 var handleInstall = function handleInstall() { 26989 window.open(EXTENSION_STORE_URL, '_blank', 'noreferrer'); 26990 setStep('refresh'); 26991 }; 26992 var handleRefresh = function handleRefresh() { 26993 if (targetUrl) saveResumeUrl(targetUrl); 26994 onClose(); 26995 window.location.reload(); 26996 }; 26997 var handleContinue = function handleContinue() { 26998 if (targetUrl) window.open(targetUrl, '_blank', 'noreferrer'); 26999 onClose(); 27000 }; 27001 var copy = COPY[step]; 27002 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27003 className: ExtensionGuide.mask, 27004 "data-testid": "extension-guide-modal", 27005 onClick: function onClick(e) { 27006 if (e.target === e.currentTarget) onClose(); 27007 } 27008 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27009 className: ExtensionGuide.box 27010 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("h3", { 27011 className: ExtensionGuide.title, 27012 "data-testid": "extension-guide-title" 27013 }, copy.title()), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("p", { 27014 className: ExtensionGuide.text, 27015 "data-testid": "extension-guide-text" 27016 }, copy.text()), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27017 className: ExtensionGuide.footer 27018 }, 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, { 27019 type: "primary", 27020 title: window.i18next.t('common-top-install-now', 'Install Now'), 27021 onClick: handleInstall, 27022 className: ExtensionGuide.btn, 27023 "data-testid": "extension-guide-install", 27024 "data-gtag-element": "plugin_install" 27025 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27026 type: "ghost", 27027 title: window.i18next.t('common-top-cancel', 'Cancel'), 27028 onClick: onClose, 27029 className: ExtensionGuide.btn, 27030 "data-testid": "extension-guide-cancel", 27031 "data-gtag-element": "plugin_modal_cancel" 27032 }))), 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, { 27033 type: "primary", 27034 title: window.i18next.t('common-top-refresh', 'Refresh'), 27035 onClick: handleRefresh, 27036 className: ExtensionGuide.btn, 27037 "data-testid": "extension-guide-refresh", 27038 "data-gtag-element": "plugin_refresh" 27039 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27040 type: "ghost", 27041 title: window.i18next.t('common-top-later', 'Later'), 27042 onClick: onClose, 27043 className: ExtensionGuide.btn, 27044 "data-testid": "extension-guide-later", 27045 "data-gtag-element": "plugin_refresh_later" 27046 }))), 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, { 27047 type: "primary", 27048 title: window.i18next.t('common-top-continue', 'Continue'), 27049 onClick: handleContinue, 27050 className: ExtensionGuide.btn, 27051 "data-testid": "extension-guide-continue", 27052 "data-gtag-element": "plugin_resume_continue" 27053 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27054 type: "ghost", 27055 title: window.i18next.t('common-top-later', 'Later'), 27056 onClick: onClose, 27057 className: ExtensionGuide.btn, 27058 "data-testid": "extension-guide-later", 27059 "data-gtag-element": "plugin_resume_later" 27060 }))), step === 'noChrome' && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(universalComps_button/* default */.A, { 27061 type: "primary", 27062 title: window.i18next.t('common-top-close', 'Close'), 27063 onClick: onClose, 27064 className: ExtensionGuide.btn, 27065 "data-testid": "extension-guide-close", 27066 "data-gtag-element": "plugin_no_chrome_close" 27067 }))))); 27068}; 27069/* harmony default export */ const ExtensionGuide_ExtensionGuideModal = (ExtensionGuideModal); 27070;// ./src/components/ExtensionGuide/show.tsx 27071 27072 27073 27074 27075var SINGLETON_KEY = '__CJ_EXTENSION_GUIDE_CONTAINER__'; 27076var getActiveContainer = function getActiveContainer() { 27077 var container = window[SINGLETON_KEY]; 27078 return container && container.isConnected ? container : null; 27079};
27080var mount = function mount(targetUrl, initialStep) { 27081 if (getActiveContainer()) return; 27082 var container = document.createElement('div'); 27083 document.body.appendChild(container); 27084 window[SINGLETON_KEY] = container; 27085 var close = function close() { 27086 external_root_ReactDOM_commonjs2_react_dom_commonjs_react_dom_amd_react_dom_default().unmountComponentAtNode(container); 27087 if (container.parentNode) container.parentNode.removeChild(container); 27088 window[SINGLETON_KEY] = null; 27089 }; 27090 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, { 27091 targetUrl: targetUrl, 27092 initialStep: initialStep, 27093 onClose: close 27094 }), container); 27095}; 27096var show_showExtensionGuide = function showExtensionGuide(targetUrl) { 27097 if (isExtensionInstalled()) { 27098 if (targetUrl) window.open(targetUrl, '_blank', 'noreferrer'); 27099 return; 27100 } 27101 mount(targetUrl); 27102}; 27103var show_showResumePrompt = function showResumePrompt(targetUrl) { 27104 mount(targetUrl, 'resume'); 27105}; 27106;// ./src/components/ExtensionGuide/resume.ts 27107 27108 27109 27110 27111var consumeResumeUrl = function consumeResumeUrl() { 27112 var targetUrl = takeResumeUrl(); 27113 if (!isAllowedTargetUrl(targetUrl)) return; 27114 waitForExtension().then(function (installed) { 27115 if (installed) { 27116 showResumePrompt(targetUrl); 27117 } else { 27118 showExtensionGuide(targetUrl); 27119 } 27120 }); 27121}; 27122;// ./src/components/ExtensionGuide/menu.ts 27123 27124 27125var interceptExtensionMenuClick = function interceptExtensionMenuClick(event, menu) { 27126 var _a; 27127 if (!(menu === null || menu === void 0 ? void 0 : menu.requireExtension)) return false; 27128 if (!detect_isAllowedTargetUrl(menu.route)) return false; 27129 if (isExtensionInstalled()) return false; 27130 (_a = event === null || event === void 0 ? void 0 : event.preventDefault) === null || _a === void 0 ? void 0 : _a.call(event); 27131 show_showExtensionGuide(menu.route); 27132 return true; 27133}; 27134;// ./src/components/ExtensionGuide/index.ts 27135 27136 27137 27138 27139;// ./src/components/Menu/MenuNormal/MenuItem.tsx 27140var __assign = undefined && undefined.__assign || function () { 27141 __assign = Object.assign || function (t) { 27142 for (var s, i = 1, n = arguments.length; i < n; i++) { 27143 s = arguments[i]; 27144 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27145 } 27146 return t; 27147 }; 27148 return __assign.apply(this, arguments); 27149}; 27150 27151 27152 27153 27154 27155 27156 27157 27158 27159 27160 27161 27162 27163 27164var TipWrap = function TipWrap(_a) { 27165 var children = _a.children, 27166 tip = _a.tip; 27167 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); 27168 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Tooltip/* default */.A, { 27169 content: tip, 27170 className: Menu_MenuNormal.menuTip, 27171 immediateHide: true, 27172 noImmediateShow: true, 27173 noImmediateShowDelay: 300 27174 }, children); 27175}; 27176var MenuItem = function MenuItem(_a) { 27177 var _b, _c; 27178 var _d, _e; 27179 var childMenu = _a.childMenu, 27180 isActive = _a.isActive, 27181 _f = _a.showAuthorizeListData, 27182 showAuthorizeListData = _f === void 0 ? {} : _f, 27183 isSpecial = _a.isSpecial; 27184 var isVip = (0,useIsVip/* default */.A)(); 27185 var isShowOrange = useIsShowOrangeConnex(childMenu.name); 27186 var isShowAuthorize = isShowAuthorizeType(showAuthorizeListData, childMenu.name); 27187 var hookMenusChilds = useMenuChilds({ 27188 selector: '.childBoxThree' 27189 }); 27190 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 27191 hookMyCjRoute.viewCogs(childMenu); 27192 var isPopover = !!(childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip); 27193 var isShowNew = (0,common/* isShowNewFeatures */.t_)() && hookMyCjRoute.isNewCogs; 27194 var hasChilds = childMenu.childs && childMenu.childs.length > 0; 27195 var platformHref = (0,use_platform_href/* default */.A)(); 27196 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 27197 var isZesty = window.siteCheck.isSite('ZS'); 27198 if (!isShowOrange || !isShowAuthorize) return null; 27199 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27200 className: classnames_default()(Menu_MenuNormal.MenuItem, (_b = {}, _b[Menu_MenuNormal.vip] = isVip, _b[Menu_MenuNormal.zs] = isZesty, _b)), 27201 onMouseEnter: function onMouseEnter(event) { 27202 leaveTimer.current && clearTimeout(leaveTimer.current); 27203 hasChilds && hookMenusChilds.handlerMouseMove(event); 27204 }, 27205 onMouseLeave: function onMouseLeave(event) { 27206 var target = event.currentTarget; 27207 leaveTimer.current = setTimeout(function () { 27208 hasChilds && hookMenusChilds.handlerMouseLeave(target); 27209 }, 200); 27210 } 27211 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(TipWrap, { 27212 tip: ((_d = childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip) === null || _d === void 0 ? void 0 : _d.call(childMenu)) || '' 27213 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27214 className: classnames_default()(Menu_MenuNormal.box, (_c = {}, _c[Menu_MenuNormal.active] = isActive(childMenu.name), _c[Menu_MenuNormal.zs] = isZesty, _c)), 27215 onClick: function onClick(e) { 27216 e.stopPropagation(); 27217 }, 27218 onMouseMove: function onMouseMove(event) { 27219 if (isPopover) { 27220 popoverFixed(event.currentTarget); 27221 } 27222 }, 27223 "data-route": childMenu.name, 27224 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27225 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27226 className: Menu_MenuNormal.title 27227 }
27227, hasChilds && !childMenu.route && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27228 className: Menu_MenuNormal.titleSpan 27229 }, childMenu.nameTrans())), hasChilds && childMenu.route && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({ 27230 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27231 target: childMenu.target || '_self' 27232 }, hookMyCjRoute.getAProps(childMenu.route)), childMenu.nameTrans())), !hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({ 27233 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27234 target: childMenu.target || '_self' 27235 }, hookMyCjRoute.getAProps(childMenu.route), childMenu.trackingClick ? { 27236 'data-tracking-element-click': childMenu.trackingClick 27237 } : {}, { 27238 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27239 }), isSpecial ? (0,MultipleMenuItem/* showName */.$)({
27240 key: childMenu.key, 27241 name: (_e = childMenu.nameTrans) === null || _e === void 0 ? void 0 : _e.call(childMenu), 27242 count: childMenu.count 27243 }) : childMenu.nameTrans(), childMenu.isNew && isShowNew && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27244 className: Menu_MenuNormal.newfeatures 27245 }, "New")))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27246 className: classnames_default()(Menu_MenuNormal.arrow), 27247 style: { 27248 transform: 'rotate(-90deg)' 27249 } 27250 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 27251 type: "xiangxia" 27252 }))), isZesty && isActive(childMenu.name) && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27253 className: Menu_MenuNormal.activeLeftLineMenuItem 27254 }))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27255 className: classnames_default()(Menu_MenuNormal.childBoxThree, 'childBoxThree') 27256 }, childMenu.childs.map(function (threeMenu) { 27257 var _a; 27258 if (typeof threeMenu.isHide === 'function' ? threeMenu.isHide() : threeMenu.isHide) return null; 27259 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27260 key: threeMenu.name, 27261 className: classnames_default()(Menu_MenuNormal.threeMenu, (_a = {}, _a[Menu_MenuNormal.active] = isActive(threeMenu.name), _a)), 27262 onClick: function onClick(e) { 27263 e.stopPropagation(); 27264 } 27265 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", __assign({
27266 href: platformHref((0,common/* getRouteHref */.hQ)(threeMenu)), 27267 target: threeMenu.target || '_self' 27268 }, hookMyCjRoute.getAProps(threeMenu.route), { 27269 "data-gtag-element": (0,gtag/* toGtagElement */.l)(threeMenu.name), 27270 onClick: function onClick(e) { 27271 var _a, _b; 27272 if (interceptExtensionMenuClick(e, threeMenu)) return; 27273 (_b = (_a = hookMyCjRoute.getAProps(threeMenu.route)).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e); 27274 } 27275 }), threeMenu.nameTrans())); 27276 })))); 27277}; 27278/* harmony default export */ const MenuNormal_MenuItem = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuItem)); 27279// EXTERNAL MODULE: ./src/hook/use-site-check.ts 27280var use_site_check = __webpack_require__(82058); 27281;// ./src/components/Menu/MenuCollapsed/MenuItem.tsx 27282var MenuItem_assign = undefined && undefined.__assign || function () { 27283 MenuItem_assign = Object.assign || function (t) { 27284 for (var s, i = 1, n = arguments.length; i < n; i++) { 27285 s = arguments[i]; 27286 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27287 } 27288 return t; 27289 }; 27290 return MenuItem_assign.apply(this, arguments); 27291}; 27292var __spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 27293 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 27294 if (ar || !(i in from)) { 27295 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 27296 ar[i] = from[i]; 27297 } 27298 } 27299 return to.concat(ar || Array.prototype.slice.call(from)); 27300}; 27301 27302 27303 27304 27305 27306 27307 27308 27309 27310 27311 27312 27313 27314 27315 27316var MenuItem_MenuItem = function MenuItem(_a) { 27317 var _b, _c, _d, _e; 27318 var _f, _g; 27319 var childMenu = _a.childMenu, 27320 isActive = _a.isActive, 27321 showAuthorizeListData = _a.showAuthorizeListData, 27322 isSpecial = _a.isSpecial; 27323 var isVip = (0,useIsVip/* default */.A)(); 27324 var siteCheck = (0,use_site_check/* default */.A)(); 27325 var isShowOrange = useIsShowOrangeConnex(childMenu.name); 27326 var isShowAuthorize = isShowAuthorizeType(showAuthorizeListData, childMenu.name); 27327 var isZesty = siteCheck.isSite('ZS'); 27328 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))]), 27329 threeClass = _h[0], 27330 setThreeClass = _h[1]; 27331 var hookMenusChilds = useMenuChilds({ 27332 selector: '.childBoxThree', 27333 useNewLogic: true 27334 }); 27335 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 27336 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 27337 hookMyCjRoute.viewCogs(childMenu); 27338 var hasChilds = childMenu.childs && childMenu.childs.length > 0; 27339 var platformHref = (0,use_platform_href/* default */.A)(); 27340 var isShowNew = (0,common/* isShowNewFeatures */.t_)() && hookMyCjRoute.isNewCogs; 27341 var childCurrentRoute = (childMenu === null || childMenu === void 0 ? void 0 : childMenu.name) || ''; 27342 if (!isShowOrange || !isShowAuthorize) return null; 27343 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27344 className: classnames_default()(Menu_MenuCollapsed.childItem, (_c = {}, _c[Menu_MenuCollapsed.vip] = isVip, _c[Menu_MenuCollapsed.active] = isActive(childCurrentRoute), _c[Menu_MenuCollapsed.zs] = isZesty, _c)), 27345 onMouseEnter: function onMouseEnter(event) { 27346 leaveTimer.current && clearTimeout(leaveTimer.current); 27347 setThreeClass(__spreadArray(__spreadArray([], threeClass, true), [Menu_MenuCollapsed.active], false)); 27348 hasChilds && hookMenusChilds.handlerMouseMove(event); 27349 }, 27350 onMouseLeave: function onMouseLeave(event) { 27351 var target = event.currentTarget; 27352 setThreeClass(__spreadArray([], threeClass.filter(function (_) { 27353 return _ !== Menu_MenuCollapsed.active; 27354 }), true)); 27355 leaveTimer.current = setTimeout(function () { 27356 hasChilds && hookMenusChilds.handlerMouseLeave(target); 27357 }, 200); 27358 }, 27359 onClick: function onClick(e) { 27360 e.stopPropagation(); 27361 if (childMenu.name === childCurrentRoute) return; 27362 } 27363 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(TipWrap, { 27364 tip: ((_f = childMenu === null || childMenu === void 0 ? void 0 : childMenu.tip) === null || _f === void 0 ? void 0 : _f.call(childMenu)) || '' 27365 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27366 className: Menu_MenuCollapsed.childItemBox 27367 }
27367, hasChilds && !childMenu.route ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27368 className: classnames_default()(Menu_MenuCollapsed.nameTitle, (_d = {}, _d[Menu_MenuCollapsed.zs] = isZesty, _d)) 27369 }, childMenu.nameTrans())) : (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MenuItem_assign({ 27370 href: platformHref((0,common/* getRouteHref */.hQ)(childMenu)), 27371 className: classnames_default()(hasChilds ? Menu_MenuCollapsed.nameTitle : Menu_MenuCollapsed.name, (_e = {}, _e[Menu_MenuCollapsed.zs] = isZesty, _e)), 27372 target: childMenu.target || '_self' 27373 }, hookMyCjRoute.getAProps(childMenu.route), childMenu.trackingClick ? { 27374 'data-tracking-element-click': childMenu.trackingClick 27375 } : {}, { 27376 "data-gtag-element": (0,gtag/* toGtagElement */.l)(childMenu.name) 27377 }), isSpecial ? (0,MultipleMenuItem/* showName */.$)({ 27378 key: childMenu.key, 27379 name: (_g = childMenu.nameTrans) === null || _g === void 0 ? void 0 : _g.call(childMenu), 27380 count: childMenu.count 27381 }) : childMenu.nameTrans(), childMenu.isNew && isShowNew && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 27382 className: Menu_MenuCollapsed.newfeatures 27383 }, "New"))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27384 className: Menu_MenuCollapsed.arrowRight 27385 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 27386 type: "jiantou_you" 27387 }))))), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27388 className: classnames_default()(threeClass.join(' '), 'childBoxThree') 27389 }, childMenu.childs.map(function (threeMenu) { 27390 var _a, _b; 27391 if (typeof threeMenu.isHide === 'function' ? threeMenu.isHide() : threeMenu.isHide) return null; 27392 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27393 key: threeMenu.name, 27394 className: classnames_default()(Menu_MenuCollapsed.childItemThree, (_a = {}, _a[Menu_MenuCollapsed.active] = isActive(threeMenu.name), _a[Menu_MenuCollapsed.vip] = isVip, _a)), 27395 onClick: function onClick(e) { 27396 e.stopPropagation(); 27397 } 27398 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 27399 className: Menu_MenuCollapsed.childItemBoxThree 27400 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", MenuItem_assign({
27401 href: platformHref((0,common/* getRouteHref */.hQ)(threeMenu)), 27402 className: classnames_default()(Menu_MenuCollapsed.nameThree, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b)), 27403 target: threeMenu.target || '_self' 27404 }, hookMyCjRoute.getAProps(threeMenu.route), { 27405 "data-gtag-element": (0,gtag/* toGtagElement */.l)(threeMenu.name), 27406 onClick: function onClick(e) { 27407 var _a, _b; 27408 if (interceptExtensionMenuClick(e, threeMenu)) return; 27409 (_b = (_a = hookMyCjRoute.getAProps(threeMenu.route)).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e); 27410 } 27411 }), threeMenu.nameTrans()))); 27412 })))); 27413}; 27414/* harmony default export */ const MenuCollapsed_MenuItem = (MenuItem_MenuItem); 27415// EXTERNAL MODULE: ./src/common/cj-href.ts 27416var cj_href = __webpack_require__(84963); 27417// EXTERNAL MODULE: ./src/components/CjHeader/hooks/use-parent-platform.ts 27418var use_parent_platform = __webpack_require__(6925); 27419// EXTERNAL MODULE: ./src/common/oss-controller.ts 27420var oss_controller = __webpack_require__(44190); 27421// EXTERNAL MODULE: ./src/components/CjHeader/services.ts 27422var services = __webpack_require__(62934); 27423// EXTERNAL MODULE: ./src/components/CjHeader/const/show-authorize-list.ts 27424var show_authorize_list = __webpack_require__(84266); 27425;// ./src/components/CjHeader/const/show-authorize-all-list.ts 27426var show_authorize_all_list_assign = undefined && undefined.__assign || function () { 27427 show_authorize_all_list_assign = Object.assign || function (t) { 27428 for (var s, i = 1, n = arguments.length; i < n; i++) { 27429 s = arguments[i]; 27430 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27431 } 27432 return t; 27433 }; 27434 return show_authorize_all_list_assign.apply(this, arguments); 27435}; 27436var __rest = undefined && undefined.__rest || function (s, e) { 27437 var t = {}; 27438 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 27439 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { 27440 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 27441 } 27442 return t; 27443}; 27444 27445var mabang = show_authorize_list/* default */.A.mabang, 27446 otherShowAuthorizeList = __rest(show_authorize_list/* default */.A, ["mabang"]); 27447/* harmony default export */ const show_authorize_all_list = (show_authorize_all_list_assign(show_authorize_all_list_assign({}, otherShowAuthorizeList), { 27448 others: { 27449 Title: 'Others', 27450 value: 'others', 27451 otherValue: [], 27452 isAuthor: true, 27453 isShow: true 27454 }, 27455 mabang: mabang 27456})); 27457// EXTERNAL MODULE: ../../node_modules/js-cookie/dist/js.cookie.mjs 27458var js_cookie = __webpack_require__(3478); 27459// EXTERNAL MODULE: ./src/common/platform-show.ts 27460var platform_show = __webpack_require__(37597); 27461;// ./src/components/Menu/bar.config.cf.ts 27462var bar_config_cf_assign = undefined && undefined.__assign || function () { 27463 bar_config_cf_assign = Object.assign || function (t) { 27464 for (var s, i = 1, n = arguments.length; i < n; i++) { 27465 s = arguments[i]; 27466 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27467 } 27468 return t; 27469 }; 27470 return bar_config_cf_assign.apply(this, arguments); 27471}; 27472var _a, _b; 27473 27474 27475var isNewUser = ((_a = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('N')) > -1 || !js_cookie/* default */.A.get('token'); 27476var isWarehouseOperationVideoUser = function isWarehouseOperationVideoUser() { 27477 return true; 27478}; 27479var hideMyQuotationMenu = function hideMyQuotationMenu() { 27480 var _a, _b; 27481 var flag = true; 27482 if (typeof window !== 'undefined') { 27483 var cjNum = (_a = window === null || window === void 0 ? void 0 : window.loginInfoController) === null || _a === void 0 ? void 0 : _a.info('num'); 27484 var users = ((_b = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _b === void 0 ? void 0 : _b.data('my-quotation-users')) || []; 27485 if (!users.includes('CJ10001')) { 27486 users.push('CJ10001'); 27487 } 27488 flag = !users.includes(cjNum); 27489 } 27490 return flag; 27491}; 27492var menus = [{ 27493 name: 'Orders', 27494 nameTrans: function nameTrans() { 27495 return "".concat(window.i18next.t("common-mycj-menu-3pl-orders", 'Orders')); 27496 }, 27497 iconclass: 'bianzu41', 27498 active: false,
27499 code: 'mycj_orders', 27500 childs: [{ 27501 name: 'Sales Orders', 27502 nameTrans: function nameTrans() { 27503 return "".concat(window.i18next.t("common-mycj-menu-3pl-sales-orders", 'Sales Orders')); 27504 }, 27505 active: false, 27506 code: 'mycj_sales_orders', 27507 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 27508 }, { 27509 name: 'Inventory Orders', 27510 nameTrans: function nameTrans() { 27511 return "".concat(window.i18next.t("common-mycj-menu-3pl-inventory-orders", 'Inventory Orders')); 27512 }, 27513 active: false, 27514 code: 'mycj_inventory_orders', 27515 route: '/mine/purchase/purchaseList?orderType=2' 27516 }] 27517}, { 27518 name: 'Fulfillment', 27519 nameTrans: function nameTrans() { 27520 return "".concat(window.i18next.t("common-mycj-menu-3pl-orders-fulfillment", 'Fulfillment Tracking')); 27521 }, 27522 iconclass: 'lvyue', 27523 active: false, 27524 code: 'mycj_orders_fulfillment', 27525 childs: [{ 27526 name: 'Fulfillment Status', 27527 nameTrans: function nameTrans() { 27528 return "".concat(window.i18next.t("common-mycj-menu-3pl-fulfillment-status", 'Fulfillment Status')); 27529 }, 27530 code: 'mycj_orders_tracking', 27531 route: '/mine/orderTracing/list', 27532 active: false 27533 }, { 27534 name: 'Undelivered Orders', 27535 nameTrans: function nameTrans() { 27536 return "".concat(window.i18next.t("common-mycj-menu-3pl-undelivered-orders", 'Undelivered Orders')); 27537 }, 27538 code: 'mycj_undelivered_orders', 27539 route: '/mine/undeliveredOrder', 27540 active: false 27541 }, { 27542 name: 'Disputes', 27543 nameTrans: function nameTrans() { 27544 return "".concat(window.i18next.t("common-mycj-menu-3pl-disputes", 'Disputes')); 27545 }, 27546 code: 'mycj_disputes', 27547 route: '/mine/dispute/list', 27548 active: false 27549 }] 27550}, { 27551 name: 'Products', 27552 nameTrans: function nameTrans() { 27553 return "".concat(window.i18next.t("common-mycj-menu-3pl-products", 'Products')); 27554 }, 27555 iconclass: 'bianzu62', 27556 active: false, 27557 code: 'mycj_products', 27558 childs: [{ 27559 name: 'My Products', 27560 nameTrans: function nameTrans() { 27561 return "".concat(window.i18next.t("common-mycj-menu-3pl-my-products", 'My Products')); 27562 }, 27563 code: 'mycj_3pl_products', 27564 route: '/my.html#/products-connection/goods', 27565 active: false 27566 }, { 27567 name: 'Store Products', 27568 nameTrans: function nameTrans() { 27569 return "".concat(window.i18next.t("common-mycj-menu-3pl-store-products", 'Store Products')); 27570 }, 27571 code: 'mycj_store_products', 27572 route: '/mine/products/connection', 27573 active: false, 27574 tip: function tip() { 27575 return window.i18next.t("common-mycj-menu-3pl-store-products-tip", 'Check here for your store products, where you can make product connections.'); 27576 } 27577 }, { 27578 name: 'Custom Packaging', 27579 nameTrans: function nameTrans() { 27580 return "".concat(window.i18next.t("common-mycj-menu-3pl-custom-packaging", 'Custom Packaging')); 27581 }, 27582 code: 'mycj_custom_packaging', 27583 route: '/my.html#/regular-packaging', 27584 active: false, 27585 tip: function tip() { 27586 return window.i18next.t("common-mycj-menu-3pl-custom-packaging-tip", 'Purchase or design packaging and connect packages with your products.'); 27587 } 27588 }] 27589}, { 27590 name: 'Inventory', 27591 nameTrans: function nameTrans() { 27592 return "".concat(window.i18next.t("common-mycj-menu-3pl-inventory", 'Inventory')); 27593 }, 27594 iconclass: 'shouyecangku1', 27595 active: false, 27596 code: 'mycj_products', 27597 childs: [{ 27598 name: 'My Inventory', 27599 nameTrans: function nameTrans() { 27600 return "".concat(window.i18next.t("common-mycj-menu-3pl-my-inventory", 'My Inventory')); 27601 }, 27602 code: 'mycj_my_inventory', 27603 route: '/mine/myInventoryNew/productInventory', 27604 active: false, 27605 tip: function tip() { 27606 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.'); 27607 } 27608 }, { 27609 name: 'Inventory Planner', 27610 nameTrans: function nameTrans() { 27611 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 27612 }, 27613 code: 'mycj_inventory_planner', 27614 route: '/mine/inventoryPlanner', 27615 active: false 27616 }, { 27617 name: 'Shipment', 27618 nameTrans: function nameTrans() { 27619 return "".concat(window.i18next.t("common-mycj-menu-3pl-shipment", 'Shipment')); 27620 }, 27621 code: 'mycj_3pl_shipment', 27622 route: '/mine/shipment', 27623 active: false 27624 }] 27625}, { 27626 name: 'Service', 27627 nameTrans: function nameTrans() { 27628 return "".concat(window.i18next.t("common-mycj-menu-3pl-partnership", 'Partnership')); 27629 }, 27630 iconclass: 'bianzu71', 27631 active: false,
27632 code: 'mycj_service', 27633 childs: [{ 27634 name: 'Credit Service', 27635 nameTrans: function nameTrans() { 27636 return "".concat(window.i18next.t("common-mycj-menu-3pl-credit-service", 'Credit Service')); 27637 }, 27638 code: 'mycj_credit_service', 27639 route: '/loancredit', 27640 active: false, 27641 target: '_blank' 27642 }, { 27643 name: 'Affiliate', 27644 nameTrans: function nameTrans() { 27645 return "".concat(window.i18next.t("common-mycj-menu-3pl-affiliate", 'Affiliate')); 27646 }, 27647 code: 'mycj_affiliate', 27648 route: 'https://affiliate.cjdropshipping.com/', 27649 active: false, 27650 target: '_blank' 27651 }] 27652}, { 27653 name: 'Authorization', 27654 nameTrans: function nameTrans() { 27655 return "".concat(window.i18next.t("common-mycj-menu-3pl-authorization-new", 'Apps')); 27656 }, 27657 iconclass: 'dianpushouquan', 27658 active: false, 27659 special: true, 27660 code: 'mycj_authorization', 27661 childs: [bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shopify), { 27662 nameTrans: function nameTrans() { 27663 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 27664 }, 27665 version: 2, 27666 active: false 27667 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 27668 nameTrans: function nameTrans() { 27669 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 27670 }, 27671 version: 2, 27672 active: false 27673 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu), { 27674 nameTrans: function nameTrans() { 27675 return "".concat(window.i18next.t("common-mycj-menu-temu")); 27676 }, 27677 version: 2, 27678 type: 'authorize', 27679 active: false 27680 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 27681 nameTrans: function nameTrans() { 27682 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 27683 }, 27684 version: 2, 27685 type: 'authorize', 27686 active: false 27687 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 27688 nameTrans: function nameTrans() { 27689 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 27690 }, 27691 version: 2, 27692 type: 'authorize', 27693 active: false 27694 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shein), { 27695 nameTrans: function nameTrans() { 27696 return "".concat(window.i18next.t("common-mycj-menu-shein")); 27697 }, 27698 version: 2, 27699 type: 'authorize', 27700 active: false 27701 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 27702 nameTrans: function nameTrans() { 27703 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 27704 }, 27705 version: 2, 27706 type: 'authorize', 27707 active: false 27708 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 27709 nameTrans: function nameTrans() { 27710 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 27711 }, 27712 version: 2, 27713 type: 'authorize', 27714 active: false 27715 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 27716 nameTrans: function nameTrans() { 27717 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 27718 }, 27719 version: 2, 27720 type: 'authorize', 27721 active: false 27722 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 27723 nameTrans: function nameTrans() { 27724 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 27725 }, 27726 version: 2, 27727 type: 'authorize', 27728 active: false 27729 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.ebay), { 27730 nameTrans: function nameTrans() { 27731 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 27732 }, 27733 version: 2, 27734 type: 'authorize', 27735 active: false 27736 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.api), { 27737 nameTrans: function nameTrans() { 27738 return "".concat(window.i18next.t("common-mycj-menu-api")); 27739 }, 27740 version: 2, 27741 type: 'authorize', 27742 active: false 27743 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.etsy), { 27744 nameTrans: function nameTrans() { 27745 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 27746 }, 27747 version: 2, 27748 type: 'authorize', 27749 active: false 27750 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 27751 nameTrans: function nameTrans() { 27752 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 27753 }, 27754 version: 2, 27755 type: 'authorize', 27756 active: false 27757 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.wix), { 27758 nameTrans: function nameTrans() { 27759 return "".concat(window.i18next.t("common-mycj-menu-wix")); 27760 }, 27761 version: 2, 27762 type: 'authorize', 27763 active: false 27764 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.lazada), { 27765 nameTrans: function nameTrans() { 27766 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 27767 }, 27768 version: 2, 27769 type: 'authorize', 27770 active: false 27771 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shopee), { 27772 nameTrans: function nameTrans() { 27773 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 27774 }, 27775 version: 2, 27776 type: 'authorize', 27777 active: false 27778 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 27779 nameTrans: function nameTrans() { 27780 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 27781 }, 27782 version: 2, 27783 type: 'authorize', 27784 active: false 27785 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 27786 nameTrans: function nameTrans() { 27787 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 27788 }, 27789 version: 2, 27790 type: 'authorize', 27791 active: false 27792 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.magento), { 27793 nameTrans: function nameTrans() { 27794 return "".concat(window.i18next.t("common-mycj-menu-magento")); 27795 }, 27796 version: 2, 27797 type: 'authorize', 27798 active: false 27799 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 27800 nameTrans: function nameTrans() { 27801 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 27802 }, 27803 version: 2, 27804 type: 'authorize', 27805 active: false 27806 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 27807 nameTrans: function nameTrans() { 27808 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 27809 }, 27810 version: 2, 27811 type: 'authorize', 27812 active: false 27813 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 27814 nameTrans: function nameTrans() { 27815 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 27816 }, 27817 version: 2, 27818 type: 'authorize', 27819 active: false 27820 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 27821 nameTrans: function nameTrans() { 27822 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 27823 }, 27824 version: 2, 27825 type: 'authorize', 27826 active: false 27827 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.mercado), { 27828 nameTrans: function nameTrans() { 27829 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 27830 }, 27831 version: 2, 27832 type: 'authorize', 27833 active: false 27834 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 27835 nameTrans: function nameTrans() { 27836 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 27837 }, 27838 version: 2, 27839 type: 'authorize', 27840 active: false 27841 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 27842 nameTrans: function nameTrans() { 27843 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 27844 }, 27845 version: 2, 27846 type: 'authorize', 27847 active: false 27848 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORMAll */.Z8.others), { 27849 nameTrans: function nameTrans() { 27850 return "".concat(window.i18next.t("common-mycj-menu-others")); 27851 }, 27852 version: 2, 27853 type: 'authorize', 27854 active: false 27855 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.mabang), { 27856 nameTrans: function nameTrans() { 27857 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 27858 }, 27859 version: 2, 27860 type: 'authorize', 27861 active: false 27862 }), bar_config_cf_assign(bar_config_cf_assign({}, platform_show/* PLATFORM */.i9.miaoshou), { 27863 nameTrans: function nameTrans() { 27864 return "".concat(window.i18next.t("common-mycj-menu-miaoshou")); 27865 }, 27866 version: 2, 27867 type: 'authorize', 27868 active: false 27869 })] 27870}, { 27871 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'))), 27872 nameVal: "My CJ", 27873 nameTrans: function nameTrans() { 27874 return window.i18next.t("common-mycj-3pl-my-account", 'My Account'); 27875 }, 27876 iconclass: 'bianzu32', 27877 active: false, 27878 childs: [{ 27879 name: 'Settings', 27880 nameTrans: function nameTrans() { 27881 return "".concat(window.i18next.t("common-mycj-menu-3pl-setting", 'Settings')); 27882 }, 27883 code: 'mycj_profile', 27884 route: '/my.html#/profile/info', 27885 active: false 27886 }, { 27887 name: 'Ticket', 27888 nameTrans: function nameTrans() { 27889 return "".concat(window.i18next.t("common-mycj-menu-3pl-ticket", 'Ticket')); 27890 }, 27891 code: 'mycj_ticket', 27892 route: '/mine/ticket', 27893 active: false 27894 }, { 27895 name: 'Wallet', 27896 nameTrans: function nameTrans() { 27897 return "".concat(window.i18next.t("common-mycj-menu-3pl-wallet", 'Wallet')); 27898 }, 27899 code: 'mycj_wallet', 27900 route: '/mine/wallet', 27901 active: false 27902 }, { 27903 name: 'Export List', 27904 nameTrans: function nameTrans() { 27905 return "".concat(window.i18next.t("common-mycj-menu-3pl-export-list", 'Export List')); 27906 }, 27907 iconclass: 'liwuicon_', 27908 code: 'mycj_export_list', 27909 route: '/mine/exportList', 27910 active: false 27911 }] 27912}]; 27913var menuPath = {}; 27914var menuNames = {}; 27915function loops(list, parent) { 27916 return (list || []).map(function (_a) { 27917 var route = _a.route, 27918 childs = _a.childs, 27919 name = _a.name, 27920 version = _a.version; 27921 var _route = route; 27922 var node = menuNames[name] = menuPath[_route] = { 27923 parent: parent, 27924 name: name, 27925 version: version, 27926 route: _route 27927 }; 27928 node['childs'] = loops(childs, node); 27929 return node; 27930 }); 27931} 27932function getPath(name) { 27933 var obj = menuNames[name]; 27934 var arr = []; 27935 while (obj && obj.name) { 27936 if (obj.childs && obj.childs[0]) { 27937 arr.push(obj.name); 27938 } else { 27939 arr.push(obj.name); 27940 } 27941 if (!obj.parent) break; 27942 obj = obj.parent; 27943 } 27944 return arr; 27945} 27946loops(menus, null); 27947var createAuthTree = function createAuthTree() { 27948 var authMapByRoute = []; 27949 var _fun = function fun(list) { 27950 return list.map(function (l) { 27951 if (l.route && l.code) authMapByRoute.push({ 27952 name: l.name, 27953 code: l.code, 27954 route: l.route 27955 }); 27956 return { 27957 name: l.name, 27958 code: l.code, 27959 route: l.route, 27960 children: l.childs && _fun(l.childs) 27961 }; 27962 }); 27963 };
27964 return [_fun(menus), authMapByRoute]; 27965}; 27966/* harmony default export */ const bar_config_cf = ((/* unused pure expression or super */ null && (createAuthTree))); 27967// EXTERNAL MODULE: ./src/components/Menu/bar.config.ts 27968var bar_config = __webpack_require__(34692); 27969;// ./src/components/Menu/hooks/useShopifyUser.ts 27970 27971function useShopifyUser(server_siteCheck) { 27972 var _a, _b, _c, _d; 27973 var isQSShopify = ((_a = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _a === void 0 ? void 0 : _a.indexOf('B')) > -1; 27974 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')); 27975 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')); 27976} 27977// EXTERNAL MODULE: ./src/common/store.ts 27978var store = __webpack_require__(4703); 27979;// ./src/components/Menu/bar.config.qs.ts 27980var bar_config_qs_assign = undefined && undefined.__assign || function () { 27981 bar_config_qs_assign = Object.assign || function (t) { 27982 for (var s, i = 1, n = arguments.length; i < n; i++) { 27983 s = arguments[i]; 27984 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 27985 } 27986 return t; 27987 }; 27988 return bar_config_qs_assign.apply(this, arguments); 27989}; 27990var bar_config_qs_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 27991 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 27992 if (ar || !(i in from)) { 27993 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 27994 ar[i] = from[i]; 27995 } 27996 } 27997 return to.concat(ar || Array.prototype.slice.call(from)); 27998}; 27999var bar_config_qs_a; 28000 28001 28002 28003 28004var isFromErp = store/* default */.A.get('loginfromerp'); 28005var showInventoryOrder = function showInventoryOrder() { 28006 var _a, _b; 28007 if (typeof window === 'undefined') { 28008 return false; 28009 } 28010 var inventoryUser = ((_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('inventory-user')) || []; 28011 var cjNum = (_b = window === null || window === void 0 ? void 0 : window.loginInfoController) === null || _b === void 0 ? void 0 : _b.info('num'); 28012 return inventoryUser.includes(cjNum); 28013}; 28014var bar_config_qs_menus = [{ 28015 name: 'Products', 28016 nameTrans: function nameTrans() { 28017 return "".concat(window.i18next.t("common-mycj-menu-products")); 28018 }, 28019 iconclass: 'zuocedaohangshangpin-QS', 28020 active: false, 28021 code: 'mycj_products', 28022 childs: bar_config_qs_spreadArray([{ 28023 name: 'My Products', 28024 nameTrans: function nameTrans() { 28025 return "".concat(window.i18next.t("common-mycj-menu-my-products")); 28026 }, 28027 code: 'mycj_my_products', 28028 route: '/mine/products/myproducts', 28029 active: false 28030 }, { 28031 name: 'Store Products', 28032 nameTrans: function nameTrans() { 28033 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 28034 }, 28035 code: 'mycj_store_products', 28036 route: '/mine/products/connection', 28037 active: false, 28038 tip: function tip() { 28039 return window.i18next.t("common-mycj-menu-store-products-tip"); 28040 } 28041 }, { 28042 name: 'Listing Records', 28043 nameTrans: function nameTrans() { 28044 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 28045 }, 28046 active: false, 28047 childs: [{ 28048 name: 'Products Records', 28049 nameTrans: function nameTrans() { 28050 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 28051 }, 28052 route: '/my.html#/products-connection/history', 28053 code: 'mycj_products_records', 28054 active: false 28055 }, {
28056 name: 'Video Records', 28057 nameTrans: function nameTrans() { 28058 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 28059 }, 28060 code: 'mycj_video_list', 28061 route: '/mine/listVideos', 28062 active: false 28063 }] 28064 }], isFromErp || showInventoryOrder() ? [{ 28065 name: 'My Inventory', 28066 nameTrans: function nameTrans() { 28067 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 28068 }, 28069 code: 'mycj_my_inventory', 28070 route: '/mine/myInventoryNew/productInventory', 28071 active: false, 28072 tip: function tip() { 28073 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 28074 } 28075 }, { 28076 name: 'Inventory Planner', 28077 nameTrans: function nameTrans() { 28078 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 28079 }, 28080 code: 'mycj_inventory_planner', 28081 route: '/mine/inventoryPlanner', 28082 active: false 28083 }] : [], true) 28084}, { 28085 name: 'Orders', 28086 nameTrans: function nameTrans() { 28087 return "".concat(window.i18next.t("common-mycj-menu-orders")); 28088 }, 28089 iconclass: 'zuocedaohangdingdan-QS', 28090 active: false, 28091 code: 'mycj_orders', 28092 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([{ 28093 name: 'Store Orders', 28094 nameTrans: function nameTrans() { 28095 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 28096 }, 28097 active: false, 28098 code: 'mycj_store_orders', 28099 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 28100 }, { 28101 name: 'Sample Orders', 28102 nameTrans: function nameTrans() { 28103 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 28104 }, 28105 active: false, 28106 code: 'mycj_sample_orders', 28107 route: '/mine/purchase/purchaseList?orderType=1' 28108 }, { 28109 name: 'Wholesale Orders', 28110 nameTrans: function nameTrans() { 28111 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 28112 }, 28113 active: false, 28114 code: 'mycj_wholesale_orders', 28115 route: '/mine/purchase/purchaseList?orderType=3' 28116 }], isFromErp || showInventoryOrder() ? [{ 28117 name: 'Inventory Orders', 28118 nameTrans: function nameTrans() { 28119 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 28120 }, 28121 active: false, 28122 code: 'mycj_inventory_orders', 28123 route: '/mine/purchase/purchaseList?orderType=2' 28124 }] : [], true), [{ 28125 name: 'Undelivered Orders', 28126 nameTrans: function nameTrans() { 28127 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 28128 }, 28129 code: 'mycj_undelivered_orders', 28130 route: '/mine/undeliveredOrder', 28131 active: false 28132 }, { 28133 name: 'Disputes', 28134 nameTrans: function nameTrans() { 28135 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 28136 }, 28137 code: 'mycj_disputes', 28138 route: '/mine/dispute/list', 28139 active: false 28140 }], false) 28141}, { 28142 name: 'Service', 28143 nameTrans: function nameTrans() { 28144 return "".concat(window.i18next.t("common-mycj-menu-service")); 28145 }, 28146 iconclass: 'zuocedaohangfuwu-QS', 28147 active: false, 28148 code: 'mycj_service', 28149 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([], isFromErp ? [{ 28150 name: '3PL Fulfillment', 28151 nameTrans: function nameTrans() { 28152 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 28153 }, 28154 code: 'mycj_3pl', 28155 active: false, 28156 tip: function tip() { 28157 var _a; 28158 return window.i18next.t("common-mycj-menu-3pl-tip", { 28159 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 28160 }); 28161 }, 28162 childs: [{ 28163 name: 'Products', 28164 nameTrans: function nameTrans() { 28165 return "".concat(window.i18next.t("common-mycj-menu-products")); 28166 }, 28167 code: 'mycj_3pl_products', 28168 route: '/my.html#/products-connection/goods', 28169 active: false 28170 }, {
28171 name: 'Shipment', 28172 nameTrans: function nameTrans() { 28173 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 28174 }, 28175 code: 'mycj_3pl_shipment', 28176 route: '/mine/shipment', 28177 active: false 28178 }, { 28179 name: '24h Fulfillment', 28180 nameTrans: function nameTrans() { 28181 return "".concat(window.i18next.t("common-mycj-menu-24h-fulfillment", '24h Fulfillment')); 28182 }, 28183 code: 'mycj_24h_fulfillment', 28184 route: '/fulfillmentservice', 28185 active: false 28186 }] 28187 }] : [], true), [{ 28188 name: 'Sourcing', 28189 nameTrans: function nameTrans() { 28190 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 28191 }, 28192 code: 'mycj_sourcing', 28193 route: '/mine/sourcing/list', 28194 active: false, 28195 tip: function tip() { 28196 return window.i18next.t("common-mycj-menu-sourcing-tip"); 28197 } 28198 }, { 28199 name: 'Custom Packaging', 28200 nameTrans: function nameTrans() { 28201 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 28202 }, 28203 code: 'mycj_custom_packaging', 28204 route: '/my.html#/regular-packaging', 28205 active: false, 28206 tip: function tip() { 28207 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 28208 } 28209 }, { 28210 name: 'Print on Demand', 28211 nameTrans: function nameTrans() { 28212 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 28213 }, 28214 active: false, 28215 tip: function tip() { 28216 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 28217 }, 28218 childs: [{ 28219 name: "Buyer's Design", 28220 nameTrans: function nameTrans() { 28221 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 28222 }, 28223 iconclass: 'maijiaxinxi', 28224 code: 'mycj_buyers_design', 28225 route: '/my.html#/pod/buyer-design', 28226 active: false, 28227 tipName: 'Connected POD products in your store.' 28228 }, { 28229 name: 'Design Myself', 28230 nameTrans: function nameTrans() { 28231 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 28232 }, 28233 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 28234 code: 'mycj_design_myself', 28235 route: '/my.html#/pod/design-myself', 28236 active: false, 28237 tipName: 'Your designed products on CJ.' 28238 }] 28239 }], false) 28240}, { 28241 name: 'Authorization', 28242 nameTrans: function nameTrans() { 28243 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 28244 }, 28245 iconclass: 'zuocedaohangshouquandianpu-QS', 28246 active: false, 28247 special: true, 28248 code: 'mycj_authorization', 28249 childs: [bar_config_qs_assign(bar_config_qs_assign({}, platform_show/* PLATFORM */.i9.shopify), { 28250 nameTrans: function nameTrans() { 28251 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 28252 }, 28253 version: 2, 28254 active: false 28255 })] 28256}, { 28257 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'))), 28258 nameVal: "My CJ", 28259 nameTrans: function nameTrans() { 28260 var _a; 28261 return window.i18next.t("common-mycj-my-site", { 28262 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 28263 }); 28264 }, 28265 iconclass: 'a-zuocedaohangMYQS-QS', 28266 active: false, 28267 childs: bar_config_qs_spreadArray(bar_config_qs_spreadArray([{ 28268 name: 'Profile', 28269 nameTrans: function nameTrans() { 28270 return "".concat(window.i18next.t("common-mycj-menu-profile")); 28271 }, 28272 code: 'mycj_profile', 28273 route: '/my.html#/profile/info', 28274 active: false 28275 }, { 28276 name: 'Ticket', 28277 nameTrans: function nameTrans() { 28278 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 28279 }, 28280 code: 'mycj_ticket', 28281 route: '/mine/ticket', 28282 active: false 28283 }], !useShopifyUser() ? [{ 28284 name: 'Wallet', 28285 nameTrans: function nameTrans() { 28286 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 28287 }, 28288 code: 'mycj_wallet', 28289 route: '/mine/wallet', 28290 active: false 28291 }] : [], true), [{ 28292 name: 'Browsing History', 28293 nameTrans: function nameTrans() { 28294 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 28295 }, 28296 code: 'mycj_browsing_history', 28297 route: '/viewHistory', 28298 active: false 28299 }, { 28300 name: 'Export List', 28301 nameTrans: function nameTrans() { 28302 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 28303 }, 28304 iconclass: 'liwuicon_', 28305 code: 'mycj_export_list', 28306 route: '/mine/exportList', 28307 active: false 28308 }, { 28309 name: 'Sub-account', 28310 nameTrans: function nameTrans() { 28311 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 28312 }, 28313 code: 'mycj_sub_account', 28314 route: '/my.html#/accountManage', 28315 active: false 28316 }, {
28317 name: 'Order-video', 28318 nameTrans: function nameTrans() { 28319 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 28320 }, 28321 code: 'mycj_order-video', 28322 route: '/mine/orderVideo', 28323 active: false, 28324 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 28325 }], false) 28326}]; 28327var bar_config_qs_menuPath = {}; 28328var bar_config_qs_menuNames = {}; 28329function bar_config_qs_loops(list, parent) { 28330 return (list || []).map(function (_a) { 28331 var route = _a.route, 28332 childs = _a.childs, 28333 name = _a.name, 28334 version = _a.version; 28335 var _route = route; 28336 var node = bar_config_qs_menuNames[name] = bar_config_qs_menuPath[_route] = { 28337 parent: parent, 28338 name: name, 28339 version: version, 28340 route: _route 28341 }; 28342 node['childs'] = bar_config_qs_loops(childs, node); 28343 return node; 28344 }); 28345} 28346function bar_config_qs_getPath(name) { 28347 var obj = bar_config_qs_menuNames[name]; 28348 var arr = []; 28349 while (obj && obj.name) { 28350 if (obj.childs && obj.childs[0]) { 28351 arr.push(obj.name); 28352 } else { 28353 arr.push(obj.name); 28354 } 28355 if (!obj.parent) break; 28356 obj = obj.parent; 28357 } 28358 return arr; 28359} 28360bar_config_qs_loops(bar_config_qs_menus, null); 28361var bar_config_qs_createAuthTree = function createAuthTree() { 28362 var authMapByRoute = []; 28363 var _fun = function fun(list) { 28364 return list.map(function (l) { 28365 if (l.route && l.code) authMapByRoute.push({ 28366 name: l.name, 28367 code: l.code, 28368 route: l.route 28369 }); 28370 return { 28371 name: l.name, 28372 code: l.code, 28373 route: l.route, 28374 children: l.childs && _fun(l.childs) 28375 }; 28376 }); 28377 }; 28378 return [_fun(bar_config_qs_menus), authMapByRoute]; 28379}; 28380/* harmony default export */ const bar_config_qs = ((/* unused pure expression or super */ null && (bar_config_qs_createAuthTree))); 28381;// ./src/components/CjProductDetail/common/isQs.ts 28382 28383function isQs(siteCheck) { 28384 if (siteCheck === void 0) { 28385 siteCheck = null; 28386 } 28387 if (common/* isBrowser */.Bd) return window.siteCheck.isSite('QS'); 28388 return siteCheck.isSite('QS'); 28389} 28390;// ./src/components/CjProductDetail/common/isAr.ts 28391 28392function isAr(siteCheck) { 28393 if (siteCheck === void 0) { 28394 siteCheck = null; 28395 } 28396 if (isBrowser) return window.siteCheck.isSite('AR'); 28397 return siteCheck.isSite('AR'); 28398} 28399;// ./src/components/CjProductDetail/common/isZs.ts 28400 28401function isZs(siteCheck) { 28402 if (siteCheck === void 0) { 28403 siteCheck = null; 28404 } 28405 if (isBrowser) return window.siteCheck.isSite('ZS'); 28406 return siteCheck.isSite('ZS'); 28407} 28408;// ./src/components/CjProductDetail/common/index.ts 28409 28410 28411 28412 28413;// ./src/components/Menu/hooks/useIsCF.ts 28414function useIsCf(server_siteCheck) { 28415 var _a, _b, _c; 28416 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; 28417 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'; 28418} 28419;// ./src/common/deep-clone.ts 28420function _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); } 28421var isObject = function isObject(obj) { 28422 return obj && _typeof(obj) === 'object' && !isArray(obj); 28423}; 28424var isFunction = function isFunction(obj) { 28425 return obj && typeof obj === 'function'; 28426}; 28427var isArray = function isArray(obj) { 28428 return obj && Array.isArray(obj); 28429}; 28430var isRegExp = function isRegExp(obj) { 28431 return obj && obj instanceof RegExp; 28432}; 28433var _deepClone = function deepClone(obj) { 28434 var res; 28435 if (isArray(obj)) { 28436 res = []; 28437 for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) { 28438 var item = obj_1[_i]; 28439 if ((isObject(item) || isArray(item)) && !isRegExp(item)) { 28440 res.push(_deepClone(item)); 28441 } else { 28442 res.push(item); 28443 } 28444 } 28445 } else if (isObject(obj)) { 28446 res = {}; 28447 var _keys = Object.keys(obj); 28448 for (var _a = 0, _keys_1 = _keys; _a < _keys_1.length; _a++) { 28449 var key = _keys_1[_a]; 28450 var item = obj[key]; 28451 if ((isObject(item) || isArray(item)) && !isRegExp(item)) { 28452 res[key] = _deepClone(item); 28453 } else { 28454 res[key] = item; 28455 } 28456 } 28457 } 28458 return res; 28459}; 28460/* harmony default export */ const deep_clone = (_deepClone); 28461// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsZS.ts 28462var useIsZS = __webpack_require__(60488); 28463// EXTERNAL MODULE: ./src/components/Menu/bar.config.zs.ts
vendor: 4,298 bytes, lines 28464-28625
28464var bar_config_zs = __webpack_require__(81943); 28465;// ./src/common/platforms-sort-show.ts 28466var platforms_sort_show_assign = undefined && undefined.__assign || function () { 28467 platforms_sort_show_assign = Object.assign || function (t) { 28468 for (var s, i = 1, n = arguments.length; i < n; i++) { 28469 s = arguments[i]; 28470 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 28471 } 28472 return t; 28473 }; 28474 return platforms_sort_show_assign.apply(this, arguments); 28475}; 28476var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 28477 function adopt(value) { 28478 return value instanceof P ? value : new P(function (resolve) { 28479 resolve(value); 28480 }); 28481 } 28482 return new (P || (P = Promise))(function (resolve, reject) { 28483 function fulfilled(value) { 28484 try { 28485 step(generator.next(value)); 28486 } catch (e) { 28487 reject(e); 28488 } 28489 } 28490 function rejected(value) { 28491 try { 28492 step(generator["throw"](value)); 28493 } catch (e) { 28494 reject(e); 28495 } 28496 } 28497 function step(result) { 28498 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 28499 } 28500 step((generator = generator.apply(thisArg, _arguments || [])).next()); 28501 }); 28502}; 28503var __generator = undefined && undefined.__generator || function (thisArg, body) { 28504 var _ = { 28505 label: 0, 28506 sent: function sent() { 28507 if (t[0] & 1) throw t[1]; 28508 return t[1]; 28509 }, 28510 trys: [], 28511 ops: [] 28512 }, 28513 f, 28514 y, 28515 t, 28516 g; 28517 return g = { 28518 next: verb(0), 28519 "throw": verb(1), 28520 "return": verb(2) 28521 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 28522 return this; 28523 }), g; 28524 function verb(n) { 28525 return function (v) { 28526 return step([n, v]); 28527 }; 28528 } 28529 function step(op) { 28530 if (f) throw new TypeError("Generator is already executing."); 28531 while (g && (g = 0, op[0] && (_ = 0)), _) try { 28532 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; 28533 if (y = 0, t) op = [op[0] & 2, t.value]; 28534 switch (op[0]) { 28535 case 0: 28536 case 1: 28537 t = op; 28538 break; 28539 case 4: 28540 _.label++; 28541 return { 28542 value: op[1], 28543 done: false 28544 }; 28545 case 5: 28546 _.label++; 28547 y = op[1]; 28548 op = [0]; 28549 continue; 28550 case 7: 28551 op = _.ops.pop(); 28552 _.trys.pop(); 28553 continue; 28554 default: 28555 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 28556 _ = 0; 28557 continue; 28558 } 28559 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 28560 _.label = op[1]; 28561 break; 28562 } 28563 if (op[0] === 6 && _.label < t[1]) { 28564 _.label = t[1]; 28565 t = op; 28566 break; 28567 } 28568 if (t && _.label < t[2]) { 28569 _.label = t[2]; 28570 _.ops.push(op); 28571 break; 28572 } 28573 if (t[2]) _.ops.pop(); 28574 _.trys.pop(); 28575 continue; 28576 } 28577 op = body.call(thisArg, _); 28578 } catch (e) { 28579 op = [6, e]; 28580 y = 0; 28581 } finally { 28582 f = t = 0; 28583 } 28584 if (op[0] & 5) throw op[1]; 28585 return { 28586 value: op[0] ? op[1] : void 0, 28587 done: true 28588 }; 28589 } 28590}; 28591var platforms_sort_show_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 28592 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 28593 if (ar || !(i in from)) { 28594 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 28595 ar[i] = from[i]; 28596 } 28597 } 28598 return to.concat(ar || Array.prototype.slice.call(from)); 28599}; 28600 28601 28602 28603 28604 28605 28606 28607 28608 28609 28610 28611 28612 28613var EBusinessType; 28614(function (EBusinessType) { 28615 EBusinessType[EBusinessType["ERP"] = 0] = "ERP"; 28616 EBusinessType[EBusinessType["CROSS"] = 1] = "CROSS"; 28617})(EBusinessType || (EBusinessType = {})); 28618var PlatformSortShow = function () { 28619 function PlatformSortShow(axios) { 28620 var _a, _b, _c; 28621 this.platforms = []; 28622 this.allPlatforms = []; 28623 this.platformsResponse = []; 28624 this.showAuthorizeData = show_authorize_list/* default */.A; 28625 this.showAuthorizeAllData = show_authorize_all_list;
28626 var initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 28627 if ((0,useIsZS/* default */.A)()) initialMenus = bar_config_zs/* menus */.T_; 28628 if (useIsCf()) initialMenus = menus; 28629 this.platforms = ((_b = (_a = initialMenus === null || initialMenus === void 0 ? void 0 : initialMenus.find(function (ele) { 28630 return ele.name === 'Authorization'; 28631 })) === null || _a === void 0 ? void 0 : _a.childs) === null || _b === void 0 ? void 0 : _b.filter(function (item) { 28632 return !['others'].includes(item.key); 28633 })) || []; 28634 this.allPlatforms = ((_c = initialMenus === null || initialMenus === void 0 ? void 0 : initialMenus.find(function (ele) { 28635 return ele.name === 'Authorization'; 28636 })) === null || _c === void 0 ? void 0 : _c.childs) || []; 28637 this.axios = axios; 28638 } 28639 PlatformSortShow.prototype.handler = function () { 28640 return __awaiter(this, void 0, void 0, function () { 28641 var data, keys, platformCount, i, item; 28642 return __generator(this, function (_a) { 28643 switch (_a.label) { 28644 case 0: 28645 return [4, this.getPlatformsByUser()]; 28646 case 1: 28647 data = _a.sent(); 28648 if (data.length > 0) { 28649 this.platformsResponse = data === null || data === void 0 ? void 0 : data.map(function (ele) { 28650 return platforms_sort_show_assign(platforms_sort_show_assign({}, ele), platform_show/* PLATFORMAll */.Z8[ele.shopPlatformType] || {}); 28651 }); 28652 keys = []; 28653 platformCount = {}; 28654 for (i = 0; i < data.length; i++) { 28655 item = data[i]; 28656 if (this.showAuthorizeAllData[item.shopPlatformType]) { 28657 this.showAuthorizeAllData[item.shopPlatformType].isAuthor = item.isAuthor; 28658 this.showAuthorizeAllData[item.shopPlatformType].isShow = item.isShow; 28659 keys.push(item.shopPlatformType); 28660 platformCount[item.shopPlatformType] = item.count; 28661 } 28662 } 28663 this.modifiedPlatformSort(keys, data, platformCount); 28664 this.handlerFilterPlatforms(); 28665 } 28666 return [2]; 28667 } 28668 }); 28669 }); 28670 }; 28671 PlatformSortShow.prototype.getPlatformsByUser = function () { 28672 return __awaiter(this, void 0, void 0, function () { 28673 var data; 28674 return __generator(this, function (_a) { 28675 switch (_a.label) { 28676 case 0: 28677 return [4, (0,services/* getAuthorizeShowList */.vG)(this.axios)]; 28678 case 1: 28679 data = _a.sent(); 28680 if (!data || (data === null || data === void 0 ? void 0 : data.length) == 0) return [2, []]; 28681 return [2, data]; 28682 } 28683 }); 28684 }); 28685 }; 28686 PlatformSortShow.prototype.modifiedPlatformSort = function (keys, data, platformCount) { 28687 if (keys === void 0) { 28688 keys = []; 28689 } 28690 if (data === void 0) { 28691 data = []; 28692 } 28693 var oldPlatforms = platforms_sort_show_spreadArray([], this.allPlatforms, true); 28694 if (keys.length > 0) { 28695 var temp = []; 28696 var _loop_1 = function _loop_1(i) { 28697 var item = oldPlatforms.find(function (ele) { 28698 if (keys[i] == 'tiktok_us' || keys[i] == 'tiktok_us_cross') { 28699 return ele.name.toLocaleLowerCase().replaceAll('-', '_') == keys[i]; 28700 } 28701 return ele.name.toLocaleLowerCase() == keys[i]; 28702 }); 28703 if (item) { 28704 item.count = keys[i] === 'etsy' ? 0 : platformCount[keys[i]]; 28705 var userData = data.find(function (ele) { 28706 return ele.shopPlatformType == keys[i]; 28707 }); 28708 temp.push(platforms_sort_show_assign({ 28709 businessType: userData === null || userData === void 0 ? void 0 : userData.businessType 28710 }, item)); 28711 } 28712 }; 28713 for (var i = 0; i < keys.length; i++) { 28714 _loop_1(i); 28715 } 28716 this.platforms = platforms_sort_show_spreadArray([], temp, true); 28717 } 28718 }; 28719 PlatformSortShow.prototype.handlerFilterPlatforms = function () { 28720 var _this = this; 28721 var oldPlatforms = platforms_sort_show_spreadArray([], this.platforms, true); 28722 this.platforms = oldPlatforms.filter(function (ele) { 28723 var isShowAuthorize = isShowAuthorizeType(_this.showAuthorizeData, ele.name); 28724 return isShowAuthorize; 28725 }); 28726 this.allPlatforms = oldPlatforms.filter(function (ele) { 28727 var isShowAuthorize = isShowAuthorizeType(_this.showAuthorizeAllData, ele.name); 28728 return isShowAuthorize; 28729 }); 28730 }; 28731 PlatformSortShow.prototype.showAppStore = function () { 28732 var _a, _b; 28733 return __awaiter(this, void 0, void 0, function () { 28734 var data, initialMenus, oldAllPlatforms, temp, _loop_2, this_1, i, shopifyIndex, shopify; 28735 return __generator(this, function (_c) { 28736 switch (_c.label) { 28737 case 0: 28738 return [4, (0,services/* getAppStoreList */.Jv)(this.axios)]; 28739 case 1: 28740 data = _c.sent(); 28741 if ((data === null || data === void 0 ? void 0 : data.length) > 0) { 28742 this.platformsResponse = data === null || data === void 0 ? void 0 : data.filter(function (ele) { 28743 return !!ele.isAuthor; 28744 }).map(function (ele) { 28745 return platforms_sort_show_assign(platforms_sort_show_assign({}, ele), platform_show/* PLATFORMAll */.Z8[ele.shopPlatformType] || {}); 28746 });
28747 initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 28748 oldAllPlatforms = ((_b = (_a = deep_clone(initialMenus)) === null || _a === void 0 ? void 0 : _a.find(function (ele) { 28749 return ele.name === 'Authorization'; 28750 })) === null || _b === void 0 ? void 0 : _b.childs) || []; 28751 temp = []; 28752 _loop_2 = function _loop_2(i) { 28753 var _d = data[i], 28754 isAuthor = _d.isAuthor, 28755 platformCode = _d.platformCode, 28756 count = _d.count; 28757 var platformCodeLower = platformCode === null || platformCode === void 0 ? void 0 : platformCode.toLowerCase(); 28758 if (this_1.showAuthorizeAllData[platformCodeLower]) { 28759 this_1.showAuthorizeAllData[platformCodeLower].isAuthor = isAuthor; 28760 } 28761 var item = oldAllPlatforms.find(function (ele) { 28762 return ele.key == platformCodeLower; 28763 }); 28764 if (item && isAuthor) { 28765 item.count = platformCodeLower === 'etsy' ? 0 : count; 28766 temp.push(platforms_sort_show_assign(platforms_sort_show_assign({}, item), data[i])); 28767 } 28768 }; 28769 this_1 = this; 28770 for (i = 0; i < data.length; i++) { 28771 _loop_2(i); 28772 } 28773 temp.sort(function (a, b) { 28774 if (a.installTime && b.installTime) { 28775 return Number(a.installTime) - Number(b.installTime); 28776 } 28777 return 0; 28778 }); 28779 shopifyIndex = temp.findIndex(function (ele) { 28780 return ele.key === 'shopify'; 28781 }); 28782 if (shopifyIndex > -1) { 28783 shopify = temp.splice(shopifyIndex, 1); 28784 temp.unshift(shopify[0]); 28785 } 28786 this.allPlatforms = platforms_sort_show_spreadArray([], temp, true); 28787 } 28788 return [2]; 28789 } 28790 }); 28791 }); 28792 }; 28793 return PlatformSortShow; 28794}(); 28795/* harmony default export */ const platforms_sort_show = (PlatformSortShow); 28796;// ./src/components/Menu/MenuCollapsed/SubMenu.tsx 28797var SubMenu_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 28798 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 28799 if (ar || !(i in from)) { 28800 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 28801 ar[i] = from[i]; 28802 } 28803 } 28804 return to.concat(ar || Array.prototype.slice.call(from)); 28805}; 28806 28807 28808 28809 28810 28811 28812 28813 28814 28815 28816 28817 28818 28819 28820 28821 28822 28823var SubMenu = function SubMenu(_a) { 28824 var _b, _c, _d; 28825 var _e; 28826 var item = _a.item, 28827 isActive = _a.isActive, 28828 isParentActive = _a.isParentActive, 28829 showAuthorizeListData = _a.showAuthorizeListData, 28830 _f = _a.isLastMenu, 28831 isLastMenu = _f === void 0 ? false : _f, 28832 openAddStore = _a.openAddStore, 28833 openServiceCenter = _a.openServiceCenter; 28834 var siteCheck = (0,use_site_check/* default */.A)(); 28835 var isVip = (0,useIsVip/* default */.A)(); 28836 var isCj = (0,use_parent_platform/* default */.A)().isCj; 28837 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 28838 var isZesty = siteCheck.isSite('ZS'); 28839 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))]), 28840 childClass = _g[0], 28841 setChildClass = _g[1]; 28842 var hookMenuChilds = useMenuChilds({ 28843 selector: '.specialMenuItem' 28844 }); 28845 var hookMenusNormalChilds = useMenuChilds({ 28846 selector: '.childBoxThree' 28847 }); 28848 var i18next = window === null || window === void 0 ? void 0 : window.i18next; 28849 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 28850 var hasChilds = item.childs && item.childs.length > 0; 28851 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 28852 var normalSpecial = item.special && !isCJSite; 28853 var cjSpecial = item.special && isCJSite; 28854 var getAddTop = function getAddTop(name, childs) { 28855 var _a; 28856 if (name === void 0) { 28857 name = ''; 28858 } 28859 if (childs === void 0) { 28860 childs = []; 28861 } 28862 if (normalSpecial) { 28863 var hasMiaoshou = ((_a = childs.filter(function (child) { 28864 return child.key === 'miaoshou'; 28865 })) === null || _a === void 0 ? void 0 : _a.length) > 0; 28866 return hasMiaoshou ? -50 : 0; 28867 } 28868 return 0; 28869 }; 28870 var hideBodyScroll = function hideBodyScroll(bol) { 28871 if (bol) { 28872 document.body.style.overflow = 'hidden'; 28873 } else { 28874 document.body.style.overflow = 'auto'; 28875 } 28876 }; 28877 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28878 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)), 28879 onMouseEnter: function onMouseEnter(e) { 28880 leaveTimer.current && clearTimeout(leaveTimer.current); 28881 setChildClass(SubMenu_spreadArray(SubMenu_spreadArray([], childClass, true), [isLastMenu ? Menu_MenuCollapsed.lastActive : Menu_MenuCollapsed.active, cjSpecial ? Menu_MenuCollapsed.cjSpecial : ''], false)); 28882 var addTop = getAddTop(item.name, item.childs); 28883 hasChilds && normalSpecial && hookMenuChilds.handlerMouseMove(e, addTop); 28884 hasChilds && !normalSpecial && hookMenusNormalChilds.handlerMouseMove(e, 0, cjSpecial); 28885 hideBodyScroll(true); 28886 }, 28887 onMouseLeave: function onMouseLeave(e) { 28888 var target = e.currentTarget; 28889 leaveTimer.current = setTimeout(function () { 28890 setChildClass(SubMenu_spreadArray([], childClass.filter(function (_) { 28891 return _ !== Menu_MenuCollapsed.active; 28892 }).filter(function (_) { 28893 return _ !== Menu_MenuCollapsed.lastActive; 28894 }), true)); 28895 hasChilds && normalSpecial && hookMenuChilds.handlerMouseLeave(target); 28896 hasChilds && !normalSpecial && hookMenusNormalChilds.handlerMouseLeave(target); 28897 }, 200); 28898 hideBodyScroll(false); 28899 } 28900 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28901 className: classnames_default()(Menu_MenuCollapsed.box, (_d = {}, _d[Menu_MenuCollapsed.zs] = isZesty, _d)), 28902 onClick: function onClick() { 28903 if (!hasChilds) { 28904 if (hookMyCjRoute.canUseNewMyCjRouteJump(item.route)) { 28905 return hookMyCjRoute.changeRoute(item.route); 28906 } 28907 var _href = (0,common/* getRouteHref */.hQ)(item); 28908 location.href = isCj ? _href : (0,cj_href/* cjHref */.F)(_href); 28909 } 28910 }, 28911 "data-route": item.name, 28912 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.name) 28913 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28914 type: item.iconclass, 28915 className: Menu_MenuCollapsed.icon 28916 })), !isZesty && /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28917 className: Menu_MenuCollapsed.activeLeftLine 28918 }), !hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28919 className: Menu_MenuCollapsed.fixedTitle 28920 }, item.nameTrans(), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28921 className: Menu_MenuCollapsed.arrow 28922 }))), hasChilds && !normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28923 className: classnames_default()(childClass.join(' '), 'childBoxThree') 28924 }, item.special && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28925 className: Menu_MenuCollapsed.childItem, 28926 onClick: openAddStore, 28927 "data-gtag-element": "install_app" 28928 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28929 className: "".concat(Menu_MenuCollapsed.childItemBox, " ").concat(Menu_MenuCollapsed.addStoreBox) 28930 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 28931 className: Menu_MenuCollapsed.name 28932 }, 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", { 28933 className: Menu_MenuCollapsed.addIcon 28934 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28935 type: "jiahao1" 28936 }))))), item.name === 'Service' && openServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28937 className: Menu_MenuCollapsed.childItem, 28938 onClick: openServiceCenter, 28939 "data-gtag-element": "subscribe_service" 28940 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28941 className: "".concat(Menu_MenuCollapsed.childItemBox, " ").concat(Menu_MenuCollapsed.addStoreBox) 28942 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 28943 className: Menu_MenuCollapsed.name 28944 }, 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", { 28945 className: Menu_MenuCollapsed.addIcon 28946 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 28947 type: "jiahao1" 28948 }))))), item.childs.map(function (childMenu) { 28949 if (childMenu.isDivider) { 28950 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28951 key: childMenu.name, 28952 className: Menu_MenuCollapsed.menuDivider 28953 }); 28954 } 28955 if (typeof childMenu.isHide === 'function' ? childMenu.isHide() : childMenu.isHide) return null; 28956 if (!siteCheck.isShow("mycj-menu-".concat(item.nameVal || item.name, "-").concat(childMenu.name))) return null; 28957 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuCollapsed_MenuItem, { 28958 key: childMenu.name, 28959 childMenu: childMenu, 28960 isActive: isActive, 28961 showAuthorizeListData: showAuthorizeListData, 28962 isSpecial: item.special 28963 }); 28964 }))), hasChilds && normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 28965 className: classnames_default()(Menu_MenuCollapsed.specialMenuItem, 'specialMenuItem') 28966 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MultipleMenuItem/* default */.A, { 28967 list: (_e = item.childs) === null || _e === void 0 ? void 0 : _e.map(function (item) { 28968 return { 28969 key: item.key, 28970 name: item.nameTrans(), 28971 imageUrl: oss_controller/* default */.Ay.join((0,oss_controller/* createPlatform */.Q_)(String(item.imageName || item.name).toLocaleLowerCase())), 28972 count: item.count, 28973 link: isCj ? item.route : (0,cj_href/* cjHref */.F)(item.route), 28974 isActive: isActive(item.name), 28975 isShow: useIsShowOrangeConnex(item.name) && isShowAuthorizeType(showAuthorizeListData, item.name) && useIsShowMiaoshou(item.name, siteCheck), 28976 isErpPlatform: item.businessType === EBusinessType.ERP 28977 }; 28978 }) 28979 })))); 28980}; 28981/* harmony default export */ const MenuCollapsed_SubMenu = (SubMenu); 28982// EXTERNAL MODULE: ./src/components/Menu/assets/nav-bg.png 28983var nav_bg = __webpack_require__(79328); 28984;// ./src/components/Menu/MenuCollapsed/index.tsx 28985 28986 28987 28988 28989 28990 28991var MenuCollapsed = function MenuCollapsed(_a) { 28992 var _b; 28993 var isActive = _a.isActive, 28994 isParentActive = _a.isParentActive, 28995 showAuthorizeListData = _a.showAuthorizeListData, 28996 menus = _a.menus, 28997 openAddStore = _a.openAddStore, 28998 openServiceCenter = _a.openServiceCenter; 28999 var siteCheck = (0,use_site_check/* default */.A)(); 29000 var isZesty = siteCheck.isSite('ZS'); 29001 var menuCollapsedStyle = { 29002 backgroundImage: "url(".concat(siteCheck.data('menu-bg-image') || nav_bg/* default */.A, ")") 29003 }; 29004 if (isZesty) { 29005 menuCollapsedStyle = { 29006 backgroundColor: '#fff' 29007 }; 29008 } 29009 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 29010 className: classnames_default()(Menu_MenuCollapsed.menuCollapsed, (_b = {}, _b[Menu_MenuCollapsed.zs] = isZesty, _b)), 29011 style: menuCollapsedStyle 29012 }, menus.map(function (menu, i) { 29013 if (!siteCheck.isShow("mycj-menu-".concat(menu.nameVal || menu.name))) return null; 29014 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuCollapsed_SubMenu, { 29015 key: menu.name, 29016 item: menu, 29017 isActive: isActive, 29018 isParentActive: isParentActive, 29019 showAuthorizeListData: showAuthorizeListData, 29020 isLastMenu: i === menus.length - 1, 29021 openAddStore: openAddStore, 29022 openServiceCenter: openServiceCenter 29023 }); 29024 })); 29025}; 29026/* harmony default export */ const components_Menu_MenuCollapsed = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuCollapsed)); 29027// EXTERNAL MODULE: ./src/components/Menu/index.less 29028var Menu = __webpack_require__(65555); 29029// EXTERNAL MODULE: ../../node_modules/js-base64/base64.mjs 29030var base64 = __webpack_require__(93584); 29031;// ./src/components/Menu/bar.config.qk.ts
29032var bar_config_qk_assign = undefined && undefined.__assign || function () { 29033 bar_config_qk_assign = Object.assign || function (t) { 29034 for (var s, i = 1, n = arguments.length; i < n; i++) { 29035 s = arguments[i]; 29036 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 29037 } 29038 return t; 29039 }; 29040 return bar_config_qk_assign.apply(this, arguments); 29041}; 29042var bar_config_qk_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 29043 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 29044 if (ar || !(i in from)) { 29045 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 29046 ar[i] = from[i]; 29047 } 29048 } 29049 return to.concat(ar || Array.prototype.slice.call(from)); 29050}; 29051var bar_config_qk_a, bar_config_qk_b, _c; 29052 29053 29054 29055 29056 29057 29058var bar_config_qk_isFromErp = store/* default */.A.get('loginfromerp'); 29059var isShowProducts = (0,common/* isSafeUser */.dn)() || bar_config_qk_isFromErp; 29060var isShowSourcingAndStoreProducts = function isShowSourcingAndStoreProducts() { 29061 var testUserIds = ['QK2522152', 'QK3056156']; 29062 var specialUserIds = bar_config_qk_spreadArray(['QK37757', 'QK3156419'], testUserIds, true); 29063 return login_info_controller/* default */.A.info('num') && specialUserIds.includes(login_info_controller/* default */.A.info('num')); 29064}; 29065var menus1 = bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29066 name: 'Find Products', 29067 nameTrans: function nameTrans() { 29068 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29069 }, 29070 iconclass: 'cedaohang-soupin', 29071 active: false, 29072 childs: [], 29073 route: '/home.html' 29074}, { 29075 name: 'Orders Creation', 29076 nameTrans: function nameTrans() { 29077 return "".concat(window.i18next.t("common-mycj-menu-orders-creation")); 29078 }, 29079 iconclass: 'qk_chuangjiandingdan', 29080 route: '/mine/dropshipping/untreatedOrder/CreateOrder', 29081 active: false, 29082 childs: [] 29083}], isShowProducts ? [{ 29084 name: 'Products', 29085 nameTrans: function nameTrans() { 29086 return "".concat(window.i18next.t("common-mycj-menu-products")); 29087 }, 29088 iconclass: 'zuocedaohangshangpin-QS', 29089 active: false, 29090 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([], bar_config_qk_isFromErp ? [{ 29091 name: 'Added Products', 29092 nameTrans: function nameTrans() { 29093 return "".concat(window.i18next.t("common-mycj-menu-added-products", 'Added Products')); 29094 }, 29095 code: 'mycj_my_products', 29096 route: '/mine/products/myproducts', 29097 active: false 29098 }] : [], true), bar_config_qk_isFromErp || isShowSourcingAndStoreProducts() ? [{ 29099 name: 'Store Products', 29100 nameTrans: function nameTrans() { 29101 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 29102 }, 29103 iconclass: 'guanlian', 29104 code: 'mycj_store_products', 29105 route: '/mine/products/connection', 29106 active: false, 29107 childs: [] 29108 }] : [], true), (0,common/* isSafeUser */.dn)() ? [{ 29109 name: 'My Inventory', 29110 nameTrans: function nameTrans() { 29111 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 29112 }, 29113 iconclass: 'a-qk_OrdersPicking', 29114 code: 'mycj_my_inventory', 29115 route: '/mine/myInventoryNew/productInventory', 29116 active: false, 29117 childs: [] 29118 }, { 29119 name: 'Inventory Planner', 29120 nameTrans: function nameTrans() { 29121 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 29122 }, 29123 code: 'mycj_inventory_planner', 29124 route: '/mine/inventoryPlanner', 29125 active: false 29126 }] : [], true) 29127}] : [], true), [{ 29128 name: 'Orders', 29129 nameTrans: function nameTrans() { 29130 return "".concat(window.i18next.t("common-mycj-menu-orders")); 29131 }, 29132 iconclass: 'bianzu41', 29133 active: false, 29134 code: 'mycj_orders', 29135 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29136 name: 'Store Orders', 29137 nameTrans: function nameTrans() { 29138 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 29139 }, 29140 active: false, 29141 code: 'mycj_store_orders', 29142 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 29143 }], (0,common/* isSafeUser */.dn)() ? [{ 29144 name: 'Inventory Orders', 29145 nameTrans: function nameTrans() { 29146 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 29147 }, 29148 active: false, 29149 code: 'mycj_inventory_orders', 29150 route: '/mine/purchase/purchaseList?orderType=2' 29151 }] : [], true), [{ 29152 name: 'Undelivered Orders', 29153 nameTrans: function nameTrans() { 29154 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 29155 }, 29156 code: 'mycj_undelivered_orders',
29157 route: '/mine/undeliveredOrder', 29158 active: false 29159 }, { 29160 name: 'Disputes', 29161 nameTrans: function nameTrans() { 29162 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 29163 }, 29164 code: 'mycj_disputes', 29165 route: '/mine/dispute/list', 29166 active: false 29167 }], false) 29168}], false), (0,common/* isSafeUser */.dn)() ? [{ 29169 name: 'Service', 29170 nameTrans: function nameTrans() { 29171 return "".concat(window.i18next.t("common-mycj-menu-service")); 29172 }, 29173 iconclass: 'bianzu71', 29174 active: false, 29175 code: 'mycj_service', 29176 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([], isShowSourcingAndStoreProducts() ? [{ 29177 name: 'Sourcing', 29178 nameTrans: function nameTrans() { 29179 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 29180 }, 29181 code: 'mycj_sourcing', 29182 route: '/mine/sourcing/list', 29183 active: false, 29184 tip: function tip() { 29185 return window.i18next.t("common-mycj-menu-sourcing-tip"); 29186 } 29187 }] : [], true), [{ 29188 name: 'Custom Packaging', 29189 nameTrans: function nameTrans() { 29190 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 29191 }, 29192 code: 'mycj_custom_packaging', 29193 route: '/my.html#/regular-packaging', 29194 active: false, 29195 tip: function tip() { 29196 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 29197 } 29198 }, { 29199 name: '3PL Fulfillment', 29200 nameTrans: function nameTrans() { 29201 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 29202 }, 29203 active: false, 29204 tip: function tip() { 29205 var _a; 29206 return window.i18next.t("common-mycj-menu-3pl-tip", { 29207 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29208 }); 29209 }, 29210 childs: [{ 29211 name: 'Products', 29212 nameTrans: function nameTrans() { 29213 return "".concat(window.i18next.t("common-mycj-menu-products")); 29214 }, 29215 code: 'mycj_3pl_products', 29216 route: '/my.html#/products-connection/goods', 29217 active: false 29218 }, {
29219 name: 'Shipment', 29220 nameTrans: function nameTrans() { 29221 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 29222 }, 29223 code: 'mycj_3pl_shipment', 29224 route: '/mine/shipment', 29225 active: false 29226 }] 29227 }], false) 29228}] : [], true), [{ 29229 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'))), 29230 nameVal: "My CJ", 29231 nameTrans: function nameTrans() { 29232 var _a; 29233 return window.i18next.t("common-mycj-my-site", { 29234 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29235 }); 29236 }, 29237 iconclass: 'bianzu32', 29238 active: false, 29239 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29240 name: 'Dashboard', 29241 nameTrans: function nameTrans() { 29242 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 29243 }, 29244 code: 'mycj_dashboard', 29245 route: '/my.html#/dashboard', 29246 active: false, 29247 isNew: true 29248 }, { 29249 name: 'Profile', 29250 nameTrans: function nameTrans() { 29251 return "".concat(window.i18next.t("common-mycj-menu-profile")); 29252 }, 29253 code: 'mycj_profile', 29254 route: '/my.html#/profile/info', 29255 active: false 29256 }], login_info_controller/* default */.A.info('num') === 'QK3156419' ? [{ 29257 name: 'Ticket', 29258 nameTrans: function nameTrans() { 29259 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 29260 }, 29261 code: 'mycj_ticket', 29262 route: '/mine/ticket', 29263 active: false 29264 }] : [], true), [{ 29265 name: 'Wallet', 29266 nameTrans: function nameTrans() { 29267 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 29268 }, 29269 code: 'mycj_wallet', 29270 route: '/mine/wallet', 29271 active: false 29272 }, { 29273 name: 'Export List', 29274 nameTrans: function nameTrans() { 29275 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 29276 }, 29277 iconclass: 'liwuicon_', 29278 code: 'mycj_export_list', 29279 route: '/mine/exportList', 29280 active: false 29281 }, { 29282 name: 'Sub-account', 29283 nameTrans: function nameTrans() { 29284 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 29285 }, 29286 code: 'mycj_sub_account', 29287 route: '/my.html#/accountManage', 29288 active: false 29289 }, { 29290 name: 'Order-video', 29291 nameTrans: function nameTrans() { 29292 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 29293 }, 29294 code: 'mycj_order-video', 29295 route: '/mine/orderVideo', 29296 active: false, 29297 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 29298 }], false) 29299}], false); 29300var menus2 = [{ 29301 name: 'Find Products', 29302 nameTrans: function nameTrans() { 29303 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29304 }, 29305 iconclass: 'cedaohang-soupin', 29306 active: false, 29307 childs: [], 29308 route: '/home.html' 29309}, { 29310 name: 'Cart', 29311 nameTrans: function nameTrans() { 29312 return "".concat(window.i18next.t("common-mycj-menu-cart")); 29313 }, 29314 iconclass: 'bianzu51', 29315 active: false, 29316 route: '/mine/purchase/purchaseCart', 29317 childs: [], 29318 code: 'mycj_cart' 29319}, { 29320 name: 'Products', 29321 nameTrans: function nameTrans() { 29322 return "".concat(window.i18next.t("common-mycj-menu-products")); 29323 }, 29324 iconclass: 'bianzu62', 29325 active: false, 29326 code: 'mycj_products', 29327 childs: [{ 29328 name: 'Added Products', 29329 nameTrans: function nameTrans() { 29330 return "".concat(window.i18next.t("common-mycj-menu-added-products", 'Added Products')); 29331 }, 29332 code: 'mycj_my_products', 29333 route: '/mine/products/myproducts', 29334 active: false 29335 }, { 29336 name: 'Store Products', 29337 nameTrans: function nameTrans() { 29338 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 29339 }, 29340 code: 'mycj_store_products', 29341 route: '/mine/products/connection', 29342 active: false, 29343 tip: function tip() { 29344 return window.i18next.t("common-mycj-menu-store-products-tip"); 29345 } 29346 }, { 29347 name: 'Listing Records', 29348 nameTrans: function nameTrans() { 29349 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 29350 }, 29351 active: false, 29352 childs: [{ 29353 name: 'Products Records', 29354 nameTrans: function nameTrans() { 29355 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 29356 }, 29357 route: '/my.html#/products-connection/history', 29358 code: 'mycj_products_records', 29359 active: false 29360 }, {
29361 name: 'Video Records', 29362 nameTrans: function nameTrans() { 29363 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 29364 }, 29365 code: 'mycj_video_list', 29366 route: '/mine/listVideos', 29367 active: false 29368 }] 29369 }, { 29370 name: 'My Inventory', 29371 nameTrans: function nameTrans() { 29372 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 29373 }, 29374 code: 'mycj_my_inventory', 29375 route: '/mine/myInventoryNew/productInventory', 29376 active: false, 29377 tip: function tip() { 29378 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 29379 } 29380 }, { 29381 name: 'Inventory Planner', 29382 nameTrans: function nameTrans() { 29383 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 29384 }, 29385 code: 'mycj_inventory_planner', 29386 route: '/mine/inventoryPlanner', 29387 active: false 29388 }] 29389}, { 29390 name: 'Orders', 29391 nameTrans: function nameTrans() { 29392 return "".concat(window.i18next.t("common-mycj-menu-orders")); 29393 }, 29394 iconclass: 'bianzu41', 29395 active: false, 29396 code: 'mycj_orders', 29397 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray([{ 29398 name: 'Store Orders', 29399 nameTrans: function nameTrans() { 29400 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 29401 }, 29402 active: false, 29403 code: 'mycj_store_orders', 29404 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 29405 }, { 29406 name: 'Sample Orders', 29407 nameTrans: function nameTrans() { 29408 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 29409 }, 29410 active: false, 29411 code: 'mycj_sample_orders', 29412 route: '/mine/purchase/purchaseList?orderType=1' 29413 }, { 29414 name: 'Wholesale Orders', 29415 nameTrans: function nameTrans() { 29416 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 29417 }, 29418 active: false, 29419 code: 'mycj_wholesale_orders', 29420 route: '/mine/purchase/purchaseList?orderType=3' 29421 }, { 29422 name: 'Inventory Orders', 29423 nameTrans: function nameTrans() { 29424 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 29425 }, 29426 active: false, 29427 code: 'mycj_inventory_orders', 29428 route: '/mine/purchase/purchaseList?orderType=2' 29429 }], (0,common/* isSafeUser */.dn)() ? [{ 29430 name: 'Undelivered Orders', 29431 nameTrans: function nameTrans() { 29432 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 29433 }, 29434 code: 'mycj_undelivered_orders', 29435 route: '/mine/undeliveredOrder', 29436 active: false 29437 }, { 29438 name: 'Fulfillment Status', 29439 nameTrans: function nameTrans() { 29440 return "".concat(window.i18next.t("common-mycj-menu-fulfillment-status")); 29441 }, 29442 code: 'mycj_orders_tracking', 29443 route: '/mine/orderTracing/list', 29444 active: false 29445 }] : [], true), [{ 29446 name: 'Disputes', 29447 nameTrans: function nameTrans() { 29448 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 29449 }, 29450 code: 'mycj_disputes', 29451 route: '/mine/dispute/list', 29452 active: false 29453 }], false) 29454}, { 29455 name: 'Service', 29456 nameTrans: function nameTrans() { 29457 return "".concat(window.i18next.t("common-mycj-menu-service")); 29458 }, 29459 iconclass: 'bianzu71', 29460 active: false, 29461 code: 'mycj_service', 29462 childs: bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray(bar_config_qk_spreadArray([], (0,common/* isSafeUser */.dn)() || isShowSourcingAndStoreProducts() ? [{ 29463 name: 'Sourcing', 29464 nameTrans: function nameTrans() { 29465 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 29466 }, 29467 code: 'mycj_sourcing', 29468 route: '/mine/sourcing/list', 29469 active: false, 29470 tip: function tip() { 29471 return window.i18next.t("common-mycj-menu-sourcing-tip"); 29472 } 29473 }] : [], true), [{ 29474 name: 'Custom Packaging', 29475 nameTrans: function nameTrans() { 29476 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 29477 }, 29478 code: 'mycj_custom_packaging', 29479 route: '/my.html#/regular-packaging', 29480 active: false, 29481 tip: function tip() { 29482 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 29483 } 29484 }], false), (0,common/* isSafeUser */.dn)() ? [{ 29485 name: 'Customization', 29486 nameTrans: function nameTrans() { 29487 return "".concat(window.i18next.t("common-mycj-menu-customization")); 29488 }, 29489 code: 'mycj_customization', 29490 route: '/mine/customization', 29491 active: false, 29492 tip: function tip() { 29493 var _a; 29494 return window.i18next.t("common-mycj-menu-customization-tip", { 29495 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29496 }); 29497 } 29498 }, { 29499 name: 'Print on Demand', 29500 nameTrans: function nameTrans() { 29501 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 29502 }, 29503 active: false, 29504 tip: function tip() { 29505 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 29506 }, 29507 childs: [{ 29508 name: 'POD Products', 29509 nameTrans: function nameTrans() { 29510 return "".concat(window.i18next.t("common-mycj-menu-pod-products")); 29511 }, 29512 route: '/printonDemand/home', 29513 active: false 29514 }, {
29515 name: "Buyer's Design", 29516 nameTrans: function nameTrans() { 29517 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 29518 }, 29519 iconclass: 'maijiaxinxi', 29520 code: 'mycj_buyers_design', 29521 route: '/my.html#/pod/buyer-design', 29522 active: false, 29523 tipName: 'Connected POD products in your store.' 29524 }, { 29525 name: 'Design Myself', 29526 nameTrans: function nameTrans() { 29527 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 29528 }, 29529 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 29530 code: 'mycj_design_myself', 29531 route: '/my.html#/pod/design-myself', 29532 active: false, 29533 tipName: 'Your designed products on CJ.' 29534 }] 29535 }] : [], true), [{ 29536 name: '3PL Fulfillment', 29537 nameTrans: function nameTrans() { 29538 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 29539 }, 29540 active: false, 29541 tip: function tip() { 29542 var _a; 29543 return window.i18next.t("common-mycj-menu-3pl-tip", { 29544 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29545 }); 29546 }, 29547 childs: [{ 29548 name: 'Products', 29549 nameTrans: function nameTrans() { 29550 return "".concat(window.i18next.t("common-mycj-menu-products")); 29551 }, 29552 code: 'mycj_3pl_products', 29553 route: '/my.html#/products-connection/goods', 29554 active: false 29555 }, {
29556 name: 'Shipment', 29557 nameTrans: function nameTrans() { 29558 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 29559 }, 29560 code: 'mycj_3pl_shipment', 29561 route: '/mine/shipment', 29562 active: false 29563 }] 29564 }], false) 29565}, { 29566 name: 'Authorization', 29567 nameTrans: function nameTrans() { 29568 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 29569 }, 29570 iconclass: 'dianpushouquan', 29571 active: false, 29572 special: true, 29573 code: 'mycj_authorization', 29574 childs: [bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shopify), { 29575 nameTrans: function nameTrans() { 29576 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 29577 }, 29578 version: 2, 29579 active: false 29580 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 29581 nameTrans: function nameTrans() { 29582 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 29583 }, 29584 version: 2, 29585 active: false 29586 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu), { 29587 nameTrans: function nameTrans() { 29588 return "".concat(window.i18next.t("common-mycj-menu-temu")); 29589 }, 29590 version: 2, 29591 type: 'authorize', 29592 active: false 29593 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 29594 nameTrans: function nameTrans() { 29595 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 29596 }, 29597 version: 2, 29598 type: 'authorize', 29599 active: false 29600 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 29601 nameTrans: function nameTrans() { 29602 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 29603 }, 29604 version: 2, 29605 type: 'authorize', 29606 active: false 29607 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shein), { 29608 nameTrans: function nameTrans() { 29609 return "".concat(window.i18next.t("common-mycj-menu-shein")); 29610 }, 29611 version: 2, 29612 type: 'authorize', 29613 active: false 29614 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 29615 nameTrans: function nameTrans() { 29616 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 29617 }, 29618 version: 2, 29619 type: 'authorize', 29620 active: false 29621 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 29622 nameTrans: function nameTrans() { 29623 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 29624 }, 29625 version: 2, 29626 type: 'authorize', 29627 active: false 29628 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 29629 nameTrans: function nameTrans() { 29630 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 29631 }, 29632 version: 2, 29633 type: 'authorize', 29634 active: false 29635 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 29636 nameTrans: function nameTrans() { 29637 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 29638 }, 29639 version: 2, 29640 type: 'authorize', 29641 active: false 29642 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.ebay), { 29643 nameTrans: function nameTrans() { 29644 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 29645 }, 29646 version: 2, 29647 type: 'authorize', 29648 active: false 29649 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.api), { 29650 nameTrans: function nameTrans() { 29651 return "".concat(window.i18next.t("common-mycj-menu-api")); 29652 }, 29653 version: 2, 29654 type: 'authorize', 29655 active: false 29656 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.etsy), { 29657 nameTrans: function nameTrans() { 29658 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 29659 }, 29660 version: 2, 29661 type: 'authorize', 29662 active: false 29663 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 29664 nameTrans: function nameTrans() { 29665 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 29666 }, 29667 version: 2, 29668 type: 'authorize', 29669 active: false 29670 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.wix), { 29671 nameTrans: function nameTrans() { 29672 return "".concat(window.i18next.t("common-mycj-menu-wix")); 29673 }, 29674 version: 2, 29675 type: 'authorize', 29676 active: false 29677 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.lazada), { 29678 nameTrans: function nameTrans() { 29679 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 29680 }, 29681 version: 2, 29682 type: 'authorize', 29683 active: false 29684 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shopee), { 29685 nameTrans: function nameTrans() { 29686 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 29687 }, 29688 version: 2, 29689 type: 'authorize', 29690 active: false 29691 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 29692 nameTrans: function nameTrans() { 29693 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 29694 }, 29695 version: 2, 29696 type: 'authorize', 29697 active: false 29698 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 29699 nameTrans: function nameTrans() { 29700 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 29701 }, 29702 version: 2, 29703 type: 'authorize', 29704 active: false 29705 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.magento), { 29706 nameTrans: function nameTrans() { 29707 return "".concat(window.i18next.t("common-mycj-menu-magento")); 29708 }, 29709 version: 2, 29710 type: 'authorize', 29711 active: false 29712 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 29713 nameTrans: function nameTrans() { 29714 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 29715 }, 29716 version: 2, 29717 type: 'authorize', 29718 active: false 29719 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 29720 nameTrans: function nameTrans() { 29721 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 29722 }, 29723 version: 2, 29724 type: 'authorize', 29725 active: false 29726 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 29727 nameTrans: function nameTrans() { 29728 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 29729 }, 29730 version: 2, 29731 type: 'authorize', 29732 active: false 29733 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 29734 nameTrans: function nameTrans() { 29735 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 29736 }, 29737 version: 2, 29738 type: 'authorize', 29739 active: false 29740 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.mercado), { 29741 nameTrans: function nameTrans() { 29742 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 29743 }, 29744 version: 2, 29745 type: 'authorize', 29746 active: false 29747 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 29748 nameTrans: function nameTrans() { 29749 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 29750 }, 29751 version: 2, 29752 type: 'authorize', 29753 active: false 29754 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 29755 nameTrans: function nameTrans() { 29756 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 29757 }, 29758 version: 2, 29759 type: 'authorize', 29760 active: false 29761 }), bar_config_qk_assign(bar_config_qk_assign({}, platform_show/* PLATFORM */.i9.mabang), { 29762 nameTrans: function nameTrans() { 29763 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 29764 }, 29765 version: 2, 29766 type: 'authorize', 29767 active: false 29768 })] 29769}, { 29770 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'))), 29771 nameVal: "My CJ", 29772 nameTrans: function nameTrans() { 29773 var _a; 29774 return window.i18next.t("common-mycj-my-site", { 29775 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 29776 }); 29777 }, 29778 iconclass: 'bianzu32', 29779 active: false, 29780 childs: [{ 29781 name: 'Dashboard', 29782 nameTrans: function nameTrans() { 29783 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 29784 }, 29785 code: 'mycj_dashboard', 29786 route: '/my.html#/dashboard', 29787 active: false, 29788 isNew: true 29789 }, { 29790 name: 'Profile', 29791 nameTrans: function nameTrans() { 29792 return "".concat(window.i18next.t("common-mycj-menu-profile")); 29793 }, 29794 code: 'mycj_profile', 29795 route: '/my.html#/profile/info', 29796 active: false 29797 }, { 29798 name: 'Ticket', 29799 nameTrans: function nameTrans() { 29800 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 29801 }, 29802 code: 'mycj_ticket', 29803 route: '/mine/ticket', 29804 active: false 29805 }, { 29806 name: 'Wallet', 29807 nameTrans: function nameTrans() { 29808 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 29809 }, 29810 code: 'mycj_wallet', 29811 route: '/mine/wallet', 29812 active: false 29813 }, { 29814 name: 'Browsing History', 29815 nameTrans: function nameTrans() { 29816 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 29817 }, 29818 code: 'mycj_browsing_history', 29819 route: '/viewHistory', 29820 active: false 29821 }, { 29822 name: 'Export List', 29823 nameTrans: function nameTrans() { 29824 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 29825 }, 29826 iconclass: 'liwuicon_', 29827 code: 'mycj_export_list', 29828 route: '/mine/exportList', 29829 active: false 29830 }, { 29831 name: 'Sub-account', 29832 nameTrans: function nameTrans() { 29833 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 29834 }, 29835 code: 'mycj_sub_account', 29836 route: '/my.html#/accountManage', 29837 active: false 29838 }, {
29839 name: 'Order-video', 29840 nameTrans: function nameTrans() { 29841 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 29842 }, 29843 code: 'mycj_order-video', 29844 route: '/mine/orderVideo', 29845 active: false, 29846 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 29847 }] 29848}]; 29849var omenus = []; 29850if (((_c = js_cookie/* default */.A.get('SHOWMESSAGE')) === null || _c === void 0 ? void 0 : _c.indexOf('Q')) > -1) { 29851 omenus = menus2; 29852} else { 29853 omenus = menus1; 29854} 29855var bar_config_qk_menus = omenus; 29856var bar_config_qk_menuPath = {}; 29857var bar_config_qk_menuNames = {}; 29858function bar_config_qk_loops(list, parent) { 29859 return (list || []).map(function (_a) { 29860 var route = _a.route, 29861 childs = _a.childs, 29862 name = _a.name, 29863 version = _a.version; 29864 var _route = route; 29865 var node = bar_config_qk_menuNames[name] = bar_config_qk_menuPath[_route] = { 29866 parent: parent, 29867 name: name, 29868 version: version, 29869 route: _route 29870 }; 29871 node['childs'] = bar_config_qk_loops(childs, node); 29872 return node; 29873 }); 29874} 29875function bar_config_qk_getPath(name) { 29876 var obj = bar_config_qk_menuNames[name]; 29877 var arr = []; 29878 while (obj && obj.name) { 29879 if (obj.childs && obj.childs[0]) { 29880 arr.push(obj.name); 29881 } else { 29882 arr.push(obj.name); 29883 } 29884 if (!obj.parent) break; 29885 obj = obj.parent; 29886 } 29887 return arr; 29888} 29889bar_config_qk_loops(bar_config_qk_menus, null); 29890var bar_config_qk_createAuthTree = function createAuthTree() { 29891 var authMapByRoute = []; 29892 var _fun = function fun(list) { 29893 return list.map(function (l) { 29894 if (l.route && l.code) authMapByRoute.push({ 29895 name: l.name, 29896 code: l.code, 29897 route: l.route 29898 }); 29899 return { 29900 name: l.name, 29901 code: l.code, 29902 route: l.route, 29903 children: l.childs && _fun(l.childs) 29904 }; 29905 }); 29906 }; 29907 return [_fun(bar_config_qk_menus), authMapByRoute]; 29908}; 29909/* harmony default export */ const bar_config_qk = ((/* unused pure expression or super */ null && (bar_config_qk_createAuthTree))); 29910;// ./src/components/Menu/bar.config.vp.ts 29911var bar_config_vp_assign = undefined && undefined.__assign || function () { 29912 bar_config_vp_assign = Object.assign || function (t) { 29913 for (var s, i = 1, n = arguments.length; i < n; i++) { 29914 s = arguments[i]; 29915 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 29916 } 29917 return t; 29918 }; 29919 return bar_config_vp_assign.apply(this, arguments); 29920}; 29921var bar_config_vp_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 29922 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 29923 if (ar || !(i in from)) { 29924 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 29925 ar[i] = from[i]; 29926 } 29927 } 29928 return to.concat(ar || Array.prototype.slice.call(from)); 29929}; 29930var bar_config_vp_a; 29931 29932 29933 29934var bar_config_vp_menus = [{ 29935 name: 'Find Products', 29936 nameTrans: function nameTrans() { 29937 return "".concat(window.i18next.t("common-mycj-menu-find-products")); 29938 }, 29939 iconclass: 'cedaohang-soupin', 29940 active: false, 29941 childs: [], 29942 route: '/home.html' 29943}, { 29944 name: 'Community', 29945 nameTrans: function nameTrans() { 29946 return "".concat(window.i18next.t("common-mycj-menu-community", 'Community')); 29947 }, 29948 iconclass: 'Community', 29949 active: false, 29950 code: 'mycj_community', 29951 childs: [{ 29952 name: 'Agents', 29953 nameTrans: function nameTrans() { 29954 return "".concat(window.i18next.t("common-mycj-menu-agent", 'Agents')); 29955 }, 29956 active: false, 29957 route: '/agents' 29958 }] 29959}, { 29960 name: 'Cart', 29961 nameTrans: function nameTrans() { 29962 return "".concat(window.i18next.t("common-mycj-menu-cart")); 29963 }, 29964 iconclass: 'bianzu51', 29965 active: false, 29966 route: '/mine/purchase/purchaseCart', 29967 childs: [], 29968 code: 'mycj_cart' 29969}, { 29970 name: 'Products', 29971 nameTrans: function nameTrans() { 29972 return "".concat(window.i18next.t("common-mycj-menu-products")); 29973 }, 29974 iconclass: 'bianzu62', 29975 active: false, 29976 code: 'mycj_products', 29977 childs: [{ 29978 name: 'My Products', 29979 nameTrans: function nameTrans() { 29980 return "".concat(window.i18next.t("common-mycj-menu-my-products")); 29981 }, 29982 code: 'mycj_my_products', 29983 route: '/mine/products/myproducts', 29984 active: false 29985 }, { 29986 name: 'Store Products', 29987 nameTrans: function nameTrans() { 29988 return "".concat(window.i18next.t("common-mycj-menu-store-products")); 29989 }, 29990 code: 'mycj_store_products', 29991 route: '/mine/products/connection', 29992 active: false, 29993 tip: function tip() { 29994 return window.i18next.t("common-mycj-menu-store-products-tip"); 29995 } 29996 }, { 29997 name: 'Listing Records', 29998 nameTrans: function nameTrans() { 29999 return "".concat(window.i18next.t("common-mycj-menu-listing-records")); 30000 }, 30001 active: false, 30002 childs: [{ 30003 name: 'Products Records', 30004 nameTrans: function nameTrans() { 30005 return "".concat(window.i18next.t("common-mycj-menu-products-records")); 30006 }, 30007 route: '/my.html#/products-connection/history', 30008 code: 'mycj_products_records', 30009 active: false 30010 }, {
30011 name: 'Video Records', 30012 nameTrans: function nameTrans() { 30013 return "".concat(window.i18next.t("common-mycj-menu-video-records")); 30014 }, 30015 code: 'mycj_video_list', 30016 route: '/mine/listVideos', 30017 active: false 30018 }] 30019 }, { 30020 name: 'My Inventory', 30021 nameTrans: function nameTrans() { 30022 return "".concat(window.i18next.t("common-mycj-menu-my-inventory")); 30023 }, 30024 code: 'mycj_my_inventory', 30025 route: '/mine/myInventoryNew/productInventory', 30026 active: false, 30027 tip: function tip() { 30028 return window.i18next.t("common-mycj-menu-my-inventory-tip"); 30029 } 30030 }, { 30031 name: 'Inventory Planner', 30032 nameTrans: function nameTrans() { 30033 return "".concat(window.i18next.t("common-mycj-menu-inventory-planner", 'Inventory Planner')); 30034 }, 30035 code: 'mycj_inventory_planner', 30036 route: '/mine/inventoryPlanner', 30037 active: false 30038 }] 30039}, { 30040 name: 'Orders', 30041 nameTrans: function nameTrans() { 30042 return "".concat(window.i18next.t("common-mycj-menu-orders")); 30043 }, 30044 iconclass: 'bianzu41', 30045 active: false, 30046 code: 'mycj_orders', 30047 childs: bar_config_vp_spreadArray(bar_config_vp_spreadArray([{ 30048 name: 'Store Orders', 30049 nameTrans: function nameTrans() { 30050 return "".concat(window.i18next.t("common-mycj-menu-store-orders")); 30051 }, 30052 active: false, 30053 code: 'mycj_store_orders', 30054 route: '/mine/dropshipping/orderList?orderType=3&childType=1' 30055 }, { 30056 name: 'Sample Orders', 30057 nameTrans: function nameTrans() { 30058 return "".concat(window.i18next.t("common-mycj-menu-sample-orders")); 30059 }, 30060 active: false, 30061 code: 'mycj_sample_orders', 30062 route: '/mine/purchase/purchaseList?orderType=1' 30063 }, { 30064 name: 'Wholesale Orders', 30065 nameTrans: function nameTrans() { 30066 return "".concat(window.i18next.t("common-mycj-menu-wholesale-orders")); 30067 }, 30068 active: false, 30069 code: 'mycj_wholesale_orders', 30070 route: '/mine/purchase/purchaseList?orderType=3' 30071 }, { 30072 name: 'Inventory Orders', 30073 nameTrans: function nameTrans() { 30074 return "".concat(window.i18next.t("common-mycj-menu-inventory-orders")); 30075 }, 30076 active: false, 30077 code: 'mycj_inventory_orders', 30078 route: '/mine/purchase/purchaseList?orderType=2' 30079 }], (0,common/* isSafeUser */.dn)() ? [{ 30080 name: 'Undelivered Orders', 30081 nameTrans: function nameTrans() { 30082 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 30083 }, 30084 code: 'mycj_undelivered_orders', 30085 route: '/mine/undeliveredOrder', 30086 active: false 30087 }, { 30088 name: 'Fulfillment Status', 30089 nameTrans: function nameTrans() { 30090 return "".concat(window.i18next.t("common-mycj-menu-fulfillment-status")); 30091 }, 30092 code: 'mycj_orders_tracking', 30093 route: '/mine/orderTracing/list', 30094 active: false 30095 }] : [], true), [{ 30096 name: 'Disputes', 30097 nameTrans: function nameTrans() { 30098 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 30099 }, 30100 code: 'mycj_disputes', 30101 route: '/mine/dispute/list', 30102 active: false 30103 }], false) 30104}, { 30105 name: 'Service', 30106 nameTrans: function nameTrans() { 30107 return "".concat(window.i18next.t("common-mycj-menu-service")); 30108 }, 30109 iconclass: 'bianzu71', 30110 active: false, 30111 code: 'mycj_service', 30112 childs: bar_config_vp_spreadArray(bar_config_vp_spreadArray(bar_config_vp_spreadArray(bar_config_vp_spreadArray([], (0,common/* isSafeUser */.dn)() ? [{ 30113 name: 'Sourcing', 30114 nameTrans: function nameTrans() { 30115 return "".concat(window.i18next.t("common-mycj-menu-sourcing")); 30116 }, 30117 code: 'mycj_sourcing', 30118 route: '/mine/sourcing/list', 30119 active: false, 30120 tip: function tip() { 30121 return window.i18next.t("common-mycj-menu-sourcing-tip"); 30122 } 30123 }] : [], true), [{ 30124 name: 'Custom Packaging', 30125 nameTrans: function nameTrans() { 30126 return "".concat(window.i18next.t("common-mycj-menu-custom-packaging")); 30127 }, 30128 code: 'mycj_custom_packaging', 30129 route: '/my.html#/regular-packaging', 30130 active: false, 30131 tip: function tip() { 30132 return window.i18next.t("common-mycj-menu-custom-packaging-tip"); 30133 } 30134 }], false), (0,common/* isSafeUser */.dn)() ? [{ 30135 name: 'Customization', 30136 nameTrans: function nameTrans() { 30137 return "".concat(window.i18next.t("common-mycj-menu-customization")); 30138 }, 30139 code: 'mycj_customization', 30140 route: '/mine/customization', 30141 active: false, 30142 tip: function tip() { 30143 var _a; 30144 return window.i18next.t("common-mycj-menu-customization-tip", { 30145 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30146 }); 30147 } 30148 }, { 30149 name: 'Print on Demand', 30150 nameTrans: function nameTrans() { 30151 return "".concat(window.i18next.t("common-mycj-menu-print-on-demand")); 30152 }, 30153 active: false, 30154 tip: function tip() { 30155 return window.i18next.t("common-mycj-menu-print-on-demand-tip"); 30156 }, 30157 childs: [{ 30158 name: 'POD Products', 30159 nameTrans: function nameTrans() { 30160 return "".concat(window.i18next.t("common-mycj-menu-pod-products")); 30161 }, 30162 route: '/printonDemand/home', 30163 active: false 30164 }, {
30165 name: "Buyer's Design", 30166 nameTrans: function nameTrans() { 30167 return "".concat(window.i18next.t("common-mycj-menu-buyers-design")); 30168 }, 30169 iconclass: 'maijiaxinxi', 30170 code: 'mycj_buyers_design', 30171 route: '/my.html#/pod/buyer-design', 30172 active: false, 30173 tipName: 'Connected POD products in your store.' 30174 }, { 30175 name: 'Design Myself', 30176 nameTrans: function nameTrans() { 30177 return "".concat(window.i18next.t("common-mycj-menu-design-myself")); 30178 }, 30179 iconclass: 'maijiazhongxin_chanpinkumingjiangku', 30180 code: 'mycj_design_myself', 30181 route: '/my.html#/pod/design-myself', 30182 active: false, 30183 tipName: 'Your designed products on CJ.' 30184 }] 30185 }] : [], true), [{ 30186 name: '3PL Fulfillment', 30187 nameTrans: function nameTrans() { 30188 return "".concat(window.i18next.t("common-mycj-menu-3pl")); 30189 }, 30190 active: false, 30191 tip: function tip() { 30192 var _a; 30193 return window.i18next.t("common-mycj-menu-3pl-tip", { 30194 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30195 }); 30196 }, 30197 childs: [{ 30198 name: 'Products', 30199 nameTrans: function nameTrans() { 30200 return "".concat(window.i18next.t("common-mycj-menu-products")); 30201 }, 30202 code: 'mycj_3pl_products', 30203 route: '/my.html#/products-connection/goods', 30204 active: false 30205 }, {
30206 name: 'Shipment', 30207 nameTrans: function nameTrans() { 30208 return "".concat(window.i18next.t("common-mycj-menu-shipment")); 30209 }, 30210 code: 'mycj_3pl_shipment', 30211 route: '/mine/shipment', 30212 active: false 30213 }] 30214 }], false) 30215}, { 30216 name: 'Authorization', 30217 nameTrans: function nameTrans() { 30218 return "".concat(window.i18next.t("common-mycj-menu-authorization")); 30219 }, 30220 iconclass: 'dianpushouquan', 30221 active: false, 30222 special: true, 30223 code: 'mycj_authorization', 30224 childs: [bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shopify), { 30225 nameTrans: function nameTrans() { 30226 return "".concat(window.i18next.t("common-mycj-menu-shopify")); 30227 }, 30228 version: 2, 30229 active: false 30230 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.wed2c), { 30231 nameTrans: function nameTrans() { 30232 return "".concat(window.i18next.t("common-mycj-menu-wed2c")); 30233 }, 30234 version: 2, 30235 active: false 30236 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu), { 30237 nameTrans: function nameTrans() { 30238 return "".concat(window.i18next.t("common-mycj-menu-temu")); 30239 }, 30240 version: 2, 30241 type: 'authorize', 30242 active: false 30243 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu_us_local), { 30244 nameTrans: function nameTrans() { 30245 return "".concat(window.i18next.t("common-mycj-menu-temu-us-local")); 30246 }, 30247 version: 2, 30248 type: 'authorize', 30249 active: false 30250 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.temu_certified_overseas), { 30251 nameTrans: function nameTrans() { 30252 return "".concat(window.i18next.t("common-mycj-menu-temu-certified-overseas")); 30253 }, 30254 version: 2, 30255 type: 'authorize', 30256 active: false 30257 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shein), { 30258 nameTrans: function nameTrans() { 30259 return "".concat(window.i18next.t("common-mycj-menu-shein")); 30260 }, 30261 version: 2, 30262 type: 'authorize', 30263 active: false 30264 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok), { 30265 nameTrans: function nameTrans() { 30266 return "".concat(window.i18next.t("common-mycj-menu-tiktok")); 30267 }, 30268 version: 2, 30269 type: 'authorize', 30270 active: false 30271 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok_us), { 30272 nameTrans: function nameTrans() { 30273 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us")); 30274 }, 30275 version: 2, 30276 type: 'authorize', 30277 active: false 30278 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.tiktok_us_cross), { 30279 nameTrans: function nameTrans() { 30280 return "".concat(window.i18next.t("common-mycj-menu-tiktok-us-cross")); 30281 }, 30282 version: 2, 30283 type: 'authorize', 30284 active: false 30285 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.woocommerce), { 30286 nameTrans: function nameTrans() { 30287 return "".concat(window.i18next.t("common-mycj-menu-woocommerce")); 30288 }, 30289 version: 2, 30290 type: 'authorize', 30291 active: false 30292 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.ebay), { 30293 nameTrans: function nameTrans() { 30294 return "".concat(window.i18next.t("common-mycj-menu-ebay")); 30295 }, 30296 version: 2, 30297 type: 'authorize', 30298 active: false 30299 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.api), { 30300 nameTrans: function nameTrans() { 30301 return "".concat(window.i18next.t("common-mycj-menu-api")); 30302 }, 30303 version: 2, 30304 type: 'authorize', 30305 active: false 30306 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.etsy), { 30307 nameTrans: function nameTrans() { 30308 return "".concat(window.i18next.t("common-mycj-menu-etsy")); 30309 }, 30310 version: 2, 30311 type: 'authorize', 30312 active: false 30313 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.aliexpress), { 30314 nameTrans: function nameTrans() { 30315 return "".concat(window.i18next.t("common-mycj-menu-aliexpress")); 30316 }, 30317 version: 2, 30318 type: 'authorize', 30319 active: false 30320 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.wix), { 30321 nameTrans: function nameTrans() { 30322 return "".concat(window.i18next.t("common-mycj-menu-wix")); 30323 }, 30324 version: 2, 30325 type: 'authorize', 30326 active: false 30327 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.lazada), { 30328 nameTrans: function nameTrans() { 30329 return "".concat(window.i18next.t("common-mycj-menu-lazada")); 30330 }, 30331 version: 2, 30332 type: 'authorize', 30333 active: false 30334 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shopee), { 30335 nameTrans: function nameTrans() { 30336 return "".concat(window.i18next.t("common-mycj-menu-shopee")); 30337 }, 30338 version: 2, 30339 type: 'authorize', 30340 active: false 30341 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.squarespace), { 30342 nameTrans: function nameTrans() { 30343 return "".concat(window.i18next.t("common-mycj-menu-squarespace")); 30344 }, 30345 version: 2, 30346 type: 'authorize', 30347 active: false 30348 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shoplazza), { 30349 nameTrans: function nameTrans() { 30350 return "".concat(window.i18next.t("common-mycj-menu-shoplazza")); 30351 }, 30352 version: 2, 30353 type: 'authorize', 30354 active: false 30355 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.magento), { 30356 nameTrans: function nameTrans() { 30357 return "".concat(window.i18next.t("common-mycj-menu-magento")); 30358 }, 30359 version: 2, 30360 type: 'authorize', 30361 active: false 30362 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.bigcommerce), { 30363 nameTrans: function nameTrans() { 30364 return "".concat(window.i18next.t("common-mycj-menu-bigcommerce")); 30365 }, 30366 version: 2, 30367 type: 'authorize', 30368 active: false 30369 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.prestashop), { 30370 nameTrans: function nameTrans() { 30371 return "".concat(window.i18next.t("common-mycj-menu-prestashop")); 30372 }, 30373 version: 2, 30374 type: 'authorize', 30375 active: false 30376 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.allvalue), { 30377 nameTrans: function nameTrans() { 30378 return "".concat(window.i18next.t("common-mycj-menu-allvalue")); 30379 }, 30380 version: 2, 30381 type: 'authorize', 30382 active: false 30383 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.nuvemshop), { 30384 nameTrans: function nameTrans() { 30385 return "".concat(window.i18next.t("common-mycj-menu-nuvemshop")); 30386 }, 30387 version: 2, 30388 type: 'authorize', 30389 active: false 30390 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.mercado), { 30391 nameTrans: function nameTrans() { 30392 return "".concat(window.i18next.t("common-mycj-menu-mercado")); 30393 }, 30394 version: 2, 30395 type: 'authorize', 30396 active: false 30397 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.shipstation), { 30398 nameTrans: function nameTrans() { 30399 return "".concat(window.i18next.t("common-mycj-menu-shipstation")); 30400 }, 30401 version: 2, 30402 type: 'authorize', 30403 active: false 30404 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.orangeconnex), { 30405 nameTrans: function nameTrans() { 30406 return "".concat(window.i18next.t("common-mycj-menu-orangeconnex")); 30407 }, 30408 version: 2, 30409 type: 'authorize', 30410 active: false 30411 }), bar_config_vp_assign(bar_config_vp_assign({}, platform_show/* PLATFORM */.i9.mabang), { 30412 nameTrans: function nameTrans() { 30413 return "".concat(window.i18next.t("common-mycj-menu-mabang")); 30414 }, 30415 version: 2, 30416 type: 'authorize', 30417 active: false 30418 })] 30419}, { 30420 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'))), 30421 nameVal: "My CJ", 30422 nameTrans: function nameTrans() { 30423 var _a; 30424 return window.i18next.t("common-mycj-my-site", { 30425 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('source-name') 30426 }); 30427 }, 30428 iconclass: 'bianzu32', 30429 active: false, 30430 childs: [{ 30431 name: 'Dashboard', 30432 nameTrans: function nameTrans() { 30433 return "".concat(window.i18next.t("common-mycj-menu-dashboard")); 30434 }, 30435 code: 'mycj_dashboard', 30436 route: '/my.html#/dashboard', 30437 active: false, 30438 isNew: true 30439 }, { 30440 name: 'Profile', 30441 nameTrans: function nameTrans() { 30442 return "".concat(window.i18next.t("common-mycj-menu-profile")); 30443 }, 30444 code: 'mycj_profile', 30445 route: '/my.html#/profile/info', 30446 active: false 30447 }, { 30448 name: 'Ticket', 30449 nameTrans: function nameTrans() { 30450 return "".concat(window.i18next.t("common-mycj-menu-ticket")); 30451 }, 30452 code: 'mycj_ticket', 30453 route: '/mine/ticket', 30454 active: false 30455 }, { 30456 name: 'Wallet', 30457 nameTrans: function nameTrans() { 30458 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 30459 }, 30460 code: 'mycj_wallet', 30461 route: '/mine/wallet', 30462 active: false 30463 }, { 30464 name: 'Browsing History', 30465 nameTrans: function nameTrans() { 30466 return "".concat(window.i18next.t("common-mycj-menu-browsing-history")); 30467 }, 30468 code: 'mycj_browsing_history', 30469 route: '/viewHistory', 30470 active: false 30471 }, { 30472 name: 'Export List', 30473 nameTrans: function nameTrans() { 30474 return "".concat(window.i18next.t("common-mycj-menu-export-list")); 30475 }, 30476 iconclass: 'liwuicon_', 30477 code: 'mycj_export_list', 30478 route: '/mine/exportList', 30479 active: false 30480 }, { 30481 name: 'Sub-account', 30482 nameTrans: function nameTrans() { 30483 return "".concat(window.i18next.t("common-mycj-menu-sub-account")); 30484 }, 30485 code: 'mycj_sub_account', 30486 route: '/my.html#/accountManage', 30487 active: false 30488 }, {
30489 name: 'Order-video', 30490 nameTrans: function nameTrans() { 30491 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 30492 }, 30493 code: 'mycj_order-video', 30494 route: '/mine/orderVideo', 30495 active: false, 30496 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 30497 }] 30498}]; 30499var bar_config_vp_menuPath = {}; 30500var bar_config_vp_menuNames = {}; 30501function bar_config_vp_loops(list, parent) { 30502 return (list || []).map(function (_a) { 30503 var route = _a.route, 30504 childs = _a.childs, 30505 name = _a.name, 30506 version = _a.version; 30507 var _route = route; 30508 var node = bar_config_vp_menuNames[name] = bar_config_vp_menuPath[_route] = { 30509 parent: parent, 30510 name: name, 30511 version: version, 30512 route: _route 30513 }; 30514 node['childs'] = bar_config_vp_loops(childs, node); 30515 return node; 30516 }); 30517} 30518function bar_config_vp_getPath(name) { 30519 var obj = bar_config_vp_menuNames[name]; 30520 var arr = []; 30521 while (obj && obj.name) { 30522 if (obj.childs && obj.childs[0]) { 30523 arr.push(obj.name); 30524 } else { 30525 arr.push(obj.name); 30526 } 30527 if (!obj.parent) break; 30528 obj = obj.parent; 30529 } 30530 return arr; 30531} 30532bar_config_vp_loops(bar_config_vp_menus, null); 30533var bar_config_vp_createAuthTree = function createAuthTree() { 30534 var authMapByRoute = []; 30535 var _fun = function fun(list) { 30536 return list.map(function (l) { 30537 if (l.route && l.code) authMapByRoute.push({ 30538 name: l.name, 30539 code: l.code, 30540 route: l.route 30541 }); 30542 return { 30543 name: l.name, 30544 code: l.code, 30545 route: l.route, 30546 children: l.childs && _fun(l.childs) 30547 }; 30548 }); 30549 }; 30550 return [_fun(bar_config_vp_menus), authMapByRoute]; 30551}; 30552/* harmony default export */ const bar_config_vp = ((/* unused pure expression or super */ null && (bar_config_vp_createAuthTree))); 30553;// ./src/components/Menu/bar.config.th.ts 30554var bar_config_th_a, bar_config_th_b; 30555 30556 30557var 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'); 30558var bar_config_th_menus = [{ 30559 name: 'Cart', 30560 nameTrans: function nameTrans() { 30561 return "".concat(window.i18next.t("common-mycj-menu-cart")); 30562 }, 30563 iconclass: 'gouwuche', 30564 active: false, 30565 route: '/mine/purchase/purchaseCart?cartType=3', 30566 childs: [], 30567 code: 'mycj_cart' 30568}, { 30569 name: 'Orders', 30570 nameTrans: function nameTrans() { 30571 return "".concat(window.i18next.t("common-mycj-menu-orders")); 30572 }, 30573 iconclass: 'Orders', 30574 active: false, 30575 code: 'mycj_orders', 30576 childs: [{ 30577 name: 'My Orders', 30578 nameTrans: function nameTrans() { 30579 return "".concat(window.i18next.t("common-mycj-menu-my-orders", 'My Orders')); 30580 }, 30581 active: false, 30582 code: 'mycj_wholesale_orders', 30583 route: '/mine/purchase/purchaseList?orderType=3' 30584 }, { 30585 name: 'Undelivered Orders', 30586 nameTrans: function nameTrans() { 30587 return "".concat(window.i18next.t("common-mycj-menu-undelivered-orders")); 30588 }, 30589 code: 'mycj_undelivered_orders', 30590 route: '/mine/undeliveredOrder', 30591 active: false 30592 }, { 30593 name: 'Disputes', 30594 nameTrans: function nameTrans() { 30595 return "".concat(window.i18next.t("common-mycj-menu-disputes")); 30596 }, 30597 code: 'mycj_disputes', 30598 route: '/mine/dispute/list', 30599 active: false 30600 }] 30601}, { 30602 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'))), 30603 nameVal: "My CJ", 30604 nameTrans: function nameTrans() { 30605 var _a; 30606 return window.i18next.t("common-mycj-my-site", { 30607 siteName: (_a = window === null || window === void 0 ? void 0 : window.siteCheck) === null || _a === void 0 ? void 0 : _a.data('name') 30608 }); 30609 }, 30610 iconclass: 'MonTH', 30611 active: false, 30612 childs: [{ 30613 name: 'Profile', 30614 nameTrans: function nameTrans() { 30615 return "".concat(window.i18next.t("common-mycj-menu-profile")); 30616 }, 30617 code: 'mycj_profile', 30618 route: '/my.html#/profile/info', 30619 active: false 30620 }, { 30621 name: 'Wallet', 30622 nameTrans: function nameTrans() { 30623 return "".concat(window.i18next.t("common-mycj-menu-wallet")); 30624 }, 30625 code: 'mycj_wallet', 30626 route: '/mine/wallet', 30627 active: false 30628 }, {
30629 name: 'Order-video', 30630 nameTrans: function nameTrans() { 30631 return "".concat(window.i18next.t("common-mycj-menu-order-list-video")); 30632 }, 30633 code: 'mycj_order-video', 30634 route: '/mine/orderVideo', 30635 active: false, 30636 isHide: bar_config/* isWarehouseOperationVideoUser */.fO 30637 }] 30638}]; 30639var bar_config_th_menuPath = {}; 30640var bar_config_th_menuNames = {}; 30641function bar_config_th_loops(list, parent) { 30642 return (list || []).map(function (_a) { 30643 var route = _a.route, 30644 childs = _a.childs, 30645 name = _a.name, 30646 version = _a.version, 30647 nameTrans = _a.nameTrans; 30648 var _route = route; 30649 var node = bar_config_th_menuNames[name] = bar_config_th_menuPath[_route] = { 30650 parent: parent, 30651 nameTrans: nameTrans, 30652 name: name, 30653 version: version, 30654 route: _route 30655 }; 30656 node['childs'] = bar_config_th_loops(childs, node); 30657 return node; 30658 }); 30659} 30660function bar_config_th_getPath(name) { 30661 var obj = bar_config_th_menuNames[name]; 30662 var arr = []; 30663 while (obj && obj.name) { 30664 if (obj.childs && obj.childs[0]) { 30665 arr.push(obj.name); 30666 } else { 30667 arr.push(obj.name); 30668 } 30669 if (!obj.parent) break; 30670 obj = obj.parent; 30671 } 30672 return arr; 30673} 30674function getTransPath(name) { 30675 var obj = bar_config_th_menuNames[name]; 30676 var arr = []; 30677 while (obj && obj.nameTrans) { 30678 if (obj.childs && obj.childs[0]) { 30679 arr.push(obj.nameTrans); 30680 } else { 30681 arr.push(obj.nameTrans); 30682 } 30683 if (!obj.parent) break; 30684 obj = obj.parent; 30685 } 30686 return arr; 30687} 30688bar_config_th_loops(bar_config_th_menus, null); 30689var bar_config_th_createAuthTree = function createAuthTree() { 30690 var authMapByRoute = []; 30691 var _fun = function fun(list) { 30692 return list.map(function (l) { 30693 if (l.route && l.code) authMapByRoute.push({ 30694 name: l.name, 30695 code: l.code, 30696 route: l.route 30697 }); 30698 return { 30699 name: l.name, 30700 code: l.code, 30701 route: l.route, 30702 children: l.childs && _fun(l.childs) 30703 }; 30704 }); 30705 }; 30706 return [_fun(bar_config_th_menus), authMapByRoute]; 30707}; 30708/* harmony default export */ const bar_config_th = ((/* unused pure expression or super */ null && (bar_config_th_createAuthTree))); 30709// EXTERNAL MODULE: ./node_modules/@cckj/mf-tools/dist/index.js 30710var dist = __webpack_require__(99437); 30711;// ./src/components/Menu/hooks/useNoMenuActiveRoute.ts 30712 30713var noMenuRouteConfig = [{ 30714 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], 30715 activeMenu: 'Find Products' 30716}, { 30717 routes: [/\/mine\/purchase\/purchaseConfirmation/i], 30718 activeMenu: 'Cart' 30719}, { 30720 routes: [/\/mine\/dropshipping\/orderManage\/orderDetial/i, /\/mine\/orderImport/i], 30721 activeMenu: 'Store Orders' 30722}, { 30723 routes: [/\/mine\/purchase\/detial(.*?)type=1/i, /\/mine\/dispute\/createDispute(.*?)purchaseOrderType=1/i], 30724 activeMenu: 'Sample Orders' 30725}, { 30726 routes: [/\/mine\/purchase\/detial(.*?)type=3/i, /\/mine\/dispute\/createDispute(.*?)purchaseOrderType=3/i], 30727 activeMenu: 'Wholesale Orders' 30728}, { 30729 routes: [/\/mine\/purchase\/detial(.*?)type=(2|4)/i, /\/mine\/purchase\/purchaseList(.*?)orderType=4/i], 30730 activeMenu: 'Inventory Orders' 30731}, { 30732 routes: [/\/mine\/orderTracing\/detail/i], 30733 activeMenu: 'Fulfillment Status' 30734}, { 30735 routes: [/\/mine\/sourcing\/postSourcing/i, /\/mine\/quickSourcing/i], 30736 activeMenu: 'Sourcing' 30737}, { 30738 routes: [/\/mine\/marketing\/cards/i, /\/my.html#\/all-message/i, /\/points-mall/i], 30739 activeMenu: 'Home' 30740}, { 30741 routes: [/\/viewHistory/i], 30742 activeMenu: 'Browsing History' 30743}, { 30744 routes: [/\/mine\/myInventoryNew/i, /\/mine\/myInventory\/deposit\?type=2/i, /\/mine\/myInventory\/depositBySPU\?type=2/i
30744], 30745 activeMenu: 'My Inventory' 30746}]; 30747function useNoMenuActiveRoute(_a) { 30748 var setActive = _a.setActive, 30749 _b = _a.autoRun, 30750 autoRun = _b === void 0 ? true : _b; 30751 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30752 if (!autoRun) return; 30753 noMenuRouteConfig.some(function (config) { 30754 var path = location.href; 30755 var match = config.routes.find(function (_) { 30756 return _.test(path); 30757 }); 30758 if (match) { 30759 setActive(config.activeMenu); 30760 } 30761 return match; 30762 }); 30763 }, []); 30764} 30765// EXTERNAL MODULE: ./src/components/CjHeader/contexts/PropsContext.ts 30766var PropsContext = __webpack_require__(44148); 30767// EXTERNAL MODULE: ./src/hook/use-is-mycj.ts 30768var use_is_mycj = __webpack_require__(71850); 30769;// ./src/components/Menu/hooks/useWindowTitle.ts 30770var useWindowTitle_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 30771 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 30772 if (ar || !(i in from)) { 30773 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 30774 ar[i] = from[i]; 30775 } 30776 } 30777 return to.concat(ar || Array.prototype.slice.call(from)); 30778}; 30779 30780 30781 30782function useWindowTitle(_a) { 30783 var activeRoutes = _a.activeRoutes, 30784 activeTransRoutes = _a.activeTransRoutes; 30785 var siteCheck = (0,PropsContext/* useGlobalProps */.v)().siteCheck; 30786 var isMyCJPage = (0,use_is_mycj/* default */.A)().isMyCJPage; 30787 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30788 if (activeTransRoutes && activeTransRoutes.length && isMyCJPage) { 30789 var trans = useWindowTitle_spreadArray([], activeTransRoutes, true).shift(); 30790 var transTitle = trans ? trans() : ''; 30791 transTitle && (document.title = transTitle); 30792 return; 30793 } 30794 if (activeRoutes.length > 0 && isMyCJPage) { 30795 var routeName = useWindowTitle_spreadArray([], activeRoutes, true).shift(); 30796 if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok_us_cross') { 30797 routeName = 'TikTok Shop US (Cross Border)'; 30798 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok_us') { 30799 routeName = 'TikTok Shop US (Local)'; 30800 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'tiktok') { 30801 routeName = 'TikTok Shop (Non-US)'; 30802 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu') { 30803 routeName = 'Temu Semi-Managed'; 30804 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu_us_local') { 30805 routeName = 'Temu Local'; 30806 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'temu_certified_overseas') { 30807 routeName = 'Temu Cooperative Warehouse'; 30808 } else if ((routeName === null || routeName === void 0 ? void 0 : routeName.toLowerCase()) === 'shein') { 30809 routeName = 'Shein Semi-Managed'; 30810 } 30811 routeName && (document.title = routeName); 30812 } 30813 if (activeRoutes.length == 0 && isMyCJPage) { 30814 document.title = "My".concat(siteCheck.data('name') || 'CJ'); 30815 } 30816 }, [activeRoutes]); 30817} 30818// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsQk.ts 30819var useIsQk = __webpack_require__(69055); 30820// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsVP.ts 30821var useIsVP = __webpack_require__(63301); 30822;// ./src/components/Menu/hooks/useActiveRoute.ts 30823function 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); } 30824var useActiveRoute_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 30825 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 30826 if (ar || !(i in from)) { 30827 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 30828 ar[i] = from[i]; 30829 } 30830 } 30831 return to.concat(ar || Array.prototype.slice.call(from)); 30832}; 30833 30834 30835 30836 30837 30838 30839 30840 30841 30842 30843 30844 30845 30846 30847 30848 30849 30850 30851 30852 30853 30854var useActiveRoute = function useActiveRoute() { 30855 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 30856 activeRoutes = _a[0], 30857 setActiveRoutes = _a[1]; 30858 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 30859 activeTransRoutes = _b[0], 30860 setActiveTransRoutes = _b[1]; 30861 var _c = (0,use_parent_platform/* default */.A)(), 30862 isCj = _c.isCj, 30863 isGlobalWarehouse = _c.isGlobalWarehouse, 30864 isSupplier = _c.isSupplier; 30865 var siteCheck = (0,use_site_check/* default */.A)();
30866 var _menuPath = isQs() ? bar_config_qs_menuPath : bar_config/* menuPath */.DD; 30867 if (useIsCf()) _menuPath = menuPath; 30868 if ((0,useIsQk/* default */.A)()) _menuPath = bar_config_qk_menuPath; 30869 if ((0,useIsVP/* default */.A)()) _menuPath = bar_config_vp_menuPath; 30870 if ((0,common/* is1688 */.G3)(siteCheck)) _menuPath = bar_config_th_menuPath; 30871 if ((0,useIsZS/* default */.A)(siteCheck)) _menuPath = bar_config_zs/* menuPath */.DD; 30872 var currentMenuNames = Object.keys(_menuPath).map(function (route) { 30873 var _a; 30874 return (_a = _menuPath[route]) === null || _a === void 0 ? void 0 : _a.name; 30875 }).filter(Boolean); 30876 var pickMenuName = function pickMenuName() { 30877 var names = []; 30878 for (var _i = 0; _i < arguments.length; _i++) { 30879 names[_i] = arguments[_i]; 30880 } 30881 return names.find(function (name) { 30882 return currentMenuNames.includes(name); 30883 }); 30884 }; 30885 var normalizeRouteName = function normalizeRouteName(routeName) { 30886 if (routeName === 'Profile' || routeName === 'Settings') { 30887 return pickMenuName(routeName, routeName === 'Profile' ? 'Settings' : 'Profile') || routeName; 30888 } 30889 if (routeName === 'Home') { 30890 return pickMenuName('Home', 'Find Products', 'Dashboard') || routeName; 30891 } 30892 if (routeName === 'Shipping Calculation') { 30893 return pickMenuName('Shipping Calculation', 'Find Products') || routeName; 30894 } 30895 return routeName; 30896 }; 30897 useWindowTitle({ 30898 activeRoutes: activeRoutes, 30899 activeTransRoutes: activeTransRoutes 30900 }); 30901 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30902 var token = login_info_controller/* default */.A.info('token'); 30903 var pathname = location.pathname; 30904 var isMycj = pathname.indexOf('my.html') > -1 || pathname.indexOf('/mine') > -1; 30905 if (token.includes('@VP:') && !location.href.includes('fulfillvip') && isMycj) { 30906 var url = location.hostname.includes('offline.pre') ? 'http://www.fulfillvip.offline.pre.com' : 'https://www.fulfillvip.com'; 30907 location.href = "".concat(url, "/toLogin.html?jumpVP=true&token=").concat(base64/* Base64 */.o4.encode(token)); 30908 } 30909 var path = location.pathname || ''; 30910 dist.mfEvent.$on('on-url-changed', function (data) { 30911 var _a, _b, _c; 30912 if ((path === null || path === void 0 ? void 0 : path.indexOf('my.html')) === -1) return; 30913 var name = data.name || data.names; 30914 var child = data.child || ''; 30915 if (name && useActiveRoute_typeof(name) === 'object') { 30916 var path_1 = location.pathname || ''; 30917 if (path_1.indexOf('my.html') > -1) { 30918 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 : ''; 30919 if (url.indexOf('/authorize') > -1) name = name[url]; 30920 } 30921 } 30922 if (child) name = child; 30923 if (name == 'Queue') { 30924 if (location.hash.indexOf('/products-connection/history/0') === -1) name = 'Products Records'; 30925 } 30926 if (/products-connection\/.*?-connection/i.test(location.hash)) { 30927 name = 'Store Products'; 30928 } 30929 if (useIsCf()) { 30930 if (name === 'Products') { 30931 name = 'My Products'; 30932 } 30933 } 30934 setActive(normalizeRouteName(name)); 30935 }); 30936 if (!path || path === '/') { 30937 if (isCj || isGlobalWarehouse) setActive((0,useIsZS/* default */.A)(siteCheck) ? 'Store Orders' : pickMenuName('Catalog', 'Find Products', 'Home', 'Dashboard') || 'Find Products'); 30938 } 30939 if (path === '/home') { 30940 setActive(normalizeRouteName('Home')); 30941 } 30942 if (path === '/home.html') { 30943 setActive(pickMenuName('Catalog', 'Find Products', 'Home', 'Dashboard') || 'Find Products'); 30944 } 30945 if (path === '/calculation.html') { 30946 setActive(normalizeRouteName('Shipping Calculation')); 30947 } 30948 if (path === '/mentors') { 30949 setActive('Academy'); 30950 } else if (path === '/savedFactories') { 30951 setActive('Saved Factories'); 30952 } else if (path === '/factories' || path === '/factoryDetail') { 30953 setActive('Factories'); 30954 } 30955 if (['/agents', '/agents/detail', '/mine/agents/serviceOrders', '/mine/agents/serviceComplaints'].includes(path) || /agents\/\d+/i.test(path)) {
30956 setActive('Agents'); 30957 } 30958 if (isSupplier) { 30959 setActive('Brands'); 30960 } 30961 if ((0,useIsZS/* default */.A)(siteCheck) && (path == '/list/wholesale-all-categories-l-all.html' || path.indexOf('/search/') > -1)) { 30962 setActive('Catalog'); 30963 } 30964 if (/\/intelligence/i.test(path)) { 30965 setActive('Intelligence'); 30966 } 30967 }, []); 30968 var path = location.pathname || ''; 30969 var verifyWidthUS = function verifyWidthUS(lcPath, lcName) { 30970 var verifyTTUS = lcPath.toLowerCase().indexOf('tiktok_us') > -1 ? lcPath.toLowerCase().indexOf('tiktok_us_cross') > -1 ? lcName == 'tiktok_us_cross' : lcName == 'tiktok_us' : true; 30971 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; 30972 return verifyTTUS && verifyTemu; 30973 }; 30974 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 30975 if (path.startsWith('/mine')) { 30976 var findRouteName = ''; 30977 var bestRouteLen = -1; 30978 var routes = Object.keys(_menuPath); 30979 for (var _i = 0, routes_1 = routes; _i < routes_1.length; _i++) { 30980 var route = routes_1[_i]; 30981 var pureRoute = route.split('?')[0]; 30982 if (path.indexOf(pureRoute) > -1 || _menuPath[route].version === 2) { 30983 if (_menuPath[route].version === 2) { 30984 var lcPath = path.toLowerCase(); 30985 var lcName = _menuPath[route].name.toLowerCase(); 30986 if (lcPath.toLowerCase().indexOf(lcName) > -1 && verifyWidthUS(lcPath, lcName)) { 30987 findRouteName = _menuPath[route].name; 30988 break; 30989 } 30990 var lcName2 = lcName.replace(/\s+/g, '').replace('-', '_'); 30991 if (lcPath.indexOf(lcName2) > -1 && verifyWidthUS(lcPath, lcName2)) { 30992 findRouteName = _menuPath[route].name; 30993 break; 30994 } 30995 } else if ((pureRoute || '').length > bestRouteLen) { 30996 bestRouteLen = (pureRoute || '').length; 30997 findRouteName = _menuPath[route].name; 30998 } 30999 } 31000 } 31001 if (path.indexOf('/mine/purchase/purchaseList') > -1) { 31002 var search = location.search; 31003 var searchObj = search.slice(1).split('&').reduce(function (obj, item) { 31004 var _a = item.split('='), 31005 key = _a[0], 31006 value = _a[1]; 31007 obj[key] = value; 31008 return obj; 31009 }, {}); 31010 var orderType = searchObj.orderType; 31011 if (orderType) { 31012 findRouteName = { 31013 '1': 'Sample Orders', 31014 '2': 'Inventory Orders', 31015 '3': (0,common/* is1688 */.G3)(siteCheck) ? 'My Orders' : 'Wholesale Orders' 31016 }[orderType]; 31017 } 31018 } 31019 if (path.indexOf('/products/patchPack') > -1) { 31020 var search = location.search; 31021 var params = new URLSearchParams(search); 31022 var from = params.get('from'); 31023 if (from === 'AddedProducts') { 31024 findRouteName = 'Added Products'; 31025 } else if (from === 'StoreProducts') { 31026 findRouteName = 'Store Products'; 31027 } else { 31028 findRouteName = 'Cart'; 31029 } 31030 } 31031 if (findRouteName) { 31032 setActive(findRouteName); 31033 } 31034 } 31035 }, [path, location.search]); 31036 var setActive = function setActive(routeName) { 31037 var _getPath = isQs() ? bar_config_qs_getPath : bar_config/* getPath */.Yn; 31038 if ((0,useIsZS/* default */.A)(siteCheck)) _getPath = bar_config_zs/* getPath */.Yn; 31039 if ((0,useIsQk/* default */.A)()) _getPath = bar_config_qk_getPath; 31040 if ((0,useIsVP/* default */.A)()) _getPath = bar_config_vp_getPath; 31041 if (useIsCf()) _getPath = getPath; 31042 if ((0,common/* is1688 */.G3)(siteCheck)) { 31043 _getPath = bar_config_th_getPath; 31044 var transPath = getTransPath(routeName); 31045 setActiveTransRoutes(transPath); 31046 } 31047 var arr = _getPath(routeName); 31048 setActiveRoutes(useActiveRoute_spreadArray([], arr, true)); 31049 }; 31050 var isZesty = (0,useIsZS/* default */.A)(); 31051 var autoRun = isZesty ? false : true; 31052 useNoMenuActiveRoute({ 31053 setActive: setActive, 31054 autoRun: autoRun 31055 }); 31056 var isActive = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (routeName) { 31057 var arr = activeRoutes.slice(0, activeRoutes.length - 1); 31058 return arr.includes(routeName); 31059 }, [activeRoutes]); 31060 var isParentActive = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (routeName) { 31061 var len = activeRoutes.length; 31062 return activeRoutes[len - 1] === routeName; 31063 }, [activeRoutes]); 31064 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31065 if (activeRoutes.length > 0) { 31066 var routeName = useActiveRoute_spreadArray([], activeRoutes, true).pop(); 31067 var curRouteDom_1 = document.querySelector("[data-route=\"".concat(routeName, "\"]")); 31068 if ((0,common/* isInViewport */.cH)(curRouteDom_1, 134)) return; 31069 setTimeout(function () { 31070 curRouteDom_1 === null || curRouteDom_1 === void 0 ? void 0 : curRouteDom_1.scrollIntoView({ 31071 block: 'start', 31072 behavior: 'smooth' 31073 }); 31074 }, 500); 31075 } 31076 }, [activeRoutes]); 31077 return { 31078 isActive: isActive, 31079 isParentActive: isParentActive 31080 }; 31081}; 31082/* harmony default export */ const hooks_useActiveRoute = (useActiveRoute); 31083;// ./src/components/Menu/hooks/useIsCollapsed.ts 31084 31085 31086 31087 31088 31089var collapsedWidth = 65; 31090var expandedWidth = 220; 31091var zestyMenuCollapsedWidth = 80; 31092var useCollapsed = function useCollapsed() { 31093 var _a; 31094 var siteCheck = (0,PropsContext/* useGlobalProps */.v)().siteCheck; 31095 var menuCollapsed = (_a = js_cookie/* default */.A.get('menuCollapsed')) !== null && _a !== void 0 ? _a : siteCheck.data('default-menu-collapsed') || 'false'; 31096 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(JSON.parse(menuCollapsed)), 31097 isCollapsed = _b[0], 31098 setIsCollapsed = _b[1]; 31099 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)((0,common/* is1688 */.G3)(siteCheck) ? false : true), 31100 allowSwitch = _c[0], 31101 setAllowSwitch = _c[1]; 31102 var isZesty = siteCheck.isSite('ZS'); 31103 var theMenuCollapsedWidth = isZesty ? zestyMenuCollapsedWidth : collapsedWidth; 31104 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31105 if ((0,common/* is1688 */.G3)(siteCheck)) return; 31106 var handleResize = function handleResize() { 31107 if (window.innerWidth < 1440) { 31108 toggle('1'); 31109 setAllowSwitch(false); 31110 } else { 31111 setAllowSwitch(true); 31112 } 31113 }; 31114 window.addEventListener('resize', handleResize); 31115 handleResize(); 31116 return function () { 31117 return window.removeEventListener('resize', handleResize); 31118 }; 31119 }, []); 31120 var toggle = function toggle(_collapsed) { 31121 if (_collapsed === void 0) { 31122 _collapsed = ''; 31123 } 31124 var flag = _collapsed ? _collapsed === '1' : !isCollapsed; 31125 var httpsOptions = (0,common/* httpsOptionsConfig */.Me)(); 31126 js_cookie/* default */.A.set('menuCollapsed', JSON.stringify(flag), httpsOptions); 31127 var menu = document.getElementById('cj-menu'); 31128 if (menu) { 31129 menu.style.width = (flag ? theMenuCollapsedWidth : expandedWidth) + 'px'; 31130 } 31131 setIsCollapsed(flag); 31132 }; 31133 return { 31134 isCollapsed: isCollapsed, 31135 allowSwitch: allowSwitch, 31136 toggle: toggle 31137 }; 31138}; 31139/* harmony default export */ const useIsCollapsed = (useCollapsed); 31140// EXTERNAL MODULE: ./src/components/CjHeader/hooks/use-is-login.ts 31141var use_is_login = __webpack_require__(53905); 31142;// ./src/components/Menu/MenuNormal/SubMenu.tsx 31143 31144 31145 31146 31147 31148 31149 31150 31151 31152 31153 31154 31155 31156 31157 31158 31159 31160 31161 31162var SubMenu_SubMenu = function SubMenu(_a) { 31163 var _b, _c, _d; 31164 var _e; 31165 var item = _a.item, 31166 isActive = _a.isActive, 31167 isParentActive = _a.isParentActive, 31168 showAuthorizeListData = _a.showAuthorizeListData, 31169 openAddStore = _a.openAddStore, 31170 openServiceCenter = _a.openServiceCenter, 31171 guideVisible = _a.guideVisible; 31172 var isVip = (0,useIsVip/* default */.A)(); 31173 var siteCheck = (0,use_site_check/* default */.A)(); 31174 var loginInfo = (0,PropsContext/* useGlobalProps */.v)().loginInfo; 31175 var isLogin = (0,use_is_login/* default */.A)(loginInfo).isLogin; 31176 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 31177 var isCj = (0,use_parent_platform/* default */.A)().isCj; 31178 var hookMenusChilds = useMenuChilds({ 31179 selector: '.specialMenuItem' 31180 }); 31181 var isZesty = siteCheck.isSite('ZS'); 31182 var defaultExpand = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 31183 if (isLogin) { 31184 if (isCJSite) {
31185 return item.name === 'Source' || item.name === 'Community'; 31186 } 31187 return true; 31188 } 31189 return item.name === 'Products'; 31190 }, [isLogin, item.name, isCJSite]); 31191 var _f = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(defaultExpand), 31192 expand = _f[0], 31193 setExpand = _f[1]; 31194 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31195 if (isParentActive(item.name) && !expand) { 31196 setExpand(true); 31197 } 31198 }, [isParentActive, item.name]); 31199 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31200 var _a; 31201 if (guideVisible && ((_a = item.childs) === null || _a === void 0 ? void 0 : _a.length) > 0 && !expand) { 31202 setExpand(true); 31203 } 31204 }, [guideVisible]); 31205 var hookMyCjRoute = (0,useMyCjReactRoute/* default */.A)(); 31206 var i18next = window === null || window === void 0 ? void 0 : window.i18next; 31207 var handleClick = function handleClick() { 31208 if (item.childs.length > 0) { 31209 setExpand(expand ? '' : item.name); 31210 } else { 31211 if (hookMyCjRoute.canUseNewMyCjRouteJump(item.route)) { 31212 return hookMyCjRoute.changeRoute(item.route); 31213 } 31214 var _href = (0,common/* getRouteHref */.hQ)(item); 31215 location.href = isCj ? _href : (0,cj_href/* cjHref */.F)(_href); 31216 } 31217 }; 31218 var hasChilds = item.childs && item.childs.length > 0; 31219 var normalSpecial = item.special && !isCJSite; 31220 var leaveTimer = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(); 31221 var getAddTop = function getAddTop(name, childs) { 31222 var _a; 31223 if (name === void 0) { 31224 name = ''; 31225 } 31226 if (childs === void 0) { 31227 childs = []; 31228 } 31229 if (name === 'Authorization' && !isCJSite) { 31230 var hasMiaoshou = ((_a = childs.filter(function (child) { 31231 return child.key === 'miaoshou'; 31232 })) === null || _a === void 0 ? void 0 : _a.length) > 0; 31233 return hasMiaoshou ? -50 : 0; 31234 } 31235 return 0; 31236 }; 31237 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31238 className: classnames_default()(Menu_MenuNormal.subMenu, (_b = {}, _b[Menu_MenuNormal.vip] = isVip, _b[Menu_MenuNormal.zs] = isZesty, _b)), 31239 onMouseMove: function onMouseMove(e) { 31240 leaveTimer.current && clearTimeout(leaveTimer.current); 31241 var addTop = getAddTop(item.name, item.childs); 31242 if (normalSpecial && hasChilds) hookMenusChilds.handlerMouseMove(e, addTop); 31243 }, 31244 onMouseLeave: function onMouseLeave(e) { 31245 var target = e.currentTarget; 31246 leaveTimer.current = setTimeout(function () { 31247 if (normalSpecial && hasChilds) hookMenusChilds.handlerMouseLeave(target); 31248 }, 200); 31249 } 31250 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31251 className: classnames_default()(Menu_MenuNormal.box, (_c = {}, _c[Menu_MenuNormal.active] = isParentActive(item.name) ? normalSpecial || !hasChilds : false, _c[Menu_MenuNormal.zs] = isZesty, _c)), 31252 onClick: handleClick, 31253 "data-route": item.name, 31254 "data-gtag-element": (0,gtag/* toGtagElement */.l)(item.name) 31255 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31256 className: Menu_MenuNormal.left 31257 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31258 type: item.iconclass 31259 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31260 className: Menu_MenuNormal.title 31261 }, item.nameTrans())), hasChilds && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31262 className: [Menu_MenuNormal.arrow, expand ? Menu_MenuNormal.expand : ''].join(' '), 31263 style: { 31264 transform: normalSpecial ? 'rotate(-90deg)' : '' 31265 } 31266 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31267 type: "xiangxia" 31268 }))), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31269 className: Menu_MenuNormal.activeLeftLine 31270 })), hasChilds && !normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31271 className: classnames_default()(Menu_MenuNormal.childsBox, (_d = {}, _d[Menu_MenuNormal.expand] = expand, _d)) 31272 }, item.special && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31273 className: Menu_MenuNormal.MenuItem, 31274 onClick: openAddStore, 31275 "data-gtag-element": "install_app" 31276 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31277 className: "".concat(Menu_MenuNormal.box, " ").concat(Menu_MenuNormal.addStoreBox) 31278 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31279 className: Menu_MenuNormal.name 31280 }, 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", { 31281 className: Menu_MenuNormal.addIcon 31282 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31283 type: "jiahao1" 31284 }))))), item.name === 'Service' && openServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31285 className: Menu_MenuNormal.MenuItem, 31286 onClick: openServiceCenter, 31287 "data-gtag-element": "subscribe_service" 31288 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31289 className: "".concat(Menu_MenuNormal.box, " ").concat(Menu_MenuNormal.addStoreBox) 31290 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31291 className: Menu_MenuNormal.name 31292 }, 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", { 31293 className: Menu_MenuNormal.addIcon 31294 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 31295 type: "jiahao1" 31296 }))))), item.childs.map(function (childMenu) { 31297 if (childMenu.isDivider) { 31298 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31299 key: childMenu.name, 31300 className: Menu_MenuNormal.menuDivider 31301 }); 31302 } 31303 if (typeof childMenu.isHide === 'function' ? childMenu.isHide() : childMenu.isHide) return null; 31304 if (!siteCheck.isShow("mycj-menu-".concat(item.nameVal || item.name, "-").concat(childMenu.name))) return null; 31305 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuNormal_MenuItem, { 31306 key: childMenu.name, 31307 childMenu: childMenu, 31308 isActive: isActive, 31309 showAuthorizeListData: showAuthorizeListData, 31310 isSpecial: item.special 31311 }); 31312 }))), hasChilds && normalSpecial && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31313 className: classnames_default()(Menu_MenuNormal.specialMenuItem, 'specialMenuItem') 31314 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MultipleMenuItem/* default */.A, { 31315 list: (_e = item.childs) === null || _e === void 0 ? void 0 : _e.map(function (item) { 31316 var _a; 31317 return { 31318 key: item.key, 31319 name: (_a = item.nameTrans) === null || _a === void 0 ? void 0 : _a.call(item),
31320 imageUrl: oss_controller/* default */.Ay.join((0,oss_controller/* createPlatform */.Q_)(String(item.imageName || item.name).toLocaleLowerCase())), 31321 count: item.count, 31322 link: isCj ? item.route : (0,cj_href/* cjHref */.F)(item.route), 31323 isActive: isActive(item.name), 31324 isShow: useIsShowOrangeConnex(item.name) && isShowAuthorizeType(showAuthorizeListData, item.name) && useIsShowMiaoshou(item.name, siteCheck), 31325 isErpPlatform: item.businessType === EBusinessType.ERP 31326 }; 31327 }) 31328 })))); 31329}; 31330/* harmony default export */ const MenuNormal_SubMenu = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(SubMenu_SubMenu)); 31331;// ./src/components/Menu/MenuNormal/index.tsx 31332var MenuNormal_assign = undefined && undefined.__assign || function () { 31333 MenuNormal_assign = Object.assign || function (t) { 31334 for (var s, i = 1, n = arguments.length; i < n; i++) { 31335 s = arguments[i]; 31336 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31337 } 31338 return t; 31339 }; 31340 return MenuNormal_assign.apply(this, arguments); 31341}; 31342 31343 31344 31345 31346 31347var MenuNormal = function MenuNormal(_a) { 31348 var isActive = _a.isActive, 31349 isParentActive = _a.isParentActive, 31350 showAuthorizeListData = _a.showAuthorizeListData, 31351 menus = _a.menus, 31352 openAddStore = _a.openAddStore, 31353 menuContainerRef = _a.menuContainerRef, 31354 openServiceCenter = _a.openServiceCenter, 31355 disableScroll = _a.disableScroll; 31356 var siteCheck = (0,use_site_check/* default */.A)(); 31357 var backgroundImage = siteCheck.data('menu-bg-image') || nav_bg/* default */.A; 31358 var menuNormalStyle = { 31359 backgroundImage: "url(".concat(backgroundImage, ")") 31360 }; 31361 if (siteCheck.isSite('ZS')) { 31362 menuNormalStyle = { 31363 backgroundColor: '#fff' 31364 }; 31365 } 31366 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31367 ref: menuContainerRef, 31368 className: Menu_MenuNormal.menuNormal, 31369 style: MenuNormal_assign(MenuNormal_assign({}, menuNormalStyle), { 31370 overflowY: disableScroll ? 'hidden' : undefined 31371 }) 31372 }, menus.map(function (menu) { 31373 if (!siteCheck.isShow("mycj-menu-".concat(menu.nameVal || menu.name))) return null; 31374 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(MenuNormal_SubMenu, { 31375 key: menu.name, 31376 item: menu, 31377 isActive: isActive, 31378 isParentActive: isParentActive, 31379 showAuthorizeListData: showAuthorizeListData, 31380 openAddStore: openAddStore, 31381 openServiceCenter: openServiceCenter, 31382 guideVisible: disableScroll 31383 }); 31384 })); 31385}; 31386/* harmony default export */ const components_Menu_MenuNormal = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(MenuNormal)); 31387// EXTERNAL MODULE: ./src/hook/useAxios.ts 31388var useAxios = __webpack_require__(92513); 31389;// ./src/components/Menu/hooks/useIsTH.ts 31390 31391function useIsTH(server_siteCheck) { 31392 if (typeof window === 'undefined') return server_siteCheck ? (0,common/* is1688 */.G3)(server_siteCheck) : false; 31393 return (0,common/* is1688 */.G3)(window === null || window === void 0 ? void 0 : window.siteCheck); 31394} 31395;// ./src/components/Menu/hooks/useHideAuthorize.ts 31396var useHideAuthorize_assign = undefined && undefined.__assign || function () { 31397 useHideAuthorize_assign = Object.assign || function (t) { 31398 for (var s, i = 1, n = arguments.length; i < n; i++) { 31399 s = arguments[i]; 31400 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31401 } 31402 return t; 31403 }; 31404 return useHideAuthorize_assign.apply(this, arguments); 31405}; 31406var useHideAuthorize_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 31407 function adopt(value) { 31408 return value instanceof P ? value : new P(function (resolve) { 31409 resolve(value); 31410 }); 31411 } 31412 return new (P || (P = Promise))(function (resolve, reject) { 31413 function fulfilled(value) { 31414 try { 31415 step(generator.next(value)); 31416 } catch (e) { 31417 reject(e); 31418 } 31419 } 31420 function rejected(value) {
31421 try { 31422 step(generator["throw"](value)); 31423 } catch (e) { 31424 reject(e); 31425 } 31426 } 31427 function step(result) { 31428 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 31429 } 31430 step((generator = generator.apply(thisArg, _arguments || [])).next()); 31431 }); 31432}; 31433var useHideAuthorize_generator = undefined && undefined.__generator || function (thisArg, body) { 31434 var _ = { 31435 label: 0, 31436 sent: function sent() { 31437 if (t[0] & 1) throw t[1]; 31438 return t[1]; 31439 }, 31440 trys: [], 31441 ops: [] 31442 }, 31443 f, 31444 y, 31445 t, 31446 g; 31447 return g = { 31448 next: verb(0), 31449 "throw": verb(1), 31450 "return": verb(2) 31451 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 31452 return this; 31453 }), g; 31454 function verb(n) { 31455 return function (v) { 31456 return step([n, v]); 31457 }; 31458 } 31459 function step(op) { 31460 if (f) throw new TypeError("Generator is already executing."); 31461 while (g && (g = 0, op[0] && (_ = 0)), _) try { 31462 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; 31463 if (y = 0, t) op = [op[0] & 2, t.value]; 31464 switch (op[0]) { 31465 case 0: 31466 case 1: 31467 t = op; 31468 break; 31469 case 4: 31470 _.label++; 31471 return { 31472 value: op[1], 31473 done: false 31474 }; 31475 case 5: 31476 _.label++; 31477 y = op[1]; 31478 op = [0]; 31479 continue; 31480 case 7: 31481 op = _.ops.pop(); 31482 _.trys.pop(); 31483 continue; 31484 default: 31485 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 31486 _ = 0; 31487 continue; 31488 } 31489 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 31490 _.label = op[1]; 31491 break; 31492 } 31493 if (op[0] === 6 && _.label < t[1]) { 31494 _.label = t[1]; 31495 t = op; 31496 break; 31497 } 31498 if (t && _.label < t[2]) { 31499 _.label = t[2]; 31500 _.ops.push(op); 31501 break; 31502 } 31503 if (t[2]) _.ops.pop(); 31504 _.trys.pop(); 31505 continue; 31506 } 31507 op = body.call(thisArg, _); 31508 } catch (e) { 31509 op = [6, e]; 31510 y = 0; 31511 } finally { 31512 f = t = 0; 31513 } 31514 if (op[0] & 5) throw op[1]; 31515 return { 31516 value: op[0] ? op[1] : void 0, 31517 done: true 31518 }; 31519 } 31520}; 31521var useHideAuthorize_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31522 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31523 if (ar || !(i in from)) { 31524 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31525 ar[i] = from[i]; 31526 } 31527 } 31528 return to.concat(ar || Array.prototype.slice.call(from)); 31529}; 31530 31531 31532 31533 31534 31535 31536 31537 31538 31539 31540 31541 31542 31543 31544 31545 31546 31547/* harmony default export */ const useHideAuthorize = (function ($axios, isCj) { 31548 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(useHideAuthorize_assign({}, show_authorize_list/* default */.A)), 31549 showAuthorizeListData = _a[0], 31550 setShowAuthorizeList = _a[1]; 31551 var initialMenus = isQs() ? bar_config_qs_menus : bar_config/* menus */.T_; 31552 if ((0,useIsQk/* default */.A)()) initialMenus = bar_config_qk_menus; 31553 if ((0,useIsVP/* default */.A)()) initialMenus = bar_config_vp_menus; 31554 if (useIsTH()) initialMenus = bar_config_th_menus; 31555 if (useIsCf()) initialMenus = menus; 31556 if ((0,useIsZS/* default */.A)()) initialMenus = bar_config_zs/* menus */.T_; 31557 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(useHideAuthorize_spreadArray([], initialMenus, true)), 31558 newMenus = _b[0], 31559 setNewMenus = _b[1]; 31560 var platformSortAndShow = new platforms_sort_show($axios); 31561 var getAppStoreByUser = function getAppStoreByUser() { 31562 return useHideAuthorize_awaiter(void 0, void 0, void 0, function () { 31563 var _newMenus, authorizationIndex; 31564 return useHideAuthorize_generator(this, function (_a) { 31565 _newMenus = deep_clone(initialMenus); 31566 authorizationIndex = _newMenus.findIndex(function (ele) { 31567 return ele.name === 'Authorization'; 31568 }); 31569 if (authorizationIndex > -1) { 31570 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true).filter(function (ele) { 31571 return ele.key == 'shopify'; 31572 }); 31573 platformSortAndShow.showAppStore().then(function () { 31574 var authorizationIndex = _newMenus.findIndex(function (ele) { 31575 return ele.name === 'Authorization'; 31576 }); 31577 if (authorizationIndex > -1) { 31578 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true); 31579 } 31580 setNewMenus(useHideAuthorize_spreadArray([], _newMenus, true)); 31581 setShowAuthorizeList(useHideAuthorize_assign({}, platformSortAndShow.showAuthorizeAllData)); 31582 }); 31583 } 31584 return [2]; 31585 }); 31586 }); 31587 }; 31588 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31589 if (isCj) { 31590 getAppStoreByUser(); 31591 return; 31592 } 31593 platformSortAndShow.handler().then(function () { 31594 var _newMenus = useHideAuthorize_spreadArray([], newMenus, true); 31595 var authorizationIndex = _newMenus.findIndex(function (ele) { 31596 return ele.name === 'Authorization'; 31597 }); 31598 if (authorizationIndex > -1) { 31599 _newMenus[authorizationIndex].childs = useHideAuthorize_spreadArray([], platformSortAndShow.allPlatforms, true); 31600 } 31601 setNewMenus(useHideAuthorize_spreadArray([], _newMenus, true)); 31602 setShowAuthorizeList(useHideAuthorize_assign({}, platformSortAndShow.showAuthorizeAllData)); 31603 }); 31604 }, []); 31605 return { 31606 showAuthorizeListData: showAuthorizeListData, 31607 menus: newMenus, 31608 updateMenus: getAppStoreByUser 31609 }; 31610}); 31611;// ./src/lang/pull/en/common.json 31612const 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
31612p-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","
31612intelGuid-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
31612-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
31612i":"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-
31612authorization-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
31612anges 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
31612ched":"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&
31612Self-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
31612ceive 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
31612category.","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
31612-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
31612ou 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-
31612account","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
31612ify-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
31612hance":"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
31612on 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--
31612plural":"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
31612d. 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
31612-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
31612in 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
31612-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-
31612pasting 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
31612ing-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
31612Shopify/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
31612ou 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
31612its 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
31612confirmation 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
31612nsive-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
31612sidies":"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
31612oordinate 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
31612oordinate 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
31612ountries. 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
31612ch-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
31612nt 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
31612ifications, 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
31612ising 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
31612-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-
31612add-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-
31612add-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
31612d","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
31612ommend":"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
31612nsive-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
31612nsive-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"
31612:"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
31612ced 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
31612ncy, 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
31612isk 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
31612stoms-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
31612its 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
31612afety 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
31612nifits","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
31612ncy","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
31612stomers":"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--
31612plural":"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
31612nefits","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
31612in 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"
31612:"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--
31612plural":"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--
31612plural":"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
31612ivals 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
31612seas 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
31612synchronization 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--
31612plural":"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
31612on.","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.",
31612"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
31612ontinue 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--
31612plural":"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-
31612placeholder":"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
31612ition-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
31612-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
31612-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--
31612plural":"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
31612-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
31612ikes":"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
31612ourcing 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"
31612:"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
31612ct 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
31612-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
31612-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
31612-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
31612-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
31612ption","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
31612stments, 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
31612-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
31612ountries 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"
31612:"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--
31612plural":"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--
31612plural":"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
31612ose 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
31612ing 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--
31612plural":"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>
31612 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
31612ompatible 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--
31612plural":"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--
31612plural":"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
31612ountries 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--
31612plural":"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}}
31612 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
31612sign","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
31612ncy 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
31612h 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
31612ort 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
31612ages-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--
31612plural":"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
31612ountries 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":"
31612Verification 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
31612ose 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
31612t":"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
31612y 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--
31612plural":"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
31612h 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}}
31612 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
31612your 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
31612-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
31612orkspace 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
31612s":"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
31612d","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. See the step list above.","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 order picking","ai-assistant-step-pick--plural":"Adding to order 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
31612-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"}'); 31613// EXTERNAL MODULE: ./src/components/CjHeader/const/languages.ts 31614var languages = __webpack_require__(45163); 31615;// ./src/common/i18next-refact.ts 31616function 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); } 31617var i18next_refact_assign = undefined && undefined.__assign || function () { 31618 i18next_refact_assign = Object.assign || function (t) { 31619 for (var s, i = 1, n = arguments.length; i < n; i++) { 31620 s = arguments[i]; 31621 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31622 } 31623 return t; 31624 }; 31625 return i18next_refact_assign.apply(this, arguments); 31626}; 31627 31628 31629var transObj = { 31630 en: en_common_namespaceObject 31631}; 31632var localeFallbackLoaders = { 31633 zh: function zh() { 31634 return __webpack_require__.e(/* import() */ 5772).then(__webpack_require__.t.bind(__webpack_require__, 15772, 19)); 31635 }, 31636 th: function th() { 31637 return __webpack_require__.e(/* import() */ 406).then(__webpack_require__.t.bind(__webpack_require__, 40406, 19)); 31638 }, 31639 de: function de() { 31640 return __webpack_require__.e(/* import() */ 4639).then(__webpack_require__.t.bind(__webpack_require__, 24639, 19)); 31641 }, 31642 fr: function fr() { 31643 return __webpack_require__.e(/* import() */ 9506).then(__webpack_require__.t.bind(__webpack_require__, 59506, 19)); 31644 }, 31645 id: function id() { 31646 return __webpack_require__.e(/* import() */ 1261).then(__webpack_require__.t.bind(__webpack_require__, 21261, 19)); 31647 } 31648}; 31649var fallbackLoading = {}; 31650function ensureLocaleFallback(i18next, lng) { 31651 if (!lng || lng === 'en' || transObj[lng]) return Promise.resolve(transObj[lng]); 31652 if (typeof window === 'undefined' || typeof document === 'undefined') { 31653 return Promise.resolve(transObj[lng]); 31654 } 31655 var loader = localeFallbackLoaders[lng]; 31656 if (!loader) return Promise.resolve(undefined); 31657 if (!fallbackLoading[lng]) { 31658 fallbackLoading[lng] = loader().then(function (mod) { 31659 var data = mod && mod["default"] || mod; 31660 if (data && i18next_refact_typeof(data) === 'object') { 31661 transObj[lng] = data; 31662 if (i18next && i18next.addResourceBundle) { 31663 var oldTrans = i18next.getResourceBundle && i18next.getResourceBundle(lng, 'translation') || {}; 31664 i18next.addResourceBundle(lng, 'translation', i18next_refact_assign(i18next_refact_assign({}, data), oldTrans), true, true); 31665 } 31666 } 31667 return data; 31668 })["catch"](function (error) { 31669 console.warn('[i18n] locale fallback load failed:', lng, error && error.message); 31670 return undefined; 31671 }); 31672 } 31673 return fallbackLoading[lng]; 31674} 31675var run = false;
31676var customizeI18next = function customizeI18next(i18next, initialLng) { 31677 if (run) return; 31678 var lng = initialLng; 31679 if (!languages/* sixCountryLanguage */.V.includes(lng)) lng = 'en'; 31680 initialCommonTranslation(i18next, lng); 31681 if (lng !== 'en') ensureLocaleFallback(i18next, lng); 31682 i18next.t = function (t) { 31683 return function () { 31684 var _a, _b; 31685 var arg = []; 31686 for (var _i = 0; _i < arguments.length; _i++) { 31687 arg[_i] = arguments[_i]; 31688 } 31689 var key = arg[0]; 31690 var result = t.apply(this, arg); 31691 if (!result) return arg[1] || key; 31692 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])) { 31693 result = transObj[lng][key]; 31694 } 31695 if (i18next_refact_typeof(result) === 'object' && ((_b = transObj === null || transObj === void 0 ? void 0 : transObj[lng]) === null || _b === void 0 ? void 0 : _b[key])) { 31696 var text_1 = transObj[lng][key] || ''; 31697 if (i18next_refact_typeof(arg[1]) === 'object') { 31698 var vars_1 = arg[1]; 31699 var reg = /\{\{(.+?)\}\}/g; 31700 var arr = text_1.match(reg); 31701 if (arr) { 31702 arr.forEach(function (item) { 31703 var key = item.replace(/\{\{(.+?)\}\}/, '$1'); 31704 text_1 = text_1.replace(item, vars_1[key]); 31705 }); 31706 } 31707 } 31708 return text_1 || key; 31709 } 31710 if (/\{\{(.+?)\}\}/g.test(result)) { 31711 var reg = /\{\{(.+?)\}\}/g; 31712 var arr = result.match(reg); 31713 if (arr) { 31714 arr.forEach(function (item) { 31715 var key = item.replace(/\{\{(.+?)\}\}/, '$1'); 31716 result = result.replace(item, arg[1][key]); 31717 }); 31718 } 31719 } 31720 return result; 31721 }; 31722 }(i18next.t); 31723 run = true; 31724}; 31725function initialCommonTranslation(i18next, lng) { 31726 try { 31727 var pullCommon = transObj[lng]; 31728 if (pullCommon && i18next_refact_typeof(pullCommon) === 'object') { 31729 var oldTrans = i18next.getResourceBundle(lng, 'translation') || {}; 31730 i18next.addResourceBundle(lng, 'translation', i18next_refact_assign(i18next_refact_assign({}, pullCommon), oldTrans), true, true); 31731 } 31732 } catch (error) { 31733 console.warn('Error loading common translation:', error); 31734 } 31735} 31736/* harmony default export */ const i18next_refact = (customizeI18next); 31737;// ./src/components/CjProductDetail/hooks/use-lazy-component.ts 31738 31739function useLazyComponent(active, loader, options) { 31740 if (options === void 0) { 31741 options = {}; 31742 } 31743 var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(null), 31744 Component = _a[0], 31745 setComponent = _a[1]; 31746 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31747 if (!active || Component) return; 31748 var mounted = true; 31749 loader().then(function (mod) { 31750 var LazyComponent = 'default' in mod ? mod["default"] : mod; 31751 if (mounted) setComponent(function () { 31752 return LazyComponent; 31753 }); 31754 })["catch"](function (error) { 31755 var _a = options.componentName, 31756 componentName = _a === void 0 ? 'unknown' : _a, 31757 _b = options.chunkName, 31758 chunkName = _b === void 0 ? 'unknown' : _b; 31759 console.error("[use-lazy-component] load failed component=".concat(componentName, " chunk=").concat(chunkName, " active=").concat(active), error); 31760 }); 31761 return function () { 31762 mounted = false; 31763 }; 31764 }, [active, Component, loader]); 31765 return Component; 31766} 31767// EXTERNAL MODULE: ./src/components/Menu/hooks/useIsAiChat.ts 31768var useIsAiChat = __webpack_require__(92575); 31769;// ./src/hook/use-changed.ts 31770var use_changed_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31771 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31772 if (ar || !(i in from)) { 31773 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31774 ar[i] = from[i]; 31775 } 31776 } 31777 return to.concat(ar || Array.prototype.slice.call(from)); 31778}; 31779 31780/* harmony default export */ const use_changed = (function (cb, deps) { 31781 if (cb === void 0) { 31782 cb = function cb() {}; 31783 } 31784 if (deps === void 0) { 31785 deps = []; 31786 } 31787 var frist = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(true); 31788 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 31789 if (frist.current) { 31790 frist.current = false;
31791 return; 31792 } 31793 cb === null || cb === void 0 ? void 0 : cb(); 31794 }, use_changed_spreadArray([], deps, true)); 31795}); 31796;// ./src/components/Menu/hooks/useHasMenu.ts 31797var useHasMenu_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 31798 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 31799 if (ar || !(i in from)) { 31800 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 31801 ar[i] = from[i]; 31802 } 31803 } 31804 return to.concat(ar || Array.prototype.slice.call(from)); 31805}; 31806 31807 31808 31809 31810 31811var 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']; 31812var mobileOnlyNoMenuPages = ['/agents', '/agents/detail', '/global-warehouses', '/ready-to-ship', '/mentors']; 31813var 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) { 31814 sum.push.apply(sum, [path, "/mine".concat(path)]); 31815 return sum; 31816}, []), true); 31817var noMenu = function noMenu(routePath, siteCheck, SHOWMESSAGE, token, isM) { 31818 var pagesToCheck = isM ? noMenuPages : noMenuPages.filter(function (path) { 31819 return !mobileOnlyNoMenuPages.includes(path); 31820 }); 31821 var configNoMenu = pagesToCheck.some(function (path) { 31822 var reg = new RegExp('^' + path); 31823 return reg.test(routePath); 31824 }); 31825 if (/^\/mine\/calculation/i.test(routePath) && !token) { 31826 return true; 31827 } 31828 if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('QS')) { 31829 if (!siteCheck.isShow('show-side-menu')) { 31830 return true; 31831 } 31832 if (!(0,use_is_mycj/* isMyCjPageCheck */.h)(routePath) || /\/purchase\/purchaseCart/.test(routePath)) { 31833 return true; 31834 } 31835 } else if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ')) { 31836 if (!siteCheck.isShow('show-side-menu')) { 31837 return true; 31838 } 31839 if (!(0,common/* isSafeUser */.dn)(SHOWMESSAGE, token) && routePath == '/') { 31840 return true; 31841 } 31842 } else if ((0,common/* is1688 */.G3)(siteCheck)) { 31843 if (!siteCheck.isShow('show-side-menu')) { 31844 return true; 31845 } 31846 if (!(0,use_is_mycj/* isMyCjPageCheck */.h)(routePath)) return true; 31847 } else if (siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('QK')) { 31848 if (!siteCheck.isShow('show-side-menu')) { 31849 return true; 31850 } 31851 } 31852 return configNoMenu; 31853}; 31854function useNotMenu() { 31855 var _a = (0,PropsContext/* useGlobalProps */.v)(), 31856 routePath = _a.path, 31857 SHOWMESSAGE = _a.otherCookies.SHOWMESSAGE, 31858 token = _a.loginInfo.token, 31859 isM = _a.isM; 31860 var _b = (0,use_parent_platform/* default */.A)(), 31861 isCj = _b.isCj, 31862 isSupplierShop = _b.isSupplierShop, 31863 isBlog = _b.isBlog, 31864 isFlowVersionPage = _b.isFlowVersionPage; 31865 if (isSupplierShop || isBlog || isFlowVersionPage) return true; 31866 var siteCheck = (0,use_site_check/* default */.A)(); 31867 return noMenu(routePath, siteCheck, SHOWMESSAGE, token, isM) && isCj; 31868} 31869;// ./src/components/Menu/components/THLogo/index.less 31870// extracted by mini-css-extract-plugin 31871/* harmony default export */ const THLogo = ({"logo":"logo--nt_xD","alogo":"alogo--hqIuw","logoInfo":"logoInfo--dBfZk"}); 31872;// ./src/components/Menu/components/THLogo/index.tsx 31873 31874 31875 31876function THLogo_THLogo(_a) { 31877 var _b; 31878 var logo = _a.logo; 31879 var _c = (0,PropsContext/* useGlobalProps */.v)(), 31880 i18next = _c.i18n, 31881 siteCheck = _c.siteCheck; 31882 var style = {}; 31883 if (!siteCheck.isSite('TH', 'CF')) { 31884 style = { 31885 width: siteCheck.data('logo-width') + 'px', 31886 height: siteCheck.data('logo-height') + 'px' 31887 }; 31888 } 31889 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31890 className: THLogo.logo 31891 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", { 31892 href: "/", 31893 className: THLogo.alogo 31894 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 31895 src: logo,
31896 style: style 31897 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 31898 className: THLogo.logoInfo 31899 }, siteCheck.isSite('TH', 'CF') && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("span", { 31900 className: "notranslate" 31901 }, (_b = siteCheck.data('full-name')) !== null && _b !== void 0 ? _b : '1688.tech'))))); 31902} 31903// EXTERNAL MODULE: ./src/components/message/index.tsx + 1 modules 31904var message = __webpack_require__(23126); 31905// EXTERNAL MODULE: ./src/common/add-store.ts 31906var add_store = __webpack_require__(21421); 31907// EXTERNAL MODULE: ./src/common/toast.ts 31908var toast = __webpack_require__(50937); 31909;// ./src/components/Menu/hooks/useAppStore.ts 31910var useAppStore_assign = undefined && undefined.__assign || function () { 31911 useAppStore_assign = Object.assign || function (t) { 31912 for (var s, i = 1, n = arguments.length; i < n; i++) { 31913 s = arguments[i]; 31914 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 31915 } 31916 return t; 31917 }; 31918 return useAppStore_assign.apply(this, arguments); 31919}; 31920var useAppStore_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 31921 function adopt(value) { 31922 return value instanceof P ? value : new P(function (resolve) { 31923 resolve(value); 31924 }); 31925 } 31926 return new (P || (P = Promise))(function (resolve, reject) { 31927 function fulfilled(value) { 31928 try { 31929 step(generator.next(value)); 31930 } catch (e) { 31931 reject(e); 31932 } 31933 } 31934 function rejected(value) { 31935 try { 31936 step(generator["throw"](value)); 31937 } catch (e) { 31938 reject(e); 31939 } 31940 } 31941 function step(result) { 31942 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 31943 } 31944 step((generator = generator.apply(thisArg, _arguments || [])).next()); 31945 }); 31946}; 31947var useAppStore_generator = undefined && undefined.__generator || function (thisArg, body) { 31948 var _ = { 31949 label: 0, 31950 sent: function sent() { 31951 if (t[0] & 1) throw t[1]; 31952 return t[1]; 31953 }, 31954 trys: [], 31955 ops: [] 31956 }, 31957 f, 31958 y, 31959 t, 31960 g; 31961 return g = { 31962 next: verb(0), 31963 "throw": verb(1), 31964 "return": verb(2) 31965 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 31966 return this; 31967 }), g; 31968 function verb(n) { 31969 return function (v) { 31970 return step([n, v]); 31971 }; 31972 } 31973 function step(op) { 31974 if (f) throw new TypeError("Generator is already executing."); 31975 while (g && (g = 0, op[0] && (_ = 0)), _) try { 31976 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; 31977 if (y = 0, t) op = [op[0] & 2, t.value]; 31978 switch (op[0]) { 31979 case 0: 31980 case 1: 31981 t = op; 31982 break; 31983 case 4: 31984 _.label++; 31985 return { 31986 value: op[1], 31987 done: false 31988 }; 31989 case 5: 31990 _.label++; 31991 y = op[1]; 31992 op = [0]; 31993 continue; 31994 case 7: 31995 op = _.ops.pop(); 31996 _.trys.pop(); 31997 continue; 31998 default: 31999 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 32000 _ = 0; 32001 continue; 32002 } 32003 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 32004 _.label = op[1]; 32005 break; 32006 } 32007 if (op[0] === 6 && _.label < t[1]) { 32008 _.label = t[1]; 32009 t = op; 32010 break; 32011 } 32012 if (t && _.label < t[2]) { 32013 _.label = t[2]; 32014 _.ops.push(op); 32015 break; 32016 } 32017 if (t[2]) _.ops.pop(); 32018 _.trys.pop(); 32019 continue; 32020 } 32021 op = body.call(thisArg, _); 32022 } catch (e) { 32023 op = [6, e]; 32024 y = 0; 32025 } finally { 32026 f = t = 0; 32027 } 32028 if (op[0] & 5) throw op[1]; 32029 return { 32030 value: op[0] ? op[1] : void 0, 32031 done: true 32032 }; 32033 } 32034}; 32035 32036 32037 32038 32039 32040 32041var appListCache = null; 32042var appListRequest = null; 32043function useAddStore(props) { 32044 var _this = this; 32045 var axios = props.axios, 32046 updateCallBack = props.updateCallBack, 32047 _a = props.appType, 32048 appType = _a === void 0 ? 1 : _a; 32049 var businessTypeMap = { 32050 0: window.i18next.t('common-mycj-menu-smart-website-builder', 'Smart Website Builder'), 32051 1: window.i18next.t('common-mycj-menu-cross-border-ecommerce-platform', 'Cross-Border E-commerce Platform'), 32052 2: window.i18next.t('common-mycj-menu-erp-platform', 'ERP Platform'), 32053 4: window.i18next.t('common-mycj-menu-ai', 'AI'), 32054 3: window.i18next.t('common-mycj-menu-others-a', 'Others') 32055 }; 32056 var BUSINESS_TYPE_ORDER = [0, 1, 2, 4, 3]; 32057 var TAB_KEY = { 32058 ALL: 1, 32059 INSTALLED: 2 32060 }; 32061 var tabList = [{ 32062 label: window.i18next.t('common-mycj-menu-all', 'All'), 32063 value: TAB_KEY.ALL 32064 }, { 32065 label: window.i18next.t('common-mycj-menu-installed', 'Installed'), 32066 value: TAB_KEY.INSTALLED 32067 }]; 32068 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(TAB_KEY.ALL), 32069 activeTab = _b[0], 32070 setActiveTab = _b[1]; 32071 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32072 isVisible = _c[0], 32073 setIsVisible = _c[1]; 32074 var _d = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)([]), 32075 list = _d[0],
32076 setList = _d[1]; 32077 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(null), 32078 deleteItem = _e[0], 32079 setDeleteItem = _e[1]; 32080 var _f = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32081 showDeleteModal = _f[0], 32082 setShowDeleteModal = _f[1]; 32083 var _g = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32084 loading = _g[0], 32085 setLoading = _g[1]; 32086 var platformShow = new platform_show/* default */.Ay(); 32087 var userAddStore = new add_store/* default */.A(); 32088 var updateData = function updateData(d) { 32089 userAddStore.save(d); 32090 updateCallBack === null || updateCallBack === void 0 ? void 0 : updateCallBack(); 32091 }; 32092 var getList = function getList(params) { 32093 return useAppStore_awaiter(_this, void 0, void 0, function () { 32094 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; 32095 return useAppStore_generator(this, function (_c) { 32096 switch (_c.label) { 32097 case 0: 32098 useCache = !(params === null || params === void 0 ? void 0 : params.force) && appListCache; 32099 if (useCache) { 32100 d = appListCache; 32101 updateData(d); 32102 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32103 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32104 newList = []; 32105 _loop_1 = function _loop_1(key) { 32106 var obj = {}; 32107 obj.title = businessTypeMap[key]; 32108 obj.list = platforms.filter(function (item) { 32109 return item.businessType === key; 32110 }).map(function (item) { 32111 var _a; 32112 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32113 if (code == 'miaoshou') { 32114 return useAppStore_assign(useAppStore_assign({}, item), { 32115 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32116 }); 32117 } 32118 return useAppStore_assign(useAppStore_assign({}, item), { 32119 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32120 }); 32121 }); 32122 newList.push(obj); 32123 }; 32124 for (_i = 0, BUSINESS_TYPE_ORDER_1 = BUSINESS_TYPE_ORDER; _i < BUSINESS_TYPE_ORDER_1.length; _i++) { 32125 key = BUSINESS_TYPE_ORDER_1[_i]; 32126 _loop_1(key); 32127 } 32128 setList(newList); 32129 return [2]; 32130 } 32131 if (!appListRequest) return [3, 2]; 32132 return [4, appListRequest]; 32133 case 1: 32134 res_1 = _c.sent(); 32135 if (!(res_1 === null || res_1 === void 0 ? void 0 : res_1.success)) return [2]; 32136 d = res_1 === null || res_1 === void 0 ? void 0 : res_1.data; 32137 updateData(d); 32138 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32139 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32140 newList = []; 32141 _loop_2 = function _loop_2(key) { 32142 var obj = {}; 32143 obj.title = businessTypeMap[key]; 32144 obj.list = platforms.filter(function (item) { 32145 return item.businessType === key; 32146 }).map(function (item) { 32147 var _a; 32148 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32149 if (code == 'miaoshou') { 32150 return useAppStore_assign(useAppStore_assign({}, item), { 32151 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32152 }); 32153 } 32154 return useAppStore_assign(useAppStore_assign({}, item), { 32155 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32156 }); 32157 }); 32158 newList.push(obj); 32159 }; 32160 for (_a = 0, BUSINESS_TYPE_ORDER_2 = BUSINESS_TYPE_ORDER; _a < BUSINESS_TYPE_ORDER_2.length; _a++) { 32161 key = BUSINESS_TYPE_ORDER_2[_a]; 32162 _loop_2(key); 32163 } 32164 setList(newList); 32165 return [2]; 32166 case 2: 32167 if (!(params === null || params === void 0 ? void 0 : params.onlyUpdate)) {
32168 setLoading(true); 32169 } 32170 appListRequest = axios({ 32171 method: 'post', 32172 url: 'userCenterForeignWeb/userApp/list', 32173 data: { 32174 deviceType: 'PC', 32175 affiliateId: js_cookie/* default */.A.get('invite-token') || '' 32176 } 32177 }).then(function (_a) { 32178 var err = _a[0], 32179 res = _a[1]; 32180 if (err || !res) return null; 32181 return res; 32182 }); 32183 return [4, appListRequest]; 32184 case 3: 32185 res = _c.sent(); 32186 appListRequest = null; 32187 setLoading(false); 32188 if (!res) return [2]; 32189 if (res === null || res === void 0 ? void 0 : res.success) { 32190 d = res === null || res === void 0 ? void 0 : res.data; 32191 appListCache = d; 32192 updateData(d); 32193 if (params === null || params === void 0 ? void 0 : params.onlyUpdate) return [2]; 32194 platforms = (d === null || d === void 0 ? void 0 : d.platforms) || []; 32195 newList = []; 32196 _loop_3 = function _loop_3(key) { 32197 var obj = {}; 32198 obj.title = businessTypeMap[key]; 32199 obj.list = platforms.filter(function (item) { 32200 return item.businessType === key; 32201 }).map(function (item) { 32202 var _a; 32203 var code = (_a = item.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase(); 32204 if (code == 'miaoshou') { 32205 return useAppStore_assign(useAppStore_assign({}, item), { 32206 showPlatformName: window.i18next.t("common-mycj-menu-miaoshou", 'MiaoshouERP') || platformShow.showPlatformName(code) || item.platformName 32207 }); 32208 } 32209 return useAppStore_assign(useAppStore_assign({}, item), { 32210 showPlatformName: platformShow.showPlatformName(code) || item.platformName 32211 }); 32212 }); 32213 newList.push(obj); 32214 }; 32215 for (_b = 0, BUSINESS_TYPE_ORDER_3 = BUSINESS_TYPE_ORDER; _b < BUSINESS_TYPE_ORDER_3.length; _b++) { 32216 key = BUSINESS_TYPE_ORDER_3[_b]; 32217 _loop_3(key); 32218 } 32219 setList(newList); 32220 } else if (res === null || res === void 0 ? void 0 : res.message) { 32221 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32222 } 32223 return [2]; 32224 } 32225 }); 32226 }); 32227 }; 32228 var cancelDelete = function cancelDelete() { 32229 setShowDeleteModal(false); 32230 setDeleteItem(null); 32231 }; 32232 var confirmDeleteApp = function confirmDeleteApp() { 32233 return useAppStore_awaiter(_this, void 0, void 0, function () { 32234 var success; 32235 return useAppStore_generator(this, function (_a) { 32236 switch (_a.label) { 32237 case 0: 32238 if (!deleteItem) return [2]; 32239 return [4, uninstallApp(deleteItem)]; 32240 case 1: 32241 success = _a.sent(); 32242 if (success) { 32243 cancelDelete(); 32244 getList({ 32245 onlyUpdate: !isVisible, 32246 force: true 32247 }); 32248 } 32249 return [2]; 32250 } 32251 }); 32252 }); 32253 }; 32254 var deleteStore = function deleteStore(app) { 32255 return useAppStore_awaiter(_this, void 0, void 0, function () { 32256 var _a; 32257 return useAppStore_generator(this, function (_b) { 32258 setDeleteItem(useAppStore_assign(useAppStore_assign({}, app), { 32259 showPlatformName: platformShow.showPlatformName((_a = app.platformCode) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || app.platformName 32260 })); 32261 setShowDeleteModal(true); 32262 return [2]; 32263 }); 32264 }); 32265 }; 32266 var installApp = function installApp(app, options) { 32267 return useAppStore_awaiter(_this, void 0, void 0, function () { 32268 var _a, err, res; 32269 return useAppStore_generator(this, function (_b) { 32270 switch (_b.label) { 32271 case 0:
32272 setLoading(true); 32273 return [4, axios({ 32274 method: 'post', 32275 url: 'userCenterForeignWeb/userApp/install', 32276 data: { 32277 appCode: app.platformCode, 32278 type: appType 32279 } 32280 })]; 32281 case 1: 32282 _a = _b.sent(), err = _a[0], res = _a[1]; 32283 setLoading(false); 32284 if (err || !res) return [2, false]; 32285 if (res === null || res === void 0 ? void 0 : res.success) { 32286 if (!(options === null || options === void 0 ? void 0 : options.silentToast)) { 32287 (0,toast/* default */.A)(window.i18next.t('common-mycj-menu-installed-successfully', 'Installed Successfully')); 32288 } 32289 getList({ 32290 force: true 32291 }); 32292 return [2, true]; 32293 } else if (res === null || res === void 0 ? void 0 : res.message) { 32294 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32295 } 32296 return [2, false]; 32297 } 32298 }); 32299 }); 32300 }; 32301 var uninstallApp = function uninstallApp(app, options) { 32302 return useAppStore_awaiter(_this, void 0, void 0, function () { 32303 var _a, err, res; 32304 return useAppStore_generator(this, function (_b) { 32305 switch (_b.label) { 32306 case 0: 32307 setLoading(true); 32308 return [4, axios({ 32309 method: 'post', 32310 url: 'userCenterForeignWeb/userApp/uninstall', 32311 data: { 32312 appCode: app.platformCode, 32313 type: appType 32314 } 32315 })]; 32316 case 1: 32317 _a = _b.sent(), err = _a[0], res = _a[1]; 32318 setLoading(false); 32319 if (err || !res) return [2, false]; 32320 if (res === null || res === void 0 ? void 0 : res.success) { 32321 if (!(options === null || options === void 0 ? void 0 : options.silentToast)) { 32322 (0,toast/* default */.A)(window.i18next.t('common-mycj-menu-uninstalled-successfully', 'Uninstalled Successfully')); 32323 } 32324 return [2, true]; 32325 } 32326 if (res === null || res === void 0 ? void 0 : res.message) { 32327 message["default"].error(res === null || res === void 0 ? void 0 : res.message); 32328 } 32329 return [2, false]; 32330 } 32331 }); 32332 }); 32333 }; 32334 var hideBodyScroll = function hideBodyScroll(bol) { 32335 if (bol) { 32336 document.body.style.overflow = 'hidden'; 32337 } else { 32338 document.body.style.overflow = 'auto'; 32339 } 32340 }; 32341 var handleClose = function handleClose() { 32342 setIsVisible(false); 32343 hideBodyScroll(false); 32344 }; 32345 var openAddStore = function openAddStore() { 32346 return useAppStore_awaiter(_this, void 0, void 0, function () { 32347 return useAppStore_generator(this, function (_a) { 32348 switch (_a.label) { 32349 case 0: 32350 return [4, getList()]; 32351 case 1: 32352 _a.sent();
32353 setActiveTab(TAB_KEY.ALL); 32354 setIsVisible(true); 32355 hideBodyScroll(true); 32356 return [2]; 32357 } 32358 }); 32359 }); 32360 }; 32361 var changeTab = function changeTab(key) { 32362 setActiveTab(key); 32363 var appStoreContainer = document.querySelector('.appStoreContent'); 32364 if (appStoreContainer) { 32365 appStoreContainer.scrollTo({ 32366 top: 0, 32367 behavior: 'smooth' 32368 }); 32369 } 32370 }; 32371 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 32372 var handleKeyDown = function handleKeyDown(e) { 32373 if (e.key === 'Escape' && isVisible) { 32374 handleClose(); 32375 } 32376 }; 32377 if (isVisible) { 32378 document.addEventListener('keydown', handleKeyDown); 32379 } 32380 return function () { 32381 document.removeEventListener('keydown', handleKeyDown); 32382 }; 32383 }, [isVisible, handleClose]); 32384 return { 32385 isVisible: isVisible, 32386 handleClose: handleClose, 32387 openAddStore: openAddStore, 32388 deleteStore: deleteStore, 32389 installApp: installApp, 32390 uninstallApp: uninstallApp, 32391 list: list, 32392 tabList: tabList, 32393 activeTab: activeTab, 32394 setActiveTab: setActiveTab, 32395 TAB_KEY: TAB_KEY, 32396 deleteItem: deleteItem, 32397 showDeleteModal: showDeleteModal, 32398 cancelDelete: cancelDelete, 32399 confirmDeleteApp: confirmDeleteApp, 32400 loading: loading, 32401 changeTab: changeTab 32402 }; 32403} 32404;// ./src/components/Menu/hooks/useMenuUpdateGuide.ts 32405 32406 32407 32408 32409 32410var STORAGE_KEY = 'showMenuUpdateGuide_v1'; 32411var LATEST_VERSION = '1.1'; 32412function useMenuUpdateGuide(options) { 32413 var _a = options.isCjSiteShow, 32414 isCjSiteShow = _a === void 0 ? false : _a; 32415 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32416 visible = _b[0], 32417 setVisible = _b[1]; 32418 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)('full'), 32419 guideMode = _c[0], 32420 setGuideMode = _c[1]; 32421 var changeBodyOverflow = function changeBodyOverflow(lock) { 32422 if (lock) { 32423 (0,common/* lockBodyScroll */.zI)(); 32424 } else { 32425 (0,common/* unlockBodyScroll */.Wg)(); 32426 } 32427 }; 32428 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 32429 if (!isCjSiteShow || useIsCf()) { 32430 setVisible(false); 32431 changeBodyOverflow(false); 32432 return; 32433 } 32434 var alreadyShown = store/* default */.A.get(STORAGE_KEY); 32435 var startTime = new Date('2026-03-16 00:00:00').getTime(); 32436 var endTime = new Date('2026-04-30 23:59:59').getTime(); 32437 var nowTime = Date.now(); 32438 var startTimeV1_1 = new Date('2026-04-07 00:00:00').getTime(); 32439 var endTimeV1_1 = new Date('2026-04-30 23:59:59').getTime(); 32440 if (alreadyShown === LATEST_VERSION) { 32441 setVisible(false); 32442 changeBodyOverflow(false); 32443 if (nowTime > endTime) { 32444 store/* default */.A.del(STORAGE_KEY); 32445 } 32446 return; 32447 } 32448 var isInTimeWindow = nowTime >= startTime && nowTime < endTime; 32449 var isInTimeWindowV1_1 = nowTime >= startTimeV1_1 && nowTime < endTimeV1_1; 32450 if (!isInTimeWindow && !isInTimeWindowV1_1) { 32451 setVisible(false); 32452 changeBodyOverflow(false); 32453 return; 32454 } 32455 var timer = setTimeout(function () { 32456 var SHOWMESSAGE = js_cookie/* default */.A.get('SHOWMESSAGE'); 32457 if ((SHOWMESSAGE === null || SHOWMESSAGE === void 0 ? void 0 : SHOWMESSAGE.indexOf('R')) > -1) { 32458 if ((alreadyShown === true || alreadyShown === 'true') && isInTimeWindowV1_1) { 32459 setGuideMode('mini'); 32460 } else if (!alreadyShown) { 32461 setGuideMode('full'); 32462 } 32463 changeBodyOverflow(true); 32464 setVisible(true); 32465 } 32466 }, 1200); 32467 return function () { 32468 clearTimeout(timer); 32469 changeBodyOverflow(false); 32470 }; 32471 }, [isCjSiteShow]); 32472 var onOK = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 32473 store/* default */.A.set(STORAGE_KEY, LATEST_VERSION); 32474 setVisible(false); 32475 changeBodyOverflow(false); 32476 }, []); 32477 return { 32478 visible: visible, 32479 guideMode: guideMode, 32480 onOK: onOK 32481 }; 32482} 32483;// ./src/components/Menu/components/zesty/CollapsedIcon/index.less 32484// extracted by mini-css-extract-plugin 32485/* harmony default export */ const CollapsedIcon = ({"collapsedIcon":"collapsedIcon--icJfc","collapsed":"collapsed--t3MfC"}); 32486;// ./src/components/Menu/components/zesty/CollapsedIcon/index.tsx 32487 32488 32489 32490 32491function CollapsedIcon_CollapsedIcon(_a) { 32492 var _b; 32493 var onClick = _a.onClick, 32494 isCollapsed = _a.isCollapsed; 32495 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 32496 className: classnames_default()(CollapsedIcon.collapsedIcon, (_b = {}, _b[CollapsedIcon.collapsed] = isCollapsed, _b)), 32497 onClick: onClick 32498 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 32499 type: 'right' 32500 })); 32501} 32502;// ./src/components/Menu/components/ServiceCenter/service-config.ts 32503var SERVICE_LIST = [{ 32504 key: '3pl_fulfillment', 32505 appCode: 'mycj_3pl', 32506 name: '3PL Fulfillment', 32507 menuName: '3PL Fulfillment', 32508 description: "Enjoy hassle-free order processing and lightning-fast global shipping for your own products stocked in CJ's warehouse.", 32509 detailUrl: 'https://www.cjdropshipping.com/fulfillmentservice', 32510 isPreInstalled: true 32511}, { 32512 key: 'odm', 32513 appCode: 'mycj_odm', 32514 name: 'ODM Service', 32515 menuName: 'ODM Service', 32516 description: 'Build a high-margin, unique brand with custom-tailored products, personalized logos, and premium branded packaging.', 32517 detailUrl: 'https://www.cjdropshipping.com/odm', 32518 isPreInstalled: false 32519}, { 32520 key: 'brand_packaging', 32521 appCode: 'mycj_brand_packaging', 32522 name: 'Brand Packaging', 32523 menuName: 'Brand Packaging', 32524 description: 'Turn one-time buyers into loyal customers with packaging that speaks volumes.', 32525 detailUrl: 'https://www.cjdropshipping.com/customPackaging', 32526 isPreInstalled: false 32527}, { 32528 key: 'print_on_demand', 32529 appCode: 'mycj_print_on_demand', 32530 name: 'Print on Demand', 32531 menuName: 'Print on Demand', 32532 description: 'Bring your creative visions to life with custom-printed merchandise.', 32533 detailUrl: 'https://www.cjdropshipping.com/printonDemand/home', 32534 isPreInstalled: false 32535}, { 32536 key: 'buy_sell_yourstore', 32537 appCode: 'mycj_buy_sell_yourstore', 32538 name: 'Buy/Sell Your Store', 32539 menuName: 'Buy/Sell Your Store', 32540 description: 'Selling ready & healthy stores is a smart way to turn your excess costs of online business into immediate profit.', 32541 detailUrl: 'https://blog.cjdropshipping.com/detail/Sell-Your-Shopify-Store-for-Cash-Today-', 32542 isPreInstalled: false 32543}, { 32544 key: 'payment_agency', 32545 appCode: 'mycj_payment_agency', 32546 name: 'Payment Agency', 32547 menuName: 'Payment Agency', 32548 description: 'One-stop Payment Solution for Dropshipping. The trusted choice of millions of entrepreneurs.', 32549 detailUrl: 'https://www.cjdropshipping.com/payment-agency', 32550 isPreInstalled: false 32551}, { 32552 key: 'credit_service', 32553 appCode: 'mycj_credit_service', 32554 name: 'Credit Service', 32555 menuName: 'Credit Service', 32556 description: 'Short-Term Credit Support for Company with Good Reputation.', 32557 detailUrl: 'https://www.cjdropshipping.com/loancredit', 32558 isPreInstalled: false 32559}, { 32560 key: 'fast_shipping', 32561 appCode: 'mycj_fast_shipping', 32562 name: 'Faster Shipping Service', 32563 menuName: 'Faster Shipping Service', 32564 description: 'With our comprehensive shipping service and high-quality suppliers, offer an experience-oriented shipping solution.', 32565 detailUrl: 'https://www.cjdropshipping.com/logistics', 32566 isPreInstalled: false 32567}, { 32568 key: 'advertiser_agency', 32569 appCode: 'mycj_advertiser_agency',
32570 name: 'Advertiser Agency', 32571 menuName: 'Advertiser Agency', 32572 description: 'We Set Up, You Scale. Reliable Ad Accounts, Multi-Vertical Support & Managed Ad Service.', 32573 detailUrl: 'https://www.cjdropshipping.com/advertisingservice', 32574 isPreInstalled: false 32575}, { 32576 key: 'profit_operator', 32577 appCode: 'mycj_profit_operator', 32578 name: 'Profit Operator', 32579 menuName: 'Profit Operator', 32580 description: 'We Operate, You Earn. Launch Your US/EU Local Store with Zero Investment & Risk.', 32581 detailUrl: 'https://www.cjdropshipping.com/free-temu-tiktok-stores', 32582 isPreInstalled: false 32583}, { 32584 key: 'cj_entity', 32585 appCode: 'mycj_cj_entity', 32586 name: 'CJ Entity', 32587 menuName: 'CJ Entity', 32588 description: 'Launch your Hong Kong company for e-commerce.', 32589 detailUrl: 'https://www.cjdropshipping.com/cj-entity', 32590 isPreInstalled: false 32591}]; 32592var PRE_INSTALLED_KEYS = SERVICE_LIST.filter(function (s) { 32593 return s.isPreInstalled; 32594}).map(function (s) { 32595 return s.key; 32596}); 32597var ALL_SERVICE_KEYS = SERVICE_LIST.map(function (s) { 32598 return s.key; 32599}); 32600var MENU_NAME_TO_SERVICE_KEY = SERVICE_LIST.reduce(function (acc, item) { 32601 acc[item.menuName] = item.key; 32602 return acc; 32603}, {}); 32604var SERVICE_KEY_TO_APP_CODE = SERVICE_LIST.reduce(function (acc, item) { 32605 acc[item.key] = item.appCode; 32606 return acc; 32607}, {}); 32608;// ./src/common/after-lcp-scheduler.ts 32609var DEFAULT_LCP_TIMEOUT = 2500; 32610var lcpReached = false; 32611var started = false; 32612var idSeq = 0; 32613var queue = []; 32614var readyResolvers = []; 32615function after_lcp_scheduler_isBrowser() { 32616 return typeof window !== 'undefined' && typeof document !== 'undefined'; 32617} 32618function runQueue() { 32619 if (!queue.length) return; 32620 var pending = queue.slice().sort(function (a, b) { 32621 return b.priority - a.priority || a.id - b.id; 32622 }); 32623 queue = []; 32624 pending.forEach(function (item) { 32625 try { 32626 item.task(); 32627 } catch (error) { 32628 console.error('[after-lcp-scheduler] task failed', error); 32629 } 32630 }); 32631} 32632function markReached() { 32633 if (lcpReached) return; 32634 lcpReached = true; 32635 runQueue(); 32636 while (readyResolvers.length) { 32637 var resolve = readyResolvers.shift(); 32638 resolve && resolve(); 32639 } 32640} 32641function ensureStarted(timeout) { 32642 if (started || lcpReached) return; 32643 started = true; 32644 if (!after_lcp_scheduler_isBrowser()) { 32645 markReached(); 32646 return; 32647 } 32648 var settleTimer = null; 32649 var settle = function settle() { 32650 if (settleTimer) { 32651 clearTimeout(settleTimer); 32652 settleTimer = null; 32653 } 32654 markReached(); 32655 }; 32656 try { 32657 if ('PerformanceObserver' in window) { 32658 var observer_1 = new PerformanceObserver(function () { 32659 observer_1.disconnect(); 32660 setTimeout(settle, 0); 32661 }); 32662 observer_1.observe({ 32663 type: 'largest-contentful-paint', 32664 buffered: true 32665 }); 32666 } 32667 } catch (error) {} 32668 var onInteract = function onInteract() { 32669 return settle(); 32670 }; 32671 try { 32672 window.addEventListener('pointerdown', onInteract, { 32673 once: true, 32674 passive: true 32675 }); 32676 window.addEventListener('keydown', onInteract, { 32677 once: true 32678 }); 32679 } catch (error) {} 32680 settleTimer = setTimeout(settle, timeout > 0 ? timeout : DEFAULT_LCP_TIMEOUT); 32681} 32682function scheduleAfterLcp(task, options) { 32683 if (options === void 0) { 32684 options = {}; 32685 } 32686 var _a = options.priority, 32687 priority = _a === void 0 ? 0 : _a, 32688 _b = options.timeout, 32689 timeout = _b === void 0 ? DEFAULT_LCP_TIMEOUT : _b; 32690 if (!after_lcp_scheduler_isBrowser()) { 32691 return function () {}; 32692 } 32693 if (lcpReached) { 32694 setTimeout(function () { 32695 try { 32696 task(); 32697 } catch (error) { 32698 console.error('[after-lcp-scheduler] task failed', error); 32699 } 32700 }, 0); 32701 return function () {}; 32702 } 32703 var item = { 32704 id: ++idSeq, 32705 task: task, 32706 priority: priority 32707 }; 32708 queue.push(item); 32709 ensureStarted(timeout); 32710 return function () { 32711 queue = queue.filter(function (q) { 32712 return q.id !== item.id; 32713 }); 32714 }; 32715} 32716function whenAfterLcp(timeout) { 32717 if (timeout === void 0) { 32718 timeout = DEFAULT_LCP_TIMEOUT; 32719 } 32720 if (lcpReached || !after_lcp_scheduler_isBrowser()) return Promise.resolve(); 32721 return new Promise(function (resolve) { 32722 readyResolvers.push(resolve); 32723 ensureStarted(timeout); 32724 }); 32725} 32726function isAfterLcp() { 32727 return lcpReached; 32728} 32729/* harmony default export */ const after_lcp_scheduler = ((/* unused pure expression or super */ null && (scheduleAfterLcp))); 32730;// ./src/components/Menu/hooks/useServiceSubscription.ts
32731var useServiceSubscription_assign = undefined && undefined.__assign || function () { 32732 useServiceSubscription_assign = Object.assign || function (t) { 32733 for (var s, i = 1, n = arguments.length; i < n; i++) { 32734 s = arguments[i]; 32735 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 32736 } 32737 return t; 32738 }; 32739 return useServiceSubscription_assign.apply(this, arguments); 32740}; 32741var useServiceSubscription_awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { 32742 function adopt(value) { 32743 return value instanceof P ? value : new P(function (resolve) { 32744 resolve(value); 32745 }); 32746 } 32747 return new (P || (P = Promise))(function (resolve, reject) { 32748 function fulfilled(value) { 32749 try { 32750 step(generator.next(value)); 32751 } catch (e) { 32752 reject(e); 32753 } 32754 } 32755 function rejected(value) { 32756 try { 32757 step(generator["throw"](value)); 32758 } catch (e) { 32759 reject(e); 32760 } 32761 } 32762 function step(result) { 32763 result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); 32764 } 32765 step((generator = generator.apply(thisArg, _arguments || [])).next()); 32766 }); 32767}; 32768var useServiceSubscription_generator = undefined && undefined.__generator || function (thisArg, body) { 32769 var _ = { 32770 label: 0, 32771 sent: function sent() { 32772 if (t[0] & 1) throw t[1]; 32773 return t[1]; 32774 }, 32775 trys: [], 32776 ops: [] 32777 }, 32778 f, 32779 y, 32780 t, 32781 g; 32782 return g = { 32783 next: verb(0), 32784 "throw": verb(1), 32785 "return": verb(2) 32786 }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { 32787 return this; 32788 }), g; 32789 function verb(n) { 32790 return function (v) { 32791 return step([n, v]); 32792 }; 32793 } 32794 function step(op) { 32795 if (f) throw new TypeError("Generator is already executing."); 32796 while (g && (g = 0, op[0] && (_ = 0)), _) try { 32797 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; 32798 if (y = 0, t) op = [op[0] & 2, t.value]; 32799 switch (op[0]) { 32800 case 0: 32801 case 1: 32802 t = op; 32803 break; 32804 case 4: 32805 _.label++; 32806 return { 32807 value: op[1], 32808 done: false 32809 }; 32810 case 5: 32811 _.label++; 32812 y = op[1]; 32813 op = [0]; 32814 continue; 32815 case 7: 32816 op = _.ops.pop(); 32817 _.trys.pop(); 32818 continue; 32819 default: 32820 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { 32821 _ = 0; 32822 continue; 32823 } 32824 if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { 32825 _.label = op[1]; 32826 break; 32827 } 32828 if (op[0] === 6 && _.label < t[1]) { 32829 _.label = t[1]; 32830 t = op; 32831 break; 32832 } 32833 if (t && _.label < t[2]) { 32834 _.label = t[2]; 32835 _.ops.push(op); 32836 break; 32837 } 32838 if (t[2]) _.ops.pop(); 32839 _.trys.pop(); 32840 continue; 32841 } 32842 op = body.call(thisArg, _); 32843 } catch (e) { 32844 op = [6, e]; 32845 y = 0; 32846 } finally { 32847 f = t = 0; 32848 } 32849 if (op[0] & 5) throw op[1]; 32850 return { 32851 value: op[0] ? op[1] : void 0, 32852 done: true 32853 }; 32854 } 32855}; 32856var useServiceSubscription_spreadArray = undefined && undefined.__spreadArray || function (to, from, pack) { 32857 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 32858 if (ar || !(i in from)) { 32859 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 32860 ar[i] = from[i]; 32861 } 32862 } 32863 return to.concat(ar || Array.prototype.slice.call(from)); 32864}; 32865 32866 32867 32868 32869 32870 32871 32872 32873var SUBSCRIBED_STATUS = 1; 32874var UNINSTALLED_STATUS = 2; 32875var mergePreInstalledKeys = function mergePreInstalledKeys(keys) { 32876 var mergedSet = PRE_INSTALLED_KEYS.concat(keys); 32877 return mergedSet.filter(function (v, i, a) { 32878 return a.indexOf(v) === i; 32879 }); 32880}; 32881var buildServiceListByKeys = function buildServiceListByKeys(keys) { 32882 var mergedKeys = mergePreInstalledKeys(keys); 32883 return SERVICE_LIST.map(function (item) { 32884 return useServiceSubscription_assign(useServiceSubscription_assign({}, item), { 32885 status: mergedKeys.includes(item.key) ? SUBSCRIBED_STATUS : UNINSTALLED_STATUS, 32886 installTime: undefined 32887 }); 32888 }); 32889}; 32890var getSubscribedKeysFromInstalledAppCache = function getSubscribedKeysFromInstalledAppCache() { 32891 var _a; 32892 try {
32893 var addStore = new add_store/* default */.A(); 32894 var cacheValue = (_a = addStore.get()) === null || _a === void 0 ? void 0 : _a.value; 32895 var services = cacheValue === null || cacheValue === void 0 ? void 0 : cacheValue.services; 32896 if (!Array.isArray(services)) return null; 32897 var appCodeToKeyMap_1 = Object.keys(SERVICE_KEY_TO_APP_CODE).reduce(function (acc, key) { 32898 acc[String(SERVICE_KEY_TO_APP_CODE[key]).toLowerCase()] = key; 32899 return acc; 32900 }, {}); 32901 var keys = services.filter(function (item) { 32902 return Number(item === null || item === void 0 ? void 0 : item.status) === SUBSCRIBED_STATUS; 32903 }).map(function (item) { 32904 return appCodeToKeyMap_1[String((item === null || item === void 0 ? void 0 : item.appCode) || '').toLowerCase()]; 32905 }).filter(Boolean); 32906 return mergePreInstalledKeys(keys); 32907 } catch (e) { 32908 return null; 32909 } 32910}; 32911var initSubscriptions = function initSubscriptions() { 32912 var cachedKeys = getSubscribedKeysFromInstalledAppCache(); 32913 if (cachedKeys) { 32914 return cachedKeys; 32915 } 32916 var keys; 32917 if (bar_config/* isNewUser */.mv) { 32918 keys = useServiceSubscription_spreadArray([], PRE_INSTALLED_KEYS, true); 32919 } else { 32920 keys = useServiceSubscription_spreadArray([], ALL_SERVICE_KEYS, true); 32921 } 32922 return keys; 32923}; 32924function useServiceSubscription(props) { 32925 var _this = this; 32926 if (props === void 0) { 32927 props = {}; 32928 } 32929 var axios = props.axios, 32930 updateCallBack = props.updateCallBack, 32931 _a = props.deferInitialFetch, 32932 deferInitialFetch = _a === void 0 ? false : _a; 32933 var appStoreActions = useAddStore({ 32934 axios: axios, 32935 updateCallBack: updateCallBack, 32936 appType: 2 32937 }); 32938 var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(function () { 32939 return initSubscriptions(); 32940 }), 32941 subscribedKeys = _b[0], 32942 setSubscribedKeys = _b[1]; 32943 var _c = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(function () { 32944 return buildServiceListByKeys(initSubscriptions()); 32945 }), 32946 serviceList = _c[0], 32947 setServiceList = _c[1]; 32948 var _d = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32949 loading = _d[0], 32950 setLoading = _d[1]; 32951 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false), 32952 isModalVisible = _e[0], 32953 setIsModalVisible = _e[1]; 32954 var hasRefreshedServiceStatusRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false); 32955 var syncBySubscribedKeys = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (keys) { 32956 var mergedKeys = mergePreInstalledKeys(keys); 32957 setSubscribedKeys(mergedKeys); 32958 setServiceList(buildServiceListByKeys(mergedKeys)); 32959 }, []); 32960 var refreshServiceStatus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 32961 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 32962 var shouldShowLoading, _a, err, res, addStore, services, appCodeToKeyMap, statusMap, installTimeMap, nextList, nextSubscribedKeys; 32963 var _b; 32964 return useServiceSubscription_generator(this, function (_c) { 32965 switch (_c.label) { 32966 case 0: 32967 if (!axios) return [2]; 32968 shouldShowLoading = hasRefreshedServiceStatusRef.current; 32969 if (shouldShowLoading) { 32970 setLoading(true); 32971 } 32972 return [4, axios({ 32973 method: 'post', 32974 url: 'userCenterForeignWeb/userApp/list', 32975 data: { 32976 deviceType: 'PC', 32977 affiliateId: js_cookie/* default */.A.get('invite-token') || '' 32978 } 32979 })]; 32980 case 1: 32981 _a = _c.sent(), err = _a[0], res = _a[1]; 32982 hasRefreshedServiceStatusRef.current = true; 32983 if (shouldShowLoading) { 32984 setLoading(false); 32985 } 32986 if (err || !res || !(res === null || res === void 0 ? void 0 : res.success)) return [2]; 32987 try {
32988 addStore = new add_store/* default */.A(); 32989 addStore.save(res === null || res === void 0 ? void 0 : res.data); 32990 } catch (e) {} 32991 services = ((_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.services) || []; 32992 appCodeToKeyMap = Object.keys(SERVICE_KEY_TO_APP_CODE).reduce(function (acc, key) { 32993 acc[String(SERVICE_KEY_TO_APP_CODE[key]).toLowerCase()] = key; 32994 return acc; 32995 }, {}); 32996 statusMap = {}; 32997 installTimeMap = {}; 32998 services.forEach(function (item) { 32999 var serviceKey = appCodeToKeyMap[String((item === null || item === void 0 ? void 0 : item.appCode) || '').toLowerCase()]; 33000 if (serviceKey) { 33001 statusMap[serviceKey] = Number(item === null || item === void 0 ? void 0 : item.status) || UNINSTALLED_STATUS; 33002 var parsedInstallTime = Number(item === null || item === void 0 ? void 0 : item.installTime); 33003 if (!Number.isNaN(parsedInstallTime)) { 33004 installTimeMap[serviceKey] = parsedInstallTime; 33005 } 33006 } 33007 }); 33008 nextList = SERVICE_LIST.map(function (item) { 33009 return useServiceSubscription_assign(useServiceSubscription_assign({}, item), { 33010 status: PRE_INSTALLED_KEYS.includes(item.key) ? SUBSCRIBED_STATUS : statusMap[item.key] || UNINSTALLED_STATUS, 33011 installTime: installTimeMap[item.key] 33012 }); 33013 }); 33014 nextSubscribedKeys = mergePreInstalledKeys(nextList.filter(function (item) { 33015 return Number(item.status) === SUBSCRIBED_STATUS; 33016 }).map(function (item) { 33017 return item.key; 33018 })); 33019 setServiceList(nextList); 33020 setSubscribedKeys(nextSubscribedKeys); 33021 return [2]; 33022 } 33023 }); 33024 }); 33025 }, [axios]); 33026 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33027 if (!axios) return; 33028 if (!deferInitialFetch) { 33029 void refreshServiceStatus(); 33030 return; 33031 } 33032 var cancel = scheduleAfterLcp(function () { 33033 void refreshServiceStatus(); 33034 }); 33035 return cancel; 33036 }, [axios, refreshServiceStatus, deferInitialFetch]); 33037 var isSubscribed = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33038 return subscribedKeys.includes(key); 33039 }, [subscribedKeys]); 33040 var canUnsubscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33041 return !PRE_INSTALLED_KEYS.includes(key); 33042 }, []); 33043 var subscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33044 if (!axios) { 33045 var next = useServiceSubscription_spreadArray([], subscribedKeys, true); 33046 if (!next.includes(key)) next.push(key); 33047 syncBySubscribedKeys(next); 33048 return; 33049 } 33050 var appCode = SERVICE_KEY_TO_APP_CODE[key]; 33051 if (!appCode) return; 33052 void function () { 33053 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33054 var success; 33055 return useServiceSubscription_generator(this, function (_a) { 33056 switch (_a.label) { 33057 case 0: 33058 setLoading(true); 33059 return [4, appStoreActions.installApp({ 33060 platformCode: appCode, 33061 platformName: key 33062 }, { 33063 silentToast: true 33064 })]; 33065 case 1: 33066 success = _a.sent(); 33067 if (!success) return [3, 3]; 33068 (0,toast/* toast_success */.q)('Subscribed Successfully'); 33069 return [4, refreshServiceStatus()]; 33070 case 2: 33071 _a.sent(); 33072 _a.label = 3; 33073 case 3: 33074 setLoading(false); 33075 return [2]; 33076 } 33077 }); 33078 }); 33079 }(); 33080 }, [axios, appStoreActions, refreshServiceStatus, subscribedKeys, syncBySubscribedKeys]); 33081 var unsubscribe = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33082 if (!canUnsubscribe(key)) return; 33083 if (!axios) { 33084 syncBySubscribedKeys(subscribedKeys.filter(function (k) { 33085 return k !== key; 33086 })); 33087 return; 33088 } 33089 var appCode = SERVICE_KEY_TO_APP_CODE[key]; 33090 if (!appCode) return; 33091 void function () { 33092 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33093 var success; 33094 return useServiceSubscription_generator(this, function (_a) { 33095 switch (_a.label) { 33096 case 0:
33097 setLoading(true); 33098 return [4, appStoreActions.uninstallApp({ 33099 platformCode: appCode 33100 }, { 33101 silentToast: true 33102 })]; 33103 case 1: 33104 success = _a.sent(); 33105 if (!success) return [3, 3]; 33106 (0,toast/* default */.A)('Unsubscribed Successfully'); 33107 return [4, refreshServiceStatus()]; 33108 case 2: 33109 _a.sent(); 33110 _a.label = 3; 33111 case 3: 33112 setLoading(false); 33113 return [2]; 33114 } 33115 }); 33116 }); 33117 }(); 33118 }, [axios, appStoreActions, canUnsubscribe, refreshServiceStatus, subscribedKeys, syncBySubscribedKeys]); 33119 var toggleSubscription = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function (key) { 33120 if (subscribedKeys.includes(key)) { 33121 unsubscribe(key); 33122 } else { 33123 subscribe(key); 33124 } 33125 }, [subscribedKeys, subscribe, unsubscribe]); 33126 var openServiceCenter = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 33127 if (!axios) { 33128 setIsModalVisible(true); 33129 return; 33130 } 33131 void function () { 33132 return useServiceSubscription_awaiter(_this, void 0, void 0, function () { 33133 return useServiceSubscription_generator(this, function (_a) { 33134 switch (_a.label) { 33135 case 0: 33136 return [4, refreshServiceStatus()]; 33137 case 1: 33138 _a.sent(); 33139 setIsModalVisible(true); 33140 return [2]; 33141 } 33142 }); 33143 }); 33144 }(); 33145 }, [axios, refreshServiceStatus]); 33146 var closeServiceCenter = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useCallback)(function () { 33147 setIsModalVisible(false); 33148 }, []); 33149 return { 33150 subscribedKeys: subscribedKeys, 33151 isSubscribed: isSubscribed, 33152 subscribe: subscribe, 33153 unsubscribe: unsubscribe, 33154 toggleSubscription: toggleSubscription, 33155 canUnsubscribe: canUnsubscribe, 33156 serviceList: serviceList, 33157 loading: loading, 33158 isModalVisible: isModalVisible, 33159 openServiceCenter: openServiceCenter, 33160 closeServiceCenter: closeServiceCenter 33161 }; 33162} 33163;// ./src/common/hydrate-when.ts 33164 33165 33166var DEFAULT_EVENTS = ['click', 'focus', 'mouseenter', 'touchstart']; 33167function hydrate_when_isBrowser() { 33168 return typeof window !== 'undefined' && typeof document !== 'undefined'; 33169} 33170function useHydrateWhen(strategy, options) { 33171 if (strategy === void 0) { 33172 strategy = 'immediate'; 33173 } 33174 if (options === void 0) { 33175 options = {}; 33176 } 33177 var _a = options.rootMargin, 33178 rootMargin = _a === void 0 ? '240px' : _a, 33179 _b = options.events, 33180 events = _b === void 0 ? DEFAULT_EVENTS : _b, 33181 _c = options.idleTimeout, 33182 idleTimeout = _c === void 0 ? 2000 : _c, 33183 _d = options.afterLcpTimeout, 33184 afterLcpTimeout = _d === void 0 ? 2500 : _d; 33185 var ref = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null); 33186 var _e = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(strategy === 'immediate'), 33187 active = _e[0], 33188 setActive = _e[1]; 33189 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33190 if (active) return; 33191 if (!hydrate_when_isBrowser()) { 33192 return; 33193 } 33194 var cleanup; 33195 if (strategy === 'visible') { 33196 var target = ref.current; 33197 if (!target || !('IntersectionObserver' in window)) { 33198 setActive(true); 33199 return; 33200 } 33201 var observer_1 = new IntersectionObserver(function (entries) { 33202 if (entries.some(function (entry) { 33203 return entry.isIntersecting; 33204 })) {
33205 setActive(true); 33206 observer_1.disconnect(); 33207 } 33208 }, { 33209 rootMargin: rootMargin 33210 }); 33211 observer_1.observe(target); 33212 cleanup = function cleanup() { 33213 return observer_1.disconnect(); 33214 }; 33215 } else if (strategy === 'interaction') { 33216 var target_1 = ref.current; 33217 if (!target_1) { 33218 var id = scheduleIdle(function () { 33219 return setActive(true); 33220 }, idleTimeout); 33221 cleanup = id; 33222 } else { 33223 var onTrigger_1 = function onTrigger_1() { 33224 return setActive(true); 33225 }; 33226 events.forEach(function (evt) { 33227 return target_1.addEventListener(evt, onTrigger_1, { 33228 once: true, 33229 passive: true 33230 }); 33231 }); 33232 cleanup = function cleanup() { 33233 return events.forEach(function (evt) { 33234 return target_1.removeEventListener(evt, onTrigger_1); 33235 }); 33236 }; 33237 } 33238 } else if (strategy === 'idle') { 33239 cleanup = scheduleIdle(function () { 33240 return setActive(true); 33241 }, idleTimeout); 33242 } else if (strategy === 'afterLcp') { 33243 cleanup = scheduleAfterLcp(function () { 33244 return setActive(true); 33245 }, { 33246 timeout: afterLcpTimeout 33247 }); 33248 } 33249 return function () { 33250 cleanup && cleanup(); 33251 }; 33252 }, [active, strategy, rootMargin, idleTimeout, afterLcpTimeout]); 33253 var trigger = function trigger() { 33254 return setActive(true); 33255 }; 33256 return { 33257 active: active, 33258 ref: ref, 33259 trigger: trigger 33260 }; 33261} 33262function scheduleIdle(cb, timeout) { 33263 if (!hydrate_when_isBrowser()) return function () {}; 33264 var w = window; 33265 if (typeof w.requestIdleCallback === 'function') { 33266 var handle_1 = w.requestIdleCallback(cb, { 33267 timeout: timeout 33268 }); 33269 return function () { 33270 return w.cancelIdleCallback && w.cancelIdleCallback(handle_1); 33271 }; 33272 } 33273 var timer = setTimeout(cb, Math.min(timeout, 200)); 33274 return function () { 33275 return clearTimeout(timer); 33276 }; 33277} 33278// EXTERNAL MODULE: ./src/common/authority-utils.ts 33279var authority_utils = __webpack_require__(25435); 33280;// ./src/components/Menu/index.tsx 33281var Menu_assign = undefined && undefined.__assign || function () { 33282 Menu_assign = Object.assign || function (t) { 33283 for (var s, i = 1, n = arguments.length; i < n; i++) { 33284 s = arguments[i]; 33285 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 33286 } 33287 return t; 33288 }; 33289 return Menu_assign.apply(this, arguments); 33290}; 33291 33292 33293 33294 33295 33296 33297 33298 33299 33300 33301 33302 33303 33304 33305 33306 33307 33308 33309var loadMenuChatBox = function loadMenuChatBox() { 33310 return Promise.all(/* import() */[__webpack_require__.e(1554), __webpack_require__.e(326)]).then(__webpack_require__.bind(__webpack_require__, 91554)); 33311}; 33312 33313 33314 33315 33316 33317var loadAppStore = function loadAppStore() { 33318 return __webpack_require__.e(/* import() */ 6164).then(__webpack_require__.bind(__webpack_require__, 16164)); 33319}; 33320 33321var loadMenuUpdateGuide = function loadMenuUpdateGuide() { 33322 return Promise.all(/* import() */[__webpack_require__.e(5503), __webpack_require__.e(2440)]).then(__webpack_require__.bind(__webpack_require__, 62440)); 33323}; 33324 33325 33326 33327var loadServiceCenter = function loadServiceCenter() { 33328 return __webpack_require__.e(/* import() */ 5579).then(__webpack_require__.bind(__webpack_require__, 85579)); 33329}; 33330 33331 33332 33333 33334var _handlerMenusAuth = function handlerMenusAuth(menus, token) { 33335 return menus.map(function (menu) { 33336 return Menu_assign(Menu_assign({}, menu), { 33337 route: !token ? (0,common/* handleAuthUrl */.gQ)((menu === null || menu === void 0 ? void 0 : menu.route) || '') : menu === null || menu === void 0 ? void 0 : menu.route, 33338 childs: _handlerMenusAuth((menu === null || menu === void 0 ? void 0 : menu.childs) || [], token) 33339 }); 33340 }); 33341}; 33342var PureMenu = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(function () { 33343 var _a, _b, _c; 33344 var notMenu = useNotMenu(); 33345 var _d = (0,PropsContext/* useGlobalProps */.v)(), 33346 otherCookies = _d.otherCookies, 33347 cjDomain = _d.cjDomain, 33348 getDomainByUrl = _d.getDomainByUrl, 33349 loginInfo = _d.loginInfo;
33350 var $axios = (0,useAxios/* useAxios */.q)(getDomainByUrl); 33351 var siteCheck = (0,use_site_check/* default */.A)(); 33352 var isCJSite = siteCheck === null || siteCheck === void 0 ? void 0 : siteCheck.isSite('CJ'); 33353 var useNewAiChat = (0,useIsAiChat/* default */.A)(siteCheck); 33354 var chatAfterLcp = typeof window !== 'undefined' && window.__MF_MENU_CHAT_AFTER_LCP__ === true; 33355 var chatActive = useHydrateWhen(chatAfterLcp ? 'afterLcp' : 'immediate').active; 33356 var LazyChatBox = useLazyComponent(!useNewAiChat && chatActive, loadMenuChatBox, { 33357 componentName: 'ChatBox', 33358 chunkName: 'cjheader-chatbox' 33359 }); 33360 var enhancersAfterLcp = typeof window !== 'undefined' && window.__MF_MENU_ENHANCERS_AFTER_LCP__ === true; 33361 var enhancersActive = useHydrateWhen(enhancersAfterLcp ? 'afterLcp' : 'immediate').active; 33362 if (notMenu || useNewAiChat) { 33363 var dom_1 = document.getElementById('chat-icon-box'); 33364 if (!dom_1) { 33365 var div_1 = document.createElement('div'); 33366 div_1.setAttribute('id', "chat-icon-box"); 33367 document.body.appendChild(div_1); 33368 loadMenuChatBox().then(function (m) { 33369 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"], { 33370 axios: $axios 33371 }), div_1); 33372 }); 33373 } 33374 if (notMenu) { 33375 return null; 33376 } 33377 } 33378 var dom = document.getElementById('chat-icon-box'); 33379 !useNewAiChat && dom && document.body.removeChild(dom); 33380 var _e = useHideAuthorize($axios, isCJSite), 33381 showAuthorizeListData = _e.showAuthorizeListData, 33382 _menus = _e.menus, 33383 updateMenus = _e.updateMenus; 33384 var hasAuthorization = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33385 return _menus.filter(function (item) { 33386 return item.name === 'Authorization'; 33387 }).length > 0; 33388 }, [_menus]); 33389 var isZesty = siteCheck.isSite('ZS'); 33390 var logoHref = isCJSite ? (0,cj_href/* cjHref */.F)('/home') : cjDomain; 33391 var _f = useIsCollapsed(), 33392 isCollapsed = _f.isCollapsed, 33393 allowSwitchToggle = _f.allowSwitch, 33394 toggleCollapsed = _f.toggle; 33395 var highlight = hooks_useActiveRoute(); 33396 var isVip = (0,useIsVip/* default */.A)(); 33397 var menuContainerRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null); 33398 var appStoreHooks = useAddStore({ 33399 axios: $axios, 33400 updateCallBack: function updateCallBack() { 33401 if (isCJSite && updateMenus) { 33402 updateMenus(); 33403 } 33404 } 33405 }); 33406 var menuUpdateGuideHooks = useMenuUpdateGuide({ 33407 isCjSiteShow: isCJSite 33408 }); 33409 (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () { 33410 if (menuUpdateGuideHooks.visible && isCollapsed) { 33411 toggleCollapsed('0'); 33412 } 33413 }, [menuUpdateGuideHooks.visible, isCollapsed, toggleCollapsed]); 33414 var menus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33415 return _handlerMenusAuth(_menus, loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.token); 33416 }, [_menus, loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.token, siteCheck]); 33417 var serviceSubscription = useServiceSubscription({ 33418 axios: $axios, 33419 deferInitialFetch: typeof window !== 'undefined' && window.__MF_MENU_SVC_DEFER__ === true, 33420 updateCallBack: function updateCallBack() { 33421 if (isCJSite && updateMenus) { 33422 updateMenus(); 33423 } 33424 } 33425 }); 33426 var LazyAppStore = useLazyComponent(isCJSite && hasAuthorization && enhancersActive, loadAppStore, { 33427 componentName: 'AppStore', 33428 chunkName: 'menu-appstore' 33429 }); 33430 var LazyMenuUpdateGuide = useLazyComponent(enhancersActive, loadMenuUpdateGuide, { 33431 componentName: 'MenuUpdateGuide', 33432 chunkName: 'menu-update-guide' 33433 }); 33434 var LazyServiceCenter = useLazyComponent(isCJSite && enhancersActive, loadServiceCenter, { 33435 componentName: 'ServiceCenter', 33436 chunkName: 'menu-service-center' 33437 }); 33438 var filteredMenus = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33439 if (!isCJSite) return menus; 33440 var serviceInstallTimeMap = serviceSubscription.serviceList.reduce(function (acc, item) { 33441 acc[item.key] = Number(item.installTime) || 0; 33442 return acc; 33443 }, {}); 33444 return menus.map(function (menu) { 33445 if (menu.name === 'Service') { 33446 var sourceChilds = menu.childs || []; 33447 var childsWithIndex = sourceChilds.map(function (child, index) { 33448 return { 33449 child: child, 33450 index: index 33451 }; 33452 }).filter(function (_a) { 33453 var child = _a.child; 33454 var serviceKey = MENU_NAME_TO_SERVICE_KEY[child.name]; 33455 if (!serviceKey) return true; 33456 if (PRE_INSTALLED_KEYS.includes(serviceKey)) return true; 33457 return serviceSubscription.isSubscribed(serviceKey); 33458 }).sort(function (a, b) { 33459 var aKey = MENU_NAME_TO_SERVICE_KEY[a.child.name]; 33460 var bKey = MENU_NAME_TO_SERVICE_KEY[b.child.name]; 33461 var aIsPreInstalled = aKey ? PRE_INSTALLED_KEYS.includes(aKey) : false;
33462 var bIsPreInstalled = bKey ? PRE_INSTALLED_KEYS.includes(bKey) : false; 33463 if (aIsPreInstalled !== bIsPreInstalled) { 33464 return aIsPreInstalled ? -1 : 1; 33465 } 33466 var aInstallTime = aKey ? serviceInstallTimeMap[aKey] || 0 : 0; 33467 var bInstallTime = bKey ? serviceInstallTimeMap[bKey] || 0 : 0; 33468 if (aInstallTime === bInstallTime) { 33469 return a.index - b.index; 33470 } 33471 return aInstallTime - bInstallTime; 33472 }).map(function (_a) { 33473 var child = _a.child; 33474 return child; 33475 }); 33476 return Menu_assign(Menu_assign({}, menu), { 33477 childs: childsWithIndex 33478 }); 33479 } 33480 return menu; 33481 }); 33482 }, [menus, isCJSite, serviceSubscription.subscribedKeys, serviceSubscription.serviceList]); 33483 var isGoogleTrans = !languages/* sixCountryLanguage */.V.includes(otherCookies.lng); 33484 use_changed(function () { 33485 window.dispatchEvent(new CustomEvent('resizeMenu', { 33486 detail: { 33487 width: isCollapsed ? isZesty ? zestyMenuCollapsedWidth : collapsedWidth : expandedWidth 33488 } 33489 })); 33490 }, [isCollapsed]); 33491 var logoStyles = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () { 33492 var style = {}; 33493 if (isQs(siteCheck)) { 33494 style.height = 70; 33495 style.backgroundColor = '#41424c'; 33496 } else if ((0,common/* is1688 */.G3)(siteCheck)) { 33497 style.height = 76; 33498 } 33499 return style; 33500 }, [siteCheck]); 33501 var NormalLogo = (0,common/* is1688 */.G3)(siteCheck) ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(THLogo_THLogo, { 33502 logo: siteCheck.data('logo') 33503 })) : (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 33504 key: "normalLogo", 33505 src: siteCheck.data('logo'), 33506 width: siteCheck.data('logo-width'), 33507 height: siteCheck.data('logo-height') 33508 })); 33509 var handleToggleCollapsed = function handleToggleCollapsed() { 33510 if (menuUpdateGuideHooks.visible) return; 33511 toggleCollapsed(); 33512 }; 33513 var collapsedKey = isZesty ? 'zs' : 'cj'; 33514 var CollapsedIcon = (_a = {}, _a['cj'] = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33515 className: Menu/* default */.A['collapsed-icon'], 33516 onClick: handleToggleCollapsed, 33517 "data-gtag-element": "toggle" 33518 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(Iconfont/* default */.A, { 33519 type: isCollapsed ? 'lujingbeifen2' : 'zuo' 33520 })), _a['zs'] = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(CollapsedIcon_CollapsedIcon, { 33521 onClick: handleToggleCollapsed, 33522 isCollapsed: isCollapsed 33523 }), _a)[collapsedKey]; 33524 var menuWidth = isCollapsed ? isZesty ? zestyMenuCollapsedWidth : collapsedWidth : expandedWidth; 33525 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", { 33526 style: { 33527 width: menuWidth, 33528 height: '100vh', 33529 flexShrink: 0 33530 } 33531 }), /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33532 className: classnames_default()(Menu/* default */.A['mycj-menu'], (_b = { 33533 notranslate: !isGoogleTrans 33534 }, _b[Menu/* default */.A.collapsed] = isCollapsed, _b[Menu/* default */.A.vip] = isVip, _b[Menu/* default */.A.zs] = isZesty, _b)), 33535 "data-gtag-module": "cj_menu" 33536 }, allowSwitchToggle && !menuUpdateGuideHooks.visible && CollapsedIcon, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("div", { 33537 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)), 33538 style: logoStyles 33539 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("a", { 33540 href: logoHref, 33541 "data-gtag-element": "logo" 33542 }, isCollapsed ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement("img", { 33543 key: "collapsedLogo", 33544 src: siteCheck.data('favicon'), 33545 width: 36, 33546 height: 36 33547 })) : NormalLogo)), isCollapsed && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(components_Menu_MenuCollapsed, { 33548 isActive: highlight.isActive, 33549 isParentActive: highlight.isParentActive, 33550 showAuthorizeListData: showAuthorizeListData, 33551 menus: filteredMenus, 33552 openAddStore: appStoreHooks.openAddStore, 33553 openServiceCenter: isCJSite ? serviceSubscription.openServiceCenter : undefined 33554 })), !isCollapsed && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(components_Menu_MenuNormal, { 33555 isActive: highlight.isActive, 33556 isParentActive: highlight.isParentActive, 33557 showAuthorizeListData: showAuthorizeListData, 33558 menus: filteredMenus, 33559 openAddStore: appStoreHooks.openAddStore, 33560 menuContainerRef: menuContainerRef, 33561 openServiceCenter: isCJSite ? serviceSubscription.openServiceCenter : undefined, 33562 disableScroll: menuUpdateGuideHooks.visible 33563 })), !useNewAiChat && chatActive && LazyChatBox ? (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyChatBox, { 33564 needCollapsed: true, 33565 isCollapsed: isCollapsed, 33566 axios: $axios 33567 })) : null, isCJSite && hasAuthorization && enhancersActive && LazyAppStore && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyAppStore, Menu_assign({}
33567, appStoreHooks))), enhancersActive && LazyMenuUpdateGuide && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyMenuUpdateGuide, { 33568 visible: menuUpdateGuideHooks.visible && !isCollapsed, 33569 onOK: menuUpdateGuideHooks.onOK, 33570 isCollapsed: isCollapsed, 33571 menuContainerRef: menuContainerRef, 33572 guideMode: menuUpdateGuideHooks.guideMode 33573 })), isCJSite && enhancersActive && LazyServiceCenter && (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(LazyServiceCenter, { 33574 visible: serviceSubscription.isModalVisible, 33575 onClose: serviceSubscription.closeServiceCenter, 33576 serviceList: serviceSubscription.serviceList, 33577 loading: serviceSubscription.loading, 33578 isSubscribed: serviceSubscription.isSubscribed, 33579 canUnsubscribe: serviceSubscription.canUnsubscribe, 33580 toggleSubscription: serviceSubscription.toggleSubscription 33581 })))); 33582}); 33583function Menu_Menu(_a) { 33584 var _b = _a.getDomainByUrl, 33585 getDomainByUrl = _b === void 0 ? function (url) { 33586 return url; 33587 } : _b, 33588 _c = _a.platform, 33589 platform = _c === void 0 ? 'cj' : _c; 33590 i18next_refact(window.i18next, 'en'); 33591 var data = { 33592 platform: platform, 33593 getDomainByUrl: getDomainByUrl 33594 }; 33595 return /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(PropsContext/* default */.A.Provider, { 33596 value: data 33597 }, /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().createElement(PureMenu, null)); 33598} 33599})(); 33600 33601/******/ return __webpack_exports__; 33602/******/ })() 33603; 33604});
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.