// ==UserScript== // @name Harvest-Dev // @namespace https://tampermonkey.net/ // @version 2024.10.14.01 // @author ngfchl // @description PT站点信息与Harvest同步及种子推送到下载器 // @icon data:image/jpeg;base64,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 // @match https://uk.qhstudio.fun/* // @match https://ubits.club/* // @match https://discfan.net/* // @match https://1ptba.com/* // @match https://pt.gtk.pw/* // @match https://hdsky.me/* // @match https://u2.dmhy.org/* // @match https://www.haidan.video/* // @match https://ssdforum.org/* // @match https://www.tjupt.org/* // @match https://tjupt.org/* // @match https://oldtoons.world/* // @match https://www.dragonhd.xyz/* // @match https://pt.eastgame.org/* // @match https://www.okpt.net/* // @match https://cnlang.org/* // @match https://piggo.me/* // @match https://pt.inswan.fun/* // @match https://pterclub.com/* // @match https://ptvicomo.net/* // @match https://hdhome.org/* // @match https://pt.hd4fans.org/* // @match https://pandapt.net/* // @match https://srvfi.top/* // @match https://www.joyhd.net/* // @match https://leaves.red/* // @match https://www.pttime.org/* // @match https://www.pttime.top/* // @match https://dicmusic.com/* // @match https://pt.hdupt.com/* // @match https://sharkpt.net/* // @match https://carpt.net/* // @match https://kamept.com/* // @match https://iptorrents.com/* // @match https://share.ilolicon.com/* // @match https://www.oshen.win/* // @match https://hdvbits.com/* // @match https://zmpt.cc/* // @match https://dogpt.cc/* // @match https://hdtime.org/* // @match https://hdpt.xyz/* // @match https://pt.0ff.cc/* // @match https://pt.2xfree.org/* // @match https://et8.org/* // @match https://www.nicept.net/* // @match https://nicept.net/* // @match https://www.3wmg.com/* // @match https://cinemaz.to/* // @match https://hd-space.org/* // @match https://ourbits.club/* // @match https://pthome.net/* // @match https://www.pthome.net/* // @match https://www.qingwapt.com/* // @match https://qingwapt.com/* // @match https://new.qingwa.pro* // @match https://pt.keepfrds.com/* // @match https://pt.itzmx.com/* // @match https://www.hdkyl.in/* // @match https://cyanbug.net/* // @match https://hd-torrents.org/* // @match https://filelist.io/* // @match https://pt.soulvoice.club/* // @match https://www.icc2022.com/* // @match https://www.icc2022.top/* // @match https://icc2022.com/* // @match https://icc2022.top/* // @match https://exoticaz.to/* // @match https://52pt.site/* // @match https://dajiao.cyou/* // @match https://hdfun.me/* // @match https://star-space.net/* // @match https://kufei.org/* // @match https://www.open.cd/* // @match https://open.cd/* // @match https://www.yemapt.org/* // @match https://www.hitpt.com/* // @match https://wintersakura.net/* // @match https://t.tosky.club/* // @match https://ptchdbits.co/* // @match https://springsunday.net/* // @match https://*.m-team.cc/* // @match https://*.m-team.io/* // @match https://nanyangpt.com/* // @match https://club.hares.top/* // @match https://ptfans.cc/* // @match https://hdmayi.com/* // @match http://hdmayi.com/* // @match https://ptchina.org/* // @match https://monikadesign.uk/* // @match https://www.beitai.pt/* // @match https://greatposterwall.com/* // @match https://xingtan.one/* // @match https://zeus.hamsters.space/* // @match https://hudbt.hust.edu.cn/* // @match https://azusa.wiki/* // @match https://www.torrentleech.cc/* // @match https://www.torrentleech.org/* // @match https://www.torrentleech.me/* // @match https://ptcafe.club/* // @match https://ptsbao.club/* // @match https://hdchina.org/* // @match https://wukongwendao.top/* // @match https://pt.btschool.club/* // @match https://ultrahd.net/* // @match https://hdcity.city/* // @match https://hdcity.leniter.org/* // @match https://hdcity.work/* // @match https://www.gamegamept.com/* // @match https://pt.hdpost.top/* // @match https://rousi.zip/* // @match https://www.hddolby.com/* // @match https://hdfans.org/* // @match https://hdvideo.one/* // @match https://pt.sjtu.edu.cn/* // @match https://crabpt.vip/* // @match https://hhanclub.top/* // @match https://gamerapt.link/* // @match https://hdatmos.club/* // @match https://totheglory.im/* // @match https://www.agsvpt.com/* // @match http://cf-old.agsvpt.com/* // @match https://jpopsuki.eu/* // @match http://public.ecustpt.eu.org/* // @match https://pt.ecust.pp.ua/* // @match https://public.ecustpt.eu.org/* // @match https://pt.cdfile.org/* // @match https://www.htpt.cc/* // @match https://audiences.me/* // @match https://reelflix.xyz/* // @match https://www.ptlsp.com/* // @match https://zhuque.in/* // @match https://hdarea.club/* // @match http://pt.tu88.men/* // @match https://avistaz.to/* // @match https://pt.zhuoyue.de/* // @match https://raingfh.top/* // @match https://ptzone.xyz/* // @match https://ptlgs.org/* // @match https://pt.ghacg.com/* // @match https://hdbao.cc/* // @match https://invites.fun/* // @match https://www.52movie.top/* // @require https://cdn.jsdelivr.net/npm/vue@3.5.12/dist/vue.global.prod.js // @grant GM_addStyle // @grant GM_cookie // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @run-at document-idle // @downloadURL none // ==/UserScript== (t=>{if(typeof GM_addStyle=="function"){GM_addStyle(t);return}const e=document.createElement("style");e.textContent=t,document.head.append(e)})(' body{margin:0 auto!important;height:auto!important}.harvest-wrap{position:fixed;top:240px;z-index:99999;width:110px;left:0;float:left;opacity:.8;font-size:12px;background-color:#fff}.harvest-wrap:hover{opacity:1}.harvest-wrap>img,.image{border-radius:2px;width:110px}.ant-form{text-align:center}.ant-form-item-label{text-align:center!important;margin:auto!important}html,body{width:100%;height:100%}input::-ms-clear,input::-ms-reveal{display:none}*,*:before,*:after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}@-ms-viewport{width:device-width}body{margin:0}[tabindex="-1"]:focus{outline:none}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5em;font-weight:500}p{margin-top:0;margin-bottom:1em}abbr[title],abbr[data-original-title]{-webkit-text-decoration:underline dotted;text-decoration:underline;text-decoration:underline dotted;border-bottom:0;cursor:help}address{margin-bottom:1em;font-style:normal;line-height:inherit}input[type=text],input[type=password],input[type=number],textarea{-webkit-appearance:none}ol,ul,dl{margin-top:0;margin-bottom:1em}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:.5em;margin-left:0}blockquote{margin:0 0 1em}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}pre,code,kbd,samp{font-size:1em;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace}pre{margin-top:0;margin-bottom:1em;overflow:auto}figure{margin:0 0 1em}img{vertical-align:middle;border-style:none}a,area,button,[role=button],input:not([type=range]),label,select,summary,textarea{touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75em;padding-bottom:.3em;text-align:left;caption-side:bottom}input,button,select,optgroup,textarea{margin:0;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{padding:0;border-style:none}input[type=radio],input[type=checkbox]{box-sizing:border-box;padding:0}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;margin:0;padding:0;border:0}legend{display:block;width:100%;max-width:100%;margin-bottom:.5em;padding:0;color:inherit;font-size:1.5em;line-height:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}mark{padding:.2em;background-color:#feffe6} '); (function (vue) { 'use strict'; var __getOwnPropNames = Object.getOwnPropertyNames; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var require_main_001 = __commonJS({ "main-babb6831.js"(exports, module) { function _typeof$1(o2) { "@babel/helpers - typeof"; return _typeof$1 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o3) { return typeof o3; } : function(o3) { return o3 && "function" == typeof Symbol && o3.constructor === Symbol && o3 !== Symbol.prototype ? "symbol" : typeof o3; }, _typeof$1(o2); } function toPrimitive(t2, r2) { if ("object" != _typeof$1(t2) || !t2) return t2; var e2 = t2[Symbol.toPrimitive]; if (void 0 !== e2) { var i2 = e2.call(t2, r2 || "default"); if ("object" != _typeof$1(i2)) return i2; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r2 ? String : Number)(t2); } function toPropertyKey(t2) { var i2 = toPrimitive(t2, "string"); return "symbol" == _typeof$1(i2) ? i2 : i2 + ""; } function _defineProperty$z(e2, r2, t2) { return (r2 = toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, { value: t2, enumerable: true, configurable: true, writable: true }) : e2[r2] = t2, e2; } function ownKeys$1(e2, r2) { var t2 = Object.keys(e2); if (Object.getOwnPropertySymbols) { var o2 = Object.getOwnPropertySymbols(e2); r2 && (o2 = o2.filter(function(r3) { return Object.getOwnPropertyDescriptor(e2, r3).enumerable; })), t2.push.apply(t2, o2); } return t2; } function _objectSpread2$1(e2) { for (var r2 = 1; r2 < arguments.length; r2++) { var t2 = null != arguments[r2] ? arguments[r2] : {}; r2 % 2 ? ownKeys$1(Object(t2), true).forEach(function(r3) { _defineProperty$z(e2, r3, t2[r3]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys$1(Object(t2)).forEach(function(r3) { Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3)); }); } return e2; } function _extends$1() { return _extends$1 = Object.assign ? Object.assign.bind() : function(n2) { for (var e2 = 1; e2 < arguments.length; e2++) { var t2 = arguments[e2]; for (var r2 in t2) ({}).hasOwnProperty.call(t2, r2) && (n2[r2] = t2[r2]); } return n2; }, _extends$1.apply(null, arguments); } const isFunction$1 = (val) => typeof val === "function"; const isArray$2 = Array.isArray; const isString = (val) => typeof val === "string"; const isObject$2 = (val) => val !== null && typeof val === "object"; const onRE = /^on[^a-z]/; const isOn = (key2) => onRE.test(key2); const cacheStringFunction = (fn) => { const cache = /* @__PURE__ */ Object.create(null); return (str) => { const hit = cache[str]; return hit || (cache[str] = fn(str)); }; }; const camelizeRE = /-(\w)/g; const camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : ""); }); const hyphenateRE = /\B([A-Z])/g; const hyphenate = cacheStringFunction((str) => { return str.replace(hyphenateRE, "-$1").toLowerCase(); }); const hasOwnProperty$e = Object.prototype.hasOwnProperty; const hasOwn = (val, key2) => hasOwnProperty$e.call(val, key2); function resolvePropValue(options, props2, key2, value) { const opt = options[key2]; if (opt != null) { const hasDefault = hasOwn(opt, "default"); if (hasDefault && value === void 0) { const defaultValue = opt.default; value = opt.type !== Function && isFunction$1(defaultValue) ? defaultValue() : defaultValue; } if (opt.type === Boolean) { if (!hasOwn(props2, key2) && !hasDefault) { value = false; } else if (value === "") { value = true; } } } return value; } function getDataAndAriaProps(props2) { return Object.keys(props2).reduce((memo, key2) => { if (key2.startsWith("data-") || key2.startsWith("aria-")) { memo[key2] = props2[key2]; } return memo; }, {}); } function toPx(val) { if (typeof val === "number") return `${val}px`; return val; } function renderHelper(v2) { let props2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; let defaultV = arguments.length > 2 ? arguments[2] : void 0; if (typeof v2 === "function") { return v2(props2); } return v2 !== null && v2 !== void 0 ? v2 : defaultV; } function wrapPromiseFn(openFn) { let closeFn; const closePromise = new Promise((resolve) => { closeFn = openFn(() => { resolve(true); }); }); const result = () => { closeFn === null || closeFn === void 0 ? void 0 : closeFn(); }; result.then = (filled, rejected) => closePromise.then(filled, rejected); result.promise = closePromise; return result; } function classNames() { const classes = []; for (let i2 = 0; i2 < arguments.length; i2++) { const value = i2 < 0 || arguments.length <= i2 ? void 0 : arguments[i2]; if (!value) continue; if (isString(value)) { classes.push(value); } else if (isArray$2(value)) { for (let i3 = 0; i3 < value.length; i3++) { const inner = classNames(value[i3]); if (inner) { classes.push(inner); } } } else if (isObject$2(value)) { for (const name in value) { if (value[name]) { classes.push(name); } } } } return classes.join(" "); } var MapShim = function() { if (typeof Map !== "undefined") { return Map; } function getIndex(arr, key2) { var result = -1; arr.some(function(entry, index2) { if (entry[0] === key2) { result = index2; return true; } return false; }); return result; } return ( /** @class */ function() { function class_1() { this.__entries__ = []; } Object.defineProperty(class_1.prototype, "size", { /** * @returns {boolean} */ get: function() { return this.__entries__.length; }, enumerable: true, configurable: true }); class_1.prototype.get = function(key2) { var index2 = getIndex(this.__entries__, key2); var entry = this.__entries__[index2]; return entry && entry[1]; }; class_1.prototype.set = function(key2, value) { var index2 = getIndex(this.__entries__, key2); if (~index2) { this.__entries__[index2][1] = value; } else { this.__entries__.push([key2, value]); } }; class_1.prototype.delete = function(key2) { var entries = this.__entries__; var index2 = getIndex(entries, key2); if (~index2) { entries.splice(index2, 1); } }; class_1.prototype.has = function(key2) { return !!~getIndex(this.__entries__, key2); }; class_1.prototype.clear = function() { this.__entries__.splice(0); }; class_1.prototype.forEach = function(callback, ctx) { if (ctx === void 0) { ctx = null; } for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) { var entry = _a[_i]; callback.call(ctx, entry[1], entry[0]); } }; return class_1; }() ); }(); var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && window.document === document; var global$1 = function() { if (typeof global !== "undefined" && global.Math === Math) { return global; } if (typeof self !== "undefined" && self.Math === Math) { return self; } if (typeof window !== "undefined" && window.Math === Math) { return window; } return Function("return this")(); }(); var requestAnimationFrame$1 = function() { if (typeof requestAnimationFrame === "function") { return requestAnimationFrame.bind(global$1); } return function(callback) { return setTimeout(function() { return callback(Date.now()); }, 1e3 / 60); }; }(); var trailingTimeout = 2; function throttle(callback, delay) { var leadingCall = false, trailingCall = false, lastCallTime = 0; function resolvePending() { if (leadingCall) { leadingCall = false; callback(); } if (trailingCall) { proxy(); } } function timeoutCallback() { requestAnimationFrame$1(resolvePending); } function proxy() { var timeStamp = Date.now(); if (leadingCall) { if (timeStamp - lastCallTime < trailingTimeout) { return; } trailingCall = true; } else { leadingCall = true; trailingCall = false; setTimeout(timeoutCallback, delay); } lastCallTime = timeStamp; } return proxy; } var REFRESH_DELAY = 20; var transitionKeys = ["top", "right", "bottom", "left", "width", "height", "size", "weight"]; var mutationObserverSupported = typeof MutationObserver !== "undefined"; var ResizeObserverController = ( /** @class */ function() { function ResizeObserverController2() { this.connected_ = false; this.mutationEventsAdded_ = false; this.mutationsObserver_ = null; this.observers_ = []; this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); } ResizeObserverController2.prototype.addObserver = function(observer) { if (!~this.observers_.indexOf(observer)) { this.observers_.push(observer); } if (!this.connected_) { this.connect_(); } }; ResizeObserverController2.prototype.removeObserver = function(observer) { var observers2 = this.observers_; var index2 = observers2.indexOf(observer); if (~index2) { observers2.splice(index2, 1); } if (!observers2.length && this.connected_) { this.disconnect_(); } }; ResizeObserverController2.prototype.refresh = function() { var changesDetected = this.updateObservers_(); if (changesDetected) { this.refresh(); } }; ResizeObserverController2.prototype.updateObservers_ = function() { var activeObservers = this.observers_.filter(function(observer) { return observer.gatherActive(), observer.hasActive(); }); activeObservers.forEach(function(observer) { return observer.broadcastActive(); }); return activeObservers.length > 0; }; ResizeObserverController2.prototype.connect_ = function() { if (!isBrowser || this.connected_) { return; } document.addEventListener("transitionend", this.onTransitionEnd_); window.addEventListener("resize", this.refresh); if (mutationObserverSupported) { this.mutationsObserver_ = new MutationObserver(this.refresh); this.mutationsObserver_.observe(document, { attributes: true, childList: true, characterData: true, subtree: true }); } else { document.addEventListener("DOMSubtreeModified", this.refresh); this.mutationEventsAdded_ = true; } this.connected_ = true; }; ResizeObserverController2.prototype.disconnect_ = function() { if (!isBrowser || !this.connected_) { return; } document.removeEventListener("transitionend", this.onTransitionEnd_); window.removeEventListener("resize", this.refresh); if (this.mutationsObserver_) { this.mutationsObserver_.disconnect(); } if (this.mutationEventsAdded_) { document.removeEventListener("DOMSubtreeModified", this.refresh); } this.mutationsObserver_ = null; this.mutationEventsAdded_ = false; this.connected_ = false; }; ResizeObserverController2.prototype.onTransitionEnd_ = function(_a) { var _b = _a.propertyName, propertyName = _b === void 0 ? "" : _b; var isReflowProperty = transitionKeys.some(function(key2) { return !!~propertyName.indexOf(key2); }); if (isReflowProperty) { this.refresh(); } }; ResizeObserverController2.getInstance = function() { if (!this.instance_) { this.instance_ = new ResizeObserverController2(); } return this.instance_; }; ResizeObserverController2.instance_ = null; return ResizeObserverController2; }() ); var defineConfigurable = function(target, props2) { for (var _i = 0, _a = Object.keys(props2); _i < _a.length; _i++) { var key2 = _a[_i]; Object.defineProperty(target, key2, { value: props2[key2], enumerable: false, writable: false, configurable: true }); } return target; }; var getWindowOf = function(target) { var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; return ownerGlobal || global$1; }; var emptyRect = createRectInit(0, 0, 0, 0); function toFloat(value) { return parseFloat(value) || 0; } function getBordersSize(styles) { var positions = []; for (var _i = 1; _i < arguments.length; _i++) { positions[_i - 1] = arguments[_i]; } return positions.reduce(function(size, position2) { var value = styles["border-" + position2 + "-width"]; return size + toFloat(value); }, 0); } function getPaddings(styles) { var positions = ["top", "right", "bottom", "left"]; var paddings = {}; for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { var position2 = positions_1[_i]; var value = styles["padding-" + position2]; paddings[position2] = toFloat(value); } return paddings; } function getSVGContentRect(target) { var bbox = target.getBBox(); return createRectInit(0, 0, bbox.width, bbox.height); } function getHTMLElementContentRect(target) { var clientWidth = target.clientWidth, clientHeight = target.clientHeight; if (!clientWidth && !clientHeight) { return emptyRect; } var styles = getWindowOf(target).getComputedStyle(target); var paddings = getPaddings(styles); var horizPad = paddings.left + paddings.right; var vertPad = paddings.top + paddings.bottom; var width = toFloat(styles.width), height = toFloat(styles.height); if (styles.boxSizing === "border-box") { if (Math.round(width + horizPad) !== clientWidth) { width -= getBordersSize(styles, "left", "right") + horizPad; } if (Math.round(height + vertPad) !== clientHeight) { height -= getBordersSize(styles, "top", "bottom") + vertPad; } } if (!isDocumentElement(target)) { var vertScrollbar = Math.round(width + horizPad) - clientWidth; var horizScrollbar = Math.round(height + vertPad) - clientHeight; if (Math.abs(vertScrollbar) !== 1) { width -= vertScrollbar; } if (Math.abs(horizScrollbar) !== 1) { height -= horizScrollbar; } } return createRectInit(paddings.left, paddings.top, width, height); } var isSVGGraphicsElement = function() { if (typeof SVGGraphicsElement !== "undefined") { return function(target) { return target instanceof getWindowOf(target).SVGGraphicsElement; }; } return function(target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === "function"; }; }(); function isDocumentElement(target) { return target === getWindowOf(target).document.documentElement; } function getContentRect(target) { if (!isBrowser) { return emptyRect; } if (isSVGGraphicsElement(target)) { return getSVGContentRect(target); } return getHTMLElementContentRect(target); } function createReadOnlyRect(_a) { var x2 = _a.x, y2 = _a.y, width = _a.width, height = _a.height; var Constr = typeof DOMRectReadOnly !== "undefined" ? DOMRectReadOnly : Object; var rect = Object.create(Constr.prototype); defineConfigurable(rect, { x: x2, y: y2, width, height, top: y2, right: x2 + width, bottom: height + y2, left: x2 }); return rect; } function createRectInit(x2, y2, width, height) { return { x: x2, y: y2, width, height }; } var ResizeObservation = ( /** @class */ function() { function ResizeObservation2(target) { this.broadcastWidth = 0; this.broadcastHeight = 0; this.contentRect_ = createRectInit(0, 0, 0, 0); this.target = target; } ResizeObservation2.prototype.isActive = function() { var rect = getContentRect(this.target); this.contentRect_ = rect; return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight; }; ResizeObservation2.prototype.broadcastRect = function() { var rect = this.contentRect_; this.broadcastWidth = rect.width; this.broadcastHeight = rect.height; return rect; }; return ResizeObservation2; }() ); var ResizeObserverEntry = ( /** @class */ function() { function ResizeObserverEntry2(target, rectInit) { var contentRect = createReadOnlyRect(rectInit); defineConfigurable(this, { target, contentRect }); } return ResizeObserverEntry2; }() ); var ResizeObserverSPI = ( /** @class */ function() { function ResizeObserverSPI2(callback, controller, callbackCtx) { this.activeObservations_ = []; this.observations_ = new MapShim(); if (typeof callback !== "function") { throw new TypeError("The callback provided as parameter 1 is not a function."); } this.callback_ = callback; this.controller_ = controller; this.callbackCtx_ = callbackCtx; } ResizeObserverSPI2.prototype.observe = function(target) { if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } if (typeof Element === "undefined" || !(Element instanceof Object)) { return; } if (!(target instanceof getWindowOf(target).Element)) { throw new TypeError('parameter 1 is not of type "Element".'); } var observations = this.observations_; if (observations.has(target)) { return; } observations.set(target, new ResizeObservation(target)); this.controller_.addObserver(this); this.controller_.refresh(); }; ResizeObserverSPI2.prototype.unobserve = function(target) { if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } if (typeof Element === "undefined" || !(Element instanceof Object)) { return; } if (!(target instanceof getWindowOf(target).Element)) { throw new TypeError('parameter 1 is not of type "Element".'); } var observations = this.observations_; if (!observations.has(target)) { return; } observations.delete(target); if (!observations.size) { this.controller_.removeObserver(this); } }; ResizeObserverSPI2.prototype.disconnect = function() { this.clearActive(); this.observations_.clear(); this.controller_.removeObserver(this); }; ResizeObserverSPI2.prototype.gatherActive = function() { var _this = this; this.clearActive(); this.observations_.forEach(function(observation) { if (observation.isActive()) { _this.activeObservations_.push(observation); } }); }; ResizeObserverSPI2.prototype.broadcastActive = function() { if (!this.hasActive()) { return; } var ctx = this.callbackCtx_; var entries = this.activeObservations_.map(function(observation) { return new ResizeObserverEntry(observation.target, observation.broadcastRect()); }); this.callback_.call(ctx, entries, ctx); this.clearActive(); }; ResizeObserverSPI2.prototype.clearActive = function() { this.activeObservations_.splice(0); }; ResizeObserverSPI2.prototype.hasActive = function() { return this.activeObservations_.length > 0; }; return ResizeObserverSPI2; }() ); var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim(); var ResizeObserver$2 = ( /** @class */ function() { function ResizeObserver2(callback) { if (!(this instanceof ResizeObserver2)) { throw new TypeError("Cannot call a class as a function."); } if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } var controller = ResizeObserverController.getInstance(); var observer = new ResizeObserverSPI(callback, controller, this); observers.set(this, observer); } return ResizeObserver2; }() ); [ "observe", "unobserve", "disconnect" ].forEach(function(method2) { ResizeObserver$2.prototype[method2] = function() { var _a; return (_a = observers.get(this))[method2].apply(_a, arguments); }; }); var index = function() { if (typeof global$1.ResizeObserver !== "undefined") { return global$1.ResizeObserver; } return ResizeObserver$2; }(); const isValid$2 = (value) => { return value !== void 0 && value !== null && value !== ""; }; const isValid$3 = isValid$2; const initDefaultProps = (types2, defaultProps) => { const propTypes = _extends$1({}, types2); Object.keys(defaultProps).forEach((k2) => { const prop = propTypes[k2]; if (prop) { if (prop.type || prop.default) { prop.default = defaultProps[k2]; } else if (prop.def) { prop.def(defaultProps[k2]); } else { propTypes[k2] = { type: prop, default: defaultProps[k2] }; } } else { throw new Error(`not have ${k2} prop`); } }); return propTypes; }; const initDefaultProps$1 = initDefaultProps; const splitAttrs = (attrs) => { const allAttrs = Object.keys(attrs); const eventAttrs = {}; const onEvents = {}; const extraAttrs = {}; for (let i2 = 0, l2 = allAttrs.length; i2 < l2; i2++) { const key2 = allAttrs[i2]; if (isOn(key2)) { eventAttrs[key2[2].toLowerCase() + key2.slice(3)] = attrs[key2]; onEvents[key2] = attrs[key2]; } else { extraAttrs[key2] = attrs[key2]; } } return { onEvents, events: eventAttrs, extraAttrs }; }; const parseStyleText = function() { let cssText = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ""; let camel = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false; const res = {}; const listDelimiter = /;(?![^(]*\))/g; const propertyDelimiter = /:(.+)/; if (typeof cssText === "object") return cssText; cssText.split(listDelimiter).forEach(function(item) { if (item) { const tmp = item.split(propertyDelimiter); if (tmp.length > 1) { const k2 = camel ? camelize(tmp[0].trim()) : tmp[0].trim(); res[k2] = tmp[1].trim(); } } }); return res; }; const hasProp = (instance, prop) => { return instance[prop] !== void 0; }; const skipFlattenKey = Symbol("skipFlatten"); const flattenChildren = function() { let children = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; let filterEmpty2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; const temp = Array.isArray(children) ? children : [children]; const res = []; temp.forEach((child) => { if (Array.isArray(child)) { res.push(...flattenChildren(child, filterEmpty2)); } else if (child && child.type === vue.Fragment) { if (child.key === skipFlattenKey) { res.push(child); } else { res.push(...flattenChildren(child.children, filterEmpty2)); } } else if (child && vue.isVNode(child)) { if (filterEmpty2 && !isEmptyElement(child)) { res.push(child); } else if (!filterEmpty2) { res.push(child); } } else if (isValid$3(child)) { res.push(child); } }); return res; }; const getSlot = function(self2) { let name = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "default"; let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; if (vue.isVNode(self2)) { if (self2.type === vue.Fragment) { return name === "default" ? flattenChildren(self2.children) : []; } else if (self2.children && self2.children[name]) { return flattenChildren(self2.children[name](options)); } else { return []; } } else { const res = self2.$slots[name] && self2.$slots[name](options); return flattenChildren(res); } }; const findDOMNode = (instance) => { var _a; let node2 = ((_a = instance === null || instance === void 0 ? void 0 : instance.vnode) === null || _a === void 0 ? void 0 : _a.el) || instance && (instance.$el || instance); while (node2 && !node2.tagName) { node2 = node2.nextSibling; } return node2; }; const getOptionProps = (instance) => { const res = {}; if (instance.$ && instance.$.vnode) { const props2 = instance.$.vnode.props || {}; Object.keys(instance.$props).forEach((k2) => { const v2 = instance.$props[k2]; const hyphenateKey = hyphenate(k2); if (v2 !== void 0 || hyphenateKey in props2) { res[k2] = v2; } }); } else if (vue.isVNode(instance) && typeof instance.type === "object") { const originProps = instance.props || {}; const props2 = {}; Object.keys(originProps).forEach((key2) => { props2[camelize(key2)] = originProps[key2]; }); const options = instance.type.props || {}; Object.keys(options).forEach((k2) => { const v2 = resolvePropValue(options, props2, k2, props2[k2]); if (v2 !== void 0 || k2 in props2) { res[k2] = v2; } }); } return res; }; const getComponent = function(instance) { let prop = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "default"; let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : instance; let execute = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : true; let com = void 0; if (instance.$) { const temp = instance[prop]; if (temp !== void 0) { return typeof temp === "function" && execute ? temp(options) : temp; } else { com = instance.$slots[prop]; com = execute && com ? com(options) : com; } } else if (vue.isVNode(instance)) { const temp = instance.props && instance.props[prop]; if (temp !== void 0 && instance.props !== null) { return typeof temp === "function" && execute ? temp(options) : temp; } else if (instance.type === vue.Fragment) { com = instance.children; } else if (instance.children && instance.children[prop]) { com = instance.children[prop]; com = execute && com ? com(options) : com; } } if (Array.isArray(com)) { com = flattenChildren(com); com = com.length === 1 ? com[0] : com; com = com.length === 0 ? void 0 : com; } return com; }; function getEvents() { let ele = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; let on = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; let props2 = {}; if (ele.$) { props2 = _extends$1(_extends$1({}, props2), ele.$attrs); } else { props2 = _extends$1(_extends$1({}, props2), ele.props); } return splitAttrs(props2)[on ? "onEvents" : "events"]; } function getStyle$1(ele, camel) { const props2 = (vue.isVNode(ele) ? ele.props : ele.$attrs) || {}; let style2 = props2.style || {}; if (typeof style2 === "string") { style2 = parseStyleText(style2, camel); } else if (camel && style2) { const res = {}; Object.keys(style2).forEach((k2) => res[camelize(k2)] = style2[k2]); return res; } return style2; } function isFragment(c2) { return c2.length === 1 && c2[0].type === vue.Fragment; } function isEmptyElement(c2) { return c2 && (c2.type === vue.Comment || c2.type === vue.Fragment && c2.children.length === 0 || c2.type === vue.Text && c2.children.trim() === ""); } function filterEmpty() { let children = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : []; const res = []; children.forEach((child) => { if (Array.isArray(child)) { res.push(...child); } else if ((child === null || child === void 0 ? void 0 : child.type) === vue.Fragment) { res.push(...filterEmpty(child.children)); } else { res.push(child); } }); return res.filter((c2) => !isEmptyElement(c2)); } function filterEmptyWithUndefined(children) { if (children) { const coms = filterEmpty(children); return coms.length ? coms : void 0; } else { return children; } } function isValidElement(element) { if (Array.isArray(element) && element.length === 1) { element = element[0]; } return element && element.__v_isVNode && typeof element.type !== "symbol"; } function getPropsSlot(slots, props2) { let prop = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "default"; var _a, _b; return (_a = props2[prop]) !== null && _a !== void 0 ? _a : (_b = slots[prop]) === null || _b === void 0 ? void 0 : _b.call(slots); } const ResizeObserver$1 = vue.defineComponent({ compatConfig: { MODE: 3 }, name: "ResizeObserver", props: { disabled: Boolean, onResize: Function }, emits: ["resize"], setup(props2, _ref) { let { slots } = _ref; const state = vue.reactive({ width: 0, height: 0, offsetHeight: 0, offsetWidth: 0 }); let currentElement = null; let resizeObserver = null; const destroyObserver = () => { if (resizeObserver) { resizeObserver.disconnect(); resizeObserver = null; } }; const onResize = (entries) => { const { onResize: onResize2 } = props2; const target = entries[0].target; const { width, height } = target.getBoundingClientRect(); const { offsetWidth, offsetHeight } = target; const fixedWidth = Math.floor(width); const fixedHeight = Math.floor(height); if (state.width !== fixedWidth || state.height !== fixedHeight || state.offsetWidth !== offsetWidth || state.offsetHeight !== offsetHeight) { const size = { width: fixedWidth, height: fixedHeight, offsetWidth, offsetHeight }; _extends$1(state, size); if (onResize2) { Promise.resolve().then(() => { onResize2(_extends$1(_extends$1({}, size), { offsetWidth, offsetHeight }), target); }); } } }; const instance = vue.getCurrentInstance(); const registerObserver = () => { const { disabled } = props2; if (disabled) { destroyObserver(); return; } const element = findDOMNode(instance); const elementChanged = element !== currentElement; if (elementChanged) { destroyObserver(); currentElement = element; } if (!resizeObserver && element) { resizeObserver = new index(onResize); resizeObserver.observe(element); } }; vue.onMounted(() => { registerObserver(); }); vue.onUpdated(() => { registerObserver(); }); vue.onUnmounted(() => { destroyObserver(); }); vue.watch(() => props2.disabled, () => { registerObserver(); }, { flush: "post" }); return () => { var _a; return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)[0]; }; } }); let raf = (callback) => setTimeout(callback, 16); let caf = (num) => clearTimeout(num); if (typeof window !== "undefined" && "requestAnimationFrame" in window) { raf = (callback) => window.requestAnimationFrame(callback); caf = (handle) => window.cancelAnimationFrame(handle); } let rafUUID = 0; const rafIds = /* @__PURE__ */ new Map(); function cleanup(id) { rafIds.delete(id); } function wrapperRaf(callback) { let times = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1; rafUUID += 1; const id = rafUUID; function callRef(leftTimes) { if (leftTimes === 0) { cleanup(id); callback(); } else { const realId = raf(() => { callRef(leftTimes - 1); }); rafIds.set(id, realId); } } callRef(times); return id; } wrapperRaf.cancel = (id) => { const realId = rafIds.get(id); cleanup(realId); return caf(realId); }; const tuple = function() { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return args; }; const withInstall = (comp) => { const c2 = comp; c2.install = function(app) { app.component(c2.displayName || c2.name, comp); }; return comp; }; function eventType() { return { type: [Function, Array] }; } function objectType(defaultVal) { return { type: Object, default: defaultVal }; } function booleanType(defaultVal) { return { type: Boolean, default: defaultVal }; } function functionType(defaultVal) { return { type: Function, default: defaultVal }; } function anyType(defaultVal, required2) { const type2 = { validator: () => true, default: defaultVal }; return required2 ? type2 : type2; } function vNodeType() { return { validator: () => true }; } function arrayType(defaultVal) { return { type: Array, default: defaultVal }; } function stringType(defaultVal) { return { type: String, default: defaultVal }; } function someType(types2, defaultVal) { return types2 ? { type: types2, default: defaultVal } : anyType(defaultVal); } let supportsPassive = false; try { const opts = Object.defineProperty({}, "passive", { get() { supportsPassive = true; } }); window.addEventListener("testPassive", null, opts); window.removeEventListener("testPassive", null, opts); } catch (e2) { } const supportsPassive$1 = supportsPassive; function addEventListenerWrap(target, eventType2, cb, option) { if (target && target.addEventListener) { let opt = option; if (opt === void 0 && supportsPassive$1 && (eventType2 === "touchstart" || eventType2 === "touchmove" || eventType2 === "wheel")) { opt = { passive: false }; } target.addEventListener(eventType2, cb, opt); } return { remove: () => { if (target && target.removeEventListener) { target.removeEventListener(eventType2, cb); } } }; } const defaultIconPrefixCls = "anticon"; const GlobalFormContextKey = Symbol("GlobalFormContextKey"); const useProvideGlobalForm = (state) => { vue.provide(GlobalFormContextKey, state); }; const useInjectGlobalForm = () => { return vue.inject(GlobalFormContextKey, { validateMessages: vue.computed(() => void 0) }); }; const configProviderProps = () => ({ iconPrefixCls: String, getTargetContainer: { type: Function }, getPopupContainer: { type: Function }, prefixCls: String, getPrefixCls: { type: Function }, renderEmpty: { type: Function }, transformCellText: { type: Function }, csp: objectType(), input: objectType(), autoInsertSpaceInButton: { type: Boolean, default: void 0 }, locale: objectType(), pageHeader: objectType(), componentSize: { type: String }, componentDisabled: { type: Boolean, default: void 0 }, direction: { type: String, default: "ltr" }, space: objectType(), virtual: { type: Boolean, default: void 0 }, dropdownMatchSelectWidth: { type: [Number, Boolean], default: true }, form: objectType(), pagination: objectType(), theme: objectType(), select: objectType(), wave: objectType() }); const configProviderKey = Symbol("configProvider"); const defaultConfigProvider = { getPrefixCls: (suffixCls, customizePrefixCls) => { if (customizePrefixCls) return customizePrefixCls; return suffixCls ? `ant-${suffixCls}` : "ant"; }, iconPrefixCls: vue.computed(() => defaultIconPrefixCls), getPopupContainer: vue.computed(() => () => document.body), direction: vue.computed(() => "ltr") }; const useConfigContextInject = () => { return vue.inject(configProviderKey, defaultConfigProvider); }; const useConfigContextProvider = (props2) => { return vue.provide(configProviderKey, props2); }; const DisabledContextKey = Symbol("DisabledContextKey"); const useInjectDisabled = () => { return vue.inject(DisabledContextKey, vue.ref(void 0)); }; const useProviderDisabled = (disabled) => { const parentDisabled = useInjectDisabled(); vue.provide(DisabledContextKey, vue.computed(() => { var _a; return (_a = disabled.value) !== null && _a !== void 0 ? _a : parentDisabled.value; })); return disabled; }; const enUS$1 = { // Options.jsx items_per_page: "/ page", jump_to: "Go to", jump_to_confirm: "confirm", page: "", // Pagination.jsx prev_page: "Previous Page", next_page: "Next Page", prev_5: "Previous 5 Pages", next_5: "Next 5 Pages", prev_3: "Previous 3 Pages", next_3: "Next 3 Pages" }; const locale$3 = { locale: "en_US", today: "Today", now: "Now", backToToday: "Back to today", ok: "Ok", clear: "Clear", month: "Month", year: "Year", timeSelect: "select time", dateSelect: "select date", weekSelect: "Choose a week", monthSelect: "Choose a month", yearSelect: "Choose a year", decadeSelect: "Choose a decade", yearFormat: "YYYY", dateFormat: "M/D/YYYY", dayFormat: "D", dateTimeFormat: "M/D/YYYY HH:mm:ss", monthBeforeYear: true, previousMonth: "Previous month (PageUp)", nextMonth: "Next month (PageDown)", previousYear: "Last year (Control + left)", nextYear: "Next year (Control + right)", previousDecade: "Last decade", nextDecade: "Next decade", previousCentury: "Last century", nextCentury: "Next century" }; const CalendarLocale = locale$3; const locale$2 = { placeholder: "Select time", rangePlaceholder: ["Start time", "End time"] }; const TimePicker = locale$2; const locale$1 = { lang: _extends$1({ placeholder: "Select date", yearPlaceholder: "Select year", quarterPlaceholder: "Select quarter", monthPlaceholder: "Select month", weekPlaceholder: "Select week", rangePlaceholder: ["Start date", "End date"], rangeYearPlaceholder: ["Start year", "End year"], rangeQuarterPlaceholder: ["Start quarter", "End quarter"], rangeMonthPlaceholder: ["Start month", "End month"], rangeWeekPlaceholder: ["Start week", "End week"] }, CalendarLocale), timePickerLocale: _extends$1({}, TimePicker) }; const enUS = locale$1; const typeTemplate$1 = "${label} is not a valid ${type}"; const localeValues = { locale: "en", Pagination: enUS$1, DatePicker: enUS, TimePicker, Calendar: enUS, global: { placeholder: "Please select" }, Table: { filterTitle: "Filter menu", filterConfirm: "OK", filterReset: "Reset", filterEmptyText: "No filters", filterCheckall: "Select all items", filterSearchPlaceholder: "Search in filters", emptyText: "No data", selectAll: "Select current page", selectInvert: "Invert current page", selectNone: "Clear all data", selectionAll: "Select all data", sortTitle: "Sort", expand: "Expand row", collapse: "Collapse row", triggerDesc: "Click to sort descending", triggerAsc: "Click to sort ascending", cancelSort: "Click to cancel sorting" }, Tour: { Next: "Next", Previous: "Previous", Finish: "Finish" }, Modal: { okText: "OK", cancelText: "Cancel", justOkText: "OK" }, Popconfirm: { okText: "OK", cancelText: "Cancel" }, Transfer: { titles: ["", ""], searchPlaceholder: "Search here", itemUnit: "item", itemsUnit: "items", remove: "Remove", selectCurrent: "Select current page", removeCurrent: "Remove current page", selectAll: "Select all data", removeAll: "Remove all data", selectInvert: "Invert current page" }, Upload: { uploading: "Uploading...", removeFile: "Remove file", uploadError: "Upload error", previewFile: "Preview file", downloadFile: "Download file" }, Empty: { description: "No data" }, Icon: { icon: "icon" }, Text: { edit: "Edit", copy: "Copy", copied: "Copied", expand: "Expand" }, PageHeader: { back: "Back" }, Form: { optional: "(optional)", defaultValidateMessages: { default: "Field validation error for ${label}", required: "Please enter ${label}", enum: "${label} must be one of [${enum}]", whitespace: "${label} cannot be a blank character", date: { format: "${label} date format is invalid", parse: "${label} cannot be converted to a date", invalid: "${label} is an invalid date" }, types: { string: typeTemplate$1, method: typeTemplate$1, array: typeTemplate$1, object: typeTemplate$1, number: typeTemplate$1, date: typeTemplate$1, boolean: typeTemplate$1, integer: typeTemplate$1, float: typeTemplate$1, regexp: typeTemplate$1, email: typeTemplate$1, url: typeTemplate$1, hex: typeTemplate$1 }, string: { len: "${label} must be ${len} characters", min: "${label} must be at least ${min} characters", max: "${label} must be up to ${max} characters", range: "${label} must be between ${min}-${max} characters" }, number: { len: "${label} must be equal to ${len}", min: "${label} must be minimum ${min}", max: "${label} must be maximum ${max}", range: "${label} must be between ${min}-${max}" }, array: { len: "Must be ${len} ${label}", min: "At least ${min} ${label}", max: "At most ${max} ${label}", range: "The amount of ${label} must be between ${min}-${max}" }, pattern: { mismatch: "${label} does not match the pattern ${pattern}" } } }, Image: { preview: "Preview" }, QRCode: { expired: "QR code expired", refresh: "Refresh" } }; const defaultLocale = localeValues; const LocaleReceiver = vue.defineComponent({ compatConfig: { MODE: 3 }, name: "LocaleReceiver", props: { componentName: String, defaultLocale: { type: [Object, Function] }, children: { type: Function } }, setup(props2, _ref) { let { slots } = _ref; const localeData = vue.inject("localeData", {}); const locale2 = vue.computed(() => { const { componentName = "global", defaultLocale: defaultLocale$1 } = props2; const locale3 = defaultLocale$1 || defaultLocale[componentName || "global"]; const { antLocale } = localeData; const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}; return _extends$1(_extends$1({}, typeof locale3 === "function" ? locale3() : locale3), localeFromContext || {}); }); const localeCode = vue.computed(() => { const { antLocale } = localeData; const localeCode2 = antLocale && antLocale.locale; if (antLocale && antLocale.exist && !localeCode2) { return defaultLocale.locale; } return localeCode2; }); return () => { const children = props2.children || slots.default; const { antLocale } = localeData; return children === null || children === void 0 ? void 0 : children(locale2.value, localeCode.value, antLocale); }; } }); function useLocaleReceiver(componentName, defaultLocale$1, propsLocale) { const localeData = vue.inject("localeData", {}); const componentLocale = vue.computed(() => { const { antLocale } = localeData; const locale2 = vue.unref(defaultLocale$1) || defaultLocale[componentName || "global"]; const localeFromContext = componentName && antLocale ? antLocale[componentName] : {}; return _extends$1(_extends$1(_extends$1({}, typeof locale2 === "function" ? locale2() : locale2), localeFromContext || {}), vue.unref(propsLocale) || {}); }); return [componentLocale]; } function murmur2(str) { var h2 = 0; var k2, i2 = 0, len = str.length; for (; len >= 4; ++i2, len -= 4) { k2 = str.charCodeAt(i2) & 255 | (str.charCodeAt(++i2) & 255) << 8 | (str.charCodeAt(++i2) & 255) << 16 | (str.charCodeAt(++i2) & 255) << 24; k2 = /* Math.imul(k, m): */ (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16); k2 ^= /* k >>> r: */ k2 >>> 24; h2 = /* Math.imul(k, m): */ (k2 & 65535) * 1540483477 + ((k2 >>> 16) * 59797 << 16) ^ /* Math.imul(h, m): */ (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); } switch (len) { case 3: h2 ^= (str.charCodeAt(i2 + 2) & 255) << 16; case 2: h2 ^= (str.charCodeAt(i2 + 1) & 255) << 8; case 1: h2 ^= str.charCodeAt(i2) & 255; h2 = /* Math.imul(h, m): */ (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); } h2 ^= h2 >>> 13; h2 = /* Math.imul(h, m): */ (h2 & 65535) * 1540483477 + ((h2 >>> 16) * 59797 << 16); return ((h2 ^ h2 >>> 15) >>> 0).toString(36); } const SPLIT = "%"; class Entity { constructor(instanceId) { this.cache = /* @__PURE__ */ new Map(); this.instanceId = instanceId; } get(keys2) { return this.cache.get(Array.isArray(keys2) ? keys2.join(SPLIT) : keys2) || null; } update(keys2, valueFn) { const path2 = Array.isArray(keys2) ? keys2.join(SPLIT) : keys2; const prevValue = this.cache.get(path2); const nextValue = valueFn(prevValue); if (nextValue === null) { this.cache.delete(path2); } else { this.cache.set(path2, nextValue); } } } const CacheEntity = Entity; const ATTR_TOKEN = "data-token-hash"; const ATTR_MARK = "data-css-hash"; const CSS_IN_JS_INSTANCE = "__cssinjs_instance__"; function createCache() { const cssinjsInstanceId = Math.random().toString(12).slice(2); if (typeof document !== "undefined" && document.head && document.body) { const styles = document.body.querySelectorAll(`style[${ATTR_MARK}]`) || []; const { firstChild } = document.head; Array.from(styles).forEach((style2) => { style2[CSS_IN_JS_INSTANCE] = style2[CSS_IN_JS_INSTANCE] || cssinjsInstanceId; if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { document.head.insertBefore(style2, firstChild); } }); const styleHash = {}; Array.from(document.querySelectorAll(`style[${ATTR_MARK}]`)).forEach((style2) => { var _a; const hash = style2.getAttribute(ATTR_MARK); if (styleHash[hash]) { if (style2[CSS_IN_JS_INSTANCE] === cssinjsInstanceId) { (_a = style2.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(style2); } } else { styleHash[hash] = true; } }); } return new CacheEntity(cssinjsInstanceId); } const StyleContextKey = Symbol("StyleContextKey"); const getCache = () => { var _a, _b, _c; const instance = vue.getCurrentInstance(); let cache; if (instance && instance.appContext) { const globalCache = (_c = (_b = (_a = instance.appContext) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.globalProperties) === null || _c === void 0 ? void 0 : _c.__ANTDV_CSSINJS_CACHE__; if (globalCache) { cache = globalCache; } else { cache = createCache(); if (instance.appContext.config.globalProperties) { instance.appContext.config.globalProperties.__ANTDV_CSSINJS_CACHE__ = cache; } } } else { cache = createCache(); } return cache; }; const defaultStyleContext = { cache: createCache(), defaultCache: true, hashPriority: "low" }; const useStyleInject = () => { const cache = getCache(); return vue.inject(StyleContextKey, vue.shallowRef(_extends$1(_extends$1({}, defaultStyleContext), { cache }))); }; const useStyleProvider = (props2) => { const parentContext = useStyleInject(); const context2 = vue.shallowRef(_extends$1(_extends$1({}, defaultStyleContext), { cache: createCache() })); vue.watch([() => vue.unref(props2), parentContext], () => { const mergedContext = _extends$1({}, parentContext.value); const propsValue = vue.unref(props2); Object.keys(propsValue).forEach((key2) => { const value = propsValue[key2]; if (propsValue[key2] !== void 0) { mergedContext[key2] = value; } }); const { cache } = propsValue; mergedContext.cache = mergedContext.cache || createCache(); mergedContext.defaultCache = !cache && parentContext.value.defaultCache; context2.value = mergedContext; }, { immediate: true }); vue.provide(StyleContextKey, context2); return context2; }; const styleProviderProps = () => ({ autoClear: booleanType(), /** @private Test only. Not work in production. */ mock: stringType(), /** * Only set when you need ssr to extract style on you own. * If not provided, it will auto create