@platforma-sdk/ui-vue 1.42.15 → 1.42.19

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 (78) hide show
  1. package/.turbo/turbo-build.log +33 -28
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +14 -0
  4. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +5 -5
  5. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +41 -41
  6. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
  7. package/dist/components/PlAgDataTable/sources/table-source-v2.js +124 -125
  8. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  9. package/dist/components/PlAgDataTable/sources/table-state-v2.js +3 -3
  10. package/dist/components/PlAgDataTable/sources/value-rendering.d.ts.map +1 -1
  11. package/dist/components/PlAgDataTable/sources/value-rendering.js +24 -25
  12. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  13. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.d.ts.map +1 -1
  14. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +7 -86
  15. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +1 -1
  16. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +103 -2
  17. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
  18. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +9 -0
  19. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +1 -0
  20. package/dist/components/PlAgGridColumnManager/useFilteredItems.d.ts +15 -0
  21. package/dist/components/PlAgGridColumnManager/useFilteredItems.d.ts.map +1 -0
  22. package/dist/components/PlAgGridColumnManager/useFilteredItems.js +35 -0
  23. package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -0
  24. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +12 -12
  25. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -2
  26. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.d.ts.map +1 -1
  27. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +21 -20
  28. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
  29. package/dist/components/PlMultiSequenceAlignment/data.d.ts.map +1 -1
  30. package/dist/components/PlMultiSequenceAlignment/data.js +170 -185
  31. package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
  32. package/dist/components/PlTableFilters/filters-state.js +8 -8
  33. package/dist/components/PlTableFilters/filters_logic.d.ts.map +1 -1
  34. package/dist/components/PlTableFilters/filters_logic.js +67 -77
  35. package/dist/components/PlTableFilters/filters_logic.js.map +1 -1
  36. package/dist/defineApp.js +20 -20
  37. package/dist/internal/UpdateSerializer.js +3 -3
  38. package/dist/lib/model/common/dist/index.js +523 -414
  39. package/dist/lib/model/common/dist/index.js.map +1 -1
  40. package/dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js +1 -1
  41. package/dist/lib/ui/uikit/dist/components/PlAccordion/{ExpandTransition.vue.js → ExpandTransition.vue2.js} +1 -1
  42. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -0
  43. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  44. package/dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js +1 -1
  45. package/dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js +1 -1
  46. package/dist/lib/ui/uikit/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +1 -1
  47. package/dist/lib/ui/uikit/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +1 -1
  48. package/dist/lib/ui/uikit/dist/components/PlFileDialog/Local.vue.js +6 -6
  49. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +28 -28
  50. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  51. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js +89 -63
  52. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  53. package/dist/lib/ui/uikit/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  54. package/dist/lib/ui/uikit/dist/components/PlTextArea/PlTextArea.vue.js +1 -1
  55. package/dist/lib/ui/uikit/dist/components/PlTextField/PlTextField.vue.js +1 -1
  56. package/dist/lib/ui/uikit/dist/generated/components/svg/images/{SvgRequired.vue.js → SvgRequired.vue2.js} +1 -1
  57. package/dist/lib/ui/uikit/dist/generated/components/svg/images/SvgRequired.vue2.js.map +1 -0
  58. package/dist/lib/ui/uikit/dist/helpers/dom.js.map +1 -1
  59. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js +32 -0
  60. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js.map +1 -0
  61. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +201 -159
  62. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
  63. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +521 -517
  64. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  65. package/dist/lib.js +52 -50
  66. package/dist/lib.js.map +1 -1
  67. package/dist/sdk/model/dist/index.js +410 -406
  68. package/dist/sdk/model/dist/index.js.map +1 -1
  69. package/package.json +6 -6
  70. package/src/components/PlAgDataTable/sources/table-source-v2.ts +20 -16
  71. package/src/components/PlAgDataTable/sources/value-rendering.ts +15 -7
  72. package/src/components/PlAgGridColumnManager/PlAgGridColumnManager.vue +28 -4
  73. package/src/components/PlAgGridColumnManager/useFilteredItems.ts +68 -0
  74. package/src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue +1 -0
  75. package/src/components/PlMultiSequenceAlignment/data.ts +12 -12
  76. package/src/components/PlTableFilters/filters_logic.ts +18 -15
  77. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
  78. package/dist/lib/ui/uikit/dist/generated/components/svg/images/SvgRequired.vue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PlLogView.vue.js","sources":["../../../../../../../../../lib/ui/uikit/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":["M","getOutputError","b","_a","v","R","r","s","iconName","S","p","T","copyActive","toCopy","props","t","tapIf","isAnchored","_","d","watch","computedValue","N","onContentScroll","V","el","a"],"mappings":";;;;;;;;;;;;;;;;;;;SAIe;AAAA,GACPA,IAAA;AAAA,EACR,MAAA;;;;;;;;;;;;;;;EAcMC,MAAAA,GAAAA;AACA,UAAAC,IAAA,CAAK,MAAS;AACT,UAAA,KAAA,EAAE,OAAO;AAAS,eAAA,EAAA,OAAA,KAAA;AAAA,CAE7B;AAAA;AAuDqCC,UAAAA;AAAoE,eAEpE,IAAAC,EAAA,UAAA,OAAA,SAAA,EAAA,UAAA,EAAA,SAAAF,EAAA,EAAA,MAAA;AAAA;AAAAC,UAAAA;AAAgE,eAEzE,IAAAC,EAAA,UAAA,OAAA,SAAA,EAAA,UAAA,EAAA,SAAAC,EAAA,EAAA,MAAA;AAAA,IAE5B,IAAkBC,IAAAC,EAAA,EAAA;AAEZC,IAAAA,EAAAA,CAAAA;AAGJ,UAAWC,IAAAC,EAAQ,MACnBJ,EAAA,QAAiB,qBAAA,WAAA,GAAAK,IAAA,MAAA;AACf,MAAAL,EAAAM,QAAmB,IAAA,WAAA,MAAA;AAAA,QAAAN,EACd,QAAA;AAAA,MAEHO,GAAAA,IAAAA;AACAC,UACFD;AAQJ,sBAEmC,IAAA,EAAA,cAAAE,EAAA,SAAA,OAAAA,EAAA,SAAA,aAAA,IAAAA,EAAA,QAAA,MAAA,UAAA,UAAA,UAAA,UAAA,CAAA;AAAA,IACjC,OAIMC,MAAAA;AACJ,QAAIC,uBACaC,EAAA,OAAA,CAAA,MAA2B;AAE7C,QAAAC,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA;AAAA,MAAA,CACH;AAAA,IAEAC;AACEC,IAAAA;AAAAA,MACAN;AAAA,MACE,MAAA;AACuB,8BAAA,MAAA;AACtBO,UAAAA,EAAA;AAAA,QAAA,CACH;AAAA,MACA;AAAA,MACF,EAAA,WAAA,GAAA;AAAA,IAEMC;AACJ,UAAAC,WAAc;AACdP,YAAmBQ,IAAAA,EAAG;AACxB,MAAAN,EAAA,QAAAO,EAAA,YAAA,MAAAA,EAAA,eAAAA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlLogView.vue.js","sources":["../../../../../../../../../lib/ui/uikit/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":["J","getOutputError","V","_a","y","t","I","w","c","n","copyActive","i","s","iconName","A","D","toCopy","filename","H","toDownload","downloadContent","z","tapIf","isAnchored","g","_","watch","computedValue","B","onContentScroll","E","el"],"mappings":";;;;;;;;;;;;;;;;;;;;SAIe;AAAA,GACPA,IAAA;AAAA,EACR,MAAA;;;;;;;;;;;;;;;;EAgBMC,MAAAA,GAAAA;AACA,UAAAC,IAAA,CAAK,MAAS;AACT,UAAA,KAAA,EAAE,OAAO;AAAS,eAAA,EAAA,OAAA,KAAA;AAAA,CAE7B;AAAA;AA2DqCC,UAAAA;AAAoE,eAEpE,IAAAC,EAAA,UAAA,OAAA,SAAA,EAAA,UAAAC,EAAA,SAAAH,EAAAG,EAAA,MAAA;AAAA;AAAAF,UAAAA;AAAgE,eAE1D,IAAAC,EAAA,UAAA,OAAA,SAAA,EAAA,UAAAC,EAAA,SAAAC,EAAAD,EAAA,MAAA;AAAA,IACzC,CAAA,GAAAE,IAAUC,EAAA,MAAA;AACR,UAAAH,EAAA;AAEF,eAAkBA,EAAA;AAChB,UAAAI,EAAA,SAAqB,OAAAA,EAAA,SAAA;AAKnBC,eAAsBD,EAAA;AAAA,IAE5B,IAAkBE,IAAAC,EAAA,EAAA;AAEZC,IAAAA,EAAAA,CAAAA;AAGJ,UAAWC,IAAAN,EAAQ,MACnBG,EAAA,QAAiB,qBAAA,WAAA,GAAAI,IAAA,MAAA;AACf,MAAAJ,EAAAD,QAAmB,IAAA,WAAA,MAAA;AAAA,QAAAC,EACd,QAAA;AAAA,MAEP,GAAA;AAEIK,YAAW,IAAAT,EAAA;AAGjB,YAEyBU,UAAqB,UAAA,UAAA,UAAA,CAAA;AAAA,IAC5C,GAAAC,IAAA,CAAMC,MAAiC;AAEnCA,YAAe,IACjBC,EAAAA;AAEJ,YAEmC,UAAAC,EAAA,CAAA,GAAA,YAAA,GAAA,CAAA;AAAA,IACjC,OAIMC,MAAAA;AACJ,MAAAjB,EAAIkB,uBACaC,EAAA,OAAA,CAAA,MAA2B;AAE7C,QAAAC,EAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA;AAAA,MAAA,CACH;AAAA,IAEAC;AACEC,IAAAA;AAAAA,MACAlB;AAAAA,MACE,MAAA;AACuB,8BAAA,MAAA;AACtB,UAAAmB,EAAA;AAAA,QAAA,CACH;AAAA,MACA;AAAA,MACF,EAAA,WAAA,GAAA;AAAA,IAEMC;AACJ,UAAAC,WAAc;AACdP,YAAmBQ,IAAAA,EAAG;AACxB,MAAAN,EAAA,QAAA,EAAA,YAAA,MAAA,EAAA,eAAA,EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -47,7 +47,7 @@ import "../../colors/gradient.js";
47
47
  .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)}
48
48
  .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}
49
49
  .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}
50
- .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)}
50
+ .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)}
51
51
  .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}
52
52
  .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%)}}
53
53
  .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)}
@@ -3,7 +3,7 @@ import T from "../PlTooltip/PlTooltip.vue.js";
3
3
  import q from "../../utils/DoubleContour.vue.js";
4
4
  import { useLabelNotch as D } from "../../utils/useLabelNotch.js";
5
5
  import { useValidation as P } from "../../utils/useValidation.js";
6
- import U from "../../generated/components/svg/images/SvgRequired.vue.js";
6
+ import U from "../../generated/components/svg/images/SvgRequired.vue2.js";
7
7
  import { getErrorMessage as A } from "../../helpers/error.js";
8
8
  (function() {
9
9
  try {
@@ -5,7 +5,7 @@ import { useLabelNotch as I } from "../../utils/useLabelNotch.js";
5
5
  import { useValidation as J } from "../../utils/useValidation.js";
6
6
  import K from "../PlIcon16/PlIcon16.vue.js";
7
7
  import O from "../PlIcon24/PlIcon24.vue.js";
8
- import Q from "../../generated/components/svg/images/SvgRequired.vue.js";
8
+ import Q from "../../generated/components/svg/images/SvgRequired.vue2.js";
9
9
  import { getErrorMessage as W } from "../../helpers/error.js";
10
10
  (function() {
11
11
  try {
@@ -22,4 +22,4 @@ const L = /* @__PURE__ */ r(o, [["render", d]]);
22
22
  export {
23
23
  L as default
24
24
  };
25
- //# sourceMappingURL=SvgRequired.vue.js.map
25
+ //# sourceMappingURL=SvgRequired.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgRequired.vue2.js","sources":["../../../../../../../../../../../lib/ui/uikit/src/generated/components/svg/images/SvgRequired.vue"],"sourcesContent":["<!-- ⚠️ AUTOGENERATED. DO NOT EDIT. -->\n<script lang=\"ts\">\nimport '../svg-styles.css';\nexport default { name: 'SvgRequired' };\n</script>\n\n<template>\n <div class=\"svg-icon SvgRequired\" style=\"width: 5px; height: 12px\" />\n</template>\n\n<style>\n .SvgRequired { background-image: url(\"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%225%22%20height%3D%2212%22%20viewBox%3D%220%200%205%2012%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M1.51685%204.8L2.5%203.34159L3.47612%204.8L4.39607%204.12743L3.31461%202.7469L5%202.25133L4.64888%201.16106L3.00562%201.77699L3.06882%200H1.93118L1.99438%201.77699L0.351124%201.16106L0%202.25133L1.68539%202.7469L0.59691%204.12743L1.51685%204.8Z%22%20fill%3D%22%23F1222F%22%2F%3E%3C%2Fsvg%3E\"); }\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAOoC,MAAA,IAAA;AAAA,EAAA,OAAA;AAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sources":["../../../../../../../../lib/ui/uikit/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,wBAAwB;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,wBAAwB;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,wBAAwB,QACtCQ,IAAYR,EAAG,WACfS,IAAiBJ,EAAyBN,GAAQC,CAAE;AAE1D,MAAIS,MAAmB;AACrB;AAGIC,QAAAA,IAAO,CAACC,MAAqB;AACjC,UAAMC,IAAKH,MAAmB,UAAUD,KAAaN,IAAeE,KAAYI;AACzET,IAAAA,EAAA,YAAYE,IAAYU,KAAYC,IAAKX;AAAAA,EAClD;AAEKH,EAAAA,EAAiBC,GAAQC,CAAE,KACtBa,EAAA;AAAA,IACN,UAAUN,EAAQ,YAAY;AAAA,IAC9B,QAAQO,EAAY,CAACC,MAAMA,CAAC;AAAA,IAC5B,MAAAL;AAAAA,EAAA,CACD;AAEL;AAkBO,SAASM,EACdhB,GACAiB,GAEAC,GACAX,GACA;AACG,SAAAP,EAAA,iBAAiBiB,GAAMC,GAAUX,CAAO,GAEpC,WAAY;AACdP,IAAAA,EAAA,oBAAoBiB,GAAMC,CAAQ;AAAA,EACvC;AACF;AAEgB,SAAAC,EAAcC,GAA6BpB,GAAiB;AACpEqB,QAAAA,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":["../../../../../../../../lib/ui/uikit/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,wBAAwB;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,wBAAwB;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,wBAAwB,QACtCQ,IAAYR,EAAG,WACfS,IAAiBJ,EAAyBN,GAAQC,CAAE;AAE1D,MAAIS,MAAmB;AACrB;AAGIC,QAAAA,IAAO,CAACC,MAAqB;AACjC,UAAMC,IAAKH,MAAmB,UAAUD,KAAaN,IAAeE,KAAYI;AACzET,IAAAA,EAAA,YAAYE,IAAYU,KAAYC,IAAKX;AAAAA,EAClD;AAEKH,EAAAA,EAAiBC,GAAQC,CAAE,KACtBa,EAAA;AAAA,IACN,UAAUN,EAAQ,YAAY;AAAA,IAC9B,QAAQO,EAAY,CAACC,MAAMA,CAAC;AAAA,IAC5B,MAAAL;AAAAA,EAAA,CACD;AAEL;AAkBO,SAASM,EACdhB,GACAiB,GAEAC,GACAX,GACA;AACG,SAAAP,EAAA,iBAAiBiB,GAAMC,GAAUX,CAAO,GAEpC,WAAY;AACdP,IAAAA,EAAA,oBAAoBiB,GAAMC,CAAQ;AAAA,EACvC;AACF;AAEgB,SAAAC,EAAcC,GAA6BpB,GAAiB;AACpEqB,QAAAA,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,32 @@
1
+ const l = (t, r) => {
2
+ let o;
3
+ if (t instanceof Blob)
4
+ o = t;
5
+ else if (t instanceof File)
6
+ o = t;
7
+ else if (Array.isArray(t) && t.length === 2) {
8
+ const [e, n] = t;
9
+ if (typeof e == "string")
10
+ o = new Blob([e], { type: n });
11
+ else if (e instanceof ArrayBuffer || ArrayBuffer.isView(e))
12
+ o = new Blob([e], { type: n });
13
+ else if (e instanceof Blob)
14
+ o = new Blob([e], { type: n });
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(o);
20
+ try {
21
+ const e = document.createElement("a");
22
+ e.href = a, e.download = r, document.body.appendChild(e), e.click(), document.body.removeChild(e);
23
+ } catch (e) {
24
+ throw new Error(`Failed to download ${r}`, { cause: e });
25
+ } finally {
26
+ URL.revokeObjectURL(a);
27
+ }
28
+ };
29
+ export {
30
+ l as downloadContent
31
+ };
32
+ //# sourceMappingURL=downloadContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downloadContent.js","sources":["../../../../../../../../lib/ui/uikit/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":"AAqCaA,MAAAA,IAAkB,CAACC,GAA8BC,MAAqB;AAC7EC,MAAAA;AAEJ,MAAIF,aAAmB;AACdE,IAAAA,IAAAF;AAAAA,WACEA,aAAmB;AACrBE,IAAAA,IAAAF;AAAAA,WACE,MAAM,QAAQA,CAAO,KAAKA,EAAQ,WAAW,GAAG;AACnD,UAAA,CAACG,GAAMC,CAAQ,IAAIJ;AACrB,QAAA,OAAOG,KAAS;AACXD,MAAAA,IAAA,IAAI,KAAK,CAACC,CAAI,GAAG,EAAE,MAAMC,GAAU;AAAA,aACjCD,aAAgB,eAAe,YAAY,OAAOA,CAAI;AACxDD,MAAAA,IAAA,IAAI,KAAK,CAACC,CAAI,GAAG,EAAE,MAAMC,GAAU;AAAA,aACjCD,aAAgB;AAClBD,MAAAA,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;AAG5FE,QAAAA,IAAY,IAAI,gBAAgBH,CAAI;AAEtC,MAAA;AACII,UAAAA,IAAO,SAAS,cAAc,GAAG;AACvCA,MAAK,OAAOD,GACZC,EAAK,WAAWL,GAEP,SAAA,KAAK,YAAYK,CAAI,GAC9BA,EAAK,MAAA,GACI,SAAA,KAAK,YAAYA,CAAI;AAAA,EAAA,SACvBC,GAAO;AACR,UAAA,IAAI,MAAM,sBAAsBN,CAAQ,IAAI,EAAE,OAAOM,GAAO;AAAA,EAAA,UAClE;AACA,QAAI,gBAAgBF,CAAS;AAAA,EAAA;AAEjC;"}