@qy_better_lib/core 0.2.5 → 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 +20 -18
- package/dist/core.min.js +1 -1
- package/lib/index.js +2 -1
- package/lib/utils/dom.d.ts +7 -0
- package/lib/utils/dom.js +7 -0
- package/lib/utils/echarts.d.ts +0 -7
- package/lib/utils/echarts.js +3 -9
- package/package.json +1 -1
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):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 H(t){return Object.prototype.toString.call(t)==="[object Date]"}function wt(t){return H(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 W=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 At(t){return/^1[3-9]\d{9}$/.test(t)}function Ft(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 Ht(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 Wt(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 Ae(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 Fe(...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 He(t,e){return t?window.getComputedStyle(t).getPropertyValue(e):""}function We(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 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 xe(t){t.forEach(e=>{j({path:e.url,name:e.name})})}async function tn(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 en(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 D(t){if(!t)return"";const e=t.lastIndexOf(".");return e===-1?t:t.substring(0,e)}function nn(t,e){return t.size<=e}function rn(t,e){const n=A(t.name);return e.includes(n)}function on(t,e,n){return new File([t],e,{type:n})}function cn(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 un(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 sn(t){const e=A(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 fn(t){const e=A(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 an(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 ln(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 _n(t,e,n,r){return $(t,e,n)}function dn(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 hn(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 mn(t){return!P(t)}function gn(t){return P(t)?"#000000":"#FFFFFF"}function yn(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 pn(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 bn(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 wn(...t){return function(e){return t.reduceRight((n,r)=>r(n),e)}}function vn(...t){return function(e){return t.reduce((n,r)=>r(n),e)}}function Mn(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 Nn(t){let e=!1,n;return function(...r){return e||(e=!0,n=t.apply(this,r)),n}}function On(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 $n(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 En(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 F=null;W&&(document.addEventListener("mousedown",t=>{F=t}),document.addEventListener("mouseup",t=>{for(const e of y.values())for(const{document_handler:n}of e)F&&n(t,F);F=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 Sn(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.batch_execution=$n,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=wn,i.compress_image=un,i.create_element=Ve,i.create_file_from_blob=on,i.curry=bn,i.darken=hn,i.debounce=yn,i.decrypt_storage=ve,i.deep_assign=G,i.deep_clone=k,i.deep_equal=I,i.delay_execution=Mn,i.diff_objects=Le,i.download_file=j,i.download_files=xe,i.download_text_file=cn,i.encrypt_storage=we,i.filter_tree=Ht,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=fn,i.get_all_storage_keys=Y,i.get_attribute=Be,i.get_batch_storage=Ne,i.get_contrast_color=gn,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=A,i.get_file_info=sn,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=ln,i.get_storage=V,i.get_storage_with_expiry=me,i.get_style=He,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=W,i.is_completely_in_viewport=Qe,i.is_dark=mn,i.is_date=H,i.is_element=L,i.is_email=Ft,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=At,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=dn,i.memoize=On,i.merge_objects=Fe,i.mix=an,i.off=Je,i.omit=Se,i.on=qe,i.once=Nn,i.pick=Ee,i.pipe=vn,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=en,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=_n,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=Ae,i.set_storage=J,i.set_storage_with_expiry=he,i.set_style=We,i.set_styles=Z,i.set_token=le,i.setupDirectives=Sn,i.shuffle_array=gt,i.sort_tree=Qt,i.thousand_separator=U,i.throttle=pn,i.timeout=En,i.to_base64=tn,i.to_fixed=q,i.to_number=E,i.to_percentage=ne,i.toggle_class=Re,i.transform_tree=Wt,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=nn,i.validate_file_type=rn,i.validate_tree=Zt,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"})}));
|
package/lib/index.js
CHANGED
|
@@ -4,7 +4,7 @@ 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";
|
|
@@ -15,6 +15,7 @@ export {
|
|
|
15
15
|
add_class,
|
|
16
16
|
add_tree_node,
|
|
17
17
|
add_tree_node_path,
|
|
18
|
+
auto_size,
|
|
18
19
|
batch_execution,
|
|
19
20
|
build_tree,
|
|
20
21
|
calculate_percentage,
|
package/lib/utils/dom.d.ts
CHANGED
|
@@ -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,
|
package/lib/utils/echarts.d.ts
CHANGED
package/lib/utils/echarts.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
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
|
|
76
|
+
on(window, "resize", resize_handler);
|
|
82
77
|
return () => {
|
|
83
|
-
window
|
|
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,
|