@platforma-sdk/ui-vue 1.42.0 → 1.42.2

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.
@@ -10,7 +10,7 @@ f.object({
10
10
  function A(e) {
11
11
  throw new Error("Unexpected object: " + e);
12
12
  }
13
- function W(e) {
13
+ function Z(e) {
14
14
  if (!e || typeof e != "object")
15
15
  return !1;
16
16
  const t = e;
@@ -160,7 +160,7 @@ function j(e, t) {
160
160
  const n = Math.floor(t / 8), r = 1 << 7 - t % 8;
161
161
  return (e[n] & r) > 0;
162
162
  }
163
- const C = { type: "absent" }, L = null;
163
+ const C = { type: "absent" }, $ = null;
164
164
  function oe(e) {
165
165
  return typeof e == "object" && e !== null && e.type === "absent";
166
166
  }
@@ -168,7 +168,7 @@ function ae(e, t, n = {}) {
168
168
  if (j(e.absent, t))
169
169
  return n.absent === void 0 ? C : n.absent;
170
170
  const r = e.data[t], o = e.type;
171
- if (O(r, o)) return n.na === void 0 ? L : n.na;
171
+ if (O(r, o)) return n.na === void 0 ? $ : n.na;
172
172
  switch (o) {
173
173
  case "Int":
174
174
  return r;
@@ -190,7 +190,7 @@ function l(e) {
190
190
  const { type: t, name: n, domain: r } = e, o = { type: t, name: n };
191
191
  return r && Object.entries(r).length > 0 && Object.assign(o, { domain: r }), o;
192
192
  }
193
- function $(e) {
193
+ function L(e) {
194
194
  return e.map(l);
195
195
  }
196
196
  function ie(e) {
@@ -526,7 +526,7 @@ function ye(e) {
526
526
  kind: e.kind,
527
527
  name: e.name
528
528
  };
529
- return e.domain !== void 0 && (t.domain = e.domain), h(e) && (t.axesSpec = $(e.axesSpec)), p(t);
529
+ return e.domain !== void 0 && (t.domain = e.domain), h(e) && (t.axesSpec = L(e.axesSpec)), p(t);
530
530
  }
531
531
  f.object({
532
532
  __isRef: f.literal(!0).describe("Crucial marker for the block dependency tree reconstruction"),
@@ -553,7 +553,7 @@ function be(e, t = !0) {
553
553
  function ge(e, t) {
554
554
  return e.ok ? { ok: !0, value: t(e.value) } : e;
555
555
  }
556
- function F(e) {
556
+ function U(e) {
557
557
  if (e instanceof Int8Array || e instanceof Uint8Array || e instanceof Uint8ClampedArray)
558
558
  return new DataView(e.buffer, e.byteOffset, e.byteLength);
559
559
  if (e instanceof ArrayBuffer) return new DataView(e);
@@ -561,17 +561,17 @@ function F(e) {
561
561
  "Expected `data` to be an ArrayBuffer, Buffer, Int8Array, Uint8Array or Uint8ClampedArray"
562
562
  );
563
563
  }
564
- const M = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", U = "0123456789ABCDEFGHIJKLMNOPQRSTUV", _ = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
565
- function z(e, t, n) {
564
+ const F = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", M = "0123456789ABCDEFGHIJKLMNOPQRSTUV", _ = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
565
+ function q(e, t, n) {
566
566
  n = n || {};
567
567
  let r, o;
568
568
  switch (t) {
569
569
  case "RFC3548":
570
570
  case "RFC4648":
571
- r = M, o = !0;
571
+ r = F, o = !0;
572
572
  break;
573
573
  case "RFC4648-HEX":
574
- r = U, o = !0;
574
+ r = M, o = !0;
575
575
  break;
576
576
  case "Crockford":
577
577
  r = _, o = !1;
@@ -579,7 +579,7 @@ function z(e, t, n) {
579
579
  default:
580
580
  throw new Error("Unknown base32 variant: " + String(t));
581
581
  }
582
- const s = n.padding !== void 0 ? n.padding : o, i = F(e);
582
+ const s = n.padding !== void 0 ? n.padding : o, i = U(e);
583
583
  let a = 0, c = 0, u = "";
584
584
  for (let d = 0; d < i.byteLength; d++)
585
585
  for (c = c << 8 | i.getUint8(d), a += 8; a >= 5; )
@@ -589,10 +589,10 @@ function z(e, t, n) {
589
589
  u += "=";
590
590
  return u;
591
591
  }
592
- const q = 15, H = 24, G = f.string().length(H).regex(/[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]/).brand("PlId");
592
+ const z = 15, H = 24, Q = f.string().length(H).regex(/[ABCDEFGHIJKLMNOPQRSTUVWXYZ234567]/).brand("PlId");
593
593
  function we() {
594
- const e = new Uint8Array(q);
595
- return crypto.getRandomValues(e), G.parse(z(e, "RFC4648"));
594
+ const e = new Uint8Array(z);
595
+ return crypto.getRandomValues(e), Q.parse(q(e, "RFC4648"));
596
596
  }
597
597
  function ve(e) {
598
598
  return p(e);
@@ -600,10 +600,10 @@ function ve(e) {
600
600
  function xe(e) {
601
601
  return JSON.parse(e);
602
602
  }
603
- function Q(e) {
604
- return e instanceof Error ? e.name === "AbortError" || Q(e.cause) : !1;
603
+ function G(e) {
604
+ return e instanceof Error ? e.name === "AbortError" || G(e.cause) : !1;
605
605
  }
606
- function X(e) {
606
+ function Y(e) {
607
607
  if (typeof e == "string")
608
608
  return `String value was thrown: ${e}`;
609
609
  if (e && typeof e == "object")
@@ -615,7 +615,7 @@ function X(e) {
615
615
  return `Non-Error value (${typeof e}) was thrown: ${e}`;
616
616
  }
617
617
  function Ae(e) {
618
- return e instanceof Error ? e : new Error(X(e));
618
+ return e instanceof Error ? e : new Error(Y(e));
619
619
  }
620
620
  function P(e) {
621
621
  const t = e.cause ? P(e.cause) : void 0, n = new Error(e.message, t !== void 0 ? { cause: t } : void 0);
@@ -629,13 +629,13 @@ function Pe(e) {
629
629
  export {
630
630
  ue as AnchoredIdDeriver,
631
631
  C as PTableAbsent,
632
- L as PTableNA,
632
+ $ as PTableNA,
633
633
  J as PValueBytesNA,
634
634
  N as PValueIntNA,
635
635
  b as PValueLongNA,
636
636
  I as PValueStringNA,
637
- G as PlId,
638
- q as PlIdBytes,
637
+ Q as PlId,
638
+ z as PlIdBytes,
639
639
  H as PlIdLength,
640
640
  ie as canonicalizeAxisId,
641
641
  ve as canonicalizeJson,
@@ -646,11 +646,11 @@ export {
646
646
  de as ensurePColumn,
647
647
  re as entriesToDataInfo,
648
648
  pe as extractAllColumns,
649
- $ as getAxesId,
649
+ L as getAxesId,
650
650
  l as getAxisId,
651
651
  ce as getPTableColumnId,
652
- Q as hasAbortError,
653
- W as isDataInfo,
652
+ G as hasAbortError,
653
+ Z as isDataInfo,
654
654
  S as isDataInfoEntries,
655
655
  K as isPColumn,
656
656
  h as isPColumnSpec,
@@ -56,7 +56,7 @@ import "../../colors/gradient.js";
56
56
  .resizable-input{position:relative;box-sizing:border-box;padding:0 8px;display:inline-block;max-width:100%;text-overflow:ellipsis;overflow:hidden}.resizable-input__size-span{font-family:inherit;white-space:pre;display:inline-block;font-size:inherit;line-height:inherit;box-sizing:border-box;position:relative;left:0;opacity:0;min-width:2px;-webkit-user-select:none;user-select:none;vertical-align:top}.resizable-input input{border:none;outline:none;height:100%;text-overflow:ellipsis;font-family:inherit;background:none;color:inherit;top:0;left:0;right:0;font-size:inherit;line-height:inherit;position:absolute;box-sizing:border-box}
57
57
  .pl-dropdown-multi{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}[data-theme=dark] .pl-dropdown-multi{--options-bg: #1B1B1F}.pl-dropdown-multi__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown-multi label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown-multi label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-multi__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);padding:1px;color:var(--txt-01)}.pl-dropdown-multi__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown-multi__options{position:absolute;top:0;z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown-multi__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown-multi__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown-multi__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown-multi__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:20px;background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown-multi__options .option{position:relative;padding:0 10px;height:var(--control-height);line-height:20px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:12px;--base-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.5%204.5H4.5L4.5%2019.5H19.5V4.5ZM4.5%203C3.67157%203%203%203.67157%203%204.5V19.5C3%2020.3284%203.67157%2021%204.5%2021H19.5C20.3284%2021%2021%2020.3284%2021%2019.5V4.5C21%203.67157%2020.3284%203%2019.5%203H4.5Z'%20fill='%23110529'/%3e%3c/svg%3e");--checked-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='3'%20y='3'%20width='18'%20height='18'%20rx='2'%20fill='%23110529'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.5431%208.51739L10.3333%2016.0877L6.45691%2012.0174L7.54312%2010.9829L10.3333%2013.9127L16.4569%207.48291L17.5431%208.51739Z'%20fill='white'/%3e%3c/svg%3e")}.pl-dropdown-multi__options .option .pl-dropdown-multi__checkmark{cursor:pointer;outline:none;border-radius:4px;background:var(--base-icon) no-repeat center;width:24px;height:24px}[data-theme=dark] .pl-dropdown-multi__options .option .pl-dropdown-multi__checkmark{--base-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.5%204.5H4.5L4.5%2019.5H19.5V4.5ZM4.5%203C3.67157%203%203%203.67157%203%204.5V19.5C3%2020.3284%203.67157%2021%204.5%2021H19.5C20.3284%2021%2021%2020.3284%2021%2019.5V4.5C21%203.67157%2020.3284%203%2019.5%203H4.5Z'%20fill='white'/%3e%3c/svg%3e");--checked-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='3'%20y='3'%20width='18'%20height='18'%20rx='2'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.5431%208.51739L10.3333%2016.0877L6.45691%2012.0174L7.54312%2010.9829L10.3333%2013.9127L16.4569%207.48291L17.5431%208.51739Z'%20fill='%23110529'/%3e%3c/svg%3e")}.pl-dropdown-multi__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown-multi__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown-multi__options .option.selected .pl-dropdown-multi__checkmark{background:var(--checked-icon) no-repeat center;width:24px;height:24px}.pl-dropdown-multi__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown-multi__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown-multi__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:20px;cursor:pointer;display:flex;flex-direction:row;align-items:center}.pl-dropdown-multi__field .chips-container{position:absolute;top:0;left:0;bottom:0;right:30px;overflow:hidden;padding:0 60px 0 11px;line-height:20px;color:var(--contour-color);display:flex;gap:8px;align-items:center}.pl-dropdown-multi__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 20px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown-multi__field input:focus{outline:none}.pl-dropdown-multi__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown-multi__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown-multi__field:hover .clear{display:block}.pl-dropdown-multi__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown-multi__controls .mask-16,.pl-dropdown-multi__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown-multi__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown-multi__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown-multi .arrow-icon{cursor:pointer}.pl-dropdown-multi .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-multi__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-multi__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-multi.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown-multi .clear{display:none;position:absolute;top:50%;transform:translateY(-50%);right:36px;z-index:1;background:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e") no-repeat center;width:16px;height:16px;cursor:pointer}.pl-dropdown-multi.open,.pl-dropdown-multi:focus-within{z-index:1}.pl-dropdown-multi.open .pl-dropdown-multi__container .label,.pl-dropdown-multi:focus-within .pl-dropdown-multi__container .label{color:var(--txt-focus)}.pl-dropdown-multi.open .pl-dropdown-multi__container{z-index:1000}.pl-dropdown-multi.open .pl-dropdown-multi__field{border-radius:6px 6px 0 0}.pl-dropdown-multi.open .arrow{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-multi:hover{--contour-color: var(--control-hover-color)}.pl-dropdown-multi:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown-multi:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown-multi.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown-multi.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none}.pl-dropdown-multi.disabled .mask-loading{animation:spin 2.5s linear infinite;--icon-color: var(--ic-accent)}.pl-dropdown-multi__open-chips-container{padding:12px}.pl-dropdown-multi__open-chips-container .pl-chip{margin-right:4px;margin-bottom:4px}
58
58
  .pl-log-view{--log-background: var(--bg-base-light);--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--border-color-log-view: var(--border-color-div-grey);height:100%;max-height:calc(100% - var(--contour-offset));max-width:calc(100% - var(--contour-offset));border-radius:6px;background:var(--log-background);display:flex;position:relative;min-height:44px;padding-right:40px}.pl-log-view__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--border-color-log-view);border-style:solid;box-shadow:none;z-index:0;pointer-events:none}.pl-log-view label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-log-view label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-log-view.has-error{--log-background: linear-gradient(90deg, #FFEBEB 0%, #FFFFFF 100%);--border-color-log-view: var(--border-color-error)}.pl-log-view__copy{position:absolute;top:12px;right:12px;cursor:pointer}.pl-log-view__copy .mask-24{--icon-color: var(--ic-02)}.pl-log-view__copy:hover .mask-24{--icon-color: var(--txt-01)}.pl-log-view__content{margin:12px;max-height:100%;max-width:100%;flex:1;color:var(--txt-01);font-feature-settings:"ss11" on,"ss15" on,"ss17" on;font-family:var(--font-family-monospace);white-space:pre;font-size:14px;font-weight:400;line-height:20px;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-log-view__content::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-log-view__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-log-view__content::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-log-view__error{margin:12px;max-height:100%;max-width:100%;flex:1;color:var(--txt-01);font-feature-settings:"ss11" on,"ss15" on,"ss17" on;font-family:var(--font-family-monospace);white-space:pre;font-size:14px;font-weight:400;line-height:20px;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-log-view__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-log-view__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-log-view__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
59
- .mi-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.mi-number-field ::placeholder{color:#cfd1db;opacity:1}.mi-number-field__main-wrapper{height:40px;position:relative}.mi-number-field__wrapper{padding-left:12px;border-radius:6px}.mi-number-field__wrapper.withoutArrows{padding-right:12px}.mi-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.mi-number-field__icon{line-height:0}.mi-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.mi-number-field__icon.disabled svg path{fill:#cfd1db}.mi-number-field__icon:hover{background-color:#9babcc29}.mi-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.mi-number-field__hint{margin-top:3px;color:var(--color-hint)}.mi-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.mi-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.mi-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.mi-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.mi-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.mi-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.mi-number-field.disabled label,.mi-number-field.disabled .mi-number-field__hint,.mi-number-field.disabled input{color:var(--contour-color)}.mi-number-field.disabled svg path{fill:var(--contour-color)}.mi-number-field.disabled .mi-number-field__icons{pointer-events:none}.mi-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.mi-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}
59
+ .pl-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.pl-number-field ::placeholder{color:#cfd1db;opacity:1}.pl-number-field__main-wrapper{height:40px;position:relative}.pl-number-field__wrapper{padding-left:12px;border-radius:6px}.pl-number-field__wrapper.withoutArrows{padding-right:12px}.pl-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.pl-number-field__icon{line-height:0}.pl-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.pl-number-field__icon.disabled svg path{fill:#cfd1db}.pl-number-field__icon:hover{background-color:#9babcc29}.pl-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.pl-number-field__hint{margin-top:3px;color:var(--color-hint)}.pl-number-field__error{margin-top:3px;color:var(--txt-error);font-size:12px;font-weight:500;line-height:16px}.pl-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.pl-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.pl-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.pl-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.pl-number-field.disabled label,.pl-number-field.disabled .mi-number-field__hint,.pl-number-field.disabled input{color:var(--contour-color)}.pl-number-field.disabled svg path{fill:var(--contour-color)}.pl-number-field.disabled .mi-number-field__icons{pointer-events:none}.pl-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.pl-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}
60
60
  .progress-cell{background-color:transparent;height:100%;position:relative;width:100%;overflow:hidden;border-radius:2px}.progress-cell .mask-error{--icon-color: var(--txt-error)}.progress-cell.not-started *{color:var(--txt-03)!important}.progress-cell.error *{color:var(--txt-error)!important}.progress-cell__white-bg{background-color:#fff}.progress-cell__indicator{position:absolute;height:100%;transition:width .4s ease-in-out;background:linear-gradient(90deg,#fff,#d8fac8);transition:width .2s ease-in-out}.progress-cell__body{padding:0 15px;display:flex;gap:12px;align-items:center;height:100%;width:100%;position:absolute;z-index:1}.progress-cell__stage{overflow:hidden;text-overflow:ellipsis;flex-shrink:1;text-wrap:nowrap}.progress-cell__percentage{flex-grow:1;flex-shrink:0;text-align:right}.progress-cell__stage--queued{color:var(--txt-03)}.progress-cell__infinity-loader{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;animation:move-gradient 2s linear infinite}.progress-cell__infinity-gradient{width:50%;height:100%;background:linear-gradient(90deg,#fff,#d8fac8,#fff)}@keyframes move-gradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}
61
61
  .pl-slide-modal{--padding-top: 0;--padding-bottom: 0;position:absolute;top:var(--title-bar-height);right:0;bottom:0;z-index:var(--z-slide-dialog);display:flex;flex-direction:column;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);min-width:368px;width:368px;max-width:100%;will-change:transform;background-color:#fff;border-left:1px solid var(--div-grey);box-shadow:0 8px 16px -4px #0f244d29,0 12px 32px -4px #0f244d29}.pl-slide-modal .close-dialog-btn{position:absolute;z-index:1;top:12px;right:12px;cursor:pointer;background-color:#d3d7e0;mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:24px;-webkit-mask-size:24px;width:24px;height:24px}.pl-slide-modal .close-dialog-btn:hover{background-color:var(--main-dark-color)}.pl-slide-modal.has-title{--padding-top: 0}.pl-slide-modal.has-actions{--padding-bottom: 0}.pl-slide-modal__title{display:flex;align-items:center;font-family:var(--font-family-base);font-size:28px;font-style:normal;font-weight:500;line-height:40px;letter-spacing:-.56px;padding:24px;width:100%;overflow:hidden}.pl-slide-modal__title-content{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}.pl-slide-modal__actions{display:flex;align-items:center;gap:6px;min-height:88px;padding:0 24px}.pl-slide-modal__actions button{min-width:160px}.pl-slide-modal__content{flex:1;display:flex;flex-direction:column;gap:24px;padding:16px calc(24px - var(--scrollbar-width)) 16px 24px;margin:0;--thumb-color: var(--ic-02);overflow-y:auto;scrollbar-gutter:stable}.pl-slide-modal__content::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-slide-modal__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-slide-modal__content::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-slide-modal__shadow{position:absolute;z-index:var(--z-slide-shadow);top:var(--title-bar-height);left:0;right:0;bottom:0;background-color:#000000a3}
62
62
  .pl-status-tag{border-radius:4px;border:1px solid var(--txt-01);padding:2px 8px;width:fit-content;height:24px}.pl-status-tag.ok{background:var(--notification-success)}.pl-status-tag.warn{background:var(--notification-warning)}.pl-status-tag.alert{background:var(--notification-error)}.pl-status-tag.hold{background:var(--notification-neutral)}
@@ -1,4 +1,4 @@
1
- import { defineComponent as M, reactive as P, useSlots as j, computed as i, watch as I, ref as q, createElementBlock as n, openBlock as o, Fragment as S, createElementVNode as u, createVNode as D, normalizeClass as B, createCommentVNode as s, withModifiers as N, withKeys as H, createBlock as p, normalizeStyle as K, toDisplayString as c, unref as r, withCtx as L, renderSlot as Q, createTextVNode as R } from "vue";
1
+ import { defineComponent as M, reactive as P, useSlots as I, computed as i, watch as j, ref as q, createElementBlock as n, openBlock as o, Fragment as S, createElementVNode as u, createVNode as D, normalizeClass as B, createCommentVNode as s, withModifiers as N, withKeys as H, createBlock as p, normalizeStyle as K, toDisplayString as c, unref as r, withCtx as L, renderSlot as Q, createTextVNode as R } from "vue";
2
2
  import { prettyBytes as x } from "../../lib/util/helpers/dist/index.js";
3
3
  import "../../sdk/model/dist/index.js";
4
4
  import U from "../../generated/components/svg/images/SvgRequired.vue2.js";
@@ -52,7 +52,7 @@ const ee = {
52
52
  const a = P({
53
53
  fileDialogOpen: !1,
54
54
  error: void 0
55
- }), _ = j(), g = v, l = h, b = (e, t) => {
55
+ }), _ = I(), g = v, l = h, b = (e, t) => {
56
56
  if (e)
57
57
  try {
58
58
  return t(e);
@@ -70,10 +70,10 @@ const ee = {
70
70
  } : {};
71
71
  }), C = () => {
72
72
  a.fileDialogOpen = !0;
73
- }, F = (e) => {
73
+ }, $ = (e) => {
74
74
  e.files.length && g("update:modelValue", e.files[0]);
75
- }, $ = () => g("update:modelValue", void 0);
76
- I(
75
+ }, F = () => g("update:modelValue", void 0);
76
+ j(
77
77
  () => l.modelValue,
78
78
  () => a.error = void 0,
79
79
  { immediate: !0 }
@@ -133,7 +133,7 @@ const ee = {
133
133
  key: 6,
134
134
  class: "pl-file-input__clear",
135
135
  name: "close",
136
- onClick: N($, ["stop"])
136
+ onClick: N(F, ["stop"])
137
137
  })) : s("", !0),
138
138
  D(A, { class: "pl-file-input__contour" })
139
139
  ], 34),
@@ -145,7 +145,7 @@ const ee = {
145
145
  "close-on-outside-click": e.fileDialogCloseOnOutsideClick,
146
146
  extensions: e.extensions,
147
147
  title: e.fileDialogTitle,
148
- "onImport:files": F
148
+ "onImport:files": $
149
149
  }, null, 8, ["modelValue", "close-on-outside-click", "extensions", "title"])
150
150
  ], 64));
151
151
  }
@@ -1,26 +1,29 @@
1
- import { defineComponent as A, mergeModels as F, useModel as j, ref as f, useSlots as I, computed as d, watch as z, createElementBlock as v, openBlock as m, normalizeClass as p, createElementVNode as t, createCommentVNode as b, createVNode as T, withDirectives as U, createTextVNode as q, createBlock as Y, toDisplayString as C, unref as O, withCtx as Z, renderSlot as J, vModelText as K } from "vue";
2
- import P from "../../utils/DoubleContour.vue.js";
3
- import { useLabelNotch as Q } from "../../utils/useLabelNotch.js";
4
- import W from "../PlTooltip/PlTooltip.vue.js";
1
+ import { defineComponent as A, mergeModels as S, useModel as j, useSlots as z, ref as v, computed as u, watch as F, createElementBlock as f, openBlock as c, normalizeClass as m, createElementVNode as t, createCommentVNode as b, createVNode as T, withDirectives as U, createTextVNode as $, createBlock as q, toDisplayString as L, unref as M, withCtx as R, renderSlot as Y, vModelText as Z } from "vue";
2
+ import J from "../../utils/DoubleContour.vue.js";
3
+ import { useLabelNotch as K } from "../../utils/useLabelNotch.js";
4
+ import P from "../PlTooltip/PlTooltip.vue.js";
5
+ import { parseNumber as C } from "./parseNumber.js";
5
6
  (function() {
6
7
  try {
7
8
  if (typeof document < "u") {
8
- var s = document.createElement("style");
9
- s.appendChild(document.createTextNode(".mi-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.mi-number-field ::placeholder{color:#cfd1db;opacity:1}.mi-number-field__main-wrapper{height:40px;position:relative}.mi-number-field__wrapper{padding-left:12px;border-radius:6px}.mi-number-field__wrapper.withoutArrows{padding-right:12px}.mi-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.mi-number-field__icon{line-height:0}.mi-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.mi-number-field__icon.disabled svg path{fill:#cfd1db}.mi-number-field__icon:hover{background-color:#9babcc29}.mi-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.mi-number-field__hint{margin-top:3px;color:var(--color-hint)}.mi-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.mi-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.mi-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.mi-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.mi-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.mi-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.mi-number-field.disabled label,.mi-number-field.disabled .mi-number-field__hint,.mi-number-field.disabled input{color:var(--contour-color)}.mi-number-field.disabled svg path{fill:var(--contour-color)}.mi-number-field.disabled .mi-number-field__icons{pointer-events:none}.mi-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.mi-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}")), document.head.appendChild(s);
9
+ var d = document.createElement("style");
10
+ d.appendChild(document.createTextNode(".pl-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.pl-number-field ::placeholder{color:#cfd1db;opacity:1}.pl-number-field__main-wrapper{height:40px;position:relative}.pl-number-field__wrapper{padding-left:12px;border-radius:6px}.pl-number-field__wrapper.withoutArrows{padding-right:12px}.pl-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.pl-number-field__icon{line-height:0}.pl-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.pl-number-field__icon.disabled svg path{fill:#cfd1db}.pl-number-field__icon:hover{background-color:#9babcc29}.pl-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.pl-number-field__hint{margin-top:3px;color:var(--color-hint)}.pl-number-field__error{margin-top:3px;color:var(--txt-error);font-size:12px;font-weight:500;line-height:16px}.pl-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.pl-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.pl-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.pl-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.pl-number-field.disabled label,.pl-number-field.disabled .mi-number-field__hint,.pl-number-field.disabled input{color:var(--contour-color)}.pl-number-field.disabled svg path{fill:var(--contour-color)}.pl-number-field.disabled .mi-number-field__icons{pointer-events:none}.pl-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.pl-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}")), document.head.appendChild(d);
10
11
  }
11
- } catch (l) {
12
- console.error("vite-plugin-css-injected-by-js", l);
12
+ } catch (o) {
13
+ console.error("vite-plugin-css-injected-by-js", o);
13
14
  }
14
15
  })();
15
- const G = { class: "mi-number-field__main-wrapper d-flex" }, H = {
16
+ const Q = { class: "pl-number-field__main-wrapper d-flex" }, W = {
16
17
  key: 0,
17
18
  class: "text-description"
18
- }, R = ["disabled", "placeholder"], X = {
19
+ }, X = ["disabled", "placeholder"], G = {
19
20
  key: 0,
20
- class: "mi-number-field__hint text-description"
21
+ class: "pl-number-field__error"
22
+ }, H = {
23
+ name: "PlNumberField"
21
24
  }, ie = /* @__PURE__ */ A({
22
- __name: "PlNumberField",
23
- props: /* @__PURE__ */ F({
25
+ ...H,
26
+ props: /* @__PURE__ */ S({
24
27
  disabled: { type: Boolean },
25
28
  label: { default: void 0 },
26
29
  placeholder: { default: void 0 },
@@ -36,136 +39,121 @@ const G = { class: "mi-number-field__main-wrapper d-flex" }, H = {
36
39
  modelModifiers: {}
37
40
  }),
38
41
  emits: ["update:modelValue"],
39
- setup(s) {
40
- const l = s, n = j(s, "modelValue"), w = f(), E = I(), c = f();
41
- Q(w);
42
- function h(e) {
43
- return e === void 0 ? "" : String(+e);
44
- }
42
+ setup(d) {
43
+ const o = d, i = j(d, "modelValue"), E = z(), w = v(), p = v();
44
+ K(w);
45
45
  function g(e) {
46
- return e === "." || e === "," || e === "-";
47
- }
48
- function _(e) {
49
- if (e === "")
50
- return;
51
- if (g(e))
52
- return 0;
53
- let o = e;
54
- return o = o.replace(",", "."), o = o.replace("−", "-"), o = o.replace("–", "-"), o = o.replace("+", ""), parseFloat(o);
46
+ return e === void 0 ? "" : String(+e);
55
47
  }
56
- const i = f(h(n.value)), a = d(() => _(i.value));
57
- z(() => n.value, (e) => {
58
- parseFloat(i.value) !== e && (i.value = h(e));
48
+ const n = u(() => C(o, s.value)), x = v(void 0), N = () => x.value = void 0;
49
+ F(i, (e) => {
50
+ const l = n.value;
51
+ (l.error || e !== l.value) && N();
59
52
  });
60
- const D = /^[-−–+]?(\d+)?[\\.,]?(\d+)?$/, V = d({
53
+ const s = u({
61
54
  get() {
62
- return i.value;
55
+ return x.value ?? g(i.value);
63
56
  },
64
57
  set(e) {
65
- const o = _(e);
66
- o === void 0 || e.match(D) && !isNaN(o) ? (i.value = e, !l.updateOnEnterOrClickOutside && !g(e) && k()) : c.value && (c.value.value = i.value);
58
+ const l = C(o, e);
59
+ x.value = l.cleanInput, l.error || o.updateOnEnterOrClickOutside ? p.value.value = l.cleanInput : i.value = l.value;
67
60
  }
68
- }), y = f(!1);
69
- function k() {
70
- if (i.value === "") {
71
- n.value = void 0;
72
- return;
73
- }
74
- n.value = a.value;
61
+ }), _ = v(!1);
62
+ function O() {
63
+ n.value.error === void 0 && (i.value = n.value.value);
75
64
  }
76
- const x = d(() => {
65
+ const h = u(() => {
77
66
  let e = [];
78
- l.errorMessage && e.push(l.errorMessage);
79
- const o = a.value;
80
- if (o !== void 0 && isNaN(o))
81
- e.push("Value is not a number");
82
- else if (l.validate && o !== void 0) {
83
- const r = l.validate(o);
67
+ o.errorMessage && e.push(o.errorMessage);
68
+ const l = n.value;
69
+ if (l.error)
70
+ e.push(l.error.message);
71
+ else if (o.validate && l.value !== void 0) {
72
+ const r = o.validate(l.value);
84
73
  r && e.push(r);
85
- } else
86
- l.minValue !== void 0 && o !== void 0 && o < l.minValue && e.push(`Value must be higher than ${l.minValue}`), l.maxValue !== void 0 && o !== void 0 && o > l.maxValue && e.push(`Value must be less than ${l.maxValue}`);
74
+ }
87
75
  return e = [...e], e.join(" ");
88
- }), B = d(() => {
89
- const e = a.value;
90
- return l.maxValue !== void 0 && e !== void 0 ? e >= l.maxValue : !1;
91
- }), L = d(() => {
92
- const e = a.value;
93
- return l.minValue !== void 0 && e !== void 0 ? e <= l.minValue : !1;
94
- }), u = d(
76
+ }), y = u(() => {
77
+ const e = n.value;
78
+ return o.maxValue !== void 0 && e.value !== void 0 ? e.value >= o.maxValue : !1;
79
+ }), V = u(() => {
80
+ const e = n.value;
81
+ return o.minValue !== void 0 && e.value !== void 0 ? e.value <= o.minValue : !1;
82
+ }), a = u(
95
83
  () => {
96
84
  var e;
97
- return 10 ** (((e = l.step.toString().split(".").at(1)) == null ? void 0 : e.length) ?? 0);
85
+ return 10 ** (((e = o.step.toString().split(".").at(1)) == null ? void 0 : e.length) ?? 0);
98
86
  }
99
87
  );
100
- function M() {
101
- const e = a.value;
102
- if (!B.value) {
103
- let o;
104
- e === void 0 ? o = l.minValue ? l.minValue : 0 : o = ((e || 0) * u.value + l.step * u.value) / u.value, n.value = l.maxValue !== void 0 ? Math.min(l.maxValue, o) : o;
88
+ function k() {
89
+ const e = n.value.value;
90
+ if (!y.value) {
91
+ let l;
92
+ e === void 0 ? l = o.minValue ? o.minValue : 0 : l = ((e || 0) * a.value + o.step * a.value) / a.value, i.value = o.maxValue !== void 0 ? Math.min(o.maxValue, l) : l;
105
93
  }
106
94
  }
107
- function N() {
108
- const e = a.value;
109
- if (!L.value) {
110
- let o;
111
- e === void 0 ? o = 0 : o = ((e || 0) * u.value - l.step * u.value) / u.value, n.value = l.minValue !== void 0 ? Math.max(l.minValue, o) : o;
95
+ function B() {
96
+ const e = n.value.value;
97
+ if (!V.value) {
98
+ let l;
99
+ e === void 0 ? l = 0 : l = ((e || 0) * a.value - o.step * a.value) / a.value, i.value = o.minValue !== void 0 ? Math.max(o.minValue, l) : l;
112
100
  }
113
101
  }
114
- function S(e) {
115
- var o, r;
116
- l.updateOnEnterOrClickOutside && (e.code === "Escape" && (i.value = h(n.value), (o = c.value) == null || o.blur()), e.code === "Enter" && ((r = c.value) == null || r.blur())), e.code === "Enter" && (i.value = String(n.value)), ["ArrowDown", "ArrowUp"].includes(e.code) && e.preventDefault(), l.useIncrementButtons && e.code === "ArrowUp" && M(), l.useIncrementButtons && e.code === "ArrowDown" && N();
102
+ function I(e) {
103
+ var l, r;
104
+ o.updateOnEnterOrClickOutside && (e.code === "Escape" && (s.value = g(i.value), (l = p.value) == null || l.blur()), e.code === "Enter" && ((r = p.value) == null || r.blur())), e.code === "Enter" && (s.value = String(i.value)), ["ArrowDown", "ArrowUp"].includes(e.code) && e.preventDefault(), o.useIncrementButtons && e.code === "ArrowUp" && k(), o.useIncrementButtons && e.code === "ArrowDown" && B();
117
105
  }
118
- const $ = (e) => {
106
+ const D = (e) => {
119
107
  e.detail > 1 && e.preventDefault();
120
108
  };
121
- return (e, o) => (m(), v("div", {
122
- ref_key: "root",
109
+ return (e, l) => (c(), f("div", {
110
+ ref_key: "rootRef",
123
111
  ref: w,
124
- class: p([{ error: !!x.value.trim(), disabled: e.disabled }, "mi-number-field d-flex-column"]),
125
- onKeydown: o[3] || (o[3] = (r) => S(r))
112
+ class: m([{ error: !!h.value.trim(), disabled: e.disabled }, "pl-number-field d-flex-column"]),
113
+ onKeydown: l[3] || (l[3] = (r) => I(r))
126
114
  }, [
127
- t("div", G, [
128
- T(P, { class: "mi-number-field__contour" }),
115
+ t("div", Q, [
116
+ T(J, { class: "pl-number-field__contour" }),
129
117
  t("div", {
130
- class: p(["mi-number-field__wrapper flex-grow d-flex flex-align-center", { withoutArrows: !e.useIncrementButtons }])
118
+ class: m(["pl-number-field__wrapper flex-grow d-flex flex-align-center", { withoutArrows: !e.useIncrementButtons }])
131
119
  }, [
132
- e.label ? (m(), v("label", H, [
133
- q(C(e.label) + " ", 1),
134
- O(E).tooltip ? (m(), Y(O(W), {
120
+ e.label ? (c(), f("label", W, [
121
+ $(L(e.label) + " ", 1),
122
+ M(E).tooltip ? (c(), q(M(P), {
135
123
  key: 0,
136
124
  class: "info",
137
125
  position: "top"
138
126
  }, {
139
- tooltip: Z(() => [
140
- J(e.$slots, "tooltip")
127
+ tooltip: R(() => [
128
+ Y(e.$slots, "tooltip")
141
129
  ]),
142
130
  _: 3
143
131
  })) : b("", !0)
144
132
  ])) : b("", !0),
145
133
  U(t("input", {
146
- ref_key: "input",
147
- ref: c,
148
- "onUpdate:modelValue": o[0] || (o[0] = (r) => V.value = r),
134
+ ref_key: "inputRef",
135
+ ref: p,
136
+ "onUpdate:modelValue": l[0] || (l[0] = (r) => s.value = r),
149
137
  disabled: e.disabled,
150
138
  placeholder: e.placeholder,
151
139
  class: "text-s flex-grow",
152
- onFocusin: o[1] || (o[1] = (r) => y.value = !0),
153
- onFocusout: o[2] || (o[2] = (r) => {
154
- y.value = !1, k();
140
+ onFocusin: l[1] || (l[1] = (r) => _.value = !0),
141
+ onFocusout: l[2] || (l[2] = (r) => {
142
+ _.value = !1, O();
155
143
  })
156
- }, null, 40, R), [
157
- [K, V.value]
144
+ }, null, 40, X), [
145
+ [Z, s.value]
158
146
  ])
159
147
  ], 2),
160
- e.useIncrementButtons ? (m(), v("div", {
148
+ e.useIncrementButtons ? (c(), f("div", {
161
149
  key: 0,
162
- class: "mi-number-field__icons d-flex-column",
163
- onMousedown: $
150
+ class: "pl-number-field__icons d-flex-column",
151
+ onMousedown: D
164
152
  }, [
165
153
  t("div", {
166
- class: p([{ disabled: B.value }, "mi-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
167
- onClick: M
168
- }, o[4] || (o[4] = [
154
+ class: m([{ disabled: y.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
155
+ onClick: k
156
+ }, l[4] || (l[4] = [
169
157
  t("svg", {
170
158
  xmlns: "http://www.w3.org/2000/svg",
171
159
  width: "16",
@@ -182,9 +170,9 @@ const G = { class: "mi-number-field__main-wrapper d-flex" }, H = {
182
170
  ], -1)
183
171
  ]), 2),
184
172
  t("div", {
185
- class: p([{ disabled: L.value }, "mi-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
186
- onClick: N
187
- }, o[5] || (o[5] = [
173
+ class: m([{ disabled: V.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
174
+ onClick: B
175
+ }, l[5] || (l[5] = [
188
176
  t("svg", {
189
177
  xmlns: "http://www.w3.org/2000/svg",
190
178
  width: "16",
@@ -202,7 +190,7 @@ const G = { class: "mi-number-field__main-wrapper d-flex" }, H = {
202
190
  ]), 2)
203
191
  ], 32)) : b("", !0)
204
192
  ]),
205
- x.value.trim() ? (m(), v("div", X, C(x.value), 1)) : b("", !0)
193
+ h.value.trim() ? (c(), f("div", G, L(h.value), 1)) : b("", !0)
206
194
  ], 34));
207
195
  }
208
196
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PlNumberField.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlNumberField/PlNumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport './pl-number-field.scss';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlTooltip } from '../PlTooltip';\n\ntype NumberInputProps = {\n /** Input is disabled if true */\n disabled?: boolean;\n /** Label on the top border of the field, empty by default */\n label?: string;\n /** Input placeholder, empty by default */\n placeholder?: string;\n /** Step for increment/decrement buttons, 1 by default */\n step?: number;\n /** If defined - show an error if value is lower */\n minValue?: number;\n /** If defined - show an error if value is higher */\n maxValue?: number;\n /** If false - remove buttons on the right */\n useIncrementButtons?: boolean;\n /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside) */\n updateOnEnterOrClickOutside?: boolean;\n /** Error message that shows always when it's provided, without other checks */\n errorMessage?: string;\n /** Additional validity check for input value that must return an error text if failed */\n validate?: (v: number) => string | undefined;\n};\n\nconst props = withDefaults(defineProps<NumberInputProps>(), {\n step: 1,\n label: undefined,\n placeholder: undefined,\n minValue: undefined,\n maxValue: undefined,\n useIncrementButtons: true,\n updateOnEnter: false,\n errorMessage: undefined,\n validate: undefined,\n});\n\nconst modelValue = defineModel<number | undefined>({ required: true });\n\nconst root = ref<HTMLElement>();\nconst slots = useSlots();\nconst input = ref<HTMLInputElement>();\n\nuseLabelNotch(root);\n\nfunction modelToString(v: number | undefined) {\n return v === undefined ? '' : String(+v); // (+v) to avoid staying in input non-number values if they are provided in model\n}\n\nfunction isPartial(v: string) {\n return v === '.' || v === ',' || v === '-';\n}\nfunction stringToModel(v: string) {\n if (v === '') {\n return undefined;\n }\n if (isPartial(v)) {\n return 0;\n }\n let forParsing = v;\n forParsing = forParsing.replace(',', '.');\n forParsing = forParsing.replace('−', '-'); // minus, replacing for the case of input the whole copied value\n forParsing = forParsing.replace('–', '-'); // dash, replacing for the case of input the whole copied value\n forParsing = forParsing.replace('+', '');\n return parseFloat(forParsing);\n}\n\nconst innerTextValue = ref(modelToString(modelValue.value));\nconst innerNumberValue = computed(() => stringToModel(innerTextValue.value));\n\nwatch(() => modelValue.value, (outerValue) => { // update inner value if outer value is changed\n if (parseFloat(innerTextValue.value) !== outerValue) {\n innerTextValue.value = modelToString(outerValue);\n }\n});\n\nconst NUMBER_REGEX = /^[-−–+]?(\\d+)?[\\\\.,]?(\\d+)?$/; // parseFloat works without errors on strings with multiple dots, or letters in value\nconst inputValue = computed({\n get() {\n return innerTextValue.value;\n },\n set(nextValue: string) {\n const parsedValue = stringToModel(nextValue);\n // we allow to set empty value or valid numeric value, otherwise reset input value to previous valid\n if (parsedValue === undefined\n || (nextValue.match(NUMBER_REGEX) && !isNaN(parsedValue))\n ) {\n innerTextValue.value = nextValue;\n if (!props.updateOnEnterOrClickOutside && !isPartial(nextValue)) { // to avoid applying '-' or '.'\n applyChanges();\n }\n } else if (input.value) {\n input.value.value = innerTextValue.value;\n }\n },\n});\nconst focused = ref(false);\n\nfunction applyChanges() {\n if (innerTextValue.value === '') {\n modelValue.value = undefined;\n return;\n }\n modelValue.value = innerNumberValue.value;\n}\n\nconst errors = computed(() => {\n let ers: string[] = [];\n if (props.errorMessage) {\n ers.push(props.errorMessage);\n }\n const parsedValue = innerNumberValue.value;\n if (parsedValue !== undefined && isNaN(parsedValue)) {\n ers.push('Value is not a number');\n } else if (props.validate && parsedValue !== undefined) {\n const error = props.validate(parsedValue);\n if (error) {\n ers.push(error);\n }\n } else {\n if (props.minValue !== undefined && parsedValue !== undefined && parsedValue < props.minValue) {\n ers.push(`Value must be higher than ${props.minValue}`);\n }\n if (props.maxValue !== undefined && parsedValue !== undefined && parsedValue > props.maxValue) {\n ers.push(`Value must be less than ${props.maxValue}`);\n }\n }\n\n ers = [...ers];\n\n return ers.join(' ');\n});\n\nconst isIncrementDisabled = computed(() => {\n const parsedValue = innerNumberValue.value;\n if (props.maxValue !== undefined && parsedValue !== undefined) {\n return parsedValue >= props.maxValue;\n }\n return false;\n});\n\nconst isDecrementDisabled = computed(() => {\n const parsedValue = innerNumberValue.value;\n if (props.minValue !== undefined && parsedValue !== undefined) {\n return parsedValue <= props.minValue;\n }\n return false;\n});\n\nconst multiplier = computed(() =>\n 10 ** (props.step.toString().split('.').at(1)?.length ?? 0),\n);\n\nfunction increment() {\n const parsedValue = innerNumberValue.value;\n if (!isIncrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = props.minValue ? props.minValue : 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n + props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.maxValue !== undefined ? Math.min(props.maxValue, nV) : nV;\n }\n}\n\nfunction decrement() {\n const parsedValue = innerNumberValue.value;\n if (!isDecrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n - props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.minValue !== undefined ? Math.max(props.minValue, nV) : nV;\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (props.updateOnEnterOrClickOutside) {\n if (e.code === 'Escape') {\n innerTextValue.value = modelToString(modelValue.value);\n input.value?.blur();\n }\n if (e.code === 'Enter') {\n input.value?.blur();\n }\n }\n\n if (e.code === 'Enter') {\n innerTextValue.value = String(modelValue.value); // to make .1 => 0.1, 10.00 => 10, remove leading zeros etc\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n }\n if (props.useIncrementButtons && e.code === 'ArrowUp') {\n increment();\n }\n if (props.useIncrementButtons && e.code === 'ArrowDown') {\n decrement();\n }\n}\n\n// https://stackoverflow.com/questions/880512/prevent-text-selection-after-double-click#:~:text=If%20you%20encounter%20a%20situation,none%3B%20to%20the%20summary%20element.\n// this prevents selecting of more than input content in some cases,\n// but also disable selecting input content by double-click (useful feature)\nconst onMousedown = (ev: MouseEvent) => {\n if (ev.detail > 1) {\n ev.preventDefault();\n }\n};\n</script>\n\n<template>\n <div\n ref=\"root\"\n :class=\"{ error: !!errors.trim(), disabled: disabled }\"\n class=\"mi-number-field d-flex-column\"\n @keydown=\"handleKeyPress($event)\"\n >\n <div class=\"mi-number-field__main-wrapper d-flex\">\n <DoubleContour class=\"mi-number-field__contour\"/>\n <div\n class=\"mi-number-field__wrapper flex-grow d-flex flex-align-center\"\n :class=\"{withoutArrows: !useIncrementButtons}\"\n >\n <label v-if=\"label\" class=\"text-description\">\n {{ label }}\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\"/>\n </template>\n </PlTooltip>\n </label>\n <input\n ref=\"input\"\n v-model=\"inputValue\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n class=\"text-s flex-grow\"\n @focusin=\"focused = true\"\n @focusout=\"focused = false; applyChanges()\"\n />\n </div>\n <div v-if=\"useIncrementButtons\" class=\"mi-number-field__icons d-flex-column\" @mousedown=\"onMousedown\">\n <div\n :class=\"{ disabled: isIncrementDisabled }\"\n class=\"mi-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"increment\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8 4.93933L13.5303 10.4697L12.4697 11.5303L8 7.06065L3.53033 11.5303L2.46967 10.4697L8 4.93933Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n <div\n :class=\"{ disabled: isDecrementDisabled }\"\n class=\"mi-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"decrement\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.46967 6.53033L3.53033 5.46967L8 9.93934L12.4697 5.46967L13.5303 6.53033L8 12.0607L2.46967 6.53033Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div v-if=\"errors.trim()\" class=\"mi-number-field__hint text-description\">\n {{ errors }}\n </div>\n </div>\n</template>\n"],"names":["w","__props","useLabelNotch","t","a","A","g","v","D","T","d","X","x","h","forParsing","l","watch","o","V","r","s","P","NUMBER_REGEX","O","y","parsedValue","nextValue","B","k","innerTextValue","ers","props","error","i","computed","M","nV","N","_","ev"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BA,MAAAA,GAAcC;AAkBdC,UAAkBC,IAAAH,GAAAI,IAAAC,EAAAL,GAAA,YAAA,GAAAM,IAAAC,EAAA,GAAAC,IAAAC,EAAA,GAAAC,IAAAH,EAAA;AAElBI,IAAAA,EAAAL,CAAA;AACE,aAAOC,EAAM,GAAA;AAA0B,aAAA,MAAA,SAAA,KAAA,OAAA,CAAA,CAAA;AAAA,IAGzC;AACE,aAAOA,EAAM,GAAA;AAA0B,aAAA,MAAA,OAAA,MAAA,OAAA,MAAA;AAAA,IAEzC;AACE,aAAUK,EAAA,GAAA;AACD,UAAA,MAAA;AAEL;AACK,UAAAC,EAAA,CAAA;AAET,eAAiBN;AACJO,UAAAA,IAAAA;AAIe,aAAAC,IAAAA,EAAA,QAAA,KAAA,GAAA,GAAAA,IAAAA,EAAA,QAAA,KAAA,GAAA,GAAAA,IAAAA,EAAA,QAAA,KAAA,GAAA,GAAAA,IAAAA,EAAA,QAAA,KAAA,EAAA,GAAA,WAAAA,CAAA;AAAA,IAG9B;AAGAC,UAAMC,IAAiBV,EAAAW,EAAAd,EAAA,KAAuB,CAAA,GAAAe,IAAAC,EAAA,MAAAR,EAAAK,EAAA,KAAA,CAAA;AACxCI,IAAAA,EAAA,MAAAjB,EAAA,OAA+B,CAAA,MAAA;AAGpC,iBAAAa,EAAA,KAAA,MAAA,MAAAA,EAAA,QAAAC,EAAA,CAAA;AAAA,IAED,CAAMI;AACsB,UACpBC,IAAA,gCAAAC,IAAAJ,EAAA;AAAA,MACJ,MAAA;AACF,eAAAH,EAAA;AAAA;MAEQQ,IAAAA,GAAAA;AAEFA,cAAgBV,IACdW,EAAAA,CAAAA;AAQN,QAAAX,MAAA,UAAA,EAAA,MAAAQ,CAAA,KAAA,CAAA,MAAAR,CAAA,KAAAE,EAAA,QAAA,GAAA,CAAAd,EAAA,+BAAA,CAAAU,EAAA,CAAA,KAAAc,EAAA,KAAAjB,EAAA,UAAAA,EAAA,MAAA,QAAAO,EAAA;AAAA,MAAA;AAAA,IAKJ,CAAA,GAAAW,IAAArB,EAAwB,EAAA;AAClBsB;AACF,UAAWZ,EAAQ,UAAA,IAAA;AACnB,QAAAb,EAAA,QAAA;AAAA;AAAA,MAEF;AAAoC,MAAAA,EAAA,QAAAe,EAAA;AAAA,IAGhC;AACJ,UAAIW,IAAgBV,EAAC,MAAA;AACjBW,UAAM,IAAA,CAAA;AAGV,MAAA5B,EAAA,gBAAqC,EAAA,KAAAA,EAAA,YAAA;AACjCsB,YAAAA,IAAgBN,EAAa;AAC/BW,UAAIf,MAA4B,UAAA,MAAAA,CAAA;AACvBgB,UAAAA,KAAAA,uBAA6C;AAAA,eAChDC,EAAAA,YAAuBP,MAAW,QAAA;AACpCO,cACEC,IAAA9B,EAAK6B,SAAKjB,CAAA;AAChB,QAAAkB,KAAA,EAAA,KAAAA,CAAA;AAAA,MAEA;AAQI,QAAA9B,EAAA,aAEC2B,UAAYf,MAAA,UAAAA,IAAAZ,EAAA,YAAA,EAAA,KAAA,6BAAAA,EAAA,QAAA,EAAA,GAAAA,EAAA,aAAA,UAAAY,MAAA,UAAAA,IAAAZ,EAAA,YAAA,EAAA,KAAA,2BAAAA,EAAA,QAAA,EAAA;AACpB,aAE2B+B,IAAe,CAAA,GAAA,CAAA,GAAA,EAAA,KAAA,GAAA;AAAA,IACzC,CAAA,GAAAC,IAAMV,QAA+B;AACrC,YAAA,IAAuBN,EAAA;AAIxB,aAE2Be,EAAe,aAAA,UAAA,MAAA,SAAA,KAAA/B,EAAA,WAAA;AAAA,IACzC,CAAA,GAAA,IAAMsB,QAA+B;AACrC,YAAA,IAAuBN,EAAA;aAMNe,EAAAA,aAAAA,UAAAA,MAAAA,SAAAA,KAAAA,EAAAA,WAAAA;AAAAA,IAAA,CAAA,GAAS,IAAAd;AAAAA;AAC1B,YAAA;AAAyD,eAAA,SAAA,IAAAjB,EAAA,KAAA,SAAA,EAAA,MAAA,GAAA,EAAA,GAAA,CAAA,MAAA,OAAA,SAAA,EAAA,WAAA;AAAA,MAAA;AAAA,IAG3D;AACE,iBAAqC;AACjC,gBAA4BgB,EAAA;AAC1BiB,UAAAA,CAAAA,EAAAA,OAAAA;AACAX,YAAgBV;AAO6D,cAAA,SAAAA,IAAAZ,EAAA,WAAAA,EAAA,WAAA,IAAAY,MAAA,KAAA,KAAA,EAAA,QAAAZ,EAAA,OAAA,EAAA,SAAA,EAAA,OAAAC,EAAA,QAAAD,EAAA,aAAA,SAAA,KAAA,IAAAA,EAAA,UAAAY,CAAA,IAAAA;AAAA,MAAA;AAAA,IAIrF;AACE,iBAAqC;AACjC,gBAA4BI,EAAA;AAC1BiB,UAAAA,CAAAA,EAAAA,OAAAA;AACAX,YAAAA;AAO6E,cAAA,SAAAV,IAAA,IAAAA,MAAA,KAAA,KAAA,EAAA,QAAAZ,EAAA,OAAA,EAAA,SAAA,EAAA,OAAAC,EAAA,QAAAD,EAAA,aAAA,SAAA,KAAA,IAAAA,EAAA,UAAAY,CAAA,IAAAA;AAAA,MAAA;AAAA,IAIrF;;AACMgB,UACEhB,GAAAkB;AAqBN,MAAA9B,EAAA,gCAAA,EAAA,SAAA,aAAAc,EAAA,QAAAC,EAAAd,EAAA,KAAA,IAAAW,IAAAL,EAAA,UAAA,QAAAK,EAAA,KAAA,IAAA,EAAA,SAAA,aAAAkB,IAAAvB,EAAA,UAAA,QAAAuB,EAAA,KAAA,KAAA,EAAA,SAAA,YAAAhB,EAAA,QAAA,OAAAb,EAAA,KAAA,IAAA,CAAA,aAAA,SAAA,EAAA,SAAA,EAAA,IAAA,KAAA,EAAA,eAAA,GAAAD,EAAA,uBAAA,EAAA,SAAA,aAAAkC,EAAA,GAAAlC,EAAA,uBAAA,EAAA,SAAA,eAAAmC,EAAA;AAAA,IAMI;AACA,UAAG,IAAA,CAAA,MACLC;AAEJ,QAAA,SAAA,KAAA,EAAA,eAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlNumberField.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlNumberField/PlNumberField.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Number input field with increment/decrement buttons, validation, and min/max constraints.\n *\n * @example\n * <PlNumberField v-model=\"price\" :step=\"0.01\" :min-value=\"0\" label=\"Price\" />\n *\n * @example\n * <PlNumberField\n * v-model=\"evenNumber\"\n * :validate=\"(v) => v % 2 !== 0 ? 'Number must be even' : undefined\"\n * :update-on-enter-or-click-outside=\"true\"\n * label=\"Even Number\"\n * />\n */\nexport default {\n name: 'PlNumberField',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport './pl-number-field.scss';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlTooltip } from '../PlTooltip';\nimport { parseNumber } from './parseNumber';\n\nconst props = withDefaults(defineProps<{\n /** Input is disabled if true */\n disabled?: boolean;\n /** Label on the top border of the field, empty by default */\n label?: string;\n /** Input placeholder, empty by default */\n placeholder?: string;\n /** Step for increment/decrement buttons, 1 by default */\n step?: number;\n /** If defined - show an error if value is lower */\n minValue?: number;\n /** If defined - show an error if value is higher */\n maxValue?: number;\n /** If false - remove buttons on the right */\n useIncrementButtons?: boolean;\n /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside) */\n updateOnEnterOrClickOutside?: boolean;\n /** Error message that shows always when it's provided, without other checks */\n errorMessage?: string;\n /** Additional validity check for input value that must return an error text if failed */\n validate?: (v: number) => string | undefined;\n}>(), {\n step: 1,\n label: undefined,\n placeholder: undefined,\n minValue: undefined,\n maxValue: undefined,\n useIncrementButtons: true,\n updateOnEnter: false,\n errorMessage: undefined,\n validate: undefined,\n});\n\nconst modelValue = defineModel<number | undefined>({ required: true });\n\nconst slots = useSlots();\n\nconst rootRef = ref<HTMLElement>();\nconst inputRef = ref<HTMLInputElement>();\n\nuseLabelNotch(rootRef);\n\nfunction modelToString(v: number | undefined) {\n return v === undefined ? '' : String(+v); // (+v) to avoid staying in input non-number values if they are provided in model\n}\n\nconst parsedResult = computed(() => parseNumber(props, inputValue.value));\n\nconst cachedValue = ref<string | undefined>(undefined);\n\nconst resetCachedValue = () => cachedValue.value = undefined;\n\nwatch(modelValue, (n) => {\n const r = parsedResult.value;\n if (r.error || n !== r.value) {\n resetCachedValue();\n }\n});\n\nconst inputValue = computed({\n get() {\n return cachedValue.value ?? modelToString(modelValue.value);\n },\n set(nextValue: string) {\n const r = parseNumber(props, nextValue);\n\n cachedValue.value = r.cleanInput;\n\n if (r.error || props.updateOnEnterOrClickOutside) {\n inputRef.value!.value = r.cleanInput;\n } else {\n modelValue.value = r.value;\n }\n },\n});\n\nconst focused = ref(false);\n\nfunction applyChanges() {\n if (parsedResult.value.error === undefined) {\n modelValue.value = parsedResult.value.value;\n }\n}\n\nconst errors = computed(() => {\n let ers: string[] = [];\n\n if (props.errorMessage) {\n ers.push(props.errorMessage);\n }\n\n const r = parsedResult.value;\n\n if (r.error) {\n ers.push(r.error.message);\n } else if (props.validate && r.value !== undefined) {\n const error = props.validate(r.value);\n if (error) {\n ers.push(error);\n }\n }\n\n ers = [...ers];\n\n return ers.join(' ');\n});\n\nconst isIncrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.maxValue !== undefined && r.value !== undefined) {\n return r.value >= props.maxValue;\n }\n\n return false;\n});\n\nconst isDecrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.minValue !== undefined && r.value !== undefined) {\n return r.value <= props.minValue;\n }\n\n return false;\n});\n\nconst multiplier = computed(() =>\n 10 ** (props.step.toString().split('.').at(1)?.length ?? 0),\n);\n\nfunction increment() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isIncrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = props.minValue ? props.minValue : 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n + props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.maxValue !== undefined ? Math.min(props.maxValue, nV) : nV;\n }\n}\n\nfunction decrement() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isDecrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n - props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.minValue !== undefined ? Math.max(props.minValue, nV) : nV;\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (props.updateOnEnterOrClickOutside) {\n if (e.code === 'Escape') {\n inputValue.value = modelToString(modelValue.value);\n inputRef.value?.blur();\n }\n if (e.code === 'Enter') {\n inputRef.value?.blur();\n }\n }\n\n if (e.code === 'Enter') {\n inputValue.value = String(modelValue.value); // to make .1 => 0.1, 10.00 => 10, remove leading zeros etc\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowUp') {\n increment();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowDown') {\n decrement();\n }\n}\n\n// https://stackoverflow.com/questions/880512/prevent-text-selection-after-double-click#:~:text=If%20you%20encounter%20a%20situation,none%3B%20to%20the%20summary%20element.\n// this prevents selecting of more than input content in some cases,\n// but also disable selecting input content by double-click (useful feature)\nconst onMousedown = (ev: MouseEvent) => {\n if (ev.detail > 1) {\n ev.preventDefault();\n }\n};\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :class=\"{ error: !!errors.trim(), disabled: disabled }\"\n class=\"pl-number-field d-flex-column\"\n @keydown=\"handleKeyPress($event)\"\n >\n <div class=\"pl-number-field__main-wrapper d-flex\">\n <DoubleContour class=\"pl-number-field__contour\"/>\n <div\n class=\"pl-number-field__wrapper flex-grow d-flex flex-align-center\"\n :class=\"{withoutArrows: !useIncrementButtons}\"\n >\n <label v-if=\"label\" class=\"text-description\">\n {{ label }}\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\"/>\n </template>\n </PlTooltip>\n </label>\n <input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n class=\"text-s flex-grow\"\n @focusin=\"focused = true\"\n @focusout=\"focused = false; applyChanges()\"\n />\n </div>\n <div v-if=\"useIncrementButtons\" class=\"pl-number-field__icons d-flex-column\" @mousedown=\"onMousedown\">\n <div\n :class=\"{ disabled: isIncrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"increment\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8 4.93933L13.5303 10.4697L12.4697 11.5303L8 7.06065L3.53033 11.5303L2.46967 10.4697L8 4.93933Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n <div\n :class=\"{ disabled: isDecrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"decrement\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.46967 6.53033L3.53033 5.46967L8 9.93934L12.4697 5.46967L13.5303 6.53033L8 12.0607L2.46967 6.53033Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div v-if=\"errors.trim()\" class=\"pl-number-field__error\">\n {{ errors }}\n </div>\n </div>\n</template>\n"],"names":["Y","g","__props","useLabelNotch","t","n","R","D","F","V","f","v","G","watch","i","M","w","O","$","parsedResult","u","x","r","cachedValue","h","E","ers","props","error","o","computed","k","parsedValue","nV","l","B","L","N","ev"],"mappings":"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"}