builder-settings-types 0.0.269 → 0.0.271

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.
Files changed (36) hide show
  1. package/dist/Font.svg +3 -3
  2. package/dist/Opacity.svg +7 -7
  3. package/dist/Typography-Size.svg +3 -3
  4. package/dist/URL.svg +3 -3
  5. package/dist/Upload.svg +4 -4
  6. package/dist/Weight.svg +3 -3
  7. package/dist/align-centre.svg +4 -4
  8. package/dist/align-left.svg +4 -4
  9. package/dist/align-right.svg +4 -4
  10. package/dist/border-size.svg +3 -3
  11. package/dist/builder-settings-types.cjs.js +80 -73
  12. package/dist/builder-settings-types.es.js +1296 -1588
  13. package/dist/chevron-down.svg +5 -5
  14. package/dist/colors.svg +3 -3
  15. package/dist/index.css +1 -1
  16. package/dist/margins-bottom.svg +3 -3
  17. package/dist/margins-left.svg +3 -3
  18. package/dist/margins-right.svg +3 -3
  19. package/dist/margins-top.svg +3 -3
  20. package/dist/radius.svg +3 -3
  21. package/dist/settings/gradient-settings/GradientSetting.d.ts +47 -0
  22. package/dist/settings/gradient-settings/components/CustomColorPicker.d.ts +34 -0
  23. package/dist/settings/gradient-settings/components/EmbeddedColorPicker.d.ts +29 -0
  24. package/dist/settings/gradient-settings/index.d.ts +1 -1
  25. package/dist/settings/gradient-settings/parsers/gradientParser.d.ts +5 -0
  26. package/dist/settings/gradient-settings/recent/RecentColorManager.d.ts +12 -0
  27. package/dist/settings/gradient-settings/recent/createRecentColorsSection.d.ts +2 -0
  28. package/dist/settings/gradient-settings/utils/color.d.ts +29 -0
  29. package/dist/settings/gradient-settings/utils/dom.d.ts +1 -0
  30. package/dist/settings/gradient-settings/utils/icon.d.ts +4 -0
  31. package/dist/settings/gradient-settings/utils/types.d.ts +25 -0
  32. package/dist/spacing-height.svg +3 -3
  33. package/dist/spacing-width.svg +3 -3
  34. package/dist/types/index.d.ts +3 -1
  35. package/package.json +1 -1
  36. package/dist/settings/gradient-settings/gradientSettings.d.ts +0 -81
@@ -1,35 +1,35 @@
1
- const ft = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
2
- let dt = (p = 21) => {
3
- let t = "", e = crypto.getRandomValues(new Uint8Array(p |= 0));
4
- for (; p--; )
5
- t += ft[e[p] & 63];
1
+ const ut = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
2
+ let lt = (r = 21) => {
3
+ let t = "", e = crypto.getRandomValues(new Uint8Array(r |= 0));
4
+ for (; r--; )
5
+ t += ut[e[r] & 63];
6
6
  return t;
7
7
  };
8
- function vt(p) {
9
- let t = 0, e = p.parentElement;
8
+ function gt(r) {
9
+ let t = 0, e = r.parentElement;
10
10
  for (; e; )
11
- e.classList.contains("setting-group") && e !== p && t++, e = e.parentElement;
11
+ e.classList.contains("setting-group") && e !== r && t++, e = e.parentElement;
12
12
  return t;
13
13
  }
14
- function tt(p, t) {
14
+ function j(r, t) {
15
15
  const e = Math.min(Math.max(t, 0), 5);
16
- p.setAttribute("data-nesting-level", e.toString()), e > 0 ? p.style.setProperty("--visual-indent", `${e * 2}px`) : (p.style.removeProperty("--visual-indent"), p.style.marginLeft = "");
16
+ r.setAttribute("data-nesting-level", e.toString()), e > 0 ? r.style.setProperty("--visual-indent", `${e * 2}px`) : (r.style.removeProperty("--visual-indent"), r.style.marginLeft = "");
17
17
  }
18
- function ot(p, t = 0) {
19
- p.querySelectorAll(":scope > .setting-group-content > .setting-group").forEach((i) => {
18
+ function Q(r, t = 0) {
19
+ r.querySelectorAll(":scope > .setting-group-content > .setting-group").forEach((i) => {
20
20
  const s = i, n = t + 1;
21
- tt(s, n), ot(s, n);
21
+ j(s, n), Q(s, n);
22
22
  });
23
23
  }
24
- const Ct = {
24
+ const mt = {
25
25
  maxLevel: 5,
26
26
  spacingMultiplier: 1,
27
27
  visualIndentMultiplier: 2,
28
28
  enableAutoDetection: !0
29
29
  };
30
- class yt {
30
+ class ft {
31
31
  constructor(t = {}) {
32
- this.observedElements = /* @__PURE__ */ new Set(), this.config = { ...Ct, ...t }, this.config.enableAutoDetection && this.setupAutoDetection();
32
+ this.observedElements = /* @__PURE__ */ new Set(), this.config = { ...mt, ...t }, this.config.enableAutoDetection && this.setupAutoDetection();
33
33
  }
34
34
  /**
35
35
  * Setup automatic detection using MutationObserver
@@ -63,7 +63,7 @@ class yt {
63
63
  * Update nesting for a specific element
64
64
  */
65
65
  updateElementNesting(t) {
66
- const e = vt(t);
66
+ const e = gt(t);
67
67
  this.applyNestingWithConfig(t, e);
68
68
  }
69
69
  /**
@@ -111,21 +111,21 @@ class yt {
111
111
  this.observer && (this.observer.disconnect(), this.observer = void 0), this.observedElements.clear();
112
112
  }
113
113
  }
114
- const rt = new yt();
115
- function et(p) {
116
- if (p === null || typeof p != "object") return p;
117
- if (p instanceof Date) return new Date(p.getTime());
118
- if (p instanceof Array) return p.map((t) => et(t));
119
- if (typeof p == "object") {
114
+ const it = new ft();
115
+ function _(r) {
116
+ if (r === null || typeof r != "object") return r;
117
+ if (r instanceof Date) return new Date(r.getTime());
118
+ if (r instanceof Array) return r.map((t) => _(t));
119
+ if (typeof r == "object") {
120
120
  const t = {};
121
- for (const e in p)
122
- Object.prototype.hasOwnProperty.call(p, e) && (t[e] = et(p[e]));
121
+ for (const e in r)
122
+ Object.prototype.hasOwnProperty.call(r, e) && (t[e] = _(r[e]));
123
123
  return t;
124
124
  }
125
- return p;
125
+ return r;
126
126
  }
127
- function Et(p) {
128
- switch (p) {
127
+ function vt(r) {
128
+ switch (r) {
129
129
  case "number":
130
130
  return 0;
131
131
  case "text":
@@ -142,15 +142,15 @@ function Et(p) {
142
142
  return "";
143
143
  }
144
144
  }
145
- class T {
145
+ class y {
146
146
  constructor(t = {}) {
147
- this.props = t, this.dataPropsPath = "", this.id = t.id || dt(), this.value = this.props.default, this.desktop = this.props.default, this.title = t.title || "", this.includeGetJson = t.includeGetJson !== void 0 ? t.includeGetJson : !0;
147
+ this.props = t, this.dataPropsPath = "", this.id = t.id || lt(), this.value = this.props.default, this.desktop = this.props.default, this.title = t.title || "", this.includeGetJson = t.includeGetJson !== void 0 ? t.includeGetJson : !0;
148
148
  }
149
149
  static SetUploadUrl(t) {
150
- globalThis.DefaultUploadUrl = t, T.DefaultUploadUrl = t;
150
+ globalThis.DefaultUploadUrl = t, y.DefaultUploadUrl = t;
151
151
  }
152
152
  static SetDefaultLanguage(t) {
153
- globalThis.DefaultLanguage = t, T.DefaultLanguage = t;
153
+ globalThis.DefaultLanguage = t, y.DefaultLanguage = t;
154
154
  }
155
155
  destroy() {
156
156
  throw new Error("Method not implemented.");
@@ -171,8 +171,8 @@ class T {
171
171
  this.value = t, this.inputEl && (this.inputEl.value = String(t)), this.onChange && this.onChange(t), this.props.detectChange && this.props.detectChange(t);
172
172
  }
173
173
  clone() {
174
- const t = this.constructor, e = et(this.props), i = new t(e);
175
- return i.value = et(this.value), i;
174
+ const t = this.constructor, e = _(this.props), i = new t(e);
175
+ return i.value = _(this.value), i;
176
176
  }
177
177
  createInput(t) {
178
178
  t = { ...this.props.inputProps, ...t };
@@ -192,33 +192,33 @@ class T {
192
192
  const i = document.createElement("div");
193
193
  i.className = t.wrapperClassName || "";
194
194
  const s = document.createElement("input");
195
- this.inputEl = s, s.value = String(t.value || Et(t.inputType)), s.type = t.inputType, s.placeholder = t.placeholder || "", s.className = t.inputClassName || "", this.dataPropsPath && s.setAttribute("data-test-id", this.dataPropsPath);
195
+ this.inputEl = s, s.value = String(t.value || vt(t.inputType)), s.type = t.inputType, s.placeholder = t.placeholder || "", s.className = t.inputClassName || "", this.dataPropsPath && s.setAttribute("data-test-id", this.dataPropsPath);
196
196
  const n = (a) => {
197
197
  const l = a.target;
198
- let r = l.value;
198
+ let c = l.value;
199
199
  switch (t.inputType) {
200
200
  case "number":
201
- r = Number(l.value);
201
+ c = Number(l.value);
202
202
  break;
203
203
  case "color":
204
- r = l.value;
204
+ c = l.value;
205
205
  break;
206
206
  case "date":
207
- r = l.value;
207
+ c = l.value;
208
208
  break;
209
209
  case "select":
210
- r = l.value;
210
+ c = l.value;
211
211
  break;
212
212
  case "text":
213
- r = l.value;
213
+ c = l.value;
214
214
  break;
215
215
  case "button":
216
- r = l.value;
216
+ c = l.value;
217
217
  break;
218
218
  default:
219
- r = l.value;
219
+ c = l.value;
220
220
  }
221
- this.value = r, this.onChange && this.onChange(this.value), this.props.detectChange && this.props.detectChange(this.value);
221
+ this.value = c, this.onChange && this.onChange(this.value), this.props.detectChange && this.props.detectChange(this.value);
222
222
  }, o = (a) => {
223
223
  a.target, this.onBlur && this.onBlur(this.value);
224
224
  };
@@ -233,31 +233,31 @@ class T {
233
233
  return i.className = "input-icon " + (e || ""), i.innerHTML = t, i;
234
234
  }
235
235
  }
236
- function X(p) {
237
- return p instanceof T;
236
+ function B(r) {
237
+ return r instanceof y;
238
238
  }
239
- function H(p) {
240
- return p instanceof z;
239
+ function b(r) {
240
+ return r instanceof V;
241
241
  }
242
- function ct(p) {
243
- return X(p) || H(p);
242
+ function st(r) {
243
+ return B(r) || b(r);
244
244
  }
245
- function K(p, t) {
246
- for (const e in p)
247
- if (Object.prototype.hasOwnProperty.call(p, e)) {
248
- const i = p[e];
245
+ function q(r, t) {
246
+ for (const e in r)
247
+ if (Object.prototype.hasOwnProperty.call(r, e)) {
248
+ const i = r[e];
249
249
  t(e, i);
250
250
  }
251
251
  }
252
- const it = class it {
252
+ const Z = class Z {
253
253
  constructor(t) {
254
254
  this.elementRef = null, this.isHidden = !1, this.custom = !1, this.initialValues = {}, this.changeTimeout = null, this.isHandlingChange = !1, this.changeHandlers = /* @__PURE__ */ new Set(), this.blurTimeout = null, this.lastChangeTime = 0, this.handleBlur = () => {
255
- }, this.pendingBlurHandler = null, this.originalDefaultValues = {}, this.nestingLevel = 0, this.dataPropsPath = "", this.hide = !1, this.id = t.id || dt(), this.title = t.title, this.settings = t.settings, this.isCollapsed = t.collapsed ?? !1, this.isMain = t.main ?? !1, this.custom = t.custom ?? !1, this.nestingLevel = 0, this.includeGetJson = t.includeGetJson ?? !0, this.addItemCfg = t.addItem, this.deleteItemCfg = t.deleteItem, this.dataProps = t.dataProps, this.dataPropsPath = t.dataProps || "", this.hide = t.hide ?? !1, Object.assign(this, t.settings), this.initialValues = this.getValues(), this.originalDefaultValues = this.getDefaultValues(), this.propagateNestingLevel(), this.propagateDataPropsPath();
255
+ }, this.pendingBlurHandler = null, this.originalDefaultValues = {}, this.nestingLevel = 0, this.dataPropsPath = "", this.hide = !1, this.id = t.id || lt(), this.title = t.title, this.settings = t.settings, this.isCollapsed = t.collapsed ?? !1, this.isMain = t.main ?? !1, this.custom = t.custom ?? !1, this.nestingLevel = 0, this.includeGetJson = t.includeGetJson ?? !0, this.addItemCfg = t.addItem, this.deleteItemCfg = t.deleteItem, this.dataProps = t.dataProps, this.dataPropsPath = t.dataProps || "", this.hide = t.hide ?? !1, Object.assign(this, t.settings), this.initialValues = this.getValues(), this.originalDefaultValues = this.getDefaultValues(), this.propagateNestingLevel(), this.propagateDataPropsPath();
256
256
  }
257
257
  propagateNestingLevel() {
258
258
  const t = this.nestingLevel + 1;
259
- K(this.settings, (e, i) => {
260
- H(i) && (i.nestingLevel = t, i.propagateNestingLevel());
259
+ q(this.settings, (e, i) => {
260
+ b(i) && (i.nestingLevel = t, i.propagateNestingLevel());
261
261
  });
262
262
  }
263
263
  getNestingLevel() {
@@ -273,18 +273,18 @@ const it = class it {
273
273
  this.dataPropsPath = t, this.propagateDataPropsPath();
274
274
  }
275
275
  propagateDataPropsPath() {
276
- K(this.settings, (t, e) => {
276
+ q(this.settings, (t, e) => {
277
277
  const i = String(t), s = this.dataPropsPath ? `${this.dataPropsPath}_${i}` : i;
278
- (H(e) || X(e) && typeof e.setDataPropsPath == "function") && e.setDataPropsPath(s);
278
+ (b(e) || B(e) && typeof e.setDataPropsPath == "function") && e.setDataPropsPath(s);
279
279
  });
280
280
  }
281
281
  updateNestingStyles() {
282
- this.elementRef && (tt(this.elementRef, this.nestingLevel), ot(this.elementRef, this.nestingLevel));
282
+ this.elementRef && (j(this.elementRef, this.nestingLevel), Q(this.elementRef, this.nestingLevel));
283
283
  }
284
284
  forceChildUIRefresh() {
285
285
  Object.entries(this.settings).forEach(([t, e]) => {
286
286
  try {
287
- if (H(e)) {
287
+ if (b(e)) {
288
288
  const i = e.getValues();
289
289
  e.setValue(i);
290
290
  } else if (typeof e.setValue == "function") {
@@ -328,7 +328,7 @@ const it = class it {
328
328
  }
329
329
  clone() {
330
330
  const t = {};
331
- K(this.settings, (s, n) => {
331
+ q(this.settings, (s, n) => {
332
332
  const o = String(s);
333
333
  typeof n.clone == "function" ? t[o] = n.clone() : (console.warn(
334
334
  `Setting with key '${o}' does not have a clone method. Copying reference.`
@@ -345,7 +345,7 @@ const it = class it {
345
345
  deleteItem: this.deleteItemCfg,
346
346
  dataProps: this.dataProps,
347
347
  hide: this.hide
348
- }, i = wt(e);
348
+ }, i = yt(e);
349
349
  return i.initialValues = this.getValues(), i;
350
350
  }
351
351
  resetDefault() {
@@ -355,7 +355,7 @@ const it = class it {
355
355
  setMobileValues(t) {
356
356
  !t || typeof t != "object" || (Object.entries(t).forEach(([e, i]) => {
357
357
  const s = this.settings[e];
358
- s && (H(s) || X(s)) && typeof s.setMobileValue == "function" && s.setMobileValue(i);
358
+ s && (b(s) || B(s)) && typeof s.setMobileValue == "function" && s.setMobileValue(i);
359
359
  }), this.setValue(t), this.onChange && this.onChange(this.getValues()));
360
360
  }
361
361
  getMobileValues(t) {
@@ -364,7 +364,7 @@ const it = class it {
364
364
  for (const i in this.settings)
365
365
  if (Object.prototype.hasOwnProperty.call(this.settings, i)) {
366
366
  const s = this.settings[i];
367
- if (H(s))
367
+ if (b(s))
368
368
  e[i] = s.getMobileValues();
369
369
  else {
370
370
  const n = s;
@@ -375,7 +375,7 @@ const it = class it {
375
375
  } else {
376
376
  const e = this.settings[t];
377
377
  if (!e) return;
378
- if (H(e)) return e.getMobileValues();
378
+ if (b(e)) return e.getMobileValues();
379
379
  const i = e;
380
380
  return i.mobileValue !== void 0 ? i.mobileValue : i.value;
381
381
  }
@@ -391,14 +391,14 @@ const it = class it {
391
391
  Object.keys(s).length > 0 && (this.lastChangeTime = Date.now(), this.initialValues = i, t(i), this.updateVisibility()), this.isHandlingChange = !1;
392
392
  }, 50));
393
393
  };
394
- return this.changeHandlers.clear(), K(this.settings, (i, s) => {
394
+ return this.changeHandlers.clear(), q(this.settings, (i, s) => {
395
395
  var n;
396
- if (H(s))
396
+ if (b(s))
397
397
  s.setOnChange(() => {
398
398
  const o = this.getValues();
399
399
  this.initialValues = o, t(o);
400
400
  }), this.changeHandlers.add(() => t(this.getValues()));
401
- else if (X(s)) {
401
+ else if (B(s)) {
402
402
  const o = () => e();
403
403
  this.changeHandlers.add(o), s.setOnChange(o);
404
404
  } else {
@@ -421,10 +421,10 @@ const it = class it {
421
421
  const o = i.slice(this.addItemCfg.keyPrefix.length), a = Number(o);
422
422
  if (Number.isFinite(a)) {
423
423
  const l = this.addItemCfg.createItem(a);
424
- ct(l) && (this.addSetting(i, l), n = l);
424
+ st(l) && (this.addSetting(i, l), n = l);
425
425
  }
426
426
  }
427
- n && (H(n) || X(n)) && typeof n.setValue == "function" && n.setValue(s);
427
+ n && (b(n) || B(n)) && typeof n.setValue == "function" && n.setValue(s);
428
428
  }), setTimeout(() => {
429
429
  this.forceChildUIRefresh();
430
430
  }, 0);
@@ -438,7 +438,7 @@ const it = class it {
438
438
  const s = this.getValues();
439
439
  this.initialValues = s, (n = this.onChange) == null || n.call(this, s), this.updateVisibility();
440
440
  };
441
- H(t) ? t.setOnChange(() => e()) : X(t) ? t.setOnChange(() => e()) : (i = t.setOnChange) == null || i.call(t, () => e());
441
+ b(t) ? t.setOnChange(() => e()) : B(t) ? t.setOnChange(() => e()) : (i = t.setOnChange) == null || i.call(t, () => e());
442
442
  }
443
443
  addSetting(t, e) {
444
444
  var s, n;
@@ -447,16 +447,16 @@ const it = class it {
447
447
  ".setting-group-content"
448
448
  );
449
449
  if (o) {
450
- H(e) && typeof e.setNestingLevel == "function" && e.setNestingLevel(this.nestingLevel + 1);
450
+ b(e) && typeof e.setNestingLevel == "function" && e.setNestingLevel(this.nestingLevel + 1);
451
451
  const a = e.draw(), l = this.deleteItemCfg ?? this.addItemCfg;
452
452
  if (l) {
453
- const h = l.keyPrefix ?? ((s = this.addItemCfg) == null ? void 0 : s.keyPrefix);
454
- h && t.startsWith(h) && this.addDeleteButtonToElement(a, t);
453
+ const d = l.keyPrefix ?? ((s = this.addItemCfg) == null ? void 0 : s.keyPrefix);
454
+ d && t.startsWith(d) && this.addDeleteButtonToElement(a, t);
455
455
  }
456
- const r = o.querySelector(".sg-add-button-bottom");
457
- r ? o.insertBefore(a, r) : o.appendChild(a), rt.trackElement(a), tt(a, this.nestingLevel + 1), ot(a, this.nestingLevel + 1);
458
- const c = a.style.display;
459
- a.style.display = "none", a.offsetHeight, a.style.display = c, this.updateNestingStyles();
456
+ const c = o.querySelector(".sg-add-button-bottom");
457
+ c ? o.insertBefore(a, c) : o.appendChild(a), it.trackElement(a), j(a, this.nestingLevel + 1), Q(a, this.nestingLevel + 1);
458
+ const h = a.style.display;
459
+ a.style.display = "none", a.offsetHeight, a.style.display = h, this.updateNestingStyles();
460
460
  }
461
461
  }
462
462
  const i = this.getValues();
@@ -470,15 +470,15 @@ const it = class it {
470
470
  s = null;
471
471
  }
472
472
  if (!s) {
473
- const r = Array.from(
473
+ const c = Array.from(
474
474
  t.querySelectorAll(".setting-group-title")
475
475
  );
476
- for (const c of r)
477
- if (c.closest(".setting-group") === t) {
478
- s = c;
476
+ for (const h of c)
477
+ if (h.closest(".setting-group") === t) {
478
+ s = h;
479
479
  break;
480
480
  }
481
- s || (s = r[0] ?? null);
481
+ s || (s = c[0] ?? null);
482
482
  }
483
483
  if (!s) return;
484
484
  const n = s.querySelector(".actions-section");
@@ -507,9 +507,9 @@ const it = class it {
507
507
  o.style.backgroundColor = "#fef2f2";
508
508
  }), o.addEventListener("mouseleave", () => {
509
509
  o.style.backgroundColor = "transparent";
510
- }), o.addEventListener("click", (r) => {
511
- r.stopPropagation(), r.preventDefault(), this.showDeleteConfirmation().then((c) => {
512
- c && (i && i.deleteItemCfg ? this.removeSetting(e) : this.removeSetting(e));
510
+ }), o.addEventListener("click", (c) => {
511
+ c.stopPropagation(), c.preventDefault(), this.showDeleteConfirmation().then((h) => {
512
+ h && (i && i.deleteItemCfg ? this.removeSetting(e) : this.removeSetting(e));
513
513
  });
514
514
  });
515
515
  const l = n.querySelector(".setting-group-arrow");
@@ -594,22 +594,22 @@ const it = class it {
594
594
  }), l.addEventListener("mouseleave", () => {
595
595
  l.style.backgroundColor = "#ef4444";
596
596
  });
597
- const r = () => {
597
+ const c = () => {
598
598
  e.style.opacity = "0", i.style.transform = "scale(0.95)", setTimeout(() => {
599
599
  e.parentNode && e.parentNode.removeChild(e);
600
600
  }, 200);
601
601
  };
602
602
  a.addEventListener("click", () => {
603
- r(), t(!1);
603
+ c(), t(!1);
604
604
  }), l.addEventListener("click", () => {
605
- r(), t(!0);
606
- }), e.addEventListener("click", (h) => {
607
- h.target === e && (r(), t(!1));
605
+ c(), t(!0);
606
+ }), e.addEventListener("click", (d) => {
607
+ d.target === e && (c(), t(!1));
608
608
  });
609
- const c = (h) => {
610
- h.key === "Escape" && (r(), t(!1), document.removeEventListener("keydown", c));
609
+ const h = (d) => {
610
+ d.key === "Escape" && (c(), t(!1), document.removeEventListener("keydown", h));
611
611
  };
612
- document.addEventListener("keydown", c), o.appendChild(a), o.appendChild(l), i.appendChild(s), i.appendChild(n), i.appendChild(o), e.appendChild(i), document.body.appendChild(e), requestAnimationFrame(() => {
612
+ document.addEventListener("keydown", h), o.appendChild(a), o.appendChild(l), i.appendChild(s), i.appendChild(n), i.appendChild(o), e.appendChild(i), document.body.appendChild(e), requestAnimationFrame(() => {
613
613
  e.style.opacity = "1", i.style.transform = "scale(1)";
614
614
  }), setTimeout(() => l.focus(), 100);
615
615
  });
@@ -637,7 +637,7 @@ const it = class it {
637
637
  for (const i in this.settings)
638
638
  if (Object.prototype.hasOwnProperty.call(this.settings, i)) {
639
639
  const s = this.settings[i];
640
- if (H(s))
640
+ if (b(s))
641
641
  e[i] = s.getValues();
642
642
  else {
643
643
  const n = s;
@@ -648,7 +648,7 @@ const it = class it {
648
648
  } else {
649
649
  const e = this.settings[t];
650
650
  if (!e) return;
651
- if (H(e)) return e.getValues();
651
+ if (b(e)) return e.getValues();
652
652
  const i = e;
653
653
  return i.getValue ? i.getValue() : i.value;
654
654
  }
@@ -661,7 +661,7 @@ const it = class it {
661
661
  for (const s in this.settings)
662
662
  if (Object.prototype.hasOwnProperty.call(this.settings, s)) {
663
663
  const n = this.settings[s];
664
- if (H(n)) {
664
+ if (b(n)) {
665
665
  const o = n.getValuesForJson();
666
666
  o !== null && (i[s] = o);
667
667
  } else {
@@ -673,7 +673,7 @@ const it = class it {
673
673
  } else {
674
674
  const i = this.settings[t];
675
675
  if (!i) return;
676
- if (H(i))
676
+ if (b(i))
677
677
  return i.includeGetJson === !1 ? null : i.getValuesForJson();
678
678
  {
679
679
  const s = i;
@@ -687,7 +687,7 @@ const it = class it {
687
687
  for (const i in this.settings)
688
688
  if (Object.prototype.hasOwnProperty.call(this.settings, i)) {
689
689
  const s = this.settings[i];
690
- if (H(s))
690
+ if (b(s))
691
691
  e[i] = s.getDefaultValues();
692
692
  else {
693
693
  const n = s;
@@ -698,14 +698,14 @@ const it = class it {
698
698
  } else {
699
699
  const e = this.settings[t];
700
700
  if (!e) return;
701
- if (H(e)) return e.getDefaultValues();
701
+ if (b(e)) return e.getDefaultValues();
702
702
  const i = e;
703
703
  return i.default !== void 0 ? i.default : i.value;
704
704
  }
705
705
  }
706
706
  draw() {
707
707
  const t = document.createElement("div");
708
- t.className = "setting-group", t.id = `setting-group-${this.id}`, it.hiddenElements.add(t), this.hide && (t.style.display = "none"), this.isMain && t.classList.add("main-group"), this.custom && t.classList.add("custom_class"), tt(t, this.nestingLevel);
708
+ t.className = "setting-group", t.id = `setting-group-${this.id}`, Z.hiddenElements.add(t), this.hide && (t.style.display = "none"), this.isMain && t.classList.add("main-group"), this.custom && t.classList.add("custom_class"), j(t, this.nestingLevel);
709
709
  const e = document.createElement("div");
710
710
  e.className = "setting-group-title", this.isCollapsed && e.classList.add("collapsed-view"), e.setAttribute("role", "button"), e.setAttribute(
711
711
  "aria-expanded",
@@ -731,43 +731,43 @@ const it = class it {
731
731
  (!this.isCollapsed).toString()
732
732
  );
733
733
  };
734
- if (e.onclick = l, e.onkeydown = (c) => {
735
- (c.key === "Enter" || c.key === " ") && (c.preventDefault(), l());
734
+ if (e.onclick = l, e.onkeydown = (h) => {
735
+ (h.key === "Enter" || h.key === " ") && (h.preventDefault(), l());
736
736
  }, Object.keys(this.settings).length > 0) {
737
- for (const c in this.settings)
738
- if (Object.prototype.hasOwnProperty.call(this.settings, c)) {
739
- const h = this.settings[c];
740
- H(h) && typeof h.setNestingLevel == "function" && h.setNestingLevel(this.nestingLevel + 1);
741
- const d = h.draw();
742
- H(h) && h.deleteItemCfg && this.addDeleteButtonToElement(
743
- d,
744
- c,
745
- h
746
- ), a.appendChild(d);
737
+ for (const h in this.settings)
738
+ if (Object.prototype.hasOwnProperty.call(this.settings, h)) {
739
+ const d = this.settings[h];
740
+ b(d) && typeof d.setNestingLevel == "function" && d.setNestingLevel(this.nestingLevel + 1);
741
+ const p = d.draw();
742
+ b(d) && d.deleteItemCfg && this.addDeleteButtonToElement(
743
+ p,
744
+ h,
745
+ d
746
+ ), a.appendChild(p);
747
747
  }
748
748
  } else {
749
- const c = document.createElement("div");
750
- c.className = "setting-group-empty", c.textContent = "No settings in this group", a.appendChild(c);
749
+ const h = document.createElement("div");
750
+ h.className = "setting-group-empty", h.textContent = "No settings in this group", a.appendChild(h);
751
751
  }
752
752
  if (this.addItemCfg) {
753
- const c = document.createElement("button");
754
- c.type = "button", c.className = "sg-add-button-bottom", c.style.marginTop = "8px";
755
- const h = `
753
+ const h = document.createElement("button");
754
+ h.type = "button", h.className = "sg-add-button-bottom", h.style.marginTop = "8px";
755
+ const d = `
756
756
  <svg width="16" height="16" viewBox="0 0 16 16" fill="none"
757
757
  xmlns="http://www.w3.org/2000/svg">
758
758
  <path d="M8 3.333v9.334M3.333 8h9.334" stroke="currentColor"
759
759
  stroke-width="1.5" stroke-linecap="round"/>
760
760
  </svg>`;
761
- c.innerHTML = `${h}<span style="margin-left:4px;">${this.addItemCfg.buttonLabel ?? "Add"}</span>`, c.addEventListener("click", (d) => {
762
- d.stopPropagation(), d.preventDefault();
763
- const C = this.getNextIndexFromPrefix(this.addItemCfg.keyPrefix), u = this.addItemCfg.createItem(C);
764
- if (ct(u)) {
765
- const f = `${this.addItemCfg.keyPrefix}${C}`;
766
- this.addSetting(f, u);
761
+ h.innerHTML = `${d}<span style="margin-left:4px;">${this.addItemCfg.buttonLabel ?? "Add"}</span>`, h.addEventListener("click", (p) => {
762
+ p.stopPropagation(), p.preventDefault();
763
+ const g = this.getNextIndexFromPrefix(this.addItemCfg.keyPrefix), u = this.addItemCfg.createItem(g);
764
+ if (st(u)) {
765
+ const m = `${this.addItemCfg.keyPrefix}${g}`;
766
+ this.addSetting(m, u);
767
767
  }
768
- }), a.appendChild(c);
768
+ }), a.appendChild(h);
769
769
  }
770
- return e.appendChild(i), e.appendChild(n), t.appendChild(e), t.appendChild(a), this.elementRef = t, rt.trackElement(t), setTimeout(() => {
770
+ return e.appendChild(i), e.appendChild(n), t.appendChild(e), t.appendChild(a), this.elementRef = t, it.trackElement(t), setTimeout(() => {
771
771
  this.updateNestingStyles();
772
772
  }, 0), this.pendingBlurHandler && (this.pendingBlurHandler = null), t;
773
773
  }
@@ -809,12 +809,12 @@ const it = class it {
809
809
  }
810
810
  }
811
811
  };
812
- it.hiddenElements = /* @__PURE__ */ new Set();
813
- let z = it;
814
- function Zt(p) {
815
- return new bt(p);
812
+ Z.hiddenElements = /* @__PURE__ */ new Set();
813
+ let V = Z;
814
+ function ne(r) {
815
+ return new Ct(r);
816
816
  }
817
- class bt extends z {
817
+ class Ct extends V {
818
818
  constructor(t) {
819
819
  super(t);
820
820
  const e = Object.keys(this.settings)[0];
@@ -850,14 +850,14 @@ class bt extends z {
850
850
  n.className = "tabs-header", this.tabsContainer = n;
851
851
  const o = document.createElement("div");
852
852
  if (o.className = "tab-content", this.contentContainers = {}, Object.keys(this.settings).forEach((a, l) => {
853
- const r = document.createElement("button");
854
- r.className = "tab-button", r.type = "button", r.setAttribute("data-tab-id", a), r.textContent = a, r.addEventListener("click", () => this.switchToTab(a)), n.appendChild(r);
855
- const c = document.createElement("div");
856
- c.className = "tab-panel", this.contentContainers[a] = c;
857
- const h = this.settings[a];
858
- h && (H(h) && typeof h.setNestingLevel == "function" && h.setNestingLevel(this.getNestingLevel() + 1), c.appendChild(
859
- h.draw()
860
- )), o.appendChild(c), l === 0 && !this.activeTabId && (this.activeTabId = a);
853
+ const c = document.createElement("button");
854
+ c.className = "tab-button", c.type = "button", c.setAttribute("data-tab-id", a), c.textContent = a, c.addEventListener("click", () => this.switchToTab(a)), n.appendChild(c);
855
+ const h = document.createElement("div");
856
+ h.className = "tab-panel", this.contentContainers[a] = h;
857
+ const d = this.settings[a];
858
+ d && (b(d) && typeof d.setNestingLevel == "function" && d.setNestingLevel(this.getNestingLevel() + 1), h.appendChild(
859
+ d.draw()
860
+ )), o.appendChild(h), l === 0 && !this.activeTabId && (this.activeTabId = a);
861
861
  }), e.appendChild(i), e.appendChild(n), e.appendChild(o), !this.activeTabId) {
862
862
  const a = Object.keys(this.settings)[0];
863
863
  this.activeTabId = a || "";
@@ -865,13 +865,13 @@ class bt extends z {
865
865
  return this.updateTabUI(), t;
866
866
  }
867
867
  }
868
- function wt(p) {
869
- return new z(p);
868
+ function yt(r) {
869
+ return new V(r);
870
870
  }
871
- function Yt(p) {
872
- return p;
871
+ function oe(r) {
872
+ return r;
873
873
  }
874
- class xt extends T {
874
+ class Et extends y {
875
875
  constructor(t = {}) {
876
876
  super(t), this.inputType = "text", t.onChange && this.setOnChange(t.onChange);
877
877
  }
@@ -891,31 +891,31 @@ class xt extends T {
891
891
  });
892
892
  }
893
893
  }
894
- const Lt = "<svg xmlns='http://www.w3.org/2000/svg' width='18' height='19' viewBox='0 0 18 19' fill='none'><path d='M8.99999 15.8542C9.79613 16.5667 10.8475 17 12 17C14.4853 17 16.5 14.9853 16.5 12.5C16.5 10.4248 15.0953 8.67769 13.1849 8.15763M4.81513 8.15762C2.9047 8.67768 1.5 10.4248 1.5 12.5C1.5 14.9853 3.51472 17 6 17C8.48528 17 10.5 14.9853 10.5 12.5C10.5 11.9146 10.3882 11.3554 10.1849 10.8424M13.5 6.5C13.5 8.98528 11.4853 11 9 11C6.51472 11 4.5 8.98528 4.5 6.5C4.5 4.01472 6.51472 2 9 2C11.4853 2 13.5 4.01472 13.5 6.5Z' stroke='#667085' stroke-linecap='round' stroke-linejoin='round'/></svg>";
895
- class W extends xt {
894
+ const bt = "<svg xmlns='http://www.w3.org/2000/svg' width='18' height='19' viewBox='0 0 18 19' fill='none'><path d='M8.99999 15.8542C9.79613 16.5667 10.8475 17 12 17C14.4853 17 16.5 14.9853 16.5 12.5C16.5 10.4248 15.0953 8.67769 13.1849 8.15763M4.81513 8.15762C2.9047 8.67768 1.5 10.4248 1.5 12.5C1.5 14.9853 3.51472 17 6 17C8.48528 17 10.5 14.9853 10.5 12.5C10.5 11.9146 10.3882 11.3554 10.1849 10.8424M13.5 6.5C13.5 8.98528 11.4853 11 9 11C6.51472 11 4.5 8.98528 4.5 6.5C4.5 4.01472 6.51472 2 9 2C11.4853 2 13.5 4.01472 13.5 6.5Z' stroke='#667085' stroke-linecap='round' stroke-linejoin='round'/></svg>";
895
+ class M extends Et {
896
896
  constructor(t) {
897
897
  super({
898
898
  ...t,
899
- icon: t.icon || Lt,
899
+ icon: t.icon || bt,
900
900
  title: t.title || "Color",
901
- default: t.default ? W.normalizeColorValue(t.default) : "#000000"
901
+ default: t.default ? M.normalizeColorValue(t.default) : "#000000"
902
902
  }), this.inputType = "color", this.element = null, this.colorInputEl = null, this.textInputEl = null, this.detectChange = t.detectChange;
903
903
  }
904
904
  static normalizeColorValue(t) {
905
- return t.startsWith("#") ? W.normalizeHexValue(t) : t.includes(",") ? W.rgbToHexStatic(t) : W.normalizeHexValue(t);
905
+ return t.startsWith("#") ? M.normalizeHexValue(t) : t.includes(",") ? M.rgbToHexStatic(t) : M.normalizeHexValue(t);
906
906
  }
907
907
  static normalizeHexValue(t) {
908
908
  return t = t.replace("#", ""), t.length === 3 && (t = t.split("").map((e) => e + e).join("")), t.length !== 6 ? (console.warn(`Invalid hex value "${t}", using default "#000000"`), "#000000") : /^[0-9A-Fa-f]{6}$/.test(t) ? `#${t.toLowerCase()}` : (console.warn(`Invalid hex value "${t}", using default "#000000"`), "#000000");
909
909
  }
910
910
  static rgbToHexStatic(t) {
911
- const e = t.split(",").map((c) => parseInt(c.trim()));
911
+ const e = t.split(",").map((h) => parseInt(h.trim()));
912
912
  if (e.length !== 3 || e.some(isNaN))
913
913
  return console.warn(`Invalid RGB value "${t}", using default "#000000"`), "#000000";
914
- const [i, s, n] = e, o = Math.max(0, Math.min(255, i)), a = Math.max(0, Math.min(255, s)), l = Math.max(0, Math.min(255, n)), r = (c) => {
915
- const h = c.toString(16);
916
- return h.length === 1 ? "0" + h : h;
914
+ const [i, s, n] = e, o = Math.max(0, Math.min(255, i)), a = Math.max(0, Math.min(255, s)), l = Math.max(0, Math.min(255, n)), c = (h) => {
915
+ const d = h.toString(16);
916
+ return d.length === 1 ? "0" + d : d;
917
917
  };
918
- return `#${r(o)}${r(a)}${r(l)}`;
918
+ return `#${c(o)}${c(a)}${c(l)}`;
919
919
  }
920
920
  setValue(t) {
921
921
  if (t === void 0) {
@@ -923,7 +923,7 @@ class W extends xt {
923
923
  return;
924
924
  }
925
925
  if (typeof t == "string") {
926
- const e = W.normalizeColorValue(t);
926
+ const e = M.normalizeColorValue(t);
927
927
  this.value = e, this.colorInputEl && (this.colorInputEl.value = e), this.textInputEl && (this.textInputEl.value = e), this.onChange && this.onChange(e), this.props.detectChange && this.props.detectChange(e);
928
928
  } else
929
929
  this.value = "#000000", this.colorInputEl && (this.colorInputEl.value = "#000000"), this.textInputEl && (this.textInputEl.value = "#000000"), this.onChange && this.onChange("#000000"), this.props.detectChange && this.props.detectChange("#000000");
@@ -938,23 +938,23 @@ class W extends xt {
938
938
  if (t.className = "color-setting-wrapper " + (this.props.wrapperClassName || ""), this.props.title || this.props.icon) {
939
939
  const l = document.createElement("div");
940
940
  if (l.className = "icon-container", this.props.icon) {
941
- const r = document.createElement("span");
942
- r.className = "input-icon", r.innerHTML = this.props.icon, l.appendChild(r);
941
+ const c = document.createElement("span");
942
+ c.className = "input-icon", c.innerHTML = this.props.icon, l.appendChild(c);
943
943
  }
944
944
  if (this.props.title) {
945
- const r = document.createElement("span");
946
- r.className = "input-label", r.textContent = this.props.title, l.appendChild(r);
945
+ const c = document.createElement("span");
946
+ c.className = "input-label", c.textContent = this.props.title, l.appendChild(c);
947
947
  }
948
948
  t.appendChild(l);
949
949
  }
950
950
  const e = document.createElement("div");
951
951
  e.className = "color-input-wrapper";
952
952
  const i = (l) => {
953
- const r = l.value.trim();
954
- if (!r)
953
+ const c = l.value.trim();
954
+ if (!c)
955
955
  return e.classList.remove("error"), !0;
956
- const h = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(r);
957
- return h ? e.classList.remove("error") : e.classList.add("error"), h;
956
+ const d = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/.test(c);
957
+ return d ? e.classList.remove("error") : e.classList.add("error"), d;
958
958
  }, s = document.createElement("input");
959
959
  s.type = "color", s.className = "color-picker", s.value = this.value || "#000000", s.setAttribute("aria-label", "Choose color"), s.setAttribute("title", "Click to open color picker"), this.getDataPropsPath() && s.setAttribute("data-test-id", this.getDataPropsPath()), this.colorInputEl = s;
960
960
  const n = document.createElement("div");
@@ -963,20 +963,20 @@ class W extends xt {
963
963
  n.style.backgroundColor = o;
964
964
  const a = document.createElement("input");
965
965
  return a.type = "text", a.className = "color-text-input", a.value = this.value || "", a.placeholder = "#000000", a.setAttribute("pattern", "#[0-9A-Fa-f]{6}"), a.setAttribute("title", "Enter a hex color value (e.g., #ff0000)"), a.setAttribute("aria-label", "Hex color value"), a.setAttribute("maxlength", "7"), this.getDataPropsPath() && a.setAttribute("data-test-id", `${this.getDataPropsPath()}_text`), this.textInputEl = a, this.textInputEl.addEventListener("input", (l) => {
966
- var c, h;
967
- let r = l.target.value.trim();
966
+ var h, d;
967
+ let c = l.target.value.trim();
968
968
  if (this.textInputEl && i(this.textInputEl)) {
969
- const d = W.normalizeColorValue(r);
970
- this.value = d, (c = this.onChange) == null || c.call(this, d), (h = this.detectChange) == null || h.call(this, d), this.colorInputEl && (this.colorInputEl.value = d), n.style.backgroundColor = d;
969
+ const p = M.normalizeColorValue(c);
970
+ this.value = p, (h = this.onChange) == null || h.call(this, p), (d = this.detectChange) == null || d.call(this, p), this.colorInputEl && (this.colorInputEl.value = p), n.style.backgroundColor = p;
971
971
  }
972
972
  }), this.colorInputEl.addEventListener("input", (l) => {
973
- var h, d;
974
- const r = l.target.value, c = W.normalizeColorValue(r);
975
- this.value = c, (h = this.onChange) == null || h.call(this, c), (d = this.detectChange) == null || d.call(this, c), this.textInputEl && (this.textInputEl.value = c), n.style.backgroundColor = c, e.classList.remove("error");
973
+ var d, p;
974
+ const c = l.target.value, h = M.normalizeColorValue(c);
975
+ this.value = h, (d = this.onChange) == null || d.call(this, h), (p = this.detectChange) == null || p.call(this, h), this.textInputEl && (this.textInputEl.value = h), n.style.backgroundColor = h, e.classList.remove("error");
976
976
  }), this.colorInputEl.addEventListener("change", (l) => {
977
- var h, d;
978
- const r = l.target.value, c = W.normalizeColorValue(r);
979
- this.value = c, (h = this.onChange) == null || h.call(this, c), (d = this.detectChange) == null || d.call(this, c), this.textInputEl && (this.textInputEl.value = c), n.style.backgroundColor = c;
977
+ var d, p;
978
+ const c = l.target.value, h = M.normalizeColorValue(c);
979
+ this.value = h, (d = this.onChange) == null || d.call(this, h), (p = this.detectChange) == null || p.call(this, h), this.textInputEl && (this.textInputEl.value = h), n.style.backgroundColor = h;
980
980
  }), e.appendChild(s), e.appendChild(n), e.appendChild(a), t.appendChild(e), this.element = t, t;
981
981
  }
982
982
  getElement() {
@@ -984,7 +984,7 @@ class W extends xt {
984
984
  }
985
985
  // Helper method to get normalized hex value
986
986
  getNormalizedValue() {
987
- return this.value ? W.normalizeColorValue(this.value) : "#000000";
987
+ return this.value ? M.normalizeColorValue(this.value) : "#000000";
988
988
  }
989
989
  // Helper method to check if current value is valid hex
990
990
  isValidHex() {
@@ -995,20 +995,20 @@ class W extends xt {
995
995
  return this.isValidHex() ? this.hexToRgb(this.value) : "0, 0, 0";
996
996
  }
997
997
  }
998
- const kt = `
998
+ const wt = `
999
999
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1000
1000
  <path d="M8.99999 15.8542C9.79613 16.5667 10.8475 17 12 17C14.4853 17 16.5 14.9853 16.5 12.5C16.5 10.4248 15.0953 8.67769 13.1849 8.15763M4.81513 8.15762C2.9047 8.67768 1.5 10.4248 1.5 12.5C1.5 14.9853 3.51472 17 6 17C8.48528 17 10.5 14.9853 10.5 12.5C10.5 11.9146 10.3882 11.3554 10.1849 10.8424M13.5 6.5C13.5 8.98528 11.4853 11 9 11C6.51472 11 4.5 8.98528 4.5 6.5C4.5 4.01472 6.51472 2 9 2C11.4853 2 13.5 4.01472 13.5 6.5Z" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
1001
1001
  <path d="M9 17C13.4183 17 17 13.4183 17 9C17 4.58172 13.4183 1 9 1C4.58172 1 1 4.58172 1 9C1 13.4183 4.58172 17 9 17Z" stroke="#667085" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" opacity="0.5"/>
1002
1002
  <path d="M9 1V17C4.58172 17 1 13.4183 1 9C1 4.58172 4.58172 1 9 1Z" fill="#667085" stroke="#667085" stroke-width="0.5" stroke-linecap="round" stroke-linejoin="round" opacity="0.5"/>
1003
1003
  </svg>`;
1004
- class j extends T {
1004
+ class T extends y {
1005
1005
  constructor(t = {}) {
1006
1006
  super({
1007
1007
  ...t,
1008
- icon: t.icon || kt,
1008
+ icon: t.icon || wt,
1009
1009
  title: t.title || "Color & Opacity",
1010
1010
  default: t.default || "#000000FF"
1011
- }), this.inputType = "color", this.element = null, this.colorInputEl = null, this.textInputEl = null, this.opacityInputEl = null, this.colorPreviewEl = null, this.detectChange = t.detectChange, this.value && (this.value = j.normalizeHexWithOpacity(this.value));
1011
+ }), this.inputType = "color", this.element = null, this.colorInputEl = null, this.textInputEl = null, this.opacityInputEl = null, this.colorPreviewEl = null, this.detectChange = t.detectChange, this.value && (this.value = T.normalizeHexWithOpacity(this.value));
1012
1012
  }
1013
1013
  static normalizeHexWithOpacity(t) {
1014
1014
  return t = t.replace("#", ""), t.length === 3 && (t = t.split("").map((e) => e + e).join("")), t.length === 6 && (t = t + "FF"), t.length === 8 && /^[0-9A-Fa-f]{8}$/.test(t) ? `#${t.toUpperCase()}` : (console.warn(`Invalid hex value "${t}", using default "#000000FF"`), "#000000FF");
@@ -1026,7 +1026,7 @@ class j extends T {
1026
1026
  return `#${i}${n}`;
1027
1027
  }
1028
1028
  setValue(t) {
1029
- t === void 0 || t === "" ? this.value = "#000000FF" : this.value = j.normalizeHexWithOpacity(t), this.updateInputElements(), this.updateColorPreview(), this.onChange && this.onChange(this.value), this.detectChange && this.detectChange(this.value);
1029
+ t === void 0 || t === "" ? this.value = "#000000FF" : this.value = T.normalizeHexWithOpacity(t), this.updateInputElements(), this.updateColorPreview(), this.onChange && this.onChange(this.value), this.detectChange && this.detectChange(this.value);
1030
1030
  }
1031
1031
  updateInputElements() {
1032
1032
  this.value && (this.colorInputEl && (this.colorInputEl.value = this.getRgbColor()), this.textInputEl && (this.textInputEl.value = this.value), this.opacityInputEl && (this.opacityInputEl.value = this.getOpacityPercent().toString()));
@@ -1037,7 +1037,7 @@ class j extends T {
1037
1037
  this.colorPreviewEl.style.backgroundColor = `rgba(${s}, ${n}, ${o}, ${e})`;
1038
1038
  }
1039
1039
  handleColorChange(t) {
1040
- const e = this.getOpacityPercent(), i = j.combineColorOpacity(
1040
+ const e = this.getOpacityPercent(), i = T.combineColorOpacity(
1041
1041
  t,
1042
1042
  e
1043
1043
  );
@@ -1048,7 +1048,7 @@ class j extends T {
1048
1048
  return e || i ? (this.setValue(t), !0) : !1;
1049
1049
  }
1050
1050
  handleOpacityChange(t) {
1051
- const e = this.getRgbColor(), i = Math.max(0, Math.min(100, t)), s = j.combineColorOpacity(
1051
+ const e = this.getRgbColor(), i = Math.max(0, Math.min(100, t)), s = T.combineColorOpacity(
1052
1052
  e,
1053
1053
  i
1054
1054
  );
@@ -1123,7 +1123,7 @@ class j extends T {
1123
1123
  };
1124
1124
  }
1125
1125
  }
1126
- class Kt extends T {
1126
+ class ae extends y {
1127
1127
  constructor(t = {}) {
1128
1128
  super(t), this.inputType = "text", t.onChange && this.setOnChange(t.onChange);
1129
1129
  }
@@ -1155,7 +1155,7 @@ class Kt extends T {
1155
1155
  return e.addEventListener("input", i), e.addEventListener("change", i), e.addEventListener("blur", s), t.appendChild(e), t;
1156
1156
  }
1157
1157
  }
1158
- class U extends T {
1158
+ class I extends y {
1159
1159
  constructor(t) {
1160
1160
  super(t), this.inputType = "number", this.inputElement = null, this.mobileValue = t.mobile, this.validateProps(), this.value = this.validateValue(this.value);
1161
1161
  }
@@ -1214,12 +1214,12 @@ class U extends T {
1214
1214
  );
1215
1215
  }
1216
1216
  }
1217
- const Mt = `
1217
+ const xt = `
1218
1218
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1219
1219
  <path d="M9 17C13.4183 17 17 13.4183 17 9C17 4.58172 13.4183 1 9 1C4.58172 1 1 4.58172 1 9C1 13.4183 4.58172 17 9 17Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1220
1220
  <path d="M9 1V17C4.58172 17 1 13.4183 1 9C1 4.58172 4.58172 1 9 1Z" fill="#667085" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1221
1221
  </svg>`;
1222
- class St extends U {
1222
+ class Lt extends I {
1223
1223
  constructor(t = {}) {
1224
1224
  const e = {
1225
1225
  title: "Opacity",
@@ -1228,7 +1228,7 @@ class St extends U {
1228
1228
  maxValue: 100,
1229
1229
  step: 1,
1230
1230
  default: t.default ?? 100,
1231
- icon: Mt,
1231
+ icon: xt,
1232
1232
  ...t
1233
1233
  };
1234
1234
  super(e), this.inputType = "number", this.mobileValue = t.mobile;
@@ -1240,12 +1240,12 @@ class St extends U {
1240
1240
  this.mobileValue = t, t !== void 0 && this.setValue(t);
1241
1241
  }
1242
1242
  }
1243
- const It = `
1243
+ const kt = `
1244
1244
  <svg xmlns="http://www.w3.org/2000/svg" class="svg-select" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down">
1245
1245
  <polyline points="6 9 12 15 18 9"></polyline>
1246
1246
  </svg>
1247
1247
  `;
1248
- class at extends T {
1248
+ class tt extends y {
1249
1249
  constructor(t = {}) {
1250
1250
  if (super(t), this.inputType = "select", this._options = [], this.isOpen = !1, this.selectedOptionIndex = null, this.optionsListEl = null, this.svgContainer = null, this.buttonEl = null, this.isLoading = !1, this.container = null, this.clickOutsideListener = null, this.resizeListener = null, t.options && (this._options = [...t.options]), t.getOptions && this._options.push(...t.getOptions()), t.getOptionsAsync && (this.isLoading = !0), this.value !== void 0) {
1251
1251
  const e = this._options.findIndex((i) => i.value === this.value);
@@ -1289,7 +1289,7 @@ class at extends T {
1289
1289
  a.onclick = (l) => this.selectOption(l, o, e), i.appendChild(a);
1290
1290
  }), document.body.appendChild(i);
1291
1291
  const s = document.createElement("div");
1292
- return s.classList.add("svg-container"), s.innerHTML = It, t.appendChild(s), this.optionsListEl = i, this.svgContainer = s, this.props.getOptionsAsync && (this.isLoading = !0, this.updateButtonText(), this.props.getOptionsAsync().then((n) => {
1292
+ return s.classList.add("svg-container"), s.innerHTML = kt, t.appendChild(s), this.optionsListEl = i, this.svgContainer = s, this.props.getOptionsAsync && (this.isLoading = !0, this.updateButtonText(), this.props.getOptionsAsync().then((n) => {
1293
1293
  this._options.push(...n), this.isLoading = !1, this.updateOptionsList(), this.updateButtonText();
1294
1294
  }).catch((n) => {
1295
1295
  console.error("Failed to fetch async options:", n), this.isLoading = !1, this.updateButtonText("Failed to load options");
@@ -1319,8 +1319,8 @@ class at extends T {
1319
1319
  selectOption(t, e, i) {
1320
1320
  var n, o;
1321
1321
  const s = this._options[e];
1322
- s && (this.setValue(s.value), this.selectedOptionIndex = e, this.isOpen = !1, i.textContent = s.name, (n = this.optionsListEl) == null || n.classList.remove("open"), (o = this.svgContainer) == null || o.classList.remove("open"), this.cleanupDropdownPosition(), this.optionsListEl && this.optionsListEl.querySelectorAll(".select-option").forEach((l, r) => {
1323
- r === e ? l.classList.add("selected") : l.classList.remove("selected");
1322
+ s && (this.setValue(s.value), this.selectedOptionIndex = e, this.isOpen = !1, i.textContent = s.name, (n = this.optionsListEl) == null || n.classList.remove("open"), (o = this.svgContainer) == null || o.classList.remove("open"), this.cleanupDropdownPosition(), this.optionsListEl && this.optionsListEl.querySelectorAll(".select-option").forEach((l, c) => {
1323
+ c === e ? l.classList.add("selected") : l.classList.remove("selected");
1324
1324
  }));
1325
1325
  }
1326
1326
  /**
@@ -1358,7 +1358,7 @@ class at extends T {
1358
1358
  this.clickOutsideListener && (document.removeEventListener("click", this.clickOutsideListener), this.clickOutsideListener = null), this.resizeListener && (window.removeEventListener("resize", this.resizeListener), this.resizeListener = null), this.cleanupDropdownPosition(), this.optionsListEl && this.optionsListEl.parentNode && this.optionsListEl.parentNode.removeChild(this.optionsListEl), super.destroy();
1359
1359
  }
1360
1360
  }
1361
- class Nt extends T {
1361
+ class Mt extends y {
1362
1362
  constructor(t = {}) {
1363
1363
  super(t), this.inputType = "button", this.value || (this.value = "center");
1364
1364
  }
@@ -1414,7 +1414,7 @@ class Nt extends T {
1414
1414
  }), t.appendChild(i), t;
1415
1415
  }
1416
1416
  }
1417
- class Qt extends T {
1417
+ class le extends y {
1418
1418
  constructor(t) {
1419
1419
  super(t), this.inputType = "button", this.bgWithAlpha = "rgba(145, 158, 171, 0.08)";
1420
1420
  }
@@ -1428,8 +1428,8 @@ class Qt extends T {
1428
1428
  /^rgba\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\)$/i
1429
1429
  );
1430
1430
  if (n) {
1431
- let a = +n[1], l = +n[2], r = +n[3], c = +n[4];
1432
- c >= 1 ? (a = Math.round(a * 0.9), l = Math.round(l * 0.9), r = Math.round(r * 0.9)) : c = Math.min(1, c + 0.12), s = `rgba(${a},${l},${r},${c})`;
1431
+ let a = +n[1], l = +n[2], c = +n[3], h = +n[4];
1432
+ h >= 1 ? (a = Math.round(a * 0.9), l = Math.round(l * 0.9), c = Math.round(c * 0.9)) : h = Math.min(1, h + 0.12), s = `rgba(${a},${l},${c},${h})`;
1433
1433
  }
1434
1434
  t.addEventListener("mouseenter", () => {
1435
1435
  console.log("hoverBg", s), t.style.setProperty("background-color", s, "important");
@@ -1443,27 +1443,27 @@ class Qt extends T {
1443
1443
  return o.className = "button-setting-wrapper " + (this.props.wrapperClassName || ""), o.appendChild(t), o;
1444
1444
  }
1445
1445
  }
1446
- class te extends T {
1446
+ class re extends y {
1447
1447
  constructor(t = {}) {
1448
1448
  super(t), this.inputType = { width: "number", height: "number" }, this.aspectRatio = 1, this.isUpdating = !1;
1449
1449
  const e = t.width || 0, i = t.height || 0;
1450
1450
  this.value || (this.value = {
1451
1451
  width: e,
1452
1452
  height: i
1453
- }), this.minWidth = t.minWidth ?? 0, this.maxWidth = t.maxWidth, this.minHeight = t.minHeight ?? 0, this.maxHeight = t.maxHeight, this.locked = t.locked ?? !1, this.value.height > 0 && (this.aspectRatio = this.value.width / this.value.height), this.widthSetting = new U({
1453
+ }), this.minWidth = t.minWidth ?? 0, this.maxWidth = t.maxWidth, this.minHeight = t.minHeight ?? 0, this.maxHeight = t.maxHeight, this.locked = t.locked ?? !1, this.value.height > 0 && (this.aspectRatio = this.value.width / this.value.height), this.widthSetting = new I({
1454
1454
  title: "Width",
1455
1455
  default: this.value.width,
1456
1456
  suffix: "px",
1457
1457
  minValue: this.minWidth,
1458
1458
  maxValue: this.maxWidth,
1459
- icon: Vt
1460
- }), this.heightSetting = new U({
1459
+ icon: St
1460
+ }), this.heightSetting = new I({
1461
1461
  title: "Height",
1462
1462
  default: this.value.height,
1463
1463
  suffix: "px",
1464
1464
  minValue: this.minHeight,
1465
1465
  maxValue: this.maxHeight,
1466
- icon: Tt
1466
+ icon: It
1467
1467
  }), this.widthSetting.setOnChange(this.handleWidthChange.bind(this)), this.heightSetting.setOnChange(this.handleHeightChange.bind(this));
1468
1468
  }
1469
1469
  handleWidthChange(t) {
@@ -1557,24 +1557,24 @@ class te extends T {
1557
1557
  }
1558
1558
  }
1559
1559
  }
1560
- const Vt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1560
+ const St = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1561
1561
  <path d="M4.5 9.5H13.5M4.5 9.5L6 7.25M4.5 9.5L6 11.75M13.5 9.5L12 7.25M13.5 9.5L12 11.75M15.75 16.25V2.75M2.25 16.25V2.75" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
1562
- </svg>`, Tt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1562
+ </svg>`, It = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1563
1563
  <path d="M9 14L9 5M9 14L6.75 12.5M9 14L11.25 12.5M9 5L6.75 6.5M9 5L11.25 6.5M15.75 2.75H2.25M15.75 16.25H2.25" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
1564
- </svg>`, nt = `
1564
+ </svg>`, X = `
1565
1565
  <svg xmlns="http://www.w3.org/2000/svg" width="15" height="16" viewBox="0 0 15 16" fill="none">
1566
1566
  <path d="M5 10.5L7.5 8M7.5 8L10 10.5M7.5 8V13.625M12.5 10.9643C13.2634 10.3338 13.75 9.37996 13.75 8.3125C13.75 6.41402 12.211 4.875 10.3125 4.875C10.1759 4.875 10.0482 4.80375 9.97882 4.68609C9.16379 3.30302 7.65902 2.375 5.9375 2.375C3.34867 2.375 1.25 4.47367 1.25 7.0625C1.25 8.35381 1.77215 9.52317 2.61684 10.371" stroke="#475467" stroke-linecap="round" stroke-linejoin="round"/>
1567
1567
  </svg>
1568
- `, Ht = `
1568
+ `, Nt = `
1569
1569
  <svg width="91" height="71" viewBox="0 0 91 71" fill="none" xmlns="http://www.w3.org/2000/svg">
1570
1570
  <rect width="91" height="71" rx="4" fill="#F2F4F7"/>
1571
1571
  <path d="M37 31.5L39.5 29M39.5 29L42 31.5M39.5 29V34.625M44.5 31.9643C45.2634 31.3338 45.75 30.38 45.75 29.3125C45.75 27.414 44.211 25.875 42.3125 25.875C42.1759 25.875 42.0482 25.8037 41.9788 25.6861C41.1638 24.303 39.659 23.375 37.9375 23.375C35.3487 23.375 33.25 25.4737 33.25 28.0625C33.25 29.3538 33.7721 30.5232 34.6168 31.371" stroke="#475467" stroke-linecap="round" stroke-linejoin="round"/>
1572
1572
  </svg>
1573
- `, Ot = `
1573
+ `, Vt = `
1574
1574
  <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 12 12" fill="none">
1575
1575
  <path d="M8 3V2.6C8 2.03995 8 1.75992 7.89101 1.54601C7.79513 1.35785 7.64215 1.20487 7.45399 1.10899C7.24008 1 6.96005 1 6.4 1H5.6C5.03995 1 4.75992 1 4.54601 1.10899C4.35785 1.20487 4.20487 1.35785 4.10899 1.54601C4 1.75992 4 2.03995 4 2.6V3M5 5.75V8.25M7 5.75V8.25M1.5 3H10.5M9.5 3V8.6C9.5 9.44008 9.5 9.86012 9.33651 10.181C9.1927 10.4632 8.96323 10.6927 8.68099 10.8365C8.36012 11 7.94008 11 7.1 11H4.9C4.05992 11 3.63988 11 3.31901 10.8365C3.03677 10.6927 2.8073 10.4632 2.66349 10.181C2.5 9.86012 2.5 9.44008 2.5 8.6V3" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
1576
1576
  </svg>
1577
- `, Pt = `
1577
+ `, Ot = `
1578
1578
  <svg xmlns="http://www.w3.org/2000/svg" width="29" height="29" viewBox="0 0 29 29" fill="none">
1579
1579
  <!-- Top dot -->
1580
1580
  <circle cx="14.5" cy="3" r="1.5" fill="#02CC59" opacity="1"/>
@@ -1594,7 +1594,7 @@ const Vt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewB
1594
1594
  <circle cx="6.7" cy="6.7" r="1.5" fill="#02CC59" opacity="0.3"/>
1595
1595
  </svg>
1596
1596
  `;
1597
- class pt extends T {
1597
+ class rt extends y {
1598
1598
  constructor(t = {}) {
1599
1599
  super(t), this.inputType = "button", this.previewWrapper = null, this.previewEl = null, this.emptyStateEl = null, this.errorContainer = null, this.messageListener = null, this.loadingSpinner = null, this.props.delete === void 0 && (this.props.delete = !0), this.props.maxFileSizeMB === void 0 && (this.props.maxFileSizeMB = 5), !this.value && t.defaultUrl && t.defaultUrl !== "" && (this.value = t.defaultUrl), this.setupMessageListener();
1600
1600
  }
@@ -1647,7 +1647,7 @@ class pt extends T {
1647
1647
  );
1648
1648
  if (t && t !== "") {
1649
1649
  this.showLoading(), s && s instanceof HTMLElement && (s.style.display = "none"), e && e.classList.remove("no-image"), i && (i.innerHTML = `
1650
- <span class="upload-icon">${nt}</span>
1650
+ <span class="upload-icon">${X}</span>
1651
1651
  <span class="upload-label">Replace</span>
1652
1652
  `);
1653
1653
  const n = () => {
@@ -1658,7 +1658,7 @@ class pt extends T {
1658
1658
  this.previewEl.addEventListener("load", n), this.previewEl.addEventListener("error", o), this.previewEl.src = t;
1659
1659
  } else
1660
1660
  this.hideLoading(), this.previewWrapper.classList.remove("has-image"), this.previewEl.src = "", this.previewEl.style.display = "none", this.previewWrapper.style.display = "none", s && s instanceof HTMLElement && (s.style.display = "block"), e && e.classList.add("no-image"), i && (i.innerHTML = `
1661
- <span class="upload-icon">${nt}</span>
1661
+ <span class="upload-icon">${X}</span>
1662
1662
  <span class="upload-label">Upload</span>
1663
1663
  `);
1664
1664
  }
@@ -1691,17 +1691,17 @@ class pt extends T {
1691
1691
  const s = this.value && this.value !== "";
1692
1692
  s || i.classList.add("no-image");
1693
1693
  const n = document.createElement("div");
1694
- if (n.className = "preview-placeholder", n.innerHTML = Ht, this.previewWrapper = document.createElement("div"), this.previewWrapper.className = "preview-wrapper", this.loadingSpinner = document.createElement("div"), this.loadingSpinner.className = "loading-spinner", this.loadingSpinner.innerHTML = Pt, this.loadingSpinner.style.display = "none", this.previewWrapper.appendChild(this.loadingSpinner), this.previewEl = document.createElement("img"), this.previewEl.className = "upload-preview", this.props.delete) {
1694
+ if (n.className = "preview-placeholder", n.innerHTML = Nt, this.previewWrapper = document.createElement("div"), this.previewWrapper.className = "preview-wrapper", this.loadingSpinner = document.createElement("div"), this.loadingSpinner.className = "loading-spinner", this.loadingSpinner.innerHTML = Ot, this.loadingSpinner.style.display = "none", this.previewWrapper.appendChild(this.loadingSpinner), this.previewEl = document.createElement("img"), this.previewEl.className = "upload-preview", this.props.delete) {
1695
1695
  const a = document.createElement("button");
1696
- a.className = "delete-button", a.type = "button", a.title = "Delete image", a.innerHTML = Ot, this.previewWrapper.appendChild(a), a.onclick = (l) => {
1697
- var r;
1698
- l.stopPropagation(), this.value = "", this.updatePreviewState(null), (r = this.onChange) == null || r.call(this, ""), this.hideError();
1696
+ a.className = "delete-button", a.type = "button", a.title = "Delete image", a.innerHTML = Vt, this.previewWrapper.appendChild(a), a.onclick = (l) => {
1697
+ var c;
1698
+ l.stopPropagation(), this.value = "", this.updatePreviewState(null), (c = this.onChange) == null || c.call(this, ""), this.hideError();
1699
1699
  };
1700
1700
  }
1701
1701
  this.previewWrapper.appendChild(this.previewEl);
1702
1702
  const o = document.createElement("button");
1703
1703
  return o.className = "upload-button", this.getDataPropsPath() && o.setAttribute("data-test-id", this.getDataPropsPath()), o.innerHTML = `
1704
- <span class="upload-icon">${nt}</span>
1704
+ <span class="upload-icon">${X}</span>
1705
1705
  <span class="upload-label">Upload</span>
1706
1706
  `, i.appendChild(n), i.appendChild(this.previewWrapper), i.appendChild(o), t.appendChild(i), s ? this.updatePreviewState(this.value) : this.updatePreviewState(null), o.onclick = () => {
1707
1707
  window.postMessage(
@@ -1714,14 +1714,14 @@ class pt extends T {
1714
1714
  }, t;
1715
1715
  }
1716
1716
  }
1717
- class ee extends U {
1717
+ class ce extends I {
1718
1718
  constructor(t = {}) {
1719
1719
  super({
1720
1720
  ...t,
1721
1721
  title: t.title || "Height",
1722
1722
  suffix: t.suffix || "px",
1723
1723
  minValue: t.minValue ?? 0,
1724
- icon: t.icon || $t,
1724
+ icon: t.icon || Ht,
1725
1725
  default: t.default ?? 100
1726
1726
  }), this.inputType = "number", this.mobileValue = t.mobile;
1727
1727
  }
@@ -1732,17 +1732,17 @@ class ee extends U {
1732
1732
  this.mobileValue = t, t !== void 0 && this.setValue(t);
1733
1733
  }
1734
1734
  }
1735
- const $t = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1735
+ const Ht = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1736
1736
  <path d="M9 14L9 5M9 14L6.75 12.5M9 14L11.25 12.5M9 5L6.75 6.5M9 5L11.25 6.5M15.75 2.75H2.25M15.75 16.25H2.25" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
1737
1737
  </svg>`;
1738
- class ie extends U {
1738
+ class he extends I {
1739
1739
  constructor(t = {}) {
1740
1740
  super({
1741
1741
  ...t,
1742
1742
  title: t.title || "Width",
1743
1743
  suffix: t.suffix || "px",
1744
1744
  minValue: t.minValue ?? 0,
1745
- icon: t.icon || At,
1745
+ icon: t.icon || Tt,
1746
1746
  default: t.default ?? 100
1747
1747
  }), this.inputType = "number", this.mobileValue = t.mobile;
1748
1748
  }
@@ -1753,14 +1753,14 @@ class ie extends U {
1753
1753
  this.mobileValue = t, t !== void 0 && this.setValue(t);
1754
1754
  }
1755
1755
  }
1756
- const At = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1756
+ const Tt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
1757
1757
  <path d="M4.5 9.5H13.5M4.5 9.5L6 7.25M4.5 9.5L6 11.75M13.5 9.5L12 7.25M13.5 9.5L12 11.75M15.75 16.25V2.75M2.25 16.25V2.75" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
1758
- </svg>`, Dt = `
1758
+ </svg>`, Pt = `
1759
1759
  <svg xmlns="http://www.w3.org/2000/svg" class="svg-select-api" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-down">
1760
1760
  <polyline points="6 9 12 15 18 9"></polyline>
1761
1761
  </svg>
1762
1762
  `;
1763
- class se extends T {
1763
+ class de extends y {
1764
1764
  constructor(t = {}) {
1765
1765
  if (super(t), this.inputType = "select", this._options = [], this.isOpen = !1, this.selectedOptionIndex = null, this.optionsListEl = null, this.svgContainer = null, this.buttonEl = null, this.isLoading = !1, this.container = null, this.hasInitializedOptions = !1, this.selectedOptionIndex = null, t.default !== void 0 && (this.value = t.default), this.initializeOptions(t), !t.getOptionsAsync && this.value !== void 0) {
1766
1766
  const e = this._options.findIndex(
@@ -1815,7 +1815,7 @@ class se extends T {
1815
1815
  a.onclick = (l) => this.selectApiOption(l, o, e), i.appendChild(a);
1816
1816
  }), t.appendChild(i);
1817
1817
  const s = document.createElement("div");
1818
- return s.classList.add("svg-container"), s.innerHTML = Dt, t.appendChild(s), s.onclick = () => {
1818
+ return s.classList.add("svg-container"), s.innerHTML = Pt, t.appendChild(s), s.onclick = () => {
1819
1819
  var n, o;
1820
1820
  this.isLoading || (this.isOpen = !this.isOpen, (n = this.optionsListEl) == null || n.classList.toggle("open", this.isOpen), (o = this.svgContainer) == null || o.classList.toggle("open", this.isOpen));
1821
1821
  }, this.optionsListEl = i, this.svgContainer = s, this.props.getOptionsAsync && !this.hasInitializedOptions ? (this.isLoading = !0, this.updateButtonText(), this.props.getOptionsAsync().then((n) => {
@@ -1826,7 +1826,7 @@ class se extends T {
1826
1826
  );
1827
1827
  if (this._options.push(...a), this.isLoading = !1, this.hasInitializedOptions = !0, this.value !== void 0) {
1828
1828
  const l = this._options.findIndex(
1829
- (r) => JSON.stringify(r.value) === JSON.stringify(this.value)
1829
+ (c) => JSON.stringify(c.value) === JSON.stringify(this.value)
1830
1830
  );
1831
1831
  this.selectedOptionIndex = l !== -1 ? l : null;
1832
1832
  } else
@@ -1845,7 +1845,7 @@ class se extends T {
1845
1845
  );
1846
1846
  if (this._options.push(...a), this.isLoading = !1, this.value !== void 0) {
1847
1847
  const l = this._options.findIndex(
1848
- (r) => JSON.stringify(r.value) === JSON.stringify(this.value)
1848
+ (c) => JSON.stringify(c.value) === JSON.stringify(this.value)
1849
1849
  );
1850
1850
  this.selectedOptionIndex = l !== -1 ? l : null;
1851
1851
  } else
@@ -1862,7 +1862,7 @@ class se extends T {
1862
1862
  return JSON.stringify(t ? {} : { value: this.value }, null, 2);
1863
1863
  }
1864
1864
  selectApiOption(t, e, i) {
1865
- var l, r, c, h;
1865
+ var l, c, h, d;
1866
1866
  const s = t.target, n = s.querySelector(".select-api-radio") || ((l = s.closest(".select-api-option")) == null ? void 0 : l.querySelector(".select-api-radio"));
1867
1867
  n && (n.checked = !0), this.selectedOptionIndex = e;
1868
1868
  const o = this._options[e].value;
@@ -1871,10 +1871,10 @@ class se extends T {
1871
1871
  if (a)
1872
1872
  a.textContent = this._options[e].name;
1873
1873
  else {
1874
- const d = i.firstChild;
1875
- d && d.tagName === "SPAN" && (d.textContent = this._options[e].name);
1874
+ const p = i.firstChild;
1875
+ p && p.tagName === "SPAN" && (p.textContent = this._options[e].name);
1876
1876
  }
1877
- this.isOpen = !1, (r = this.optionsListEl) == null || r.classList.remove("open"), (c = this.svgContainer) == null || c.classList.remove("open"), (h = this.onChange) == null || h.call(this, o), this.detectChangeCallback && this.detectChangeCallback(o);
1877
+ this.isOpen = !1, (c = this.optionsListEl) == null || c.classList.remove("open"), (h = this.svgContainer) == null || h.classList.remove("open"), (d = this.onChange) == null || d.call(this, o), this.detectChangeCallback && this.detectChangeCallback(o);
1878
1878
  }
1879
1879
  updateOptionsList() {
1880
1880
  !this.optionsListEl || !this.buttonEl || (this.optionsListEl.innerHTML = "", this._options.forEach((t, e) => {
@@ -1907,7 +1907,7 @@ class se extends T {
1907
1907
  ), this.updateButtonText();
1908
1908
  }
1909
1909
  }
1910
- class ne extends T {
1910
+ class pe extends y {
1911
1911
  constructor(t) {
1912
1912
  var e, i;
1913
1913
  super(t), this.inputType = "text", this.value = t.default ?? ((i = (e = t.options) == null ? void 0 : e[0]) == null ? void 0 : i.value) ?? "", this.detectChangeCallback = t.detectChange;
@@ -1930,19 +1930,19 @@ class ne extends T {
1930
1930
  i.className = "toggle-switch";
1931
1931
  const s = document.createElement("input");
1932
1932
  s.type = "checkbox", s.checked = ((a = (o = this.props.options) == null ? void 0 : o.find((l) => l.value === this.value)) == null ? void 0 : a.status) ?? !1, this.getDataPropsPath() && s.setAttribute("data-test-id", this.getDataPropsPath()), s.addEventListener("change", () => {
1933
- var r, c;
1934
- const l = ((c = (r = this.props.options) == null ? void 0 : r.find((h) => h.status === s.checked)) == null ? void 0 : c.value) ?? "";
1933
+ var c, h;
1934
+ const l = ((h = (c = this.props.options) == null ? void 0 : c.find((d) => d.status === s.checked)) == null ? void 0 : h.value) ?? "";
1935
1935
  this.value = l, this.onChange && this.onChange(this.value), this.detectChangeCallback && this.detectChangeCallback(this.value);
1936
1936
  });
1937
1937
  const n = document.createElement("span");
1938
1938
  if (n.className = "toggle-slider", this.props.activeColor || this.props.inactiveColor) {
1939
- const l = document.createElement("style"), r = this.props.activeColor || "#4CAF50", c = this.props.inactiveColor || "#ccc";
1939
+ const l = document.createElement("style"), c = this.props.activeColor || "#4CAF50", h = this.props.inactiveColor || "#ccc";
1940
1940
  l.textContent = `
1941
1941
  .toggle-switch input:checked + .toggle-slider {
1942
- background-color: ${r};
1942
+ background-color: ${c};
1943
1943
  }
1944
1944
  .toggle-switch .toggle-slider {
1945
- background-color: ${c};
1945
+ background-color: ${h};
1946
1946
  }
1947
1947
  `, document.head.appendChild(l);
1948
1948
  }
@@ -1957,13 +1957,13 @@ class ne extends T {
1957
1957
  this.detectChangeCallback = t;
1958
1958
  }
1959
1959
  }
1960
- const Bt = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
1960
+ const $t = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
1961
1961
  <path d="M13.3334 5.99996H2.66675M13.3334 9.99996H2.66675M5.33341 12.6666V3.33329M10.6667 12.6666V3.33329" stroke="#667085" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
1962
1962
  </svg>`;
1963
- class oe extends T {
1963
+ class ue extends y {
1964
1964
  // Store mobile value
1965
1965
  constructor(t = {}) {
1966
- t.rowGap = t.rowGap ?? !0, t.columnGap = t.columnGap ?? !0, t.title = t.title ?? "Gap", t.icon = t.icon ?? Bt, t.suffix = t.suffix ?? "px", t.minValue = t.minValue ?? 0, super(t), this.inputType = "number", this.inputValues = {}, this.mobileValue = t.mobile, this.value = this.validateValue(t.default ?? 0), t.rowGap && (this.inputValues.row = this.value), t.columnGap && (this.inputValues.column = this.value);
1966
+ t.rowGap = t.rowGap ?? !0, t.columnGap = t.columnGap ?? !0, t.title = t.title ?? "Gap", t.icon = t.icon ?? $t, t.suffix = t.suffix ?? "px", t.minValue = t.minValue ?? 0, super(t), this.inputType = "number", this.inputValues = {}, this.mobileValue = t.mobile, this.value = this.validateValue(t.default ?? 0), t.rowGap && (this.inputValues.row = this.value), t.columnGap && (this.inputValues.column = this.value);
1967
1967
  }
1968
1968
  draw() {
1969
1969
  const t = document.createElement("div");
@@ -1991,10 +1991,10 @@ class oe extends T {
1991
1991
  let a = parseFloat(o.value);
1992
1992
  a = this.validateValue(a), String(a) !== o.value && (o.value = String(a)), this.inputValues[t] = a, this.setValue(a);
1993
1993
  }), s.addEventListener("blur", (n) => {
1994
- var l, r;
1994
+ var l, c;
1995
1995
  const o = n.target;
1996
1996
  let a = parseFloat(o.value);
1997
- a = this.validateValue(a), String(a) !== o.value && (o.value = String(a), this.inputValues[t] = a, this.setValue(a)), (r = (l = this.props).onBlur) == null || r.call(l);
1997
+ a = this.validateValue(a), String(a) !== o.value && (o.value = String(a), this.inputValues[t] = a, this.setValue(a)), (c = (l = this.props).onBlur) == null || c.call(l);
1998
1998
  }), i.appendChild(s), this.props.suffix && this.props.suffix !== "none") {
1999
1999
  const n = document.createElement("span");
2000
2000
  n.className = "gap-suffix", n.textContent = this.props.suffix, i.appendChild(n), s.style.paddingRight = "30px";
@@ -2014,42 +2014,42 @@ class oe extends T {
2014
2014
  this.mobileValue = t, t !== void 0 && this.setValue(t);
2015
2015
  }
2016
2016
  }
2017
- const Rt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
2017
+ const At = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
2018
2018
  <path d="M2.25 11.75H15.75M5.85 2.75H12.15C13.4101 2.75 14.0402 2.75 14.5215 2.99524C14.9448 3.21095 15.289 3.55516 15.5048 3.97852C15.75 4.45982 15.75 5.08988 15.75 6.35V12.65C15.75 13.9101 15.75 14.5402 15.5048 15.0215C15.289 15.4448 14.9448 15.789 14.5215 16.0048C14.0402 16.25 13.4101 16.25 12.15 16.25H5.85C4.58988 16.25 3.95982 16.25 3.47852 16.0048C3.05516 15.789 2.71095 15.4448 2.49524 15.0215C2.25 14.5402 2.25 13.9101 2.25 12.65V6.35C2.25 5.08988 2.25 4.45982 2.49524 3.97852C2.71095 3.55516 3.05516 3.21095 3.47852 2.99524C3.95982 2.75 4.58988 2.75 5.85 2.75Z" stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2019
2019
  </svg>`;
2020
- class ae extends U {
2020
+ class ge extends I {
2021
2021
  constructor(t = {}) {
2022
2022
  super({
2023
2023
  ...t,
2024
2024
  minValue: t.minValue ?? 0,
2025
2025
  maxValue: t.maxValue ?? 1e3,
2026
- icon: t.icon || Rt,
2026
+ icon: t.icon || At,
2027
2027
  title: t.title || "Margin Bottom",
2028
2028
  default: t.default ?? 20,
2029
2029
  wrapperClassName: "margin-bottom-wrapper " + (t.wrapperClassName || "")
2030
2030
  }), this.inputType = "number";
2031
2031
  }
2032
2032
  }
2033
- const Ft = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
2033
+ const Bt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
2034
2034
  <path d="M15.75 7.25H2.25m9.9 9h-6.3c-1.26 0-1.89 0-2.371-.245a2.25 2.25 0 0 1-.984-.983c-.245-.482-.245-1.112-.245-2.372v-6.3c0-1.26 0-1.89.245-2.371a2.25 2.25 0 0 1 .984-.984c.48-.245 1.11-.245 2.371-.245h6.3c1.26 0 1.89 0 2.371.245.424.216.768.56.984.984.245.48.245 1.11.245 2.371v6.3c0 1.26 0 1.89-.245 2.371-.216.424-.56.768-.984.984-.48.245-1.11.245-2.371.245"
2035
2035
  stroke="#667085" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2036
2036
  </svg>`;
2037
- class le extends U {
2037
+ class me extends I {
2038
2038
  constructor(t = {}) {
2039
2039
  super({
2040
2040
  ...t,
2041
2041
  minValue: t.minValue ?? 0,
2042
2042
  maxValue: t.maxValue ?? 1e3,
2043
- icon: t.icon || Ft,
2043
+ icon: t.icon || Bt,
2044
2044
  title: t.title || "Margin Top",
2045
2045
  default: t.default ?? 20,
2046
2046
  wrapperClassName: "margin-top-wrapper " + (t.wrapperClassName || "")
2047
2047
  }), this.inputType = "number";
2048
2048
  }
2049
2049
  }
2050
- class re extends T {
2050
+ class fe extends y {
2051
2051
  constructor(t) {
2052
- super(t), this.inputType = {}, this.container = null, this.defaultLanguage = "", this.uploadSettings = /* @__PURE__ */ new Map(), t.default ? this.value = { ...t.default } : this.value || (this.value = {}), this.defaultLanguage = t.languages.includes(T.DefaultLanguage) ? T.DefaultLanguage : t.languages[0];
2052
+ super(t), this.inputType = {}, this.container = null, this.defaultLanguage = "", this.uploadSettings = /* @__PURE__ */ new Map(), t.default ? this.value = { ...t.default } : this.value || (this.value = {}), this.defaultLanguage = t.languages.includes(y.DefaultLanguage) ? y.DefaultLanguage : t.languages[0];
2053
2053
  const e = t.defaultValue || `Enter text in ${this.capitalizeFirstLetter(this.defaultLanguage)}`;
2054
2054
  t.languages.forEach((i) => {
2055
2055
  var s, n;
@@ -2079,13 +2079,13 @@ class re extends T {
2079
2079
  t.placeholder = e;
2080
2080
  return;
2081
2081
  }
2082
- const c = "...";
2083
- let h = 0, d = e.length, C = 0;
2084
- for (; h <= d; ) {
2085
- const f = Math.floor((h + d) / 2), v = e.slice(0, f).trimEnd() + c;
2086
- this.measureTextWidth(v, i) <= l ? (C = f, h = f + 1) : d = f - 1;
2082
+ const h = "...";
2083
+ let d = 0, p = e.length, g = 0;
2084
+ for (; d <= p; ) {
2085
+ const m = Math.floor((d + p) / 2), f = e.slice(0, m).trimEnd() + h;
2086
+ this.measureTextWidth(f, i) <= l ? (g = m, d = m + 1) : p = m - 1;
2087
2087
  }
2088
- const u = e.slice(0, C).trimEnd() + c;
2088
+ const u = e.slice(0, g).trimEnd() + h;
2089
2089
  t.placeholder = u;
2090
2090
  }
2091
2091
  autosizeTextarea(t, e = 3) {
@@ -2098,7 +2098,7 @@ class re extends T {
2098
2098
  i.classList.add("simple-multi-language-row");
2099
2099
  const s = document.createElement("label");
2100
2100
  if (s.classList.add("simple-language-label"), s.textContent = t.toUpperCase(), s.setAttribute("for", `textarea-${t}`), i.appendChild(s), this.props.multiImg) {
2101
- const n = new pt({
2101
+ const n = new rt({
2102
2102
  defaultUrl: e || "",
2103
2103
  title: "",
2104
2104
  id: `${this.id}_upload_${t}`
@@ -2119,11 +2119,11 @@ class re extends T {
2119
2119
  "data-test-id",
2120
2120
  `${this.getDataPropsPath()}_${t}`
2121
2121
  ), n.addEventListener("input", (l) => {
2122
- const r = l.target;
2123
- this.updateLanguageValue(t, r.value), t === this.defaultLanguage && this.updateOtherLanguagePlaceholders(r.value), this.autosizeTextarea(r, 3);
2124
- const c = n.getAttribute("data-full-placeholder") || "";
2125
- c && this.adaptPlaceholderToSingleLine(n, c);
2126
- }), i.appendChild(n), ((l) => (typeof queueMicrotask == "function" ? queueMicrotask : (r) => setTimeout(r, 0))(l))(() => {
2122
+ const c = l.target;
2123
+ this.updateLanguageValue(t, c.value), t === this.defaultLanguage && this.updateOtherLanguagePlaceholders(c.value), this.autosizeTextarea(c, 3);
2124
+ const h = n.getAttribute("data-full-placeholder") || "";
2125
+ h && this.adaptPlaceholderToSingleLine(n, h);
2126
+ }), i.appendChild(n), ((l) => (typeof queueMicrotask == "function" ? queueMicrotask : (c) => setTimeout(c, 0))(l))(() => {
2127
2127
  this.autosizeTextarea(n, 3);
2128
2128
  const l = n.getAttribute("data-full-placeholder") || "";
2129
2129
  l && this.adaptPlaceholderToSingleLine(n, l);
@@ -2194,7 +2194,7 @@ class re extends T {
2194
2194
  });
2195
2195
  }
2196
2196
  }
2197
- class ce extends T {
2197
+ class ve extends y {
2198
2198
  constructor(t = {}) {
2199
2199
  super(t), this.inputType = "select";
2200
2200
  const e = [
@@ -2205,7 +2205,7 @@ class ce extends T {
2205
2205
  { name: "Bounce", value: "bounce 1.5s ease-in-out infinite" },
2206
2206
  { name: "Pulse", value: "pulse 1.5s ease-in-out infinite" }
2207
2207
  ];
2208
- this.selectSetting = new at({
2208
+ this.selectSetting = new tt({
2209
2209
  title: this.title || "Animation",
2210
2210
  options: e,
2211
2211
  default: this.props.default || "none"
@@ -2221,27 +2221,184 @@ class ce extends T {
2221
2221
  this.selectSetting.destroy(), super.destroy();
2222
2222
  }
2223
2223
  }
2224
- const Y = class Y {
2225
- static getDefaultState() {
2224
+ const Dt = (r, t) => {
2225
+ let e = !1, i = 0, s = 0, n = 0, o = 0;
2226
+ const a = (h) => {
2227
+ if (h.target.closest("button")) return;
2228
+ e = !0, i = h.clientX, s = h.clientY;
2229
+ const d = t.getBoundingClientRect();
2230
+ n = d.left, o = d.top, document.addEventListener("mousemove", l), document.addEventListener("mouseup", c), document.body.style.userSelect = "none";
2231
+ }, l = (h) => {
2232
+ if (!e) return;
2233
+ const d = h.clientX - i, p = h.clientY - s, g = window.innerWidth, u = window.innerHeight, m = t.offsetWidth, f = t.offsetHeight;
2234
+ let x = n + d, L = o + p;
2235
+ x = Math.max(8, Math.min(g - m - 8, x)), L = Math.max(8, Math.min(u - f - 8, L)), t.style.left = `${x}px`, t.style.top = `${L}px`;
2236
+ }, c = () => {
2237
+ e = !1, document.removeEventListener("mousemove", l), document.removeEventListener("mouseup", c), document.body.style.userSelect = "";
2238
+ };
2239
+ r.addEventListener("mousedown", a);
2240
+ }, R = (r) => {
2241
+ if (!r) return null;
2242
+ let t = r.trim();
2243
+ return !t.startsWith("#") || (t = t.slice(1), t.length === 3 && (t = t.split("").map((e) => e + e).join("")), !/^[0-9a-fA-F]{6}$/.test(t)) ? null : `#${t.toUpperCase()}`;
2244
+ }, D = (r, t, e) => `#${[r, t, e].map((i) => Math.max(0, Math.min(255, i)).toString(16).padStart(2, "0")).join("")}`, S = (r) => {
2245
+ const t = r.replace("#", ""), e = t.length === 3 ? t.split("").map((i) => i + i).join("") : t;
2246
+ return {
2247
+ r: parseInt(e.slice(0, 2), 16),
2248
+ g: parseInt(e.slice(2, 4), 16),
2249
+ b: parseInt(e.slice(4, 6), 16)
2250
+ };
2251
+ }, $ = (r) => {
2252
+ const { r: t, g: e, b: i } = S(r), s = t / 255, n = e / 255, o = i / 255, a = Math.max(s, n, o), l = Math.min(s, n, o), c = a - l;
2253
+ let h = 0;
2254
+ c !== 0 && (a === s ? h = (n - o) / c % 6 : a === n ? h = (o - s) / c + 2 : h = (s - n) / c + 4);
2255
+ const d = a === 0 ? 0 : c / a, p = a;
2256
+ return { h: h * 60, s: d, v: p };
2257
+ }, W = (r, t, e) => {
2258
+ const i = e * t, s = i * (1 - Math.abs(r / 60 % 2 - 1)), n = e - i;
2259
+ let o = 0, a = 0, l = 0;
2260
+ return r < 60 ? (o = i, a = s, l = 0) : r < 120 ? (o = s, a = i, l = 0) : r < 180 ? (o = 0, a = i, l = s) : r < 240 ? (o = 0, a = s, l = i) : r < 300 ? (o = s, a = 0, l = i) : (o = i, a = 0, l = s), D(
2261
+ Math.round((o + n) * 255),
2262
+ Math.round((a + n) * 255),
2263
+ Math.round((l + n) * 255)
2264
+ );
2265
+ }, Rt = (r, t, e) => {
2266
+ const i = e * (1 - t / 2), s = i === 0 || i === 1 ? 0 : (e - i) / Math.min(i, 1 - i);
2267
+ return { hue: r, sat: s, lightness: i };
2268
+ }, J = (r, t, e) => {
2269
+ const i = (1 - Math.abs(2 * e - 1)) * t, s = i * (1 - Math.abs(r / 60 % 2 - 1)), n = e - i / 2;
2270
+ let o = 0, a = 0, l = 0;
2271
+ return r < 60 ? (o = i, a = s, l = 0) : r < 120 ? (o = s, a = i, l = 0) : r < 180 ? (o = 0, a = i, l = s) : r < 240 ? (o = 0, a = s, l = i) : r < 300 ? (o = s, a = 0, l = i) : (o = i, a = 0, l = s), {
2272
+ r: Math.round((o + n) * 255),
2273
+ g: Math.round((a + n) * 255),
2274
+ b: Math.round((l + n) * 255)
2275
+ };
2276
+ }, ct = (r, t) => {
2277
+ const e = Math.max(0, Math.min(100, t)) / 100;
2278
+ if (r.startsWith("#")) {
2279
+ const { r: s, g: n, b: o } = S(r);
2280
+ return `rgba(${s}, ${n}, ${o}, ${e})`;
2281
+ }
2282
+ if (r.startsWith("rgba("))
2283
+ return r.replace(/,\s*[\d.]+\)$/, `, ${e})`);
2284
+ if (r.startsWith("rgb("))
2285
+ return r.replace("rgb(", "rgba(").replace(")", `, ${e})`);
2286
+ if (r.startsWith("hsl(")) {
2287
+ const s = r.match(/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/);
2288
+ if (s) {
2289
+ const { r: n, g: o, b: a } = J(
2290
+ parseInt(s[1]),
2291
+ parseInt(s[2]) / 100,
2292
+ parseInt(s[3]) / 100
2293
+ );
2294
+ return `rgba(${n}, ${o}, ${a}, ${e})`;
2295
+ }
2296
+ }
2297
+ if (r.startsWith("hsla(")) {
2298
+ const s = r.match(/hsla\((\d+),\s*(\d+)%,\s*(\d+)%,\s*[\d.]+\)/);
2299
+ if (s) {
2300
+ const { r: n, g: o, b: a } = J(
2301
+ parseInt(s[1]),
2302
+ parseInt(s[2]) / 100,
2303
+ parseInt(s[3]) / 100
2304
+ );
2305
+ return `rgba(${n}, ${o}, ${a}, ${e})`;
2306
+ }
2307
+ }
2308
+ const i = R(r);
2309
+ if (i) {
2310
+ const { r: s, g: n, b: o } = S(i);
2311
+ return `rgba(${s}, ${n}, ${o}, ${e})`;
2312
+ }
2313
+ return r;
2314
+ }, Ft = (r) => [
2315
+ "red",
2316
+ "green",
2317
+ "blue",
2318
+ "yellow",
2319
+ "orange",
2320
+ "purple",
2321
+ "pink",
2322
+ "brown",
2323
+ "black",
2324
+ "white",
2325
+ "gray",
2326
+ "grey",
2327
+ "cyan",
2328
+ "magenta",
2329
+ "lime",
2330
+ "navy",
2331
+ "maroon",
2332
+ "olive",
2333
+ "aqua",
2334
+ "silver",
2335
+ "teal",
2336
+ "fuchsia",
2337
+ "transparent"
2338
+ ].includes(r.toLowerCase()), ht = (r) => [
2339
+ /^#[0-9a-fA-F]{3,8}$/,
2340
+ /^rgba?\s*\([^)]+\)$/,
2341
+ /^hsla?\s*\([^)]+\)$/,
2342
+ /^[a-zA-Z]+$/
2343
+ ].some((e) => e.test(r.trim())), Gt = (r) => {
2344
+ if (typeof document > "u")
2345
+ return ht(r) || !!R(r);
2346
+ const t = document.createElement("div");
2347
+ return t.style.color = r, t.style.color !== "";
2348
+ }, dt = (r) => {
2349
+ const t = r.trim();
2350
+ if (/^#[0-9A-Fa-f]{8}$/.test(t)) {
2351
+ const n = t.slice(1), o = parseInt(n.slice(0, 2), 16), a = parseInt(n.slice(2, 4), 16), l = parseInt(n.slice(4, 6), 16), c = parseInt(n.slice(6, 8), 16);
2352
+ return {
2353
+ color: D(o, a, l),
2354
+ position: 0,
2355
+ opacity: Math.round(c / 255 * 100)
2356
+ };
2357
+ }
2358
+ const e = t.match(
2359
+ /rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/
2360
+ );
2361
+ if (e) {
2362
+ const n = parseInt(e[1]), o = parseInt(e[2]), a = parseInt(e[3]), l = e[4] ? parseFloat(e[4]) : 1;
2226
2363
  return {
2227
- solid: [],
2228
- gradient: []
2364
+ color: D(n, o, a),
2365
+ position: 0,
2366
+ opacity: Math.round(l * 100)
2229
2367
  };
2230
2368
  }
2369
+ const i = t.match(
2370
+ /hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*([\d.]+))?\s*\)/
2371
+ );
2372
+ if (i) {
2373
+ const { r: n, g: o, b: a } = J(
2374
+ parseFloat(i[1]),
2375
+ parseFloat(i[2]) / 100,
2376
+ parseFloat(i[3]) / 100
2377
+ ), l = i[4] ? parseFloat(i[4]) : 1;
2378
+ return {
2379
+ color: D(n, o, a),
2380
+ position: 0,
2381
+ opacity: Math.round(l * 100)
2382
+ };
2383
+ }
2384
+ return { color: R(t) || t, position: 0, opacity: 100 };
2385
+ }, z = class z {
2386
+ static defaults() {
2387
+ return { solid: [], gradient: [] };
2388
+ }
2231
2389
  static ensureLoaded() {
2232
2390
  var t;
2233
- if (this.colors === null && (this.colors = this.getDefaultState(), !(typeof window > "u")))
2391
+ if (!this.colors && (this.colors = this.defaults(), !(typeof window > "u")))
2234
2392
  try {
2235
2393
  const e = (t = window.sessionStorage) == null ? void 0 : t.getItem(this.STORAGE_KEY);
2236
- if (e) {
2237
- const i = JSON.parse(e);
2238
- ["solid", "gradient"].forEach((s) => {
2239
- const n = Array.isArray(i == null ? void 0 : i[s]) ? i[s] : [];
2240
- this.colors[s] = n.map((o) => this.normalize(o)).filter((o) => !!o);
2241
- });
2242
- }
2243
- } catch (e) {
2244
- console.warn("Unable to load recent colors:", e), this.colors = this.getDefaultState();
2394
+ if (!e) return;
2395
+ const i = JSON.parse(e);
2396
+ ["solid", "gradient"].forEach((s) => {
2397
+ const n = Array.isArray(i == null ? void 0 : i[s]) ? i[s] : [];
2398
+ this.colors[s] = n.map((o) => R(o)).filter((o) => !!o);
2399
+ });
2400
+ } catch {
2401
+ this.colors = this.defaults();
2245
2402
  }
2246
2403
  }
2247
2404
  static persist() {
@@ -2250,35 +2407,27 @@ const Y = class Y {
2250
2407
  try {
2251
2408
  (t = window.sessionStorage) == null || t.setItem(
2252
2409
  this.STORAGE_KEY,
2253
- JSON.stringify(this.colors || this.getDefaultState())
2410
+ JSON.stringify(this.colors || this.defaults())
2254
2411
  );
2255
- } catch (e) {
2256
- console.warn("Unable to persist recent colors:", e);
2412
+ } catch {
2257
2413
  }
2258
2414
  }
2259
- static normalize(t) {
2260
- if (!t) return null;
2261
- const e = t.trim();
2262
- if (!e.startsWith("#")) return null;
2263
- let i = e.slice(1);
2264
- return i.length === 3 && (i = i.split("").map((s) => s + s).join("")), i.length !== 6 || !/^[0-9a-fA-F]{6}$/.test(i) ? null : `#${i.toUpperCase()}`;
2265
- }
2266
- static getScopeList(t) {
2267
- return this.ensureLoaded(), this.colors || (this.colors = this.getDefaultState()), this.colors[t];
2415
+ static list(t) {
2416
+ return this.ensureLoaded(), this.colors || (this.colors = this.defaults()), this.colors[t];
2268
2417
  }
2269
2418
  static getColors(t) {
2270
- return [...this.getScopeList(t)];
2419
+ return [...this.list(t)];
2271
2420
  }
2272
2421
  static addColor(t, e) {
2273
- const i = this.normalize(t);
2422
+ const i = R(t);
2274
2423
  if (!i) return;
2275
- const s = this.getScopeList(e), n = s.indexOf(i);
2424
+ const s = this.list(e), n = s.indexOf(i);
2276
2425
  n !== -1 && s.splice(n, 1), s.unshift(i), s.length > this.MAX_COLORS && (s.length = this.MAX_COLORS), this.persist();
2277
2426
  }
2278
2427
  };
2279
- Y.STORAGE_KEY = "settingsLib_recentColors", Y.MAX_COLORS = 12, Y.colors = null;
2280
- let J = Y;
2281
- function lt(p, t) {
2428
+ z.STORAGE_KEY = "settingsLib_recentColors", z.MAX_COLORS = 12, z.colors = null;
2429
+ let N = z;
2430
+ const Wt = (r, t) => {
2282
2431
  const e = document.createElement("div");
2283
2432
  e.className = "color-picker-recent-section";
2284
2433
  const i = document.createElement("div");
@@ -2289,54 +2438,53 @@ function lt(p, t) {
2289
2438
  n.className = "color-picker-recent-placeholder", n.textContent = "No recent colors yet", e.appendChild(i), e.appendChild(s), e.appendChild(n);
2290
2439
  const o = () => {
2291
2440
  s.innerHTML = "";
2292
- const a = J.getColors(t);
2441
+ const a = N.getColors(t);
2293
2442
  if (a.length === 0) {
2294
2443
  s.style.display = "none", n.style.display = "block";
2295
2444
  return;
2296
2445
  }
2297
2446
  s.style.display = "grid", n.style.display = "none", a.forEach((l) => {
2298
- const r = document.createElement("button");
2299
- r.type = "button", r.className = "color-picker-recent-swatch", r.title = l, r.setAttribute("aria-label", `Use color ${l}`), r.style.setProperty("--recent-color", l), r.addEventListener("click", () => p(l)), s.appendChild(r);
2447
+ const c = document.createElement("button");
2448
+ c.type = "button", c.className = "color-picker-recent-swatch", c.title = l, c.setAttribute("aria-label", `Use color ${l}`), c.style.background = l, c.style.borderColor = l, c.addEventListener("click", () => r(l)), s.appendChild(c);
2300
2449
  });
2301
2450
  };
2302
- return o(), {
2303
- container: e,
2304
- refresh: o
2305
- };
2306
- }
2307
- const ut = `<svg
2308
- width="13"
2309
- height="13"
2310
- viewBox="0 0 13 13"
2311
- fill="none"
2312
- xmlns="http://www.w3.org/2000/svg"
2313
- >
2314
- <path
2315
- fill-rule="evenodd"
2316
- clip-rule="evenodd"
2451
+ return o(), { container: e, refresh: o };
2452
+ }, pt = `<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2453
+ <path fill-rule="evenodd" clip-rule="evenodd"
2317
2454
  d="M6.12347 4.96653L1.41158 0.254304C1.25449 0.102568 1.04409 0.0186071 0.825694 0.0205049C0.607302 0.0224037 0.398393 0.110007 0.24396 0.26445C0.0895282 0.418893 0.0019303 0.627818 3.24698e-05 0.846225C-0.00186536 1.06463 0.0820894 1.27505 0.233815 1.43215L4.9457 6.14438L0.233814 10.8566C0.0820886 11.0137 -0.00186625 11.2241 3.15434e-05 11.4425C0.00192934 11.6609 0.0895272 11.8699 0.243959 12.0243C0.398392 12.1787 0.607301 12.2663 0.825693 12.2682C1.04408 12.2701 1.25449 12.1862 1.41158 12.0344L6.12347 7.32222L10.8354 12.0344C10.9932 12.1824 11.2023 12.2632 11.4186 12.2597C11.6349 12.2562 11.8414 12.1687 11.9943 12.0156C12.1472 11.8626 12.2346 11.6561 12.2379 11.4398C12.2413 11.2234 12.1604 11.0143 12.0123 10.8566L7.30123 6.14438L12.0131 1.43215C12.0927 1.35531 12.1561 1.2634 12.1998 1.16177C12.2434 1.06014 12.2664 0.950833 12.2674 0.84023C12.2683 0.729626 12.2473 0.61994 12.2054 0.517568C12.1635 0.415196 12.1017 0.322191 12.0234 0.243979C11.9452 0.165768 11.8522 0.103916 11.7499 0.0620327C11.6475 0.0201492 11.5378 -0.000927989 11.4272 3.33052e-05C11.3166 0.000993646 11.2073 0.0239743 11.1057 0.0676297C11.0041 0.111286 10.9122 0.174745 10.8354 0.254305L6.12347 4.96653Z"
2318
- fill="#919EAB"
2319
- />
2455
+ fill="#919EAB"/>
2456
+ </svg>`, zt = `<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2457
+ <path fill-rule="evenodd" clip-rule="evenodd"
2458
+ d="M19.1972 3.29156C18.936 3.03034 18.6259 2.82313 18.2847 2.68176C17.9434 2.54039 17.5777 2.46763 17.2083 2.46763C16.8389 2.46763 16.4731 2.54039 16.1319 2.68176C15.7906 2.82313 15.4805 3.03034 15.2194 3.29156L13.7822 4.72875C13.2585 4.4772 12.6697 4.39449 12.097 4.49207C11.5243 4.58964 10.9961 4.86267 10.5853 5.27343L9.91687 5.94281C9.74268 6.11693 9.6045 6.32366 9.51023 6.5512C9.41595 6.77873 9.36743 7.02261 9.36743 7.2689C9.36743 7.5152 9.41595 7.75907 9.51023 7.98661C9.6045 8.21414 9.74268 8.42088 9.91687 8.595L3.83625 14.6747C3.57512 14.936 3.36803 15.2462 3.2268 15.5875C3.08556 15.9288 3.01296 16.2947 3.01312 16.6641V18.3516C3.01312 18.6499 3.13165 18.9361 3.34263 19.1471C3.55361 19.358 3.83975 19.4766 4.13812 19.4766H5.82562C6.57129 19.4759 7.28618 19.1792 7.81312 18.6516L13.8937 12.5728C14.0679 12.747 14.2746 12.8852 14.5021 12.9795C14.7297 13.0737 14.9735 13.1223 15.2198 13.1223C15.4661 13.1223 15.71 13.0737 15.9375 12.9795C16.1651 12.8852 16.3718 12.747 16.5459 12.5728L17.2153 11.9025C17.6261 11.4917 17.8991 10.9635 17.9967 10.3908C18.0942 9.81811 18.0115 9.22926 17.76 8.70562L19.1972 7.26937C19.4584 7.0082 19.6656 6.69813 19.807 6.35687C19.9484 6.01561 20.0211 5.64985 20.0211 5.28047C20.0211 4.91108 19.9484 4.54532 19.807 4.20406C19.6656 3.8628 19.4584 3.55273 19.1972 3.29156Z"
2459
+ fill="#353C47"/>
2460
+ </svg>`, qt = `<svg width="15" height="17" viewBox="0 0 15 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2461
+ <path d="M14.1333 12.4667H0.8M0.8 12.4667L4.13333 9.13332M0.8 12.4667L4.13333 15.8M0.8 4.13332H14.1333M14.1333 4.13332L10.8 0.799988M14.1333 4.13332L10.8 7.46665" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
2462
+ </svg>`, Ut = `<svg width="14" height="2" viewBox="0 0 14 2" fill="none" xmlns="http://www.w3.org/2000/svg">
2463
+ <path d="M0.8 0.800003H12.4667" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
2320
2464
  </svg>`;
2321
- class ht {
2465
+ class jt {
2322
2466
  constructor(t, e = "gradient") {
2323
- this.isOpen = !1, this.isColorDragging = !1, this.isHueDragging = !1, this.isOpacityDragging = !1, this.pendingRecentColor = null, this.currentColor = "#ff0000", this.currentOpacity = 100, this.isUpdatingHue = !1, this.handleOutsideClick = (i) => {
2324
- const s = document.querySelector(".gradient-popover");
2325
- s && s.contains(i.target) || this.element.contains(i.target) || (i.stopPropagation(), this.close(!1));
2326
- }, this.handleKeydown = (i) => {
2467
+ this.isOpen = !1, this.currentColor = "#FF0000", this.currentOpacity = 100, this.outsideClick = (i) => {
2468
+ if (!this.isOpen) return;
2469
+ const s = i.target;
2470
+ if (document.querySelector(".gradient-popover"), this.element.contains(s)) return;
2471
+ const n = document.querySelectorAll(".gstop-color-input");
2472
+ Array.from(n).some(
2473
+ (a) => a.contains(s)
2474
+ ) || (i.preventDefault(), i.stopPropagation(), this.close(!1));
2475
+ }, this.keyDown = (i) => {
2327
2476
  if (this.isOpen) {
2328
2477
  if (i.key === "Escape")
2329
2478
  i.preventDefault(), this.close(!0);
2330
2479
  else if (i.key === "Enter") {
2331
2480
  const s = i.target;
2332
- if (s && (s.tagName === "TEXTAREA" || s.tagName === "INPUT"))
2333
- return;
2481
+ if (s && (s.tagName === "INPUT" || s.tagName === "TEXTAREA")) return;
2334
2482
  i.preventDefault(), this.close(!0);
2335
2483
  }
2336
2484
  }
2337
- }, this.onColorChange = t, this.recentScope = e, this.element = this.createColorPicker();
2485
+ }, this.onChange = t, this.recentScope = e, this.element = this.build(), this.backdrop = this.createBackdrop();
2338
2486
  }
2339
- createColorPicker() {
2487
+ build() {
2340
2488
  const t = document.createElement("div");
2341
2489
  t.className = "custom-color-picker", t.style.display = "none";
2342
2490
  const e = document.createElement("div");
@@ -2344,7 +2492,7 @@ class ht {
2344
2492
  const i = document.createElement("span");
2345
2493
  i.textContent = "Color";
2346
2494
  const s = document.createElement("button");
2347
- s.className = "color-picker-close", s.innerHTML = ut, s.addEventListener("click", () => this.close(!0)), e.appendChild(i), e.appendChild(s), this.makeDraggable(e, t);
2495
+ s.className = "color-picker-close", s.innerHTML = pt, s.addEventListener("click", () => this.close(!0)), e.appendChild(i), e.appendChild(s), Dt(e, t);
2348
2496
  const n = document.createElement("div");
2349
2497
  n.className = "color-picker-area", this.colorArea = n;
2350
2498
  const o = document.createElement("div");
@@ -2352,432 +2500,623 @@ class ht {
2352
2500
  const a = document.createElement("div");
2353
2501
  a.className = "color-picker-hue-container";
2354
2502
  const l = document.createElement("button");
2355
- l.className = "color-picker-eyedropper", l.type = "button", l.innerHTML = `<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2356
- <path fill-rule="evenodd" clip-rule="evenodd" d="M19.1972 3.29156C18.936 3.03034 18.6259 2.82313 18.2847 2.68176C17.9434 2.54039 17.5777 2.46763 17.2083 2.46763C16.8389 2.46763 16.4731 2.54039 16.1319 2.68176C15.7906 2.82313 15.4805 3.03034 15.2194 3.29156L13.7822 4.72875C13.2585 4.4772 12.6697 4.39449 12.097 4.49207C11.5243 4.58964 10.9961 4.86267 10.5853 5.27343L9.91687 5.94281C9.74268 6.11693 9.6045 6.32366 9.51023 6.5512C9.41595 6.77873 9.36743 7.02261 9.36743 7.2689C9.36743 7.5152 9.41595 7.75907 9.51023 7.98661C9.6045 8.21414 9.74268 8.42088 9.91687 8.595L3.83625 14.6747C3.57512 14.936 3.36803 15.2462 3.2268 15.5875C3.08556 15.9288 3.01296 16.2947 3.01312 16.6641V18.3516C3.01312 18.6499 3.13165 18.9361 3.34263 19.1471C3.55361 19.358 3.83975 19.4766 4.13812 19.4766H5.82562C6.57129 19.4759 7.28618 19.1792 7.81312 18.6516L13.8937 12.5728C14.0679 12.747 14.2746 12.8852 14.5021 12.9795C14.7297 13.0737 14.9735 13.1223 15.2198 13.1223C15.4661 13.1223 15.71 13.0737 15.9375 12.9795C16.1651 12.8852 16.3718 12.747 16.5459 12.5728L17.2153 11.9025C17.6261 11.4917 17.8991 10.9635 17.9967 10.3908C18.0942 9.81811 18.0115 9.22926 17.76 8.70562L19.1972 7.26937C19.4584 7.0082 19.6656 6.69813 19.807 6.35687C19.9484 6.01561 20.0211 5.64985 20.0211 5.28047C20.0211 4.91108 19.9484 4.54532 19.807 4.20406C19.6656 3.8628 19.4584 3.55273 19.1972 3.29156ZM5.16281 16.0012L11.2425 9.92062L12.5681 11.2462L6.48844 17.3269C6.31266 17.5027 6.07424 17.6015 5.82562 17.6016H4.88812V16.6641C4.88818 16.4154 4.98698 16.177 5.16281 16.0012Z" fill="#353C47"/>
2357
- </svg>`;
2358
- const r = document.createElement("div");
2359
- r.className = "color-picker-hue", this.hueSlider = r;
2503
+ l.className = "color-picker-eyedropper", l.type = "button", l.innerHTML = zt;
2360
2504
  const c = document.createElement("div");
2361
- c.className = "color-picker-hue-marker", this.hueMarker = c, r.appendChild(c), a.appendChild(l), a.appendChild(r);
2505
+ c.className = "color-picker-hue", this.hueSlider = c;
2362
2506
  const h = document.createElement("div");
2363
- h.className = "color-picker-opacity", this.opacitySlider = h;
2507
+ h.className = "color-picker-hue-marker", this.hueMarker = h, c.appendChild(h), a.appendChild(l), a.appendChild(c);
2364
2508
  const d = document.createElement("div");
2365
- d.className = "color-picker-opacity-marker", this.opacityMarker = d, h.appendChild(d);
2366
- const C = lt(
2367
- (E) => {
2368
- this.setColor(E), this.queueRecentColor(E);
2369
- },
2370
- this.recentScope
2371
- );
2372
- this.recentColorsSection = C;
2509
+ d.className = "color-picker-opacity", this.opacitySlider = d;
2510
+ const p = document.createElement("div");
2511
+ p.className = "color-picker-opacity-marker", this.opacityMarker = p, d.appendChild(p);
2512
+ const g = Wt((P) => {
2513
+ var F, G;
2514
+ this.setColor(P), (F = this.onChange) == null || F.call(this, P, this.currentOpacity), N.addColor(P, this.recentScope), (G = this.recentSectionRefresh) == null || G.call(this);
2515
+ }, this.recentScope);
2516
+ this.recentSectionRefresh = g.refresh;
2373
2517
  const u = document.createElement("div");
2374
2518
  u.className = "color-picker-format-section";
2375
- const f = document.createElement("select");
2376
- f.className = "color-picker-format-select", this.formatSelect = f;
2377
- const v = document.createElement("option");
2378
- v.value = "hex", v.textContent = "HEX";
2379
- const b = document.createElement("option");
2380
- b.value = "rgb", b.textContent = "RGB";
2381
- const m = document.createElement("option");
2382
- m.value = "hsl", m.textContent = "HSL", f.appendChild(v), f.appendChild(b), f.appendChild(m);
2383
- const L = document.createElement("input");
2384
- L.type = "text", L.className = "color-picker-color-input", L.value = this.currentColor, this.hexInput = L;
2385
- const M = document.createElement("div");
2386
- M.className = "color-picker-input-container";
2387
- const y = document.createElement("button");
2388
- return y.className = "color-picker-copy-inside", y.textContent = "Copy", y.addEventListener("click", () => this.copyToClipboard()), M.appendChild(L), M.appendChild(y), u.appendChild(f), u.appendChild(M), t.appendChild(e), t.appendChild(n), t.appendChild(a), t.appendChild(h), t.appendChild(C.container), t.appendChild(u), this.setupEyedropper(l), this.setupEventListeners(), t.addEventListener("click", (E) => {
2389
- E.stopPropagation();
2519
+ const m = document.createElement("select");
2520
+ m.className = "color-picker-format-select", this.select = m;
2521
+ const f = document.createElement("option");
2522
+ f.value = "hex", f.textContent = "HEX";
2523
+ const x = document.createElement("option");
2524
+ x.value = "rgb", x.textContent = "RGB";
2525
+ const L = document.createElement("option");
2526
+ L.value = "hsl", L.textContent = "HSL", m.appendChild(f), m.appendChild(x), m.appendChild(L);
2527
+ const w = document.createElement("input");
2528
+ w.type = "text", w.className = "color-picker-color-input", w.value = this.currentColor, this.input = w;
2529
+ const O = document.createElement("div");
2530
+ O.className = "color-picker-input-container";
2531
+ const k = document.createElement("button");
2532
+ return k.className = "color-picker-copy-inside", k.textContent = "Copy", O.appendChild(w), O.appendChild(k), u.appendChild(m), u.appendChild(O), t.appendChild(e), t.appendChild(n), t.appendChild(a), t.appendChild(d), t.appendChild(g.container), t.appendChild(u), t.addEventListener("click", (P) => P.stopPropagation()), this.bind(n, c, d, w, m, k, l), t;
2533
+ }
2534
+ createBackdrop() {
2535
+ const t = document.createElement("div");
2536
+ return t.className = "color-picker-backdrop", t.style.display = "none", t.addEventListener("click", (e) => {
2537
+ e.preventDefault(), e.stopPropagation(), this.close(!1);
2390
2538
  }), t;
2391
2539
  }
2392
- refreshRecentColors() {
2393
- var t;
2394
- (t = this.recentColorsSection) == null || t.refresh();
2395
- }
2396
- queueRecentColor(t) {
2397
- this.pendingRecentColor = t;
2398
- }
2399
- flushRecentColor() {
2400
- this.pendingRecentColor && (J.addColor(this.pendingRecentColor, this.recentScope), this.pendingRecentColor = null, this.refreshRecentColors());
2401
- }
2402
- discardPendingColor() {
2403
- this.pendingRecentColor = null;
2404
- }
2405
- setupEventListeners() {
2406
- this.colorArea.addEventListener("mousedown", (t) => this.startColorDrag(t)), this.colorArea.addEventListener("click", (t) => {
2407
- t.stopPropagation();
2408
- }), this.hueSlider.addEventListener("mousedown", (t) => this.startHueDrag(t)), this.hueSlider.addEventListener("click", (t) => {
2409
- t.stopPropagation();
2410
- }), this.formatSelect.addEventListener("change", () => this.updateColorInput()), this.hexInput.addEventListener(
2411
- "input",
2412
- (t) => this.updateColorFromInput(t)
2413
- ), this.hexInput.addEventListener("blur", (t) => {
2414
- this.validateColorInput(t), this.queueRecentColor(this.currentColor);
2415
- }), this.hexInput.addEventListener("keydown", (t) => {
2416
- t.key === "Enter" && (t.preventDefault(), this.validateColorInput(t), this.queueRecentColor(this.currentColor), this.close(!0));
2417
- }), this.opacitySlider.addEventListener(
2418
- "mousedown",
2419
- (t) => this.startOpacityDrag(t)
2420
- ), this.opacitySlider.addEventListener("click", (t) => {
2421
- t.stopPropagation();
2422
- });
2423
- }
2424
- startColorDrag(t) {
2425
- t.preventDefault(), t.stopPropagation(), this.isColorDragging = !0, this.updateColorFromArea(t);
2426
- const e = (s) => this.updateColorFromArea(s), i = () => {
2427
- document.removeEventListener("mousemove", e), document.removeEventListener("mouseup", i), this.isColorDragging = !1, this.queueRecentColor(this.currentColor);
2540
+ bind(t, e, i, s, n, o, a) {
2541
+ const l = (d) => {
2542
+ const p = t.getBoundingClientRect(), g = Math.max(0, Math.min(1, (d.clientX - p.left) / p.width)), u = Math.max(0, Math.min(1, (d.clientY - p.top) / p.height));
2543
+ this.colorMarker.style.left = `${g * 100}%`, this.colorMarker.style.top = `${u * 100}%`;
2544
+ const f = parseFloat(this.hueMarker.style.left || "0%") / 100 * 360, x = W(f, g, 1 - u);
2545
+ this.setColor(x);
2546
+ }, c = (d) => {
2547
+ const p = e.getBoundingClientRect();
2548
+ let g = Math.max(1e-3, Math.min(0.999, (d.clientX - p.left) / p.width));
2549
+ this.hueMarker.style.left = `${g * 100}%`;
2550
+ const u = g * 360, m = parseFloat(this.colorMarker.style.left || "0%") / 100, f = parseFloat(this.colorMarker.style.top || "0%") / 100, x = W(u, m, 1 - f);
2551
+ this.colorArea.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${u}, 100%, 50%))`, this.setColor(x);
2552
+ }, h = (d) => {
2553
+ var u;
2554
+ const p = i.getBoundingClientRect(), g = Math.max(0, Math.min(1, (d.clientX - p.left) / p.width));
2555
+ this.opacityMarker.style.left = `${g * 100}%`, this.currentOpacity = Math.round(g * 100), (u = this.onChange) == null || u.call(this, this.currentColor, this.currentOpacity);
2428
2556
  };
2429
- document.addEventListener("mousemove", e), document.addEventListener("mouseup", i);
2557
+ t.addEventListener("mousedown", (d) => {
2558
+ d.preventDefault(), l(d);
2559
+ const p = (u) => l(u), g = () => {
2560
+ var u;
2561
+ document.removeEventListener("mousemove", p), document.removeEventListener("mouseup", g), N.addColor(this.currentColor, this.recentScope), (u = this.recentSectionRefresh) == null || u.call(this);
2562
+ };
2563
+ document.addEventListener("mousemove", p), document.addEventListener("mouseup", g);
2564
+ }), e.addEventListener("mousedown", (d) => {
2565
+ d.preventDefault(), c(d);
2566
+ const p = (u) => c(u), g = () => {
2567
+ var u;
2568
+ document.removeEventListener("mousemove", p), document.removeEventListener("mouseup", g), N.addColor(this.currentColor, this.recentScope), (u = this.recentSectionRefresh) == null || u.call(this);
2569
+ };
2570
+ document.addEventListener("mousemove", p), document.addEventListener("mouseup", g);
2571
+ }), i.addEventListener("mousedown", (d) => {
2572
+ d.preventDefault(), h(d);
2573
+ const p = (u) => h(u), g = () => {
2574
+ var u;
2575
+ document.removeEventListener("mousemove", p), document.removeEventListener("mouseup", g), N.addColor(this.currentColor, this.recentScope), (u = this.recentSectionRefresh) == null || u.call(this);
2576
+ };
2577
+ document.addEventListener("mousemove", p), document.addEventListener("mouseup", g);
2578
+ }), n.addEventListener("change", () => this.syncInput()), s.addEventListener("input", () => this.applyFromInput()), s.addEventListener("blur", () => this.syncInput()), s.addEventListener("keydown", (d) => {
2579
+ d.key === "Enter" && (d.preventDefault(), this.syncInput(), s.blur());
2580
+ }), o.addEventListener("click", async () => {
2581
+ try {
2582
+ await navigator.clipboard.writeText(s.value);
2583
+ } catch {
2584
+ s.select(), document.execCommand("copy");
2585
+ }
2586
+ }), a.addEventListener("click", async () => {
2587
+ var d, p;
2588
+ if (!("EyeDropper" in window)) {
2589
+ alert("EyeDropper API is not supported in this browser.");
2590
+ return;
2591
+ }
2592
+ try {
2593
+ const g = new window.EyeDropper(), { sRGBHex: u } = await g.open();
2594
+ this.setColor(u), (d = this.onChange) == null || d.call(this, u, this.currentOpacity), N.addColor(u, this.recentScope), (p = this.recentSectionRefresh) == null || p.call(this);
2595
+ } catch {
2596
+ }
2597
+ }), document.addEventListener("keydown", this.keyDown, !0), setTimeout(
2598
+ () => document.addEventListener("click", this.outsideClick, !0),
2599
+ 0
2600
+ );
2430
2601
  }
2431
- startHueDrag(t) {
2432
- t.preventDefault(), t.stopPropagation(), this.isHueDragging = !0, this.updateHueFromSlider(t);
2433
- const e = (s) => this.updateHueFromSlider(s), i = () => {
2434
- document.removeEventListener("mousemove", e), document.removeEventListener("mouseup", i), this.isHueDragging = !1, this.queueRecentColor(this.currentColor);
2435
- };
2436
- document.addEventListener("mousemove", e), document.addEventListener("mouseup", i);
2437
- }
2438
- updateColorFromArea(t) {
2439
- const e = this.colorArea.getBoundingClientRect(), i = Math.max(0, Math.min(1, (t.clientX - e.left) / e.width)), s = Math.max(0, Math.min(1, (t.clientY - e.top) / e.height));
2440
- this.colorMarker.style.left = `${i * 100}%`, this.colorMarker.style.top = `${s * 100}%`, this.updateColorFromSV(i, 1 - s);
2441
- }
2442
- updateHueFromSlider(t) {
2443
- this.isUpdatingHue = !0;
2444
- const e = this.hueSlider.getBoundingClientRect();
2445
- let i = (t.clientX - e.left) / e.width;
2446
- i = Math.max(2e-3, Math.min(0.996, i)), console.log("Hue slider click:", {
2447
- x: i,
2448
- hueValue: i * 360,
2449
- percent: i * 100
2450
- }), this.hueMarker.style.left = `${i * 100}%`;
2451
- const s = i * 360;
2452
- this.updateHue(s), this.isUpdatingHue = !1;
2453
- }
2454
- updateColorFromSV(t, e) {
2455
- const i = this.getCurrentHue(), s = this.hsvToHex(i, t, e);
2456
- this.setColor(s);
2457
- }
2458
- updateHue(t) {
2459
- const e = t;
2460
- t = Math.max(0.5, Math.min(358.5, t)), console.log("UpdateHue:", { originalHue: e, clampedHue: t }), this.colorArea.getBoundingClientRect();
2461
- const i = parseFloat(this.colorMarker.style.left || "50%") / 100, s = parseFloat(this.colorMarker.style.top || "50%") / 100;
2462
- this.colorArea.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${t}, 100%, 50%))`;
2463
- const n = i, o = 1 - s, a = this.hsvToHex(t, n, o);
2464
- this.setColor(a);
2465
- }
2466
- getCurrentHue() {
2467
- const t = parseFloat(this.hueMarker.style.left || "0%") / 100, e = t * 360;
2468
- return console.log("GetCurrentHue:", { huePosition: t, hueValue: e }), Math.max(0.5, Math.min(358.5, e));
2469
- }
2470
- updateColorInput() {
2471
- const t = this.formatSelect.value, { h: e, s: i, v: s } = this.hexToHsv(this.currentColor);
2472
- switch (t) {
2473
- case "hex":
2474
- this.hexInput.value = this.currentColor;
2475
- break;
2476
- case "rgb":
2477
- const { r: n, g: o, b: a } = this.hexToRgb(this.currentColor);
2478
- this.hexInput.value = `rgb(${n}, ${o}, ${a})`;
2479
- break;
2480
- case "hsl":
2481
- const { hue: l, sat: r, lightness: c } = this.hsvToHsl(e, i, s);
2482
- this.hexInput.value = `hsl(${Math.round(l)}, ${Math.round(
2483
- r * 100
2484
- )}%, ${Math.round(c * 100)}%)`;
2485
- break;
2602
+ setColor(t) {
2603
+ var n;
2604
+ this.currentColor = t;
2605
+ const { h: e, s: i, v: s } = $(t);
2606
+ this.hueMarker.style.left = `${e / 360 * 100}%`, this.colorMarker.style.left = `${i * 100}%`, this.colorMarker.style.top = `${(1 - s) * 100}%`, this.colorArea.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${e}, 100%, 50%))`, this.syncInput(), this.updateOpacityBg(), (n = this.onChange) == null || n.call(this, t, this.currentOpacity);
2607
+ }
2608
+ syncInput() {
2609
+ const t = this.select.value, { h: e, s: i, v: s } = $(this.currentColor);
2610
+ if (t === "hex") this.input.value = this.currentColor;
2611
+ else if (t === "rgb") {
2612
+ const { r: n, g: o, b: a } = S(this.currentColor);
2613
+ this.input.value = `rgb(${n}, ${o}, ${a})`;
2614
+ } else {
2615
+ const { hue: n, sat: o, lightness: a } = Rt(e, i, s);
2616
+ this.input.value = `hsl(${Math.round(n)}, ${Math.round(
2617
+ o * 100
2618
+ )}%, ${Math.round(a * 100)}%)`;
2486
2619
  }
2487
2620
  }
2488
- updateColorFromInput(t) {
2489
- const e = t.target.value, i = this.formatSelect.value;
2490
- let s = "";
2491
- if (i === "hex" && /^#[0-9A-Fa-f]{6}$/.test(e))
2492
- s = e;
2493
- else if (i === "rgb") {
2494
- const n = e.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
2495
- if (n) {
2496
- const o = parseInt(n[1]), a = parseInt(n[2]), l = parseInt(n[3]);
2497
- o <= 255 && a <= 255 && l <= 255 && (s = `#${o.toString(16).padStart(2, "0")}${a.toString(16).padStart(2, "0")}${l.toString(16).padStart(2, "0")}`);
2498
- }
2499
- } else if (i === "hsl") {
2500
- const n = e.match(/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/);
2501
- if (n) {
2502
- const o = parseInt(n[1]), a = parseInt(n[2]) / 100, l = parseInt(n[3]) / 100;
2503
- if (o <= 360 && a <= 1 && l <= 1) {
2504
- const r = l + a * Math.min(l, 1 - l), c = r === 0 ? 0 : 2 * (1 - l / r);
2505
- s = this.hsvToHex(o, c, r);
2621
+ applyFromInput() {
2622
+ const t = this.input.value.trim();
2623
+ let e = "";
2624
+ if (/^#[0-9A-Fa-f]{6}$/.test(t)) e = t;
2625
+ else {
2626
+ const i = t.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
2627
+ if (i) {
2628
+ const s = parseInt(i[1]), n = parseInt(i[2]), o = parseInt(i[3]);
2629
+ s <= 255 && n <= 255 && o <= 255 && (e = `#${[s, n, o].map((a) => a.toString(16).padStart(2, "0")).join("")}`);
2630
+ } else {
2631
+ const s = t.match(/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/);
2632
+ if (s) {
2633
+ const n = parseInt(s[1]), o = parseInt(s[2]) / 100, a = parseInt(s[3]) / 100, l = a + o * Math.min(a, 1 - a), c = l === 0 ? 0 : 2 * (1 - a / l);
2634
+ e = W(n, c, l);
2506
2635
  }
2507
2636
  }
2508
2637
  }
2509
- s && this.setColor(s);
2638
+ e && this.setColor(e);
2510
2639
  }
2511
- validateColorInput(t) {
2512
- this.updateColorInput();
2513
- }
2514
- startOpacityDrag(t) {
2515
- t.preventDefault(), t.stopPropagation(), this.isOpacityDragging = !0, this.updateOpacityFromSlider(t);
2516
- const e = (s) => this.updateOpacityFromSlider(s), i = () => {
2517
- document.removeEventListener("mousemove", e), document.removeEventListener("mouseup", i), this.isOpacityDragging = !1, this.queueRecentColor(this.currentColor);
2518
- };
2519
- document.addEventListener("mousemove", e), document.addEventListener("mouseup", i);
2520
- }
2521
- updateOpacityFromSlider(t) {
2522
- const e = this.opacitySlider.getBoundingClientRect(), i = Math.max(0, Math.min(1, (t.clientX - e.left) / e.width));
2523
- this.opacityMarker.style.left = `${i * 100}%`, this.currentOpacity = Math.round(i * 100), this.onColorChange && this.onColorChange(this.currentColor, this.currentOpacity);
2524
- }
2525
- updateOpacityBackground() {
2526
- const { r: t, g: e, b: i } = this.hexToRgb(this.currentColor);
2640
+ updateOpacityBg() {
2641
+ const { r: t, g: e, b: i } = S(this.currentColor);
2527
2642
  this.opacitySlider.style.setProperty(
2528
2643
  "--base-color",
2529
2644
  `rgb(${t}, ${e}, ${i})`
2530
2645
  );
2531
2646
  }
2532
- isValidHex(t) {
2533
- return /^#[0-9A-Fa-f]{6}$/.test(t);
2647
+ open(t, e, i) {
2648
+ var p;
2649
+ this.currentColor = t, this.currentOpacity = i ?? 100, this.syncInput();
2650
+ const { h: s, s: n, v: o } = $(t);
2651
+ this.hueMarker.style.left = `${s / 360 * 100}%`, this.colorMarker.style.left = `${n * 100}%`, this.colorMarker.style.top = `${(1 - o) * 100}%`, this.colorArea.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${s}, 100%, 50%))`, this.updateOpacityBg(), this.opacityMarker.style.left = `${this.currentOpacity}%`, (p = this.recentSectionRefresh) == null || p.call(this), this.isOpen = !0, this.backdrop.style.display = "block", this.backdrop.parentElement || document.body.appendChild(this.backdrop), this.element.style.display = "block";
2652
+ const a = e.getBoundingClientRect(), l = window.innerWidth, c = window.innerHeight;
2653
+ this.element.style.position = "fixed", this.element.style.zIndex = "10002";
2654
+ let h = a.right + 8, d = a.top;
2655
+ h + 408 > l && (h = a.left - 408 - 8), h < 8 && (h = Math.max(8, (l - 408) / 2)), d + 500 > c && (d = Math.max(8, c - 500 - 8)), this.element.style.left = `${h}px`, this.element.style.top = `${d}px`, this.element.parentElement || document.body.appendChild(this.element);
2534
2656
  }
2535
- hsvToHex(t, e, i) {
2536
- t = Math.max(0, Math.min(359.9, t)), e = Math.max(0, Math.min(1, e)), i = Math.max(0, Math.min(1, i)), console.log("CustomColorPicker HsvToHex:", { h: t, s: e, v: i });
2537
- const s = i * e, n = s * (1 - Math.abs(t / 60 % 2 - 1)), o = i - s;
2538
- let a = 0, l = 0, r = 0;
2539
- return t < 60 ? (a = s, l = n, r = 0) : t < 120 ? (a = n, l = s, r = 0) : t < 180 ? (a = 0, l = s, r = n) : t < 240 ? (a = 0, l = n, r = s) : t < 300 ? (a = n, l = 0, r = s) : (a = s, l = 0, r = n), a = Math.round((a + o) * 255), l = Math.round((l + o) * 255), r = Math.round((r + o) * 255), `#${a.toString(16).padStart(2, "0")}${l.toString(16).padStart(2, "0")}${r.toString(16).padStart(2, "0")}`;
2657
+ close(t) {
2658
+ var e;
2659
+ this.isOpen && (this.isOpen = !1, this.backdrop.style.display = "none", this.element.style.display = "none", document.removeEventListener("click", this.outsideClick, !0), document.removeEventListener("keydown", this.keyDown, !0), t && (N.addColor(this.currentColor, this.recentScope), (e = this.recentSectionRefresh) == null || e.call(this)));
2540
2660
  }
2541
- setColor(t) {
2542
- this.currentColor = t, this.updatePickerFromColor(t), this.updateColorInput(), this.updateOpacityBackground(), this.onColorChange && this.onColorChange(t, this.currentOpacity), this.queueRecentColor(t);
2661
+ getElement() {
2662
+ return this.element;
2543
2663
  }
2544
- setupEyedropper(t) {
2545
- const e = async () => {
2546
- if ("EyeDropper" in window)
2547
- try {
2548
- const n = (await new window.EyeDropper().open()).sRGBHex;
2549
- this.currentColor = n, this.updateColorInput(), this.updateColorAreaFromHex(n), this.onColorChange && this.onColorChange(n), this.queueRecentColor(n);
2550
- } catch (i) {
2551
- console.log("User cancelled eyedropper or error occurred:", i);
2552
- }
2553
- else
2554
- alert(
2555
- "EyeDropper API is not supported in this browser. Try using Chrome 95+ or Edge 95+."
2556
- );
2557
- };
2558
- t.addEventListener("click", e);
2664
+ }
2665
+ class _t {
2666
+ constructor(t) {
2667
+ this.currentColor = t.initialColor, this.currentOpacity = t.initialOpacity, this.onColorChange = t.onColorChange, this.container = this.createContainer(), this.initializePicker();
2668
+ }
2669
+ createContainer() {
2670
+ const t = document.createElement("div");
2671
+ return t.className = "embedded-color-picker-content", t.innerHTML = `
2672
+ <div class="color-picker-area embedded">
2673
+ <div class="color-picker-marker"></div>
2674
+ </div>
2675
+ <div class="color-picker-hue-container">
2676
+ <button class="color-picker-eyedropper">
2677
+ <svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2678
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M19.1972 3.29156C18.936 3.03034 18.6259 2.82313 18.2847 2.68176C17.9434 2.54039 17.5777 2.46763 17.2083 2.46763C16.8389 2.46763 16.4731 2.54039 16.1319 2.68176C15.7906 2.82313 15.4805 3.03034 15.2194 3.29156L13.7822 4.72875C13.2585 4.4772 12.6697 4.39449 12.097 4.49207C11.5243 4.58964 10.9961 4.86267 10.5853 5.27343L9.91687 5.94281C9.74268 6.11693 9.6045 6.32366 9.51023 6.5512C9.41595 6.77873 9.36743 7.02261 9.36743 7.2689C9.36743 7.5152 9.41595 7.75907 9.51023 7.98661C9.6045 8.21414 9.74268 8.42088 9.91687 8.595L3.83625 14.6747C3.57512 14.936 3.36803 15.2462 3.2268 15.5875C3.08556 15.9288 3.01296 16.2947 3.01312 16.6641V18.3516C3.01312 18.6499 3.13165 18.9361 3.34263 19.1471C3.55361 19.358 3.83975 19.4766 4.13812 19.4766H5.82562C6.57129 19.4759 7.28618 19.1792 7.81312 18.6516L13.8937 12.5728C14.0679 12.747 14.2746 12.8852 14.5021 12.9795C14.7297 13.0737 14.9735 13.1223 15.2198 13.1223C15.4661 13.1223 15.71 13.0737 15.9375 12.9795C16.1651 12.8852 16.3718 12.747 16.5459 12.5728L17.2153 11.9025C17.6261 11.4917 17.8991 10.9635 17.9967 10.3908C18.0942 9.81811 18.0115 9.22926 17.76 8.70562L19.1972 7.26937C19.4584 7.0082 19.6656 6.69813 19.807 6.35687C19.9484 6.01561 20.0211 5.64985 20.0211 5.28047C20.0211 4.91108 19.9484 4.54532 19.807 4.20406C19.6656 3.8628 19.4584 3.55273 19.1972 3.29156ZM5.16281 16.0012L11.2425 9.92062L12.5681 11.2462L6.48844 17.3269C6.31266 17.5027 6.07424 17.6015 5.82562 17.6016H4.88812V16.6641C4.88818 16.4154 4.98698 16.177 5.16281 16.0012Z" fill="#353C47"/>
2679
+ </svg>
2680
+ </button>
2681
+ <div class="color-picker-hue embedded">
2682
+ <div class="color-picker-hue-marker"></div>
2683
+ </div>
2684
+ </div>
2685
+ <div class="color-picker-opacity embedded">
2686
+ <div class="color-picker-opacity-marker"></div>
2687
+ </div>
2688
+ <div class="color-picker-format-section embedded">
2689
+ <select class="color-picker-format-select">
2690
+ <option value="hex">HEX</option>
2691
+ <option value="rgb">RGB</option>
2692
+ <option value="hsl">HSL</option>
2693
+ </select>
2694
+ <div class="color-picker-input-container">
2695
+ <input type="text" class="color-picker-color-input" />
2696
+ <button class="color-picker-copy-inside">Copy</button>
2697
+ </div>
2698
+ </div>
2699
+ `, t;
2700
+ }
2701
+ initializePicker() {
2702
+ const t = this.container.querySelector(
2703
+ ".color-picker-area"
2704
+ ), e = this.container.querySelector(
2705
+ ".color-picker-marker"
2706
+ ), i = this.container.querySelector(
2707
+ ".color-picker-hue"
2708
+ ), s = this.container.querySelector(
2709
+ ".color-picker-hue-marker"
2710
+ ), n = this.container.querySelector(
2711
+ ".color-picker-opacity"
2712
+ ), o = this.container.querySelector(
2713
+ ".color-picker-opacity-marker"
2714
+ ), a = this.container.querySelector(
2715
+ ".color-picker-format-select"
2716
+ ), l = this.container.querySelector(
2717
+ ".color-picker-color-input"
2718
+ ), c = this.container.querySelector(
2719
+ ".color-picker-copy-inside"
2720
+ ), { h, s: d, v: p } = $(this.currentColor);
2721
+ s.style.left = `${h / 360 * 100}%`, e.style.left = `${d * 100}%`, e.style.top = `${(1 - p) * 100}%`, t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${h}, 100%, 50%))`, o.style.left = `${this.currentOpacity}%`, this.updateOpacityBackground(n), this.updateColorInput(a, l), this.setupColorAreaEvents(t, e, s), this.setupHueSliderEvents(
2722
+ i,
2723
+ s,
2724
+ t,
2725
+ e,
2726
+ a,
2727
+ l,
2728
+ n
2729
+ ), this.setupOpacitySliderEvents(n, o), this.setupFormatEvents(a, l, c);
2559
2730
  }
2560
- updateColorAreaFromHex(t) {
2561
- this.hexInput.value = t;
2731
+ updateOpacityBackground(t) {
2732
+ const e = S(this.currentColor);
2733
+ t.style.setProperty(
2734
+ "--base-color",
2735
+ `rgb(${e.r}, ${e.g}, ${e.b})`
2736
+ );
2737
+ }
2738
+ updateColorInput(t, e) {
2739
+ switch (t.value) {
2740
+ case "hex":
2741
+ e.value = this.currentColor;
2742
+ break;
2743
+ case "rgb":
2744
+ const s = S(this.currentColor);
2745
+ e.value = `rgb(${s.r}, ${s.g}, ${s.b})`;
2746
+ break;
2747
+ case "hsl":
2748
+ const { h: n, s: o, v: a } = $(this.currentColor), l = a * (1 - o / 2), c = l === 0 || l === 1 ? 0 : (a - l) / Math.min(l, 1 - l);
2749
+ e.value = `hsl(${Math.round(n)}, ${Math.round(
2750
+ c * 100
2751
+ )}%, ${Math.round(l * 100)}%)`;
2752
+ break;
2753
+ }
2562
2754
  }
2563
- copyToClipboard() {
2564
- navigator.clipboard.writeText(this.currentColor).catch(() => {
2565
- this.hexInput.select(), document.execCommand("copy");
2755
+ setupColorAreaEvents(t, e, i) {
2756
+ const s = (n) => {
2757
+ const o = t.getBoundingClientRect(), a = Math.max(0, Math.min(1, (n.clientX - o.left) / o.width)), l = Math.max(0, Math.min(1, (n.clientY - o.top) / o.height));
2758
+ e.style.left = `${a * 100}%`, e.style.top = `${l * 100}%`;
2759
+ const c = parseFloat(i.style.left || "0%") / 100 * 360, h = W(c, a, 1 - l);
2760
+ this.currentColor = h;
2761
+ const d = this.container.querySelector(
2762
+ ".color-picker-format-select"
2763
+ ), p = this.container.querySelector(
2764
+ ".color-picker-color-input"
2765
+ ), g = this.container.querySelector(
2766
+ ".color-picker-opacity"
2767
+ );
2768
+ this.updateColorInput(d, p), this.updateOpacityBackground(g), this.triggerChange();
2769
+ };
2770
+ t.addEventListener("mousedown", (n) => {
2771
+ n.preventDefault(), s(n);
2772
+ const o = (l) => s(l), a = () => {
2773
+ document.removeEventListener("mousemove", o), document.removeEventListener("mouseup", a);
2774
+ };
2775
+ document.addEventListener("mousemove", o), document.addEventListener("mouseup", a);
2566
2776
  });
2567
2777
  }
2568
- open(t, e, i) {
2569
- this.currentColor = t, this.currentOpacity = i ?? 100, this.updateColorInput(), this.updatePickerFromColor(t), this.refreshRecentColors(), this.updateOpacityBackground(), this.opacityMarker.style.left = `${this.currentOpacity}%`, this.pendingRecentColor = null, this.isOpen = !0, this.element.style.display = "block";
2570
- const s = e.getBoundingClientRect(), n = window.innerWidth, o = window.innerHeight;
2571
- this.element.style.position = "fixed", this.element.style.zIndex = "10002";
2572
- let a = s.right + 8, l = s.top;
2573
- a + 408 > n && (a = s.left - 408 - 8), a < 8 && (a = Math.max(8, (n - 408) / 2)), l + 500 > o && (l = Math.max(8, o - 500 - 8)), this.element.style.left = `${a}px`, this.element.style.top = `${l}px`, this.element.parentElement || document.body.appendChild(this.element), this.updatePickerFromColor(t), document.addEventListener("keydown", this.handleKeydown, !0), setTimeout(() => {
2574
- document.addEventListener("click", this.handleOutsideClick, !0);
2575
- }, 50);
2778
+ setupHueSliderEvents(t, e, i, s, n, o, a) {
2779
+ const l = (c) => {
2780
+ const h = t.getBoundingClientRect();
2781
+ let d = (c.clientX - h.left) / h.width;
2782
+ d = Math.max(1e-3, Math.min(0.999, d)), e.style.left = `${d * 100}%`;
2783
+ const p = d * 360, g = parseFloat(s.style.left || "50%") / 100, u = parseFloat(s.style.top || "50%") / 100;
2784
+ i.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${p}, 100%, 50%))`;
2785
+ const m = W(p, g, 1 - u);
2786
+ this.currentColor = m, this.updateColorInput(n, o), this.updateOpacityBackground(a), this.triggerChange();
2787
+ };
2788
+ t.addEventListener("mousedown", (c) => {
2789
+ c.preventDefault(), l(c);
2790
+ const h = (p) => l(p), d = () => {
2791
+ document.removeEventListener("mousemove", h), document.removeEventListener("mouseup", d);
2792
+ };
2793
+ document.addEventListener("mousemove", h), document.addEventListener("mouseup", d);
2794
+ });
2576
2795
  }
2577
- updatePickerFromColor(t) {
2578
- const { h: e, s: i, v: s } = this.hexToHsv(t);
2579
- this.isUpdatingHue || (this.hueMarker.style.left = `${e / 360 * 100}%`), this.colorMarker.style.left = `${i * 100}%`, this.colorMarker.style.top = `${(1 - s) * 100}%`, this.colorArea.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${e}, 100%, 50%))`;
2796
+ setupOpacitySliderEvents(t, e) {
2797
+ const i = (s) => {
2798
+ const n = t.getBoundingClientRect(), o = Math.max(0, Math.min(1, (s.clientX - n.left) / n.width));
2799
+ e.style.left = `${o * 100}%`, this.currentOpacity = Math.round(o * 100), this.triggerChange();
2800
+ };
2801
+ t.addEventListener("mousedown", (s) => {
2802
+ s.preventDefault(), i(s);
2803
+ const n = (a) => i(a), o = () => {
2804
+ document.removeEventListener("mousemove", n), document.removeEventListener("mouseup", o);
2805
+ };
2806
+ document.addEventListener("mousemove", n), document.addEventListener("mouseup", o);
2807
+ });
2580
2808
  }
2581
- hexToHsv(t) {
2582
- const e = parseInt(t.slice(1, 3), 16) / 255, i = parseInt(t.slice(3, 5), 16) / 255, s = parseInt(t.slice(5, 7), 16) / 255, n = Math.max(e, i, s), o = Math.min(e, i, s), a = n - o;
2583
- let l = 0;
2584
- const r = n === 0 ? 0 : a / n, c = n;
2585
- return a !== 0 && (n === e ? l = (i - s) / a % 6 : n === i ? l = (s - e) / a + 2 : l = (e - i) / a + 4), { h: l * 60, s: r, v: c };
2809
+ setupFormatEvents(t, e, i) {
2810
+ t.addEventListener("change", () => {
2811
+ this.updateColorInput(t, e);
2812
+ }), i.addEventListener("click", () => {
2813
+ navigator.clipboard.writeText(e.value).catch(() => {
2814
+ e.select(), document.execCommand("copy");
2815
+ });
2816
+ }), e.addEventListener("input", () => {
2817
+ this.handleManualColorInput(e.value, t);
2818
+ }), e.addEventListener("blur", () => {
2819
+ this.updateColorInput(t, e);
2820
+ });
2586
2821
  }
2587
- hexToRgb(t) {
2588
- const e = parseInt(t.slice(1, 3), 16), i = parseInt(t.slice(3, 5), 16), s = parseInt(t.slice(5, 7), 16);
2589
- return { r: e, g: i, b: s };
2822
+ handleManualColorInput(t, e) {
2823
+ const i = t.trim();
2824
+ let s = null;
2825
+ switch (e.value) {
2826
+ case "hex":
2827
+ s = this.parseHexInput(i);
2828
+ break;
2829
+ case "rgb":
2830
+ s = this.parseRgbInput(i);
2831
+ break;
2832
+ case "hsl":
2833
+ s = this.parseHslInput(i);
2834
+ break;
2835
+ }
2836
+ s || (s = this.autoDetectColorFormat(i)), s && (this.currentColor = s, this.updatePickerVisualState(), this.triggerChange());
2590
2837
  }
2591
- hsvToHsl(t, e, i) {
2592
- const s = i * (1 - e / 2), n = s === 0 || s === 1 ? 0 : (i - s) / Math.min(s, 1 - s);
2593
- return { hue: t, sat: n, lightness: s };
2838
+ parseHexInput(t) {
2839
+ const e = t.startsWith("#") ? t : `#${t}`;
2840
+ return R(e);
2594
2841
  }
2595
- makeDraggable(t, e) {
2596
- let i = !1, s = 0, n = 0, o = 0, a = 0;
2597
- const l = (h) => {
2598
- if (h.target.closest("button"))
2599
- return;
2600
- h.preventDefault(), h.stopPropagation(), i = !0, s = h.clientX, n = h.clientY;
2601
- const d = e.getBoundingClientRect();
2602
- o = d.left, a = d.top, e.classList.add("dragging"), document.addEventListener("mousemove", r), document.addEventListener("mouseup", c), document.body.style.userSelect = "none";
2603
- }, r = (h) => {
2604
- if (!i) return;
2605
- h.preventDefault(), h.stopPropagation();
2606
- const d = h.clientX - s, C = h.clientY - n;
2607
- let u = o + d, f = a + C;
2608
- const v = window.innerWidth, b = window.innerHeight, m = e.offsetWidth, L = e.offsetHeight;
2609
- u = Math.max(8, Math.min(v - m - 8, u)), f = Math.max(8, Math.min(b - L - 8, f)), e.style.left = `${u}px`, e.style.top = `${f}px`;
2610
- }, c = (h) => {
2611
- i && (i = !1, h.preventDefault(), h.stopPropagation(), e.classList.remove("dragging"), document.removeEventListener("mousemove", r), document.removeEventListener("mouseup", c), document.body.style.userSelect = "");
2612
- };
2613
- t.addEventListener("mousedown", l);
2842
+ parseRgbInput(t) {
2843
+ const e = t.match(
2844
+ /rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*[\d.]+)?\s*\)/
2845
+ );
2846
+ if (e) {
2847
+ const i = parseInt(e[1]), s = parseInt(e[2]), n = parseInt(e[3]);
2848
+ if (i <= 255 && s <= 255 && n <= 255)
2849
+ return D(i, s, n);
2850
+ }
2851
+ return null;
2852
+ }
2853
+ parseHslInput(t) {
2854
+ const e = t.match(
2855
+ /hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%(?:\s*,\s*[\d.]+)?\s*\)/
2856
+ );
2857
+ if (e) {
2858
+ const i = parseFloat(e[1]), s = parseFloat(e[2]) / 100, n = parseFloat(e[3]) / 100;
2859
+ if (i >= 0 && i <= 360 && s >= 0 && s <= 1 && n >= 0 && n <= 1) {
2860
+ const o = J(i, s, n);
2861
+ return D(o.r, o.g, o.b);
2862
+ }
2863
+ }
2864
+ return null;
2865
+ }
2866
+ autoDetectColorFormat(t) {
2867
+ const e = this.parseHexInput(t);
2868
+ if (e) return e;
2869
+ const i = this.parseRgbInput(t);
2870
+ if (i) return i;
2871
+ const s = this.parseHslInput(t);
2872
+ return s || null;
2873
+ }
2874
+ updatePickerVisualState() {
2875
+ const t = this.container.querySelector(
2876
+ ".color-picker-area"
2877
+ ), e = this.container.querySelector(
2878
+ ".color-picker-marker"
2879
+ ), i = this.container.querySelector(
2880
+ ".color-picker-hue-marker"
2881
+ ), s = this.container.querySelector(
2882
+ ".color-picker-opacity"
2883
+ );
2884
+ this.container.querySelector(
2885
+ ".color-picker-format-select"
2886
+ ), this.container.querySelector(
2887
+ ".color-picker-color-input"
2888
+ );
2889
+ const { h: n, s: o, v: a } = $(this.currentColor);
2890
+ i.style.left = `${n / 360 * 100}%`, e.style.left = `${o * 100}%`, e.style.top = `${(1 - a) * 100}%`, t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${n}, 100%, 50%))`, this.updateOpacityBackground(s);
2614
2891
  }
2615
- close(t = !1) {
2616
- this.isOpen = !1, this.element.style.display = "none", document.removeEventListener("click", this.handleOutsideClick, !0), document.removeEventListener("keydown", this.handleKeydown, !0), t ? this.flushRecentColor() : this.discardPendingColor();
2892
+ triggerChange() {
2893
+ this.onColorChange(this.currentColor, this.currentOpacity);
2617
2894
  }
2618
2895
  getElement() {
2619
- return this.element;
2896
+ return this.container;
2897
+ }
2898
+ updateColor(t, e) {
2899
+ this.currentColor = t, this.currentOpacity = e;
2900
+ const i = this.container.querySelector(
2901
+ ".color-picker-area"
2902
+ ), s = this.container.querySelector(
2903
+ ".color-picker-marker"
2904
+ ), n = this.container.querySelector(
2905
+ ".color-picker-hue-marker"
2906
+ ), o = this.container.querySelector(
2907
+ ".color-picker-opacity-marker"
2908
+ ), a = this.container.querySelector(
2909
+ ".color-picker-opacity"
2910
+ ), l = this.container.querySelector(
2911
+ ".color-picker-format-select"
2912
+ ), c = this.container.querySelector(
2913
+ ".color-picker-color-input"
2914
+ ), { h, s: d, v: p } = $(t);
2915
+ n.style.left = `${h / 360 * 100}%`, s.style.left = `${d * 100}%`, s.style.top = `${(1 - p) * 100}%`, i.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${h}, 100%, 50%))`, o.style.left = `${e}%`, this.updateOpacityBackground(a), this.updateColorInput(l, c);
2620
2916
  }
2621
2917
  }
2622
- class he extends T {
2918
+ const nt = (r) => {
2919
+ const t = [];
2920
+ let e = "", i = 0;
2921
+ for (let s = 0; s < r.length; s++) {
2922
+ const n = r[s];
2923
+ if (n === "(") i++;
2924
+ else if (n === ")") i--;
2925
+ else if (n === "," && i === 0) {
2926
+ t.push(e.trim()), e = "";
2927
+ continue;
2928
+ }
2929
+ e += n;
2930
+ }
2931
+ return e.trim() && t.push(e.trim()), t;
2932
+ }, ot = (r, t) => {
2933
+ const e = new RegExp(`${t}\\s*\\(`, "i"), i = r.match(e);
2934
+ if (!i) return null;
2935
+ const s = i.index + i[0].length;
2936
+ let n = 1, o = s;
2937
+ for (let a = s; a < r.length && n > 0; a++)
2938
+ r[a] === "(" ? n++ : r[a] === ")" && n--, o = a;
2939
+ return n === 0 ? r.substring(s, o) : null;
2940
+ }, Jt = (r) => {
2941
+ const t = r.split(" ")[0].toLowerCase();
2942
+ return [
2943
+ "circle",
2944
+ "ellipse",
2945
+ "closest-side",
2946
+ "closest-corner",
2947
+ "farthest-side",
2948
+ "farthest-corner",
2949
+ "at",
2950
+ "contain",
2951
+ "cover"
2952
+ ].includes(t) ? !1 : /^#[0-9a-f]{3,8}$/i.test(t) || /^rgb/i.test(r) || /^hsl/i.test(r) || Ft(t);
2953
+ }, at = (r) => {
2954
+ const t = [];
2955
+ return r.forEach((e, i) => {
2956
+ const s = e.trim();
2957
+ if (!s) return;
2958
+ let n = "", o = 0;
2959
+ const a = s.match(/^(.+?)\s+(\d+(?:\.\d+)?)%?\s*$/);
2960
+ a && ht(a[1].trim()) ? (n = a[1].trim(), o = parseFloat(a[2])) : (n = s, o = r.length === 1 ? 0 : i / (r.length - 1) * 100);
2961
+ const l = dt(n);
2962
+ l.position = Math.max(0, Math.min(100, Math.round(o))), t.push(l);
2963
+ }), t;
2964
+ }, A = (r) => {
2965
+ const t = r.stops && r.stops.length ? r.stops : [{ color: "#000000", position: 0, opacity: 100 }];
2966
+ return {
2967
+ type: r.type && ["linear", "radial", "solid"].includes(r.type) ? r.type : "linear",
2968
+ angle: typeof r.angle == "number" ? r.angle : 90,
2969
+ stops: t.map((e, i) => ({
2970
+ color: e.color || "#000000",
2971
+ position: typeof e.position == "number" ? e.position : t.length === 1 ? 0 : Math.round(i / (t.length - 1) * 100),
2972
+ opacity: e.opacity === void 0 || Number.isNaN(e.opacity) ? 100 : e.opacity
2973
+ }))
2974
+ };
2975
+ }, Y = (r) => {
2976
+ const t = r.replace(/;$/, "").trim();
2977
+ if (Gt(t)) {
2978
+ const s = dt(t);
2979
+ return A({ type: "solid", angle: 0, stops: [s] });
2980
+ }
2981
+ const e = ot(t, "linear-gradient");
2982
+ if (e) {
2983
+ const s = nt(e);
2984
+ let n = 90, o = s;
2985
+ const a = s[0];
2986
+ if (a.includes("deg")) {
2987
+ const c = a.match(/(-?\d+(?:\.\d+)?)deg/);
2988
+ c && (n = parseFloat(c[1]), o = s.slice(1));
2989
+ } else a.includes("to ") && (n = {
2990
+ "to right": 90,
2991
+ "to left": 270,
2992
+ "to bottom": 180,
2993
+ "to top": 0,
2994
+ "to bottom right": 135,
2995
+ "to bottom left": 225,
2996
+ "to top right": 45,
2997
+ "to top left": 315
2998
+ }[a] ?? 90, o = s.slice(1));
2999
+ const l = at(o);
3000
+ return l.length ? A({ type: "linear", angle: n, stops: l }) : null;
3001
+ }
3002
+ const i = ot(t, "radial-gradient");
3003
+ if (i) {
3004
+ const s = nt(i), n = s[0] && !Jt(s[0]) ? s.slice(1) : s, o = at(n);
3005
+ return o.length ? A({ type: "radial", angle: 0, stops: o }) : null;
3006
+ }
3007
+ return null;
3008
+ }, H = (r) => {
3009
+ if (r.type === "solid") {
3010
+ const e = r.stops[0], i = e.opacity ?? 100, s = e.color.replace("#", ""), n = Math.round(i / 100 * 255).toString(16).toUpperCase().padStart(2, "0");
3011
+ return `#${s}${n}`;
3012
+ }
3013
+ const t = r.stops.map(
3014
+ (e) => `${ct(e.color, e.opacity ?? 100)} ${e.position}%`
3015
+ ).join(", ");
3016
+ return r.type === "radial" ? `radial-gradient(circle, ${t})` : `linear-gradient(${r.angle}deg, ${t})`;
3017
+ }, K = (r) => {
3018
+ if (r.type === "solid") {
3019
+ const t = r.stops[0];
3020
+ return t ? t.color.replace("#", "").toUpperCase() : "Color";
3021
+ }
3022
+ return r.type === "linear" ? `Linear ${r.angle}°` : "Radial Gradient";
3023
+ };
3024
+ class Ce extends y {
2623
3025
  constructor(t = {}) {
3026
+ const e = typeof t.default == "string" ? void 0 : t.default;
2624
3027
  super({
2625
3028
  ...t,
2626
3029
  title: t.title || "Gradient",
2627
- default: t.default || {
2628
- type: "linear",
2629
- angle: 90,
2630
- stops: [
2631
- { color: "#a84b4b", position: 0, opacity: 100 },
2632
- { color: "#786666", position: 100, opacity: 100 }
2633
- ]
2634
- }
3030
+ default: e
2635
3031
  }), this.inputType = {
2636
3032
  type: "text",
2637
3033
  angle: "number",
2638
3034
  stops: "text"
2639
- }, this.element = null, this.previewElement = null, this.textInputElement = null, this.popoverElement = null, this.placeholderTrigger = null, this.isPopoverOpen = !1, this.isUserEditing = !1, this.handleBackgroundClick = (e) => {
2640
- var l;
2641
- if (!this.popoverElement || !this.isPopoverOpen) return;
2642
- const i = e.target, s = this.popoverElement.contains(i), n = (l = this.element) == null ? void 0 : l.contains(i), o = document.querySelectorAll(".custom-color-picker"), a = Array.from(o).some(
2643
- (r) => r.contains(i)
2644
- );
2645
- !s && !n && !a && this.closePopover();
2646
- }, this.detectChange = t.detectChange, this.forText = t.forText || !1;
2647
- }
2648
- setValue(t) {
2649
- t ? (this.value = t, this.value.stops && this.value.stops.forEach((e) => {
2650
- e.opacity === void 0 && (e.opacity = 100);
2651
- })) : this.value = {
3035
+ }, this.element = null, this.previewEl = null, this.inputEl = void 0, this.popoverEl = null, this.isPopoverOpen = !1, this.isEditing = !1, this.onBackgroundClick = (i) => {
3036
+ var d;
3037
+ if (!this.popoverEl || !this.isPopoverOpen) return;
3038
+ const s = i.target, n = this.popoverEl.contains(s), o = (d = this.element) == null ? void 0 : d.contains(s), a = document.querySelectorAll(".custom-color-picker"), l = Array.from(a).some((p) => p.contains(s)), c = s.closest(
3039
+ ".gstop-color-input, .gradient-mini-preview, .gstop-color-preview"
3040
+ ), h = s.classList.contains("color-picker-backdrop");
3041
+ !n && !o && !l && !c && !h && this.closePopover();
3042
+ }, this.detectChange = t.detectChange, this.forText = t.forText || !1, this.originalDefault = t.default, this.value = this.defaultValue();
3043
+ }
3044
+ defaultValue() {
3045
+ const t = this.originalDefault;
3046
+ if (typeof t == "string") {
3047
+ const i = Y(t);
3048
+ if (i)
3049
+ return A(i);
3050
+ }
3051
+ return A(t && typeof t == "object" ? t : {
2652
3052
  type: "linear",
2653
3053
  angle: 90,
2654
3054
  stops: [
2655
3055
  { color: "#a84b4b", position: 0, opacity: 100 },
2656
3056
  { color: "#786666", position: 100, opacity: 100 }
2657
3057
  ]
2658
- }, this.updateUI(), this.isPopoverOpen && this.refreshPopoverContent(), this.onChange && this.onChange(this.value), this.detectChange && this.detectChange(this.value);
3058
+ });
3059
+ }
3060
+ setValue(t) {
3061
+ var i, s;
3062
+ let e = null;
3063
+ typeof t == "string" ? e = Y(t) : t && typeof t == "object" && (e = A(t)), e || (e = this.defaultValue()), this.value = e, this.updateUI(), this.isPopoverOpen && this.refreshPopoverContent(), (i = this.onChange) == null || i.call(this, this.value), (s = this.detectChange) == null || s.call(this, this.value);
2659
3064
  }
2660
3065
  updateUI() {
2661
- if (this.previewElement && this.value)
3066
+ if (this.previewEl && this.value)
2662
3067
  if (this.value.type === "solid") {
2663
- const t = this.value.stops && this.value.stops.length > 0 ? this.value.stops[0] : null;
2664
- if (t) {
2665
- const e = t.opacity !== void 0 ? t.opacity : 100;
2666
- this.previewElement.style.background = this.addOpacityToColor(
2667
- t.color,
2668
- e
2669
- );
2670
- }
3068
+ const t = this.value.stops[0], e = t.opacity ?? 100;
3069
+ this.previewEl.style.background = ct(t.color, e);
2671
3070
  } else
2672
- this.previewElement.style.background = this.generateCSS(this.value);
2673
- this.textInputElement && this.value && !this.isUserEditing && (this.textInputElement.value = this.generateDisplayText(this.value));
2674
- }
2675
- generateDisplayText(t) {
2676
- if (!t) return "";
2677
- if (t.type === "solid") {
2678
- const i = t.stops && t.stops.length > 0 ? t.stops[0] : null;
2679
- return i ? i.color.replace("#", "").toUpperCase() : "Color";
2680
- }
2681
- t.stops && t.stops.length;
2682
- const e = t.type === "linear" ? "Linear" : "Radial";
2683
- return t.type === "linear" ? `${e} ${t.angle}°` : `${e} Gradient`;
3071
+ this.previewEl.style.background = H(this.value);
3072
+ this.inputEl && this.value && !this.isEditing && (this.inputEl.value = K(this.value));
3073
+ }
3074
+ cssForTextValue() {
3075
+ return this.value ? {
3076
+ background: H(this.value),
3077
+ "-webkit-background-clip": "text",
3078
+ "background-clip": "text",
3079
+ color: "transparent",
3080
+ "-webkit-text-fill-color": "transparent"
3081
+ } : {};
2684
3082
  }
2685
3083
  draw() {
2686
3084
  const t = document.createElement("div");
2687
3085
  if (t.className = "gradient-setting-wrapper", this.props.title) {
2688
- const s = document.createElement("div");
2689
- s.className = "icon-container";
2690
- const n = document.createElement("span");
2691
- n.className = "input-label", n.textContent = this.props.title, s.appendChild(n), t.appendChild(s);
3086
+ const i = document.createElement("div");
3087
+ i.className = "icon-container";
3088
+ const s = document.createElement("span");
3089
+ s.className = "input-label", s.textContent = this.props.title, i.appendChild(s), t.appendChild(i);
2692
3090
  }
2693
3091
  const e = document.createElement("div");
2694
- e.className = "gradient-input-wrapper", this.previewElement = document.createElement("div"), this.previewElement.className = "gradient-mini-preview", this.previewElement.style.background = this.value ? this.generateCSS(this.value) : "linear-gradient(90deg, #a84b4b 0%, #786666 100%)", this.textInputElement = document.createElement("input"), this.textInputElement.type = "text", this.textInputElement.className = "gradient-text-input", this.textInputElement.placeholder = "Enter gradient CSS or paste color...", this.textInputElement.value = this.value ? this.generateDisplayText(this.value) : "", this.textInputElement.readOnly = !1, this.previewElement.addEventListener("click", () => this.openPopover()), this.textInputElement.addEventListener("focus", () => {
2695
- this.isUserEditing = !0, this.value && (this.textInputElement.value = this.generateCSS(this.value));
2696
- }), this.textInputElement.addEventListener("blur", () => {
2697
- this.isUserEditing = !1, this.value && (this.textInputElement.value = this.generateDisplayText(this.value)), this.placeholderTrigger && (this.placeholderTrigger.style.display = this.textInputElement.value ? "none" : "flex");
2698
- }), this.textInputElement.addEventListener(
3092
+ return e.className = "gradient-input-wrapper", this.previewEl = document.createElement("div"), this.previewEl.className = "gradient-mini-preview", this.previewEl.style.background = this.value ? H(this.value) : "linear-gradient(90deg, #a84b4b 0%, #786666 100%)", this.previewEl.addEventListener("mousedown", (i) => {
3093
+ i.preventDefault(), i.stopPropagation(), this.openPopover();
3094
+ }), this.inputEl = document.createElement("input"), this.inputEl.type = "text", this.inputEl.className = "gradient-text-input", this.inputEl.placeholder = "Enter gradient CSS or paste color...", this.inputEl.value = this.value ? K(this.value) : "", this.inputEl.readOnly = !1, this.inputEl.addEventListener("focus", () => {
3095
+ this.isEditing = !0, this.value && (this.inputEl.value = H(this.value));
3096
+ }), this.inputEl.addEventListener("blur", () => {
3097
+ this.isEditing = !1, this.value && (this.inputEl.value = K(this.value));
3098
+ }), this.inputEl.addEventListener(
2699
3099
  "paste",
2700
- (s) => this.handlePaste(s)
2701
- ), this.textInputElement.addEventListener(
2702
- "input",
2703
- (s) => this.handleInput(s)
2704
- ), this.textInputElement.addEventListener("keydown", (s) => {
2705
- s.key === "Enter" && (this.handleInput(s), this.textInputElement.blur()), s.key === "Escape" && (this.value && (this.textInputElement.value = this.generateCSS(this.value)), this.textInputElement.blur());
2706
- });
2707
- const i = document.createElement("div");
2708
- return i.className = "gradient-input-placeholder-trigger", i.textContent = this.textInputElement.placeholder || "", i.style.display = this.textInputElement.value ? "none" : "flex", i.addEventListener("click", (s) => {
2709
- s.stopPropagation(), this.openPopover();
2710
- }), e.appendChild(this.previewElement), e.appendChild(this.textInputElement), e.appendChild(i), this.placeholderTrigger = i, t.appendChild(e), this.createPopover(), this.element = t, t;
2711
- }
2712
- generateCSS(t) {
2713
- if (!t) return "linear-gradient(90deg, #a84b4b 0%, #786666 100%)";
2714
- if (t.type === "solid") {
2715
- const i = t.stops && t.stops.length > 0 ? t.stops[0] : null;
2716
- if (!i) return "#000000";
2717
- const s = i.opacity !== void 0 ? i.opacity : 100, n = Math.round(s / 100 * 255).toString(16).toUpperCase().padStart(2, "0");
2718
- return `#${i.color.replace("#", "")}${n}`;
2719
- }
2720
- const e = t.stops.map((i) => {
2721
- const s = i.opacity !== void 0 ? i.opacity : 100;
2722
- return `${this.addOpacityToColor(i.color, s)} ${i.position}%`;
2723
- }).join(", ");
2724
- return t.type === "radial" ? `radial-gradient(circle, ${e})` : `linear-gradient(${t.angle}deg, ${e})`;
2725
- }
2726
- addOpacityToColor(t, e) {
2727
- const i = e / 100;
2728
- if (t.startsWith("#")) {
2729
- const s = t.slice(1), n = parseInt(s.substr(0, 2), 16), o = parseInt(s.substr(2, 2), 16), a = parseInt(s.substr(4, 2), 16);
2730
- return `rgba(${n}, ${o}, ${a}, ${i})`;
2731
- }
2732
- if (t.startsWith("rgb("))
2733
- return t.replace("rgb(", "rgba(").replace(")", `, ${i})`);
2734
- if (t.startsWith("rgba("))
2735
- return t.replace(/,\s*[\d.]+\)$/, `, ${i})`);
2736
- if (t.startsWith("hsl(")) {
2737
- const s = t.match(/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/);
2738
- if (s) {
2739
- const n = parseInt(s[1]), o = parseInt(s[2]) / 100, a = parseInt(s[3]) / 100, { r: l, g: r, b: c } = this.hslToRgb(n, o, a);
2740
- return `rgba(${l}, ${r}, ${c}, ${i})`;
2741
- }
2742
- }
2743
- if (t.startsWith("hsla(")) {
2744
- const s = t.match(
2745
- /hsla\((\d+),\s*(\d+)%,\s*(\d+)%,\s*[\d.]+\)/
2746
- );
2747
- if (s) {
2748
- const n = parseInt(s[1]), o = parseInt(s[2]) / 100, a = parseInt(s[3]) / 100, { r: l, g: r, b: c } = this.hslToRgb(n, o, a);
2749
- return `rgba(${l}, ${r}, ${c}, ${i})`;
2750
- }
2751
- }
2752
- try {
2753
- const s = t.replace("#", "");
2754
- if (/^[0-9A-Fa-f]{6}$/.test(s)) {
2755
- const n = parseInt(s.substr(0, 2), 16), o = parseInt(s.substr(2, 2), 16), a = parseInt(s.substr(4, 2), 16);
2756
- return `rgba(${n}, ${o}, ${a}, ${i})`;
2757
- }
2758
- } catch {
2759
- }
2760
- return t;
2761
- }
2762
- hexToRgb(t) {
2763
- const e = t.replace("#", ""), i = e.length === 3 ? e.split("").map((a) => a + a).join("") : e, s = parseInt(i.slice(0, 2), 16), n = parseInt(i.slice(2, 4), 16), o = parseInt(i.slice(4, 6), 16);
2764
- return { r: s, g: n, b: o };
3100
+ (i) => this.handlePaste(i)
3101
+ ), this.inputEl.addEventListener("input", (i) => this.handleTextInput(i)), this.inputEl.addEventListener("keydown", (i) => {
3102
+ i.key === "Enter" && (this.handleTextInput(i), this.inputEl.blur()), i.key === "Escape" && (this.value && (this.inputEl.value = H(this.value)), this.inputEl.blur());
3103
+ }), e.appendChild(this.previewEl), e.appendChild(this.inputEl), t.appendChild(e), this.createPopover(), this.element = t, t;
2765
3104
  }
2766
3105
  createPopover() {
2767
- if (this.popoverElement) return;
2768
- this.popoverElement = document.createElement("div"), this.popoverElement.className = "gradient-popover", this.popoverElement.style.display = "none";
3106
+ if (this.popoverEl) return;
3107
+ this.popoverEl = document.createElement("div"), this.popoverEl.className = "gradient-popover", this.popoverEl.style.display = "none";
2769
3108
  const t = document.createElement("div");
2770
3109
  t.className = "gradient-popover-header";
2771
3110
  const e = document.createElement("span");
2772
3111
  e.textContent = "Fill";
2773
3112
  const i = document.createElement("button");
2774
- i.type = "button", i.className = "gradient-popover-close", i.innerHTML = ut, i.addEventListener("click", () => this.closePopover()), t.appendChild(e), t.appendChild(i);
3113
+ i.type = "button", i.className = "gradient-popover-close", i.innerHTML = pt, i.addEventListener("click", () => this.closePopover()), t.appendChild(e), t.appendChild(i);
2775
3114
  const s = document.createElement("div");
2776
3115
  s.className = "gradient-editor";
2777
3116
  const n = this.createTypeTabs();
2778
3117
  s.appendChild(n);
2779
3118
  const o = document.createElement("div");
2780
- o.className = "gradient-editor-content", this.updatePopoverContent(o), s.appendChild(o), this.popoverElement.appendChild(t), this.popoverElement.appendChild(s), document.body.appendChild(this.popoverElement);
3119
+ o.className = "gradient-editor-content", this.updatePopoverContent(o), s.appendChild(o), this.popoverEl.appendChild(t), this.popoverEl.appendChild(s), document.body.appendChild(this.popoverEl);
2781
3120
  }
2782
3121
  createTypeTabs() {
2783
3122
  var s, n;
@@ -2793,403 +3132,35 @@ class he extends T {
2793
3132
  }), t.appendChild(e), t.appendChild(i), t;
2794
3133
  }
2795
3134
  switchType(t) {
2796
- var n, o, a;
3135
+ var i;
2797
3136
  if (!this.value) return;
2798
- this.value.type = t, t !== "solid" && (!this.value.stops || this.value.stops.length === 0) && (this.value.stops = [
3137
+ if (this.value.type = t, t !== "solid" && (!this.value.stops || this.value.stops.length === 0) && (this.value.stops = [
2799
3138
  { color: "#a84b4b", position: 0, opacity: 100 },
2800
3139
  { color: "#786666", position: 100, opacity: 100 }
2801
- ]);
2802
- const e = (n = this.popoverElement) == null ? void 0 : n.querySelectorAll(".gradient-type-tab");
2803
- e == null || e.forEach((l, r) => {
2804
- l.classList.remove("active"), (r === 0 && t === "solid" || r === 1 && t !== "solid") && l.classList.add("active");
2805
- });
2806
- const i = (o = this.popoverElement) == null ? void 0 : o.querySelectorAll(
2807
- ".gradient-subtype-tab"
2808
- );
2809
- i == null || i.forEach((l, r) => {
2810
- l.classList.remove("active"), (r === 0 && t === "linear" || r === 1 && t === "radial") && l.classList.add("active");
2811
- });
2812
- const s = (a = this.popoverElement) == null ? void 0 : a.querySelector(
2813
- ".gradient-editor-content"
2814
- );
2815
- s && this.updatePopoverContent(s), this.updateUI(), this.triggerChange();
3140
+ ]), this.popoverEl) {
3141
+ const s = this.popoverEl.querySelectorAll(".gradient-type-tab");
3142
+ s.forEach((a) => a.classList.remove("active"));
3143
+ const n = s[0], o = s[1];
3144
+ t === "solid" ? n == null || n.classList.add("active") : o == null || o.classList.add("active");
3145
+ }
3146
+ const e = (i = this.popoverEl) == null ? void 0 : i.querySelector(".gradient-editor-content");
3147
+ e && this.updatePopoverContent(e), this.updateUI(), this.triggerChange();
2816
3148
  }
2817
3149
  updatePopoverContent(t) {
2818
- t.innerHTML = "", this.value && (this.value.type === "solid" ? this.createSolidEditor(t) : this.createGradientEditor(t));
2819
- }
2820
- createSolidEditor(t) {
2821
- const e = document.createElement("div");
2822
- if (e.className = "gradient-solid-picker", !this.value) return;
2823
- (!this.value.stops || this.value.stops.length === 0) && (this.value.stops = [{ color: "#000000", position: 0, opacity: 100 }]);
2824
- let i = this.value.stops[0].color || "#000000", s = this.value.stops[0].opacity !== void 0 ? this.value.stops[0].opacity : 100;
2825
- const n = () => {
2826
- this.value && (!this.value.stops || this.value.stops.length === 0) && (this.value.stops = [{ color: i, position: 0, opacity: s }]);
2827
- }, o = document.createElement("div");
2828
- o.className = "gstop-row solid-row";
2829
- const a = document.createElement("div");
2830
- a.className = "gstop-color-container";
2831
- const l = document.createElement("div");
2832
- l.className = "gstop-color-preview", l.style.backgroundColor = i;
2833
- const r = document.createElement("input");
2834
- r.type = "text", r.className = "gstop-color-input", r.value = i.toUpperCase(), r.placeholder = "#000000";
2835
- const c = document.createElement("button");
2836
- c.type = "button", c.className = "gstop-color-copy", c.innerHTML = `<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
2837
- <path d="M14.5896 19.3033L13.4111 20.4818C11.7839 22.109 9.14575 22.109 7.51856 20.4818C5.89138 18.8546 5.89138 16.2164 7.51856 14.5892L8.69708 13.4107M19.3037 14.5892L20.4822 13.4107C22.1094 11.7835 22.1094 9.14535 20.4822 7.51816C18.855 5.89098 16.2168 5.89098 14.5896 7.51816L13.4111 8.69668M11.0837 16.9166L16.917 11.0833" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
2838
- </svg>`, a.appendChild(l), a.appendChild(r), a.appendChild(c), o.appendChild(a), e.appendChild(o);
2839
- const h = document.createElement("div");
2840
- h.className = "gstop-opacity-row";
2841
- const d = document.createElement("span");
2842
- d.className = "gstop-opacity-label", d.textContent = "Opacity";
2843
- const C = document.createElement("div");
2844
- C.className = "gstop-opacity-group";
2845
- const u = document.createElement("input");
2846
- u.type = "range", u.className = "gstop-opacity-slider", u.min = "0", u.max = "100", u.value = s.toString();
2847
- const f = (y) => {
2848
- const E = this.hexToRgb(y);
2849
- u.style.setProperty(
2850
- "--slider-color",
2851
- `rgb(${E.r}, ${E.g}, ${E.b})`
2852
- );
2853
- };
2854
- f(i);
2855
- const v = document.createElement("span");
2856
- v.className = "gstop-opacity-value", v.textContent = `${s}%`, C.appendChild(u), C.appendChild(v), h.appendChild(d), h.appendChild(C), e.appendChild(h), t.appendChild(e);
2857
- const b = (y, E) => {
2858
- i = y, s = Math.round(E), n(), r.value = y.toUpperCase(), l.style.backgroundColor = y, u.value = s.toString(), v.textContent = `${s}%`, f(y), this.value && this.value.stops && this.value.stops[0] && (this.value.stops[0].color = y, this.value.stops[0].opacity = s), this.updateUI(), this.triggerChange();
2859
- };
2860
- let m = null;
2861
- const L = new ht(
2862
- (y, E) => {
2863
- m = null, b(y, E ?? s);
2864
- },
2865
- "solid"
2866
- );
2867
- c.addEventListener("click", async (y) => {
2868
- y.stopPropagation();
2869
- const E = r.value.startsWith("#") ? r.value : `#${r.value}`;
2870
- try {
2871
- await navigator.clipboard.writeText(E);
2872
- const O = c.innerHTML;
2873
- c.innerHTML = `<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
2874
- <path d="M9.3335 14L12.2502 16.9167L18.6668 10.5" stroke="#00A76F" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
2875
- </svg>`, setTimeout(() => {
2876
- c.innerHTML = O;
2877
- }, 1e3);
2878
- } catch (O) {
2879
- console.warn("Failed to copy color to clipboard:", O);
3150
+ t.innerHTML = "", this.value && (this.value.type === "solid" ? this.renderSolid(t) : this.renderGradient(t));
3151
+ }
3152
+ renderSolid(t) {
3153
+ (!this.value || !this.value.stops || !this.value.stops.length) && (this.value || (this.value = this.defaultValue()), this.value.stops = [{ color: "#000000", position: 0, opacity: 100 }]);
3154
+ const e = this.value.stops[0], i = new _t({
3155
+ initialColor: e.color,
3156
+ initialOpacity: e.opacity ?? 100,
3157
+ onColorChange: (s, n) => {
3158
+ this.value && (this.value.stops[0].color = s, this.value.stops[0].opacity = n, this.updateUI(), this.triggerChange());
2880
3159
  }
2881
3160
  });
2882
- const M = () => {
2883
- m && (J.addColor(m, "solid"), m = null);
2884
- };
2885
- r.addEventListener("click", (y) => {
2886
- y.stopPropagation(), L.open(i, r, s);
2887
- }), r.addEventListener("input", (y) => {
2888
- const E = y.target.value.trim(), O = E.startsWith("#") ? E : `#${E}`;
2889
- /^#[0-9A-Fa-f]{6}$/.test(O) && (m = O, b(O, s));
2890
- }), r.addEventListener("blur", M), r.addEventListener("keydown", (y) => {
2891
- y.key === "Enter" && (y.preventDefault(), M(), r.blur());
2892
- }), u.addEventListener("input", (y) => {
2893
- const E = parseInt(y.target.value, 10);
2894
- isNaN(E) || (s = Math.max(0, Math.min(100, E)), v.textContent = `${s}%`, n(), this.value && this.value.stops && this.value.stops[0] && (this.value.stops[0].opacity = s), this.updateUI(), this.triggerChange());
2895
- });
2896
- }
2897
- createEmbeddedColorPickerWithOpacity(t, e, i) {
2898
- const s = document.createElement("div");
2899
- s.className = "embedded-color-picker-content";
2900
- const n = document.createElement("div");
2901
- n.className = "color-picker-area embedded";
2902
- const o = document.createElement("div");
2903
- o.className = "color-picker-marker", n.appendChild(o);
2904
- const a = document.createElement("div");
2905
- a.className = "color-picker-hue-container";
2906
- const l = document.createElement("button");
2907
- l.className = "color-picker-eyedropper", l.type = "button", l.innerHTML = `<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2908
- <path fill-rule="evenodd" clip-rule="evenodd" d="M19.1972 3.29156C18.936 3.03034 18.6259 2.82313 18.2847 2.68176C17.9434 2.54039 17.5777 2.46763 17.2083 2.46763C16.8389 2.46763 16.4731 2.54039 16.1319 2.68176C15.7906 2.82313 15.4805 3.03034 15.2194 3.29156L13.7822 4.72875C13.2585 4.4772 12.6697 4.39449 12.097 4.49207C11.5243 4.58964 10.9961 4.86267 10.5853 5.27343L9.91687 5.94281C9.74268 6.11693 9.6045 6.32366 9.51023 6.5512C9.41595 6.77873 9.36743 7.02261 9.36743 7.2689C9.36743 7.5152 9.41595 7.75907 9.51023 7.98661C9.6045 8.21414 9.74268 8.42088 9.91687 8.595L3.83625 14.6747C3.57512 14.936 3.36803 15.2462 3.2268 15.5875C3.08556 15.9288 3.01296 16.2947 3.01312 16.6641V18.3516C3.01312 18.6499 3.13165 18.9361 3.34263 19.1471C3.55361 19.358 3.83975 19.4766 4.13812 19.4766H5.82562C6.57129 19.4759 7.28618 19.1792 7.81312 18.6516L13.8937 12.5728C14.0679 12.747 14.2746 12.8852 14.5021 12.9795C14.7297 13.0737 14.9735 13.1223 15.2198 13.1223C15.4661 13.1223 15.71 13.0737 15.9375 12.9795C16.1651 12.8852 16.3718 12.747 16.5459 12.5728L17.2153 11.9025C17.6261 11.4917 17.8991 10.9635 17.9967 10.3908C18.0942 9.81811 18.0115 9.22926 17.76 8.70562L19.1972 7.26937C19.4584 7.0082 19.6656 6.69813 19.807 6.35687C19.9484 6.01561 20.0211 5.64985 20.0211 5.28047C20.0211 4.91108 19.9484 4.54532 19.807 4.20406C19.6656 3.8628 19.4584 3.55273 19.1972 3.29156ZM5.16281 16.0012L11.2425 9.92062L12.5681 11.2462L6.48844 17.3269C6.31266 17.5027 6.07424 17.6015 5.82562 17.6016H4.88812V16.6641C4.88818 16.4154 4.98698 16.177 5.16281 16.0012Z" fill="#353C47"/>
2909
- </svg>`;
2910
- const r = document.createElement("div");
2911
- r.className = "color-picker-hue embedded";
2912
- const c = document.createElement("div");
2913
- c.className = "color-picker-hue-marker", r.appendChild(c), a.appendChild(l), a.appendChild(r);
2914
- const h = document.createElement("div");
2915
- h.className = "color-picker-opacity embedded";
2916
- const d = document.createElement("div");
2917
- d.className = "color-picker-opacity-marker", h.appendChild(d);
2918
- const C = document.createElement("div");
2919
- C.className = "color-picker-format-section embedded";
2920
- const u = document.createElement("select");
2921
- u.className = "color-picker-format-select";
2922
- const f = document.createElement("option");
2923
- f.value = "hex", f.textContent = "HEX";
2924
- const v = document.createElement("option");
2925
- v.value = "rgb", v.textContent = "RGB";
2926
- const b = document.createElement("option");
2927
- b.value = "hsl", b.textContent = "HSL", u.appendChild(f), u.appendChild(v), u.appendChild(b);
2928
- const m = document.createElement("input");
2929
- m.type = "text", m.className = "color-picker-color-input", m.value = t;
2930
- const L = document.createElement("div");
2931
- L.className = "color-picker-input-container";
2932
- const M = document.createElement("button");
2933
- M.className = "color-picker-copy-inside", M.textContent = "Copy", L.appendChild(m), L.appendChild(M), C.appendChild(u), C.appendChild(L), s.appendChild(n), s.appendChild(a), s.appendChild(h);
2934
- let y, E;
2935
- const O = this.setupEmbeddedColorPicker(
2936
- n,
2937
- o,
2938
- r,
2939
- c,
2940
- u,
2941
- m,
2942
- M,
2943
- l,
2944
- t,
2945
- e,
2946
- i,
2947
- {
2948
- onColorChanged: () => {
2949
- E == null || E();
2950
- },
2951
- onColorApplied: () => {
2952
- y == null || y(), E == null || E();
2953
- }
2954
- },
2955
- "solid"
2956
- ), q = lt(
2957
- (w) => {
2958
- O.applyColor(w);
2959
- },
2960
- "solid"
2961
- );
2962
- y = () => q.refresh(), s.appendChild(q.container), s.appendChild(C);
2963
- const S = this.setupOpacitySlider(
2964
- h,
2965
- d,
2966
- O
2967
- );
2968
- return E = () => S.refresh(), s;
2969
- }
2970
- createEmbeddedColorPicker(t, e, i) {
2971
- const s = document.createElement("div");
2972
- s.className = "embedded-color-picker-content";
2973
- const n = document.createElement("div");
2974
- n.className = "color-picker-area embedded";
2975
- const o = document.createElement("div");
2976
- o.className = "color-picker-marker", n.appendChild(o);
2977
- const a = document.createElement("div");
2978
- a.className = "color-picker-hue-container";
2979
- const l = document.createElement("button");
2980
- l.className = "color-picker-eyedropper", l.type = "button", l.innerHTML = `<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
2981
- <path fill-rule="evenodd" clip-rule="evenodd" d="M19.1972 3.29156C18.936 3.03034 18.6259 2.82313 18.2847 2.68176C17.9434 2.54039 17.5777 2.46763 17.2083 2.46763C16.8389 2.46763 16.4731 2.54039 16.1319 2.68176C15.7906 2.82313 15.4805 3.03034 15.2194 3.29156L13.7822 4.72875C13.2585 4.4772 12.6697 4.39449 12.097 4.49207C11.5243 4.58964 10.9961 4.86267 10.5853 5.27343L9.91687 5.94281C9.74268 6.11693 9.6045 6.32366 9.51023 6.5512C9.41595 6.77873 9.36743 7.02261 9.36743 7.2689C9.36743 7.5152 9.41595 7.75907 9.51023 7.98661C9.6045 8.21414 9.74268 8.42088 9.91687 8.595L3.83625 14.6747C3.57512 14.936 3.36803 15.2462 3.2268 15.5875C3.08556 15.9288 3.01296 16.2947 3.01312 16.6641V18.3516C3.01312 18.6499 3.13165 18.9361 3.34263 19.1471C3.55361 19.358 3.83975 19.4766 4.13812 19.4766H5.82562C6.57129 19.4759 7.28618 19.1792 7.81312 18.6516L13.8937 12.5728C14.0679 12.747 14.2746 12.8852 14.5021 12.9795C14.7297 13.0737 14.9735 13.1223 15.2198 13.1223C15.4661 13.1223 15.71 13.0737 15.9375 12.9795C16.1651 12.8852 16.3718 12.747 16.5459 12.5728L17.2153 11.9025C17.6261 11.4917 17.8991 10.9635 17.9967 10.3908C18.0942 9.81811 18.0115 9.22926 17.76 8.70562L19.1972 7.26937C19.4584 7.0082 19.6656 6.69813 19.807 6.35687C19.9484 6.01561 20.0211 5.64985 20.0211 5.28047C20.0211 4.91108 19.9484 4.54532 19.807 4.20406C19.6656 3.8628 19.4584 3.55273 19.1972 3.29156ZM5.16281 16.0012L11.2425 9.92062L12.5681 11.2462L6.48844 17.3269C6.31266 17.5027 6.07424 17.6015 5.82562 17.6016H4.88812V16.6641C4.88818 16.4154 4.98698 16.177 5.16281 16.0012Z" fill="#353C47"/>
2982
- </svg>`;
2983
- const r = document.createElement("div");
2984
- r.className = "color-picker-hue embedded";
2985
- const c = document.createElement("div");
2986
- c.className = "color-picker-hue-marker", r.appendChild(c), a.appendChild(l), a.appendChild(r);
2987
- const h = document.createElement("div");
2988
- h.className = "color-picker-format-section embedded";
2989
- const d = document.createElement("select");
2990
- d.className = "color-picker-format-select";
2991
- const C = document.createElement("option");
2992
- C.value = "hex", C.textContent = "HEX";
2993
- const u = document.createElement("option");
2994
- u.value = "rgb", u.textContent = "RGB";
2995
- const f = document.createElement("option");
2996
- f.value = "hsl", f.textContent = "HSL", d.appendChild(C), d.appendChild(u), d.appendChild(f);
2997
- const v = document.createElement("input");
2998
- v.type = "text", v.className = "color-picker-color-input", v.value = t;
2999
- const b = document.createElement("div");
3000
- b.className = "color-picker-input-container";
3001
- const m = document.createElement("button");
3002
- m.className = "color-picker-copy-inside", m.textContent = "Copy", b.appendChild(v), b.appendChild(m), h.appendChild(d), h.appendChild(b), s.appendChild(n), s.appendChild(a);
3003
- let L;
3004
- const M = this.setupEmbeddedColorPicker(
3005
- n,
3006
- o,
3007
- r,
3008
- c,
3009
- d,
3010
- v,
3011
- m,
3012
- l,
3013
- t,
3014
- e,
3015
- i,
3016
- {
3017
- onColorApplied: () => {
3018
- L == null || L();
3019
- }
3020
- },
3021
- "gradient"
3022
- ), y = lt(
3023
- (E) => {
3024
- M.applyColor(E);
3025
- },
3026
- "gradient"
3027
- );
3028
- return L = () => y.refresh(), s.appendChild(y.container), s.appendChild(h), s;
3029
- }
3030
- setupEmbeddedColorPicker(t, e, i, s, n, o, a, l, r, c, h, d, C = "gradient") {
3031
- let u = r;
3032
- const { h: f, s: v, v: b } = this.hexToHsv(r);
3033
- let m = c;
3034
- s.style.left = `${f / 360 * 100}%`, e.style.left = `${v * 100}%`, e.style.top = `${(1 - b) * 100}%`, t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${f}, 100%, 50%))`;
3035
- const L = () => {
3036
- var g;
3037
- (g = d == null ? void 0 : d.onColorChanged) == null || g.call(d);
3038
- }, M = () => {
3039
- var g;
3040
- J.addColor(u, C), (g = d == null ? void 0 : d.onColorApplied) == null || g.call(d);
3041
- }, y = (g, x = m) => {
3042
- u = g, m = Math.round(x), E(), h(g, m), L();
3043
- }, E = () => {
3044
- const g = n.value, { h: x, s: k, v: I } = this.hexToHsv(u);
3045
- switch (g) {
3046
- case "hex":
3047
- o.value = u;
3048
- break;
3049
- case "rgb":
3050
- const { r: $, g: F, b: _ } = this.hexToRgb(u);
3051
- o.value = `rgb(${$}, ${F}, ${_})`;
3052
- break;
3053
- case "hsl":
3054
- const { hue: G, sat: Z, lightness: st } = this.hsvToHsl(x, k, I);
3055
- o.value = `hsl(${Math.round(G)}, ${Math.round(
3056
- Z * 100
3057
- )}%, ${Math.round(st * 100)}%)`;
3058
- break;
3059
- }
3060
- }, O = (g) => {
3061
- if (!/^#[0-9A-Fa-f]{6}$/.test(g))
3062
- return;
3063
- const { h: x, s: k, v: I } = this.hexToHsv(g);
3064
- s.style.left = `${x / 360 * 100}%`, e.style.left = `${k * 100}%`, e.style.top = `${(1 - I) * 100}%`, t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${x}, 100%, 50%))`, y(g, m);
3065
- }, q = () => parseFloat(s.style.left || "0%") / 100 * 360, S = (g, x) => {
3066
- const k = q(), I = this.hsvToHex(k, g, x);
3067
- y(I, m);
3068
- }, w = (g) => {
3069
- g = Math.max(0.1, Math.min(358.9, g));
3070
- const x = parseFloat(e.style.left || "50%") / 100, k = parseFloat(e.style.top || "50%") / 100;
3071
- t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${g}, 100%, 50%))`;
3072
- const I = x, $ = 1 - k, F = this.hsvToHex(g, I, $);
3073
- y(F, m);
3074
- }, N = (g) => {
3075
- const x = t.getBoundingClientRect(), k = Math.max(0, Math.min(1, (g.clientX - x.left) / x.width)), I = Math.max(0, Math.min(1, (g.clientY - x.top) / x.height));
3076
- e.style.left = `${k * 100}%`, e.style.top = `${I * 100}%`, S(k, 1 - I);
3077
- }, D = (g) => {
3078
- g.preventDefault(), g.stopPropagation(), N(g);
3079
- const x = (I) => N(I), k = () => {
3080
- document.removeEventListener("mousemove", x), document.removeEventListener("mouseup", k), M();
3081
- };
3082
- document.addEventListener("mousemove", x), document.addEventListener("mouseup", k);
3083
- }, A = (g) => {
3084
- const x = i.getBoundingClientRect();
3085
- let k = (g.clientX - x.left) / x.width;
3086
- k = Math.max(1e-3, Math.min(0.998, k)), s.style.left = `${k * 100}%`;
3087
- const I = k * 360;
3088
- w(I);
3089
- }, P = (g) => {
3090
- g.preventDefault(), g.stopPropagation(), A(g);
3091
- const x = (I) => A(I), k = () => {
3092
- document.removeEventListener("mousemove", x), document.removeEventListener("mouseup", k), M();
3093
- };
3094
- document.addEventListener("mousemove", x), document.addEventListener("mouseup", k);
3095
- }, V = (g) => {
3096
- const x = g.target.value, k = n.value;
3097
- let I = "";
3098
- if (k === "hex" && /^#[0-9A-Fa-f]{6}$/.test(x))
3099
- I = x;
3100
- else if (k === "rgb") {
3101
- const $ = x.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);
3102
- if ($) {
3103
- const F = parseInt($[1]), _ = parseInt($[2]), G = parseInt($[3]);
3104
- F <= 255 && _ <= 255 && G <= 255 && (I = `#${F.toString(16).padStart(2, "0")}${_.toString(16).padStart(2, "0")}${G.toString(16).padStart(2, "0")}`);
3105
- }
3106
- } else if (k === "hsl") {
3107
- const $ = x.match(/hsl\((\d+),\s*(\d+)%,\s*(\d+)%\)/);
3108
- if ($) {
3109
- const F = parseInt($[1]), _ = parseInt($[2]) / 100, G = parseInt($[3]) / 100;
3110
- if (F <= 360 && _ <= 1 && G <= 1) {
3111
- const Z = G + _ * Math.min(G, 1 - G), st = Z === 0 ? 0 : 2 * (1 - G / Z);
3112
- I = this.hsvToHex(F, st, Z);
3113
- }
3114
- }
3115
- }
3116
- I && O(I);
3117
- }, R = () => {
3118
- E(), M();
3119
- }, B = () => {
3120
- E();
3121
- }, gt = () => {
3122
- navigator.clipboard.writeText(o.value).catch(() => {
3123
- o.select(), document.execCommand("copy");
3124
- });
3125
- };
3126
- E(), t.addEventListener("mousedown", D), t.addEventListener("click", (g) => g.stopPropagation()), i.addEventListener("mousedown", P), i.addEventListener("click", (g) => g.stopPropagation()), n.addEventListener("change", B), o.addEventListener("input", V), o.addEventListener("blur", R), o.addEventListener("keydown", (g) => {
3127
- g.key === "Enter" && (g.preventDefault(), R(), o.blur());
3128
- }), a.addEventListener("click", gt);
3129
- const mt = async () => {
3130
- if ("EyeDropper" in window)
3131
- try {
3132
- const k = (await new window.EyeDropper().open()).sRGBHex, { h: I, s: $, v: F } = this.hexToHsv(k);
3133
- s.style.left = `${I / 360 * 100}%`, e.style.left = `${$ * 100}%`, e.style.top = `${(1 - F) * 100}%`, t.style.background = `linear-gradient(to top, #000, transparent), linear-gradient(to right, #fff, hsl(${I}, 100%, 50%))`, y(k, m), M();
3134
- } catch (g) {
3135
- console.log("User cancelled eyedropper or error occurred:", g);
3136
- }
3137
- else
3138
- alert(
3139
- "EyeDropper API is not supported in this browser. Try using Chrome 95+ or Edge 95+."
3140
- );
3141
- };
3142
- return l.addEventListener("click", mt), {
3143
- applyColor: (g) => {
3144
- O(g), M();
3145
- },
3146
- getCurrentColor: () => u,
3147
- getCurrentOpacity: () => m,
3148
- setOpacity: (g) => {
3149
- m = Math.max(0, Math.min(100, Math.round(g))), h(u, m), L();
3150
- }
3151
- };
3161
+ t.appendChild(i.getElement());
3152
3162
  }
3153
- hsvToHex(t, e, i) {
3154
- const s = i * e, n = s * (1 - Math.abs(t / 60 % 2 - 1)), o = i - s;
3155
- let a = 0, l = 0, r = 0;
3156
- return t >= 0 && t < 60 ? (a = s, l = n, r = 0) : t >= 60 && t < 120 ? (a = n, l = s, r = 0) : t >= 120 && t < 180 ? (a = 0, l = s, r = n) : t >= 180 && t < 240 ? (a = 0, l = n, r = s) : t >= 240 && t < 300 ? (a = n, l = 0, r = s) : t >= 300 && t < 360 && (a = s, l = 0, r = n), a = Math.round((a + o) * 255), l = Math.round((l + o) * 255), r = Math.round((r + o) * 255), `#${a.toString(16).padStart(2, "0")}${l.toString(16).padStart(2, "0")}${r.toString(16).padStart(2, "0")}`;
3157
- }
3158
- setupOpacitySlider(t, e, i) {
3159
- const s = () => {
3160
- const { r, g: c, b: h } = this.hexToRgb(i.getCurrentColor());
3161
- t.style.setProperty("--color-rgb", `${r}, ${c}, ${h}`);
3162
- }, n = () => {
3163
- e.style.left = `${i.getCurrentOpacity()}%`;
3164
- }, o = () => {
3165
- s(), n();
3166
- };
3167
- o();
3168
- let a = !1;
3169
- const l = (r) => {
3170
- const c = t.getBoundingClientRect(), h = r.clientX - c.left, d = Math.max(0, Math.min(100, h / c.width * 100)), C = Math.round(d);
3171
- i.setOpacity(C), n();
3172
- };
3173
- return t.addEventListener("mousedown", (r) => {
3174
- a = !0, l(r);
3175
- }), document.addEventListener("mousemove", (r) => {
3176
- a && l(r);
3177
- }), document.addEventListener("mouseup", () => {
3178
- a = !1;
3179
- }), { refresh: o };
3180
- }
3181
- hexToHsv(t) {
3182
- const e = parseInt(t.slice(1, 3), 16) / 255, i = parseInt(t.slice(3, 5), 16) / 255, s = parseInt(t.slice(5, 7), 16) / 255, n = Math.max(e, i, s), o = Math.min(e, i, s), a = n - o;
3183
- let l = 0;
3184
- const r = n === 0 ? 0 : a / n, c = n;
3185
- return a !== 0 && (n === e ? l = (i - s) / a % 6 : n === i ? l = (s - e) / a + 2 : l = (e - i) / a + 4), { h: l * 60, s: r, v: c };
3186
- }
3187
- hsvToHsl(t, e, i) {
3188
- const s = i * (1 - e / 2), n = s === 0 || s === 1 ? 0 : (i - s) / Math.min(s, 1 - s);
3189
- return { hue: t, sat: n, lightness: s };
3190
- }
3191
- createGradientEditor(t) {
3192
- if (!this.value) return;
3163
+ renderGradient(t) {
3193
3164
  const e = document.createElement("div");
3194
3165
  e.className = "gradient-subtype-inline";
3195
3166
  const i = document.createElement("select");
@@ -3199,246 +3170,172 @@ class he extends T {
3199
3170
  const n = document.createElement("option");
3200
3171
  n.value = "radial", n.textContent = "Radial", i.appendChild(s), i.appendChild(n), i.value = this.value.type === "radial" ? "radial" : "linear";
3201
3172
  const o = document.createElement("input");
3202
- o.type = "text", o.inputMode = "numeric", o.className = "gradient-degree-input";
3203
- const a = this.value.angle !== void 0 ? this.value.angle : 0;
3204
- o.value = `${a}°`, o.setAttribute("data-min", "0"), o.setAttribute("data-max", "360"), o.style.width = "75px", o.style.textAlign = "center";
3205
- const l = document.createElement("button");
3206
- l.type = "button", l.className = "gradient-flip-btn", l.innerHTML = `
3207
- <svg width="15" height="17" viewBox="0 0 15 17" fill="none" xmlns="http://www.w3.org/2000/svg">
3208
- <path d="M14.1333 12.4667H0.8M0.8 12.4667L4.13333 9.13332M0.8 12.4667L4.13333 15.8M0.8 4.13332H14.1333M14.1333 4.13332L10.8 0.799988M14.1333 4.13332L10.8 7.46665" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
3209
- </svg>
3210
- `, l.title = "Flip gradient", i.addEventListener("change", (v) => {
3211
- const b = v.target.value;
3212
- this.switchType(b === "radial" ? "radial" : "linear");
3213
- }), o.addEventListener("input", (v) => {
3214
- const b = v.target.value, m = parseInt(b);
3215
- if (this.value && !isNaN(m)) {
3216
- const L = Math.max(0, Math.min(360, m));
3217
- this.value.angle = L, this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3218
- }
3219
- }), o.addEventListener("focus", (v) => {
3220
- const b = v.target;
3221
- b.value = b.value.replace(/[^0-9-]/g, ""), setTimeout(() => b.select(), 0);
3222
- }), o.addEventListener("blur", (v) => {
3223
- var L;
3224
- const b = v.target;
3225
- let m = parseInt(b.value);
3226
- isNaN(m) && (m = ((L = this.value) == null ? void 0 : L.angle) ?? 0), m = Math.max(0, Math.min(360, m)), this.value && (this.value.angle = m), b.value = `${m}°`, this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3227
- }), l.addEventListener("click", () => {
3228
- this.value && (this.value.stops = this.value.stops.map((v) => ({
3229
- ...v,
3230
- position: 100 - v.position
3231
- })), this.updateGradientPreview(), this.updateStopsList(), this.updateUI(), this.triggerChange());
3232
- }), e.appendChild(i), e.appendChild(o), e.appendChild(l), t.appendChild(e), (() => {
3233
- var v;
3234
- ((v = this.value) == null ? void 0 : v.type) === "radial" ? (o.disabled = !0, o.style.opacity = "0.5") : (o.disabled = !1, o.style.opacity = "1");
3235
- })();
3173
+ o.type = "text", o.inputMode = "numeric", o.className = "gradient-degree-input", o.value = `${this.value.angle ?? 0}°`, o.style.width = "75px", o.style.textAlign = "center";
3174
+ const a = document.createElement("button");
3175
+ a.type = "button", a.className = "gradient-flip-btn", a.innerHTML = qt, i.addEventListener("change", () => {
3176
+ this.switchType(i.value === "radial" ? "radial" : "linear"), this.updateDegreeVisibility(o);
3177
+ }), o.addEventListener("focus", (u) => {
3178
+ const m = u.target;
3179
+ m.value = m.value.replace(/[^0-9-]/g, ""), setTimeout(() => m.select(), 0);
3180
+ }), o.addEventListener("input", (u) => {
3181
+ const m = parseInt(u.target.value);
3182
+ !Number.isNaN(m) && this.value && (this.value.angle = Math.max(0, Math.min(360, m)), this.updateGradientPreview(), this.updateUI(), this.triggerChange());
3183
+ }), o.addEventListener("blur", (u) => {
3184
+ var x;
3185
+ const m = u.target;
3186
+ let f = parseInt(m.value);
3187
+ Number.isNaN(f) && (f = ((x = this.value) == null ? void 0 : x.angle) ?? 0), f = Math.max(0, Math.min(360, f)), this.value && (this.value.angle = f), m.value = `${f}°`, this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3188
+ }), a.addEventListener("click", () => {
3189
+ !this.value || !this.value.stops || (this.value.stops.forEach((u) => {
3190
+ u.position = 100 - u.position;
3191
+ }), this.value.stops.sort((u, m) => u.position - m.position), this.updateGradientPreview(l), this.createHandles(c, l), this.updateStopsList(g), this.updateUI(), this.triggerChange());
3192
+ }), e.appendChild(i), e.appendChild(o), e.appendChild(a), t.appendChild(e), this.updateDegreeVisibility(o);
3193
+ const l = document.createElement("div");
3194
+ l.className = "gradient-preview", this.updateGradientPreview(l);
3236
3195
  const c = document.createElement("div");
3237
- c.className = "gradient-preview", this.updateGradientPreview(c);
3196
+ c.className = "gradient-handles", l.appendChild(c), t.appendChild(l), this.createHandles(c, l);
3238
3197
  const h = document.createElement("div");
3239
- h.className = "gradient-handles", this.createGradientHandles(h, c), c.appendChild(h), t.appendChild(c);
3240
- const d = document.createElement("div");
3241
- d.className = "gradient-stops-header";
3242
- const C = document.createElement("span");
3243
- C.textContent = "Stops";
3244
- const u = document.createElement("button");
3245
- u.type = "button", u.className = "gradient-add-stop", u.textContent = "+", d.appendChild(C), d.appendChild(u);
3246
- const f = document.createElement("div");
3247
- f.className = "gradient-stops", t.appendChild(d), t.appendChild(f), this.updateStopsList(f), u.addEventListener("click", () => {
3248
- this.addGradientStop(), this.updateStopsList(f), this.updateGradientPreview(c), this.createGradientHandles(h, c), this.updateUI();
3198
+ h.className = "gradient-stops-header";
3199
+ const d = document.createElement("span");
3200
+ d.textContent = "Stops";
3201
+ const p = document.createElement("button");
3202
+ p.type = "button", p.className = "gradient-add-stop", p.textContent = "+", h.appendChild(d), h.appendChild(p);
3203
+ const g = document.createElement("div");
3204
+ g.className = "gradient-stops", t.appendChild(h), t.appendChild(g), this.updateStopsList(g), p.addEventListener("click", () => {
3205
+ this.addStop(), this.updateStopsList(g), this.updateGradientPreview(l), this.createHandles(c, l), this.updateUI(), this.triggerChange();
3249
3206
  });
3250
3207
  }
3208
+ updateDegreeVisibility(t) {
3209
+ var e;
3210
+ ((e = this.value) == null ? void 0 : e.type) === "radial" ? (t.disabled = !0, t.style.opacity = "0.5") : (t.disabled = !1, t.style.opacity = "1");
3211
+ }
3251
3212
  updateGradientPreview(t) {
3252
3213
  var i;
3253
- const e = t || ((i = this.popoverElement) == null ? void 0 : i.querySelector(".gradient-preview"));
3254
- e && this.value && (e.style.background = this.generateCSS(this.value));
3214
+ const e = t || ((i = this.popoverEl) == null ? void 0 : i.querySelector(".gradient-preview"));
3215
+ e && this.value && (e.style.background = H(this.value));
3255
3216
  }
3256
- createGradientHandles(t, e) {
3217
+ createHandles(t, e) {
3257
3218
  t.innerHTML = "", !(!this.value || this.value.type === "solid" || !this.value.stops) && this.value.stops.forEach((i, s) => {
3258
3219
  const n = document.createElement("div");
3259
- n.className = "gstop-handle", n.style.left = `${i.position}%`;
3220
+ n.className = "gstop-handle", n.style.left = `${Math.max(0, Math.min(100, i.position))}%`, n.style.top = "0%";
3260
3221
  const o = document.createElement("div");
3261
- o.className = "gstop-chip", o.style.backgroundColor = i.color, n.appendChild(o), this.makeDraggable(n, e, s), t.appendChild(n);
3262
- });
3263
- }
3264
- makeDraggable(t, e, i) {
3265
- let s = !1, n = 0, o = 0, a = null;
3266
- const l = (d) => "touches" in d && d.touches.length > 0 ? d.touches[0].clientX : d.clientX, r = (d) => {
3267
- var C, u, f;
3268
- s = !0, n = l(d), o = ((f = (u = (C = this.value) == null ? void 0 : C.stops) == null ? void 0 : u[i]) == null ? void 0 : f.position) || 0, t.classList.add("selected"), document.addEventListener("pointermove", c, { passive: !1 }), document.addEventListener("pointerup", h), document.addEventListener("mousemove", c, { passive: !1 }), document.addEventListener("mouseup", h), document.addEventListener("touchmove", c, {
3269
- passive: !1
3270
- }), document.addEventListener("touchend", h), d.preventDefault();
3271
- }, c = (d) => {
3272
- var b, m;
3273
- if (!s || !((m = (b = this.value) == null ? void 0 : b.stops) != null && m[i])) return;
3274
- const C = e.getBoundingClientRect(), f = (l(d) - n) / C.width * 100;
3275
- let v = o + f;
3276
- v = Math.max(0, Math.min(100, v)), this.value.stops[i].position = Math.round(v), t.style.left = `${v}%`, a && cancelAnimationFrame(a), a = requestAnimationFrame(() => {
3277
- this.updateGradientPreview(), this.updateStopsList(), this.updateUI(), a = null;
3278
- }), d.preventDefault();
3279
- }, h = () => {
3280
- s && (s = !1, t.classList.remove("selected"), a && (cancelAnimationFrame(a), a = null), this.updateGradientPreview(), this.updateStopsList(), this.updateUI(), this.triggerChange(), document.removeEventListener("pointermove", c), document.removeEventListener("pointerup", h), document.removeEventListener("mousemove", c), document.removeEventListener("mouseup", h), document.removeEventListener("touchmove", c), document.removeEventListener("touchend", h));
3281
- };
3282
- t.addEventListener("pointerdown", r), t.addEventListener("mousedown", r), t.addEventListener("touchstart", r, {
3283
- passive: !1
3222
+ o.className = "gstop-chip", o.style.backgroundColor = i.color, n.appendChild(o);
3223
+ let a = !1, l = 0, c = 0;
3224
+ const h = (g) => {
3225
+ a = !0, l = g.clientX, c = this.value.stops[s].position, n.classList.add("selected"), document.addEventListener("mousemove", d), document.addEventListener("mouseup", p), g.preventDefault(), g.stopPropagation();
3226
+ }, d = (g) => {
3227
+ if (!a || !this.value) return;
3228
+ const u = e.getBoundingClientRect(), m = g.clientX - l;
3229
+ let f = c + m / u.width * 100;
3230
+ f = Math.max(0, Math.min(100, f)), this.value.stops[s].position = Math.round(f), n.style.left = `${f}%`, this.updateGradientPreview(), this.updateUI();
3231
+ }, p = () => {
3232
+ a && (a = !1, n.classList.remove("selected"), document.removeEventListener("mousemove", d), document.removeEventListener("mouseup", p), this.value && (this.value.stops.sort((g, u) => g.position - u.position), this.createHandles(t, e)), this.updateStopsList(), this.updateUI(), this.triggerChange());
3233
+ };
3234
+ n.addEventListener("mousedown", h), t.appendChild(n);
3284
3235
  });
3285
3236
  }
3286
3237
  updateStopsList(t) {
3287
- var i;
3288
- const e = t || ((i = this.popoverElement) == null ? void 0 : i.querySelector(".gradient-stops"));
3289
- !e || !this.value || this.value.type === "solid" || !this.value.stops || (e.innerHTML = "", this.value.stops.forEach((s, n) => {
3290
- var O, q;
3291
- const o = document.createElement("div");
3292
- o.className = "gstop-row";
3293
- const a = document.createElement("div");
3294
- a.className = "gstop-position-group";
3295
- const l = document.createElement("input");
3296
- l.type = "text", l.className = "gstop-position-input", l.value = `${s.position}%`, l.style.width = "60px", a.appendChild(l);
3297
- const r = document.createElement("div");
3298
- r.className = "gstop-color-container";
3299
- const c = document.createElement("div");
3300
- c.className = "gstop-color-preview", c.style.backgroundColor = s.color;
3301
- const h = document.createElement("input");
3302
- h.type = "text", h.className = "gstop-color-input", h.value = s.color.replace("#", "").toUpperCase();
3303
- const d = document.createElement("button");
3304
- d.type = "button", d.className = "gstop-color-copy", d.innerHTML = `<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
3305
- <path d="M14.5896 19.3033L13.4111 20.4818C11.7839 22.109 9.14575 22.109 7.51856 20.4818C5.89138 18.8546 5.89138 16.2164 7.51856 14.5892L8.69708 13.4107M19.3037 14.5892L20.4822 13.4107C22.1094 11.7835 22.1094 9.14535 20.4822 7.51816C18.855 5.89098 16.2168 5.89098 14.5896 7.51816L13.4111 8.69668M11.0837 16.9166L16.917 11.0833" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
3306
- </svg>`, r.appendChild(c), r.appendChild(h), r.appendChild(d);
3307
- const C = document.createElement("button");
3308
- C.type = "button", C.className = "gstop-del", C.innerHTML = `<svg width="14" height="2" viewBox="0 0 14 2" fill="none" xmlns="http://www.w3.org/2000/svg">
3309
- <path d="M0.8 0.800003H12.4667" stroke="#919EAB" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
3310
- </svg>`, C.disabled = (((q = (O = this.value) == null ? void 0 : O.stops) == null ? void 0 : q.length) || 0) <= 2, l.addEventListener("input", (S) => {
3311
- var A;
3312
- const w = S.target, N = w.value.replace(/[^\d]/g, ""), D = parseInt(N);
3313
- if (this.value && !isNaN(D)) {
3314
- const P = Math.max(0, Math.min(100, D));
3315
- this.value.stops[n].position = P, w.value = `${P}%`;
3316
- const V = (A = this.popoverElement) == null ? void 0 : A.querySelector(
3317
- ".gradient-preview"
3318
- ), R = V == null ? void 0 : V.querySelector(
3319
- ".gradient-handles"
3320
- );
3321
- V && R && this.createGradientHandles(R, V), this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3322
- }
3323
- }), l.addEventListener("focus", (S) => {
3324
- const w = S.target, N = w.value.replace("%", "");
3325
- w.value = N, w.select();
3326
- }), l.addEventListener("blur", (S) => {
3327
- var A, P;
3328
- const w = S.target, N = w.value.replace(/[^\d]/g, ""), D = parseInt(N);
3329
- if (isNaN(D))
3330
- w.value = `${((P = (A = this.value) == null ? void 0 : A.stops[n]) == null ? void 0 : P.position) || 0}%`;
3331
- else {
3332
- const V = Math.max(0, Math.min(100, D));
3333
- w.value = `${V}%`, this.value && (this.value.stops[n].position = V, this.updateGradientPreview(), this.updateUI(), this.triggerChange());
3334
- }
3335
- });
3336
- const u = new ht(
3337
- (S, w) => {
3338
- var N, D, A;
3339
- if (h.value = S.replace("#", "").toUpperCase(), c.style.backgroundColor = S, f = null, this.value) {
3340
- this.value.stops[n].color = S, w !== void 0 && (this.value.stops[n].opacity = w);
3341
- const P = (N = o.parentElement) == null ? void 0 : N.querySelector(
3342
- ".gstop-opacity-slider"
3343
- );
3344
- if (P) {
3345
- const B = this.hexToRgb(S);
3346
- P.style.setProperty(
3347
- "--slider-color",
3348
- `rgb(${B.r}, ${B.g}, ${B.b})`
3349
- );
3350
- }
3351
- if (w !== void 0) {
3352
- const B = (D = o.parentElement) == null ? void 0 : D.querySelector(
3353
- ".gstop-opacity-value"
3354
- );
3355
- B && (B.textContent = `${w}%`), P && (P.value = w.toString());
3356
- }
3357
- const V = (A = this.popoverElement) == null ? void 0 : A.querySelector(
3358
- ".gradient-preview"
3359
- ), R = V == null ? void 0 : V.querySelector(
3360
- ".gradient-handles"
3361
- );
3362
- V && R && this.createGradientHandles(R, V), this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3363
- }
3364
- },
3365
- "gradient"
3238
+ var s;
3239
+ const e = t || ((s = this.popoverEl) == null ? void 0 : s.querySelector(".gradient-stops"));
3240
+ if (!e || !this.value || this.value.type === "solid" || !this.value.stops)
3241
+ return;
3242
+ e.innerHTML = "";
3243
+ const i = [...this.value.stops].sort(
3244
+ (n, o) => n.position - o.position
3245
+ );
3246
+ i.forEach((n, o) => {
3247
+ var F, G;
3248
+ const a = this.value.stops.findIndex(
3249
+ (v, C) => v.position === n.position && v.color === n.color && v.opacity === n.opacity && this.value.stops.slice(0, C).filter(
3250
+ (E) => E.position === n.position && E.color === n.color && E.opacity === n.opacity
3251
+ ).length === i.slice(0, o).filter(
3252
+ (E) => E.position === n.position && E.color === n.color && E.opacity === n.opacity
3253
+ ).length
3254
+ ), l = a !== -1 ? a : o, c = document.createElement("div");
3255
+ c.className = "gstop-row";
3256
+ const h = document.createElement("div");
3257
+ h.className = "gstop-position-group";
3258
+ const d = document.createElement("input");
3259
+ d.type = "text", d.className = "gstop-position-input", d.value = `${n.position}%`, d.style.width = "60px", h.appendChild(d);
3260
+ const p = document.createElement("div");
3261
+ p.className = "gstop-color-container";
3262
+ const g = document.createElement("div");
3263
+ g.className = "gstop-color-preview", g.style.backgroundColor = n.color;
3264
+ const u = document.createElement("input");
3265
+ u.type = "text", u.className = "gstop-color-input", u.value = n.color.replace("#", "").toUpperCase();
3266
+ const m = document.createElement("button");
3267
+ m.type = "button", m.className = "gstop-color-copy", m.textContent = "Copy", p.appendChild(g), p.appendChild(u), p.appendChild(m);
3268
+ const f = document.createElement("button");
3269
+ f.type = "button", f.className = "gstop-del", f.innerHTML = Ut, f.disabled = (((G = (F = this.value) == null ? void 0 : F.stops) == null ? void 0 : G.length) || 0) <= 2, c.appendChild(h), c.appendChild(p), c.appendChild(f), e.appendChild(c);
3270
+ const x = document.createElement("span");
3271
+ x.className = "gstop-opacity-label", x.textContent = "Opacity";
3272
+ const L = document.createElement("div");
3273
+ L.className = "gstop-opacity-group";
3274
+ const w = document.createElement("input");
3275
+ w.type = "range", w.className = "gstop-opacity-slider", w.min = "0", w.max = "100", w.value = String(n.opacity ?? 100);
3276
+ const O = S(n.color);
3277
+ w.style.setProperty(
3278
+ "--slider-color",
3279
+ `rgb(${O.r}, ${O.g}, ${O.b})`
3366
3280
  );
3367
- let f = null;
3368
- h.addEventListener("click", (S) => {
3369
- S.stopPropagation(), u.open(s.color, h, s.opacity || 100);
3370
- }), h.addEventListener("input", (S) => {
3371
- var D, A;
3372
- const w = S.target.value.trim(), N = w.startsWith("#") ? w : `#${w}`;
3373
- if (/^#[0-9A-Fa-f]{6}$/.test(N) && (c.style.backgroundColor = N, this.value)) {
3374
- this.value.stops[n].color = N, f = N;
3375
- const P = (D = o.parentElement) == null ? void 0 : D.querySelector(
3376
- ".gstop-opacity-slider"
3377
- );
3378
- if (P) {
3379
- const B = this.hexToRgb(N);
3380
- P.style.setProperty(
3381
- "--slider-color",
3382
- `rgb(${B.r}, ${B.g}, ${B.b})`
3383
- );
3384
- }
3385
- const V = (A = this.popoverElement) == null ? void 0 : A.querySelector(
3386
- ".gradient-preview"
3387
- ), R = V == null ? void 0 : V.querySelector(
3388
- ".gradient-handles"
3389
- );
3390
- V && R && this.createGradientHandles(R, V), this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3281
+ const k = document.createElement("span");
3282
+ k.className = "gstop-opacity-value", k.textContent = `${n.opacity ?? 100}%`, L.appendChild(w), L.appendChild(k);
3283
+ const P = new jt((v, C) => {
3284
+ u.value = v.replace("#", "").toUpperCase(), g.style.backgroundColor = v, this.value.stops[l].color = v, C !== void 0 && (this.value.stops[l].opacity = C, w.value = String(C), k.textContent = `${C}%`);
3285
+ const E = S(v);
3286
+ w.style.setProperty(
3287
+ "--slider-color",
3288
+ `rgb(${E.r}, ${E.g}, ${E.b})`
3289
+ ), this.updateGradientPreview(), this.createHandles(
3290
+ this.popoverEl.querySelector(".gradient-handles"),
3291
+ this.popoverEl.querySelector(".gradient-preview")
3292
+ ), this.updateUI(), this.triggerChange();
3293
+ }, "gradient");
3294
+ u.addEventListener("click", (v) => {
3295
+ v.preventDefault(), v.stopPropagation(), P.open(n.color, u, n.opacity ?? 100);
3296
+ }), u.addEventListener("input", () => {
3297
+ const v = u.value.trim(), C = v.startsWith("#") ? v : `#${v}`;
3298
+ if (/^#[0-9A-Fa-f]{6}$/.test(C)) {
3299
+ this.value.stops[l].color = C, g.style.backgroundColor = C;
3300
+ const E = S(C);
3301
+ w.style.setProperty(
3302
+ "--slider-color",
3303
+ `rgb(${E.r}, ${E.g}, ${E.b})`
3304
+ ), this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3391
3305
  }
3392
- });
3393
- const v = () => {
3394
- f && (J.addColor(f, "gradient"), f = null);
3395
- };
3396
- h.addEventListener("blur", v), h.addEventListener("keydown", (S) => {
3397
- S.key === "Enter" && (S.preventDefault(), v(), h.blur());
3398
- }), d.addEventListener("click", async (S) => {
3399
- S.stopPropagation();
3400
- const w = `#${h.value}`;
3306
+ }), m.addEventListener("click", async (v) => {
3307
+ v.stopPropagation();
3401
3308
  try {
3402
- await navigator.clipboard.writeText(w);
3403
- const N = d.innerHTML;
3404
- d.innerHTML = `<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
3405
- <path d="M9.3335 14L12.2502 16.9167L18.6668 10.5" stroke="#00A76F" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
3406
- </svg>`, setTimeout(() => {
3407
- d.innerHTML = N;
3408
- }, 1e3);
3409
- } catch (N) {
3410
- console.warn("Failed to copy color to clipboard:", N);
3309
+ await navigator.clipboard.writeText(`#${u.value}`);
3310
+ } catch {
3411
3311
  }
3412
- }), C.addEventListener("click", () => {
3413
- var S;
3414
- if (this.value && this.value.stops.length > 2) {
3415
- this.value.stops.splice(n, 1);
3416
- const w = (S = this.popoverElement) == null ? void 0 : S.querySelector(
3417
- ".gradient-preview"
3418
- ), N = w == null ? void 0 : w.querySelector(
3419
- ".gradient-handles"
3420
- );
3421
- w && N && this.createGradientHandles(N, w), this.updateStopsList(), this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3312
+ }), d.addEventListener("focus", (v) => {
3313
+ const C = v.target;
3314
+ C.value = C.value.replace("%", ""), C.select();
3315
+ }), d.addEventListener("input", (v) => {
3316
+ const C = v.target, E = parseInt(C.value.replace(/[^\d]/g, ""), 10);
3317
+ if (!Number.isNaN(E)) {
3318
+ const et = Math.max(0, Math.min(100, E));
3319
+ this.value.stops[l].position = et, C.value = `${et}%`, this.updateGradientPreview(), this.createHandles(
3320
+ this.popoverEl.querySelector(".gradient-handles"),
3321
+ this.popoverEl.querySelector(".gradient-preview")
3322
+ ), this.updateUI(), this.triggerChange();
3422
3323
  }
3423
- }), o.appendChild(a), o.appendChild(r), o.appendChild(C), e.appendChild(o);
3424
- const b = document.createElement("div");
3425
- b.className = "gstop-opacity-row";
3426
- const m = document.createElement("span");
3427
- m.className = "gstop-opacity-label", m.textContent = "Opacity";
3428
- const L = document.createElement("div");
3429
- L.className = "gstop-opacity-group";
3430
- const M = document.createElement("input");
3431
- M.type = "range", M.className = "gstop-opacity-slider", M.min = "0", M.max = "100", M.value = (s.opacity !== void 0 ? s.opacity : 100).toString();
3432
- const y = this.hexToRgb(s.color);
3433
- M.style.setProperty(
3434
- "--slider-color",
3435
- `rgb(${y.r}, ${y.g}, ${y.b})`
3436
- );
3437
- const E = document.createElement("span");
3438
- E.className = "gstop-opacity-value", E.textContent = `${s.opacity !== void 0 ? s.opacity : 100}%`;
3439
- }));
3324
+ }), d.addEventListener("blur", (v) => {
3325
+ const C = v.target, E = parseInt(C.value.replace(/[^\d]/g, ""), 10);
3326
+ Number.isNaN(E) ? C.value = `${this.value.stops[l].position}%` : C.value = `${Math.max(0, Math.min(100, E))}%`;
3327
+ }), f.addEventListener("click", () => {
3328
+ (this.value.stops.length || 0) <= 2 || (this.value.stops.splice(l, 1), this.createHandles(
3329
+ this.popoverEl.querySelector(".gradient-handles"),
3330
+ this.popoverEl.querySelector(".gradient-preview")
3331
+ ), this.updateStopsList(), this.updateGradientPreview(), this.updateUI(), this.triggerChange());
3332
+ }), w.addEventListener("input", () => {
3333
+ const v = parseInt(w.value, 10);
3334
+ this.value.stops[l].opacity = Math.max(0, Math.min(100, v)), k.textContent = `${this.value.stops[l].opacity}%`, this.updateGradientPreview(), this.updateUI(), this.triggerChange();
3335
+ });
3336
+ });
3440
3337
  }
3441
- addGradientStop() {
3338
+ addStop() {
3442
3339
  if (!this.value || this.value.type === "solid" || !this.value.stops) return;
3443
3340
  const t = this.value.stops.map((o) => o.position).sort((o, a) => o - a);
3444
3341
  let e = 50, i = 0;
@@ -3446,290 +3343,101 @@ class he extends T {
3446
3343
  const a = t[o + 1] - t[o];
3447
3344
  a > i && (i = a, e = t[o] + a / 2);
3448
3345
  }
3449
- const s = this.value.stops.reduce((o, a) => Math.abs(a.position - e) < Math.abs(o.position - e) ? a : o), n = {
3346
+ const s = this.value.stops.reduce(
3347
+ (o, a) => Math.abs(a.position - e) < Math.abs(o.position - e) ? a : o
3348
+ ), n = {
3450
3349
  position: Math.round(e),
3451
3350
  color: s.color,
3452
- opacity: s.opacity !== void 0 ? s.opacity : 100
3351
+ opacity: s.opacity ?? 100
3453
3352
  };
3454
3353
  this.value.stops.push(n), this.value.stops.sort((o, a) => o.position - a.position);
3455
3354
  }
3456
3355
  openPopover() {
3457
- if (!(!this.popoverElement || this.isPopoverOpen)) {
3458
- if (this.isPopoverOpen = !0, this.popoverElement.style.display = "flex", this.refreshPopoverContent(), this.element) {
3356
+ if (!(!this.popoverEl || this.isPopoverOpen)) {
3357
+ if (this.isPopoverOpen = !0, this.popoverEl.style.display = "flex", this.refreshPopoverContent(), this.element) {
3459
3358
  const t = this.element.getBoundingClientRect(), e = 306, i = window.innerWidth, s = window.innerHeight, n = 16;
3460
- this.popoverElement.style.position = "fixed", this.popoverElement.style.zIndex = "10000";
3359
+ this.popoverEl.style.position = "fixed", this.popoverEl.style.zIndex = "10000";
3461
3360
  let o = t.right + 8, a = t.top;
3462
- const l = i - t.right, r = t.left, c = e + n;
3463
- l < c && r > l + 100 && (o = t.left - e - 8), a + 400 > s && (a = Math.max(8, s - 400 - 8)), this.popoverElement.style.left = `${o}px`, this.popoverElement.style.top = `${a}px`;
3361
+ const l = i - t.right, c = t.left, h = e + n;
3362
+ l < h && c > l + 100 && (o = t.left - e - 8), a + 400 > s && (a = Math.max(8, s - 400 - 8)), this.popoverEl.style.left = `${o}px`, this.popoverEl.style.top = `${a}px`;
3464
3363
  }
3465
- setTimeout(() => {
3466
- document.addEventListener("click", this.handleBackgroundClick, !0);
3467
- }, 0);
3364
+ setTimeout(
3365
+ () => document.addEventListener("click", this.onBackgroundClick, !0),
3366
+ 0
3367
+ );
3468
3368
  }
3469
3369
  }
3470
3370
  refreshPopoverContent() {
3471
- if (!this.popoverElement) return;
3472
- this.popoverElement.querySelectorAll(".gradient-type-tab").forEach((i, s) => {
3473
- var n, o;
3474
- i.classList.remove("active"), (s === 0 && ((n = this.value) == null ? void 0 : n.type) === "solid" || s === 1 && ((o = this.value) == null ? void 0 : o.type) !== "solid") && i.classList.add("active");
3475
- });
3476
- const e = this.popoverElement.querySelector(
3477
- ".gradient-editor-content"
3478
- );
3479
- e && this.updatePopoverContent(e);
3371
+ var n;
3372
+ if (!this.popoverEl) return;
3373
+ const t = this.popoverEl.querySelectorAll(".gradient-type-tab");
3374
+ t.forEach((o) => o.classList.remove("active"));
3375
+ const e = t[0], i = t[1];
3376
+ ((n = this.value) == null ? void 0 : n.type) === "solid" ? e.classList.add("active") : i.classList.add("active"), this.popoverEl.offsetHeight;
3377
+ const s = this.popoverEl.querySelector(".gradient-editor-content");
3378
+ s && this.updatePopoverContent(s);
3480
3379
  }
3481
3380
  closePopover() {
3482
- !this.popoverElement || !this.isPopoverOpen || (this.isPopoverOpen = !1, this.popoverElement.style.display = "none", document.removeEventListener("click", this.handleBackgroundClick, !0));
3381
+ !this.popoverEl || !this.isPopoverOpen || (this.isPopoverOpen = !1, this.popoverEl.style.display = "none", document.removeEventListener("click", this.onBackgroundClick, !0));
3483
3382
  }
3484
3383
  handlePaste(t) {
3485
3384
  var i;
3486
3385
  t.preventDefault();
3487
3386
  const e = ((i = t.clipboardData) == null ? void 0 : i.getData("text")) || "";
3488
- this.parseAndSetValue(e);
3387
+ this.parseAndSet(e);
3489
3388
  }
3490
- handleInput(t) {
3389
+ handleTextInput(t) {
3491
3390
  const e = t.target;
3492
- this.parseAndSetValue(e.value);
3493
- }
3494
- parseAndSetValue(t) {
3495
- const e = t.trim();
3496
- if (e)
3497
- try {
3498
- const i = this.parseGradientCSS(e);
3499
- i && this.setValue(i);
3500
- } catch (i) {
3501
- console.warn("Failed to parse gradient/color:", i);
3502
- }
3503
- }
3504
- parseGradientCSS(t) {
3505
- const e = t.replace(/;$/, "").trim();
3506
- if (this.isValidColor(e))
3507
- return {
3508
- type: "solid",
3509
- angle: 0,
3510
- stops: [this.parseColorWithOpacity(e)]
3511
- };
3512
- const i = this.extractGradientParams(e, "linear-gradient");
3513
- if (i)
3514
- return this.parseLinearGradient(i);
3515
- const s = this.extractGradientParams(e, "radial-gradient");
3516
- return s ? this.parseRadialGradient(s) : null;
3517
- }
3518
- extractGradientParams(t, e) {
3519
- const i = new RegExp(`${e}\\s*\\(`, "i"), s = t.match(i);
3520
- if (!s) return null;
3521
- const n = s.index + s[0].length;
3522
- let o = 1, a = n;
3523
- for (let l = n; l < t.length && o > 0; l++)
3524
- t[l] === "(" ? o++ : t[l] === ")" && o--, a = l;
3525
- return o === 0 ? t.substring(n, a) : null;
3526
- }
3527
- isValidColor(t) {
3528
- const e = document.createElement("div");
3529
- return e.style.color = t, e.style.color !== "";
3530
- }
3531
- parseColorWithOpacity(t) {
3532
- const e = t.trim();
3533
- if (/^#[0-9A-Fa-f]{8}$/.test(e)) {
3534
- const n = e.slice(1);
3535
- parseInt(n.substr(0, 2), 16), parseInt(n.substr(2, 2), 16), parseInt(n.substr(4, 2), 16);
3536
- const a = parseInt(n.substr(6, 2), 16) / 255 * 100;
3537
- return { color: `#${n.substr(0, 6)}`, position: 0, opacity: a };
3538
- }
3539
- const i = e.match(
3540
- /rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/
3541
- );
3542
- if (i) {
3543
- const n = parseInt(i[1]), o = parseInt(i[2]), a = parseInt(i[3]), l = i[4] ? parseFloat(i[4]) : 1;
3544
- return { color: `#${n.toString(16).padStart(2, "0")}${o.toString(16).padStart(2, "0")}${a.toString(16).padStart(2, "0")}`, position: 0, opacity: Math.round(l * 100) };
3545
- }
3546
- const s = e.match(
3547
- /hsla?\s*\(\s*([\d.]+)\s*,\s*([\d.]+)%\s*,\s*([\d.]+)%\s*(?:,\s*([\d.]+))?\s*\)/
3548
- );
3549
- if (s) {
3550
- const n = parseFloat(s[1]), o = parseFloat(s[2]) / 100, a = parseFloat(s[3]) / 100, l = s[4] ? parseFloat(s[4]) : 1, { r, g: c, b: h } = this.hslToRgb(n, o, a);
3551
- return { color: `#${r.toString(16).padStart(2, "0")}${c.toString(16).padStart(2, "0")}${h.toString(16).padStart(2, "0")}`, position: 0, opacity: Math.round(l * 100) };
3552
- }
3553
- return { color: e, position: 0, opacity: 100 };
3554
- }
3555
- hslToRgb(t, e, i) {
3556
- const s = (1 - Math.abs(2 * i - 1)) * e, n = s * (1 - Math.abs(t / 60 % 2 - 1)), o = i - s / 2;
3557
- let a = 0, l = 0, r = 0;
3558
- return t >= 0 && t < 60 ? (a = s, l = n, r = 0) : t >= 60 && t < 120 ? (a = n, l = s, r = 0) : t >= 120 && t < 180 ? (a = 0, l = s, r = n) : t >= 180 && t < 240 ? (a = 0, l = n, r = s) : t >= 240 && t < 300 ? (a = n, l = 0, r = s) : t >= 300 && t < 360 && (a = s, l = 0, r = n), {
3559
- r: Math.round((a + o) * 255),
3560
- g: Math.round((l + o) * 255),
3561
- b: Math.round((r + o) * 255)
3562
- };
3391
+ this.parseAndSet(e.value);
3563
3392
  }
3564
- smartSplit(t) {
3565
- const e = [];
3566
- let i = "", s = 0;
3567
- for (let n = 0; n < t.length; n++) {
3568
- const o = t[n];
3569
- if (o === "(")
3570
- s++;
3571
- else if (o === ")")
3572
- s--;
3573
- else if (o === "," && s === 0) {
3574
- e.push(i.trim()), i = "";
3575
- continue;
3576
- }
3577
- i += o;
3578
- }
3579
- return i.trim() && e.push(i.trim()), e;
3580
- }
3581
- parseLinearGradient(t) {
3582
- const e = this.smartSplit(t);
3583
- let i = 90, s = [];
3584
- const n = e[0];
3585
- if (n.includes("deg")) {
3586
- const a = n.match(/(-?\d+(?:\.\d+)?)deg/);
3587
- a ? (i = parseFloat(a[1]), s = e.slice(1)) : s = e;
3588
- } else n.includes("to ") ? (i = {
3589
- "to right": 90,
3590
- "to left": 270,
3591
- "to bottom": 180,
3592
- "to top": 0,
3593
- "to bottom right": 135,
3594
- "to bottom left": 225,
3595
- "to top right": 45,
3596
- "to top left": 315
3597
- }[n] || 90, s = e.slice(1)) : s = e;
3598
- const o = this.parseColorStops(s);
3599
- return o.length === 0 ? null : {
3600
- type: "linear",
3601
- angle: i,
3602
- stops: o
3603
- };
3604
- }
3605
- parseRadialGradient(t) {
3606
- const e = this.smartSplit(t);
3607
- let i = [];
3608
- e[0] && !this.isColorStop(e[0]) ? i = e.slice(1) : i = e;
3609
- const s = this.parseColorStops(i);
3610
- return s.length === 0 ? null : {
3611
- type: "radial",
3612
- angle: 0,
3613
- stops: s
3614
- };
3615
- }
3616
- isColorStop(t) {
3617
- const e = t.split(" ")[0].toLowerCase();
3618
- return [
3619
- "circle",
3620
- "ellipse",
3621
- "closest-side",
3622
- "closest-corner",
3623
- "farthest-side",
3624
- "farthest-corner",
3625
- "at"
3626
- ].includes(e) || ["contain", "cover"].includes(e) ? !1 : /^#[0-9a-f]{3,8}$/i.test(e) || /^rgb/i.test(t) || /^hsl/i.test(t) || this.isValidColorName(e);
3627
- }
3628
- isValidColorName(t) {
3629
- return [
3630
- "red",
3631
- "green",
3632
- "blue",
3633
- "yellow",
3634
- "orange",
3635
- "purple",
3636
- "pink",
3637
- "brown",
3638
- "black",
3639
- "white",
3640
- "gray",
3641
- "grey",
3642
- "cyan",
3643
- "magenta",
3644
- "lime",
3645
- "navy",
3646
- "maroon",
3647
- "olive",
3648
- "aqua",
3649
- "silver",
3650
- "teal",
3651
- "fuchsia",
3652
- "transparent"
3653
- ].includes(t.toLowerCase());
3654
- }
3655
- parseColorStops(t) {
3656
- const e = [];
3657
- return t.forEach((i, s) => {
3658
- const n = i.trim();
3659
- if (!n) return;
3660
- let o = "", a = 0;
3661
- const l = n.match(/^(.+?)\s+(\d+(?:\.\d+)?)%?\s*$/);
3662
- if (l) {
3663
- const c = l[1].trim(), h = parseFloat(l[2]);
3664
- this.isValidColorFormat(c) ? (o = c, a = h) : (o = n, a = t.length === 1 ? 0 : s / (t.length - 1) * 100);
3665
- } else
3666
- o = n, a = t.length === 1 ? 0 : s / (t.length - 1) * 100;
3667
- const r = this.parseColorWithOpacity(o);
3668
- r.position = Math.round(a), e.push(r);
3669
- }), e;
3670
- }
3671
- isValidColorFormat(t) {
3672
- return [
3673
- /^#[0-9a-fA-F]{3,8}$/,
3674
- // hex colors
3675
- /^rgba?\s*\([^)]+\)$/,
3676
- // rgb/rgba functions
3677
- /^hsla?\s*\([^)]+\)$/,
3678
- // hsl/hsla functions
3679
- /^[a-zA-Z]+$/
3680
- // named colors
3681
- ].some((i) => i.test(t.trim())) || this.isValidColor(t);
3393
+ parseAndSet(t) {
3394
+ const e = Y(t.trim());
3395
+ e && this.setValue(e);
3682
3396
  }
3683
3397
  triggerChange() {
3684
- this.onChange && this.value && this.onChange(this.value), this.detectChange && this.value && this.detectChange(this.value);
3398
+ var t, e;
3399
+ this.value && ((t = this.onChange) == null || t.call(this, this.value), (e = this.detectChange) == null || e.call(this, this.value));
3685
3400
  }
3686
3401
  getElement() {
3687
3402
  return this.element;
3688
3403
  }
3689
3404
  getValue() {
3690
- return this.value ? this.forText ? {
3691
- background: this.generateCSS(this.value),
3692
- "-webkit-background-clip": "text",
3693
- "background-clip": "text",
3694
- color: "transparent",
3695
- "-webkit-text-fill-color": "transparent"
3696
- } : this.generateCSS(this.value) : this.forText ? {} : "";
3405
+ return this.value ? this.forText ? this.cssForTextValue() : H(this.value) : this.forText ? {} : "";
3697
3406
  }
3698
3407
  getCSSValue() {
3699
- return this.value ? this.generateCSS(this.value) : "";
3408
+ return this.value ? H(this.value) : "";
3700
3409
  }
3701
- // Add method to get the raw object value if needed
3702
3410
  getRawValue() {
3703
3411
  return this.value;
3704
3412
  }
3705
3413
  }
3706
- const Gt = `
3414
+ const Zt = `
3707
3415
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3708
3416
  <path d="M5.625 9.5H5.6325M12.375 9.5H12.3825M9 9.5H9.0075M9 12.875H9.0075M9 6.125H9.0075M2.25 6.35L2.25 12.65C2.25 13.9101 2.25 14.5402 2.49524 15.0215C2.71095 15.4448 3.05516 15.789 3.47852 16.0048C3.95982 16.25 4.58988 16.25 5.85 16.25H12.15C13.4101 16.25 14.0402 16.25 14.5215 16.0048C14.9448 15.789 15.289 15.4448 15.5048 15.0215C15.75 14.5402 15.75 13.9101 15.75 12.65V6.35C15.75 5.08988 15.75 4.45982 15.5048 3.97852C15.289 3.55516 14.9448 3.21095 14.5215 2.99524C14.0402 2.75 13.4101 2.75 12.15 2.75L5.85 2.75C4.58988 2.75 3.95982 2.75 3.47852 2.99524C3.05516 3.21095 2.71095 3.55516 2.49524 3.97852C2.25 4.45982 2.25 5.08988 2.25 6.35Z" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3709
3417
  </svg>
3710
- `, Wt = `
3418
+ `, Xt = `
3711
3419
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3712
3420
  <path d="M6 2.75H5.85C4.58988 2.75 3.95982 2.75 3.47852 2.99524C3.05516 3.21095 2.71095 3.55516 2.49524 3.97852C2.25 4.45982 2.25 5.08988 2.25 6.35V6.5M6 16.25H5.85C4.58988 16.25 3.95982 16.25 3.47852 16.0048C3.05516 15.789 2.71095 15.4448 2.49524 15.0215C2.25 14.5402 2.25 13.9101 2.25 12.65V12.5M15.75 6.5V6.35C15.75 5.08988 15.75 4.45982 15.5048 3.97852C15.289 3.55516 14.9448 3.21095 14.5215 2.99524C14.0402 2.75 13.4101 2.75 12.15 2.75H12M15.75 12.5V12.65C15.75 13.9101 15.75 14.5402 15.5048 15.0215C15.289 15.4448 14.9448 15.789 14.5215 16.0048C14.0402 16.25 13.4101 16.25 12.15 16.25H12" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3713
3421
  </svg>
3714
3422
  `;
3715
- class de extends z {
3423
+ class ye extends V {
3716
3424
  constructor(t) {
3717
3425
  super({
3718
3426
  title: "Border",
3719
3427
  collapsed: t == null ? void 0 : t.collapsed,
3720
3428
  settings: {
3721
- size: new U({
3429
+ size: new I({
3722
3430
  title: "Size",
3723
- icon: Wt,
3431
+ icon: Xt,
3724
3432
  default: (t == null ? void 0 : t.size) ?? 0,
3725
3433
  suffix: "px"
3726
3434
  }),
3727
- color: new j({
3435
+ color: new T({
3728
3436
  default: (t == null ? void 0 : t.color) ?? "0, 0, 30"
3729
3437
  }),
3730
- radius: new U({
3438
+ radius: new I({
3731
3439
  title: "Radius",
3732
- icon: Gt,
3440
+ icon: Zt,
3733
3441
  default: (t == null ? void 0 : t.radius) ?? 12,
3734
3442
  suffix: "px"
3735
3443
  })
@@ -3748,20 +3456,20 @@ class de extends z {
3748
3456
  `;
3749
3457
  }
3750
3458
  }
3751
- const Ut = `
3459
+ const Yt = `
3752
3460
  <svg xmlns="http://www.w3.org/2000/svg" width="14" height="13" viewBox="0 0 14 13" fill="none">
3753
3461
  <path d="M1 2.75C1 2.05109 1 1.70163 1.11418 1.42597C1.26642 1.05843 1.55843 0.766422 1.92597 0.614181C2.20163 0.5 2.55109 0.5 3.25 0.5H10.75C11.4489 0.5 11.7984 0.5 12.074 0.614181C12.4416 0.766422 12.7336 1.05843 12.8858 1.42597C13 1.70163 13 2.05109 13 2.75M4.75 12.5H9.25M7 0.5V12.5" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3754
3462
  </svg>
3755
- `, zt = `
3463
+ `, Kt = `
3756
3464
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3757
3465
  <path d="M3 5.75C3 5.05109 3 4.70163 3.11418 4.42597C3.26642 4.05843 3.55843 3.76642 3.92597 3.61418C4.20163 3.5 4.55109 3.5 5.25 3.5H12.75C13.4489 3.5 13.7984 3.5 14.074 3.61418C14.4416 3.76642 14.7336 4.05843 14.8858 4.42597C15 4.70163 15 5.05109 15 5.75M6 15.5H12M7.6875 3.5V15.5M10.3125 3.5V15.5" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3758
3466
  </svg>
3759
- `, jt = `
3467
+ `, Qt = `
3760
3468
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3761
3469
  <path d="M6 5.75H12M9 5.75V13.25M5.85 16.25H12.15C13.4101 16.25 14.0402 16.25 14.5215 16.0048C14.9448 15.789 15.289 15.4448 15.5048 15.0215C15.75 14.5402 15.75 13.9101 15.75 12.65V6.35C15.75 5.08988 15.75 4.45982 15.5048 3.97852C15.289 3.55516 14.9448 3.21095 14.5215 2.99524C14.0402 2.75 13.4101 2.75 12.15 2.75H5.85C4.58988 2.75 3.95982 2.75 3.47852 2.99524C3.05516 3.21095 2.71095 3.55516 2.49524 3.97852C2.25 4.45982 2.25 5.08988 2.25 6.35V12.65C2.25 13.9101 2.25 14.5402 2.49524 15.0215C2.71095 15.4448 3.05516 15.789 3.47852 16.0048C3.95982 16.25 4.58988 16.25 5.85 16.25Z" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3762
3470
  </svg>
3763
3471
  `;
3764
- class pe extends z {
3472
+ class Ee extends V {
3765
3473
  constructor(t = {}) {
3766
3474
  const { showAlign: e = t.showAlign ?? !0, ...i } = t;
3767
3475
  super({
@@ -3769,12 +3477,12 @@ class pe extends z {
3769
3477
  collapsed: i.collapsed,
3770
3478
  settings: (() => {
3771
3479
  const s = {
3772
- color: new j({
3480
+ color: new T({
3773
3481
  default: i.colorDefault ?? "0, 0, 30"
3774
3482
  }),
3775
- fontFamily: new at({
3483
+ fontFamily: new tt({
3776
3484
  title: "Font",
3777
- icon: Ut,
3485
+ icon: Yt,
3778
3486
  default: i.fontFamilyDefault ?? "Satoshi",
3779
3487
  options: i.fontFamilyOptions ?? [
3780
3488
  { name: "Alt", value: "Croco Sans Black Caps Alt" },
@@ -3785,9 +3493,9 @@ class pe extends z {
3785
3493
  getOptions: i.fontFamilyGetOptions,
3786
3494
  getOptionsAsync: i.fontFamilyGetOptionsAsync
3787
3495
  }),
3788
- fontWeight: new at({
3496
+ fontWeight: new tt({
3789
3497
  title: "Weight",
3790
- icon: zt,
3498
+ icon: Kt,
3791
3499
  default: i.fontWeightDefault ?? "400",
3792
3500
  options: i.fontWeightOptions ?? [
3793
3501
  { name: "Regular", value: "400" },
@@ -3797,9 +3505,9 @@ class pe extends z {
3797
3505
  getOptions: i.fontWeightGetOptions,
3798
3506
  getOptionsAsync: i.fontWeightGetOptionsAsync
3799
3507
  }),
3800
- fontSize: new U({
3508
+ fontSize: new I({
3801
3509
  title: "Size",
3802
- icon: jt,
3510
+ icon: Qt,
3803
3511
  default: i.fontSizeDefault ?? 12,
3804
3512
  suffix: "px",
3805
3513
  mobile: i.fontSizeMobileDefault
@@ -3807,7 +3515,7 @@ class pe extends z {
3807
3515
  };
3808
3516
  return e ? {
3809
3517
  ...s,
3810
- align: new Nt({
3518
+ align: new Mt({
3811
3519
  title: "Align",
3812
3520
  default: i.alignDefault ?? "center"
3813
3521
  })
@@ -3827,7 +3535,7 @@ class pe extends z {
3827
3535
  `;
3828
3536
  }
3829
3537
  }
3830
- class Q extends T {
3538
+ class U extends y {
3831
3539
  constructor(t) {
3832
3540
  super({
3833
3541
  ...t,
@@ -3837,9 +3545,9 @@ class Q extends T {
3837
3545
  draw() {
3838
3546
  const t = this.value === "auto" ? "text" : "number", e = (a) => {
3839
3547
  this.value !== "auto" && (this.props.minValue !== void 0 && (a.min = String(this.props.minValue)), this.props.maxValue !== void 0 && (a.max = String(this.props.maxValue)), this.props.className && a.classList.add(this.props.className), a.addEventListener("input", () => {
3840
- const l = this.props.minValue ?? Number.MIN_SAFE_INTEGER, r = this.props.maxValue ?? Number.MAX_SAFE_INTEGER;
3841
- let c = Number(a.value);
3842
- c < l && (c = l), c > r && (c = r), a.value = String(c);
3548
+ const l = this.props.minValue ?? Number.MIN_SAFE_INTEGER, c = this.props.maxValue ?? Number.MAX_SAFE_INTEGER;
3549
+ let h = Number(a.value);
3550
+ h < l && (h = l), h > c && (h = c), a.value = String(h);
3843
3551
  }));
3844
3552
  }, i = this.createInput({
3845
3553
  value: this.value,
@@ -3866,40 +3574,40 @@ class Q extends T {
3866
3574
  if (l.toLowerCase() === "auto")
3867
3575
  this.value = "auto";
3868
3576
  else {
3869
- const r = Number(l);
3870
- isNaN(r) || (this.value = r);
3577
+ const c = Number(l);
3578
+ isNaN(c) || (this.value = c);
3871
3579
  }
3872
3580
  this.onChange && this.onChange(this.value);
3873
3581
  }), i;
3874
3582
  }
3875
3583
  }
3876
- class ue extends z {
3584
+ class be extends V {
3877
3585
  constructor(t) {
3878
3586
  super({
3879
3587
  title: "Margins",
3880
3588
  collapsed: t == null ? void 0 : t.collapsed,
3881
3589
  settings: {
3882
- marginTop: new Q({
3590
+ marginTop: new U({
3883
3591
  title: "Top",
3884
- icon: qt,
3592
+ icon: te,
3885
3593
  suffix: "px",
3886
3594
  default: (t == null ? void 0 : t.marginTop) ?? "auto"
3887
3595
  }),
3888
- marginRight: new Q({
3596
+ marginRight: new U({
3889
3597
  title: "Right",
3890
- icon: _t,
3598
+ icon: ee,
3891
3599
  suffix: "px",
3892
3600
  default: (t == null ? void 0 : t.marginRight) ?? 0
3893
3601
  }),
3894
- marginBottom: new Q({
3602
+ marginBottom: new U({
3895
3603
  title: "Bottom",
3896
- icon: Jt,
3604
+ icon: ie,
3897
3605
  suffix: "px",
3898
3606
  default: (t == null ? void 0 : t.marginBottom) ?? 0
3899
3607
  }),
3900
- marginLeft: new Q({
3608
+ marginLeft: new U({
3901
3609
  title: "Left",
3902
- icon: Xt,
3610
+ icon: se,
3903
3611
  suffix: "px",
3904
3612
  default: (t == null ? void 0 : t.marginLeft) ?? 0
3905
3613
  })
@@ -3916,29 +3624,29 @@ class ue extends z {
3916
3624
  `;
3917
3625
  }
3918
3626
  }
3919
- const qt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3627
+ const te = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3920
3628
  <path d="M2.25 16.25H2.2575M2.25 9.5H2.2575M2.25 12.875H2.2575M2.25 6.125H2.2575M5.625 16.25H5.6325M5.625 9.5H5.6325M12.375 16.25H12.3825M12.375 9.5H12.3825M9 16.25H9.0075M9 9.5H9.0075M9 12.875H9.0075M9 6.125H9.0075M15.75 16.25H15.7575M15.75 9.5H15.7575M15.75 12.875H15.7575M15.75 6.125H15.7575M15.75 2.75H2.25" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3921
- </svg>`, _t = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3629
+ </svg>`, ee = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3922
3630
  <path d="M5.625 2.75H5.6325M5.625 9.5H5.6325M5.625 16.25H5.6325M12.375 2.75H12.3825M12.375 9.5H12.3825M12.375 16.25H12.3825M9 2.75H9.0075M9 9.5H9.0075M9 16.25H9.0075M9 12.875H9.0075M9 6.125H9.0075M2.25 2.75H2.2575M2.25 9.5H2.2575M2.25 16.25H2.2575M2.25 12.875H2.2575M2.25 6.125H2.2575M15.75 16.25V2.75" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3923
- </svg>`, Jt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3631
+ </svg>`, ie = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3924
3632
  <path d="M2.25 2.75H2.2575M2.25 9.5H2.2575M2.25 12.875H2.2575M2.25 6.125H2.2575M5.625 2.75H5.6325M5.625 9.5H5.6325M12.375 2.75H12.3825M12.375 9.5H12.3825M9 2.75H9.0075M9 9.5H9.0075M9 12.875H9.0075M9 6.125H9.0075M15.75 2.75H15.7575M15.75 9.5H15.7575M15.75 12.875H15.7575M15.75 6.125H15.7575M15.75 16.25H2.25" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3925
- </svg>`, Xt = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3633
+ </svg>`, se = `<svg xmlns="http://www.w3.org/2000/svg" width="18" height="19" viewBox="0 0 18 19" fill="none">
3926
3634
  <path d="M5.625 2.75H5.6325M5.625 9.5H5.6325M5.625 16.25H5.6325M12.375 2.75H12.3825M12.375 9.5H12.3825M12.375 16.25H12.3825M9 2.75H9.0075M9 9.5H9.0075M9 16.25H9.0075M9 12.875H9.0075M9 6.125H9.0075M15.75 2.75H15.7575M15.75 9.5H15.7575M15.75 16.25H15.7575M15.75 12.875H15.7575M15.75 6.125H15.7575M2.25 16.25V2.75" stroke="#667085" stroke-linecap="round" stroke-linejoin="round"/>
3927
3635
  </svg>`;
3928
- class ge extends z {
3636
+ class we extends V {
3929
3637
  constructor(t) {
3930
3638
  super({
3931
3639
  title: "Background Image",
3932
3640
  collapsed: t == null ? void 0 : t.collapsed,
3933
3641
  settings: {
3934
- backgroundImage: new pt({
3642
+ backgroundImage: new rt({
3935
3643
  ...t == null ? void 0 : t.uploadProps,
3936
3644
  default: (t == null ? void 0 : t.backgroundImage) ?? ""
3937
3645
  }),
3938
- opacity: new St({
3646
+ opacity: new Lt({
3939
3647
  default: (t == null ? void 0 : t.opacity) ?? 100
3940
3648
  }),
3941
- backgroundColor: new j({
3649
+ backgroundColor: new T({
3942
3650
  default: (t == null ? void 0 : t.backgroundColor) ?? "0, 0, 30"
3943
3651
  })
3944
3652
  }
@@ -3965,40 +3673,40 @@ class ge extends z {
3965
3673
  }
3966
3674
  }
3967
3675
  export {
3968
- Nt as AlignSetting,
3969
- ce as AnimationSetting,
3970
- ge as BackgroundSettingSet,
3971
- de as BorderSettingSet,
3972
- Qt as ButtonSetting,
3973
- W as ColorSetting,
3974
- j as ColorWithOpacitySetting,
3975
- te as DimensionSetting,
3976
- oe as GapSetting,
3977
- he as GradientSetting,
3978
- pe as HeaderTypographySettingSet,
3979
- ee as HeightSetting,
3980
- Kt as HtmlSetting,
3981
- ae as MarginBottomSetting,
3982
- ue as MarginSettingGroup,
3983
- le as MarginTopSetting,
3984
- re as MultiLanguageSetting,
3985
- U as NumberSetting,
3986
- St as OpacitySetting,
3987
- se as SelectApiSettings,
3988
- at as SelectSetting,
3989
- T as Setting,
3990
- z as SettingGroup,
3991
- xt as StringSetting,
3992
- bt as TabSettingGroup,
3993
- bt as TabsSettingGroup,
3994
- ne as Toggle,
3995
- pt as UploadSetting,
3996
- ie as WidthSetting,
3997
- Yt as asSettingGroupWithSettings,
3998
- wt as createSettingGroup,
3999
- Zt as createTabSettingGroup,
4000
- X as isSetting,
4001
- ct as isSettingChild,
4002
- H as isSettingGroup,
4003
- K as iterateSettings
3676
+ Mt as AlignSetting,
3677
+ ve as AnimationSetting,
3678
+ we as BackgroundSettingSet,
3679
+ ye as BorderSettingSet,
3680
+ le as ButtonSetting,
3681
+ M as ColorSetting,
3682
+ T as ColorWithOpacitySetting,
3683
+ re as DimensionSetting,
3684
+ ue as GapSetting,
3685
+ Ce as GradientSetting,
3686
+ Ee as HeaderTypographySettingSet,
3687
+ ce as HeightSetting,
3688
+ ae as HtmlSetting,
3689
+ ge as MarginBottomSetting,
3690
+ be as MarginSettingGroup,
3691
+ me as MarginTopSetting,
3692
+ fe as MultiLanguageSetting,
3693
+ I as NumberSetting,
3694
+ Lt as OpacitySetting,
3695
+ de as SelectApiSettings,
3696
+ tt as SelectSetting,
3697
+ y as Setting,
3698
+ V as SettingGroup,
3699
+ Et as StringSetting,
3700
+ Ct as TabSettingGroup,
3701
+ Ct as TabsSettingGroup,
3702
+ pe as Toggle,
3703
+ rt as UploadSetting,
3704
+ he as WidthSetting,
3705
+ oe as asSettingGroupWithSettings,
3706
+ yt as createSettingGroup,
3707
+ ne as createTabSettingGroup,
3708
+ B as isSetting,
3709
+ st as isSettingChild,
3710
+ b as isSettingGroup,
3711
+ q as iterateSettings
4004
3712
  };