nhanh-pure-function 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,4 +79,7 @@ export declare const FILE_EXTENSIONS: {
79
79
  logs: string[];
80
80
  script: string[];
81
81
  };
82
- export declare const UNIT_LABELS: string[];
82
+ export type FileType = keyof typeof FILE_EXTENSIONS;
83
+ export declare const UNIT_LABELS: readonly ["", "万", "亿", "兆", "京", "垓", "秭", "穰", "沟", "涧", "正", "载", "极"];
84
+ export declare const WINDOW_TARGET: readonly ["_self", "_blank", "_parent", "_top"];
85
+ export type WindowTarget = (typeof WINDOW_TARGET)[number];
@@ -65,3 +65,19 @@ export declare function _Fullscreen(content: HTMLElement): () => void;
65
65
  * @returns 对应的单位为px的宽
66
66
  */
67
67
  export declare function _GetOtherSizeInPixels(width: string, target?: HTMLElement): number;
68
+ /**
69
+ * 根据给定的宽高比和目标元素或尺寸,计算画布的尺寸
70
+ * 此函数旨在适应不同场景下,如何根据宽高比约束,计算出适合的画布大小
71
+ *
72
+ * @param aspectRatio 宽高比,表示期望的画布宽度与高度的比例
73
+ * @param target 目标元素或尺寸,可以是DOM元素、选择器字符串或尺寸数组
74
+ * @returns 返回计算后的画布尺寸,格式为[宽度, 高度]
75
+ */
76
+ export declare function _CalculateCanvasSize(aspectRatio: number, target: Element | string | [number, number]): number[] | undefined;
77
+ /**
78
+ * 异步加载图片,并返回图片对象及其宽高比
79
+ * @param src 图片的URL地址
80
+ * @param timeout 超时时间,单位为毫秒,默认为5000ms
81
+ * @returns 一个Promise对象,包含加载的图片对象及其宽高比
82
+ */
83
+ export declare function _LoadImage(src: string, timeout?: number): Promise<[HTMLImageElement, number]>;
@@ -1,4 +1,4 @@
1
- import { FILE_EXTENSIONS } from '../Constant';
1
+ import { FileType, WindowTarget } from '../Constant';
2
2
  /**
3
3
  * 非null | undefined判断
4
4
  * @param value any
@@ -92,12 +92,6 @@ export declare function _ConvertToCamelCase(str: string, isRemoveDelimiter?: boo
92
92
  * @param {BlobPropertyBag} options Blob 配置
93
93
  */
94
94
  export declare function _CreateAndDownloadFile(content: BlobPart[], fileName: string, options?: BlobPropertyBag): void;
95
- /**
96
- * 获取url参数
97
- * @param {string} url
98
- * @returns {Object}
99
- */
100
- export declare function _GetQueryParams(url: string): Record<string, string>;
101
95
  /**
102
96
  * 生成一个UUID(通用唯一标识符)字符串
103
97
  * 可以选择性地在UUID前面添加前缀
@@ -182,13 +176,13 @@ export declare function _CheckConnectionWithXHR(url: string): Promise<unknown>;
182
176
  * @returns {boolean} - 如果URL指向安全上下文,则返回true;否则返回false
183
177
  */
184
178
  export declare function _IsSecureContext(url: string): boolean;
185
- type FileType = keyof typeof FILE_EXTENSIONS;
186
179
  /**
187
180
  * 文件类型检查器类
188
181
  * 用于检查文件URL的类型
189
182
  */
190
183
  export declare class _FileTypeChecker {
191
- static cachedEntries: [FileType, string[]][];
184
+ private static cachedEntries;
185
+ constructor();
192
186
  /**
193
187
  * 检查给定URL的文件类型
194
188
  * @param {string} url - 文件的URL
@@ -257,4 +251,54 @@ export declare function _RotateList<T>(list: T[]): T[][];
257
251
  * @returns {any} - 克隆后的值
258
252
  */
259
253
  export declare function _Clone<T>(val: T): T | {} | undefined;
260
- export {};
254
+ /**
255
+ * 管理通过键值对打开的窗口
256
+ */
257
+ export declare class _KeyedWindowManager {
258
+ private static keys;
259
+ /**
260
+ * 构造函数
261
+ * @throws 如果尝试实例化该类,则抛出错误,因为应该使用静态方法
262
+ */
263
+ constructor();
264
+ /**
265
+ * 根据键打开或聚焦窗口
266
+ * @param key 窗口的唯一键
267
+ * @param url 要打开的URL
268
+ * @param target 窗口的目标
269
+ * @param windowFeatures 新窗口的特性
270
+ * @returns 返回已打开或新打开的窗口
271
+ */
272
+ static open(key: string, url?: string, target?: WindowTarget, windowFeatures?: string): Window | undefined;
273
+ /**
274
+ * 关闭与指定键关联的窗口
275
+ * @param key 窗口的唯一键
276
+ */
277
+ static close(key: string): void;
278
+ /**
279
+ * 检查指定键的窗口是否打开
280
+ * @param key 窗口的唯一键
281
+ * @returns 如果窗口打开则返回true,否则返回false
282
+ */
283
+ static isOpen(key: string): boolean;
284
+ /**
285
+ * 获取与指定键关联的窗口
286
+ * @param key 窗口的唯一键
287
+ * @returns 返回对应的窗口,如果窗口已关闭则返回undefined
288
+ */
289
+ static getWindow(key: string): Window | undefined;
290
+ /**
291
+ * 关闭所有打开的窗口并清空Map
292
+ */
293
+ static closeAll(): void;
294
+ }
295
+ /**
296
+ * 将不同格式的数据转换为图像 URL
297
+ * 此函数支持多种类型的数据输入,包括字符串(Base64/Data URL)、ArrayBuffer、Uint8Array和File,
298
+ * 并尝试将这些数据转换为指定MIME类型的图像URL
299
+ *
300
+ * @param data - 输入数据,可以是字符串(Base64/Data URL)、ArrayBuffer、Uint8Array或File实例
301
+ * @param mimeType - 期望的图像MIME类型,默认为'image/png'
302
+ * @returns 成功时返回图像的URL,失败时返回null
303
+ */
304
+ export declare function _Danger_ConvertDataToImageUrl(data: string | ArrayBuffer | Uint8Array | File, mimeType?: string): string | null;
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".nhanh-pure-function{--nhanh: 2233}.no-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
2
- "use strict";var Z=Object.defineProperty;var A=n=>{throw TypeError(n)};var K=(n,t,e)=>t in n?Z(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var Y=(n,t,e)=>K(n,typeof t!="symbol"?t+"":t,e),$=(n,t,e)=>t.has(n)||A("Cannot "+e);var s=(n,t,e)=>($(n,t,"read from private field"),e?e.call(n):t.get(n)),d=(n,t,e)=>t.has(n)?A("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,e),l=(n,t,e,o)=>($(n,t,"write to private field"),o?o.call(n,e):t.set(n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const J={".mp3":"audio/mpeg",".mp4":"video/mp4",".m4a":"audio/mp4",".aac":"audio/aac",".ogg":"audio/ogg",".wav":"audio/wav",".flac":"audio/flac",".opus":"audio/opus",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".wmv":"video/x-ms-wmv",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".bmp":"image/bmp",".tiff":"image/tiff",".ico":"image/vnd.microsoft.icon",".svg":"image/svg+xml",".webp":"image/webp",".heif":"image/heif",".heic":"image/heic",".json":"application/json",".xml":"application/xml",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".ts":"application/typescript",".csv":"text/csv",".tsv":"text/tab-separated-values",".txt":"text/plain",".md":"text/markdown",".rtf":"application/rtf",".pdf":"application/pdf",".zip":"application/zip",".rar":"application/x-rar-compressed",".tar":"application/x-tar",".gz":"application/gzip",".7z":"application/x-7z-compressed",".exe":"application/x-msdownload",".apk":"application/vnd.android.package-archive",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".odt":"application/vnd.oasis.opendocument.text",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odp":"application/vnd.oasis.opendocument.presentation",".jsonld":"application/ld+json",".yaml":"application/x-yaml",".yml":"application/x-yaml",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject",".map":"application/json"},N={image:[".jpg",".jpeg",".png",".gif",".bmp",".webp",".tiff",".svg",".heif",".heic",".ico",".raw",".jfif",".avif",".png8",".indd",".eps",".ai"],ppt:[".ppt",".pptx",".odp"],word:[".doc",".docx",".odt",".rtf"],excel:[".xls",".xlsx",".ods",".csv",".tsv"],pdf:[".pdf"],text:[".txt",".csv",".md",".json",".yaml",".yml",".log",".ini",".rtf"],audio:[".mp3",".wav",".ogg",".flac",".aac",".wma",".m4a",".alac",".ape",".opus",".amr",".ra",".mid",".midi",".aiff",".pcm",".au",".wavpack",".spx"],video:[".mp4",".avi",".mkv",".mov",".wmv",".flv",".webm",".mpg",".mpeg",".3gp",".vob",".ogv",".m4v",".ts",".rm",".rmvb",".m2ts",".divx",".xvid",".swf",".f4v"],archive:[".zip",".rar",".tar",".gz",".bz2",".xz",".7z",".tar.gz",".tar.bz2",".tar.xz",".tar.lz",".tar.lzma",".cab",".iso",".dmg",".tgz",".apk",".gz2",".tar.zst"],code:[".js",".ts",".py",".java",".cpp",".c",".html",".css",".scss",".less",".sass",".php",".rb",".go",".swift",".rs",".kt",".scala",".lua",".pl",".m",".h",".xml",".json",".yaml",".yml",".toml",".vue",".ejs",".handlebars",".jinja",".dart"],font:[".woff",".woff2",".ttf",".otf",".eot",".svg",".ttc",".fnt",".fon",".otc"],database:[".sql",".sqlite",".db",".mdb",".accdb",".jsonld",".xml",".csv"],markup:[".html",".htm",".xhtml",".xml",".json",".yaml",".yml"],configuration:[".ini",".conf",".cfg",".env",".properties",".json",".toml"],logs:[".log",".err",".trace",".out"],script:[".bash",".sh",".zsh",".bat",".ps1",".vbs",".cmd",".sed",".awk",".php"]},W=["","万","亿","兆","京","垓","秭","穰","沟","涧","正","载","极"];function ee(n){return n!=null}function te(n){return!(n===null||typeof n!="object"||Array.isArray(n))}function ne(n){if(typeof n!="function")return console.error("非函数:",n);const t=function(e){e.didTimeout||e.timeRemaining()<=0?requestIdleCallback(t):n()};requestIdleCallback(t)}function oe(n,t){const e=+new Date;return new Promise((o,i)=>{const r=()=>{if(+new Date-e>=t)return i("超时");if(n())return o("完成");requestIdleCallback(r)};r()})}function ie(n,t,e=","){const o=new RegExp(`(^|${e})${t}(${e}|$)`,"g");return n.replace(o,function(i,r,a){return r===a?e:""})}function re(n){return n.charAt(0).toUpperCase()+n.slice(1)}function z(n,t,e=[],o=+new Date){if(o<+new Date-300){console.error("_MergeObjects 合并异常:疑似死循环");return}const i=c=>Array.isArray(c)?"array":typeof c,r=i(n),a=i(t);if(r!=a)return t;if(r=="object"||r=="array"){if(e.some(([c,m])=>c==n&&m==t))return n;if(e.push([n,t]),r=="object"){for(const c in t)if(Object.prototype.hasOwnProperty.call(t,c)){const m=t[c],u=n[c],p=z(u,m,e,o);n[c]=p}return n}else if(r=="array")return t.forEach((c,m)=>{const u=c,p=n[m],f=z(p,u,e,o);n[m]=f}),n}else return t}function se(n,t="YYYY-MM-DD hh:mm:ss",e=!0){const o=new Date(n);if(isNaN(o.getTime()))return console.error("Invalid date"),"";const i={YYYY:r=>r.getFullYear(),MM:r=>r.getMonth()+1,DD:r=>r.getDate(),hh:r=>r.getHours(),mm:r=>r.getMinutes(),ss:r=>r.getSeconds(),ms:r=>r.getMilliseconds()};return t.replace(/YYYY|MM|DD|hh|mm|ss|ms/g,r=>{const a=i[r](o);return e?String(a).padStart(2,"0"):String(a)})}function ae(n){return new Promise((t,e)=>{fetch(n).then(o=>t(o.text())).catch(o=>{console.error("Error fetching :",o),e(o)})})}function O(n,t="file"){if(!n||(n=String(n).trim(),n===""))return t;const e=n.split("/");return e[e.length-1].split("?")[0]}function ce(n,t){return new Promise((e,o)=>{try{t=t||O(n,"downloaded_file"),fetch(n).then(i=>(i.ok||o(`文件下载失败,状态码: ${i.status}`),i.blob())).then(i=>{const r=URL.createObjectURL(i),a=document.createElement("a");a.href=r,a.download=decodeURIComponent(t),document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(r),e(i)}).catch(o)}catch(i){o(i)}})}function le(n,t=10){let e=0,o=t;function i(){if(o>0)o--,requestAnimationFrame(i);else{const a=(+new Date-e)/t,c=1e3/a;n(Number(c.toFixed(2)),Number(a.toFixed(2)))}}requestAnimationFrame(()=>{e=+new Date,i()})}function ue(n,t){return n=n.replace(/([^a-zA-Z][a-z])/g,e=>e.toUpperCase()),t?n.replace(/[^a-zA-Z]+/g,""):n}function me(n,t,e){if(!e){let a=t.replace(/^[^.]+./,"");a=a==t?"text/plain":"application/"+a,e={type:a}}const o=new Blob(n,e),i=URL.createObjectURL(o),r=document.createElement("a");r.href=i,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}function de(n){const t=n.split("?")[1]||"",e=new URLSearchParams(t),o={};return e.forEach((i,r)=>{o[r]=i}),o}function pe(n=""){return n+"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function H(n,t){let e;return function(...o){clearTimeout(e),e=setTimeout(()=>{n(...o),e=void 0},t)}}function fe(n,t){let e=-1/0;return function(...o){const i=performance.now();if(i-e>t){e=i;try{n(...o)}catch(r){console.error("Throttled function execution failed:",r)}}}}function he(n){return Array.isArray(n)?"array":n===null?"null":typeof n}function ge(n){const t=()=>Promise.resolve(),e=c=>(console.error(c),Promise.reject(c));function o(){return navigator.clipboard.writeText(n).then(t).catch(e)}function i(){const c=document.createElement("div");c.innerText=n,document.body.appendChild(c);const m=document.createRange();m.selectNodeContents(c);const u=window.getSelection();let p=!1;return u&&(u.removeAllRanges(),u.addRange(m),p=document.execCommand("copy")),document.body.removeChild(c),p?Promise.resolve():Promise.reject()}function r(){const c=document.createElement("textarea");c.value=n,document.body.appendChild(c),c.select(),c.setSelectionRange(0,n.length);let m=!1;return document.activeElement===c&&(m=document.execCommand("Copy",!0)),document.body.removeChild(c),m?Promise.resolve():Promise.reject()}function a(){return i().then(t).catch(()=>{r().then(t).catch(()=>e("复制方式尽皆失效"))})}return navigator.clipboard?o().catch(a):a()}function xe(n,t){const e=t.split(".");return e.reduce((o,i,r)=>(i in o||(r===e.length-1?o[i]=void 0:o[i]={}),o[i]),n)}function be(n,t){const e=t.split(".");return e.reduce((o,i,r)=>o.hasOwnProperty(i)?o[i]:o[i]=r==e.length-1?void 0:{},n)}function ve(n,t,e){const o=t.split(".");return o.reduce((i,r,a)=>(a===o.length-1&&(i[r]=e),i[r]),n)}function we(n){return new Promise((t,e)=>{if(typeof n!="string"||n.trim()===""||!n.includes("://")){e(new Error("Invalid URL: Must be a non-empty string"));return}try{new XMLHttpRequest().open("HEAD",n,!0)}catch(r){e(new Error(`Invalid URL format: ${r.message}`));return}const o=new XMLHttpRequest;o.open("HEAD",n,!0);const i=r=>{e(new Error(`Request failed: ${r.type}`))};o.onreadystatechange=function(){o.readyState===XMLHttpRequest.DONE&&(o.status===0?e(new Error("Network error or CORS blocked")):o.status>=200&&o.status<300?t(!0):e(new Error(`HTTP Error: ${o.status}`)))},o.onerror=i,o.onabort=i,o.ontimeout=i;try{o.send()}catch(r){e(new Error(`Request send failed: ${r.message}`))}})}function ye(n){return["https:","wss:","ftps:","sftp:","smpts:","smtp+tls:","imap+tls:","pop3+tls:","rdp:","vpn:"].some(e=>n.startsWith(e))}const C=class C{static check(t,e){if(!t||typeof t!="string")return console.error("Invalid URL provided"),e?!1:"unknown";const o=O(t).toLowerCase();if(e){if(!N.hasOwnProperty(e))return console.error(`Unknown file type: ${e}`),"unknown";const i=N[e];return C._checkExtension(o,i)}return C._detectFileType(o)}static parseAddresses(t){return!t||typeof t!="string"?(console.error("Invalid URL provided"),[]):t.split(",").map(e=>{const o=O(e),i=this.check(e);return{url:e,name:o,type:i}})}static matchesMimeType(t,e){if(!e)return!0;if(typeof t!="string"||typeof e!="string")return!1;const o=C._normalizeType(t),i=e.split(",").map(c=>C._normalizeType(c.trim())),[r,a="*"]=o.split("/");return i.some(c=>{const[m,u="*"]=c.split("/");return(m==="*"||r==="*"||m===r)&&(u==="*"||a==="*"||u===a)})}static _normalizeType(t){return t.startsWith(".")&&!t.includes("/")?J[t.toLowerCase()]||t:t.includes("/")?t:`${t}/*`}static _checkExtension(t,e){return e.some(o=>t.endsWith(o))}static _detectFileType(t){for(const[e,o]of C.cachedEntries)if(o.some(i=>t.endsWith(i)))return e;return"unknown"}};Y(C,"cachedEntries",Object.entries(N));let q=C;function _e(n){return n.map((t,e)=>n.slice(e).concat(n.slice(0,e)))}function Ce(n){const t=window.structuredClone,e=o=>o===null||typeof o!="object"?o:z(Array.isArray(o)?[]:{},o);try{return t?t(n):e(n)}catch(o){return console.error("structuredClone error:",o),t&&e(n)}}function Ee(n){const t=H(n,100);let e=0,o=0;return function(i){const r=i.target;if(!r||!(r instanceof HTMLElement))return;const{scrollTop:a,scrollHeight:c,clientHeight:m,scrollLeft:u,scrollWidth:p,clientWidth:f}=r;function S(){if(e==a)return;const U=e>a;if(e=a,U)return;c-a-m<=1&&t("vertical")}function V(){if(o==u)return;const U=o>u;if(o=u,U)return;p-u-f<=1&&t("horizontal")}S(),V()}}function Fe(n,t,e){const{isClickAllowed:o,uiLibrary:i=["naiveUI","ElementPlus","Element"]}=e||{},r=function(m){const u=[];for(const p in m)Object.hasOwnProperty.call(m,p)&&i.includes(p)&&u.push(...m[p]);return u}({naiveUI:[".v-binder-follower-container",".n-image-preview-container",".n-modal-container"],ElementPlus:[".el-popper"],Element:[".el-popper"]});function a(){t(),document.removeEventListener("mousedown",c)}function c(m){if(o){const f=o(m);if(f)return;if(f===!1)return a()}const u=m.target;if(!(u instanceof HTMLElement)||!(u!=null&&u.closest("body")))return;n.concat(r).some(f=>!!(u!=null&&u.closest(f)))||a()}requestAnimationFrame(()=>document.addEventListener("mousedown",c))}var g,E,F,P,L,w,y,_,R;class Me{constructor(){d(this,g);d(this,E,!1);d(this,F,{});d(this,P,0);d(this,L,0);d(this,w,0);d(this,y,0);d(this,_);d(this,R)}init(t,e){l(this,g,t),l(this,_,e==null?void 0:e.limit),l(this,R,e==null?void 0:e.dragDom),l(this,F,{mousedown:this.mousedown.bind(this),mousemove:this.mousemove.bind(this),mouseup:this.mouseup.bind(this)}),this.bindOrUnbindEvent("bind")}finish(){this.bindOrUnbindEvent("unbind")}bindOrUnbindEvent(t){const e=t==="bind"?"addEventListener":"removeEventListener";if(!s(this,g))return console.error("No DOM");s(this,g)[e]("mousedown",s(this,F).mousedown),document[e]("mousemove",s(this,F).mousemove),document[e]("mouseup",s(this,F).mouseup)}alterLocation(){if(!s(this,g))return console.error("No DOM");s(this,_)&&(l(this,w,Math.min(s(this,w),s(this,_).max.top)),l(this,w,Math.max(s(this,w),s(this,_).min.top)),l(this,y,Math.min(s(this,y),s(this,_).max.left)),l(this,y,Math.max(s(this,y),s(this,_).min.left))),s(this,g).style.setProperty("--top",s(this,w)+"px"),s(this,g).style.setProperty("--left",s(this,y)+"px")}mousedown(t){if(!s(this,g))return console.error("No DOM");if(s(this,R)&&t.target!=s(this,R))return;document.body.classList.add("no-select"),l(this,E,!0);const e=s(this,g).getBoundingClientRect(),{pageX:o,pageY:i}=t;l(this,P,o),l(this,L,i),l(this,w,e.y),l(this,y,e.x)}mousemove(t){const{pageX:e,pageY:o}=t;s(this,E)&&(l(this,w,s(this,w)+(o-s(this,L))),l(this,y,s(this,y)+(e-s(this,P))),l(this,P,e),l(this,L,o),this.alterLocation())}mouseup(){s(this,E)&&(l(this,E,!1),document.body.classList.remove("no-select"))}}g=new WeakMap,E=new WeakMap,F=new WeakMap,P=new WeakMap,L=new WeakMap,w=new WeakMap,y=new WeakMap,_=new WeakMap,R=new WeakMap;var x,M,T,k,I,b,v,h,j,D;class Te{constructor(){d(this,x);d(this,M,!1);d(this,T,{});d(this,k,0);d(this,I,0);d(this,b,0);d(this,v,0);d(this,h);d(this,j);d(this,D)}init(t,e={}){l(this,x,t),l(this,h,e.limit),l(this,j,e.update_move),l(this,D,e.update_up),l(this,T,{mousedown:this.mousedown.bind(this),mousemove:this.mousemove.bind(this),mouseup:this.mouseup.bind(this)}),this.bindOrUnbindEvent("bind")}finish(){this.bindOrUnbindEvent("unbind")}bindOrUnbindEvent(t){const e=t==="bind"?"addEventListener":"removeEventListener";if(!s(this,x))return console.error("No DOM");s(this,x)[e]("mousedown",s(this,T).mousedown),document[e]("mousemove",s(this,T).mousemove),document[e]("mouseup",s(this,T).mouseup)}updateValue(){const t={top:s(this,b),left:s(this,v),percentage:{top:0,left:0}};if(s(this,h)){const e=o=>s(this,h)?(t[o]-s(this,h).min[o])/(s(this,h).max[o]-s(this,h).min[o]):0;t.percentage={top:e("top")||0,left:e("left")||0}}return t}alterLocation(){if(!s(this,x))return console.error("No DOM");s(this,h)&&(l(this,b,Math.min(s(this,b),s(this,h).max.top)),l(this,b,Math.max(s(this,b),s(this,h).min.top)),l(this,v,Math.min(s(this,v),s(this,h).max.left)),l(this,v,Math.max(s(this,v),s(this,h).min.left))),s(this,j)&&s(this,j).call(this,this.updateValue()),s(this,x).style.setProperty("--top",s(this,b)+"px"),s(this,x).style.setProperty("--left",s(this,v)+"px")}mousedown(t){if(!s(this,x))return console.error("No DOM");document.body.classList.add("no-select"),l(this,M,!0);const e=s(this,x).getBoundingClientRect();l(this,I,e.y),l(this,k,e.x);const{pageX:o,pageY:i}=t;l(this,b,i-s(this,I)),l(this,v,o-s(this,k)),this.alterLocation()}mousemove(t){const{pageX:e,pageY:o}=t;s(this,M)&&(l(this,b,o-s(this,I)),l(this,v,e-s(this,k)),this.alterLocation())}mouseup(){s(this,M)&&(l(this,M,!1),document.body.classList.remove("no-select"),s(this,D)&&s(this,D).call(this,this.updateValue()))}}x=new WeakMap,M=new WeakMap,T=new WeakMap,k=new WeakMap,I=new WeakMap,b=new WeakMap,v=new WeakMap,h=new WeakMap,j=new WeakMap,D=new WeakMap;function B(n){const t=n;if(n){if(n.requestFullscreen)return n.requestFullscreen();if(t.mozRequestFullScreen)return t.mozRequestFullScreen();if(t.webkitRequestFullscreen)return t.webkitRequestFullscreen();if(t.msRequestFullscreen)return t.msRequestFullscreen()}else return Promise.reject("No DOM");return Promise.reject("No Fullscreen API")}function X(){const n=document;return document.exitFullscreen?document.exitFullscreen():n.mozCancelFullScreen?n.mozCancelFullScreen():n.webkitExitFullscreen?n.webkitExitFullscreen():n.msExitFullscreen?n.msExitFullscreen():Promise.reject("No ExitFullscreen API")}function G(){const n=document;return document.fullscreenElement||n.webkitFullscreenElement||n.mozFullScreenElement||n.msFullscreenElement}function Pe(n){return function(){G()?X():B(n)}}function Le(n,t){if(typeof n=="number")return n;if(/px/.test(n))return Number(n.replace(/px/,""))||0;const e=document.createElement("div");e.style.width=n,t=t||document.body,t.appendChild(e);const o=e.getBoundingClientRect().width;return t.removeChild(e),o}function Re(n,t,e=2){return!Number.isFinite(n)||!Number.isFinite(t)||!Number.isFinite(e)?(console.error("所有参数必须是有限的数字"),""):t===0?(console.error("分母不能为零"),""):e<0?(console.error("小数位数不能为负数"),""):(n/t*100).toFixed(e)+"%"}function ke(n,t,e){return Math.abs(n-t)<=e}function Ie(n,t=500){let e;function o(i){e||(e=i);let r=Math.min((i-e)/t,1);n(r),i-e<t&&requestAnimationFrame(o)}requestAnimationFrame(o)}function je(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function De(n,t){const e={join:!0,suffix:"",decimalPlaces:2},{join:o,suffix:i,decimalPlaces:r}={...e,...t||{}},a=Number(n);if(isNaN(a))return o?`0${i}`:[0,i];const c=Math.abs(a),m=a>=0,u=Math.max(0,Math.floor(Math.log10(c)/4)),p=Math.pow(1e4,u),f=c/p,S=(m?1:-1)*parseFloat(f.toFixed(Math.max(0,r)));return o?`${S}${W[u]}${i}`:[S,W[u]+i]}function Se(n,t){let e=!1;const{x:o,y:i}=n,r=t.length;for(let a=0,c=r-1;a<r;c=a++){const m=t[a].x,u=t[a].y,p=t[c].x,f=t[c].y;u>i!=f>i&&o<(p-m)*(i-u)/(f-u)+m&&(e=!e)}return e}function ze(n){const t=["B","KB","MB","GB","TB","PB"];let e=0;for(;n>1024;)n/=1024,e++;return`${Math.round(n*100)/100} ${t[e]}`}exports._CapitalizeFirstLetter=re;exports._CheckConnectionWithXHR=we;exports._Clone=Ce;exports._CloseOnOutsideClick=Fe;exports._ConvertToCamelCase=ue;exports._ConvertToPercentage=Re;exports._CopyToClipboard=ge;exports._CreateAndDownloadFile=me;exports._DataType=he;exports._Debounce=H;exports._DownloadFile=ce;exports._Drag=Me;exports._EnterFullscreen=B;exports._ExcludeSubstring=ie;exports._ExecuteWhenIdle=ne;exports._ExitFullscreen=X;exports._FileTypeChecker=q;exports._FormatFileSize=ze;exports._FormatNumber=je;exports._FormatNumberWithUnit=De;exports._Fullscreen=Pe;exports._GenerateUUID=pe;exports._GetFrameRate=le;exports._GetHrefName=O;exports._GetOtherSizeInPixels=Le;exports._GetQueryParams=de;exports._GetTargetByPath=be;exports._InitTargetByPath=xe;exports._IsFullscreen=G;exports._IsObject=te;exports._IsPointInPolygon=Se;exports._IsSecureContext=ye;exports._IsWithinErrorMargin=ke;exports._LocalDrag=Te;exports._MergeObjects=z;exports._NotNull=ee;exports._ReadFile=ae;exports._RotateList=_e;exports._Schedule=Ie;exports._ScrollEndListener=Ee;exports._Throttle=fe;exports._TimeTransition=se;exports._UpdateTargetByPath=ve;exports._WaitForCondition=oe;
2
+ "use strict";var oe=Object.defineProperty;var G=n=>{throw TypeError(n)};var re=(n,t,e)=>t in n?oe(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var y=(n,t,e)=>re(n,typeof t!="symbol"?t+"":t,e),V=(n,t,e)=>t.has(n)||G("Cannot "+e);var c=(n,t,e)=>(V(n,t,"read from private field"),e?e.call(n):t.get(n)),d=(n,t,e)=>t.has(n)?G("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,e),l=(n,t,e,o)=>(V(n,t,"write to private field"),o?o.call(n,e):t.set(n,e),e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ie={".mp3":"audio/mpeg",".mp4":"video/mp4",".m4a":"audio/mp4",".aac":"audio/aac",".ogg":"audio/ogg",".wav":"audio/wav",".flac":"audio/flac",".opus":"audio/opus",".webm":"video/webm",".avi":"video/x-msvideo",".mov":"video/quicktime",".wmv":"video/x-ms-wmv",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".bmp":"image/bmp",".tiff":"image/tiff",".ico":"image/vnd.microsoft.icon",".svg":"image/svg+xml",".webp":"image/webp",".heif":"image/heif",".heic":"image/heic",".json":"application/json",".xml":"application/xml",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".ts":"application/typescript",".csv":"text/csv",".tsv":"text/tab-separated-values",".txt":"text/plain",".md":"text/markdown",".rtf":"application/rtf",".pdf":"application/pdf",".zip":"application/zip",".rar":"application/x-rar-compressed",".tar":"application/x-tar",".gz":"application/gzip",".7z":"application/x-7z-compressed",".exe":"application/x-msdownload",".apk":"application/vnd.android.package-archive",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xls":"application/vnd.ms-excel",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".ppt":"application/vnd.ms-powerpoint",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".odt":"application/vnd.oasis.opendocument.text",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odp":"application/vnd.oasis.opendocument.presentation",".jsonld":"application/ld+json",".yaml":"application/x-yaml",".yml":"application/x-yaml",".woff":"font/woff",".woff2":"font/woff2",".ttf":"font/ttf",".otf":"font/otf",".eot":"application/vnd.ms-fontobject",".map":"application/json"},Y={image:[".jpg",".jpeg",".png",".gif",".bmp",".webp",".tiff",".svg",".heif",".heic",".ico",".raw",".jfif",".avif",".png8",".indd",".eps",".ai"],ppt:[".ppt",".pptx",".odp"],word:[".doc",".docx",".odt",".rtf"],excel:[".xls",".xlsx",".ods",".csv",".tsv"],pdf:[".pdf"],text:[".txt",".csv",".md",".json",".yaml",".yml",".log",".ini",".rtf"],audio:[".mp3",".wav",".ogg",".flac",".aac",".wma",".m4a",".alac",".ape",".opus",".amr",".ra",".mid",".midi",".aiff",".pcm",".au",".wavpack",".spx"],video:[".mp4",".avi",".mkv",".mov",".wmv",".flv",".webm",".mpg",".mpeg",".3gp",".vob",".ogv",".m4v",".ts",".rm",".rmvb",".m2ts",".divx",".xvid",".swf",".f4v"],archive:[".zip",".rar",".tar",".gz",".bz2",".xz",".7z",".tar.gz",".tar.bz2",".tar.xz",".tar.lz",".tar.lzma",".cab",".iso",".dmg",".tgz",".apk",".gz2",".tar.zst"],code:[".js",".ts",".py",".java",".cpp",".c",".html",".css",".scss",".less",".sass",".php",".rb",".go",".swift",".rs",".kt",".scala",".lua",".pl",".m",".h",".xml",".json",".yaml",".yml",".toml",".vue",".ejs",".handlebars",".jinja",".dart"],font:[".woff",".woff2",".ttf",".otf",".eot",".svg",".ttc",".fnt",".fon",".otc"],database:[".sql",".sqlite",".db",".mdb",".accdb",".jsonld",".xml",".csv"],markup:[".html",".htm",".xhtml",".xml",".json",".yaml",".yml"],configuration:[".ini",".conf",".cfg",".env",".properties",".json",".toml"],logs:[".log",".err",".trace",".out"],script:[".bash",".sh",".zsh",".bat",".ps1",".vbs",".cmd",".sed",".awk",".php"]},Z=["","万","亿","兆","京","垓","秭","穰","沟","涧","正","载","极"];function se(n){return n!=null}function ce(n){return!(n===null||typeof n!="object"||Array.isArray(n))}function ae(n){if(typeof n!="function")return console.error("非函数:",n);const t=function(e){e.didTimeout||e.timeRemaining()<=0?requestIdleCallback(t):n()};requestIdleCallback(t)}function le(n,t){const e=+new Date;return new Promise((o,r)=>{const i=()=>{if(+new Date-e>=t)return r("超时");if(n())return o("完成");requestIdleCallback(i)};i()})}function ue(n,t,e=","){const o=new RegExp(`(^|${e})${t}(${e}|$)`,"g");return n.replace(o,function(r,i,s){return i===s?e:""})}function me(n){return n.charAt(0).toUpperCase()+n.slice(1)}function A(n,t,e=[],o=+new Date){if(o<+new Date-50){console.error("_MergeObjects 合并异常:疑似死循环");return}const r=W(n),i=W(t);if(r!=i)return t;if(r=="object"||r=="array"){if(e.some(([s,a])=>s==n&&a==t))return n;if(e.push([n,t]),r=="object"){for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){const a=t[s],m=n[s],u=A(m,a,e,o);n[s]=u}return n}else if(r=="array")return t.forEach((s,a)=>{const m=s,u=n[a],f=A(u,m,e,o);n[a]=f}),n}else return t}function de(n,t="YYYY-MM-DD hh:mm:ss",e=!0){const o=new Date(n);if(isNaN(o.getTime()))return console.error("Invalid date"),"";const r={YYYY:i=>i.getFullYear(),MM:i=>i.getMonth()+1,DD:i=>i.getDate(),hh:i=>i.getHours(),mm:i=>i.getMinutes(),ss:i=>i.getSeconds(),ms:i=>i.getMilliseconds()};return t.replace(/YYYY|MM|DD|hh|mm|ss|ms/g,i=>{const s=r[i](o);return e?String(s).padStart(2,"0"):String(s)})}function fe(n){return new Promise((t,e)=>{fetch(n).then(o=>t(o.text())).catch(o=>{console.error("Error fetching :",o),e(o)})})}function q(n,t="file"){if(!n||(n=String(n).trim(),n===""))return t;const e=n.split("/");return e[e.length-1].split("?")[0]}function he(n,t){return new Promise((e,o)=>{try{t=t||q(n,"downloaded_file"),fetch(n).then(r=>(r.ok||o(`文件下载失败,状态码: ${r.status}`),r.blob())).then(r=>{const i=URL.createObjectURL(r),s=document.createElement("a");s.href=i,s.download=decodeURIComponent(t),document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i),e(r)}).catch(o)}catch(r){o(r)}})}function pe(n,t=10){let e=0,o=t;function r(){if(o>0)o--,requestAnimationFrame(r);else{const s=(+new Date-e)/t,a=1e3/s;n(Number(a.toFixed(2)),Number(s.toFixed(2)))}}requestAnimationFrame(()=>{e=+new Date,r()})}function ge(n,t){return n=n.replace(/([^a-zA-Z][a-z])/g,e=>e.toUpperCase()),t?n.replace(/[^a-zA-Z]+/g,""):n}function we(n,t,e){if(!e){let s=t.replace(/^[^.]+./,"");s=s==t?"text/plain":"application/"+s,e={type:s}}const o=new Blob(n,e),r=URL.createObjectURL(o),i=document.createElement("a");i.href=r,i.download=t,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)}function ve(n=""){return n+"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const e=Math.random()*16|0;return(t==="x"?e:e&3|8).toString(16)})}function J(n,t){let e;return function(...o){clearTimeout(e),e=setTimeout(()=>{n(...o),e=void 0},t)}}function xe(n,t){let e=-1/0;return function(...o){const r=performance.now();if(r-e>t){e=r;try{n(...o)}catch(i){console.error("Throttled function execution failed:",i)}}}}function W(n){return Array.isArray(n)?"array":n===null?"null":typeof n}function be(n){const t=()=>Promise.resolve(),e=a=>(console.error(a),Promise.reject(a));function o(){return navigator.clipboard.writeText(n).then(t).catch(e)}function r(){const a=document.createElement("div");a.innerText=n,document.body.appendChild(a);const m=document.createRange();m.selectNodeContents(a);const u=window.getSelection();let f=!1;return u&&(u.removeAllRanges(),u.addRange(m),f=document.execCommand("copy")),document.body.removeChild(a),f?Promise.resolve():Promise.reject()}function i(){const a=document.createElement("textarea");a.value=n,document.body.appendChild(a),a.select(),a.setSelectionRange(0,n.length);let m=!1;return document.activeElement===a&&(m=document.execCommand("Copy",!0)),document.body.removeChild(a),m?Promise.resolve():Promise.reject()}function s(){return r().then(t).catch(()=>{i().then(t).catch(()=>e("复制方式尽皆失效"))})}return navigator.clipboard?o().catch(s):s()}function ye(n,t){const e=t.split(".");return e.reduce((o,r,i)=>(r in o||(i===e.length-1?o[r]=void 0:o[r]={}),o[r]),n)}function Ce(n,t){const e=t.split(".");return e.reduce((o,r,i)=>o.hasOwnProperty(r)?o[r]:o[r]=i==e.length-1?void 0:{},n)}function _e(n,t,e){const o=t.split(".");return o.reduce((r,i,s)=>(s===o.length-1&&(r[i]=e),r[i]),n)}function Ee(n){return new Promise((t,e)=>{if(typeof n!="string"||n.trim()===""||!n.includes("://")){e(new Error("Invalid URL: Must be a non-empty string"));return}try{new XMLHttpRequest().open("HEAD",n,!0)}catch(i){e(new Error(`Invalid URL format: ${i.message}`));return}const o=new XMLHttpRequest;o.open("HEAD",n,!0);const r=i=>{e(new Error(`Request failed: ${i.type}`))};o.onreadystatechange=function(){o.readyState===XMLHttpRequest.DONE&&(o.status===0?e(new Error("Network error or CORS blocked")):o.status>=200&&o.status<300?t(!0):e(new Error(`HTTP Error: ${o.status}`)))},o.onerror=r,o.onabort=r,o.ontimeout=r;try{o.send()}catch(i){e(new Error(`Request send failed: ${i.message}`))}})}function Fe(n){return["https:","wss:","ftps:","sftp:","smpts:","smtp+tls:","imap+tls:","pop3+tls:","rdp:","vpn:"].some(e=>n.startsWith(e))}const E=class E{constructor(){if(new.target===E)throw new Error("请直接使用静态方法,而不是实例化此类")}static check(t,e){if(!t||typeof t!="string")return console.error("Invalid URL provided"),e?!1:"unknown";const o=q(t).toLowerCase();if(e){if(!Y.hasOwnProperty(e))return console.error(`Unknown file type: ${e}`),"unknown";const r=Y[e];return E._checkExtension(o,r)}return E._detectFileType(o)}static parseAddresses(t){return!t||typeof t!="string"?(console.error("Invalid URL provided"),[]):t.split(",").map(e=>{const o=q(e),r=this.check(e);return{url:e,name:o,type:r}})}static matchesMimeType(t,e){if(!e)return!0;if(typeof t!="string"||typeof e!="string")return!1;const o=E._normalizeType(t),r=e.split(",").map(a=>E._normalizeType(a.trim())),[i,s="*"]=o.split("/");return r.some(a=>{const[m,u="*"]=a.split("/");return(m==="*"||i==="*"||m===i)&&(u==="*"||s==="*"||u===s)})}static _normalizeType(t){return t.startsWith(".")&&!t.includes("/")?ie[t.toLowerCase()]||t:t.includes("/")?t:`${t}/*`}static _checkExtension(t,e){return e.some(o=>t.endsWith(o))}static _detectFileType(t){for(const[e,o]of E.cachedEntries)if(o.some(r=>t.endsWith(r)))return e;return"unknown"}};y(E,"cachedEntries",Object.entries(Y));let H=E;function Te(n){return n.map((t,e)=>n.slice(e).concat(n.slice(0,e)))}function Le(n){const t=window.structuredClone,e=o=>o===null||typeof o!="object"?o:A(Array.isArray(o)?[]:{},o);try{return t?t(n):e(n)}catch(o){return console.error("structuredClone error:",o),t&&e(n)}}const B=class B{constructor(){if(new.target===B)throw new Error("请直接使用静态方法,而不是实例化此类")}static open(t,e,o,r){const i=this.keys.get(t);if(i&&!i.closed)return i.focus(),i;{const s=window.open(e,o,r);if(s)return this.keys.set(t,s),s.addEventListener("unload",()=>this.keys.delete(t)),s;console.error("window.open failed: 可能是浏览器阻止了弹出窗口"),this.keys.delete(t)}}static close(t){const e=this.keys.get(t);e&&!e.closed&&(e.close(),this.keys.delete(t))}static isOpen(t){const e=this.keys.get(t);return!!e&&!e.closed}static getWindow(t){const e=this.keys.get(t);if(e&&!e.closed)return e}static closeAll(){this.keys.forEach((t,e)=>{t.closed||t.close(),this.keys.delete(e)})}};y(B,"keys",new Map);let X=B;function Me(n,t="image/png"){try{let e,o=t;if(n instanceof File)return URL.createObjectURL(n);if(typeof n=="string"){let i=n;const s=i.match(/^data:([^;]*)(;base64)?,(.*)$/i);if(s){if(!s[2])throw new Error("无效的数据 URL:缺少 base64 编码声明");if(o=s[1]||o,i=s[3],!i)throw new Error("数据 URL 包含空有效负载")}i=i.replace(/[^A-Za-z0-9+/=]/g,"");const a=atob(i);e=new Uint8Array(a.length);for(let m=0;m<a.length;m++)e[m]=a.charCodeAt(m)}else if(n instanceof ArrayBuffer)e=new Uint8Array(n);else if(n instanceof Uint8Array)e=n;else throw new Error("不支持的数据类型。应为 Base64 字符串、ArrayBuffer 或 Uint8Array");const r=new Blob([e],{type:o});return URL.createObjectURL(r)}catch(e){return console.error("数据到 ImageURL 的转换失败:",e.message,e.stack||"没有可用的堆栈跟踪"),null}}function je(n){const t=J(n,100);let e=0,o=0;return function(r){const i=r.target;if(!i||!(i instanceof HTMLElement))return;const{scrollTop:s,scrollHeight:a,clientHeight:m,scrollLeft:u,scrollWidth:f,clientWidth:g}=i;function N(){if(e==s)return;const $=e>s;if(e=s,$)return;a-s-m<=1&&t("vertical")}function te(){if(o==u)return;const $=o>u;if(o=u,$)return;f-u-g<=1&&t("horizontal")}N(),te()}}function Re(n,t,e){const{isClickAllowed:o,uiLibrary:r=["naiveUI","ElementPlus","Element"]}=e||{},i=function(m){const u=[];for(const f in m)Object.hasOwnProperty.call(m,f)&&r.includes(f)&&u.push(...m[f]);return u}({naiveUI:[".v-binder-follower-container",".n-image-preview-container",".n-modal-container"],ElementPlus:[".el-popper"],Element:[".el-popper"]});function s(){t(),document.removeEventListener("mousedown",a)}function a(m){if(o){const g=o(m);if(g)return;if(g===!1)return s()}const u=m.target;if(!(u instanceof HTMLElement)||!(u!=null&&u.closest("body")))return;n.concat(i).some(g=>!!(u!=null&&u.closest(g)))||s()}requestAnimationFrame(()=>document.addEventListener("mousedown",a))}var w,T,L,k,U,C,_,F,I;class Pe{constructor(){d(this,w);d(this,T,!1);d(this,L,{});d(this,k,0);d(this,U,0);d(this,C,0);d(this,_,0);d(this,F);d(this,I)}init(t,e){l(this,w,t),l(this,F,e==null?void 0:e.limit),l(this,I,e==null?void 0:e.dragDom),l(this,L,{mousedown:this.mousedown.bind(this),mousemove:this.mousemove.bind(this),mouseup:this.mouseup.bind(this)}),this.bindOrUnbindEvent("bind")}finish(){this.bindOrUnbindEvent("unbind")}bindOrUnbindEvent(t){const e=t==="bind"?"addEventListener":"removeEventListener";if(!c(this,w))return console.error("No DOM");c(this,w)[e]("mousedown",c(this,L).mousedown),document[e]("mousemove",c(this,L).mousemove),document[e]("mouseup",c(this,L).mouseup)}alterLocation(){if(!c(this,w))return console.error("No DOM");c(this,F)&&(l(this,C,Math.min(c(this,C),c(this,F).max.top)),l(this,C,Math.max(c(this,C),c(this,F).min.top)),l(this,_,Math.min(c(this,_),c(this,F).max.left)),l(this,_,Math.max(c(this,_),c(this,F).min.left))),c(this,w).style.setProperty("--top",c(this,C)+"px"),c(this,w).style.setProperty("--left",c(this,_)+"px")}mousedown(t){if(!c(this,w))return console.error("No DOM");if(c(this,I)&&t.target!=c(this,I))return;document.body.classList.add("no-select"),l(this,T,!0);const e=c(this,w).getBoundingClientRect(),{pageX:o,pageY:r}=t;l(this,k,o),l(this,U,r),l(this,C,e.y),l(this,_,e.x)}mousemove(t){const{pageX:e,pageY:o}=t;c(this,T)&&(l(this,C,c(this,C)+(o-c(this,U))),l(this,_,c(this,_)+(e-c(this,k))),l(this,k,e),l(this,U,o),this.alterLocation())}mouseup(){c(this,T)&&(l(this,T,!1),document.body.classList.remove("no-select"))}}w=new WeakMap,T=new WeakMap,L=new WeakMap,k=new WeakMap,U=new WeakMap,C=new WeakMap,_=new WeakMap,F=new WeakMap,I=new WeakMap;var v,M,j,D,S,x,b,p,O,z;class ke{constructor(){d(this,v);d(this,M,!1);d(this,j,{});d(this,D,0);d(this,S,0);d(this,x,0);d(this,b,0);d(this,p);d(this,O);d(this,z)}init(t,e={}){l(this,v,t),l(this,p,e.limit),l(this,O,e.update_move),l(this,z,e.update_up),l(this,j,{mousedown:this.mousedown.bind(this),mousemove:this.mousemove.bind(this),mouseup:this.mouseup.bind(this)}),this.bindOrUnbindEvent("bind")}finish(){this.bindOrUnbindEvent("unbind")}bindOrUnbindEvent(t){const e=t==="bind"?"addEventListener":"removeEventListener";if(!c(this,v))return console.error("No DOM");c(this,v)[e]("mousedown",c(this,j).mousedown),document[e]("mousemove",c(this,j).mousemove),document[e]("mouseup",c(this,j).mouseup)}updateValue(){const t={top:c(this,x),left:c(this,b),percentage:{top:0,left:0}};if(c(this,p)){const e=o=>c(this,p)?(t[o]-c(this,p).min[o])/(c(this,p).max[o]-c(this,p).min[o]):0;t.percentage={top:e("top")||0,left:e("left")||0}}return t}alterLocation(){if(!c(this,v))return console.error("No DOM");c(this,p)&&(l(this,x,Math.min(c(this,x),c(this,p).max.top)),l(this,x,Math.max(c(this,x),c(this,p).min.top)),l(this,b,Math.min(c(this,b),c(this,p).max.left)),l(this,b,Math.max(c(this,b),c(this,p).min.left))),c(this,O)&&c(this,O).call(this,this.updateValue()),c(this,v).style.setProperty("--top",c(this,x)+"px"),c(this,v).style.setProperty("--left",c(this,b)+"px")}mousedown(t){if(!c(this,v))return console.error("No DOM");document.body.classList.add("no-select"),l(this,M,!0);const e=c(this,v).getBoundingClientRect();l(this,S,e.y),l(this,D,e.x);const{pageX:o,pageY:r}=t;l(this,x,r-c(this,S)),l(this,b,o-c(this,D)),this.alterLocation()}mousemove(t){const{pageX:e,pageY:o}=t;c(this,M)&&(l(this,x,o-c(this,S)),l(this,b,e-c(this,D)),this.alterLocation())}mouseup(){c(this,M)&&(l(this,M,!1),document.body.classList.remove("no-select"),c(this,z)&&c(this,z).call(this,this.updateValue()))}}v=new WeakMap,M=new WeakMap,j=new WeakMap,D=new WeakMap,S=new WeakMap,x=new WeakMap,b=new WeakMap,p=new WeakMap,O=new WeakMap,z=new WeakMap;function K(n){const t=n;if(n){if(n.requestFullscreen)return n.requestFullscreen();if(t.mozRequestFullScreen)return t.mozRequestFullScreen();if(t.webkitRequestFullscreen)return t.webkitRequestFullscreen();if(t.msRequestFullscreen)return t.msRequestFullscreen()}else return Promise.reject("No DOM");return Promise.reject("No Fullscreen API")}function Q(){const n=document;return document.exitFullscreen?document.exitFullscreen():n.mozCancelFullScreen?n.mozCancelFullScreen():n.webkitExitFullscreen?n.webkitExitFullscreen():n.msExitFullscreen?n.msExitFullscreen():Promise.reject("No ExitFullscreen API")}function ee(){const n=document;return document.fullscreenElement||n.webkitFullscreenElement||n.mozFullScreenElement||n.msFullscreenElement}function Ue(n){return function(){ee()?Q():K(n)}}function Ie(n,t){if(typeof n=="number")return n;if(/px/.test(n))return Number(n.replace(/px/,""))||0;const e=document.createElement("div");e.style.width=n,t=t||document.body,t.appendChild(e);const o=e.getBoundingClientRect().width;return t.removeChild(e),o}function De(n,t){if(!n)return;let e,o;if(typeof t=="string"){const i=document.querySelector(t);if(!i)return;const s=i.getBoundingClientRect();e=s.width,o=s.height}else if(Array.isArray(t))e=t[0],o=t[1];else{const i=t.getBoundingClientRect();e=i.width,o=i.height}const r=e/o;return r>n?[n*o,o]:r<n?[e,e/n]:[e,o]}function Se(n,t=5e3){return new Promise((e,o)=>{const r=new Image;r.src=n;const i=setTimeout(()=>{o(new Error("图片加载超时")),r.onload=null,r.onerror=null},t);r.onload=()=>{clearTimeout(i);const s=r.naturalWidth,a=r.naturalHeight,m=s/a;e([r,m])},r.onerror=()=>{clearTimeout(i),o(new Error("图片加载失败"))},r.crossOrigin="Anonymous"})}function Oe(n,t,e=2){return!Number.isFinite(n)||!Number.isFinite(t)||!Number.isFinite(e)?(console.error("所有参数必须是有限的数字"),""):t===0?(console.error("分母不能为零"),""):e<0?(console.error("小数位数不能为负数"),""):(n/t*100).toFixed(e)+"%"}function ze(n,t,e){return Math.abs(n-t)<=e}function Ne(n,t=500){let e;function o(r){e||(e=r);let i=Math.min((r-e)/t,1);n(i),r-e<t&&requestAnimationFrame(o)}requestAnimationFrame(o)}function Ae(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function qe(n,t){const e={join:!0,suffix:"",decimalPlaces:2},{join:o,suffix:r,decimalPlaces:i}={...e,...t||{}},s=Number(n);if(isNaN(s))return o?`0${r}`:[0,r];const a=Math.abs(s),m=s>=0,u=Math.max(0,Math.floor(Math.log10(a)/4)),f=Math.pow(1e4,u),g=a/f,N=(m?1:-1)*parseFloat(g.toFixed(Math.max(0,i)));return o?`${N}${Z[u]}${r}`:[N,Z[u]+r]}function Be(n,t){let e=!1;const{x:o,y:r}=n,i=t.length;for(let s=0,a=i-1;s<i;a=s++){const m=t[s].x,u=t[s].y,f=t[a].x,g=t[a].y;u>r!=g>r&&o<(f-m)*(r-u)/(g-u)+m&&(e=!e)}return e}function $e(n){const t=["B","KB","MB","GB","TB","PB"];let e=0;for(;n>1024;)n/=1024,e++;return`${Math.round(n*100)/100} ${t[e]}`}class P{constructor(t,e){y(this,"resolve");y(this,"reject");this.resolve=t,this.reject=e}run(t){var e,o;return t instanceof Promise?t.then(r=>{var i;return(i=this.resolve)==null||i.call(this),r}).catch(r=>{var i;return(i=this.reject)==null||i.call(this),Promise.reject(r)}):t?(e=this.resolve)==null||e.call(this):(o=this.reject)==null||o.call(this),t}}class Ye extends P{constructor(t){super(),this.resolve=t}warning(...t){const e=()=>{var o,r;return(r=(o=R.tips).warning)==null?void 0:r.call(o,...t)};return new P(this.resolve,e)}error(...t){const e=()=>{var o,r;return(r=(o=R.tips).error)==null?void 0:r.call(o,...t)};return new P(this.resolve,e)}}class We extends P{constructor(t){super(),this.reject=t}info(...t){const e=()=>{var o,r;return(r=(o=R.tips).info)==null?void 0:r.call(o,...t)};return new P(e,this.reject)}success(...t){const e=()=>{var o,r;return(r=(o=R.tips).success)==null?void 0:r.call(o,...t)};return new P(e,this.reject)}}const h=class h{constructor(){if(new.target===h)throw new Error("请直接使用静态方法,而不是实例化此类")}static register(t,e){if(typeof e!="function")return console.error("TipHandler must be a function");h.tips[t]=e}static resolveTip(t){return function(...e){const o=()=>{var r,i;return(i=(r=h.tips)[t])==null?void 0:i.call(r,...e)};return new Ye(o)}}static rejectTip(t){return function(...e){const o=()=>{var r,i;return(i=(r=h.tips)[t])==null?void 0:i.call(r,...e)};return new We(o)}}};y(h,"tips",{info:void 0,success:void 0,warning:void 0,error:void 0}),y(h,"info",h.resolveTip("info")),y(h,"success",h.resolveTip("success")),y(h,"warning",h.rejectTip("warning")),y(h,"error",h.rejectTip("error"));let R=h;exports._CalculateCanvasSize=De;exports._CapitalizeFirstLetter=me;exports._CheckConnectionWithXHR=Ee;exports._Clone=Le;exports._CloseOnOutsideClick=Re;exports._ConvertToCamelCase=ge;exports._ConvertToPercentage=Oe;exports._CopyToClipboard=be;exports._CreateAndDownloadFile=we;exports._Danger_ConvertDataToImageUrl=Me;exports._DataType=W;exports._Debounce=J;exports._DownloadFile=he;exports._Drag=Pe;exports._EnterFullscreen=K;exports._ExcludeSubstring=ue;exports._ExecuteWhenIdle=ae;exports._ExitFullscreen=Q;exports._FileTypeChecker=H;exports._FormatFileSize=$e;exports._FormatNumber=Ae;exports._FormatNumberWithUnit=qe;exports._Fullscreen=Ue;exports._GenerateUUID=ve;exports._GetFrameRate=pe;exports._GetHrefName=q;exports._GetOtherSizeInPixels=Ie;exports._GetTargetByPath=Ce;exports._InitTargetByPath=ye;exports._IsFullscreen=ee;exports._IsObject=ce;exports._IsPointInPolygon=Be;exports._IsSecureContext=Fe;exports._IsWithinErrorMargin=ze;exports._KeyedWindowManager=X;exports._LoadImage=Se;exports._LocalDrag=ke;exports._MergeObjects=A;exports._NotNull=se;exports._ReadFile=fe;exports._RotateList=Te;exports._Schedule=Ne;exports._ScrollEndListener=je;exports._Throttle=xe;exports._TimeTransition=de;exports._Tip=R;exports._UpdateTargetByPath=_e;exports._WaitForCondition=le;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,36 @@
1
1
  export * from './Utility';
2
2
  export * from './User';
3
3
  export * from './Math';
4
+ type TipHandler = ((...args: any[]) => void) | undefined;
5
+ type TipType = "info" | "success" | "warning" | "error";
6
+ declare class TipFlow {
7
+ protected resolve: TipHandler;
8
+ protected reject: TipHandler;
9
+ constructor(resolve?: TipHandler, reject?: TipHandler);
10
+ run<T>(value: T): T;
11
+ }
12
+ declare class ResolveTip extends TipFlow {
13
+ constructor(resolve: TipHandler);
14
+ warning(...args: any[]): TipFlow;
15
+ error(...args: any[]): TipFlow;
16
+ }
17
+ declare class RejectTip extends TipFlow {
18
+ constructor(reject: TipHandler);
19
+ info(...args: any[]): TipFlow;
20
+ success(...args: any[]): TipFlow;
21
+ }
22
+ export declare class _Tip {
23
+ static tips: Record<TipType, TipHandler>;
24
+ /**
25
+ * 构造函数
26
+ * @throws 如果尝试实例化该类,则抛出错误,因为应该使用静态方法
27
+ */
28
+ constructor();
29
+ static register(type: TipType, handler: TipHandler): void;
30
+ private static resolveTip;
31
+ static info: (...args: any[]) => ResolveTip;
32
+ static success: (...args: any[]) => ResolveTip;
33
+ private static rejectTip;
34
+ static warning: (...args: any[]) => RejectTip;
35
+ static error: (...args: any[]) => RejectTip;
36
+ }