next-flow-design 1.1.0 → 1.2.0

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,69 +1,1440 @@
1
- import { createComponent as e } from "@lit/react";
2
- import n from "react";
3
- import { a as t, N as a, b as s, c as o, d as c, e as r, f as m } from "../nf-slider-CZmx94AZ.js";
4
- const N = e({
1
+ import { createComponent as O } from "@lit/react";
2
+ import V from "react";
3
+ import { css as A, LitElement as q, html as p } from "lit";
4
+ const N = (t) => (e, s) => {
5
+ s !== void 0 ? s.addInitializer(() => {
6
+ customElements.define(t, e);
7
+ }) : customElements.define(t, e);
8
+ };
9
+ const G = globalThis, ie = G.ShadowRoot && (G.ShadyCSS === void 0 || G.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, xe = /* @__PURE__ */ Symbol(), ue = /* @__PURE__ */ new WeakMap();
10
+ let Pe = class {
11
+ constructor(e, s, o) {
12
+ if (this._$cssResult$ = !0, o !== xe) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
13
+ this.cssText = e, this.t = s;
14
+ }
15
+ get styleSheet() {
16
+ let e = this.o;
17
+ const s = this.t;
18
+ if (ie && e === void 0) {
19
+ const o = s !== void 0 && s.length === 1;
20
+ o && (e = ue.get(s)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), o && ue.set(s, e));
21
+ }
22
+ return e;
23
+ }
24
+ toString() {
25
+ return this.cssText;
26
+ }
27
+ };
28
+ const De = (t) => new Pe(typeof t == "string" ? t : t + "", void 0, xe), Me = (t, e) => {
29
+ if (ie) t.adoptedStyleSheets = e.map((s) => s instanceof CSSStyleSheet ? s : s.styleSheet);
30
+ else for (const s of e) {
31
+ const o = document.createElement("style"), r = G.litNonce;
32
+ r !== void 0 && o.setAttribute("nonce", r), o.textContent = s.cssText, t.appendChild(o);
33
+ }
34
+ }, pe = ie ? (t) => t : (t) => t instanceof CSSStyleSheet ? ((e) => {
35
+ let s = "";
36
+ for (const o of e.cssRules) s += o.cssText;
37
+ return De(s);
38
+ })(t) : t;
39
+ const { is: Oe, defineProperty: Ve, getOwnPropertyDescriptor: Ne, getOwnPropertyNames: Be, getOwnPropertySymbols: Te, getPrototypeOf: He } = Object, te = globalThis, fe = te.trustedTypes, Ue = fe ? fe.emptyScript : "", Ie = te.reactiveElementPolyfillSupport, j = (t, e) => t, J = { toAttribute(t, e) {
40
+ switch (e) {
41
+ case Boolean:
42
+ t = t ? Ue : null;
43
+ break;
44
+ case Object:
45
+ case Array:
46
+ t = t == null ? t : JSON.stringify(t);
47
+ }
48
+ return t;
49
+ }, fromAttribute(t, e) {
50
+ let s = t;
51
+ switch (e) {
52
+ case Boolean:
53
+ s = t !== null;
54
+ break;
55
+ case Number:
56
+ s = t === null ? null : Number(t);
57
+ break;
58
+ case Object:
59
+ case Array:
60
+ try {
61
+ s = JSON.parse(t);
62
+ } catch {
63
+ s = null;
64
+ }
65
+ }
66
+ return s;
67
+ } }, ne = (t, e) => !Oe(t, e), be = { attribute: !0, type: String, converter: J, reflect: !1, useDefault: !1, hasChanged: ne };
68
+ Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), te.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
69
+ let T = class extends HTMLElement {
70
+ static addInitializer(e) {
71
+ this._$Ei(), (this.l ??= []).push(e);
72
+ }
73
+ static get observedAttributes() {
74
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
75
+ }
76
+ static createProperty(e, s = be) {
77
+ if (s.state && (s.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((s = Object.create(s)).wrapped = !0), this.elementProperties.set(e, s), !s.noAccessor) {
78
+ const o = /* @__PURE__ */ Symbol(), r = this.getPropertyDescriptor(e, o, s);
79
+ r !== void 0 && Ve(this.prototype, e, r);
80
+ }
81
+ }
82
+ static getPropertyDescriptor(e, s, o) {
83
+ const { get: r, set: i } = Ne(this.prototype, e) ?? { get() {
84
+ return this[s];
85
+ }, set(n) {
86
+ this[s] = n;
87
+ } };
88
+ return { get: r, set(n) {
89
+ const l = r?.call(this);
90
+ i?.call(this, n), this.requestUpdate(e, l, o);
91
+ }, configurable: !0, enumerable: !0 };
92
+ }
93
+ static getPropertyOptions(e) {
94
+ return this.elementProperties.get(e) ?? be;
95
+ }
96
+ static _$Ei() {
97
+ if (this.hasOwnProperty(j("elementProperties"))) return;
98
+ const e = He(this);
99
+ e.finalize(), e.l !== void 0 && (this.l = [...e.l]), this.elementProperties = new Map(e.elementProperties);
100
+ }
101
+ static finalize() {
102
+ if (this.hasOwnProperty(j("finalized"))) return;
103
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(j("properties"))) {
104
+ const s = this.properties, o = [...Be(s), ...Te(s)];
105
+ for (const r of o) this.createProperty(r, s[r]);
106
+ }
107
+ const e = this[Symbol.metadata];
108
+ if (e !== null) {
109
+ const s = litPropertyMetadata.get(e);
110
+ if (s !== void 0) for (const [o, r] of s) this.elementProperties.set(o, r);
111
+ }
112
+ this._$Eh = /* @__PURE__ */ new Map();
113
+ for (const [s, o] of this.elementProperties) {
114
+ const r = this._$Eu(s, o);
115
+ r !== void 0 && this._$Eh.set(r, s);
116
+ }
117
+ this.elementStyles = this.finalizeStyles(this.styles);
118
+ }
119
+ static finalizeStyles(e) {
120
+ const s = [];
121
+ if (Array.isArray(e)) {
122
+ const o = new Set(e.flat(1 / 0).reverse());
123
+ for (const r of o) s.unshift(pe(r));
124
+ } else e !== void 0 && s.push(pe(e));
125
+ return s;
126
+ }
127
+ static _$Eu(e, s) {
128
+ const o = s.attribute;
129
+ return o === !1 ? void 0 : typeof o == "string" ? o : typeof e == "string" ? e.toLowerCase() : void 0;
130
+ }
131
+ constructor() {
132
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
133
+ }
134
+ _$Ev() {
135
+ this._$ES = new Promise((e) => this.enableUpdating = e), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), this.constructor.l?.forEach((e) => e(this));
136
+ }
137
+ addController(e) {
138
+ (this._$EO ??= /* @__PURE__ */ new Set()).add(e), this.renderRoot !== void 0 && this.isConnected && e.hostConnected?.();
139
+ }
140
+ removeController(e) {
141
+ this._$EO?.delete(e);
142
+ }
143
+ _$E_() {
144
+ const e = /* @__PURE__ */ new Map(), s = this.constructor.elementProperties;
145
+ for (const o of s.keys()) this.hasOwnProperty(o) && (e.set(o, this[o]), delete this[o]);
146
+ e.size > 0 && (this._$Ep = e);
147
+ }
148
+ createRenderRoot() {
149
+ const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
150
+ return Me(e, this.constructor.elementStyles), e;
151
+ }
152
+ connectedCallback() {
153
+ this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((e) => e.hostConnected?.());
154
+ }
155
+ enableUpdating(e) {
156
+ }
157
+ disconnectedCallback() {
158
+ this._$EO?.forEach((e) => e.hostDisconnected?.());
159
+ }
160
+ attributeChangedCallback(e, s, o) {
161
+ this._$AK(e, o);
162
+ }
163
+ _$ET(e, s) {
164
+ const o = this.constructor.elementProperties.get(e), r = this.constructor._$Eu(e, o);
165
+ if (r !== void 0 && o.reflect === !0) {
166
+ const i = (o.converter?.toAttribute !== void 0 ? o.converter : J).toAttribute(s, o.type);
167
+ this._$Em = e, i == null ? this.removeAttribute(r) : this.setAttribute(r, i), this._$Em = null;
168
+ }
169
+ }
170
+ _$AK(e, s) {
171
+ const o = this.constructor, r = o._$Eh.get(e);
172
+ if (r !== void 0 && this._$Em !== r) {
173
+ const i = o.getPropertyOptions(r), n = typeof i.converter == "function" ? { fromAttribute: i.converter } : i.converter?.fromAttribute !== void 0 ? i.converter : J;
174
+ this._$Em = r;
175
+ const l = n.fromAttribute(s, i.type);
176
+ this[r] = l ?? this._$Ej?.get(r) ?? l, this._$Em = null;
177
+ }
178
+ }
179
+ requestUpdate(e, s, o, r = !1, i) {
180
+ if (e !== void 0) {
181
+ const n = this.constructor;
182
+ if (r === !1 && (i = this[e]), o ??= n.getPropertyOptions(e), !((o.hasChanged ?? ne)(i, s) || o.useDefault && o.reflect && i === this._$Ej?.get(e) && !this.hasAttribute(n._$Eu(e, o)))) return;
183
+ this.C(e, s, o);
184
+ }
185
+ this.isUpdatePending === !1 && (this._$ES = this._$EP());
186
+ }
187
+ C(e, s, { useDefault: o, reflect: r, wrapped: i }, n) {
188
+ o && !(this._$Ej ??= /* @__PURE__ */ new Map()).has(e) && (this._$Ej.set(e, n ?? s ?? this[e]), i !== !0 || n !== void 0) || (this._$AL.has(e) || (this.hasUpdated || o || (s = void 0), this._$AL.set(e, s)), r === !0 && this._$Em !== e && (this._$Eq ??= /* @__PURE__ */ new Set()).add(e));
189
+ }
190
+ async _$EP() {
191
+ this.isUpdatePending = !0;
192
+ try {
193
+ await this._$ES;
194
+ } catch (s) {
195
+ Promise.reject(s);
196
+ }
197
+ const e = this.scheduleUpdate();
198
+ return e != null && await e, !this.isUpdatePending;
199
+ }
200
+ scheduleUpdate() {
201
+ return this.performUpdate();
202
+ }
203
+ performUpdate() {
204
+ if (!this.isUpdatePending) return;
205
+ if (!this.hasUpdated) {
206
+ if (this.renderRoot ??= this.createRenderRoot(), this._$Ep) {
207
+ for (const [r, i] of this._$Ep) this[r] = i;
208
+ this._$Ep = void 0;
209
+ }
210
+ const o = this.constructor.elementProperties;
211
+ if (o.size > 0) for (const [r, i] of o) {
212
+ const { wrapped: n } = i, l = this[r];
213
+ n !== !0 || this._$AL.has(r) || l === void 0 || this.C(r, void 0, i, l);
214
+ }
215
+ }
216
+ let e = !1;
217
+ const s = this._$AL;
218
+ try {
219
+ e = this.shouldUpdate(s), e ? (this.willUpdate(s), this._$EO?.forEach((o) => o.hostUpdate?.()), this.update(s)) : this._$EM();
220
+ } catch (o) {
221
+ throw e = !1, this._$EM(), o;
222
+ }
223
+ e && this._$AE(s);
224
+ }
225
+ willUpdate(e) {
226
+ }
227
+ _$AE(e) {
228
+ this._$EO?.forEach((s) => s.hostUpdated?.()), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e);
229
+ }
230
+ _$EM() {
231
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
232
+ }
233
+ get updateComplete() {
234
+ return this.getUpdateComplete();
235
+ }
236
+ getUpdateComplete() {
237
+ return this._$ES;
238
+ }
239
+ shouldUpdate(e) {
240
+ return !0;
241
+ }
242
+ update(e) {
243
+ this._$Eq &&= this._$Eq.forEach((s) => this._$ET(s, this[s])), this._$EM();
244
+ }
245
+ updated(e) {
246
+ }
247
+ firstUpdated(e) {
248
+ }
249
+ };
250
+ T.elementStyles = [], T.shadowRootOptions = { mode: "open" }, T[j("elementProperties")] = /* @__PURE__ */ new Map(), T[j("finalized")] = /* @__PURE__ */ new Map(), Ie?.({ ReactiveElement: T }), (te.reactiveElementVersions ??= []).push("2.1.2");
251
+ const Le = { attribute: !0, type: String, converter: J, reflect: !1, hasChanged: ne }, Fe = (t = Le, e, s) => {
252
+ const { kind: o, metadata: r } = s;
253
+ let i = globalThis.litPropertyMetadata.get(r);
254
+ if (i === void 0 && globalThis.litPropertyMetadata.set(r, i = /* @__PURE__ */ new Map()), o === "setter" && ((t = Object.create(t)).wrapped = !0), i.set(s.name, t), o === "accessor") {
255
+ const { name: n } = s;
256
+ return { set(l) {
257
+ const a = e.get.call(this);
258
+ e.set.call(this, l), this.requestUpdate(n, a, t, !0, l);
259
+ }, init(l) {
260
+ return l !== void 0 && this.C(n, void 0, t, l), l;
261
+ } };
262
+ }
263
+ if (o === "setter") {
264
+ const { name: n } = s;
265
+ return function(l) {
266
+ const a = this[n];
267
+ e.call(this, l), this.requestUpdate(n, a, t, !0, l);
268
+ };
269
+ }
270
+ throw Error("Unsupported decorator location: " + o);
271
+ };
272
+ function h(t) {
273
+ return (e, s) => typeof s == "object" ? Fe(t, e, s) : ((o, r, i) => {
274
+ const n = r.hasOwnProperty(i);
275
+ return r.constructor.createProperty(i, o), n ? Object.getOwnPropertyDescriptor(r, i) : void 0;
276
+ })(t, e, s);
277
+ }
278
+ function $(t) {
279
+ return h({ ...t, state: !0, attribute: !1 });
280
+ }
281
+ const K = A`:host{display:inline-flex;align-items:center;position:relative;width:var(--nf-width);height:var(--nf-height);padding:var(--nf-padding);margin:var(--nf-margin);font-size:var(--nf-text-font-size);font-weight:var(--nf-font-weight);color:var(--nf-color);background:var(--nf-background-color);border-radius:var(--nf-border-radius);border:1px solid var(--nf-border-color);outline:0;background-clip:padding-box;box-shadow:0 0 0 .15rem var(--nf-box-shadow-color);transition:color var(--nf-transition) ease-in-out,background-color var(--nf-transition) ease-in-out,border-color var(--nf-transition) ease-in-out,box-shadow var(--nf-transition) ease-in-out}:host(:focus){border-color:var(--nf-border-color-hover);box-shadow:0 0 0 .15rem var(--nf-box-shadow-color-focus);background:var(--nf-background-color-hover)}:host(:hover:not([disabled])){border-color:var(--nf-border-color-hover);background:var(--nf-background-color-hover)}:host([disabled]){cursor:not-allowed;opacity:.6;pointer-events:auto}:host([disabled]:hover){border-color:var(--nf-border-color);background:var(--nf-background-color)}`, je = A`:host{min-width:10rem;position:relative;display:inline-block}:host([disabled]) .input{cursor:not-allowed;color:var(--nf-color-disabled)}:host([disabled]) .toggle-password{cursor:not-allowed;pointer-events:none;opacity:.5}::slotted(*){position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.input{position:absolute;inset:0;padding:var(--nf-input-padding);outline:0;border:none;background:0 0;box-sizing:border-box;color:var(--nf-color);font-size:var(--nf-font-size);font-weight:var(--nf-font-weight);font-family:var(--nf-font-family),sans-serif}.input:has(.toggle-password){padding-right:2.5rem}.input .toggle-password{position:absolute;top:50%;right:.5rem;transform:translateY(-50%);background:0 0;border:none;cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;color:var(--nf-select-icon-color);transition:color var(--nf-transition-fast) ease;outline:0}.input .toggle-password:hover{color:var(--nf-icon-color-hover)}.input .toggle-password:active{color:var(--nf-icon-color-active)}.input .toggle-password svg{display:block}`;
282
+ var ze = Object.defineProperty, Re = Object.getOwnPropertyDescriptor, B = (t, e, s, o) => {
283
+ for (var r = o > 1 ? void 0 : o ? Re(e, s) : e, i = t.length - 1, n; i >= 0; i--)
284
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
285
+ return o && r && ze(e, s, r), r;
286
+ };
287
+ let w = class extends q {
288
+ constructor() {
289
+ super(...arguments), this.value = "", this.placeholder = "", this.type = "text", this.disabled = !1, this.showPassword = !1, this.onInput = (t) => {
290
+ t.stopPropagation();
291
+ const e = t.target?.value;
292
+ this.dispatchEvent(
293
+ new CustomEvent("input", {
294
+ detail: e,
295
+ bubbles: !0,
296
+ composed: !0
297
+ })
298
+ ), e !== void 0 && this.value !== e && this.dispatchEvent(
299
+ new CustomEvent("change", {
300
+ detail: e,
301
+ bubbles: !0,
302
+ composed: !0
303
+ })
304
+ );
305
+ }, this.onChange = (t) => {
306
+ t.stopPropagation();
307
+ const e = t.target?.value;
308
+ e !== void 0 && this.value !== e && this.dispatchEvent(
309
+ new CustomEvent("change", {
310
+ detail: e,
311
+ bubbles: !0,
312
+ composed: !0
313
+ })
314
+ );
315
+ }, this.onKeyDown = (t) => {
316
+ if (t.key === "Enter") {
317
+ t.stopPropagation();
318
+ const e = t.target?.value;
319
+ e !== void 0 && this.dispatchEvent(
320
+ new CustomEvent("pressEnter", {
321
+ detail: e,
322
+ bubbles: !0,
323
+ composed: !0
324
+ })
325
+ );
326
+ }
327
+ }, this.togglePasswordVisibility = (t) => {
328
+ this.disabled || (t.preventDefault(), t.stopPropagation(), this.showPassword = !this.showPassword);
329
+ };
330
+ }
331
+ render() {
332
+ const t = this.type === "password" && !this.showPassword ? "password" : "text", e = this.type === "password";
333
+ return p`<slot></slot><input .value=${t} ?disabled=${this.value} @change=${this.placeholder} @input=${this.maxLength ?? ""} @keydown=${this.disabled} class=input maxlength=${this.onInput} placeholder=${this.onChange} type=${this.onKeyDown}> ${e ? p`<button @click=${this.togglePasswordVisibility} aria-label=${this.showPassword ? "Hide password" : "Show password"} class=toggle-password tabindex=-1 type=button>${this.showPassword ? this.renderEyeOffIcon() : this.renderEyeIcon()}</button>` : ""}`;
334
+ }
335
+ renderEyeIcon() {
336
+ return p`<svg height=16 stroke=currentColor stroke-width=2 viewBox="0 0 24 24"width=16><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx=12 cy=12 r=3 /></svg>`;
337
+ }
338
+ renderEyeOffIcon() {
339
+ return p`<svg height=16 stroke=currentColor stroke-width=2 viewBox="0 0 24 24"width=16><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><line x1=1 x2=23 y1=1 y2=23 /></svg>`;
340
+ }
341
+ connectedCallback() {
342
+ this.style.transition = "none", super.connectedCallback(), requestAnimationFrame(() => {
343
+ this.style.transition = "";
344
+ });
345
+ }
346
+ };
347
+ w.styles = [K, je];
348
+ B([
349
+ h({ type: String })
350
+ ], w.prototype, "value", 2);
351
+ B([
352
+ h({ type: String })
353
+ ], w.prototype, "placeholder", 2);
354
+ B([
355
+ h({ type: String })
356
+ ], w.prototype, "type", 2);
357
+ B([
358
+ h({ type: Number })
359
+ ], w.prototype, "maxLength", 2);
360
+ B([
361
+ h({ type: Boolean, reflect: !0 })
362
+ ], w.prototype, "disabled", 2);
363
+ B([
364
+ $()
365
+ ], w.prototype, "showPassword", 2);
366
+ w = B([
367
+ N("nf-input")
368
+ ], w);
369
+ const Mt = O({
5
370
  tagName: "nf-input",
6
- elementClass: t,
7
- react: n,
371
+ elementClass: w,
372
+ react: V,
8
373
  events: {
9
374
  onInput: "input",
10
375
  onChange: "change",
11
376
  onPressEnter: "pressEnter"
12
377
  }
13
- }), g = e({
378
+ });
379
+ async function We(t) {
380
+ return new Promise((e) => setTimeout(e, t));
381
+ }
382
+ const qe = A`:host{min-width:5rem;-webkit-user-select:none;user-select:none;cursor:pointer}:host .text{flex-grow:1;display:inline-block;outline:0;white-space:nowrap}:host .icon{width:1.5rem;height:1.5rem;display:inline-block;fill:none;stroke:var(--nf-select-icon-color);stroke-width:1;stroke-linecap:round;margin:0 -.3rem 0 .5rem}:host .dropdown{position:absolute;top:2rem;right:0;left:0;padding:.3rem;background:var(--nf-dropdown-background);-webkit-backdrop-filter:blur(32px);backdrop-filter:blur(32px);border-radius:.5rem;opacity:0;pointer-events:none;color:var(--nf-color);box-shadow:0 0 1rem 0 var(--nf-dropdown-shadow);z-index:1000;transition:opacity var(--nf-transition) ease-out,transform var(--nf-transition) ease-out}:host .dropdown .item{white-space:nowrap;padding:.4rem .7rem;overflow:hidden;text-overflow:ellipsis;border-radius:.3rem;cursor:pointer}:host .dropdown .item-unselected:hover{background:var(--nf-item-background-hover);transition:background-color var(--nf-transition) ease-in-out}:host .dropdown .item-unselected:active{background:var(--nf-item-background-active)}:host .dropdown .item-selected{background-color:color-mix(in srgb,var(--nf-primary-color) 30%,transparent)}:host([disabled]){cursor:not-allowed}:host([disabled]) .text{color:var(--nf-color-disabled)}:host([disabled]) .icon{stroke:var(--nf-color-disabled)}:host([disabled]) .dropdown{display:none}:host(:focus:not([disabled])){color:var(--nf-focus-text-color)}:host(:focus:not([disabled])) .dropdown{transform:translateY(.5rem);opacity:1;pointer-events:auto}:host(:focus:not([disabled])) .cover{pointer-events:auto}`;
383
+ var Ke = Object.defineProperty, Ye = Object.getOwnPropertyDescriptor, Y = (t, e, s, o) => {
384
+ for (var r = o > 1 ? void 0 : o ? Ye(e, s) : e, i = t.length - 1, n; i >= 0; i--)
385
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
386
+ return o && r && Ke(e, s, r), r;
387
+ };
388
+ let C = class extends q {
389
+ constructor() {
390
+ super(...arguments), this.value = "", this.options = [], this.disabled = !1, this.showDropdown = !1, this.jumpCloseFlag = !1, this.timeoutId = null, this.onFocus = () => {
391
+ this.disabled || (this.timeoutId && clearTimeout(this.timeoutId), this.showDropdown = !0, this.jumpCloseFlag = !0);
392
+ }, this.onBlur = () => {
393
+ this.jumpCloseFlag = !1, this.timeoutId = setTimeout(() => {
394
+ this.showDropdown = !1, this.timeoutId = null;
395
+ }, 500);
396
+ }, this.onClick = () => {
397
+ if (!this.disabled) {
398
+ if (this.jumpCloseFlag) {
399
+ this.jumpCloseFlag = !1;
400
+ return;
401
+ }
402
+ this.blur();
403
+ }
404
+ };
405
+ }
406
+ async set(t) {
407
+ this.dispatchEvent(new CustomEvent("input", { detail: t, bubbles: !0, composed: !0 })), this.value !== t && this.dispatchEvent(new CustomEvent("change", { detail: t, bubbles: !0, composed: !0 })), await We(34), this.blur();
408
+ }
409
+ render() {
410
+ const t = this.options.findIndex((s) => s.value == this.value), e = t > -1 ? this.options[t]?.label : this.value;
411
+ return p`<div class=dropdown>${(this.showDropdown ? this.options : []).map(
412
+ (s) => p`<div @click=${() => this.set(s.value)} class="${this.value == s.value ? "item-selected" : "item-unselected"} item">${s.label}</div>`
413
+ )}</div><slot></slot><div class=text>${e}</div><svg class=icon height=24 viewBox="0 0 24 24"width=24><path d="M17 10l-5 5.5-5-5.5"/></svg>`;
414
+ }
415
+ connectedCallback() {
416
+ this.style.transition = "none", super.connectedCallback(), this.disabled || (this.tabIndex = 0), this.addEventListener("focus", this.onFocus), this.addEventListener("blur", this.onBlur), this.addEventListener("click", this.onClick), requestAnimationFrame(() => {
417
+ this.style.transition = "";
418
+ });
419
+ }
420
+ disconnectedCallback() {
421
+ super.disconnectedCallback(), this.removeEventListener("focus", this.onFocus), this.removeEventListener("blur", this.onBlur), this.removeEventListener("click", this.onClick);
422
+ }
423
+ };
424
+ C.styles = [K, qe];
425
+ Y([
426
+ h({ type: String })
427
+ ], C.prototype, "value", 2);
428
+ Y([
429
+ h({
430
+ type: Array,
431
+ converter: (t) => {
432
+ try {
433
+ if (typeof t == "string")
434
+ return JSON.parse(t);
435
+ if (typeof t == "object" && Array.isArray(t))
436
+ return t;
437
+ } catch (e) {
438
+ console.error("Failed to convert property options:", e);
439
+ }
440
+ return [];
441
+ }
442
+ })
443
+ ], C.prototype, "options", 2);
444
+ Y([
445
+ h({ type: Boolean, reflect: !0 })
446
+ ], C.prototype, "disabled", 2);
447
+ Y([
448
+ $()
449
+ ], C.prototype, "showDropdown", 2);
450
+ C = Y([
451
+ N("nf-select")
452
+ ], C);
453
+ const Ot = O({
14
454
  tagName: "nf-select",
15
- elementClass: a,
16
- react: n,
455
+ elementClass: C,
456
+ react: V,
17
457
  events: {
18
458
  onInput: "input",
19
459
  onChange: "change"
20
460
  }
21
- }), h = e({
461
+ });
462
+ const ae = globalThis, me = (t) => t, Q = ae.trustedTypes, ge = Q ? Q.createPolicy("lit-html", { createHTML: (t) => t }) : void 0, Ee = "$lit$", k = `lit$${Math.random().toFixed(9).slice(2)}$`, ke = "?" + k, Xe = `<${ke}>`, D = document, z = () => D.createComment(""), R = (t) => t === null || typeof t != "object" && typeof t != "function", le = Array.isArray, Ze = (t) => le(t) || typeof t?.[Symbol.iterator] == "function", oe = `[
463
+ \f\r]`, F = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, ve = /-->/g, _e = />/g, S = RegExp(`>|${oe}(?:([^\\s"'>=/]+)(${oe}*=${oe}*(?:[^
464
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), ye = /'/g, we = /"/g, Ce = /^(?:script|style|textarea|title)$/i, Ge = (t) => (e, ...s) => ({ _$litType$: t, strings: e, values: s }), re = Ge(1), M = /* @__PURE__ */ Symbol.for("lit-noChange"), f = /* @__PURE__ */ Symbol.for("lit-nothing"), $e = /* @__PURE__ */ new WeakMap(), P = D.createTreeWalker(D, 129);
465
+ function Ae(t, e) {
466
+ if (!le(t) || !t.hasOwnProperty("raw")) throw Error("invalid template strings array");
467
+ return ge !== void 0 ? ge.createHTML(e) : e;
468
+ }
469
+ const Je = (t, e) => {
470
+ const s = t.length - 1, o = [];
471
+ let r, i = e === 2 ? "<svg>" : e === 3 ? "<math>" : "", n = F;
472
+ for (let l = 0; l < s; l++) {
473
+ const a = t[l];
474
+ let c, u, d = -1, x = 0;
475
+ for (; x < a.length && (n.lastIndex = x, u = n.exec(a), u !== null); ) x = n.lastIndex, n === F ? u[1] === "!--" ? n = ve : u[1] !== void 0 ? n = _e : u[2] !== void 0 ? (Ce.test(u[2]) && (r = RegExp("</" + u[2], "g")), n = S) : u[3] !== void 0 && (n = S) : n === S ? u[0] === ">" ? (n = r ?? F, d = -1) : u[1] === void 0 ? d = -2 : (d = n.lastIndex - u[2].length, c = u[1], n = u[3] === void 0 ? S : u[3] === '"' ? we : ye) : n === we || n === ye ? n = S : n === ve || n === _e ? n = F : (n = S, r = void 0);
476
+ const E = n === S && t[l + 1].startsWith("/>") ? " " : "";
477
+ i += n === F ? a + Xe : d >= 0 ? (o.push(c), a.slice(0, d) + Ee + a.slice(d) + k + E) : a + k + (d === -2 ? l : E);
478
+ }
479
+ return [Ae(t, i + (t[s] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), o];
480
+ };
481
+ class W {
482
+ constructor({ strings: e, _$litType$: s }, o) {
483
+ let r;
484
+ this.parts = [];
485
+ let i = 0, n = 0;
486
+ const l = e.length - 1, a = this.parts, [c, u] = Je(e, s);
487
+ if (this.el = W.createElement(c, o), P.currentNode = this.el.content, s === 2 || s === 3) {
488
+ const d = this.el.content.firstChild;
489
+ d.replaceWith(...d.childNodes);
490
+ }
491
+ for (; (r = P.nextNode()) !== null && a.length < l; ) {
492
+ if (r.nodeType === 1) {
493
+ if (r.hasAttributes()) for (const d of r.getAttributeNames()) if (d.endsWith(Ee)) {
494
+ const x = u[n++], E = r.getAttribute(d).split(k), Z = /([.?@])?(.*)/.exec(x);
495
+ a.push({ type: 1, index: i, name: Z[2], strings: E, ctor: Z[1] === "." ? et : Z[1] === "?" ? tt : Z[1] === "@" ? st : se }), r.removeAttribute(d);
496
+ } else d.startsWith(k) && (a.push({ type: 6, index: i }), r.removeAttribute(d));
497
+ if (Ce.test(r.tagName)) {
498
+ const d = r.textContent.split(k), x = d.length - 1;
499
+ if (x > 0) {
500
+ r.textContent = Q ? Q.emptyScript : "";
501
+ for (let E = 0; E < x; E++) r.append(d[E], z()), P.nextNode(), a.push({ type: 2, index: ++i });
502
+ r.append(d[x], z());
503
+ }
504
+ }
505
+ } else if (r.nodeType === 8) if (r.data === ke) a.push({ type: 2, index: i });
506
+ else {
507
+ let d = -1;
508
+ for (; (d = r.data.indexOf(k, d + 1)) !== -1; ) a.push({ type: 7, index: i }), d += k.length - 1;
509
+ }
510
+ i++;
511
+ }
512
+ }
513
+ static createElement(e, s) {
514
+ const o = D.createElement("template");
515
+ return o.innerHTML = e, o;
516
+ }
517
+ }
518
+ function U(t, e, s = t, o) {
519
+ if (e === M) return e;
520
+ let r = o !== void 0 ? s._$Co?.[o] : s._$Cl;
521
+ const i = R(e) ? void 0 : e._$litDirective$;
522
+ return r?.constructor !== i && (r?._$AO?.(!1), i === void 0 ? r = void 0 : (r = new i(t), r._$AT(t, s, o)), o !== void 0 ? (s._$Co ??= [])[o] = r : s._$Cl = r), r !== void 0 && (e = U(t, r._$AS(t, e.values), r, o)), e;
523
+ }
524
+ class Qe {
525
+ constructor(e, s) {
526
+ this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = s;
527
+ }
528
+ get parentNode() {
529
+ return this._$AM.parentNode;
530
+ }
531
+ get _$AU() {
532
+ return this._$AM._$AU;
533
+ }
534
+ u(e) {
535
+ const { el: { content: s }, parts: o } = this._$AD, r = (e?.creationScope ?? D).importNode(s, !0);
536
+ P.currentNode = r;
537
+ let i = P.nextNode(), n = 0, l = 0, a = o[0];
538
+ for (; a !== void 0; ) {
539
+ if (n === a.index) {
540
+ let c;
541
+ a.type === 2 ? c = new X(i, i.nextSibling, this, e) : a.type === 1 ? c = new a.ctor(i, a.name, a.strings, this, e) : a.type === 6 && (c = new ot(i, this, e)), this._$AV.push(c), a = o[++l];
542
+ }
543
+ n !== a?.index && (i = P.nextNode(), n++);
544
+ }
545
+ return P.currentNode = D, r;
546
+ }
547
+ p(e) {
548
+ let s = 0;
549
+ for (const o of this._$AV) o !== void 0 && (o.strings !== void 0 ? (o._$AI(e, o, s), s += o.strings.length - 2) : o._$AI(e[s])), s++;
550
+ }
551
+ }
552
+ class X {
553
+ get _$AU() {
554
+ return this._$AM?._$AU ?? this._$Cv;
555
+ }
556
+ constructor(e, s, o, r) {
557
+ this.type = 2, this._$AH = f, this._$AN = void 0, this._$AA = e, this._$AB = s, this._$AM = o, this.options = r, this._$Cv = r?.isConnected ?? !0;
558
+ }
559
+ get parentNode() {
560
+ let e = this._$AA.parentNode;
561
+ const s = this._$AM;
562
+ return s !== void 0 && e?.nodeType === 11 && (e = s.parentNode), e;
563
+ }
564
+ get startNode() {
565
+ return this._$AA;
566
+ }
567
+ get endNode() {
568
+ return this._$AB;
569
+ }
570
+ _$AI(e, s = this) {
571
+ e = U(this, e, s), R(e) ? e === f || e == null || e === "" ? (this._$AH !== f && this._$AR(), this._$AH = f) : e !== this._$AH && e !== M && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : Ze(e) ? this.k(e) : this._(e);
572
+ }
573
+ O(e) {
574
+ return this._$AA.parentNode.insertBefore(e, this._$AB);
575
+ }
576
+ T(e) {
577
+ this._$AH !== e && (this._$AR(), this._$AH = this.O(e));
578
+ }
579
+ _(e) {
580
+ this._$AH !== f && R(this._$AH) ? this._$AA.nextSibling.data = e : this.T(D.createTextNode(e)), this._$AH = e;
581
+ }
582
+ $(e) {
583
+ const { values: s, _$litType$: o } = e, r = typeof o == "number" ? this._$AC(e) : (o.el === void 0 && (o.el = W.createElement(Ae(o.h, o.h[0]), this.options)), o);
584
+ if (this._$AH?._$AD === r) this._$AH.p(s);
585
+ else {
586
+ const i = new Qe(r, this), n = i.u(this.options);
587
+ i.p(s), this.T(n), this._$AH = i;
588
+ }
589
+ }
590
+ _$AC(e) {
591
+ let s = $e.get(e.strings);
592
+ return s === void 0 && $e.set(e.strings, s = new W(e)), s;
593
+ }
594
+ k(e) {
595
+ le(this._$AH) || (this._$AH = [], this._$AR());
596
+ const s = this._$AH;
597
+ let o, r = 0;
598
+ for (const i of e) r === s.length ? s.push(o = new X(this.O(z()), this.O(z()), this, this.options)) : o = s[r], o._$AI(i), r++;
599
+ r < s.length && (this._$AR(o && o._$AB.nextSibling, r), s.length = r);
600
+ }
601
+ _$AR(e = this._$AA.nextSibling, s) {
602
+ for (this._$AP?.(!1, !0, s); e !== this._$AB; ) {
603
+ const o = me(e).nextSibling;
604
+ me(e).remove(), e = o;
605
+ }
606
+ }
607
+ setConnected(e) {
608
+ this._$AM === void 0 && (this._$Cv = e, this._$AP?.(e));
609
+ }
610
+ }
611
+ class se {
612
+ get tagName() {
613
+ return this.element.tagName;
614
+ }
615
+ get _$AU() {
616
+ return this._$AM._$AU;
617
+ }
618
+ constructor(e, s, o, r, i) {
619
+ this.type = 1, this._$AH = f, this._$AN = void 0, this.element = e, this.name = s, this._$AM = r, this.options = i, o.length > 2 || o[0] !== "" || o[1] !== "" ? (this._$AH = Array(o.length - 1).fill(new String()), this.strings = o) : this._$AH = f;
620
+ }
621
+ _$AI(e, s = this, o, r) {
622
+ const i = this.strings;
623
+ let n = !1;
624
+ if (i === void 0) e = U(this, e, s, 0), n = !R(e) || e !== this._$AH && e !== M, n && (this._$AH = e);
625
+ else {
626
+ const l = e;
627
+ let a, c;
628
+ for (e = i[0], a = 0; a < i.length - 1; a++) c = U(this, l[o + a], s, a), c === M && (c = this._$AH[a]), n ||= !R(c) || c !== this._$AH[a], c === f ? e = f : e !== f && (e += (c ?? "") + i[a + 1]), this._$AH[a] = c;
629
+ }
630
+ n && !r && this.j(e);
631
+ }
632
+ j(e) {
633
+ e === f ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "");
634
+ }
635
+ }
636
+ class et extends se {
637
+ constructor() {
638
+ super(...arguments), this.type = 3;
639
+ }
640
+ j(e) {
641
+ this.element[this.name] = e === f ? void 0 : e;
642
+ }
643
+ }
644
+ class tt extends se {
645
+ constructor() {
646
+ super(...arguments), this.type = 4;
647
+ }
648
+ j(e) {
649
+ this.element.toggleAttribute(this.name, !!e && e !== f);
650
+ }
651
+ }
652
+ class st extends se {
653
+ constructor(e, s, o, r, i) {
654
+ super(e, s, o, r, i), this.type = 5;
655
+ }
656
+ _$AI(e, s = this) {
657
+ if ((e = U(this, e, s, 0) ?? f) === M) return;
658
+ const o = this._$AH, r = e === f && o !== f || e.capture !== o.capture || e.once !== o.once || e.passive !== o.passive, i = e !== f && (o === f || r);
659
+ r && this.element.removeEventListener(this.name, this, o), i && this.element.addEventListener(this.name, this, e), this._$AH = e;
660
+ }
661
+ handleEvent(e) {
662
+ typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, e) : this._$AH.handleEvent(e);
663
+ }
664
+ }
665
+ class ot {
666
+ constructor(e, s, o) {
667
+ this.element = e, this.type = 6, this._$AN = void 0, this._$AM = s, this.options = o;
668
+ }
669
+ get _$AU() {
670
+ return this._$AM._$AU;
671
+ }
672
+ _$AI(e) {
673
+ U(this, e);
674
+ }
675
+ }
676
+ const rt = ae.litHtmlPolyfillSupport;
677
+ rt?.(W, X), (ae.litHtmlVersions ??= []).push("3.3.2");
678
+ const it = (t, e, s) => {
679
+ const o = s?.renderBefore ?? e;
680
+ let r = o._$litPart$;
681
+ if (r === void 0) {
682
+ const i = s?.renderBefore ?? null;
683
+ o._$litPart$ = r = new X(e.insertBefore(z(), i), i, void 0, s ?? {});
684
+ }
685
+ return r._$AI(t), r;
686
+ };
687
+ const he = globalThis;
688
+ let H = class extends T {
689
+ constructor() {
690
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
691
+ }
692
+ createRenderRoot() {
693
+ const e = super.createRenderRoot();
694
+ return this.renderOptions.renderBefore ??= e.firstChild, e;
695
+ }
696
+ update(e) {
697
+ const s = this.render();
698
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = it(s, this.renderRoot, this.renderOptions);
699
+ }
700
+ connectedCallback() {
701
+ super.connectedCallback(), this._$Do?.setConnected(!0);
702
+ }
703
+ disconnectedCallback() {
704
+ super.disconnectedCallback(), this._$Do?.setConnected(!1);
705
+ }
706
+ render() {
707
+ return M;
708
+ }
709
+ };
710
+ H._$litElement$ = !0, H.finalized = !0, he.litElementHydrateSupport?.({ LitElement: H });
711
+ const nt = he.litElementPolyfillSupport;
712
+ nt?.({ LitElement: H });
713
+ (he.litElementVersions ??= []).push("4.2.2");
714
+ const at = A`:host{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;outline:0}:host[disabled]{cursor:not-allowed;opacity:.6}.switch-wrapper{position:relative;display:inline-block}.switch-container{position:relative;z-index:1;width:3.1rem;height:1.5rem;background-color:var(--nf-background-color);border-radius:.75rem;transition:background-color .2s ease;overflow:hidden}:host(:not([disabled]):not([checked])) .switch-container:hover{background:var(--nf-background-color-hover)}:host([checked]) .switch-container{background-color:var(--nf-primary-color,var(--primary-color))}:host([disabled]) .switch-container{opacity:.5}.ripple{position:absolute;border-radius:.875rem;inset:-.2rem;background-color:#6464641a;animation:ripple-animation 1s ease-out forwards;pointer-events:none;opacity:1}@keyframes ripple-animation{0%{opacity:0}20%{opacity:1}to{opacity:0}}.switch-thumb{position:absolute;top:.125rem;left:0;width:1.25rem;height:1.25rem;transition:transform .2s ease-in-out}.switch-thumb:before{content:\"\";position:absolute;top:0;left:0;width:1.25rem;height:1.25rem;background-color:#fff;border-radius:.625rem;box-shadow:0 .125rem .25rem #0003;transition:width .2s ease-in-out,transform .2s ease-in-out}:host(:not([checked])) .switch-thumb{transform:translate(.125rem)}:host(:not([checked])) .switch-thumb:active:before{width:1.625rem;border-radius:.625rem}:host([checked]) .switch-thumb{transform:translate(1.725rem)}:host([checked]) .switch-thumb:active:before{width:1.625rem;border-radius:.625rem;transform:translate(-.375rem)}:host(:focus) .switch-container{outline:.125rem solid var(--nf-primary-color,var(--primary-color));outline-offset:.125rem}`;
715
+ var lt = Object.defineProperty, ht = Object.getOwnPropertyDescriptor, ce = (t, e, s, o) => {
716
+ for (var r = o > 1 ? void 0 : o ? ht(e, s) : e, i = t.length - 1, n; i >= 0; i--)
717
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
718
+ return o && r && lt(e, s, r), r;
719
+ };
720
+ let I = class extends H {
721
+ constructor() {
722
+ super(...arguments), this.checked = !1, this.disabled = !1, this.rippleElement = null;
723
+ }
724
+ // 切换开关状态
725
+ toggleSwitch(t) {
726
+ this.disabled || (t.stopPropagation(), this.checked = !this.checked, this.dispatchEvent(
727
+ new CustomEvent("change", {
728
+ bubbles: !0,
729
+ composed: !0,
730
+ detail: this.checked
731
+ })
732
+ ), this.createRipple(t));
733
+ }
734
+ createRipple(t) {
735
+ const e = this.shadowRoot?.querySelector(".switch-wrapper");
736
+ if (!e) return;
737
+ const s = e.querySelector(".ripple");
738
+ s && e.removeChild(s);
739
+ const o = document.createElement("div");
740
+ o.classList.add("ripple"), e.appendChild(o), o.addEventListener("animationend", () => {
741
+ e.contains(o) && e.removeChild(o);
742
+ });
743
+ }
744
+ // 渲染开关组件
745
+ render() {
746
+ return re`<div class=switch-wrapper><div class=switch-container @click=${this.toggleSwitch} aria-checked=${this.checked} aria-disabled=${this.disabled} role=switch><div class=switch-thumb></div></div></div>`;
747
+ }
748
+ };
749
+ I.styles = [at];
750
+ ce([
751
+ h({ type: Boolean, reflect: !0 })
752
+ ], I.prototype, "checked", 2);
753
+ ce([
754
+ h({ type: Boolean, reflect: !0 })
755
+ ], I.prototype, "disabled", 2);
756
+ I = ce([
757
+ N("nf-switch")
758
+ ], I);
759
+ const Nt = O({
22
760
  tagName: "nf-switch",
23
- elementClass: s,
24
- react: n,
761
+ elementClass: I,
762
+ react: V,
25
763
  events: {
26
764
  onChange: "change"
27
765
  }
28
- }), C = e({
766
+ }), ct = A`:host{min-width:10rem;position:relative;display:inline-block;box-sizing:border-box;padding:0;overflow:hidden}.input-number-container{position:relative;width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box}.input-number{position:relative;flex:1;height:100%;outline:0;border:none;background:0 0;box-sizing:border-box;color:var(--nf-color);font-weight:var(--nf-font-weight);text-align:left}.input-number .input-number-input-wrapper{height:100%}.input-number .input-number-input-wrapper .input-number-input{background:0 0;width:100%;height:100%;text-align:start;border:0;outline:0;padding:0;box-sizing:border-box;color:var(--nf-color);font-size:var(--nf-font-size);font-weight:var(--nf-font-weight);font-family:var(--nf-font-family),sans-serif}.input-number::-webkit-inner-spin-button,.input-number::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input-number[type=number]{appearance:textfield}.input-number:hover .controls{width:1.5rem}.input-prefix{display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding-inline-start:.6125rem;color:var(--nf-color-secondary);font-size:var(--nf-font-size);pointer-events:none;-webkit-user-select:none;user-select:none}.input-prefix:not(:empty){padding-inline-end:.25rem}.input-suffix{display:flex;align-items:center;justify-content:center;color:var(--nf-color-secondary);font-size:var(--nf-font-size);pointer-events:none;-webkit-user-select:none;user-select:none}.input-suffix:not(:empty){padding-inline-end:.6125rem;padding-inline-start:.5rem}.controls{position:absolute;top:0;right:0;height:100%;width:0;overflow:hidden;display:flex;flex-direction:column;box-sizing:border-box;transition:width var(--nf-transition-fast) ease}.controls:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:.67px;background-color:#d9d9d9}:host([suffix]) .controls:after{content:\"\";position:absolute;right:0;top:0;bottom:0;width:.67px;background-color:#d9d9d9}.control-btn{flex:1;display:flex;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;transition:background-color var(--nf-transition-fast) ease;outline:0;-webkit-user-select:none;user-select:none}.control-btn:hover{background-color:#0000000d}.control-btn:active{background-color:#0000001a}.control-btn:focus-visible{background-color:#0000000d}.control-btn svg{display:block;pointer-events:none;fill:none;stroke:#00000073;stroke-width:1;stroke-linecap:round}.control-btn-up{border-bottom:.67px solid #d9d9d9}:host(:not([suffix])) .control-btn-up{border-top-right-radius:var(--nf-border-radius)}:host(:not([suffix])) .control-btn-down{border-bottom-right-radius:var(--nf-border-radius)}:host([disabled]) .input-number-input{cursor:not-allowed;color:var(--nf-color-disabled)}:host([disabled]) .input-prefix,:host([disabled]) .input-suffix{color:var(--nf-color-disabled)}:host([disabled]) .controls{display:none}:host([disabled]) .control-btn{cursor:not-allowed;pointer-events:none;opacity:.5}`;
767
+ var dt = Object.defineProperty, ut = Object.getOwnPropertyDescriptor, _ = (t, e, s, o) => {
768
+ for (var r = o > 1 ? void 0 : o ? ut(e, s) : e, i = t.length - 1, n; i >= 0; i--)
769
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
770
+ return o && r && dt(e, s, r), r;
771
+ };
772
+ let m = class extends q {
773
+ constructor() {
774
+ super(...arguments), this.value = 0, this.controls = !0, this.changeOnWheel = !0, this.step = 1, this.decimalSeparator = ".", this.prefix = "", this.suffix = "", this.disabled = !1, this.isInputFocused = !1, this.handleInput = (t) => {
775
+ t.stopPropagation();
776
+ const s = t.target.value;
777
+ this.dispatchEvent(
778
+ new CustomEvent("input", {
779
+ detail: s,
780
+ bubbles: !0,
781
+ composed: !0
782
+ })
783
+ );
784
+ }, this.handleChange = (t) => {
785
+ t.stopPropagation();
786
+ const e = t.target, s = this.parseInputValue(e.value);
787
+ if (s !== null) {
788
+ const o = this.clampValue(s);
789
+ o !== this.value && (this.value = o, this.dispatchEvent(
790
+ new CustomEvent("change", {
791
+ detail: o,
792
+ bubbles: !0,
793
+ composed: !0
794
+ })
795
+ ));
796
+ }
797
+ }, this.handleKeyDown = (t) => {
798
+ t.key === "Enter" ? (t.stopPropagation(), this.dispatchEvent(
799
+ new CustomEvent("pressEnter", {
800
+ detail: this.value,
801
+ bubbles: !0,
802
+ composed: !0
803
+ })
804
+ )) : t.key === "ArrowUp" ? (t.preventDefault(), this.handleStepChange(1)) : t.key === "ArrowDown" && (t.preventDefault(), this.handleStepChange(-1));
805
+ }, this.handleWheel = (t) => {
806
+ if (this.disabled || !this.changeOnWheel || !this.isInputFocused) return;
807
+ t.preventDefault();
808
+ const e = t.deltaY < 0 ? 1 : -1;
809
+ this.handleStepChange(e);
810
+ }, this.handleFocus = () => {
811
+ this.isInputFocused = !0;
812
+ }, this.handleBlur = () => {
813
+ this.isInputFocused = !1;
814
+ };
815
+ }
816
+ render() {
817
+ return p`<div class=input-number-container><div class=input-prefix>${this.prefix}</div><div class=input-number><div class=input-number-input-wrapper><input .value=${this.formatDisplayValue(this.value)} ?disabled=${this.disabled} @blur=${this.handleInput} @change=${this.handleChange} @focus=${this.handleKeyDown} @input=${this.handleFocus} @keydown=${this.handleBlur} @wheel=${this.handleWheel} class=input-number-input></div>${this.controls ? p`<div class=controls><button ?disabled=${this.disabled} @click=${() => {
818
+ this.handleStepChange(1);
819
+ }} aria-label="Increase value"class="control-btn control-btn-up"type=button><svg height=12 viewBox="0 0 24 24"width=12><path d="M6 14.6l6-6.6 6 6.6"/></svg></button><button ?disabled=${this.disabled} @click=${() => {
820
+ this.handleStepChange(-1);
821
+ }} aria-label="Decrease value"class="control-btn control-btn-down"type=button><svg height=12 viewBox="0 0 24 24"width=12><path d="M18 9.4l-6 6.6-6-6.6"/></svg></button></div>` : ""}</div>${this.suffix ? p`<div class=input-suffix>${this.suffix}</div>` : ""}</div>`;
822
+ }
823
+ formatDisplayValue(t) {
824
+ return isNaN(t) ? "" : t.toString().replace(".", this.decimalSeparator);
825
+ }
826
+ parseInputValue(t) {
827
+ if (!t) return null;
828
+ const e = t.replace(this.decimalSeparator, "."), s = parseFloat(e);
829
+ return isNaN(s) ? null : s;
830
+ }
831
+ clampValue(t) {
832
+ let e = t;
833
+ return this.min !== void 0 && (e = Math.max(e, this.min)), this.max !== void 0 && (e = Math.min(e, this.max)), e;
834
+ }
835
+ handleStepChange(t) {
836
+ if (this.disabled) return;
837
+ const e = this.clampValue(this.value + t * this.step);
838
+ e !== this.value && (this.value = e, this.dispatchEvent(
839
+ new CustomEvent("step", {
840
+ detail: e,
841
+ bubbles: !0,
842
+ composed: !0
843
+ })
844
+ ), this.dispatchEvent(
845
+ new CustomEvent("change", {
846
+ detail: e,
847
+ bubbles: !0,
848
+ composed: !0
849
+ })
850
+ ));
851
+ }
852
+ };
853
+ m.styles = [K, ct];
854
+ _([
855
+ h({ type: Number })
856
+ ], m.prototype, "value", 2);
857
+ _([
858
+ h({ type: Boolean })
859
+ ], m.prototype, "controls", 2);
860
+ _([
861
+ h({ type: Boolean })
862
+ ], m.prototype, "changeOnWheel", 2);
863
+ _([
864
+ h({ type: Number })
865
+ ], m.prototype, "min", 2);
866
+ _([
867
+ h({ type: Number })
868
+ ], m.prototype, "max", 2);
869
+ _([
870
+ h({ type: Number })
871
+ ], m.prototype, "step", 2);
872
+ _([
873
+ h({ type: String })
874
+ ], m.prototype, "decimalSeparator", 2);
875
+ _([
876
+ h({ type: String })
877
+ ], m.prototype, "prefix", 2);
878
+ _([
879
+ h({ type: String })
880
+ ], m.prototype, "suffix", 2);
881
+ _([
882
+ h({ type: Boolean, reflect: !0 })
883
+ ], m.prototype, "disabled", 2);
884
+ _([
885
+ $()
886
+ ], m.prototype, "isInputFocused", 2);
887
+ m = _([
888
+ N("nf-input-number")
889
+ ], m);
890
+ const Bt = O({
29
891
  tagName: "nf-input-number",
30
- elementClass: o,
31
- react: n,
892
+ elementClass: m,
893
+ react: V,
32
894
  events: {
33
895
  onInput: "input",
34
896
  onChange: "change",
35
897
  onPressEnter: "pressEnter",
36
898
  onStep: "step"
37
899
  }
38
- }), i = e({
900
+ }), pt = A`:host{cursor:pointer;-webkit-user-select:none;user-select:none}:host([disabled]){cursor:not-allowed;opacity:.6}.checkbox-container{position:relative;width:1rem;height:1rem;transition:opacity .2s ease}.checkbox-box{width:100%;height:100%;border-radius:.25rem;background-color:var(--nf-background-color);border:1px solid var(--nf-border-color);display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,border-color .2s ease}:host(:hover:not([checked]):not([disabled])) .checkbox-box{border-color:var(--nf-primary-color,var(--primary-color))}:host([checked]) .checkbox-box{background-color:var(--nf-primary-color,var(--primary-color));border-color:var(--nf-primary-color,var(--primary-color))}:host([disabled]) .checkbox-box{border-color:#ccc;background:#ccc;cursor:not-allowed;pointer-events:none}:host([disabled][checked]) .checkbox-box{background-color:#ccc;border-color:#ccc}.checkbox-icon{color:#fff;font-size:.75rem;line-height:1;font-weight:700;transition:transform .2s ease;display:flex;align-items:center}:host([checked]) .checkbox-icon{transform:scale(1)}:host(:focus) .checkbox-container{outline:.125rem solid var(--nf-primary-color,var(--primary-color));outline-offset:.125rem}`;
901
+ var ft = Object.defineProperty, bt = Object.getOwnPropertyDescriptor, de = (t, e, s, o) => {
902
+ for (var r = o > 1 ? void 0 : o ? bt(e, s) : e, i = t.length - 1, n; i >= 0; i--)
903
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
904
+ return o && r && ft(e, s, r), r;
905
+ };
906
+ let L = class extends H {
907
+ constructor() {
908
+ super(...arguments), this.checked = !1, this.disabled = !1;
909
+ }
910
+ // 切换复选框状态
911
+ toggleCheckbox(t) {
912
+ this.disabled || (t.stopPropagation(), this.checked = !this.checked, this.dispatchEvent(
913
+ new CustomEvent("change", {
914
+ bubbles: !0,
915
+ composed: !0,
916
+ detail: this.checked
917
+ })
918
+ ));
919
+ }
920
+ // 渲染复选框组件
921
+ render() {
922
+ return re`<div class=checkbox-container @click=${this.toggleCheckbox} aria-checked=${this.checked} aria-disabled=${this.disabled} role=checkbox><div class=checkbox-box>${this.checked ? re`<div class=checkbox-icon><svg aria-hidden=true data-icon=check fill=currentColor focusable=false height=0.625rem viewBox="64 64 896 896"width=0.625rem><path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"></path></svg></div>` : ""}</div></div>`;
923
+ }
924
+ };
925
+ L.styles = [pt];
926
+ de([
927
+ h({ type: Boolean, reflect: !0 })
928
+ ], L.prototype, "checked", 2);
929
+ de([
930
+ h({ type: Boolean, reflect: !0 })
931
+ ], L.prototype, "disabled", 2);
932
+ L = de([
933
+ N("nf-checkbox")
934
+ ], L);
935
+ const Tt = O({
39
936
  tagName: "nf-checkbox",
40
- elementClass: c,
41
- react: n,
937
+ elementClass: L,
938
+ react: V,
42
939
  events: {
43
940
  onChange: "change"
44
941
  }
45
- }), u = e({
942
+ });
943
+ const mt = { ATTRIBUTE: 1 }, gt = (t) => (...e) => ({ _$litDirective$: t, values: e });
944
+ let vt = class {
945
+ constructor(e) {
946
+ }
947
+ get _$AU() {
948
+ return this._$AM._$AU;
949
+ }
950
+ _$AT(e, s, o) {
951
+ this._$Ct = e, this._$AM = s, this._$Ci = o;
952
+ }
953
+ _$AS(e, s) {
954
+ return this.update(e, s);
955
+ }
956
+ update(e, s) {
957
+ return this.render(...s);
958
+ }
959
+ };
960
+ const Se = "important", _t = " !" + Se, ee = gt(class extends vt {
961
+ constructor(t) {
962
+ if (super(t), t.type !== mt.ATTRIBUTE || t.name !== "style" || t.strings?.length > 2) throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.");
963
+ }
964
+ render(t) {
965
+ return Object.keys(t).reduce((e, s) => {
966
+ const o = t[s];
967
+ return o == null ? e : e + `${s = s.includes("-") ? s : s.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g, "-$&").toLowerCase()}:${o};`;
968
+ }, "");
969
+ }
970
+ update(t, [e]) {
971
+ const { style: s } = t.element;
972
+ if (this.ft === void 0) return this.ft = new Set(Object.keys(e)), this.render(e);
973
+ for (const o of this.ft) e[o] == null && (this.ft.delete(o), o.includes("-") ? s.removeProperty(o) : s[o] = null);
974
+ for (const o in e) {
975
+ const r = e[o];
976
+ if (r != null) {
977
+ this.ft.add(o);
978
+ const i = typeof r == "string" && r.endsWith(_t);
979
+ o.includes("-") || i ? s.setProperty(o, i ? r.slice(0, -11) : r, i ? Se : "") : s[o] = r;
980
+ }
981
+ }
982
+ return M;
983
+ }
984
+ }), yt = A`:host{display:inline-block;position:relative}:host([disabled]){cursor:not-allowed;opacity:.6}:host([disabled]:hover){border-color:var(--nf-border-color);background:var(--nf-background-color)}:host([open]){border-color:var(--nf-border-color-hover);box-shadow:0 0 0 .15rem var(--nf-box-shadow-color-focus)}.trigger{height:100%;display:flex;align-items:center;cursor:pointer;transition:all .2s;font-size:.875rem;position:relative}:host(:not([disabled])) .trigger:hover{border-color:var(--nf-color-primary)}.trigger[disabled]{cursor:not-allowed;opacity:.6}:host([disabled]) .trigger{cursor:not-allowed;color:var(--nf-color-disabled)}.color-block{width:1.25rem;height:1.25rem;border-radius:.125rem;margin-left:calc((var(--nf-height) - 1.25rem)/ 2 - .75rem);margin-right:.4rem}:host([show-text=false]) .color-block{margin-right:calc((var(--nf-height) - 1.25rem)/ 2 - .75rem)}.color-text{flex:1}.panel{position:absolute;z-index:1000;background:#fff;border-radius:var(--nf-border-radius);box-shadow:0 6px 16px #00000014,0 3px 6px -4px #0000001f,0 9px 28px 8px #0000000d;-webkit-user-select:none;user-select:none}.panel-content{padding:.75rem;width:15rem}.color-selector{height:9.375rem;position:relative;margin-bottom:.75rem;border-radius:var(--nf-border-radius);overflow:hidden}.color-sb{width:100%;height:100%;position:relative;cursor:pointer}.sb-white{position:absolute;inset:0;background:linear-gradient(to right,#fff,#fff0)}.sb-black{position:absolute;inset:0;background:linear-gradient(to top,#000,#0000)}.selector{position:absolute;width:.625rem;height:.625rem;border:.125rem solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 .125rem #00000080;pointer-events:none}.slider-container{margin-bottom:.5rem}.slider-container:last-child{margin-bottom:0}.sliders-row{display:flex;align-items:center;gap:.75rem}.sliders{flex:1}.slider{position:relative;height:.75rem;border-radius:.375rem}.hue-slider{background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.alpha-slider{position:relative;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:.375rem .375rem;background-position:0 0,0 .1875rem,.1875rem -.1875rem,-.1875rem 0;background-color:#fff;border-radius:.375rem}.alpha-slider-input{position:relative;z-index:2}.alpha-gradient{position:absolute;inset:0;border-radius:.375rem}input[type=range]{-webkit-appearance:none;width:100%;height:100%;background:0 0;outline:0;position:absolute;top:0;left:0;margin:0;padding:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1rem;height:1rem;border-radius:50%;background:#fff;border:.125rem solid var(--nf-color-border);cursor:pointer;box-shadow:0 0 .125rem #00000080;position:relative;z-index:1}input[type=range]::-moz-range-thumb{width:1rem;height:1rem;border-radius:50%;background:#fff;border:.125rem solid var(--nf-color-border);cursor:pointer;box-shadow:0 0 .125rem #00000080}.current-color-container{display:flex}.current-color{width:2rem;height:2rem;border-radius:var(--nf-border-radius);border:.0625rem solid var(--nf-color-border)}:host(:not([disabled-alpha])) .current-color{width:2.5rem;height:2.5rem}`;
985
+ var wt = Object.defineProperty, $t = Object.getOwnPropertyDescriptor, v = (t, e, s, o) => {
986
+ for (var r = o > 1 ? void 0 : o ? $t(e, s) : e, i = t.length - 1, n; i >= 0; i--)
987
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
988
+ return o && r && wt(e, s, r), r;
989
+ };
990
+ let b = class extends q {
991
+ constructor() {
992
+ super(...arguments), this.value = "#FF0000", this.disabled = !1, this.disabledAlpha = !1, this.open = !1, this.showText = !0, this.placement = "bottom", this.align = "left", this.autoAdjust = !0, this._panelVisible = !1, this._internalValue = "#FF0000FF", this._hsb = { h: 0, s: 100, b: 100 }, this._panelPosition = { top: 0, left: 0 }, this._handleGlobalClick = (t) => {
993
+ this._panelVisible && !this.contains(t.target) && this._closePanel();
994
+ }, this._handleKeyDown = (t) => {
995
+ this._panelVisible && t.key === "Escape" && this._closePanel();
996
+ }, this._handleSBMouseDown = (t) => {
997
+ t.preventDefault(), this._handleSBChange(t), document.addEventListener("mousemove", this._handleSBMouseMove), document.addEventListener("mouseup", this._handleSBMouseUp);
998
+ }, this._handleSBMouseMove = (t) => {
999
+ t.preventDefault(), this._handleSBChange(t);
1000
+ }, this._handleSBMouseUp = () => {
1001
+ document.removeEventListener("mousemove", this._handleSBMouseMove), document.removeEventListener("mouseup", this._handleSBMouseUp);
1002
+ }, this._handleSBTouchMove = (t) => {
1003
+ t.preventDefault(), this._handleSBChange(t);
1004
+ };
1005
+ }
1006
+ connectedCallback() {
1007
+ super.connectedCallback(), document.addEventListener("click", this._handleGlobalClick), document.addEventListener("keydown", this._handleKeyDown);
1008
+ }
1009
+ disconnectedCallback() {
1010
+ super.disconnectedCallback(), document.removeEventListener("click", this._handleGlobalClick), document.removeEventListener("keydown", this._handleKeyDown), document.removeEventListener("mousemove", this._handleSBMouseMove), document.removeEventListener("mouseup", this._handleSBMouseUp);
1011
+ }
1012
+ firstUpdated() {
1013
+ this._updateInternalValue(this.value), this._updateHSBFromHex(this._internalValue);
1014
+ }
1015
+ updated(t) {
1016
+ t.has("value") && (this._updateInternalValue(this.value), this._updateHSBFromHex(this._internalValue)), t.has("open") && (this._panelVisible = this.open, this.open && this._updatePanelPosition());
1017
+ }
1018
+ // 更新内部颜色值
1019
+ _updateInternalValue(t) {
1020
+ if (t.startsWith("#")) {
1021
+ const e = t.slice(1);
1022
+ e.length === 6 ? this._internalValue = t + "FF" : e.length === 8 ? this._internalValue = t : this._internalValue = "#FF0000FF";
1023
+ } else
1024
+ this._internalValue = "#FF0000FF";
1025
+ }
1026
+ // 从HEX颜色值更新HSB值
1027
+ _updateHSBFromHex(t) {
1028
+ const e = parseInt(t.slice(1, 3), 16) / 255, s = parseInt(t.slice(3, 5), 16) / 255, o = parseInt(t.slice(5, 7), 16) / 255, r = Math.max(e, s, o), i = Math.min(e, s, o), n = r - i;
1029
+ let l = 0, a = 0;
1030
+ const c = r;
1031
+ n !== 0 && (a = n / r, r === e ? l = (s - o) / n % 6 : r === s ? l = (o - e) / n + 2 : l = (e - s) / n + 4, l *= 60, l < 0 && (l += 360)), this._hsb = {
1032
+ h: Math.round(l),
1033
+ s: Math.round(a * 100),
1034
+ b: Math.round(c * 100)
1035
+ };
1036
+ }
1037
+ // 从HSB值生成HEX颜色值
1038
+ _generateHexFromHSB(t, e, s, o = "FF") {
1039
+ e /= 100, s /= 100;
1040
+ const r = s * e, i = r * (1 - Math.abs(t / 60 % 2 - 1)), n = s - r;
1041
+ let l = 0, a = 0, c = 0;
1042
+ return 0 <= t && t < 60 ? (l = r, a = i, c = 0) : 60 <= t && t < 120 ? (l = i, a = r, c = 0) : 120 <= t && t < 180 ? (l = 0, a = r, c = i) : 180 <= t && t < 240 ? (l = 0, a = i, c = r) : 240 <= t && t < 300 ? (l = i, a = 0, c = r) : 300 <= t && t < 360 && (l = r, a = 0, c = i), l = Math.round((l + n) * 255), a = Math.round((a + n) * 255), c = Math.round((c + n) * 255), "#" + l.toString(16).padStart(2, "0") + a.toString(16).padStart(2, "0") + c.toString(16).padStart(2, "0") + o;
1043
+ }
1044
+ // 计算面板位置
1045
+ _updatePanelPosition() {
1046
+ requestAnimationFrame(() => {
1047
+ const t = this.getBoundingClientRect(), e = this.shadowRoot?.querySelector(".panel");
1048
+ if (!e) return;
1049
+ const s = 0.15 * 16, o = 8, r = e.offsetWidth || 240, i = e.offsetHeight || 300;
1050
+ let n = this.placement, l = this.align;
1051
+ this.autoAdjust && (n === "bottom" ? window.innerHeight - t.bottom - o < i && t.top - o >= i && (n = "top") : t.top - o < i && window.innerHeight - t.bottom - o >= i && (n = "bottom"), l === "right" ? t.right - s < r && t.left + t.width + s + r <= window.innerWidth && (l = "left") : t.left - s + r > window.innerWidth && t.right - s >= r && (l = "right"));
1052
+ let a;
1053
+ n === "bottom" ? a = t.height + o : a = -i - o;
1054
+ let c;
1055
+ l === "right" ? c = t.width - r + s : c = -s, this._panelPosition = { top: a, left: c };
1056
+ });
1057
+ }
1058
+ // 打开面板
1059
+ _openPanel() {
1060
+ this.disabled || (this._panelVisible = !0, this.open = !0, this.updateComplete.then(() => {
1061
+ this._updatePanelPosition();
1062
+ }), this.dispatchEvent(new CustomEvent("openChange", {
1063
+ detail: !0,
1064
+ bubbles: !0,
1065
+ composed: !0
1066
+ })));
1067
+ }
1068
+ // 关闭面板
1069
+ _closePanel() {
1070
+ this._panelVisible = !1, this.open = !1, this.dispatchEvent(new CustomEvent("openChange", {
1071
+ detail: !1,
1072
+ bubbles: !0,
1073
+ composed: !0
1074
+ }));
1075
+ }
1076
+ // 切换面板显示状态
1077
+ _togglePanel() {
1078
+ this._panelVisible ? this._closePanel() : this._openPanel();
1079
+ }
1080
+ // 处理HSB颜色变化
1081
+ _handleHSBChange(t, e, s) {
1082
+ this._hsb = { h: t, s: e, b: s };
1083
+ const o = this._internalValue.slice(7), r = this._generateHexFromHSB(t, e, s, o);
1084
+ this._handleColorChange(r);
1085
+ }
1086
+ // 处理Alpha值变化
1087
+ _handleAlphaChange(t) {
1088
+ const e = Math.round(t * 255 / 100).toString(16).padStart(2, "0").toUpperCase(), s = "#" + this._internalValue.slice(1, 7) + e;
1089
+ this._handleColorChange(s);
1090
+ }
1091
+ // 处理颜色变化
1092
+ _handleColorChange(t) {
1093
+ this._internalValue = t;
1094
+ const e = this.disabledAlpha || t.endsWith("FF") ? "#" + t.slice(1, 7) : t;
1095
+ this.dispatchEvent(new CustomEvent("change", {
1096
+ detail: e,
1097
+ bubbles: !0,
1098
+ composed: !0
1099
+ }));
1100
+ }
1101
+ // 处理色相选择
1102
+ _handleHueChange(t) {
1103
+ const e = t.target, s = parseInt(e.value);
1104
+ this._handleHSBChange(s, this._hsb.s, this._hsb.b);
1105
+ }
1106
+ // 处理饱和度和亮度选择
1107
+ _handleSBChange(t) {
1108
+ const e = this.shadowRoot?.querySelector(".color-sb");
1109
+ if (!e) return;
1110
+ const s = e.getBoundingClientRect(), o = t instanceof MouseEvent ? t.clientX : t.touches[0].clientX, r = t instanceof MouseEvent ? t.clientY : t.touches[0].clientY, i = Math.max(0, Math.min(100, Math.round((o - s.left) / s.width * 100))), n = Math.max(0, Math.min(100, Math.round((1 - (r - s.top) / s.height) * 100)));
1111
+ this._handleHSBChange(this._hsb.h, i, n);
1112
+ }
1113
+ // 处理透明度选择
1114
+ _handleAlphaChangeInput(t) {
1115
+ const e = t.target, s = parseInt(e.value);
1116
+ this._handleAlphaChange(s);
1117
+ }
1118
+ // 渲染触发器
1119
+ _renderTrigger() {
1120
+ const t = "#" + this._internalValue.slice(1, 7), e = this._internalValue.slice(7);
1121
+ return p`
1122
+ <div
1123
+ class="trigger"
1124
+ @click="${this._togglePanel}"
1125
+ ?disabled="${this.disabled}"
1126
+ >
1127
+ <div
1128
+ class="color-block"
1129
+ style="background-color: ${this.disabledAlpha ? t : this._internalValue}"
1130
+ ></div>
1131
+ ${this.showText ? p`<div class="color-text">${this.disabledAlpha || e === "FF" ? t : this._internalValue}</div>` : ""}
1132
+ </div>
1133
+ `;
1134
+ }
1135
+ // 渲染颜色选择区域
1136
+ _renderColorSelector() {
1137
+ const t = this._generateHexFromHSB(this._hsb.h, 100, 100, "FF"), e = this._hsb.s / 100 * 100, s = (1 - this._hsb.b / 100) * 100;
1138
+ return p`
1139
+ <div class="color-selector">
1140
+ <div
1141
+ class="color-sb"
1142
+ style=${ee({
1143
+ "background-color": t
1144
+ })}
1145
+ @mousedown="${this._handleSBMouseDown}"
1146
+ @touchstart="${this._handleSBTouchMove}"
1147
+ @touchmove="${this._handleSBTouchMove}"
1148
+ >
1149
+ <div class="sb-white"></div>
1150
+ <div class="sb-black"></div>
1151
+ <div
1152
+ class="selector"
1153
+ style=${ee({
1154
+ left: `${e}%`,
1155
+ top: `${s}%`
1156
+ })}
1157
+ ></div>
1158
+ </div>
1159
+ </div>
1160
+ `;
1161
+ }
1162
+ // 渲染色相选择条
1163
+ _renderHueSlider() {
1164
+ return p`
1165
+ <div class="slider-container">
1166
+ <div class="slider hue-slider">
1167
+ <input
1168
+ type="range"
1169
+ min="0"
1170
+ max="360"
1171
+ .value="${this._hsb.h.toString()}"
1172
+ @input="${this._handleHueChange}"
1173
+ class="hue-slider-input"
1174
+ >
1175
+ </div>
1176
+ </div>
1177
+ `;
1178
+ }
1179
+ // 渲染透明度选择条
1180
+ _renderAlphaSlider() {
1181
+ if (this.disabledAlpha) return null;
1182
+ const t = parseInt(this._internalValue.slice(7), 16) / 255 * 100, e = "#" + this._internalValue.slice(1, 7);
1183
+ return p`
1184
+ <div class="slider-container">
1185
+ <div class="slider alpha-slider">
1186
+ <div
1187
+ class="alpha-gradient"
1188
+ style="background: linear-gradient(to right, transparent, ${e})"
1189
+ ></div>
1190
+ <input
1191
+ type="range"
1192
+ min="0"
1193
+ max="100"
1194
+ .value="${Math.round(t).toString()}"
1195
+ @input="${this._handleAlphaChangeInput}"
1196
+ class="alpha-slider-input"
1197
+ >
1198
+ </div>
1199
+ </div>
1200
+ `;
1201
+ }
1202
+ // 渲染当前颜色显示
1203
+ _renderCurrentColor() {
1204
+ return p`
1205
+ <div class="current-color-container">
1206
+ <div
1207
+ class="current-color"
1208
+ style="background-color: ${this._internalValue}"
1209
+ ></div>
1210
+ </div>
1211
+ `;
1212
+ }
1213
+ // 渲染颜色面板
1214
+ _renderPanel() {
1215
+ return this._panelVisible ? p`
1216
+ <div
1217
+ class="panel"
1218
+ style="top: ${this._panelPosition.top}px; left: ${this._panelPosition.left}px;"
1219
+ >
1220
+ <div class="panel-content">
1221
+ ${this._renderColorSelector()}
1222
+ <div class="sliders-row">
1223
+ ${this._renderCurrentColor()}
1224
+ <div class="sliders">
1225
+ ${this._renderHueSlider()}
1226
+ ${this.disabledAlpha ? null : this._renderAlphaSlider()}
1227
+ </div>
1228
+ </div>
1229
+ </div>
1230
+ </div>
1231
+ ` : null;
1232
+ }
1233
+ render() {
1234
+ return p`
1235
+ ${this._renderTrigger()}
1236
+ ${this._renderPanel()}
1237
+ `;
1238
+ }
1239
+ };
1240
+ b.styles = [K, yt];
1241
+ v([
1242
+ h({ type: String })
1243
+ ], b.prototype, "value", 2);
1244
+ v([
1245
+ h({ type: Boolean, reflect: !0 })
1246
+ ], b.prototype, "disabled", 2);
1247
+ v([
1248
+ h({ type: Boolean, reflect: !0, attribute: "disabled-alpha" })
1249
+ ], b.prototype, "disabledAlpha", 2);
1250
+ v([
1251
+ h({ type: Boolean, reflect: !0 })
1252
+ ], b.prototype, "open", 2);
1253
+ v([
1254
+ h({
1255
+ attribute: "show-text",
1256
+ converter: {
1257
+ fromAttribute: (t) => t !== "false",
1258
+ toAttribute: (t) => t ? null : "false"
1259
+ }
1260
+ })
1261
+ ], b.prototype, "showText", 2);
1262
+ v([
1263
+ h({ type: String })
1264
+ ], b.prototype, "placement", 2);
1265
+ v([
1266
+ h({ type: String })
1267
+ ], b.prototype, "align", 2);
1268
+ v([
1269
+ h({
1270
+ attribute: "auto-adjust",
1271
+ converter: {
1272
+ fromAttribute: (t) => t !== "false",
1273
+ toAttribute: (t) => t ? null : "false"
1274
+ }
1275
+ })
1276
+ ], b.prototype, "autoAdjust", 2);
1277
+ v([
1278
+ $()
1279
+ ], b.prototype, "_panelVisible", 2);
1280
+ v([
1281
+ $()
1282
+ ], b.prototype, "_internalValue", 2);
1283
+ v([
1284
+ $()
1285
+ ], b.prototype, "_hsb", 2);
1286
+ v([
1287
+ $()
1288
+ ], b.prototype, "_panelPosition", 2);
1289
+ b = v([
1290
+ N("nf-color-picker")
1291
+ ], b);
1292
+ const Ut = O({
46
1293
  tagName: "nf-color-picker",
47
- elementClass: r,
48
- react: n,
1294
+ elementClass: b,
1295
+ react: V,
49
1296
  events: {
50
1297
  onChange: "change",
51
1298
  onOpenChange: "openChange"
52
1299
  }
53
- }), E = e({
1300
+ }), xt = A`:host{display:inline-flex;align-items:center;position:relative;min-width:10rem;width:var(--nf-width,100%);height:1.25rem;background-color:var(--nf-border-color,#e0e0e0);border-radius:.625rem;cursor:pointer;-webkit-user-select:none;user-select:none;border:none;box-shadow:none;padding:0}:host:hover{background-color:var(--nf-border-color,#e0e0e0);border:none}:host:focus{box-shadow:none;outline:0}:host([disabled]){cursor:not-allowed;opacity:.6}.slider-fill{position:absolute;left:0;top:0;height:100%;background-color:var(--nf-primary-color,#5e72f9);border-radius:.625rem 0 0 .625rem;pointer-events:none}.slider-handle{position:absolute;width:1.25rem;height:1.25rem;background-color:#fff;border-radius:50%;top:50%;transform:translate(-50%,-50%);cursor:grab;outline:0;box-shadow:0 1px 3px #0000004d;transition:transform .15s ease,box-shadow .15s ease;z-index:1}:host([disabled]) .slider-handle{cursor:not-allowed}:host(:not([disabled])) .slider-handle:hover{transform:translate(-50%,-50%) scale(1.05)}:host(:not([disabled])) .slider-handle:active{cursor:grabbing;transform:translate(-50%,-50%) scale(1.15);box-shadow:0 3px 8px #0006}.slider-handle:focus{box-shadow:0 0 0 3px #5e72f94d}.slider-tooltip{position:absolute;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%);background-color:#ffffffb3;backdrop-filter:blur(.5rem);-webkit-backdrop-filter:blur(.5rem);color:var(--nf-color,#333);padding:.25rem .5rem;border-radius:.25rem;font-size:.75rem;white-space:nowrap;opacity:0;transition:opacity .2s ease;pointer-events:none;box-shadow:0 2px 8px #00000026}.slider-tooltip.visible{opacity:1}`;
1301
+ var Et = Object.defineProperty, kt = Object.getOwnPropertyDescriptor, y = (t, e, s, o) => {
1302
+ for (var r = o > 1 ? void 0 : o ? kt(e, s) : e, i = t.length - 1, n; i >= 0; i--)
1303
+ (n = t[i]) && (r = (o ? n(e, s, r) : n(r)) || r);
1304
+ return o && r && Et(e, s, r), r;
1305
+ };
1306
+ let g = class extends q {
1307
+ constructor() {
1308
+ super(...arguments), this.value = 0, this.defaultValue = 0, this.min = 0, this.max = 100, this.step = 1, this.disabled = !1, this.range = !1, this.tooltip = !1, this._currentValue = 0, this._isDragging = !1, this._showTooltip = !1, this._handleHostMouseDown = (t) => {
1309
+ this.disabled || (t.preventDefault(), this._startDrag(t));
1310
+ }, this._handleHostTouchStart = (t) => {
1311
+ this.disabled || (t.preventDefault(), this._startDrag(t));
1312
+ }, this._handleDrag = (t) => {
1313
+ this._isDragging && (t.preventDefault(), this._updateValue(t));
1314
+ }, this._stopDrag = () => {
1315
+ this._isDragging && (this._isDragging = !1, this._showTooltip = !1, document.removeEventListener("mousemove", this._handleDrag), document.removeEventListener("touchmove", this._handleDrag), document.removeEventListener("mouseup", this._stopDrag), document.removeEventListener("touchend", this._stopDrag), this.dispatchEvent(
1316
+ new CustomEvent("change", {
1317
+ detail: this._currentValue,
1318
+ bubbles: !0,
1319
+ composed: !0
1320
+ })
1321
+ ));
1322
+ };
1323
+ }
1324
+ connectedCallback() {
1325
+ super.connectedCallback(), this._currentValue = this.value || this.defaultValue, this.addEventListener("mousedown", this._handleHostMouseDown), this.addEventListener("touchstart", this._handleHostTouchStart);
1326
+ }
1327
+ disconnectedCallback() {
1328
+ super.disconnectedCallback(), this.removeEventListener("mousedown", this._handleHostMouseDown), this.removeEventListener("touchstart", this._handleHostTouchStart), document.removeEventListener("mousemove", this._handleDrag), document.removeEventListener("touchmove", this._handleDrag), document.removeEventListener("mouseup", this._stopDrag), document.removeEventListener("touchend", this._stopDrag);
1329
+ }
1330
+ updated(t) {
1331
+ t.has("value") && (this._currentValue = this.value);
1332
+ }
1333
+ _handleMouseDown(t) {
1334
+ this.disabled || (t.stopPropagation(), t.preventDefault(), this._startDrag(t));
1335
+ }
1336
+ _handleTouchStart(t) {
1337
+ this.disabled || (t.stopPropagation(), t.preventDefault(), this._startDrag(t));
1338
+ }
1339
+ _handleKeyDown(t) {
1340
+ if (this.disabled) return;
1341
+ let e = this._currentValue;
1342
+ switch (t.key) {
1343
+ case "ArrowLeft":
1344
+ case "ArrowDown":
1345
+ e = Math.max(this.min, this._currentValue - this.step), t.preventDefault();
1346
+ break;
1347
+ case "ArrowRight":
1348
+ case "ArrowUp":
1349
+ e = Math.min(this.max, this._currentValue + this.step), t.preventDefault();
1350
+ break;
1351
+ case "Home":
1352
+ e = this.min, t.preventDefault();
1353
+ break;
1354
+ case "End":
1355
+ e = this.max, t.preventDefault();
1356
+ break;
1357
+ default:
1358
+ this._showTooltip = !1, this.requestUpdate();
1359
+ return;
1360
+ }
1361
+ e !== this._currentValue && (this._currentValue = e, this._showTooltip = !0, this.requestUpdate(), this.dispatchEvent(
1362
+ new CustomEvent("change", {
1363
+ detail: this._currentValue,
1364
+ bubbles: !0,
1365
+ composed: !0
1366
+ })
1367
+ ), setTimeout(() => {
1368
+ this._showTooltip = !1, this.requestUpdate();
1369
+ }, 1e3));
1370
+ }
1371
+ _startDrag(t) {
1372
+ this._isDragging = !0, this._showTooltip = !0, this._updateValue(t), document.addEventListener("mousemove", this._handleDrag), document.addEventListener("touchmove", this._handleDrag, { passive: !1 }), document.addEventListener("mouseup", this._stopDrag), document.addEventListener("touchend", this._stopDrag);
1373
+ }
1374
+ _updateValue(t) {
1375
+ const e = this.getBoundingClientRect(), s = t instanceof MouseEvent ? t.clientX : t.touches[0].clientX, o = Math.max(0, Math.min(1, (s - e.left) / e.width)), r = this.max - this.min, i = this.min + o * r, n = Math.round((i - this.min) / this.step), l = this.min + n * this.step;
1376
+ this._currentValue = Math.min(this.max, Math.max(this.min, l)), this.requestUpdate();
1377
+ }
1378
+ _getValuePercentage() {
1379
+ const t = this.max - this.min;
1380
+ return t === 0 ? 0 : (this._currentValue - this.min) / t * 100;
1381
+ }
1382
+ render() {
1383
+ const t = this._getValuePercentage(), e = `${t}%`, s = `${t}%`, o = `slider-tooltip ${this._showTooltip || this.tooltip ? "visible" : ""}`;
1384
+ return p`<div class=slider-fill style=${ee({ width: s })}></div><div class=slider-handle style=${ee({ left: e })} @keydown=${this.disabled ? -1 : 0} @mousedown=${this._handleMouseDown} @touchstart=${this._handleTouchStart} tabindex=${this._handleKeyDown}><div class=${o}>${this._currentValue}</div></div>`;
1385
+ }
1386
+ };
1387
+ g.styles = [K, xt];
1388
+ y([
1389
+ h({ type: Number })
1390
+ ], g.prototype, "value", 2);
1391
+ y([
1392
+ h({ type: Number })
1393
+ ], g.prototype, "defaultValue", 2);
1394
+ y([
1395
+ h({ type: Number })
1396
+ ], g.prototype, "min", 2);
1397
+ y([
1398
+ h({ type: Number })
1399
+ ], g.prototype, "max", 2);
1400
+ y([
1401
+ h({ type: Number })
1402
+ ], g.prototype, "step", 2);
1403
+ y([
1404
+ h({ type: Boolean, reflect: !0 })
1405
+ ], g.prototype, "disabled", 2);
1406
+ y([
1407
+ h({ type: Boolean })
1408
+ ], g.prototype, "range", 2);
1409
+ y([
1410
+ h({ type: Boolean })
1411
+ ], g.prototype, "tooltip", 2);
1412
+ y([
1413
+ $()
1414
+ ], g.prototype, "_currentValue", 2);
1415
+ y([
1416
+ $()
1417
+ ], g.prototype, "_isDragging", 2);
1418
+ y([
1419
+ $()
1420
+ ], g.prototype, "_showTooltip", 2);
1421
+ g = y([
1422
+ N("nf-slider")
1423
+ ], g);
1424
+ const It = O({
54
1425
  tagName: "nf-slider",
55
- elementClass: m,
56
- react: n,
1426
+ elementClass: g,
1427
+ react: V,
57
1428
  events: {
58
1429
  onChange: "change"
59
1430
  }
60
1431
  });
61
1432
  export {
62
- i as NfCheckbox,
63
- u as NfColorPicker,
64
- N as NfInput,
65
- C as NfInputNumber,
66
- g as NfSelect,
67
- E as NfSlider,
68
- h as NfSwitch
1433
+ Tt as NfCheckbox,
1434
+ Ut as NfColorPicker,
1435
+ Mt as NfInput,
1436
+ Bt as NfInputNumber,
1437
+ Ot as NfSelect,
1438
+ It as NfSlider,
1439
+ Nt as NfSwitch
69
1440
  };