@ithinkdt/ui 4.0.0-54 → 4.0.0-600

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.
@@ -1,183 +0,0 @@
1
- import { g as useStyle, i as cM, n as cB, r as cE, t as c } from "./use-style-DcT-1dj4.js";
2
- import { Fragment, createVNode, defineComponent, h, nextTick, reactive, ref, shallowRef, toRef, watch } from "vue";
3
- import { promiseTimeout, useEventListener } from "@vueuse/core";
4
- import { NTooltip } from "ithinkdt-ui";
5
- import { useElementIntersectionRect } from "@ithinkdt/common/composables";
6
- import { string2dom } from "@ithinkdt/common/dom";
7
- import { debounce } from "@ithinkdt/common/fn";
8
- var Tooltip = /* @__PURE__ */ Symbol("tooltip-dir"), current = /* @__PURE__ */ shallowRef(), _update;
9
- const TooltipDirectiveProvider = /* @__PURE__ */ defineComponent({
10
- name: "TooltipDirectiveProvider",
11
- props: { delay: {
12
- type: Number,
13
- default: 180
14
- } },
15
- setup(d) {
16
- let k = shallowRef(), A = reactive({
17
- show: !1,
18
- tip: void 0,
19
- placement: "top",
20
- x: 0,
21
- y: 0
22
- });
23
- return _update = async () => {
24
- if (!current.value) return;
25
- d.delay > 0 && await promiseTimeout(d.delay);
26
- let j = current.value, M = j?.[Tooltip];
27
- if (!M) return;
28
- let N = M.tip;
29
- k.value = typeof N == "function" ? N : () => N || j.attributes.getNamedItem("title") || j.textContent;
30
- let { auto: P } = M.binding.modifiers;
31
- if (!P || j.firstChild.offsetWidth > j.clientWidth || j.firstChild.offsetHeight > j.clientHeight) {
32
- A.show = !0;
33
- let d = j.getBoundingClientRect();
34
- switch (A.placement = Object.keys(M.binding.modifiers).find((d) => [
35
- "top",
36
- "right",
37
- "left",
38
- "bottom"
39
- ].find((k) => d.startsWith(k))) ?? "top", A.placement.split("-")[0]) {
40
- case "top":
41
- A.x = d.left + d.width / 2, A.y = d.top;
42
- break;
43
- case "right":
44
- A.x = d.left + d.width, A.y = d.top + d.height / 2;
45
- break;
46
- case "left":
47
- A.x = d.left, A.y = d.top + d.height / 2;
48
- break;
49
- case "bottom":
50
- A.x = d.left + d.width / 2, A.y = d.bottom;
51
- break;
52
- }
53
- } else A.show &&= !1;
54
- }, useEventListener("mouseover", (d) => {
55
- let k = d.target;
56
- !current.value || current.value?.contains(k) || (A.show = !1, current.value = void 0);
57
- }, { capture: !0 }), () => createVNode(NTooltip, {
58
- trigger: "manual",
59
- show: !!current.value && A.show,
60
- x: A.x,
61
- y: A.y,
62
- placement: A.placement,
63
- keepAliveOnHover: !0
64
- }, { default: () => [k.value?.()] });
65
- }
66
- });
67
- var _listener = (d) => {
68
- current.value = d.target, _update?.();
69
- };
70
- const vTooltip = {
71
- mounted(d, k) {
72
- d[Tooltip] = {
73
- binding: k,
74
- tip: k.value
75
- }, d.addEventListener("mouseenter", _listener);
76
- },
77
- updated(d, k) {
78
- d[Tooltip].binding = k, d[Tooltip].tip = k.value, _update();
79
- },
80
- beforeUnmount(d) {
81
- d[Tooltip] && d.removeEventListener("mouseenter", _listener), current.value === d && (current.value = void 0), delete d[Tooltip];
82
- }
83
- };
84
- var clsPrefix, isDark, style = /* @__PURE__ */ c([c(({ props: d }) => `:where(${d.bPrefix}spin-host)`, { position: "relative" }), cB("spin-directive", {
85
- zIndex: "999999",
86
- position: "absolute",
87
- color: "var(--color-primary)",
88
- display: "flex",
89
- flexDirection: "column",
90
- justifyContent: "center",
91
- alignItems: "center",
92
- gap: "4px",
93
- willChange: "background-color",
94
- backgroundColor: "rgb(var(--host-bg, 255 255 255) / 0)",
95
- transition: "background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
96
- }, [
97
- cE("tip, icon", {
98
- willChange: "opacity",
99
- opacity: "0",
100
- transition: "opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1)"
101
- }),
102
- cE("tip:empty", { display: "none" }),
103
- cM("spining", { backgroundColor: "rgb(var(--host-bg, 255 255 255) / 0.5)" }, [cE("tip, icon", { opacity: "1" })])
104
- ])]);
105
- const SpinDirectiveProvider = /* @__PURE__ */ defineComponent({
106
- name: "SpinDirectiveProvider",
107
- props: { dark: Boolean },
108
- setup(k) {
109
- return clsPrefix = useStyle("-spin-directive", style), isDark = toRef(k, "dark"), () => h(Fragment);
110
- }
111
- });
112
- var Spin = /* @__PURE__ */ Symbol("spin-dir"), updateLoading = (d, { value: k, modifiers: A }) => {
113
- if (d[Spin].loading.value = !!k, !d[Spin].loading.value) return;
114
- let j = A.dark || !A.light && isDark.value;
115
- d[Spin].spinEl.style.setProperty("--host-bg", j ? "0 0 0" : "255 255 255");
116
- };
117
- const vSpin = {
118
- beforeMount(d) {
119
- if (d.classList.add(`${clsPrefix.value}-spin-host`), d[Spin]) return;
120
- let k = ref(!1), A = string2dom(`
121
- <div class="${clsPrefix.value}-spin-directive">
122
- <svg class="${clsPrefix.value}-spin-directive__icon" width="32" height="32" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
123
- <g>
124
- <animateTransform attributeName="transform" type="rotate" values="0 100 100;270 100 100" begin="0s" dur="1.6s" fill="freeze" repeatCount="indefinite"></animateTransform>
125
- <circle fill="none" stroke="currentColor" stroke-width="18" stroke-linecap="round" cx="100" cy="100" r="92" stroke-dasharray="567" stroke-dashoffset="1848">
126
- <animateTransform attributeName="transform" type="rotate" values="0 100 100;135 100 100;450 100 100" begin="0s" dur="1.6s" fill="freeze" repeatCount="indefinite"></animateTransform>
127
- <animate attributeName="stroke-dashoffset" values="567;142;567" begin="0s" dur="1.6s" fill="freeze" repeatCount="indefinite"></animate>
128
- </circle>
129
- </g>
130
- </svg>
131
- <div class="${clsPrefix.value}-spin-directive__tip"></div>
132
- </div>
133
- `.trim()), j, { stop: M, update: N } = useElementIntersectionRect(d, (d) => {
134
- j = d, Object.assign(A.style, {
135
- left: 0,
136
- top: 0,
137
- width: j.width + "px",
138
- height: j.height + "px"
139
- });
140
- }, { interval: 1e3 / 30 }), P, F = watch(k, debounce(() => {
141
- if (k.value) P === void 0 && (clearTimeout(P), P = void 0), N(), d.append(A), requestAnimationFrame(() => {
142
- k.value && A.classList.add(`${clsPrefix.value}-spin-directive--spining`);
143
- });
144
- else {
145
- A.classList.remove(`${clsPrefix.value}-spin-directive--spining`);
146
- let d = () => {
147
- A.remove(), k && clearTimeout(k), k = null, A.removeEventListener("transitioncancel", d), A.removeEventListener("transitionend", d);
148
- };
149
- A.addEventListener("transitioncancel", d), A.addEventListener("transitionend", d);
150
- let k = setTimeout(d, 300);
151
- }
152
- }, 30));
153
- d[Spin] = {
154
- loading: k,
155
- spinEl: A,
156
- updateTip: () => {
157
- let k = A.querySelector(`.${clsPrefix.value}-spin-directive__tip`);
158
- k.textContent = d.dataset.spinTip;
159
- },
160
- stop: () => {
161
- M(), F();
162
- }
163
- };
164
- },
165
- mounted(d, k) {
166
- updateLoading(d, k), d[Spin].updateTip(), !d[Spin].observer && nextTick().then(() => {
167
- (d[Spin].observer = new MutationObserver((k) => {
168
- for (let A of k) if (A.type === "attributes" && A.attributeName === "data-spin-tip") {
169
- d[Spin].updateTip();
170
- return;
171
- }
172
- })).observe(d, {
173
- attributes: !0,
174
- attributeFilter: ["data-spin-tip"]
175
- });
176
- });
177
- },
178
- updated: updateLoading,
179
- beforeUnmount(d) {
180
- d[Spin].loading.value = !1, d[Spin].stop(), d[Spin].observer?.disconnect(), delete d[Spin];
181
- }
182
- };
183
- export { vTooltip as i, vSpin as n, TooltipDirectiveProvider as r, SpinDirectiveProvider as t };