@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.
- package/.turbo/turbo-build.log +26 -25
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +13 -0
- package/dist/components/DataTable/TableComponent.vue.js +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
- package/dist/components/PlFileDialog/Local.vue.js +4 -4
- package/dist/components/PlFileInput/PlFileInput.vue.js +17 -17
- package/dist/components/PlLogView/PlLogView.vue.d.ts +8 -0
- package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.js +85 -59
- package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
- package/dist/helpers/dom.d.ts +1 -0
- package/dist/helpers/dom.d.ts.map +1 -1
- package/dist/helpers/dom.js.map +1 -1
- package/dist/helpers/downloadContent.d.ts +5 -0
- package/dist/helpers/downloadContent.d.ts.map +1 -0
- package/dist/helpers/downloadContent.js +32 -0
- package/dist/helpers/downloadContent.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/model/common/dist/index.js +262 -179
- package/dist/lib/model/common/dist/index.js.map +1 -1
- package/dist/sdk/model/dist/index.js +481 -465
- package/dist/sdk/model/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/components/PlLogView/PlLogView.vue +29 -6
- package/src/components/PlLogView/pl-log-view.scss +3 -7
- package/src/helpers/dom.ts +2 -0
- package/src/helpers/downloadContent.ts +75 -0
- package/.turbo/turbo-test.log +0 -133
- package/dist/components/PlAccordion/ExpandTransition.vue.js +0 -27
- 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
|
|
2
|
-
import { defineComponent as
|
|
3
|
-
import
|
|
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
|
|
6
|
-
import { useLogHandle as
|
|
7
|
-
import { useLabelNotch as
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
|
|
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
|
-
},
|
|
14
|
+
}, J = {
|
|
14
15
|
name: "PlLogView"
|
|
15
|
-
},
|
|
16
|
-
...
|
|
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
|
|
32
|
+
const V = (o) => {
|
|
31
33
|
if (o && o.ok === !1)
|
|
32
34
|
return o.errors.join(`
|
|
33
35
|
`);
|
|
34
|
-
},
|
|
36
|
+
}, N = L(), t = h, y = $(t), _ = s(!0), g = s(), k = s(), m = c(() => {
|
|
35
37
|
var o;
|
|
36
|
-
return ((o =
|
|
37
|
-
}),
|
|
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 =
|
|
40
|
-
}),
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
e
|
|
50
|
-
|
|
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
|
-
|
|
54
|
-
|
|
63
|
+
P(
|
|
64
|
+
n,
|
|
55
65
|
() => {
|
|
56
66
|
requestAnimationFrame(() => {
|
|
57
|
-
|
|
67
|
+
B();
|
|
58
68
|
});
|
|
59
69
|
},
|
|
60
70
|
{ immediate: !0 }
|
|
61
71
|
);
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
72
|
+
const E = (o) => {
|
|
73
|
+
const e = o.target;
|
|
74
|
+
_.value = e.scrollTop + 20 >= e.scrollHeight - e.offsetHeight;
|
|
65
75
|
};
|
|
66
|
-
return (o,
|
|
76
|
+
return (o, e) => (l(), u("div", {
|
|
67
77
|
ref_key: "root",
|
|
68
|
-
ref:
|
|
69
|
-
class:
|
|
78
|
+
ref: k,
|
|
79
|
+
class: x(["pl-log-view", { "has-error": m.value }])
|
|
70
80
|
}, [
|
|
71
|
-
o.label ? (l(),
|
|
72
|
-
|
|
73
|
-
|
|
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:
|
|
79
|
-
|
|
88
|
+
tooltip: a(() => [
|
|
89
|
+
R(o.$slots, "tooltip")
|
|
80
90
|
]),
|
|
81
91
|
_: 3
|
|
82
|
-
})) :
|
|
83
|
-
])) :
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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:
|
|
91
|
-
|
|
100
|
+
tooltip: a(() => [
|
|
101
|
+
S(d(i.value ? "copied" : "copy"), 1)
|
|
92
102
|
]),
|
|
93
|
-
default:
|
|
94
|
-
|
|
103
|
+
default: a(() => [
|
|
104
|
+
p(r(T), {
|
|
95
105
|
title: "Copy content",
|
|
96
|
-
name:
|
|
97
|
-
onClick:
|
|
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
|
-
|
|
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:
|
|
109
|
-
},
|
|
134
|
+
onScroll: E
|
|
135
|
+
}, d(n.value), 545))
|
|
110
136
|
], 2));
|
|
111
137
|
}
|
|
112
138
|
});
|
|
113
139
|
export {
|
|
114
|
-
|
|
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
|
|
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
|
|
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)}
|
package/dist/helpers/dom.d.ts
CHANGED
|
@@ -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"}
|
package/dist/helpers/dom.js.map
CHANGED
|
@@ -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":";
|
|
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":"
|
|
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;"}
|