@qy_better_lib/core 0.2.4 → 0.2.6

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.
package/DOCUMENTATION.md CHANGED
@@ -547,6 +547,8 @@
547
547
 
548
548
  ### 3. 日期时间工具 (date.ts)
549
549
 
550
+ > 注意:日期时间工具现在是可选依赖,需要单独导入
551
+
550
552
  #### format_date
551
553
  - **功能**: 格式化日期时间
552
554
  - **参数**:
@@ -555,7 +557,7 @@
555
557
  - **返回类型**: `string` - 格式化后的日期时间字符串
556
558
  - **示例**:
557
559
  ```typescript
558
- import { format_date } from '@qy_better_lib/core';
560
+ import { format_date } from '@qy_better_lib/core/date';
559
561
 
560
562
  format_date(new Date()); // 2023-12-31 23:59:59
561
563
  format_date(new Date(), 'YYYY-MM-DD'); // 2023-12-31
@@ -571,7 +573,7 @@
571
573
  - **返回类型**: `[string, string]` - [开始日期时间, 截止日期时间]
572
574
  - **示例**:
573
575
  ```typescript
574
- import { get_date_time_range } from '@qy_better_lib/core';
576
+ import { get_date_time_range } from '@qy_better_lib/core/date';
575
577
 
576
578
  // 获取昨天的时间范围
577
579
  const [start, end] = get_date_time_range('d', -1);
@@ -587,7 +589,7 @@
587
589
  - **返回类型**: `number` - 时间差
588
590
  - **示例**:
589
591
  ```typescript
590
- import { get_date_diff } from '@qy_better_lib/core';
592
+ import { get_date_diff } from '@qy_better_lib/core/date';
591
593
 
592
594
  const date1 = '2023-12-31';
593
595
  const date2 = '2023-12-25';
@@ -604,7 +606,7 @@
604
606
  - **返回类型**: `Date | string` - 增加后的日期或格式化后的字符串
605
607
  - **示例**:
606
608
  ```typescript
607
- import { add_date } from '@qy_better_lib/core';
609
+ import { add_date } from '@qy_better_lib/core/date';
608
610
 
609
611
  // 添加7天
610
612
  add_date(new Date(), 7, 'day'); // 7天后的日期对象
@@ -621,7 +623,7 @@
621
623
  - **返回类型**: `Date | string` - 减少后的日期或格式化后的字符串
622
624
  - **示例**:
623
625
  ```typescript
624
- import { subtract_date } from '@qy_better_lib/core';
626
+ import { subtract_date } from '@qy_better_lib/core/date';
625
627
 
626
628
  // 减去7天
627
629
  subtract_date(new Date(), 7, 'day'); // 7天前的日期对象
@@ -634,7 +636,7 @@
634
636
  - **返回类型**: `boolean` - 是否为工作日
635
637
  - **示例**:
636
638
  ```typescript
637
- import { is_weekday } from '@qy_better_lib/core';
639
+ import { is_weekday } from '@qy_better_lib/core/date';
638
640
 
639
641
  is_weekday('2023-12-31'); // true (周日)
640
642
  is_weekday('2024-01-01'); // false (周一)
@@ -646,7 +648,7 @@
646
648
  - **返回类型**: `boolean` - 是否为周末
647
649
  - **示例**:
648
650
  ```typescript
649
- import { is_weekend } from '@qy_better_lib/core';
651
+ import { is_weekend } from '@qy_better_lib/core/date';
650
652
 
651
653
  is_weekend('2023-12-30'); // true (周六)
652
654
  is_weekend('2023-12-29'); // false (周五)
@@ -658,7 +660,7 @@
658
660
  - **返回类型**: `string` - 相对时间描述
659
661
  - **示例**:
660
662
  ```typescript
661
- import { get_relative_time } from '@qy_better_lib/core';
663
+ import { get_relative_time } from '@qy_better_lib/core/date';
662
664
 
663
665
  // 假设当前时间是2023-12-31
664
666
  get_relative_time('2023-12-31 23:50:00'); // 刚刚
@@ -673,7 +675,7 @@
673
675
  - **返回类型**: `string` - 格式化后的时间差字符串
674
676
  - **示例**:
675
677
  ```typescript
676
- import { format_timestamp_diff } from '@qy_better_lib/core';
678
+ import { format_timestamp_diff } from '@qy_better_lib/core/date';
677
679
 
678
680
  // 1天2小时3分钟4秒
679
681
  const diff = 1 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000 + 3 * 60 * 1000 + 4 * 1000;
@@ -2055,7 +2057,7 @@
2055
2057
  - **返回类型**: `number` - 自适应后的尺寸
2056
2058
  - **示例**:
2057
2059
  ```typescript
2058
- import { auto_size } from '@qy_better_lib/core';
2060
+ import { auto_size } from '@qy_better_lib/core/echarts';
2059
2061
 
2060
2062
  const fontSize = auto_size(14); // 根据屏幕宽度自适应的字体大小
2061
2063
  ```
@@ -2069,7 +2071,7 @@
2069
2071
  - **返回类型**: `object` - 渐变配置对象
2070
2072
  - **示例**:
2071
2073
  ```typescript
2072
- import { get_chart_gradient_color } from '@qy_better_lib/core';
2074
+ import { get_chart_gradient_color } from '@qy_better_lib/core/echarts';
2073
2075
 
2074
2076
  const gradient = get_chart_gradient_color('v', '#ff0000', '#0000ff');
2075
2077
  ```
@@ -2084,7 +2086,7 @@
2084
2086
  - **返回类型**: `Promise<object>` - ECharts实例
2085
2087
  - **示例**:
2086
2088
  ```typescript
2087
- import { init_chart } from '@qy_better_lib/core';
2089
+ import { init_chart } from '@qy_better_lib/core/echarts';
2088
2090
 
2089
2091
  async function example() {
2090
2092
  // 使用默认主题
@@ -2117,7 +2119,7 @@
2117
2119
  - **返回类型**: `void`
2118
2120
  - **示例**:
2119
2121
  ```typescript
2120
- import { destroy_chart } from '@qy_better_lib/core';
2122
+ import { destroy_chart } from '@qy_better_lib/core/echarts';
2121
2123
 
2122
2124
  destroy_chart(chart);
2123
2125
  ```
@@ -2130,7 +2132,7 @@
2130
2132
  - **返回类型**: `void`
2131
2133
  - **示例**:
2132
2134
  ```typescript
2133
- import { update_chart } from '@qy_better_lib/core';
2135
+ import { update_chart } from '@qy_better_lib/core/echarts';
2134
2136
 
2135
2137
  update_chart(chart, {
2136
2138
  series: [{
@@ -2145,7 +2147,7 @@
2145
2147
  - **返回类型**: `void`
2146
2148
  - **示例**:
2147
2149
  ```typescript
2148
- import { resize_chart } from '@qy_better_lib/core';
2150
+ import { resize_chart } from '@qy_better_lib/core/echarts';
2149
2151
 
2150
2152
  resize_chart(chart);
2151
2153
  ```
@@ -2158,7 +2160,7 @@
2158
2160
  - **返回类型**: `Function` - 清理函数
2159
2161
  - **示例**:
2160
2162
  ```typescript
2161
- import { make_chart_responsive } from '@qy_better_lib/core';
2163
+ import { make_chart_responsive } from '@qy_better_lib/core/echarts';
2162
2164
 
2163
2165
  const cleanup = make_chart_responsive(chart);
2164
2166
  // 当需要清理时调用
@@ -2173,7 +2175,7 @@
2173
2175
  - **返回类型**: `string[]` - 颜色数组
2174
2176
  - **示例**:
2175
2177
  ```typescript
2176
- import { generate_chart_colors } from '@qy_better_lib/core';
2178
+ import { generate_chart_colors } from '@qy_better_lib/core/echarts';
2177
2179
 
2178
2180
  const colors = generate_chart_colors(5);
2179
2181
  ```
@@ -2186,7 +2188,7 @@
2186
2188
  - **返回类型**: `string` - 格式化后的值
2187
2189
  - **示例**:
2188
2190
  ```typescript
2189
- import { format_chart_label } from '@qy_better_lib/core';
2191
+ import { format_chart_label } from '@qy_better_lib/core/echarts';
2190
2192
 
2191
2193
  const label = format_chart_label(100, '{value}元'); // 100元
2192
2194
  ```
package/dist/core.min.js CHANGED
@@ -1 +1 @@
1
- (function(i,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("dayjs")):typeof define=="function"&&define.amd?define(["exports","dayjs"],m):(i=typeof globalThis<"u"?globalThis:i||self,m(i.QyBetterLibCore={},i.dayjs))})(this,(function(i,m){"use strict";function st(){return Math.floor(Math.random()*1e4)}function at(t){return t<0?0:Math.floor(Math.random()*Math.floor(t))}function ft(t,e){return t>e&&([t,e]=[e,t]),Math.floor(Math.random()*(e-t+1))+t}function lt(t,e,n=2){t>e&&([t,e]=[e,t]);const r=Math.random()*(e-t)+t;return parseFloat(r.toFixed(n))}function dt(){const t=j;return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`}function j(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}function N(t,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){let n="";const r=e.length;for(let o=0;o<t;o++)n+=e.charAt(Math.floor(Math.random()*r));return n}function _t(){return Math.random()>.5}function v(t){if(!(!t||t.length===0))return t[Math.floor(Math.random()*t.length)]}function ht(t,e){return!t||t.length===0||e<=0?[]:e>=t.length?[...t]:[...t].sort(()=>.5-Math.random()).slice(0,e)}function mt(){const t="0123456789ABCDEF";let e="#";for(let n=0;n<6;n++)e+=t[Math.floor(Math.random()*16)];return e}function H(t){return N(t,"0123456789")}function gt(t=8){return N(t,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+~`|}{[]:;?><,./-=")}function yt(){const e=v(["130","131","132","133","134","135","136","137","138","139","150","151","152","153","155","156","157","158","159","170","171","172","173","175","176","177","178","180","181","182","183","184","185","186","187","188","189"]),n=H(8);return`${e}${n}`}function pt(){const t=["gmail.com","yahoo.com","hotmail.com","outlook.com","163.com","126.com","qq.com","sina.com"],e=N(8),n=v(t);return`${e}@${n}`}function bt(){const t=["http","https"],e=["example.com","test.com","demo.com","sample.com"],n=["api","docs","about","contact","products"],r=v(t),o=v(e),c=v(n),u=N(4);return`${r}://www.${o}/${c}?id=${u}`}function wt(t){if(!t)return[];const e=[...t];for(let n=e.length-1;n>0;n--){const r=Math.floor(Math.random()*(n+1));[e[n],e[r]]=[e[r],e[n]]}return e}function vt(t){return t===void 0}function Mt(t){return t===null}function l(t){return Array.isArray(t)}function h(t){return typeof t=="object"&&t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function Nt(t){if(typeof t!="object"||t===null)return!1;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function W(t){return Object.prototype.toString.call(t)==="[object Date]"}function $t(t){return W(t)&&!isNaN(t.getTime())}function Ot(t){return typeof t=="boolean"}function b(t){return typeof t=="function"}function Et(t){return Object.prototype.toString.call(t)==="[object RegExp]"}function kt(t){return typeof t=="symbol"}function St(t){return typeof t=="object"&&t!==null&&typeof t.then=="function"&&typeof t.catch=="function"}function zt(t){return!t&&t!==0||l(t)&&t.length===0||h(t)&&!Object.keys(t).length}function At(t){return!!t}function It(t){return!t}function D(t){return typeof Element>"u"?!1:t instanceof Element}function Dt(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement}const U=typeof window<"u";function g(t){return typeof t=="number"&&!isNaN(t)}function L(t){return typeof t=="string"}function Lt(t){return L(t)?!Number.isNaN(Number(t)):!1}function Ft(t){return/^1[3-9]\d{9}$/.test(t)}function Tt(t){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}function Ct(t){try{return new URL(t),!0}catch{return!1}}function Rt(t){return/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(t)}function Pt(t){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(t)}function jt(t){return/^(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)$/.test(t)}function Ht(t,e="key",n="children"){const r={};if(!l(t))return r;const o=[{nodes:t}];for(;o.length>0;){const{nodes:c,parent_key:u}=o.pop();for(const s of c){const a=s[e];if(a&&!r[a]){r[a]=s,u&&r[u]&&(r[a].parent=r[u]);const f=s[n];f&&l(f)&&f.length>0&&o.push({nodes:f,parent_key:a})}}}return r}function Wt(t,e="key",n="parentId",r="children"){if(!l(t))return[];const o={},c=[];for(const u of t)o[u[e]]={...u},o[u[e]][r]||(o[u[e]][r]=[]);for(const u of t){const s=u[n];!s||!o[s]?c.push(o[u[e]]):o[s][r].push(o[u[e]])}return c}function Ut(t,e,n="children"){if(!e||!b(e))return!1;let r=!1;const o=l(t)?t:[t],c=[];for(const u of o)c.push({node:u,depth:0});for(;c.length>0;){const{node:u,depth:s}=c.pop();if(e(u,s)===!1){r=!0;break}const f=u[n];if(f&&l(f)&&f.length>0)for(let d=f.length-1;d>=0;d--)c.push({node:f[d],depth:s+1})}return r}function Bt(t,e,n="children"){if(!e||!b(e))return!1;const r=[];if(l(t))for(const o of t)r.push({node:o,depth:0});else r.push({node:t,depth:0});for(;r.length>0;){const{node:o,depth:c}=r.shift();if(e(o,c)===!1)return!0;const s=o[n];if(s&&l(s))for(const a of s)r.push({node:a,depth:c+1})}return!1}function B(t,e,n="children"){if(!e||!b(e))return null;let r=null;const o=c=>{if(e(c))return r=c,!0;const u=c[n];if(u&&l(u)){for(const s of u)if(o(s))return!0}return!1};if(l(t)){for(const c of t)if(o(c))break}else o(t);return r}function F(t,e,n="key",r="children"){return B(t,o=>o[n]===e,r)}function qt(t,e,n="children"){if(!e||!b(e))return[];const r=o=>{const c=o[n],u=[];if(c&&l(c))for(const s of c){const a=r(s);a&&u.push(a)}return e(o)||u.length>0?{...o,[n]:u}:null};if(l(t)){const o=[];for(const c of t){const u=r(c);u&&o.push(u)}return o}else{const o=r(t);return o?[o]:[]}}function Yt(t,e,n="children"){if(!e||!b(e))return[];const r=o=>{const c=e(o),u=o[n];return u&&l(u)&&(c[n]=u.map(s=>r(s))),c};return l(t)?t.map(o=>r(o)):[r(t)]}function Jt(t,e="key",n="path",r="children"){const o=(c,u="")=>{const s=c[e],a=u?`${u}.${s}`:String(s),f={...c,[n]:a},d=c[r];return d&&l(d)&&(f[r]=d.map(_=>o(_,a))),f};return l(t)?t.map(c=>o(c)):[o(t)]}function Vt(t,e="children"){const n=[],r=o=>{const c=o[e];if(c&&l(c))for(const u of c)n.push(u),r(u)};return r(t),n}function Kt(t,e="parent"){const n=[];let r=t[e];for(;r;)n.unshift(r),r=r[e];return n}function Qt(t,e="children"){const n=r=>{const o=r[e];if(!o||!l(o)||o.length===0)return 1;const c=o.map(u=>n(u));return Math.max(...c)+1};if(l(t)){if(t.length===0)return 0;const r=t.map(o=>n(o));return Math.max(...r)}else return n(t)}function Gt(t,e="children"){const n=[],r=o=>{n.push(o);const c=o[e];if(c&&l(c))for(const u of c)r(u)};if(l(t))for(const o of t)r(o);else r(t);return n}function Xt(t,e,n,r="key",o="children"){const c=l(t)?t:[t],u=F(c,e,r,o);return u?(u[o]||(u[o]=[]),u[o].push(n)):c.push(n),c}function Zt(t,e,n="key",r="children"){const o=l(t)?t:[t];let c=null,u=null;const s=(a,f=null)=>{for(let d=0;d<a.length;d++){const _=a[d];if(_[n]===e)return c=_,u=f?f[r]:a,!0;const M=_[r];if(M&&l(M)&&s(M,_))return!0}return!1};if(s(o),c&&u){const a=u.findIndex(f=>f[n]===e);a>-1&&u.splice(a,1)}return o}function xt(t,e,n,r="key",o="children"){const c=l(t)?t:[t],u=F(c,e,r,o);return u&&Object.assign(u,n),c}function te(t,e,n=!0,r="children"){const o=l(t)?t:[t],c=typeof e=="string"?(s,a)=>{const f=s[e],d=a[e];return f<d?-1:f>d?1:0}:e,u=s=>{if(s.sort(c),n)for(const a of s){const f=a[r];f&&l(f)&&f.length>0&&u(f)}};return u(o),o}function ee(t,e="children"){const n=r=>{const o={...r},c=r[e];return c&&l(c)&&(o[e]=c.map(u=>n(u))),o};return l(t)?t.map(r=>n(r)):[n(t)]}function ne(t,e="key",n="children"){const r=[],o=new Set,c=new Set,u=(s,a="")=>{if(!h(s)){r.push(`Invalid node at ${a}: node must be an object`);return}if(o.has(s)){r.push(`Circular reference detected at ${a}`);return}o.add(s),e in s&&s[e]!==void 0&&(c.has(s[e])?r.push(`Duplicate key "${s[e]}" found at ${a}`):c.add(s[e]));const f=s[n];f!==void 0&&(l(f)?f.forEach((d,_)=>{u(d,`${a}[${_}]`)}):r.push(`Invalid children at ${a}: children must be an array`)),o.delete(s)};return l(t)?t.forEach((s,a)=>{u(s,`[${a}]`)}):u(t,"root"),{valid:r.length===0,errors:r}}function re(t,e,n="children"){const r=[],o=b(e)?e:u=>{if(!e||typeof e!="object")return!1;for(const[s,a]of Object.entries(e))if(u[s]!==a)return!1;return!0},c=u=>{typeof o=="function"&&o(u)&&r.push(u);const s=u[n];if(s&&l(s))for(const a of s)c(a)};if(l(t))for(const u of t)c(u);else c(t);return r}function q(t){if(!t&&t!==0)return"0";const e=E(t);return isNaN(e)?`${t}`:`${e}`.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,"$1,")}function E(t){if(g(t))return t;if(L(t)){const e=parseFloat(t);return isNaN(e)?Number.NaN:e}return Number.NaN}function Y(t,e){const n=E(t);return isNaN(n)?Number.NaN:Number(n.toFixed(e))}function oe(t,e="¥",n=2){if(!g(t))return e+"0.00";let r;n===0?r=Math.floor(t).toString():r=t.toFixed(n);const o=q(r);return e+o}function ie(t,e,n){return g(t)?Math.max(e,Math.min(n,t)):Number.NaN}function ce(t,e=2){const n=E(t);return isNaN(n)?"0%":(n*100).toFixed(e)+"%"}function ue(t){return g(t)?t%2===0:!1}function se(t){return g(t)?Math.trunc(t):Number.NaN}function ae(t){return g(t)?t-Math.trunc(t):Number.NaN}function fe(t,e=0){if(!g(t))return Number.NaN;const n=Math.pow(10,e);return Math.round(t*n)/n}function le(t,e=0){if(!g(t))return Number.NaN;const n=Math.pow(10,e);return Math.ceil(t*n)/n}function de(t,e=0){if(!g(t))return Number.NaN;const n=Math.pow(10,e);return Math.floor(t*n)/n}function _e(t,e,n=2){if(!g(t)||!g(e)||e===0)return Number.NaN;const r=t/e*100;return Y(r,n)}function y(t="local"){return t==="local"?localStorage:sessionStorage}function k(t,e=null){try{return JSON.parse(t)}catch(n){return console.error("JSON解析错误:",n),e}}function he(){const t=localStorage.getItem("token");if(!t)return null;const e=k(t);return e!==null?e.expiry!=null&&e.expiry<Date.now()?(localStorage.removeItem("token"),null):e.value:null}function me(t,e=10080*60){const n=Date.now()+e*1e3,r={value:t,expiry:n};localStorage.setItem("token",JSON.stringify(r))}function ge(){localStorage.removeItem("token")}function J(t,e,n="local"){const r=y(n);e!==void 0&&r.setItem(t,JSON.stringify(e))}function V(t,e="local"){const r=y(e).getItem(t);return r?k(r):null}function K(t,e="local"){y(e).removeItem(t)}function ye(t="local"){y(t).clear()}function pe(t,e,n,r="local"){const o=y(r),c={value:e,expiry:Date.now()+n*1e3};o.setItem(t,JSON.stringify(c))}function be(t,e="local"){const n=y(e),r=n.getItem(t);if(!r)return null;const o=k(r);return o.expiry&&o.expiry<Date.now()?(n.removeItem(t),null):o.value}function we(t,e="local"){return y(e).getItem(t)!==null}function Q(t="local"){const e=y(t),n=[];for(let r=0;r<e.length;r++){const o=e.key(r);o&&n.push(o)}return n}function ve(t="local"){const e=y(t),n=Q(t);let r=0;return n.forEach(o=>{const c=e.getItem(o);if(c){const u=k(c);u.expiry&&u.expiry<Date.now()&&(e.removeItem(o),r++)}}),r}function Me(t){try{return btoa(unescape(encodeURIComponent(t)))}catch(e){return console.error("加密错误:",e),t}}function Ne(t){try{return decodeURIComponent(escape(atob(t)))}catch(e){return console.error("解密错误:",e),t}}function $e(t,e,n="local"){const r=y(n),o=JSON.stringify(e),c=Me(o);r.setItem(t,c)}function Oe(t,e="local"){const r=y(e).getItem(t);if(!r)return null;try{const o=Ne(r);return JSON.parse(o)}catch(o){return console.error("解密解析错误:",o),null}}function Ee(t,e="local"){t.forEach(n=>{J(n.key,n.value,e)})}function ke(t,e="local"){const n={};return t.forEach(r=>{n[r]=V(r,e)}),n}function Se(t,e="local"){t.forEach(n=>{K(n,e)})}function S(t){const e=Object.prototype.toString;if(!t||typeof t!="object")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(e.call(t)==="[object Date]")return new Date(t.getTime());if(e.call(t)==="[object RegExp]"){const r=[];return t.global&&r.push("g"),t.multiline&&r.push("m"),t.ignoreCase&&r.push("i"),new RegExp(t.source,r.join(""))}if(e.call(t)==="[object FormData]"){const r=new FormData;for(const[o,c]of t.entries())r.append(o,c);return r}if(e.call(t)==="[object Map]"){const r=new Map;for(const[o,c]of t.entries())r.set(o,S(c));return r}if(e.call(t)==="[object Set]"){const r=new Set;for(const o of t.values())r.add(S(o));return r}const n=Array.isArray(t)?[]:t.constructor?new t.constructor:{};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=S(t[r]));return n}function G(...t){let e=t.length,n=t[0];h(n)||(n={});for(let r=1;r<e;r++){let o=t[r];if(h(o))for(let c in o)c==="__proto__"||n===o[c]||(h(o[c])?(h(n[c])||(n[c]=Array.isArray(o[c])?[]:{}),n[c]=G(n[c],o[c])):n[c]=o[c])}return n}function z(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){if(t.constructor!==e.constructor)return!1;let n,r,o;if(Array.isArray(t)){if(n=t.length,n!=e.length)return!1;for(r=n;r--!==0;)if(!z(t[r],e[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(e).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(e,o[r]))return!1;for(r=n;r--!==0;){const c=o[r];if(!z(t[c],e[c]))return!1}return!0}return t!==t&&e!==e}function ze(t){return h(t)&&Object.keys(t).length===0}function Ae(t,e){if(!h(t))return{};const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function Ie(t,e){if(!h(t))return{};const n={};return Object.keys(t).forEach(r=>{e.includes(r)||(n[r]=t[r])}),n}function X(t,e=""){if(!h(t))return{};const n={};return Object.keys(t).forEach(r=>{const o=e?`${e}.${r}`:r;h(t[r])&&!Array.isArray(t[r])?Object.assign(n,X(t[r],o)):n[o]=t[r]}),n}function De(t){if(!h(t))return{};const e={};return Object.keys(t).forEach(n=>{const r=n.split(".");let o=e;r.forEach((c,u)=>{u===r.length-1?o[c]=t[n]:(o[c]||(o[c]={}),o=o[c])})}),e}function Le(t,e,n=void 0){if(!h(t))return n;const r=e.split(".");let o=t;for(const c of r){if(o==null)return n;o=o[c]}return o!==void 0?o:n}function Fe(t,e,n){h(t)||(t={});const r=e.split(".");let o=t;return r.forEach((c,u)=>{u===r.length-1?o[c]=n:(h(o[c])||(o[c]={}),o=o[c])}),t}function Te(...t){return Object.assign({},...t)}function Ce(t,e){const n={};return!h(t)&&!h(e)?n:h(t)?h(e)?(new Set([...Object.keys(t),...Object.keys(e)]).forEach(o=>{z(t[o],e[o])||(n[o]={oldValue:t[o],newValue:e[o]})}),n):t:e}function Z(t,e){return!t||t.tagName==="BODY"?null:t.classList.contains(e)?t:Z(t.parentElement,e)}function Re(t,e=!0){const n=document.getElementById(t);n&&n.scrollTo({top:n.scrollHeight,behavior:e?"smooth":void 0})}function Pe(t,e=document){return e.querySelector(t)}function je(t,e=document){return Array.from(e.querySelectorAll(t))}function He(t,e){t&&!t.classList.contains(e)&&t.classList.add(e)}function We(t,e){t&&t.classList.contains(e)&&t.classList.remove(e)}function Ue(t,e){return t?t.classList.toggle(e):!1}function Be(t,e){return t?t.classList.contains(e):!1}function qe(t,e){return t?window.getComputedStyle(t).getPropertyValue(e):""}function Ye(t,e,n){t&&"style"in t&&(t.style[e]=n)}function x(t,e){t&&"style"in t&&Object.entries(e).forEach(([n,r])=>{t.style[n]=r})}function Je(t,e){return t&&t.getAttribute(e)||""}function tt(t,e,n){t&&t.setAttribute(e,n)}function Ve(t,e){t&&t.removeAttribute(e)}function Ke(t,e,n,r){t&&t.addEventListener(e,n,r)}function Qe(t,e,n,r){t&&t.removeEventListener(e,n,r)}function Ge(t,e){const n=document.createElement(t);return e&&(e.class_name&&(n.className=e.class_name),e.style&&x(n,e.style),e.attributes&&Object.entries(e.attributes).forEach(([r,o])=>{tt(n,r,o)}),e.text&&(n.textContent=e.text)),n}function $(t){return t?t.getBoundingClientRect():null}function et(t){if(!t)return null;const e=$(t);return e?{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}:null}function Xe(t){if(!t)return null;const e=$(t);return e?{width:e.width,height:e.height}:null}function Ze(t,e){if(!t)return;const{behavior:n="smooth",offsetTop:r=0,offsetLeft:o=0}=e||{},c=et(t);c&&window.scrollTo({top:c.top-r,left:c.left-o,behavior:n})}function xe(t){if(!t)return!1;const e=$(t);return e?e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth):!1}function tn(t){if(!t)return!1;const e=$(t);return e?e.top>0&&e.left>0&&e.bottom<(window.innerHeight||document.documentElement.clientHeight)&&e.right<(window.innerWidth||document.documentElement.clientWidth):!1}function en(){return{width:window.innerWidth||document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}}function nn(){return{width:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.documentElement.clientWidth),height:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)}}function T({path:t,name:e}){const n=document.createElement("a");n.href=t,n.target="_blank",e&&n.setAttribute("download",e),document.body.appendChild(n),n.click(),document.body.removeChild(n)}function rn(t){t.forEach(e=>{T({path:e.url,name:e.name})})}async function on(t){if(!t)return;const e=new FileReader;return e.readAsDataURL(t),new Promise((n,r)=>{e.onload=o=>n(o.target?.result),e.onerror=o=>r(void 0)})}async function cn(t,e="UTF-8"){if(!t)return;const n=new FileReader;return n.readAsText(t,e),new Promise((r,o)=>{n.onload=c=>r(c.target?.result),n.onerror=()=>o(void 0)})}function A(t){if(!t)return"";const e=t.lastIndexOf(".");return e===-1?"":t.substring(e+1).toLowerCase()}function C(t){if(!t)return"";const e=t.lastIndexOf(".");return e===-1?t:t.substring(0,e)}function un(t,e){return t.size<=e}function sn(t,e){const n=A(t.name);return e.includes(n)}function an(t,e,n){return new File([t],e,{type:n})}function fn(t,e,n="text/plain"){const r=new Blob([t],{type:n}),o=URL.createObjectURL(r);T({path:o,name:e}),URL.revokeObjectURL(o)}async function ln(t,e=800,n=800,r=.8){if(t.type.startsWith("image/"))return new Promise(o=>{const c=document.createElement("canvas"),u=c.getContext("2d"),s=new Image;s.onload=()=>{let{width:a,height:f}=s;if(a>e||f>n){const d=Math.min(e/a,n/f);a*=d,f*=d}c.width=a,c.height=f,u?.drawImage(s,0,0,a,f),c.toBlob(d=>{if(d){const _=new File([d],t.name,{type:t.type});o(_)}else o(void 0)},t.type,r)},s.src=URL.createObjectURL(t)})}function dn(t){const e=A(t.name),n=C(t.name);let r="";return t.size<1024?r=`${t.size} B`:t.size<1024*1024?r=`${(t.size/1024).toFixed(2)} KB`:t.size<1024*1024*1024?r=`${(t.size/(1024*1024)).toFixed(2)} MB`:r=`${(t.size/(1024*1024*1024)).toFixed(2)} GB`,{name:t.name,size:t.size,size_text:r,type:t.type,extension:e,name_without_extension:n}}function _n(t){const e=A(t),n=C(t),r=Date.now(),o=Math.random().toString(36).substring(2,8);return e?`${n}_${r}_${o}.${e}`:`${n}_${r}_${o}`}function nt(t){return/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(t)}function hn(t,e,n){if(!nt(t)||!nt(e))return t;n=Math.max(Math.min(Number(n),1),0);const r=w(t),o=w(e);if(!r||!o)return t;const c=Math.round(r.r*(1-n)+o.r*n),u=Math.round(r.g*(1-n)+o.g*n),s=Math.round(r.b*(1-n)+o.b*n);return O(c,u,s)}function mn(t){const e=w(t);return e?`${e.r},${e.g},${e.b}`:"0,0,0"}function w(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function O(t,e,n){return t=Math.max(0,Math.min(255,Math.round(t))),e=Math.max(0,Math.min(255,Math.round(e))),n=Math.max(0,Math.min(255,Math.round(n))),`#${((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1)}`}function gn(t,e,n,r){return O(t,e,n)}function yn(t,e){const n=w(t);if(!n)return t;e=Math.max(0,Math.min(1,e));const r=Math.min(255,Math.round(n.r+(255-n.r)*e)),o=Math.min(255,Math.round(n.g+(255-n.g)*e)),c=Math.min(255,Math.round(n.b+(255-n.b)*e));return O(r,o,c)}function pn(t,e){const n=w(t);if(!n)return t;e=Math.max(0,Math.min(1,e));const r=Math.max(0,Math.round(n.r*(1-e))),o=Math.max(0,Math.round(n.g*(1-e))),c=Math.max(0,Math.round(n.b*(1-e)));return O(r,o,c)}function R(t){const e=w(t);return e?(e.r*299+e.g*587+e.b*114)/1e3>128:!1}function bn(t){return!R(t)}function wn(t){return R(t)?"#000000":"#FFFFFF"}function vn(t,e=200,n=!1){let r;return function(...o){const c=this;if(r&&clearTimeout(r),n){const u=!r;if(r=setTimeout(()=>{r=void 0},e),u)return t.apply(c,o)}else r=setTimeout(()=>{t.apply(c,o)},e)}}function Mn(t,e=200,n={}){const{leading:r=!0,trailing:o=!0}=n;let c=0,u,s,a;return function(...f){const d=this,_=Date.now();if(c===0){r&&t.apply(d,f),c=_;return}s=f,a=d;const M=_-c;if(M>=e){u&&(clearTimeout(u),u=void 0),t.apply(d,f),c=_;return}!u&&o&&(u=setTimeout(()=>{s&&(t.apply(a,s),c=Date.now()),u=void 0,s=void 0,a=void 0},e-M))}}function Nn(t){const e=t.length;function n(...r){return r.length>=e?t.apply(this,r):function(...o){return n.apply(this,[...r,...o])}}return n}function $n(...t){return function(e){return t.reduceRight((n,r)=>r(n),e)}}function On(...t){return function(e){return t.reduce((n,r)=>r(n),e)}}function En(t,e=1e3){return new Promise(n=>{setTimeout(()=>{n(t())},e)})}async function rt(t,e=3,n=1e3){try{return await t()}catch(r){if(e<=0)throw r;return await new Promise(o=>setTimeout(o,n)),rt(t,e-1,n)}}function kn(t){let e=!1,n;return function(...r){return e||(e=!0,n=t.apply(this,r)),n}}function Sn(t){const e=new Map;return function(...n){const r=JSON.stringify(n);if(e.has(r))return e.get(r);const o=t.apply(this,n);return e.set(r,o),o}}async function zn(t,e=!0){if(e)return Promise.all(t.map(n=>n()));{const n=[];for(const r of t)n.push(await r());return n}}function An(t,e=5e3,n="Operation timed out"){return Promise.race([Promise.resolve(t()),new Promise((r,o)=>{setTimeout(()=>{o(new Error(n))},e)})])}function In(t,e="YYYY-MM-DD HH:mm:ss"){return m(t).format(e)}function Dn(t,e=-1,n="YYYY-MM-DD HH:mm:ss",r=!1){const o=m(),c=o.format(n);let u=o;switch(t){case"d":u=r?o.add(e,"day"):o.startOf("day");break;case"w":u=r?o.add(e,"week"):o.startOf("week");break;case"M":u=r?o.add(e,"month"):o.startOf("month");break;case"Q":u=r?o.add(e*3,"month"):o.startOf("month").subtract(o.month()%3,"month");break;case"y":u=r?o.add(e,"year"):o.startOf("year");break;case"h":u=o.add(e,"hour");break;case"m":u=o.add(e,"minute");break;case"s":u=o.add(e,"second");break}return[u.format(n),c]}function Ln(t,e,n="day"){return m(t).diff(m(e),n)}function Fn(t,e,n,r){const o=m(t).add(e,n);return r?o.format(r):o.toDate()}function Tn(t,e,n,r){const o=m(t).subtract(e,n);return r?o.format(r):o.toDate()}function Cn(t){const e=m(t).day();return e>0&&e<6}function Rn(t){const e=m(t).day();return e===0||e===6}function Pn(t){const e=m(),n=m(t),r=e.diff(n,"minute");if(r<1)return"刚刚";if(r<60)return`${r}分钟前`;const o=e.diff(n,"hour");if(o<24)return`${o}小时前`;const c=e.diff(n,"day");if(c<30)return`${c}天前`;const u=e.diff(n,"month");return u<12?`${u}个月前`:`${e.diff(n,"year")}年前`}function jn(t,e="zh"){const n=Math.floor(t/1e3),r=Math.floor(n/86400),o=Math.floor(n%86400/3600),c=Math.floor(n%3600/60),u=n%60,s=e==="zh"?{day:"天",hour:"时",minute:"分",second:"秒"}:{day:"D",hour:"H",minute:"M",second:"S"};let a="";return r>0&&(a+=`${r}${s.day}`),(o>0||r>0&&(c>0||u>0))&&(a+=`${o}${s.hour}`),(c>0||o>0&&u>0)&&(a+=`${c}${s.minute}`),(u>0||a==="")&&(a+=`${u}${s.second}`),a}const Hn=Object.freeze(Object.defineProperty({__proto__:null,add_date:Fn,format_date:In,format_timestamp_diff:jn,get_date_diff:Ln,get_date_time_range:Dn,get_relative_time:Pn,is_weekday:Cn,is_weekend:Rn,subtract_date:Tn},Symbol.toStringTag,{value:"Module"}));function Wn(t,e=1920){let n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;if(!n)return t;let r=n/e;return Number((t*r).toFixed(3))}function Un(t,e,n){return{type:"linear",x:0,y:0,x2:t==="v"?0:1,y2:t==="v"?1:0,colorStops:[{offset:0,color:e},{offset:1,color:n}]}}function Bn(t,e,n="canvas",r){return(async()=>{try{let c;if(typeof window<"u"&&window.echarts)c=window.echarts;else{const a=await import("echarts");c=a.default||a}const u=typeof t=="string"?document.getElementById(t):t;if(!u)return console.error("ECharts DOM容器未找到"),null;const s=c.init(u,r,{renderer:n});return e&&s.setOption(e),s}catch(c){return console.error("加载 ECharts 失败:",c),null}})()}function ot(t){t&&typeof t.dispose=="function"&&t.dispose()}function qn(t,e){t&&typeof t.setOption=="function"&&t.setOption(e)}function P(t){t&&typeof t.resize=="function"&&t.resize()}function Yn(t,e=200){if(!t)return;let n;const r=()=>{clearTimeout(n),n=setTimeout(()=>{P(t)},e)};return window.addEventListener("resize",r),()=>{window.removeEventListener("resize",r),clearTimeout(n)}}function Jn(t,e){const r=e||["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc","#67c23a"],o=[];for(let c=0;c<t;c++)o.push(r[c%r.length]);return o}function Vn(t,e){return typeof e=="function"?e(t):typeof e=="string"?e.replace("{value}",String(t)):String(t)}function Kn(t,e){return{...t,...e,series:e.series||t.series,xAxis:e.xAxis||t.xAxis,yAxis:e.yAxis||t.yAxis,legend:e.legend||t.legend,tooltip:e.tooltip||t.tooltip,title:e.title||t.title}}function Qn(t,e,n){t&&typeof t.on=="function"&&t.on(e,n)}function Gn(t,e,n){t&&typeof t.off=="function"&&t.off(e,n)}function Xn(t,e={}){if(!t||typeof t.getDataURL!="function")return null;const{type:n="png",pixel_ratio:r=2,background_color:o="#fff",exclude_components:c=[],file_name:u="echarts-image"}=e,s=t.getDataURL({type:n,pixelRatio:r,backgroundColor:o,excludeComponents:c}),a=document.createElement("a");return a.download=`${u}.${n}`,a.href=s,a.click(),s}function Zn(){return typeof window<"u"&&typeof window.echarts<"u"}function xn(t){t.forEach(e=>{P(e)})}function tr(t){t.forEach(e=>{ot(e)})}function er(t,e,n="asc"){return[...t].sort((r,o)=>{const c=r[e],u=o[e];return c<u?n==="asc"?-1:1:c>u?n==="asc"?1:-1:0})}function it(t,e){return t.reduce((n,r)=>{const o=r[e];return n[o]||(n[o]=[]),n[o].push(r),n},{})}function nr(t,e,n,r=o=>o.reduce((c,u)=>c+u,0)){const o=it(t,e);return Object.entries(o).map(([c,u])=>{const s=u.map(a=>a[n]).filter(a=>typeof a=="number");return{[e]:c,[n]:r(s)}})}const rr=Object.freeze(Object.defineProperty({__proto__:null,add_chart_listener:Qn,aggregate_chart_data:nr,auto_size:Wn,destroy_chart:ot,destroy_charts:tr,export_chart_image:Xn,format_chart_label:Vn,generate_chart_colors:Jn,get_chart_gradient_color:Un,group_chart_data:it,init_chart:Bn,is_echarts_loaded:Zn,make_chart_responsive:Yn,merge_chart_options:Kn,remove_chart_listener:Gn,resize_chart:P,resize_charts:xn,sort_chart_data:er,update_chart:qn},Symbol.toStringTag,{value:"Module"})),p=new Map;let I=null;U&&(document.addEventListener("mousedown",t=>{I=t}),document.addEventListener("mouseup",t=>{for(const e of p.values())for(const{document_handler:n}of e)I&&n(t,I);I=null}));function ct(t,e){const n=[];return Array.isArray(e.arg)?n.push(...e.arg.filter(D)):D(e.arg)&&n.push(e.arg),function(r,o){const c=r.target,u=o.target;if(!c||!u||!e.instance)return;const s=t.contains(c)||t.contains(u),a=t===c,f=n.some(_=>_&&(_.contains(c)||_===u));let d=!1;try{const _=e.instance.popperRef;_&&(d=_.contains(c)||_.contains(u))}catch{}s||a||f||d||typeof e.value=="function"&&e.value(r,o)}}const ut={beforeMount(t,e){p.has(t)||p.set(t,[]),p.get(t)?.push({document_handler:ct(t,e),binding_fn:e.value})},updated(t,e){p.has(t)||p.set(t,[]);const n=p.get(t);if(!n)return;const r=n.findIndex(c=>c.binding_fn===e.oldValue),o={document_handler:ct(t,e),binding_fn:e.value};r>=0?n.splice(r,1,o):n.push(o)},unmounted(t){p.delete(t)}};function or(t){t.directive("click-outside",ut)}i.ClickOutside=ut,i.add_class=He,i.add_tree_node=Xt,i.add_tree_node_path=Jt,i.batch_execution=zn,i.build_tree=Wt,i.calculate_percentage=_e,i.ceil=le,i.clamp=ie,i.clear_expired_storage=ve,i.clear_storage=ye,i.clone_tree=ee,i.compose=$n,i.compress_image=ln,i.create_element=Ge,i.create_file_from_blob=an,i.curry=Nn,i.darken=pn,i.date=Hn,i.debounce=vn,i.decrypt_storage=Oe,i.deep_assign=G,i.deep_clone=S,i.deep_equal=z,i.delay_execution=En,i.diff_objects=Ce,i.download_file=T,i.download_files=rn,i.download_text_file=fn,i.echarts=rr,i.encrypt_storage=$e,i.filter_tree=qt,i.find_tree_node=B,i.find_tree_node_by_key=F,i.flatten_object=X,i.flatten_tree_to_array=Gt,i.floor=de,i.format_currency=oe,i.generate_unique_file_name=_n,i.get_all_storage_keys=Q,i.get_attribute=Je,i.get_batch_storage=ke,i.get_contrast_color=wn,i.get_decimal_part=ae,i.get_document_size=nn,i.get_element=Pe,i.get_element_position=et,i.get_element_rect=$,i.get_element_size=Xe,i.get_elements=je,i.get_file_extension=A,i.get_file_info=dn,i.get_file_name_without_extension=C,i.get_integer_part=se,i.get_object_value=Le,i.get_parent_by_class=Z,i.get_rgb=mn,i.get_storage=V,i.get_storage_with_expiry=be,i.get_style=qe,i.get_token=he,i.get_tree_depth=Qt,i.get_tree_node_ancestors=Kt,i.get_tree_node_descendants=Vt,i.get_window_size=en,i.guid=dt,i.has_class=Be,i.has_storage=we,i.hex_to_rgb=w,i.is_array=l,i.is_boolean=Ot,i.is_client=U,i.is_completely_in_viewport=tn,i.is_dark=bn,i.is_date=W,i.is_element=D,i.is_email=Tt,i.is_empty=zt,i.is_empty_object=ze,i.is_even=ue,i.is_falsy=It,i.is_function=b,i.is_hex_color=Rt,i.is_html_element=Dt,i.is_in_viewport=xe,i.is_ip=Pt,i.is_light=R,i.is_mobile=Ft,i.is_null=Mt,i.is_number=g,i.is_object=h,i.is_plain_object=Nt,i.is_port=jt,i.is_promise=St,i.is_reg_exp=Et,i.is_string=L,i.is_string_number=Lt,i.is_symbol=kt,i.is_truthy=At,i.is_undefined=vt,i.is_url=Ct,i.is_valid_date=$t,i.lighten=yn,i.memoize=Sn,i.merge_objects=Te,i.mix=hn,i.off=Qe,i.omit=Ie,i.on=Ke,i.once=kn,i.pick=Ae,i.pipe=On,i.random_boolean=_t,i.random_color=mt,i.random_element=v,i.random_elements=ht,i.random_email=pt,i.random_float=lt,i.random_id=st,i.random_int=at,i.random_int_range=ft,i.random_len_string=N,i.random_number_string=H,i.random_password=gt,i.random_phone=yt,i.random_string=j,i.random_url=bt,i.read_file=cn,i.remove_attribute=Ve,i.remove_batch_storage=Se,i.remove_class=We,i.remove_storage=K,i.remove_token=ge,i.remove_tree_node=Zt,i.retry=rt,i.rgb_to_hex=O,i.rgba_to_hex=gn,i.round=fe,i.scroll_footer=Re,i.scroll_to_element=Ze,i.search_tree=re,i.set_attribute=tt,i.set_batch_storage=Ee,i.set_object_value=Fe,i.set_storage=J,i.set_storage_with_expiry=pe,i.set_style=Ye,i.set_styles=x,i.set_token=me,i.setupDirectives=or,i.shuffle_array=wt,i.sort_tree=te,i.thousand_separator=q,i.throttle=Mn,i.timeout=An,i.to_base64=on,i.to_fixed=Y,i.to_number=E,i.to_percentage=ce,i.toggle_class=Ue,i.transform_tree=Yt,i.traverse_tree_breadth_first=Bt,i.traverse_tree_depth_first=Ut,i.tree_flat=Ht,i.unflatten_object=De,i.update_tree_node=xt,i.validate_file_size=un,i.validate_file_type=sn,i.validate_tree=ne,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(i,M){typeof exports=="object"&&typeof module<"u"?M(exports):typeof define=="function"&&define.amd?define(["exports"],M):(i=typeof globalThis<"u"?globalThis:i||self,M(i.QyBetterLibCore={}))})(this,(function(i){"use strict";function M(){return Math.floor(Math.random()*1e4)}function it(t){return t<0?0:Math.floor(Math.random()*Math.floor(t))}function ct(t,e){return t>e&&([t,e]=[e,t]),Math.floor(Math.random()*(e-t+1))+t}function ut(t,e,n=2){t>e&&([t,e]=[e,t]);const r=Math.random()*(e-t)+t;return parseFloat(r.toFixed(n))}function st(){const t=R;return`${t()}${t()}-${t()}-${t()}-${t()}-${t()}${t()}${t()}`}function R(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}function N(t,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"){let n="";const r=e.length;for(let o=0;o<t;o++)n+=e.charAt(Math.floor(Math.random()*r));return n}function ft(){return Math.random()>.5}function w(t){if(!(!t||t.length===0))return t[Math.floor(Math.random()*t.length)]}function at(t,e){return!t||t.length===0||e<=0?[]:e>=t.length?[...t]:[...t].sort(()=>.5-Math.random()).slice(0,e)}function lt(){const t="0123456789ABCDEF";let e="#";for(let n=0;n<6;n++)e+=t[Math.floor(Math.random()*16)];return e}function C(t){return N(t,"0123456789")}function _t(t=8){return N(t,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+~`|}{[]:;?><,./-=")}function dt(){const e=w(["130","131","132","133","134","135","136","137","138","139","150","151","152","153","155","156","157","158","159","170","171","172","173","175","176","177","178","180","181","182","183","184","185","186","187","188","189"]),n=C(8);return`${e}${n}`}function ht(){const t=["gmail.com","yahoo.com","hotmail.com","outlook.com","163.com","126.com","qq.com","sina.com"],e=N(8),n=w(t);return`${e}@${n}`}function mt(){const t=["http","https"],e=["example.com","test.com","demo.com","sample.com"],n=["api","docs","about","contact","products"],r=w(t),o=w(e),c=w(n),u=N(4);return`${r}://www.${o}/${c}?id=${u}`}function gt(t){if(!t)return[];const e=[...t];for(let n=e.length-1;n>0;n--){const r=Math.floor(Math.random()*(n+1));[e[n],e[r]]=[e[r],e[n]]}return e}function yt(t){return t===void 0}function pt(t){return t===null}function l(t){return Array.isArray(t)}function h(t){return typeof t=="object"&&t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function bt(t){if(typeof t!="object"||t===null)return!1;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function W(t){return Object.prototype.toString.call(t)==="[object Date]"}function wt(t){return W(t)&&!isNaN(t.getTime())}function vt(t){return typeof t=="boolean"}function p(t){return typeof t=="function"}function Mt(t){return Object.prototype.toString.call(t)==="[object RegExp]"}function Nt(t){return typeof t=="symbol"}function Ot(t){return typeof t=="object"&&t!==null&&typeof t.then=="function"&&typeof t.catch=="function"}function $t(t){return!t&&t!==0||l(t)&&t.length===0||h(t)&&!Object.keys(t).length}function Et(t){return!!t}function St(t){return!t}function L(t){return typeof Element>"u"?!1:t instanceof Element}function kt(t){return typeof HTMLElement>"u"?!1:t instanceof HTMLElement}const H=typeof window<"u";function m(t){return typeof t=="number"&&!isNaN(t)}function z(t){return typeof t=="string"}function It(t){return z(t)?!Number.isNaN(Number(t)):!1}function Ft(t){return/^1[3-9]\d{9}$/.test(t)}function At(t){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)}function Lt(t){try{return new URL(t),!0}catch{return!1}}function zt(t){return/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(t)}function Tt(t){return/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(t)}function jt(t){return/^(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}|0)$/.test(t)}function Dt(t,e="key",n="children"){const r={};if(!l(t))return r;const o=[{nodes:t}];for(;o.length>0;){const{nodes:c,parent_key:u}=o.pop();for(const s of c){const f=s[e];if(f&&!r[f]){r[f]=s,u&&r[u]&&(r[f].parent=r[u]);const a=s[n];a&&l(a)&&a.length>0&&o.push({nodes:a,parent_key:f})}}}return r}function Pt(t,e="key",n="parentId",r="children"){if(!l(t))return[];const o={},c=[];for(const u of t)o[u[e]]={...u},o[u[e]][r]||(o[u[e]][r]=[]);for(const u of t){const s=u[n];!s||!o[s]?c.push(o[u[e]]):o[s][r].push(o[u[e]])}return c}function Rt(t,e,n="children"){if(!e||!p(e))return!1;let r=!1;const o=l(t)?t:[t],c=[];for(const u of o)c.push({node:u,depth:0});for(;c.length>0;){const{node:u,depth:s}=c.pop();if(e(u,s)===!1){r=!0;break}const a=u[n];if(a&&l(a)&&a.length>0)for(let _=a.length-1;_>=0;_--)c.push({node:a[_],depth:s+1})}return r}function Ct(t,e,n="children"){if(!e||!p(e))return!1;const r=[];if(l(t))for(const o of t)r.push({node:o,depth:0});else r.push({node:t,depth:0});for(;r.length>0;){const{node:o,depth:c}=r.shift();if(e(o,c)===!1)return!0;const s=o[n];if(s&&l(s))for(const f of s)r.push({node:f,depth:c+1})}return!1}function B(t,e,n="children"){if(!e||!p(e))return null;let r=null;const o=c=>{if(e(c))return r=c,!0;const u=c[n];if(u&&l(u)){for(const s of u)if(o(s))return!0}return!1};if(l(t)){for(const c of t)if(o(c))break}else o(t);return r}function T(t,e,n="key",r="children"){return B(t,o=>o[n]===e,r)}function Wt(t,e,n="children"){if(!e||!p(e))return[];const r=o=>{const c=o[n],u=[];if(c&&l(c))for(const s of c){const f=r(s);f&&u.push(f)}return e(o)||u.length>0?{...o,[n]:u}:null};if(l(t)){const o=[];for(const c of t){const u=r(c);u&&o.push(u)}return o}else{const o=r(t);return o?[o]:[]}}function Ht(t,e,n="children"){if(!e||!p(e))return[];const r=o=>{const c=e(o),u=o[n];return u&&l(u)&&(c[n]=u.map(s=>r(s))),c};return l(t)?t.map(o=>r(o)):[r(t)]}function Bt(t,e="key",n="path",r="children"){const o=(c,u="")=>{const s=c[e],f=u?`${u}.${s}`:String(s),a={...c,[n]:f},_=c[r];return _&&l(_)&&(a[r]=_.map(d=>o(d,f))),a};return l(t)?t.map(c=>o(c)):[o(t)]}function Ut(t,e="children"){const n=[],r=o=>{const c=o[e];if(c&&l(c))for(const u of c)n.push(u),r(u)};return r(t),n}function qt(t,e="parent"){const n=[];let r=t[e];for(;r;)n.unshift(r),r=r[e];return n}function Jt(t,e="children"){const n=r=>{const o=r[e];if(!o||!l(o)||o.length===0)return 1;const c=o.map(u=>n(u));return Math.max(...c)+1};if(l(t)){if(t.length===0)return 0;const r=t.map(o=>n(o));return Math.max(...r)}else return n(t)}function Vt(t,e="children"){const n=[],r=o=>{n.push(o);const c=o[e];if(c&&l(c))for(const u of c)r(u)};if(l(t))for(const o of t)r(o);else r(t);return n}function Kt(t,e,n,r="key",o="children"){const c=l(t)?t:[t],u=T(c,e,r,o);return u?(u[o]||(u[o]=[]),u[o].push(n)):c.push(n),c}function Yt(t,e,n="key",r="children"){const o=l(t)?t:[t];let c=null,u=null;const s=(f,a=null)=>{for(let _=0;_<f.length;_++){const d=f[_];if(d[n]===e)return c=d,u=a?a[r]:f,!0;const v=d[r];if(v&&l(v)&&s(v,d))return!0}return!1};if(s(o),c&&u){const f=u.findIndex(a=>a[n]===e);f>-1&&u.splice(f,1)}return o}function Gt(t,e,n,r="key",o="children"){const c=l(t)?t:[t],u=T(c,e,r,o);return u&&Object.assign(u,n),c}function Qt(t,e,n=!0,r="children"){const o=l(t)?t:[t],c=typeof e=="string"?(s,f)=>{const a=s[e],_=f[e];return a<_?-1:a>_?1:0}:e,u=s=>{if(s.sort(c),n)for(const f of s){const a=f[r];a&&l(a)&&a.length>0&&u(a)}};return u(o),o}function Xt(t,e="children"){const n=r=>{const o={...r},c=r[e];return c&&l(c)&&(o[e]=c.map(u=>n(u))),o};return l(t)?t.map(r=>n(r)):[n(t)]}function Zt(t,e="key",n="children"){const r=[],o=new Set,c=new Set,u=(s,f="")=>{if(!h(s)){r.push(`Invalid node at ${f}: node must be an object`);return}if(o.has(s)){r.push(`Circular reference detected at ${f}`);return}o.add(s),e in s&&s[e]!==void 0&&(c.has(s[e])?r.push(`Duplicate key "${s[e]}" found at ${f}`):c.add(s[e]));const a=s[n];a!==void 0&&(l(a)?a.forEach((_,d)=>{u(_,`${f}[${d}]`)}):r.push(`Invalid children at ${f}: children must be an array`)),o.delete(s)};return l(t)?t.forEach((s,f)=>{u(s,`[${f}]`)}):u(t,"root"),{valid:r.length===0,errors:r}}function xt(t,e,n="children"){const r=[],o=p(e)?e:u=>{if(!e||typeof e!="object")return!1;for(const[s,f]of Object.entries(e))if(u[s]!==f)return!1;return!0},c=u=>{typeof o=="function"&&o(u)&&r.push(u);const s=u[n];if(s&&l(s))for(const f of s)c(f)};if(l(t))for(const u of t)c(u);else c(t);return r}function U(t){if(!t&&t!==0)return"0";const e=E(t);return isNaN(e)?`${t}`:`${e}`.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g,"$1,")}function E(t){if(m(t))return t;if(z(t)){const e=parseFloat(t);return isNaN(e)?Number.NaN:e}return Number.NaN}function q(t,e){const n=E(t);return isNaN(n)?Number.NaN:Number(n.toFixed(e))}function te(t,e="¥",n=2){if(!m(t))return e+"0.00";let r;n===0?r=Math.floor(t).toString():r=t.toFixed(n);const o=U(r);return e+o}function ee(t,e,n){return m(t)?Math.max(e,Math.min(n,t)):Number.NaN}function ne(t,e=2){const n=E(t);return isNaN(n)?"0%":(n*100).toFixed(e)+"%"}function re(t){return m(t)?t%2===0:!1}function oe(t){return m(t)?Math.trunc(t):Number.NaN}function ie(t){return m(t)?t-Math.trunc(t):Number.NaN}function ce(t,e=0){if(!m(t))return Number.NaN;const n=Math.pow(10,e);return Math.round(t*n)/n}function ue(t,e=0){if(!m(t))return Number.NaN;const n=Math.pow(10,e);return Math.ceil(t*n)/n}function se(t,e=0){if(!m(t))return Number.NaN;const n=Math.pow(10,e);return Math.floor(t*n)/n}function fe(t,e,n=2){if(!m(t)||!m(e)||e===0)return Number.NaN;const r=t/e*100;return q(r,n)}function g(t="local"){return t==="local"?localStorage:sessionStorage}function S(t,e=null){try{return JSON.parse(t)}catch(n){return console.error("JSON解析错误:",n),e}}function ae(){const t=localStorage.getItem("token");if(!t)return null;const e=S(t);return e!==null?e.expiry!=null&&e.expiry<Date.now()?(localStorage.removeItem("token"),null):e.value:null}function le(t,e=10080*60){const n=Date.now()+e*1e3,r={value:t,expiry:n};localStorage.setItem("token",JSON.stringify(r))}function _e(){localStorage.removeItem("token")}function J(t,e,n="local"){const r=g(n);e!==void 0&&r.setItem(t,JSON.stringify(e))}function V(t,e="local"){const r=g(e).getItem(t);return r?S(r):null}function K(t,e="local"){g(e).removeItem(t)}function de(t="local"){g(t).clear()}function he(t,e,n,r="local"){const o=g(r),c={value:e,expiry:Date.now()+n*1e3};o.setItem(t,JSON.stringify(c))}function me(t,e="local"){const n=g(e),r=n.getItem(t);if(!r)return null;const o=S(r);return o.expiry&&o.expiry<Date.now()?(n.removeItem(t),null):o.value}function ge(t,e="local"){return g(e).getItem(t)!==null}function Y(t="local"){const e=g(t),n=[];for(let r=0;r<e.length;r++){const o=e.key(r);o&&n.push(o)}return n}function ye(t="local"){const e=g(t),n=Y(t);let r=0;return n.forEach(o=>{const c=e.getItem(o);if(c){const u=S(c);u.expiry&&u.expiry<Date.now()&&(e.removeItem(o),r++)}}),r}function pe(t){try{return btoa(unescape(encodeURIComponent(t)))}catch(e){return console.error("加密错误:",e),t}}function be(t){try{return decodeURIComponent(escape(atob(t)))}catch(e){return console.error("解密错误:",e),t}}function we(t,e,n="local"){const r=g(n),o=JSON.stringify(e),c=pe(o);r.setItem(t,c)}function ve(t,e="local"){const r=g(e).getItem(t);if(!r)return null;try{const o=be(r);return JSON.parse(o)}catch(o){return console.error("解密解析错误:",o),null}}function Me(t,e="local"){t.forEach(n=>{J(n.key,n.value,e)})}function Ne(t,e="local"){const n={};return t.forEach(r=>{n[r]=V(r,e)}),n}function Oe(t,e="local"){t.forEach(n=>{K(n,e)})}function k(t){const e=Object.prototype.toString;if(!t||typeof t!="object")return t;if(t.nodeType&&"cloneNode"in t)return t.cloneNode(!0);if(e.call(t)==="[object Date]")return new Date(t.getTime());if(e.call(t)==="[object RegExp]"){const r=[];return t.global&&r.push("g"),t.multiline&&r.push("m"),t.ignoreCase&&r.push("i"),new RegExp(t.source,r.join(""))}if(e.call(t)==="[object FormData]"){const r=new FormData;for(const[o,c]of t.entries())r.append(o,c);return r}if(e.call(t)==="[object Map]"){const r=new Map;for(const[o,c]of t.entries())r.set(o,k(c));return r}if(e.call(t)==="[object Set]"){const r=new Set;for(const o of t.values())r.add(k(o));return r}const n=Array.isArray(t)?[]:t.constructor?new t.constructor:{};for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=k(t[r]));return n}function G(...t){let e=t.length,n=t[0];h(n)||(n={});for(let r=1;r<e;r++){let o=t[r];if(h(o))for(let c in o)c==="__proto__"||n===o[c]||(h(o[c])?(h(n[c])||(n[c]=Array.isArray(o[c])?[]:{}),n[c]=G(n[c],o[c])):n[c]=o[c])}return n}function I(t,e){if(t===e)return!0;if(t&&e&&typeof t=="object"&&typeof e=="object"){if(t.constructor!==e.constructor)return!1;let n,r,o;if(Array.isArray(t)){if(n=t.length,n!=e.length)return!1;for(r=n;r--!==0;)if(!I(t[r],e[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();if(o=Object.keys(t),n=o.length,n!==Object.keys(e).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(e,o[r]))return!1;for(r=n;r--!==0;){const c=o[r];if(!I(t[c],e[c]))return!1}return!0}return t!==t&&e!==e}function $e(t){return h(t)&&Object.keys(t).length===0}function Ee(t,e){if(!h(t))return{};const n={};return e.forEach(r=>{r in t&&(n[r]=t[r])}),n}function Se(t,e){if(!h(t))return{};const n={};return Object.keys(t).forEach(r=>{e.includes(r)||(n[r]=t[r])}),n}function Q(t,e=""){if(!h(t))return{};const n={};return Object.keys(t).forEach(r=>{const o=e?`${e}.${r}`:r;h(t[r])&&!Array.isArray(t[r])?Object.assign(n,Q(t[r],o)):n[o]=t[r]}),n}function ke(t){if(!h(t))return{};const e={};return Object.keys(t).forEach(n=>{const r=n.split(".");let o=e;r.forEach((c,u)=>{u===r.length-1?o[c]=t[n]:(o[c]||(o[c]={}),o=o[c])})}),e}function Ie(t,e,n=void 0){if(!h(t))return n;const r=e.split(".");let o=t;for(const c of r){if(o==null)return n;o=o[c]}return o!==void 0?o:n}function Fe(t,e,n){h(t)||(t={});const r=e.split(".");let o=t;return r.forEach((c,u)=>{u===r.length-1?o[c]=n:(h(o[c])||(o[c]={}),o=o[c])}),t}function Ae(...t){return Object.assign({},...t)}function Le(t,e){const n={};return!h(t)&&!h(e)?n:h(t)?h(e)?(new Set([...Object.keys(t),...Object.keys(e)]).forEach(o=>{I(t[o],e[o])||(n[o]={oldValue:t[o],newValue:e[o]})}),n):t:e}function X(t,e){return!t||t.tagName==="BODY"?null:t.classList.contains(e)?t:X(t.parentElement,e)}function ze(t,e=!0){const n=document.getElementById(t);n&&n.scrollTo({top:n.scrollHeight,behavior:e?"smooth":void 0})}function Te(t,e=document){return e.querySelector(t)}function je(t,e=document){return Array.from(e.querySelectorAll(t))}function De(t,e){t&&!t.classList.contains(e)&&t.classList.add(e)}function Pe(t,e){t&&t.classList.contains(e)&&t.classList.remove(e)}function Re(t,e){return t?t.classList.toggle(e):!1}function Ce(t,e){return t?t.classList.contains(e):!1}function We(t,e){return t?window.getComputedStyle(t).getPropertyValue(e):""}function He(t,e,n){t&&"style"in t&&(t.style[e]=n)}function Z(t,e){t&&"style"in t&&Object.entries(e).forEach(([n,r])=>{t.style[n]=r})}function Be(t,e){return t&&t.getAttribute(e)||""}function x(t,e,n){t&&t.setAttribute(e,n)}function Ue(t,e){t&&t.removeAttribute(e)}function qe(t,e,n,r){t&&t.addEventListener(e,n,r)}function Je(t,e,n,r){t&&t.removeEventListener(e,n,r)}function Ve(t,e){const n=document.createElement(t);return e&&(e.class_name&&(n.className=e.class_name),e.style&&Z(n,e.style),e.attributes&&Object.entries(e.attributes).forEach(([r,o])=>{x(n,r,o)}),e.text&&(n.textContent=e.text)),n}function O(t){return t?t.getBoundingClientRect():null}function tt(t){if(!t)return null;const e=O(t);return e?{top:e.top+window.pageYOffset,left:e.left+window.pageXOffset}:null}function Ke(t){if(!t)return null;const e=O(t);return e?{width:e.width,height:e.height}:null}function Ye(t,e){if(!t)return;const{behavior:n="smooth",offsetTop:r=0,offsetLeft:o=0}=e||{},c=tt(t);c&&window.scrollTo({top:c.top-r,left:c.left-o,behavior:n})}function Ge(t){if(!t)return!1;const e=O(t);return e?e.top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth):!1}function Qe(t){if(!t)return!1;const e=O(t);return e?e.top>0&&e.left>0&&e.bottom<(window.innerHeight||document.documentElement.clientHeight)&&e.right<(window.innerWidth||document.documentElement.clientWidth):!1}function Xe(){return{width:window.innerWidth||document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}}function Ze(){return{width:Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.documentElement.clientWidth),height:Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)}}function xe(t,e=1920){let n=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;if(!n)return t;let r=n/e;return Number((t*r).toFixed(3))}function j({path:t,name:e}){const n=document.createElement("a");n.href=t,n.target="_blank",e&&n.setAttribute("download",e),document.body.appendChild(n),n.click(),document.body.removeChild(n)}function tn(t){t.forEach(e=>{j({path:e.url,name:e.name})})}async function en(t){if(!t)return;const e=new FileReader;return e.readAsDataURL(t),new Promise((n,r)=>{e.onload=o=>n(o.target?.result),e.onerror=o=>r(void 0)})}async function nn(t,e="UTF-8"){if(!t)return;const n=new FileReader;return n.readAsText(t,e),new Promise((r,o)=>{n.onload=c=>r(c.target?.result),n.onerror=()=>o(void 0)})}function F(t){if(!t)return"";const e=t.lastIndexOf(".");return e===-1?"":t.substring(e+1).toLowerCase()}function D(t){if(!t)return"";const e=t.lastIndexOf(".");return e===-1?t:t.substring(0,e)}function rn(t,e){return t.size<=e}function on(t,e){const n=F(t.name);return e.includes(n)}function cn(t,e,n){return new File([t],e,{type:n})}function un(t,e,n="text/plain"){const r=new Blob([t],{type:n}),o=URL.createObjectURL(r);j({path:o,name:e}),URL.revokeObjectURL(o)}async function sn(t,e=800,n=800,r=.8){if(t.type.startsWith("image/"))return new Promise(o=>{const c=document.createElement("canvas"),u=c.getContext("2d"),s=new Image;s.onload=()=>{let{width:f,height:a}=s;if(f>e||a>n){const _=Math.min(e/f,n/a);f*=_,a*=_}c.width=f,c.height=a,u?.drawImage(s,0,0,f,a),c.toBlob(_=>{if(_){const d=new File([_],t.name,{type:t.type});o(d)}else o(void 0)},t.type,r)},s.src=URL.createObjectURL(t)})}function fn(t){const e=F(t.name),n=D(t.name);let r="";return t.size<1024?r=`${t.size} B`:t.size<1024*1024?r=`${(t.size/1024).toFixed(2)} KB`:t.size<1024*1024*1024?r=`${(t.size/(1024*1024)).toFixed(2)} MB`:r=`${(t.size/(1024*1024*1024)).toFixed(2)} GB`,{name:t.name,size:t.size,size_text:r,type:t.type,extension:e,name_without_extension:n}}function an(t){const e=F(t),n=D(t),r=Date.now(),o=Math.random().toString(36).substring(2,8);return e?`${n}_${r}_${o}.${e}`:`${n}_${r}_${o}`}function et(t){return/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.test(t)}function ln(t,e,n){if(!et(t)||!et(e))return t;n=Math.max(Math.min(Number(n),1),0);const r=b(t),o=b(e);if(!r||!o)return t;const c=Math.round(r.r*(1-n)+o.r*n),u=Math.round(r.g*(1-n)+o.g*n),s=Math.round(r.b*(1-n)+o.b*n);return $(c,u,s)}function _n(t){const e=b(t);return e?`${e.r},${e.g},${e.b}`:"0,0,0"}function b(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:null}function $(t,e,n){return t=Math.max(0,Math.min(255,Math.round(t))),e=Math.max(0,Math.min(255,Math.round(e))),n=Math.max(0,Math.min(255,Math.round(n))),`#${((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1)}`}function dn(t,e,n,r){return $(t,e,n)}function hn(t,e){const n=b(t);if(!n)return t;e=Math.max(0,Math.min(1,e));const r=Math.min(255,Math.round(n.r+(255-n.r)*e)),o=Math.min(255,Math.round(n.g+(255-n.g)*e)),c=Math.min(255,Math.round(n.b+(255-n.b)*e));return $(r,o,c)}function mn(t,e){const n=b(t);if(!n)return t;e=Math.max(0,Math.min(1,e));const r=Math.max(0,Math.round(n.r*(1-e))),o=Math.max(0,Math.round(n.g*(1-e))),c=Math.max(0,Math.round(n.b*(1-e)));return $(r,o,c)}function P(t){const e=b(t);return e?(e.r*299+e.g*587+e.b*114)/1e3>128:!1}function gn(t){return!P(t)}function yn(t){return P(t)?"#000000":"#FFFFFF"}function pn(t,e=200,n=!1){let r;return function(...o){const c=this;if(r&&clearTimeout(r),n){const u=!r;if(r=setTimeout(()=>{r=void 0},e),u)return t.apply(c,o)}else r=setTimeout(()=>{t.apply(c,o)},e)}}function bn(t,e=200,n={}){const{leading:r=!0,trailing:o=!0}=n;let c=0,u,s,f;return function(...a){const _=this,d=Date.now();if(c===0){r&&t.apply(_,a),c=d;return}s=a,f=_;const v=d-c;if(v>=e){u&&(clearTimeout(u),u=void 0),t.apply(_,a),c=d;return}!u&&o&&(u=setTimeout(()=>{s&&(t.apply(f,s),c=Date.now()),u=void 0,s=void 0,f=void 0},e-v))}}function wn(t){const e=t.length;function n(...r){return r.length>=e?t.apply(this,r):function(...o){return n.apply(this,[...r,...o])}}return n}function vn(...t){return function(e){return t.reduceRight((n,r)=>r(n),e)}}function Mn(...t){return function(e){return t.reduce((n,r)=>r(n),e)}}function Nn(t,e=1e3){return new Promise(n=>{setTimeout(()=>{n(t())},e)})}async function nt(t,e=3,n=1e3){try{return await t()}catch(r){if(e<=0)throw r;return await new Promise(o=>setTimeout(o,n)),nt(t,e-1,n)}}function On(t){let e=!1,n;return function(...r){return e||(e=!0,n=t.apply(this,r)),n}}function $n(t){const e=new Map;return function(...n){const r=JSON.stringify(n);if(e.has(r))return e.get(r);const o=t.apply(this,n);return e.set(r,o),o}}async function En(t,e=!0){if(e)return Promise.all(t.map(n=>n()));{const n=[];for(const r of t)n.push(await r());return n}}function Sn(t,e=5e3,n="Operation timed out"){return Promise.race([Promise.resolve(t()),new Promise((r,o)=>{setTimeout(()=>{o(new Error(n))},e)})])}const y=new Map;let A=null;H&&(document.addEventListener("mousedown",t=>{A=t}),document.addEventListener("mouseup",t=>{for(const e of y.values())for(const{document_handler:n}of e)A&&n(t,A);A=null}));function rt(t,e){const n=[];return Array.isArray(e.arg)?n.push(...e.arg.filter(L)):L(e.arg)&&n.push(e.arg),function(r,o){const c=r.target,u=o.target;if(!c||!u||!e.instance)return;const s=t.contains(c)||t.contains(u),f=t===c,a=n.some(d=>d&&(d.contains(c)||d===u));let _=!1;try{const d=e.instance.popperRef;d&&(_=d.contains(c)||d.contains(u))}catch{}s||f||a||_||typeof e.value=="function"&&e.value(r,o)}}const ot={beforeMount(t,e){y.has(t)||y.set(t,[]),y.get(t)?.push({document_handler:rt(t,e),binding_fn:e.value})},updated(t,e){y.has(t)||y.set(t,[]);const n=y.get(t);if(!n)return;const r=n.findIndex(c=>c.binding_fn===e.oldValue),o={document_handler:rt(t,e),binding_fn:e.value};r>=0?n.splice(r,1,o):n.push(o)},unmounted(t){y.delete(t)}};function kn(t){t.directive("click-outside",ot)}i.ClickOutside=ot,i.add_class=De,i.add_tree_node=Kt,i.add_tree_node_path=Bt,i.auto_size=xe,i.batch_execution=En,i.build_tree=Pt,i.calculate_percentage=fe,i.ceil=ue,i.clamp=ee,i.clear_expired_storage=ye,i.clear_storage=de,i.clone_tree=Xt,i.compose=vn,i.compress_image=sn,i.create_element=Ve,i.create_file_from_blob=cn,i.curry=wn,i.darken=mn,i.debounce=pn,i.decrypt_storage=ve,i.deep_assign=G,i.deep_clone=k,i.deep_equal=I,i.delay_execution=Nn,i.diff_objects=Le,i.download_file=j,i.download_files=tn,i.download_text_file=un,i.encrypt_storage=we,i.filter_tree=Wt,i.find_tree_node=B,i.find_tree_node_by_key=T,i.flatten_object=Q,i.flatten_tree_to_array=Vt,i.floor=se,i.format_currency=te,i.generate_unique_file_name=an,i.get_all_storage_keys=Y,i.get_attribute=Be,i.get_batch_storage=Ne,i.get_contrast_color=yn,i.get_decimal_part=ie,i.get_document_size=Ze,i.get_element=Te,i.get_element_position=tt,i.get_element_rect=O,i.get_element_size=Ke,i.get_elements=je,i.get_file_extension=F,i.get_file_info=fn,i.get_file_name_without_extension=D,i.get_integer_part=oe,i.get_object_value=Ie,i.get_parent_by_class=X,i.get_rgb=_n,i.get_storage=V,i.get_storage_with_expiry=me,i.get_style=We,i.get_token=ae,i.get_tree_depth=Jt,i.get_tree_node_ancestors=qt,i.get_tree_node_descendants=Ut,i.get_window_size=Xe,i.guid=st,i.has_class=Ce,i.has_storage=ge,i.hex_to_rgb=b,i.is_array=l,i.is_boolean=vt,i.is_client=H,i.is_completely_in_viewport=Qe,i.is_dark=gn,i.is_date=W,i.is_element=L,i.is_email=At,i.is_empty=$t,i.is_empty_object=$e,i.is_even=re,i.is_falsy=St,i.is_function=p,i.is_hex_color=zt,i.is_html_element=kt,i.is_in_viewport=Ge,i.is_ip=Tt,i.is_light=P,i.is_mobile=Ft,i.is_null=pt,i.is_number=m,i.is_object=h,i.is_plain_object=bt,i.is_port=jt,i.is_promise=Ot,i.is_reg_exp=Mt,i.is_string=z,i.is_string_number=It,i.is_symbol=Nt,i.is_truthy=Et,i.is_undefined=yt,i.is_url=Lt,i.is_valid_date=wt,i.lighten=hn,i.memoize=$n,i.merge_objects=Ae,i.mix=ln,i.off=Je,i.omit=Se,i.on=qe,i.once=On,i.pick=Ee,i.pipe=Mn,i.random_boolean=ft,i.random_color=lt,i.random_element=w,i.random_elements=at,i.random_email=ht,i.random_float=ut,i.random_id=M,i.random_int=it,i.random_int_range=ct,i.random_len_string=N,i.random_number_string=C,i.random_password=_t,i.random_phone=dt,i.random_string=R,i.random_url=mt,i.read_file=nn,i.remove_attribute=Ue,i.remove_batch_storage=Oe,i.remove_class=Pe,i.remove_storage=K,i.remove_token=_e,i.remove_tree_node=Yt,i.retry=nt,i.rgb_to_hex=$,i.rgba_to_hex=dn,i.round=ce,i.scroll_footer=ze,i.scroll_to_element=Ye,i.search_tree=xt,i.set_attribute=x,i.set_batch_storage=Me,i.set_object_value=Fe,i.set_storage=J,i.set_storage_with_expiry=he,i.set_style=He,i.set_styles=Z,i.set_token=le,i.setupDirectives=kn,i.shuffle_array=gt,i.sort_tree=Qt,i.thousand_separator=U,i.throttle=bn,i.timeout=Sn,i.to_base64=en,i.to_fixed=q,i.to_number=E,i.to_percentage=ne,i.toggle_class=Re,i.transform_tree=Ht,i.traverse_tree_breadth_first=Ct,i.traverse_tree_depth_first=Rt,i.tree_flat=Dt,i.unflatten_object=ke,i.update_tree_node=Gt,i.validate_file_size=rn,i.validate_file_type=on,i.validate_tree=Zt,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
@@ -1,5 +1,4 @@
1
1
  import { is_client, is_element } from "../utils/is.js";
2
- import "dayjs";
3
2
  const node_list = /* @__PURE__ */ new Map();
4
3
  let start_click = null;
5
4
  if (is_client) {
package/lib/index.js CHANGED
@@ -4,12 +4,10 @@ import { add_tree_node, add_tree_node_path, build_tree, clone_tree, filter_tree,
4
4
  import { calculate_percentage, ceil, clamp, floor, format_currency, get_decimal_part, get_integer_part, is_even, round, thousand_separator, to_fixed, to_number, to_percentage } from "./utils/number.js";
5
5
  import { clear_expired_storage, clear_storage, decrypt_storage, encrypt_storage, get_all_storage_keys, get_batch_storage, get_storage, get_storage_with_expiry, get_token, has_storage, remove_batch_storage, remove_storage, remove_token, set_batch_storage, set_storage, set_storage_with_expiry, set_token } from "./utils/storage.js";
6
6
  import { deep_assign, deep_clone, deep_equal, diff_objects, flatten_object, get_object_value, is_empty_object, merge_objects, omit, pick, set_object_value, unflatten_object } from "./utils/object.js";
7
- import { add_class, create_element, get_attribute, get_document_size, get_element, get_element_position, get_element_rect, get_element_size, get_elements, get_parent_by_class, get_style, get_window_size, has_class, is_completely_in_viewport, is_in_viewport, off, on, remove_attribute, remove_class, scroll_footer, scroll_to_element, set_attribute, set_style, set_styles, toggle_class } from "./utils/dom.js";
7
+ import { add_class, auto_size, create_element, get_attribute, get_document_size, get_element, get_element_position, get_element_rect, get_element_size, get_elements, get_parent_by_class, get_style, get_window_size, has_class, is_completely_in_viewport, is_in_viewport, off, on, remove_attribute, remove_class, scroll_footer, scroll_to_element, set_attribute, set_style, set_styles, toggle_class } from "./utils/dom.js";
8
8
  import { compress_image, create_file_from_blob, download_file, download_files, download_text_file, generate_unique_file_name, get_file_extension, get_file_info, get_file_name_without_extension, read_file, to_base64, validate_file_size, validate_file_type } from "./utils/file.js";
9
9
  import { darken, get_contrast_color, get_rgb, hex_to_rgb, is_dark, is_light, lighten, mix, rgb_to_hex, rgba_to_hex } from "./utils/color.js";
10
10
  import { batch_execution, compose, curry, debounce, delay_execution, memoize, once, pipe, retry, throttle, timeout } from "./utils/share.js";
11
- import * as date from "./utils/date.js";
12
- import * as echarts from "./utils/echarts.js";
13
11
  import { setupDirectives } from "./directives/index.js";
14
12
  import { default as default2 } from "./directives/click_outside.js";
15
13
  export {
@@ -17,6 +15,7 @@ export {
17
15
  add_class,
18
16
  add_tree_node,
19
17
  add_tree_node_path,
18
+ auto_size,
20
19
  batch_execution,
21
20
  build_tree,
22
21
  calculate_percentage,
@@ -31,7 +30,6 @@ export {
31
30
  create_file_from_blob,
32
31
  curry,
33
32
  darken,
34
- date,
35
33
  debounce,
36
34
  decrypt_storage,
37
35
  deep_assign,
@@ -42,7 +40,6 @@ export {
42
40
  download_file,
43
41
  download_files,
44
42
  download_text_file,
45
- echarts,
46
43
  encrypt_storage,
47
44
  filter_tree,
48
45
  find_tree_node,
@@ -181,3 +181,10 @@ export declare function get_document_size(): {
181
181
  width: number;
182
182
  height: number;
183
183
  };
184
+ /**
185
+ * 基于基准宽度自适应尺寸
186
+ * @param size 原始尺寸
187
+ * @param deflate_width 基准宽度,默认1920
188
+ * @returns 自适应后的尺寸
189
+ */
190
+ export declare function auto_size(size: number, deflate_width?: number): number;
package/lib/utils/dom.js CHANGED
@@ -171,8 +171,15 @@ function get_document_size() {
171
171
  )
172
172
  };
173
173
  }
174
+ function auto_size(size, deflate_width = 1920) {
175
+ let client_width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
176
+ if (!client_width) return size;
177
+ let scale = client_width / deflate_width;
178
+ return Number((size * scale).toFixed(3));
179
+ }
174
180
  export {
175
181
  add_class,
182
+ auto_size,
176
183
  create_element,
177
184
  get_attribute,
178
185
  get_document_size,
@@ -1,10 +1,3 @@
1
- /**
2
- * Echarts图表字体、间距自适应
3
- * @param size 原始尺寸
4
- * @param deflate_width 基准宽度,默认1920
5
- * @returns 自适应后的尺寸
6
- */
7
- export declare function auto_size(size: number, deflate_width?: number): number;
8
1
  /**
9
2
  * Echarts线性渐变颜色
10
3
  * @param type 渐变类型,'v'为垂直渐变,'h'为水平渐变
@@ -1,9 +1,4 @@
1
- function auto_size(size, deflate_width = 1920) {
2
- let client_width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
3
- if (!client_width) return size;
4
- let scale = client_width / deflate_width;
5
- return Number((size * scale).toFixed(3));
6
- }
1
+ import { on, off } from "./dom.js";
7
2
  function get_chart_gradient_color(type, start_color, end_color) {
8
3
  return {
9
4
  type: "linear",
@@ -78,9 +73,9 @@ function make_chart_responsive(chart, debounce_time = 200) {
78
73
  resize_chart(chart);
79
74
  }, debounce_time);
80
75
  };
81
- window.addEventListener("resize", resize_handler);
76
+ on(window, "resize", resize_handler);
82
77
  return () => {
83
- window.removeEventListener("resize", resize_handler);
78
+ off(window, "resize", resize_handler);
84
79
  clearTimeout(resize_timer);
85
80
  };
86
81
  }
@@ -208,7 +203,6 @@ function aggregate_chart_data(data, group_key, value_key, aggregator = (values)
208
203
  export {
209
204
  add_chart_listener,
210
205
  aggregate_chart_data,
211
- auto_size,
212
206
  destroy_chart,
213
207
  destroy_charts,
214
208
  export_chart_image,
@@ -8,5 +8,3 @@ export * from './dom';
8
8
  export * from './file';
9
9
  export * from './color';
10
10
  export * from './share';
11
- export * as date from './date';
12
- export * as echarts from './echarts';
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@qy_better_lib/core",
3
3
  "type": "module",
4
4
  "private": false,
5
- "version": "0.2.4",
5
+ "version": "0.2.6",
6
6
  "description": "qy better lib core",
7
7
  "author": "luhuiming",
8
8
  "license": "MIT",
@@ -42,7 +42,15 @@
42
42
  "types": "./lib/*/index.d.ts"
43
43
  },
44
44
  "./directives/*": "./lib/directives/*/*.js",
45
- "./utils/*": "./lib/utils/*.js"
45
+ "./utils/*": "./lib/utils/*.js",
46
+ "./echarts": {
47
+ "import": "./lib/utils/echarts.js",
48
+ "types": "./lib/utils/echarts.d.ts"
49
+ },
50
+ "./date": {
51
+ "import": "./lib/utils/date.js",
52
+ "types": "./lib/utils/date.d.ts"
53
+ }
46
54
  },
47
55
  "peerDependencies": {
48
56
  "dayjs": "^1.11.19"