@milaboratories/uikit 2.4.0 → 2.4.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.
Files changed (34) hide show
  1. package/.turbo/turbo-build.log +26 -25
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +13 -0
  4. package/dist/components/DataTable/TableComponent.vue.js +1 -1
  5. package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
  6. package/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  7. package/dist/components/PlFileDialog/Local.vue.js +4 -4
  8. package/dist/components/PlFileInput/PlFileInput.vue.js +17 -17
  9. package/dist/components/PlLogView/PlLogView.vue.d.ts +8 -0
  10. package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
  11. package/dist/components/PlLogView/PlLogView.vue.js +85 -59
  12. package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  13. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  14. package/dist/helpers/dom.d.ts +1 -0
  15. package/dist/helpers/dom.d.ts.map +1 -1
  16. package/dist/helpers/dom.js.map +1 -1
  17. package/dist/helpers/downloadContent.d.ts +5 -0
  18. package/dist/helpers/downloadContent.d.ts.map +1 -0
  19. package/dist/helpers/downloadContent.js +32 -0
  20. package/dist/helpers/downloadContent.js.map +1 -0
  21. package/dist/index.js +2 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/model/common/dist/index.js +262 -179
  24. package/dist/lib/model/common/dist/index.js.map +1 -1
  25. package/dist/sdk/model/dist/index.js +481 -465
  26. package/dist/sdk/model/dist/index.js.map +1 -1
  27. package/package.json +2 -2
  28. package/src/components/PlLogView/PlLogView.vue +29 -6
  29. package/src/components/PlLogView/pl-log-view.scss +3 -7
  30. package/src/helpers/dom.ts +2 -0
  31. package/src/helpers/downloadContent.ts +75 -0
  32. package/.turbo/turbo-test.log +0 -133
  33. package/dist/components/PlAccordion/ExpandTransition.vue.js +0 -27
  34. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
@@ -1,19 +1,20 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.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)}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- import { defineComponent as A, useSlots as H, ref as s, computed as p, watch as x, createElementBlock as n, openBlock as l, normalizeClass as B, createCommentVNode as g, createVNode as f, createElementVNode as k, createBlock as E, toDisplayString as i, unref as c, withCtx as m, renderSlot as L, createTextVNode as P } from "vue";
3
- import D from "../PlIcon24/PlIcon24.vue.js";
1
+ (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.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;--icon-color: var(--ic-02)}.pl-log-view__copy>*:hover{--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)}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
+ import { defineComponent as F, useSlots as L, ref as s, computed as c, watch as P, createElementBlock as u, openBlock as l, normalizeClass as x, createCommentVNode as f, createVNode as p, createElementVNode as C, createBlock as b, toDisplayString as d, unref as r, withCtx as a, renderSlot as R, createTextVNode as S } from "vue";
3
+ import T from "../PlIcon24/PlIcon24.vue.js";
4
4
 
5
- import { okOptional as R, tapIf as I } from "../../lib/util/helpers/dist/index.js";
6
- import { useLogHandle as O } from "./useLogHandle.js";
7
- import { useLabelNotch as $ } from "../../utils/useLabelNotch.js";
8
- import j from "../../utils/DoubleContour.vue.js";
9
- import C from "../PlTooltip/PlTooltip.vue.js";
10
- const q = { key: 0 }, z = { class: "pl-log-view__copy" }, F = {
5
+ import { okOptional as I, tapIf as O } from "../../lib/util/helpers/dist/index.js";
6
+ import { useLogHandle as $ } from "./useLogHandle.js";
7
+ import { useLabelNotch as j } from "../../utils/useLabelNotch.js";
8
+ import q from "../../utils/DoubleContour.vue.js";
9
+ import v from "../PlTooltip/PlTooltip.vue.js";
10
+ import { downloadContent as z } from "../../helpers/downloadContent.js";
11
+ const M = { key: 0 }, Q = { class: "pl-log-view__copy" }, G = {
11
12
  key: 1,
12
13
  class: "pl-log-view__error"
13
- }, M = {
14
+ }, J = {
14
15
  name: "PlLogView"
15
- }, Z = /* @__PURE__ */ A({
16
- ...M,
16
+ }, lo = /* @__PURE__ */ F({
17
+ ...J,
17
18
  props: {
18
19
  value: {},
19
20
  valueToCopy: {},
@@ -24,93 +25,118 @@ const q = { key: 0 }, z = { class: "pl-log-view__copy" }, F = {
24
25
  maxRetries: {},
25
26
  mockPlatforma: {},
26
27
  label: {},
27
- disableAutoScroll: { type: Boolean }
28
+ disableAutoScroll: { type: Boolean },
29
+ downloadFilename: {}
28
30
  },
29
31
  setup(h) {
30
- const b = (o) => {
32
+ const V = (o) => {
31
33
  if (o && o.ok === !1)
32
34
  return o.errors.join(`
33
35
  `);
34
- }, w = H(), e = h, v = O(e), d = s(!0), _ = s(), y = s(), u = p(() => {
36
+ }, N = L(), t = h, y = $(t), _ = s(!0), g = s(), k = s(), m = c(() => {
35
37
  var o;
36
- return ((o = v.value) == null ? void 0 : o.error) ?? e.error ?? b(e.output);
37
- }), t = p(() => {
38
+ return ((o = y.value) == null ? void 0 : o.error) ?? t.error ?? V(t.output);
39
+ }), n = c(() => {
38
40
  var o;
39
- return ((o = v.value) == null ? void 0 : o.lines) ?? e.value ?? R(e.output);
40
- }), r = s(!1);
41
- $(y);
42
- const S = p(() => r.value ? "clipboard-copied" : "clipboard"), T = () => {
43
- r.value = !0, setTimeout(() => {
44
- r.value = !1;
41
+ return ((o = y.value) == null ? void 0 : o.lines) ?? t.value ?? I(t.output);
42
+ }), w = c(() => {
43
+ if (t.valueToCopy)
44
+ return t.valueToCopy;
45
+ if (n.value && typeof n.value == "string")
46
+ return n.value;
47
+ }), i = s(!1);
48
+ j(k);
49
+ const A = c(() => i.value ? "clipboard-copied" : "clipboard"), D = () => {
50
+ i.value = !0, setTimeout(() => {
51
+ i.value = !1;
45
52
  }, 1200);
46
- let o;
47
- e.valueToCopy ? o = e.valueToCopy : t.value && typeof t.value == "string" && (o = t.value), o !== void 0 && navigator.clipboard.writeText(o);
48
- }, N = () => {
49
- e.disableAutoScroll || I(_.value, (o) => {
50
- d.value && o.scrollTo(o.scrollLeft, o.scrollHeight);
53
+ const o = w.value;
54
+ o !== void 0 && navigator.clipboard.writeText(o);
55
+ }, H = (o) => {
56
+ const e = w.value;
57
+ e !== void 0 && z([e, "text/plain"], o);
58
+ }, B = () => {
59
+ t.disableAutoScroll || O(g.value, (o) => {
60
+ _.value && o.scrollTo(o.scrollLeft, o.scrollHeight);
51
61
  });
52
62
  };
53
- x(
54
- t,
63
+ P(
64
+ n,
55
65
  () => {
56
66
  requestAnimationFrame(() => {
57
- N();
67
+ B();
58
68
  });
59
69
  },
60
70
  { immediate: !0 }
61
71
  );
62
- const V = (o) => {
63
- const a = o.target;
64
- d.value = a.scrollTop + 20 >= a.scrollHeight - a.offsetHeight;
72
+ const E = (o) => {
73
+ const e = o.target;
74
+ _.value = e.scrollTop + 20 >= e.scrollHeight - e.offsetHeight;
65
75
  };
66
- return (o, a) => (l(), n("div", {
76
+ return (o, e) => (l(), u("div", {
67
77
  ref_key: "root",
68
- ref: y,
69
- class: B(["pl-log-view", { "has-error": u.value }])
78
+ ref: k,
79
+ class: x(["pl-log-view", { "has-error": m.value }])
70
80
  }, [
71
- o.label ? (l(), n("label", q, [
72
- k("span", null, i(o.label), 1),
73
- c(w).tooltip ? (l(), E(c(C), {
81
+ o.label ? (l(), u("label", M, [
82
+ C("span", null, d(o.label), 1),
83
+ r(N).tooltip ? (l(), b(r(v), {
74
84
  key: 0,
75
85
  class: "info",
76
86
  position: "top"
77
87
  }, {
78
- tooltip: m(() => [
79
- L(o.$slots, "tooltip")
88
+ tooltip: a(() => [
89
+ R(o.$slots, "tooltip")
80
90
  ]),
81
91
  _: 3
82
- })) : g("", !0)
83
- ])) : g("", !0),
84
- f(j, { class: "pl-log-view__contour" }),
85
- k("div", z, [
86
- f(c(C), {
92
+ })) : f("", !0)
93
+ ])) : f("", !0),
94
+ p(q, { class: "pl-log-view__contour" }),
95
+ C("div", Q, [
96
+ p(r(v), {
87
97
  "close-delay": 800,
88
98
  position: "top"
89
99
  }, {
90
- tooltip: m(() => [
91
- P(i(r.value ? "copied" : "copy"), 1)
100
+ tooltip: a(() => [
101
+ S(d(i.value ? "copied" : "copy"), 1)
92
102
  ]),
93
- default: m(() => [
94
- f(c(D), {
103
+ default: a(() => [
104
+ p(r(T), {
95
105
  title: "Copy content",
96
- name: S.value,
97
- onClick: T
106
+ name: A.value,
107
+ onClick: D
98
108
  }, null, 8, ["name"])
99
109
  ]),
100
110
  _: 1
101
- })
111
+ }),
112
+ o.downloadFilename ? (l(), b(r(v), {
113
+ key: 0,
114
+ "close-delay": 800,
115
+ position: "top"
116
+ }, {
117
+ tooltip: a(() => e[1] || (e[1] = [
118
+ S("download")
119
+ ])),
120
+ default: a(() => [
121
+ p(r(T), {
122
+ name: "download",
123
+ onClick: e[0] || (e[0] = () => H(o.downloadFilename))
124
+ })
125
+ ]),
126
+ _: 1
127
+ })) : f("", !0)
102
128
  ]),
103
- u.value ? (l(), n("div", F, i(u.value), 1)) : (l(), n("div", {
129
+ m.value ? (l(), u("div", G, d(m.value), 1)) : (l(), u("div", {
104
130
  key: 2,
105
131
  ref_key: "contentRef",
106
- ref: _,
132
+ ref: g,
107
133
  class: "pl-log-view__content",
108
- onScroll: V
109
- }, i(t.value), 545))
134
+ onScroll: E
135
+ }, d(n.value), 545))
110
136
  ], 2));
111
137
  }
112
138
  });
113
139
  export {
114
- Z as default
140
+ lo as default
115
141
  };
116
142
  //# sourceMappingURL=PlLogView.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlLogView.vue.js","sources":["../../../src/components/PlLogView/PlLogView.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Log Viewer Component\n */\nexport default {\n name: 'PlLogView',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport './pl-log-view.scss';\nimport { okOptional, tapIf } from '@milaboratories/helpers';\nimport type { AnyLogHandle, Platforma, ValueOrErrors } from '@platforma-sdk/model';\nimport { useLogHandle } from './useLogHandle';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { PlTooltip } from '../PlTooltip';\n\nconst getOutputError = <T>(o?: ValueOrErrors<T>) => {\n if (o && o.ok === false) {\n return o.errors.join('\\n');\n }\n};\n\nconst slots = useSlots();\n\nconst props = defineProps<{\n /**\n * String contents\n */\n value?: string;\n /**\n * The content to copy (Note: it takes precedence over value property)\n */\n valueToCopy?: string;\n /**\n * AnyLogHandle\n */\n logHandle?: AnyLogHandle;\n /**\n * Custom progress prefix (to filter logHandle results)\n */\n progressPrefix?: string;\n /**\n * String contents\n */\n error?: unknown;\n /**\n * Block output (Note: error and value take precedence over output property)\n */\n output?: ValueOrErrors<unknown>;\n /**\n * Max retries for AnyLogHandle fetch (with the same parameters)\n */\n maxRetries?: number;\n /**\n * @TODO\n */\n mockPlatforma?: Platforma;\n /**\n * The label to display above the texarea.\n */\n label?: string;\n /**\n * Do not scroll to bottom on content change. Default is false (scroll to bottom).\n */\n disableAutoScroll?: boolean;\n}>();\n\nconst logState = useLogHandle(props);\n\nconst isAnchored = ref<boolean>(true);\n\nconst contentRef = ref<HTMLElement>();\n\nconst root = ref<HTMLInputElement>();\n\nconst computedError = computed(() => logState.value?.error ?? props.error ?? getOutputError(props.output));\n\nconst computedValue = computed(() => logState.value?.lines ?? props.value ?? okOptional(props.output));\n\nconst copyActive = ref(false);\n\nuseLabelNotch(root);\n\nconst iconName = computed(() => (copyActive.value ? 'clipboard-copied' : 'clipboard'));\n\nconst onClickCopy = () => {\n copyActive.value = true;\n setTimeout(() => {\n copyActive.value = false;\n }, 1200);\n\n let toCopy: string | undefined = undefined;\n if (props.valueToCopy) {\n toCopy = props.valueToCopy;\n } else if (computedValue.value && typeof computedValue.value === 'string') {\n toCopy = computedValue.value;\n }\n\n if (toCopy !== undefined) {\n navigator.clipboard.writeText(toCopy);\n }\n};\n\nconst optionallyScrollDown = () => {\n if (props.disableAutoScroll) {\n return;\n }\n\n tapIf(contentRef.value, (el) => {\n if (isAnchored.value) {\n el.scrollTo(el.scrollLeft, el.scrollHeight);\n }\n });\n};\n\nwatch(\n computedValue,\n () => {\n requestAnimationFrame(() => {\n optionallyScrollDown();\n });\n },\n { immediate: true },\n);\n\nconst onContentScroll = (ev: Event) => {\n const el = ev.target as HTMLElement;\n isAnchored.value = el.scrollTop + 20 /* ~ 1 line height */ >= el.scrollHeight - el.offsetHeight;\n};\n</script>\n\n<template>\n <div ref=\"root\" class=\"pl-log-view\" :class=\"{ 'has-error': computedError }\">\n <label v-if=\"label\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <DoubleContour class=\"pl-log-view__contour\" />\n <div class=\"pl-log-view__copy\">\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24 title=\"Copy content\" :name=\"iconName\" @click=\"onClickCopy\" />\n <template #tooltip>{{ copyActive ? 'copied' : 'copy' }}</template>\n </PlTooltip>\n </div>\n <div v-if=\"computedError\" class=\"pl-log-view__error\">{{ computedError }}</div>\n <div v-else ref=\"contentRef\" class=\"pl-log-view__content\" @scroll=\"onContentScroll\">{{ computedValue }}</div>\n </div>\n</template>\n"],"names":["__default__","getOutputError","slots","useSlots","props","__props","logState","useLogHandle","isAnchored","ref","contentRef","root","computedError","computed","_a","computedValue","okOptional","copyActive","useLabelNotch","iconName","onClickCopy","toCopy","optionallyScrollDown","tapIf","el","watch","onContentScroll","ev"],"mappings":";;;;;;;;;;;GAIeA,IAAA;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;;;AAcM,UAAAC,IAAiB,CAAI,MAAyB;AAC9C,UAAA,KAAK,EAAE,OAAO;AACT,eAAA,EAAE,OAAO,KAAK;AAAA,CAAI;AAAA,IAE7B,GAEMC,IAAQC,EAAS,GAEjBC,IAAQC,GA2CRC,IAAWC,EAAaH,CAAK,GAE7BI,IAAaC,EAAa,EAAI,GAE9BC,IAAaD,EAAiB,GAE9BE,IAAOF,EAAsB,GAE7BG,IAAgBC,EAAS,MAAM;;AAAA,eAAAC,IAAAR,EAAS,UAAT,gBAAAQ,EAAgB,UAASV,EAAM,SAASH,EAAeG,EAAM,MAAM;AAAA,KAAC,GAEnGW,IAAgBF,EAAS,MAAM;;AAAA,eAAAC,IAAAR,EAAS,UAAT,gBAAAQ,EAAgB,UAASV,EAAM,SAASY,EAAWZ,EAAM,MAAM;AAAA,KAAC,GAE/Fa,IAAaR,EAAI,EAAK;AAE5B,IAAAS,EAAcP,CAAI;AAElB,UAAMQ,IAAWN,EAAS,MAAOI,EAAW,QAAQ,qBAAqB,WAAY,GAE/EG,IAAc,MAAM;AACxB,MAAAH,EAAW,QAAQ,IACnB,WAAW,MAAM;AACf,QAAAA,EAAW,QAAQ;AAAA,SAClB,IAAI;AAEP,UAAII;AACJ,MAAIjB,EAAM,cACRiB,IAASjB,EAAM,cACNW,EAAc,SAAS,OAAOA,EAAc,SAAU,aAC/DM,IAASN,EAAc,QAGrBM,MAAW,UACH,UAAA,UAAU,UAAUA,CAAM;AAAA,IAExC,GAEMC,IAAuB,MAAM;AACjC,MAAIlB,EAAM,qBAIJmB,EAAAb,EAAW,OAAO,CAACc,MAAO;AAC9B,QAAIhB,EAAW,SACbgB,EAAG,SAASA,EAAG,YAAYA,EAAG,YAAY;AAAA,MAC5C,CACD;AAAA,IACH;AAEA,IAAAC;AAAA,MACEV;AAAA,MACA,MAAM;AACJ,8BAAsB,MAAM;AACL,UAAAO,EAAA;AAAA,QAAA,CACtB;AAAA,MACH;AAAA,MACA,EAAE,WAAW,GAAK;AAAA,IACpB;AAEM,UAAAI,IAAkB,CAACC,MAAc;AACrC,YAAMH,IAAKG,EAAG;AACd,MAAAnB,EAAW,QAAQgB,EAAG,YAAY,MAA4BA,EAAG,eAAeA,EAAG;AAAA,IACrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlLogView.vue.js","sources":["../../../src/components/PlLogView/PlLogView.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Log Viewer Component\n */\nexport default {\n name: 'PlLogView',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport './pl-log-view.scss';\nimport { okOptional, tapIf } from '@milaboratories/helpers';\nimport type { AnyLogHandle, Platforma, ValueOrErrors } from '@platforma-sdk/model';\nimport { useLogHandle } from './useLogHandle';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { PlTooltip } from '../PlTooltip';\nimport { PlIcon24 } from '../PlIcon24';\nimport { downloadContent } from '../../helpers/dom';\n\nconst getOutputError = <T>(o?: ValueOrErrors<T>) => {\n if (o && o.ok === false) {\n return o.errors.join('\\n');\n }\n};\n\nconst slots = useSlots();\n\nconst props = defineProps<{\n /**\n * String contents\n */\n value?: string;\n /**\n * The content to copy (Note: it takes precedence over value property)\n */\n valueToCopy?: string;\n /**\n * AnyLogHandle\n */\n logHandle?: AnyLogHandle;\n /**\n * Custom progress prefix (to filter logHandle results)\n */\n progressPrefix?: string;\n /**\n * String contents\n */\n error?: unknown;\n /**\n * Block output (Note: error and value take precedence over output property)\n */\n output?: ValueOrErrors<unknown>;\n /**\n * Max retries for AnyLogHandle fetch (with the same parameters)\n */\n maxRetries?: number;\n /**\n * @TODO\n */\n mockPlatforma?: Platforma;\n /**\n * The label to display above the texarea.\n */\n label?: string;\n /**\n * Do not scroll to bottom on content change. Default is false (scroll to bottom).\n */\n disableAutoScroll?: boolean;\n /**\n * If provided, a download icon will be shown and the content will be downloaded when clicked.\n */\n downloadFilename?: string;\n}>();\n\nconst logState = useLogHandle(props);\n\nconst isAnchored = ref<boolean>(true);\n\nconst contentRef = ref<HTMLElement>();\n\nconst root = ref<HTMLInputElement>();\n\nconst computedError = computed(() => logState.value?.error ?? props.error ?? getOutputError(props.output));\n\nconst computedValue = computed(() => logState.value?.lines ?? props.value ?? okOptional(props.output));\n\nconst computedValueToCopy = computed(() => {\n if (props.valueToCopy) {\n return props.valueToCopy;\n }\n if (computedValue.value && typeof computedValue.value === 'string') {\n return computedValue.value;\n }\n return undefined;\n});\n\nconst copyActive = ref(false);\n\nuseLabelNotch(root);\n\nconst iconName = computed(() => (copyActive.value ? 'clipboard-copied' : 'clipboard'));\n\nconst onClickCopy = () => {\n copyActive.value = true;\n setTimeout(() => {\n copyActive.value = false;\n }, 1200);\n\n const toCopy = computedValueToCopy.value;\n\n if (toCopy !== undefined) {\n navigator.clipboard.writeText(toCopy);\n }\n};\n\nconst onClickDownload = (filename: string) => {\n const toDownload = computedValueToCopy.value;\n\n if (toDownload !== undefined) {\n downloadContent([toDownload, 'text/plain'], filename);\n }\n};\n\nconst optionallyScrollDown = () => {\n if (props.disableAutoScroll) {\n return;\n }\n\n tapIf(contentRef.value, (el) => {\n if (isAnchored.value) {\n el.scrollTo(el.scrollLeft, el.scrollHeight);\n }\n });\n};\n\nwatch(\n computedValue,\n () => {\n requestAnimationFrame(() => {\n optionallyScrollDown();\n });\n },\n { immediate: true },\n);\n\nconst onContentScroll = (ev: Event) => {\n const el = ev.target as HTMLElement;\n isAnchored.value = el.scrollTop + 20 /* ~ 1 line height */ >= el.scrollHeight - el.offsetHeight;\n};\n</script>\n\n<template>\n <div ref=\"root\" class=\"pl-log-view\" :class=\"{ 'has-error': computedError }\">\n <label v-if=\"label\">\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <DoubleContour class=\"pl-log-view__contour\" />\n <div class=\"pl-log-view__copy\">\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24 title=\"Copy content\" :name=\"iconName\" @click=\"onClickCopy\" />\n <template #tooltip>{{ copyActive ? 'copied' : 'copy' }}</template>\n </PlTooltip>\n <PlTooltip v-if=\"downloadFilename\" :close-delay=\"800\" position=\"top\">\n <PlIcon24 name=\"download\" @click=\"() => onClickDownload(downloadFilename!)\" />\n <template #tooltip>download</template>\n </PlTooltip>\n </div>\n <div v-if=\"computedError\" class=\"pl-log-view__error\">{{ computedError }}</div>\n <div v-else ref=\"contentRef\" class=\"pl-log-view__content\" @scroll=\"onContentScroll\">{{ computedValue }}</div>\n </div>\n</template>\n"],"names":["__default__","getOutputError","slots","useSlots","props","__props","logState","useLogHandle","isAnchored","ref","contentRef","root","computedError","computed","_a","computedValue","okOptional","computedValueToCopy","copyActive","useLabelNotch","iconName","onClickCopy","toCopy","onClickDownload","filename","toDownload","downloadContent","optionallyScrollDown","tapIf","el","watch","onContentScroll","ev"],"mappings":";;;;;;;;;;;;GAIeA,IAAA;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;;;;AAgBM,UAAAC,IAAiB,CAAI,MAAyB;AAC9C,UAAA,KAAK,EAAE,OAAO;AACT,eAAA,EAAE,OAAO,KAAK;AAAA,CAAI;AAAA,IAE7B,GAEMC,IAAQC,EAAS,GAEjBC,IAAQC,GA+CRC,IAAWC,EAAaH,CAAK,GAE7BI,IAAaC,EAAa,EAAI,GAE9BC,IAAaD,EAAiB,GAE9BE,IAAOF,EAAsB,GAE7BG,IAAgBC,EAAS,MAAM;;AAAA,eAAAC,IAAAR,EAAS,UAAT,gBAAAQ,EAAgB,UAASV,EAAM,SAASH,EAAeG,EAAM,MAAM;AAAA,KAAC,GAEnGW,IAAgBF,EAAS,MAAM;;AAAA,eAAAC,IAAAR,EAAS,UAAT,gBAAAQ,EAAgB,UAASV,EAAM,SAASY,EAAWZ,EAAM,MAAM;AAAA,KAAC,GAE/Fa,IAAsBJ,EAAS,MAAM;AACzC,UAAIT,EAAM;AACR,eAAOA,EAAM;AAEf,UAAIW,EAAc,SAAS,OAAOA,EAAc,SAAU;AACxD,eAAOA,EAAc;AAAA,IAEhB,CACR,GAEKG,IAAaT,EAAI,EAAK;AAE5B,IAAAU,EAAcR,CAAI;AAElB,UAAMS,IAAWP,EAAS,MAAOK,EAAW,QAAQ,qBAAqB,WAAY,GAE/EG,IAAc,MAAM;AACxB,MAAAH,EAAW,QAAQ,IACnB,WAAW,MAAM;AACf,QAAAA,EAAW,QAAQ;AAAA,SAClB,IAAI;AAEP,YAAMI,IAASL,EAAoB;AAEnC,MAAIK,MAAW,UACH,UAAA,UAAU,UAAUA,CAAM;AAAA,IAExC,GAEMC,IAAkB,CAACC,MAAqB;AAC5C,YAAMC,IAAaR,EAAoB;AAEvC,MAAIQ,MAAe,UACjBC,EAAgB,CAACD,GAAY,YAAY,GAAGD,CAAQ;AAAA,IAExD,GAEMG,IAAuB,MAAM;AACjC,MAAIvB,EAAM,qBAIJwB,EAAAlB,EAAW,OAAO,CAACmB,MAAO;AAC9B,QAAIrB,EAAW,SACbqB,EAAG,SAASA,EAAG,YAAYA,EAAG,YAAY;AAAA,MAC5C,CACD;AAAA,IACH;AAEA,IAAAC;AAAA,MACEf;AAAA,MACA,MAAM;AACJ,8BAAsB,MAAM;AACL,UAAAY,EAAA;AAAA,QAAA,CACtB;AAAA,MACH;AAAA,MACA,EAAE,WAAW,GAAK;AAAA,IACpB;AAEM,UAAAI,IAAkB,CAACC,MAAc;AACrC,YAAMH,IAAKG,EAAG;AACd,MAAAxB,EAAW,QAAQqB,EAAG,YAAY,MAA4BA,EAAG,eAAeA,EAAG;AAAA,IACrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -31,7 +31,7 @@
31
31
  .pl-line-dropdown{display:flex;align-items:center;width:fit-content;padding:8px 0;box-sizing:border-box;position:relative;outline:none;max-width:256px}.pl-line-dropdown:focus-within:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__prefix,.pl-line-dropdown__input{text-transform:uppercase}.pl-line-dropdown:hover:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown:after{content:"";position:absolute;bottom:0;border-bottom:2px solid var(--color-div-grey);width:100%}.pl-line-dropdown *{color:var(--txt-01);font-family:var(--font-family-base);font-size:13px;font-style:normal;font-weight:600;line-height:14px;letter-spacing:.52px}.pl-line-dropdown__input::placeholder{color:var(--txt-mask)}.pl-line-dropdown__icon{display:flex;align-items:center;min-width:16px;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-line-dropdown__icon-clear{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%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");-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%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");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;background-color:var(--color-ic-02)}.pl-line-dropdown.open .pl-line-dropdown__icon{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-line-dropdown.open:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__icon-wrapper{padding:4px 2px 4px 0}.pl-line-dropdown.disabled *{color:var(--txt-mask);cursor:not-allowed}.pl-line-dropdown.disabled .pl-line-dropdown__icon{background-color:var(--color-div-grey)!important}.pl-line-dropdown.disabled:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown.disabled:hover:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown__no-item{padding:8px 12px}.pl-line-dropdown__no-item-title{color:var(--txt-03)!important;text-wrap:nowrap;text-overflow:ellipsis;overflow:hidden}.pl-line-dropdown__items{position:absolute;top:0;z-index:var(--z-dropdown-options);border-radius:6px;padding:12px 0;border:1px solid var(--color-div-grey);width:256px;box-sizing:border-box;max-height:320px;background-color:var(--bg-elevated-01);box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-y:auto}.pl-line-dropdown__items::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-line-dropdown__items-tabs{display:flex;position:absolute;top:0;z-index:var(--z-dropdown-options);background-color:var(--color-div-bw);overflow-x:scroll;max-width:400px;padding:6px 12px 12px;border:1px solid var(--color-div-grey);border-radius:6px;box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-x:auto}.pl-line-dropdown__items-tabs::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
32
32
  .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}
33
33
  .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}
34
- .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)}
34
+ .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;--icon-color: var(--ic-02)}.pl-log-view__copy>*:hover{--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)}
35
35
  .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}
36
36
  .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%)}}
37
37
  .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,3 +1,4 @@
1
+ export { downloadContent } from './downloadContent';
1
2
  export declare function isElementVisible(parent: HTMLElement, el: HTMLElement): boolean;
2
3
  export declare function getElementScrollPosition(parent: HTMLElement, el: HTMLElement): "ceil" | "floor" | "visible";
3
4
  export declare function scrollIntoView(parent: HTMLElement, el: HTMLElement, options?: {
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/helpers/dom.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,WAMpE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,gCAe5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,QAuBvG;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC5D,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,CAAC,EAEP,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC1D,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,MAAM,IAAI,CAAC;AAEd,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC/D,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,CAAC,EAEP,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,GAAG,EAChE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,MAAM,IAAI,CAAC;AAgBd,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,EAAE,WAAW,WAGzE"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/helpers/dom.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,WAMpE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,gCAe5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,QAuBvG;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,gBAAgB,EAC5D,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,CAAC,EAEP,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC1D,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,MAAM,IAAI,CAAC;AAEd,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,mBAAmB,EAC/D,EAAE,EAAE,WAAW,EACf,IAAI,EAAE,CAAC,EAEP,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,KAAK,GAAG,EAChE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,MAAM,IAAI,CAAC;AAgBd,wBAAgB,aAAa,CAAC,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,EAAE,WAAW,WAGzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../src/helpers/dom.ts"],"sourcesContent":["import { animate, makeEaseOut } from './utils';\n\nexport function isElementVisible(parent: HTMLElement, el: HTMLElement) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elOffsetTop = el.offsetTop;\n const elHeight = el.getBoundingClientRect().height;\n return elOffsetTop + elHeight < parentHeight + scrollTop && elOffsetTop > scrollTop;\n}\n\nexport function getElementScrollPosition(parent: HTMLElement, el: HTMLElement) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elOffsetTop = el.offsetTop;\n const elHeight = el.getBoundingClientRect().height;\n\n if (elOffsetTop + elHeight < parentHeight + scrollTop) {\n return 'ceil' as const;\n }\n\n if (elOffsetTop > scrollTop) {\n return 'floor' as const;\n }\n\n return 'visible' as const;\n}\n\nexport function scrollIntoView(parent: HTMLElement, el: HTMLElement, options: { duration?: number } = {}) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elHeight = el.getBoundingClientRect().height;\n const offsetTop = el.offsetTop;\n const scrollPosition = getElementScrollPosition(parent, el);\n\n if (scrollPosition === 'visible') {\n return;\n }\n\n const draw = (progress: number) => {\n const to = scrollPosition === 'floor' ? offsetTop - (parentHeight - elHeight) : offsetTop;\n parent.scrollTop = scrollTop + progress * (to - scrollTop);\n };\n\n if (!isElementVisible(parent, el)) {\n animate({\n duration: options.duration || 100,\n timing: makeEaseOut((t) => t),\n draw,\n });\n }\n}\n\nexport function eventListener<K extends keyof DocumentEventMap>(\n el: Document,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n): () => void;\n\nexport function eventListener<K extends keyof HTMLElementEventMap>(\n el: HTMLElement,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n): () => void;\n\nexport function eventListener<K extends string>(\n el: HTMLElement | Document,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: HTMLElement | Document, ev: unknown) => any,\n options?: boolean | AddEventListenerOptions,\n) {\n el.addEventListener(type, listener, options);\n\n return function () {\n el.removeEventListener(type, listener);\n };\n}\n\nexport function detectOutside(e: { x: number; y: number }, el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n return e.x < rect.x || e.x > rect.x + rect.width || e.y < rect.y || e.y > rect.y + rect.height;\n}\n"],"names":["isElementVisible","parent","el","scrollTop","parentHeight","elOffsetTop","elHeight","getElementScrollPosition","scrollIntoView","options","offsetTop","scrollPosition","draw","progress","to","animate","makeEaseOut","t","eventListener","type","listener","detectOutside","e","rect"],"mappings":";AAEgB,SAAAA,EAAiBC,GAAqBC,GAAiB;AACrE,QAAMC,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CI,IAAcH,EAAG,WACjBI,IAAWJ,EAAG,sBAAA,EAAwB;AAC5C,SAAOG,IAAcC,IAAWF,IAAeD,KAAaE,IAAcF;AAC5E;AAEgB,SAAAI,EAAyBN,GAAqBC,GAAiB;AAC7E,QAAMC,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CI,IAAcH,EAAG,WACjBI,IAAWJ,EAAG,sBAAA,EAAwB;AAExC,SAAAG,IAAcC,IAAWF,IAAeD,IACnC,SAGLE,IAAcF,IACT,UAGF;AACT;AAEO,SAASK,EAAeP,GAAqBC,GAAiBO,IAAiC,CAAA,GAAI;AACxG,QAAMN,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CK,IAAWJ,EAAG,sBAAA,EAAwB,QACtCQ,IAAYR,EAAG,WACfS,IAAiBJ,EAAyBN,GAAQC,CAAE;AAE1D,MAAIS,MAAmB;AACrB;AAGI,QAAAC,IAAO,CAACC,MAAqB;AACjC,UAAMC,IAAKH,MAAmB,UAAUD,KAAaN,IAAeE,KAAYI;AACzE,IAAAT,EAAA,YAAYE,IAAYU,KAAYC,IAAKX;AAAA,EAClD;AAEA,EAAKH,EAAiBC,GAAQC,CAAE,KACtBa,EAAA;AAAA,IACN,UAAUN,EAAQ,YAAY;AAAA,IAC9B,QAAQO,EAAY,CAACC,MAAMA,CAAC;AAAA,IAC5B,MAAAL;AAAA,EAAA,CACD;AAEL;AAkBO,SAASM,EACdhB,GACAiB,GAEAC,GACAX,GACA;AACG,SAAAP,EAAA,iBAAiBiB,GAAMC,GAAUX,CAAO,GAEpC,WAAY;AACd,IAAAP,EAAA,oBAAoBiB,GAAMC,CAAQ;AAAA,EACvC;AACF;AAEgB,SAAAC,EAAcC,GAA6BpB,GAAiB;AACpE,QAAAqB,IAAOrB,EAAG,sBAAsB;AACtC,SAAOoB,EAAE,IAAIC,EAAK,KAAKD,EAAE,IAAIC,EAAK,IAAIA,EAAK,SAASD,EAAE,IAAIC,EAAK,KAAKD,EAAE,IAAIC,EAAK,IAAIA,EAAK;AAC1F;"}
1
+ {"version":3,"file":"dom.js","sources":["../../src/helpers/dom.ts"],"sourcesContent":["import { animate, makeEaseOut } from './utils';\n\nexport { downloadContent } from './downloadContent';\n\nexport function isElementVisible(parent: HTMLElement, el: HTMLElement) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elOffsetTop = el.offsetTop;\n const elHeight = el.getBoundingClientRect().height;\n return elOffsetTop + elHeight < parentHeight + scrollTop && elOffsetTop > scrollTop;\n}\n\nexport function getElementScrollPosition(parent: HTMLElement, el: HTMLElement) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elOffsetTop = el.offsetTop;\n const elHeight = el.getBoundingClientRect().height;\n\n if (elOffsetTop + elHeight < parentHeight + scrollTop) {\n return 'ceil' as const;\n }\n\n if (elOffsetTop > scrollTop) {\n return 'floor' as const;\n }\n\n return 'visible' as const;\n}\n\nexport function scrollIntoView(parent: HTMLElement, el: HTMLElement, options: { duration?: number } = {}) {\n const scrollTop = parent.scrollTop;\n const parentHeight = parent.getBoundingClientRect().height;\n const elHeight = el.getBoundingClientRect().height;\n const offsetTop = el.offsetTop;\n const scrollPosition = getElementScrollPosition(parent, el);\n\n if (scrollPosition === 'visible') {\n return;\n }\n\n const draw = (progress: number) => {\n const to = scrollPosition === 'floor' ? offsetTop - (parentHeight - elHeight) : offsetTop;\n parent.scrollTop = scrollTop + progress * (to - scrollTop);\n };\n\n if (!isElementVisible(parent, el)) {\n animate({\n duration: options.duration || 100,\n timing: makeEaseOut((t) => t),\n draw,\n });\n }\n}\n\nexport function eventListener<K extends keyof DocumentEventMap>(\n el: Document,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: Document, ev: DocumentEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n): () => void;\n\nexport function eventListener<K extends keyof HTMLElementEventMap>(\n el: HTMLElement,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions,\n): () => void;\n\nexport function eventListener<K extends string>(\n el: HTMLElement | Document,\n type: K,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listener: (this: HTMLElement | Document, ev: unknown) => any,\n options?: boolean | AddEventListenerOptions,\n) {\n el.addEventListener(type, listener, options);\n\n return function () {\n el.removeEventListener(type, listener);\n };\n}\n\nexport function detectOutside(e: { x: number; y: number }, el: HTMLElement) {\n const rect = el.getBoundingClientRect();\n return e.x < rect.x || e.x > rect.x + rect.width || e.y < rect.y || e.y > rect.y + rect.height;\n}\n"],"names":["isElementVisible","parent","el","scrollTop","parentHeight","elOffsetTop","elHeight","getElementScrollPosition","scrollIntoView","options","offsetTop","scrollPosition","draw","progress","to","animate","makeEaseOut","t","eventListener","type","listener","detectOutside","e","rect"],"mappings":";AAIgB,SAAAA,EAAiBC,GAAqBC,GAAiB;AACrE,QAAMC,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CI,IAAcH,EAAG,WACjBI,IAAWJ,EAAG,sBAAA,EAAwB;AAC5C,SAAOG,IAAcC,IAAWF,IAAeD,KAAaE,IAAcF;AAC5E;AAEgB,SAAAI,EAAyBN,GAAqBC,GAAiB;AAC7E,QAAMC,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CI,IAAcH,EAAG,WACjBI,IAAWJ,EAAG,sBAAA,EAAwB;AAExC,SAAAG,IAAcC,IAAWF,IAAeD,IACnC,SAGLE,IAAcF,IACT,UAGF;AACT;AAEO,SAASK,EAAeP,GAAqBC,GAAiBO,IAAiC,CAAA,GAAI;AACxG,QAAMN,IAAYF,EAAO,WACnBG,IAAeH,EAAO,sBAAA,EAAwB,QAC9CK,IAAWJ,EAAG,sBAAA,EAAwB,QACtCQ,IAAYR,EAAG,WACfS,IAAiBJ,EAAyBN,GAAQC,CAAE;AAE1D,MAAIS,MAAmB;AACrB;AAGI,QAAAC,IAAO,CAACC,MAAqB;AACjC,UAAMC,IAAKH,MAAmB,UAAUD,KAAaN,IAAeE,KAAYI;AACzE,IAAAT,EAAA,YAAYE,IAAYU,KAAYC,IAAKX;AAAA,EAClD;AAEA,EAAKH,EAAiBC,GAAQC,CAAE,KACtBa,EAAA;AAAA,IACN,UAAUN,EAAQ,YAAY;AAAA,IAC9B,QAAQO,EAAY,CAACC,MAAMA,CAAC;AAAA,IAC5B,MAAAL;AAAA,EAAA,CACD;AAEL;AAkBO,SAASM,EACdhB,GACAiB,GAEAC,GACAX,GACA;AACG,SAAAP,EAAA,iBAAiBiB,GAAMC,GAAUX,CAAO,GAEpC,WAAY;AACd,IAAAP,EAAA,oBAAoBiB,GAAMC,CAAQ;AAAA,EACvC;AACF;AAEgB,SAAAC,EAAcC,GAA6BpB,GAAiB;AACpE,QAAAqB,IAAOrB,EAAG,sBAAsB;AACtC,SAAOoB,EAAE,IAAIC,EAAK,KAAKD,EAAE,IAAIC,EAAK,IAAIA,EAAK,SAASD,EAAE,IAAIC,EAAK,KAAKD,EAAE,IAAIC,EAAK,IAAIA,EAAK;AAC1F;"}
@@ -0,0 +1,5 @@
1
+ type MimeType = 'text/plain' | 'text/html' | 'text/css' | 'text/javascript' | 'text/csv' | 'application/json' | 'application/xml' | 'application/pdf' | 'application/zip' | 'application/octet-stream' | 'image/png' | 'image/jpeg' | 'image/gif' | 'image/svg+xml' | 'audio/mpeg' | 'audio/wav' | 'video/mp4' | 'video/webm' | (string & {});
2
+ type DownloadableContent = [string, MimeType] | [Blob, MimeType] | [ArrayBuffer, MimeType] | [Uint8Array, MimeType] | [Int8Array, MimeType] | [Uint16Array, MimeType] | [Int16Array, MimeType] | [Uint32Array, MimeType] | [Int32Array, MimeType] | [Float32Array, MimeType] | [Float64Array, MimeType] | [DataView, MimeType] | Blob | File;
3
+ export declare const downloadContent: (content: DownloadableContent, filename: string) => void;
4
+ export {};
5
+ //# sourceMappingURL=downloadContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadContent.d.ts","sourceRoot":"","sources":["../../src/helpers/downloadContent.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GACT,YAAY,GACZ,WAAW,GACX,UAAU,GACV,iBAAiB,GACjB,UAAU,GACV,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,0BAA0B,GAC1B,WAAW,GACX,YAAY,GACZ,WAAW,GACX,eAAe,GACf,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,KAAK,mBAAmB,GACpB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAClB,CAAC,IAAI,EAAE,QAAQ,CAAC,GAChB,CAAC,WAAW,EAAE,QAAQ,CAAC,GACvB,CAAC,UAAU,EAAE,QAAQ,CAAC,GACtB,CAAC,SAAS,EAAE,QAAQ,CAAC,GACrB,CAAC,WAAW,EAAE,QAAQ,CAAC,GACvB,CAAC,UAAU,EAAE,QAAQ,CAAC,GACtB,CAAC,WAAW,EAAE,QAAQ,CAAC,GACvB,CAAC,UAAU,EAAE,QAAQ,CAAC,GACtB,CAAC,YAAY,EAAE,QAAQ,CAAC,GACxB,CAAC,YAAY,EAAE,QAAQ,CAAC,GACxB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GACpB,IAAI,GACJ,IAAI,CAAC;AAET,eAAO,MAAM,eAAe,YAAa,mBAAmB,YAAY,MAAM,SAqC7E,CAAC"}
@@ -0,0 +1,32 @@
1
+ const n = (o, l) => {
2
+ let r;
3
+ if (o instanceof Blob)
4
+ r = o;
5
+ else if (o instanceof File)
6
+ r = o;
7
+ else if (Array.isArray(o) && o.length === 2) {
8
+ const [e, t] = o;
9
+ if (typeof e == "string")
10
+ r = new Blob([e], { type: t });
11
+ else if (e instanceof ArrayBuffer || ArrayBuffer.isView(e))
12
+ r = new Blob([e], { type: t });
13
+ else if (e instanceof Blob)
14
+ r = new Blob([e], { type: t });
15
+ else
16
+ throw new Error(`Unsupported data type for download. Received data of type ${typeof e}.`);
17
+ } else
18
+ throw new Error("Invalid content type. Content must be a Blob, File, or [data, mimeType] tuple.");
19
+ const a = URL.createObjectURL(r);
20
+ try {
21
+ const e = document.createElement("a");
22
+ e.href = a, e.download = l, document.body.appendChild(e), e.click(), document.body.removeChild(e);
23
+ } catch (e) {
24
+ throw new Error(`Failed to download ${l}`, { cause: e });
25
+ } finally {
26
+ URL.revokeObjectURL(a);
27
+ }
28
+ };
29
+ export {
30
+ n as downloadContent
31
+ };
32
+ //# sourceMappingURL=downloadContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadContent.js","sources":["../../src/helpers/downloadContent.ts"],"sourcesContent":["type MimeType =\n | 'text/plain'\n | 'text/html'\n | 'text/css'\n | 'text/javascript'\n | 'text/csv'\n | 'application/json'\n | 'application/xml'\n | 'application/pdf'\n | 'application/zip'\n | 'application/octet-stream'\n | 'image/png'\n | 'image/jpeg'\n | 'image/gif'\n | 'image/svg+xml'\n | 'audio/mpeg'\n | 'audio/wav'\n | 'video/mp4'\n | 'video/webm'\n | (string & {});\n\ntype DownloadableContent =\n | [string, MimeType]\n | [Blob, MimeType]\n | [ArrayBuffer, MimeType]\n | [Uint8Array, MimeType]\n | [Int8Array, MimeType]\n | [Uint16Array, MimeType]\n | [Int16Array, MimeType]\n | [Uint32Array, MimeType]\n | [Int32Array, MimeType]\n | [Float32Array, MimeType]\n | [Float64Array, MimeType]\n | [DataView, MimeType]\n | Blob // Blob already has mimeType\n | File; // File already has mimeType\n\nexport const downloadContent = (content: DownloadableContent, filename: string) => {\n let blob: Blob;\n\n if (content instanceof Blob) {\n blob = content;\n } else if (content instanceof File) {\n blob = content;\n } else if (Array.isArray(content) && content.length === 2) {\n const [data, mimeType] = content;\n if (typeof data === 'string') {\n blob = new Blob([data], { type: mimeType });\n } else if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {\n blob = new Blob([data], { type: mimeType });\n } else if (data instanceof Blob) {\n blob = new Blob([data], { type: mimeType });\n } else {\n throw new Error(`Unsupported data type for download. Received data of type ${typeof data}.`);\n }\n } else {\n throw new Error('Invalid content type. Content must be a Blob, File, or [data, mimeType] tuple.');\n }\n\n const objectUrl = URL.createObjectURL(blob);\n\n try {\n const link = document.createElement('a');\n link.href = objectUrl;\n link.download = filename;\n\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } catch (error) {\n throw new Error(`Failed to download ${filename}`, { cause: error });\n } finally {\n URL.revokeObjectURL(objectUrl);\n }\n};\n"],"names":["downloadContent","content","filename","blob","data","mimeType","objectUrl","link","error"],"mappings":"AAqCa,MAAAA,IAAkB,CAACC,GAA8BC,MAAqB;AAC7E,MAAAC;AAEJ,MAAIF,aAAmB;AACd,IAAAE,IAAAF;AAAA,WACEA,aAAmB;AACrB,IAAAE,IAAAF;AAAA,WACE,MAAM,QAAQA,CAAO,KAAKA,EAAQ,WAAW,GAAG;AACnD,UAAA,CAACG,GAAMC,CAAQ,IAAIJ;AACrB,QAAA,OAAOG,KAAS;AACX,MAAAD,IAAA,IAAI,KAAK,CAACC,CAAI,GAAG,EAAE,MAAMC,GAAU;AAAA,aACjCD,aAAgB,eAAe,YAAY,OAAOA,CAAI;AACxD,MAAAD,IAAA,IAAI,KAAK,CAACC,CAAI,GAAG,EAAE,MAAMC,GAAU;AAAA,aACjCD,aAAgB;AAClB,MAAAD,IAAA,IAAI,KAAK,CAACC,CAAI,GAAG,EAAE,MAAMC,GAAU;AAAA;AAE1C,YAAM,IAAI,MAAM,6DAA6D,OAAOD,CAAI,GAAG;AAAA,EAC7F;AAEM,UAAA,IAAI,MAAM,gFAAgF;AAG5F,QAAAE,IAAY,IAAI,gBAAgBH,CAAI;AAEtC,MAAA;AACI,UAAAI,IAAO,SAAS,cAAc,GAAG;AACvC,IAAAA,EAAK,OAAOD,GACZC,EAAK,WAAWL,GAEP,SAAA,KAAK,YAAYK,CAAI,GAC9BA,EAAK,MAAM,GACF,SAAA,KAAK,YAAYA,CAAI;AAAA,WACvBC,GAAO;AACR,UAAA,IAAI,MAAM,sBAAsBN,CAAQ,IAAI,EAAE,OAAOM,GAAO;AAAA,EAAA,UAClE;AACA,QAAI,gBAAgBF,CAAS;AAAA,EAAA;AAEjC;"}
package/dist/index.js CHANGED
@@ -104,6 +104,7 @@ import { icons16 as Jr } from "./generated/icons-16.js";
104
104
  import { icons24 as Ur } from "./generated/icons-24.js";
105
105
  import { detectOutside as Yr, eventListener as Zr, getElementScrollPosition as _r, isElementVisible as $r, scrollIntoView as et } from "./helpers/dom.js";
106
106
  import { animate as rt, animateInfinite as tt, call as at, delay as lt, listToOptions as ft, makeEaseInOut as st, makeEaseOut as pt, normalizeListOptions as mt, randomInt as dt, randomString as ut, requestTick as xt, throttle as it, timeout as nt } from "./helpers/utils.js";
107
+ import { downloadContent as ct } from "./helpers/downloadContent.js";
107
108
  const l = { allCssVariables: e() };
108
109
  export {
109
110
  Jo as Color,
@@ -188,6 +189,7 @@ export {
188
189
  Vr as computedCached,
189
190
  lt as delay,
190
191
  Yr as detectOutside,
192
+ ct as downloadContent,
191
193
  Zr as eventListener,
192
194
  _r as getElementScrollPosition,
193
195
  Jr as icons16,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import './assets/ui.scss';\n\n// @TODO review\nimport * as DataTable from './components/DataTable';\nimport ThemeSwitcher from './components/ThemeSwitcher.vue';\n// @TODO review (may be private)\nimport DropdownListItem from './components/DropdownListItem.vue';\n\n// @TODO review\nimport ContextProvider from './components/ContextProvider.vue';\nimport Slider from './components/Slider.vue';\nimport { showContextMenu } from './components/contextMenu';\n// for new version\nimport LongText from './components/LongText.vue';\nimport Scrollable from './components/Scrollable.vue';\nimport SliderRange from './components/SliderRange.vue';\nimport SliderRangeTriple from './components/SliderRangeTriple.vue';\n\nimport { allCssVariables } from './demo-site-data/all-css-variables.ts';\n\n/**\n * Layout components\n */\n\nexport * from './layout/PlBlockPage';\nexport * from './layout/PlContainer';\nexport * from './layout/PlGrid';\nexport * from './layout/PlRow';\nexport * from './layout/PlSpacer';\n\n/**\n * Components\n */\nexport * from './components/PlErrorBoundary';\n// export * from './components/PlErrorAlert'; // @TODO discuss if we should export it\nexport * from './components/PlAccordion';\nexport * from './components/PlAlert';\nexport * from './components/PlAutocomplete';\nexport * from './components/PlBtnAccent';\nexport * from './components/PlBtnDanger';\nexport * from './components/PlBtnGhost';\nexport * from './components/PlBtnGroup';\nexport * from './components/PlBtnLink';\nexport * from './components/PlBtnPrimary';\nexport * from './components/PlBtnSecondary';\nexport * from './components/PlBtnSplit';\nexport * from './components/PlCheckbox';\nexport * from './components/PlCheckboxGroup';\nexport * from './components/PlChip';\nexport * from './components/PlDialogModal';\nexport * from './components/PlDropdown';\nexport * from './components/PlDropdownLegacy';\nexport * from './components/PlDropdownLine';\nexport * from './components/PlDropdownMulti';\nexport * from './components/PlDropdownMultiRef';\nexport * from './components/PlDropdownRef';\nexport * from './components/PlEditableTitle';\nexport * from './components/PlElementList';\nexport * from './components/PlLoaderCircular';\nexport * from './components/PlLogView';\nexport * from './components/PlNumberField';\nexport * from './components/PlProgressBar';\nexport * from './components/PlProgressCell';\nexport * from './components/PlSearchField';\nexport * from './components/PlSectionSeparator';\nexport * from './components/PlSlideModal';\nexport * from './components/PlSplash';\nexport * from './components/PlStatusTag';\nexport * from './components/PlTabs';\nexport * from './components/PlTextArea';\nexport * from './components/PlTextField';\nexport * from './components/PlToggleSwitch';\nexport * from './components/PlTooltip';\n\nexport * from './components/PlFileDialog';\nexport * from './components/PlFileInput';\nexport * from './components/PlNotificationAlert';\n\nexport * from './components/PlSidebar';\n\nexport * from './components/PlIcon16';\nexport * from './components/PlIcon24';\nexport * from './components/PlMaskIcon16';\nexport * from './components/PlMaskIcon24';\nexport * from './components/PlSvg';\n\nexport * from './components/PlChartHistogram';\nexport * from './components/PlChartStackedBar';\n\nexport * from './components/PlRadio';\n\nexport * from './colors';\n\n/**\n * Usables\n */\nexport { useClickOutside } from './composition/useClickOutside';\nexport { useComponentProp } from './composition/useComponentProp';\nexport { useConfirm } from './composition/useConfirm';\nexport { useDraggable } from './composition/useDraggable';\nexport { useEventListener } from './composition/useEventListener';\nexport { useFormState } from './composition/useFormState';\nexport { useHover } from './composition/useHover';\nexport { useInterval } from './composition/useInterval';\nexport { useLocalStorage } from './composition/useLocalStorage';\nexport { useMouse } from './composition/useMouse';\nexport { useMouseCapture } from './composition/useMouseCapture';\nexport { useElementPosition as usePosition } from './composition/usePosition';\nexport { useQuery } from './composition/useQuery.ts';\nexport { useResizeObserver } from './composition/useResizeObserver';\nexport { useScroll } from './composition/useScroll';\nexport { useSortable } from './composition/useSortable';\nexport { useSortable2 } from './composition/useSortable2';\nexport { useTheme } from './composition/useTheme';\n\nexport * from './composition/useWatchFetch';\nexport * from './composition/watchCached';\nexport * from './composition/computedCached';\n\n/**\n * Utils/Partials\n */\n\nexport * from './utils/DropdownOverlay';\nexport { default as PlCloseModalBtn } from './utils/PlCloseModalBtn.vue';\n\n/**\n * Technical\n * @TODO move it from here maybe\n */\nexport { useLabelNotch } from './utils/useLabelNotch.ts';\n\nexport type * from './types';\n\nexport { icons16, icons24 } from './types';\n\nexport * from './helpers/dom';\n\nexport * from './helpers/utils';\n\n/**\n * @TODO review\n */\nexport { ContextProvider, DataTable, DropdownListItem, Slider, ThemeSwitcher };\n\n// Helpers\nexport { showContextMenu };\n\n// move to new version pl-uikit\nexport { LongText, Scrollable, SliderRange, SliderRangeTriple };\n\n// @todo\nconst DemoData = { allCssVariables: allCssVariables() };\nexport { DemoData };\n"],"names":["DemoData","allCssVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJA,MAAMA,IAAW,EAAE,iBAAiBC,EAAkB,EAAA;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import './assets/ui.scss';\n\n// @TODO review\nimport * as DataTable from './components/DataTable';\nimport ThemeSwitcher from './components/ThemeSwitcher.vue';\n// @TODO review (may be private)\nimport DropdownListItem from './components/DropdownListItem.vue';\n\n// @TODO review\nimport ContextProvider from './components/ContextProvider.vue';\nimport Slider from './components/Slider.vue';\nimport { showContextMenu } from './components/contextMenu';\n// for new version\nimport LongText from './components/LongText.vue';\nimport Scrollable from './components/Scrollable.vue';\nimport SliderRange from './components/SliderRange.vue';\nimport SliderRangeTriple from './components/SliderRangeTriple.vue';\n\nimport { allCssVariables } from './demo-site-data/all-css-variables.ts';\n\n/**\n * Layout components\n */\n\nexport * from './layout/PlBlockPage';\nexport * from './layout/PlContainer';\nexport * from './layout/PlGrid';\nexport * from './layout/PlRow';\nexport * from './layout/PlSpacer';\n\n/**\n * Components\n */\nexport * from './components/PlErrorBoundary';\n// export * from './components/PlErrorAlert'; // @TODO discuss if we should export it\nexport * from './components/PlAccordion';\nexport * from './components/PlAlert';\nexport * from './components/PlAutocomplete';\nexport * from './components/PlBtnAccent';\nexport * from './components/PlBtnDanger';\nexport * from './components/PlBtnGhost';\nexport * from './components/PlBtnGroup';\nexport * from './components/PlBtnLink';\nexport * from './components/PlBtnPrimary';\nexport * from './components/PlBtnSecondary';\nexport * from './components/PlBtnSplit';\nexport * from './components/PlCheckbox';\nexport * from './components/PlCheckboxGroup';\nexport * from './components/PlChip';\nexport * from './components/PlDialogModal';\nexport * from './components/PlDropdown';\nexport * from './components/PlDropdownLegacy';\nexport * from './components/PlDropdownLine';\nexport * from './components/PlDropdownMulti';\nexport * from './components/PlDropdownMultiRef';\nexport * from './components/PlDropdownRef';\nexport * from './components/PlEditableTitle';\nexport * from './components/PlElementList';\nexport * from './components/PlLoaderCircular';\nexport * from './components/PlLogView';\nexport * from './components/PlNumberField';\nexport * from './components/PlProgressBar';\nexport * from './components/PlProgressCell';\nexport * from './components/PlSearchField';\nexport * from './components/PlSectionSeparator';\nexport * from './components/PlSlideModal';\nexport * from './components/PlSplash';\nexport * from './components/PlStatusTag';\nexport * from './components/PlTabs';\nexport * from './components/PlTextArea';\nexport * from './components/PlTextField';\nexport * from './components/PlToggleSwitch';\nexport * from './components/PlTooltip';\n\nexport * from './components/PlFileDialog';\nexport * from './components/PlFileInput';\nexport * from './components/PlNotificationAlert';\n\nexport * from './components/PlSidebar';\n\nexport * from './components/PlIcon16';\nexport * from './components/PlIcon24';\nexport * from './components/PlMaskIcon16';\nexport * from './components/PlMaskIcon24';\nexport * from './components/PlSvg';\n\nexport * from './components/PlChartHistogram';\nexport * from './components/PlChartStackedBar';\n\nexport * from './components/PlRadio';\n\nexport * from './colors';\n\n/**\n * Usables\n */\nexport { useClickOutside } from './composition/useClickOutside';\nexport { useComponentProp } from './composition/useComponentProp';\nexport { useConfirm } from './composition/useConfirm';\nexport { useDraggable } from './composition/useDraggable';\nexport { useEventListener } from './composition/useEventListener';\nexport { useFormState } from './composition/useFormState';\nexport { useHover } from './composition/useHover';\nexport { useInterval } from './composition/useInterval';\nexport { useLocalStorage } from './composition/useLocalStorage';\nexport { useMouse } from './composition/useMouse';\nexport { useMouseCapture } from './composition/useMouseCapture';\nexport { useElementPosition as usePosition } from './composition/usePosition';\nexport { useQuery } from './composition/useQuery.ts';\nexport { useResizeObserver } from './composition/useResizeObserver';\nexport { useScroll } from './composition/useScroll';\nexport { useSortable } from './composition/useSortable';\nexport { useSortable2 } from './composition/useSortable2';\nexport { useTheme } from './composition/useTheme';\n\nexport * from './composition/useWatchFetch';\nexport * from './composition/watchCached';\nexport * from './composition/computedCached';\n\n/**\n * Utils/Partials\n */\n\nexport * from './utils/DropdownOverlay';\nexport { default as PlCloseModalBtn } from './utils/PlCloseModalBtn.vue';\n\n/**\n * Technical\n * @TODO move it from here maybe\n */\nexport { useLabelNotch } from './utils/useLabelNotch.ts';\n\nexport type * from './types';\n\nexport { icons16, icons24 } from './types';\n\nexport * from './helpers/dom';\n\nexport * from './helpers/utils';\n\n/**\n * @TODO review\n */\nexport { ContextProvider, DataTable, DropdownListItem, Slider, ThemeSwitcher };\n\n// Helpers\nexport { showContextMenu };\n\n// move to new version pl-uikit\nexport { LongText, Scrollable, SliderRange, SliderRangeTriple };\n\n// @todo\nconst DemoData = { allCssVariables: allCssVariables() };\nexport { DemoData };\n"],"names":["DemoData","allCssVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJA,MAAMA,IAAW,EAAE,iBAAiBC,EAAkB,EAAA;"}