@platforma-sdk/ui-vue 1.42.14 → 1.42.18

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 (56) hide show
  1. package/.turbo/turbo-build.log +25 -24
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +16 -0
  4. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +5 -5
  5. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +21 -21
  6. package/dist/components/PlAgDataTable/sources/table-source-v2.d.ts.map +1 -1
  7. package/dist/components/PlAgDataTable/sources/table-source-v2.js +122 -123
  8. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  9. package/dist/components/PlAgDataTable/sources/table-state-v2.js +9 -9
  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/PlAnnotations/components/DynamicForm.vue2.js +12 -12
  14. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +2 -2
  15. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.d.ts.map +1 -1
  16. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +21 -20
  17. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +1 -1
  18. package/dist/components/PlMultiSequenceAlignment/data.d.ts.map +1 -1
  19. package/dist/components/PlMultiSequenceAlignment/data.js +169 -184
  20. package/dist/components/PlMultiSequenceAlignment/data.js.map +1 -1
  21. package/dist/components/PlTableFilters/filters-state.js +8 -8
  22. package/dist/components/PlTableFilters/filters_logic.d.ts.map +1 -1
  23. package/dist/components/PlTableFilters/filters_logic.js +67 -77
  24. package/dist/components/PlTableFilters/filters_logic.js.map +1 -1
  25. package/dist/defineApp.js +20 -20
  26. package/dist/internal/UpdateSerializer.js +3 -3
  27. package/dist/lib/model/common/dist/index.js +576 -444
  28. package/dist/lib/model/common/dist/index.js.map +1 -1
  29. package/dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js +1 -1
  30. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  31. package/dist/lib/ui/uikit/dist/components/PlFileDialog/Local.vue.js +6 -6
  32. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js +17 -17
  33. package/dist/lib/ui/uikit/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  34. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js +89 -63
  35. package/dist/lib/ui/uikit/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  36. package/dist/lib/ui/uikit/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  37. package/dist/lib/ui/uikit/dist/helpers/dom.js.map +1 -1
  38. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js +32 -0
  39. package/dist/lib/ui/uikit/dist/helpers/downloadContent.js.map +1 -0
  40. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +257 -192
  41. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js.map +1 -1
  42. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +473 -457
  43. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  44. package/dist/lib.js +52 -50
  45. package/dist/lib.js.map +1 -1
  46. package/dist/sdk/model/dist/index.js +542 -526
  47. package/dist/sdk/model/dist/index.js.map +1 -1
  48. package/package.json +3 -3
  49. package/src/components/PlAgDataTable/sources/table-source-v2.ts +20 -16
  50. package/src/components/PlAgDataTable/sources/value-rendering.ts +15 -7
  51. package/src/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue +1 -0
  52. package/src/components/PlMultiSequenceAlignment/data.ts +12 -12
  53. package/src/components/PlTableFilters/filters_logic.ts +18 -15
  54. package/.turbo/turbo-test.log +0 -565
  55. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js +0 -27
  56. package/dist/lib/ui/uikit/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
@@ -55,7 +55,7 @@ import "../../colors/gradient.js";
55
55
  .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)}
56
56
  .resizable-input{position:relative;box-sizing:border-box;padding:0 8px;display:inline-block;max-width:100%;text-overflow:ellipsis;overflow:hidden}.resizable-input__size-span{font-family:inherit;white-space:pre;display:inline-block;font-size:inherit;line-height:inherit;box-sizing:border-box;position:relative;left:0;opacity:0;min-width:2px;-webkit-user-select:none;user-select:none;vertical-align:top}.resizable-input input{border:none;outline:none;height:100%;text-overflow:ellipsis;font-family:inherit;background:none;color:inherit;top:0;left:0;right:0;font-size:inherit;line-height:inherit;position:absolute;box-sizing:border-box}
57
57
  .pl-dropdown-multi{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}[data-theme=dark] .pl-dropdown-multi{--options-bg: #1B1B1F}.pl-dropdown-multi__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown-multi label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown-multi label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-multi__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);padding:1px;color:var(--txt-01)}.pl-dropdown-multi__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown-multi__options{position:absolute;top:0;z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown-multi__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown-multi__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown-multi__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown-multi__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:20px;background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown-multi__options .option{position:relative;padding:0 10px;height:var(--control-height);line-height:20px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:12px;--base-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.5%204.5H4.5L4.5%2019.5H19.5V4.5ZM4.5%203C3.67157%203%203%203.67157%203%204.5V19.5C3%2020.3284%203.67157%2021%204.5%2021H19.5C20.3284%2021%2021%2020.3284%2021%2019.5V4.5C21%203.67157%2020.3284%203%2019.5%203H4.5Z'%20fill='%23110529'/%3e%3c/svg%3e");--checked-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='3'%20y='3'%20width='18'%20height='18'%20rx='2'%20fill='%23110529'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.5431%208.51739L10.3333%2016.0877L6.45691%2012.0174L7.54312%2010.9829L10.3333%2013.9127L16.4569%207.48291L17.5431%208.51739Z'%20fill='white'/%3e%3c/svg%3e")}.pl-dropdown-multi__options .option .pl-dropdown-multi__checkmark{cursor:pointer;outline:none;border-radius:4px;background:var(--base-icon) no-repeat center;width:24px;height:24px}[data-theme=dark] .pl-dropdown-multi__options .option .pl-dropdown-multi__checkmark{--base-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M19.5%204.5H4.5L4.5%2019.5H19.5V4.5ZM4.5%203C3.67157%203%203%203.67157%203%204.5V19.5C3%2020.3284%203.67157%2021%204.5%2021H19.5C20.3284%2021%2021%2020.3284%2021%2019.5V4.5C21%203.67157%2020.3284%203%2019.5%203H4.5Z'%20fill='white'/%3e%3c/svg%3e");--checked-icon: url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='3'%20y='3'%20width='18'%20height='18'%20rx='2'%20fill='white'/%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M17.5431%208.51739L10.3333%2016.0877L6.45691%2012.0174L7.54312%2010.9829L10.3333%2013.9127L16.4569%207.48291L17.5431%208.51739Z'%20fill='%23110529'/%3e%3c/svg%3e")}.pl-dropdown-multi__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown-multi__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown-multi__options .option.selected .pl-dropdown-multi__checkmark{background:var(--checked-icon) no-repeat center;width:24px;height:24px}.pl-dropdown-multi__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown-multi__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown-multi__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:20px;cursor:pointer;display:flex;flex-direction:row;align-items:center}.pl-dropdown-multi__field .chips-container{position:absolute;top:0;left:0;bottom:0;right:30px;overflow:hidden;padding:0 60px 0 11px;line-height:20px;color:var(--contour-color);display:flex;gap:8px;align-items:center}.pl-dropdown-multi__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 20px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown-multi__field input:focus{outline:none}.pl-dropdown-multi__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown-multi__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown-multi__field:hover .clear{display:block}.pl-dropdown-multi__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown-multi__controls .mask-16,.pl-dropdown-multi__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown-multi__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown-multi__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown-multi .arrow-icon{cursor:pointer}.pl-dropdown-multi .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-multi__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-multi__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-multi.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown-multi .clear{display:none;position:absolute;top:50%;transform:translateY(-50%);right:36px;z-index:1;background:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e") no-repeat center;width:16px;height:16px;cursor:pointer}.pl-dropdown-multi.open,.pl-dropdown-multi:focus-within{z-index:1}.pl-dropdown-multi.open .pl-dropdown-multi__container .label,.pl-dropdown-multi:focus-within .pl-dropdown-multi__container .label{color:var(--txt-focus)}.pl-dropdown-multi.open .pl-dropdown-multi__container{z-index:1000}.pl-dropdown-multi.open .pl-dropdown-multi__field{border-radius:6px 6px 0 0}.pl-dropdown-multi.open .arrow{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-multi:hover{--contour-color: var(--control-hover-color)}.pl-dropdown-multi:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown-multi:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown-multi.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown-multi.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none}.pl-dropdown-multi.disabled .mask-loading{animation:spin 2.5s linear infinite;--icon-color: var(--ic-accent)}.pl-dropdown-multi__open-chips-container{padding:12px}.pl-dropdown-multi__open-chips-container .pl-chip{margin-right:4px;margin-bottom:4px}
58
- .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)}
58
+ .pl-log-view{--log-background: var(--bg-base-light);--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--border-color-log-view: var(--border-color-div-grey);height:100%;max-height:calc(100% - var(--contour-offset));max-width:calc(100% - var(--contour-offset));border-radius:6px;background:var(--log-background);display:flex;position:relative;min-height:44px;padding-right:40px}.pl-log-view__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--border-color-log-view);border-style:solid;box-shadow:none;z-index:0;pointer-events:none}.pl-log-view label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-log-view label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-log-view.has-error{--log-background: linear-gradient(90deg, #FFEBEB 0%, #FFFFFF 100%);--border-color-log-view: var(--border-color-error)}.pl-log-view__copy{position:absolute;top:12px;right:12px;cursor:pointer;--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)}
59
59
  .pl-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.pl-number-field ::placeholder{color:#cfd1db;opacity:1}.pl-number-field__main-wrapper{height:40px;position:relative}.pl-number-field__wrapper{padding-left:12px;border-radius:6px}.pl-number-field__wrapper.withoutArrows{padding-right:12px}.pl-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.pl-number-field__icon{line-height:0}.pl-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.pl-number-field__icon.disabled svg path{fill:#cfd1db}.pl-number-field__icon:hover{background-color:#9babcc29}.pl-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.pl-number-field__hint{margin-top:3px;color:var(--color-hint)}.pl-number-field__error{margin-top:3px;color:var(--txt-error);font-size:12px;font-weight:500;line-height:16px}.pl-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.pl-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.pl-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.pl-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.pl-number-field.disabled label,.pl-number-field.disabled .mi-number-field__hint,.pl-number-field.disabled input{color:var(--contour-color)}.pl-number-field.disabled svg path{fill:var(--contour-color)}.pl-number-field.disabled .mi-number-field__icons{pointer-events:none}.pl-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.pl-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}
60
60
  .progress-cell{background-color:transparent;height:100%;position:relative;width:100%;overflow:hidden;border-radius:2px}.progress-cell .mask-error{--icon-color: var(--txt-error)}.progress-cell.not-started *{color:var(--txt-03)!important}.progress-cell.error *{color:var(--txt-error)!important}.progress-cell__white-bg{background-color:#fff}.progress-cell__indicator{position:absolute;height:100%;transition:width .4s ease-in-out;background:linear-gradient(90deg,#fff,#d8fac8);transition:width .2s ease-in-out}.progress-cell__body{padding:0 15px;display:flex;gap:12px;align-items:center;height:100%;width:100%;position:absolute;z-index:1}.progress-cell__stage{overflow:hidden;text-overflow:ellipsis;flex-shrink:1;text-wrap:nowrap}.progress-cell__percentage{flex-grow:1;flex-shrink:0;text-align:right}.progress-cell__stage--queued{color:var(--txt-03)}.progress-cell__infinity-loader{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;animation:move-gradient 2s linear infinite}.progress-cell__infinity-gradient{width:50%;height:100%;background:linear-gradient(90deg,#fff,#d8fac8,#fff)}@keyframes move-gradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}
61
61
  .pl-slide-modal{--padding-top: 0;--padding-bottom: 0;position:absolute;top:var(--title-bar-height);right:0;bottom:0;z-index:var(--z-slide-dialog);display:flex;flex-direction:column;padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);min-width:368px;width:368px;max-width:100%;will-change:transform;background-color:#fff;border-left:1px solid var(--div-grey);box-shadow:0 8px 16px -4px #0f244d29,0 12px 32px -4px #0f244d29}.pl-slide-modal .close-dialog-btn{position:absolute;z-index:1;top:12px;right:12px;cursor:pointer;background-color:#d3d7e0;mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:24px;-webkit-mask-size:24px;width:24px;height:24px}.pl-slide-modal .close-dialog-btn:hover{background-color:var(--main-dark-color)}.pl-slide-modal.has-title{--padding-top: 0}.pl-slide-modal.has-actions{--padding-bottom: 0}.pl-slide-modal__title{display:flex;align-items:center;font-family:var(--font-family-base);font-size:28px;font-style:normal;font-weight:500;line-height:40px;letter-spacing:-.56px;padding:24px;width:100%;overflow:hidden}.pl-slide-modal__title-content{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-word}.pl-slide-modal__actions{display:flex;align-items:center;gap:6px;min-height:88px;padding:0 24px}.pl-slide-modal__actions button{min-width:160px}.pl-slide-modal__content{flex:1;display:flex;flex-direction:column;gap:24px;padding:16px calc(24px - var(--scrollbar-width)) 16px 24px;margin:0;--thumb-color: var(--ic-02);overflow-y:auto;scrollbar-gutter:stable}.pl-slide-modal__content::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-slide-modal__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-slide-modal__content::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-slide-modal__shadow{position:absolute;z-index:var(--z-slide-shadow);top:var(--title-bar-height);left:0;right:0;bottom:0;background-color:#000000a3}
@@ -2,7 +2,7 @@ import { defineComponent as x, mergeModels as g, inject as d, toRef as u, useMod
2
2
  import { uniqueId as w } from "../../lib/util/helpers/dist/index.js";
3
3
  import B from "../PlIcon16/PlIcon16.vue.js";
4
4
  import N from "../PlSectionSeparator/PlSectionSeparator.vue.js";
5
- import _ from "./ExpandTransition.vue.js";
5
+ import _ from "./ExpandTransition.vue2.js";
6
6
  (function() {
7
7
  try {
8
8
  if (typeof document < "u") {
@@ -6,7 +6,7 @@ import { normalizeExtensions as E } from "./utils.js";
6
6
  const N = {
7
7
  key: 1,
8
8
  class: "alert-error"
9
- }, O = /* @__PURE__ */ w({
9
+ }, M = /* @__PURE__ */ w({
10
10
  __name: "Local",
11
11
  props: {
12
12
  importFiles: { type: Function },
@@ -16,7 +16,7 @@ const N = {
16
16
  setup(g) {
17
17
  const o = g, n = I({
18
18
  error: void 0
19
- }), x = S(() => o.multi ? "Drag & Drop files here or click to add" : "Drag & Drop file here or click to add"), y = async (t) => {
19
+ }), x = S(() => o.multi ? "Drag & Drop files here or click to add" : "Drag & Drop file here or click to add"), k = async (t) => {
20
20
  var r, l, e;
21
21
  const f = (l = (r = c()) == null ? void 0 : r.lsDriver) == null ? void 0 : l.fileToImportHandle;
22
22
  if (!f)
@@ -27,7 +27,7 @@ const N = {
27
27
  d.length && o.importFiles({
28
28
  files: d
29
29
  });
30
- }, k = async () => {
30
+ }, y = async () => {
31
31
  var t, r;
32
32
  const l = o.extensions ? [
33
33
  {
@@ -53,10 +53,10 @@ const N = {
53
53
  };
54
54
  return (t, r) => (a(), s("div", {
55
55
  class: v(m(h).local),
56
- onDrop: y,
56
+ onDrop: k,
57
57
  onDragover: r[0] || (r[0] = z(() => {
58
58
  }, ["prevent"])),
59
- onClick: k
59
+ onClick: y
60
60
  }, [
61
61
  B(m(P), { name: "cloud-upload" }),
62
62
  C("span", null, p(x.value), 1),
@@ -69,6 +69,6 @@ const N = {
69
69
  }
70
70
  });
71
71
  export {
72
- O as default
72
+ M as default
73
73
  };
74
74
  //# sourceMappingURL=Local.vue.js.map
@@ -1,4 +1,4 @@
1
- import { defineComponent as $, reactive as M, useSlots as j, computed as i, watch as I, ref as q, createElementBlock as n, openBlock as o, Fragment as S, createElementVNode as u, createVNode as D, normalizeClass as B, createCommentVNode as s, withModifiers as N, withKeys as H, createBlock as p, normalizeStyle as K, toDisplayString as c, unref as r, withCtx as R, renderSlot as L, createTextVNode as Q } from "vue";
1
+ import { defineComponent as P, reactive as M, useSlots as I, computed as i, watch as j, ref as q, createElementBlock as n, openBlock as o, Fragment as S, createElementVNode as u, createVNode as D, normalizeClass as B, createCommentVNode as s, withModifiers as E, withKeys as H, createBlock as p, normalizeStyle as K, toDisplayString as c, unref as r, withCtx as L, renderSlot as Q, createTextVNode as R } from "vue";
2
2
  import { prettyBytes as x } from "../../lib/util/helpers/dist/index.js";
3
3
  import "../../sdk/model/dist/index.js";
4
4
  import U from "../../generated/components/svg/images/SvgRequired.vue2.js";
@@ -31,7 +31,7 @@ const ee = {
31
31
  }, re = {
32
32
  key: 1,
33
33
  class: "pl-file-input__helper"
34
- }, me = /* @__PURE__ */ $({
34
+ }, me = /* @__PURE__ */ P({
35
35
  __name: "PlFileInput",
36
36
  props: {
37
37
  modelValue: {},
@@ -52,17 +52,17 @@ const ee = {
52
52
  const a = M({
53
53
  fileDialogOpen: !1,
54
54
  error: void 0
55
- }), _ = j(), g = v, l = h, b = (e, t) => {
55
+ }), _ = I(), g = v, l = h, b = (e, t) => {
56
56
  if (e)
57
57
  try {
58
58
  return t(e);
59
59
  } catch (d) {
60
60
  return a.error = d instanceof Error ? d.message : String(d), e;
61
61
  }
62
- }, y = i(() => b(l.modelValue, X)), w = i(() => b(l.modelValue, Z)), O = i(() => l.progress && !l.progress.done), T = i(() => l.progress && l.progress.done), k = i(() => Y(a.error, l.error)), m = i(() => typeof k.value == "string"), V = i(() => {
62
+ }, y = i(() => b(l.modelValue, X)), w = i(() => b(l.modelValue, Z)), N = i(() => l.progress && !l.progress.done), O = i(() => l.progress && l.progress.done), k = i(() => Y(a.error, l.error)), m = i(() => typeof k.value == "string"), V = i(() => {
63
63
  const { status: e, done: t } = l.progress ?? {};
64
64
  return !e || !e.bytesTotal ? "" : e.bytesProcessed && !t ? x(e.bytesProcessed, {}) + " / " + x(e.bytesTotal, {}) : x(e.bytesTotal, {});
65
- }), E = i(() => {
65
+ }), T = i(() => {
66
66
  var e;
67
67
  const { progress: t } = l;
68
68
  return t ? {
@@ -70,10 +70,10 @@ const ee = {
70
70
  } : {};
71
71
  }), C = () => {
72
72
  a.fileDialogOpen = !0;
73
- }, F = (e) => {
73
+ }, $ = (e) => {
74
74
  e.files.length && g("update:modelValue", e.files[0]);
75
- }, P = () => g("update:modelValue", void 0);
76
- I(
75
+ }, F = () => g("update:modelValue", void 0);
76
+ j(
77
77
  () => l.modelValue,
78
78
  () => a.error = void 0,
79
79
  { immediate: !0 }
@@ -89,10 +89,10 @@ const ee = {
89
89
  class: B([{ dashed: e.dashed, error: m.value }, "pl-file-input"]),
90
90
  tabindex: "0",
91
91
  onKeyup: H(C, ["enter"]),
92
- onClick: N(C, ["stop"])
92
+ onClick: E(C, ["stop"])
93
93
  }, [
94
94
  u("div", {
95
- style: K(E.value),
95
+ style: K(T.value),
96
96
  class: "pl-file-input__progress"
97
97
  }, null, 4),
98
98
  !e.cellStyle && e.label ? (o(), n("label", ee, [
@@ -103,9 +103,9 @@ const ee = {
103
103
  class: "info",
104
104
  position: "top"
105
105
  }, {
106
- tooltip: R(() => [
107
- r(_).tooltip ? L(e.$slots, "tooltip", { key: 0 }) : (o(), n(S, { key: 1 }, [
108
- Q(c(w.value), 1)
106
+ tooltip: L(() => [
107
+ r(_).tooltip ? Q(e.$slots, "tooltip", { key: 0 }) : (o(), n(S, { key: 1 }, [
108
+ R(c(w.value), 1)
109
109
  ], 64))
110
110
  ]),
111
111
  _: 3
@@ -114,10 +114,10 @@ const ee = {
114
114
  m.value ? (o(), p(r(f), {
115
115
  key: 1,
116
116
  name: "restart"
117
- })) : O.value ? (o(), p(r(f), {
117
+ })) : N.value ? (o(), p(r(f), {
118
118
  key: 2,
119
119
  name: "cloud-upload"
120
- })) : T.value ? (o(), p(r(f), {
120
+ })) : O.value ? (o(), p(r(f), {
121
121
  key: 3,
122
122
  name: "success"
123
123
  })) : (o(), p(r(f), {
@@ -133,7 +133,7 @@ const ee = {
133
133
  key: 6,
134
134
  class: "pl-file-input__clear",
135
135
  name: "close",
136
- onClick: N(P, ["stop"])
136
+ onClick: E(F, ["stop"])
137
137
  })) : s("", !0),
138
138
  D(A, { class: "pl-file-input__contour" })
139
139
  ], 34),
@@ -145,7 +145,7 @@ const ee = {
145
145
  "close-on-outside-click": e.fileDialogCloseOnOutsideClick,
146
146
  extensions: e.extensions,
147
147
  title: e.fileDialogTitle,
148
- "onImport:files": F
148
+ "onImport:files": $
149
149
  }, null, 8, ["modelValue", "close-on-outside-click", "extensions", "title"])
150
150
  ], 64));
151
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PlFileInput.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlFileInput/PlFileInput.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { prettyBytes } from '@milaboratories/helpers';\nimport type { ImportFileHandle, ImportProgress } from '@platforma-sdk/model';\nimport { getFileNameFromHandle, getFilePathFromHandle } from '@platforma-sdk/model';\nimport { computed, reactive, ref, useSlots, watch } from 'vue';\nimport SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';\nimport { getErrorMessage } from '../../helpers/error.ts';\nimport type { ImportedFiles } from '../../types';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { PlFileDialog } from '../PlFileDialog';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport { PlTooltip } from '../PlTooltip';\nimport './pl-file-input.scss';\n\nconst data = reactive({\n fileDialogOpen: false,\n error: undefined as undefined | string,\n});\n\nconst slots = useSlots();\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: ImportFileHandle | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current import file handle.\n */\n modelValue: ImportFileHandle | undefined;\n /**\n * The label to display above the input field.\n */\n label?: string;\n /**\n * If `true`, the input field is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the component border is dashed.\n */\n dashed?: boolean;\n /**\n * Allowed file extensions (should start with `.`)\n */\n extensions?: string[];\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Import/Upload progress\n */\n progress?: ImportProgress;\n /**\n * An error message to display below the input field.\n */\n error?: unknown;\n /**\n * A helper text to display below the input field when there are no errors.\n */\n helper?: string;\n /**\n * Remove rounded border and change styles\n */\n cellStyle?: boolean;\n /**\n * File dialog title\n */\n fileDialogTitle?: string;\n /**\n * If `true`, the file dialog window closes when clicking outside the modal area (default: `true`)\n */\n fileDialogCloseOnOutsideClick?: boolean;\n }>(),\n {\n label: undefined,\n extensions: undefined,\n fileDialogTitle: undefined,\n placeholder: undefined,\n progress: undefined,\n error: undefined,\n helper: undefined,\n cellStyle: false,\n fileDialogCloseOnOutsideClick: true,\n },\n);\n\nconst tryValue = <T extends ImportFileHandle>(v: T | undefined, cb: (v: T) => string | undefined) => {\n if (!v) {\n return undefined;\n }\n\n try {\n return cb(v);\n } catch (err) {\n data.error = err instanceof Error ? err.message : String(err);\n return v;\n }\n};\n\nconst fileName = computed(() => tryValue(props.modelValue, getFileNameFromHandle));\n\nconst filePath = computed(() => tryValue(props.modelValue, getFilePathFromHandle));\n\nconst isUploading = computed(() => props.progress && !props.progress.done);\n\nconst isUploaded = computed(() => props.progress && props.progress.done);\n\nconst computedErrorMessage = computed(() => getErrorMessage(data.error, props.error));\n\nconst hasErrors = computed(() => typeof computedErrorMessage.value === 'string');\n\nconst uploadStats = computed(() => {\n const { status, done } = props.progress ?? {};\n\n if (!status || !status.bytesTotal) {\n return '';\n }\n\n if (status.bytesProcessed && !done) {\n return prettyBytes(status.bytesProcessed, {}) + ' / ' + prettyBytes(status.bytesTotal, {});\n }\n\n return prettyBytes(status.bytesTotal, {});\n});\n\nconst progressStyle = computed(() => {\n const { progress } = props;\n\n if (!progress) {\n return {};\n }\n\n return {\n width: progress.done ? '100%' : Math.round((progress.status?.progress ?? 0) * 100) + '%',\n };\n});\n\nconst openFileDialog = () => {\n data.fileDialogOpen = true;\n};\n\nconst onImport = (v: ImportedFiles) => {\n if (v.files.length) {\n emit('update:modelValue', v.files[0]);\n }\n};\n\nconst clear = () => emit('update:modelValue', undefined);\n\nwatch(\n () => props.modelValue,\n () => (data.error = undefined),\n { immediate: true },\n);\n\nconst rootRef = ref();\n\nif (!props.cellStyle) {\n useLabelNotch(rootRef);\n}\n</script>\n\n<template>\n <div :class=\"{ 'pl-file-input__cell-style': !!cellStyle, 'has-file': !!fileName }\" class=\"pl-file-input__envelope\">\n <div\n ref=\"rootRef\"\n :class=\"{ dashed, error: hasErrors }\"\n class=\"pl-file-input\"\n tabindex=\"0\"\n @keyup.enter=\"openFileDialog\"\n @click.stop=\"openFileDialog\"\n >\n <div :style=\"progressStyle\" class=\"pl-file-input__progress\" />\n <label v-if=\"!cellStyle && label\" ref=\"label\">\n <SvgRequired v-if=\"required\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip || filePath\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot v-if=\"slots.tooltip\" name=\"tooltip\" />\n <template v-else>{{ filePath }}</template>\n </template>\n </PlTooltip>\n </label>\n <PlMaskIcon24 v-if=\"hasErrors\" name=\"restart\" />\n <PlMaskIcon24 v-else-if=\"isUploading\" name=\"cloud-upload\" />\n <PlMaskIcon24 v-else-if=\"isUploaded\" name=\"success\" />\n <PlMaskIcon24 v-else name=\"paper-clip\" />\n <div :data-placeholder=\"placeholder ?? 'Choose file'\" class=\"pl-file-input__filename\">\n {{ fileName }}\n </div>\n <div v-if=\"uploadStats\" class=\"pl-file-input__stats\">{{ uploadStats }}</div>\n <PlMaskIcon24 v-if=\"modelValue\" class=\"pl-file-input__clear\" name=\"close\" @click.stop=\"clear\" />\n <DoubleContour class=\"pl-file-input__contour\" />\n </div>\n <div v-if=\"hasErrors\" class=\"pl-file-input__error\">\n {{ computedErrorMessage }}\n </div>\n <div v-else-if=\"helper\" class=\"pl-file-input__helper\">{{ helper }}</div>\n </div>\n <PlFileDialog\n v-model=\"data.fileDialogOpen\"\n :close-on-outside-click=\"fileDialogCloseOnOutsideClick\"\n :extensions=\"extensions\"\n :title=\"fileDialogTitle\"\n @import:files=\"onImport\"\n />\n</template>\n"],"names":["F","N","K","useSlots","v","err","data","k","s","props","h","o","x","T","P","V","J","b","status","computed","y","t","e","progress","openFileDialog","emit","clear","watch","U","useLabelNotch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAAA,WAAsBC,EAAA,GAAA;AAAA,UACJ,IAAAC,EAAA;AAAA,MAChB,gBAAO;AAAA,MACR,OAEaC;AAAAA,IAuEPC,CAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,GAAAA,IAAAA,GAAAA,IAAAA,CAAAA,GAAAA,MAAAA;AAID,UAAA;AACF,YAAA;AAAW,iBACJC,EAAK,CAAA;AAAA,QACZC,SAAAA;AACO,iBAAA,EAAA,QAAA,aAAA,QAAA,EAAA,UAAA,OAAA,CAAA,GAAA;AAAA,QAAA;AAAA,IAiBH,GAAAC,IAAAC,EAAA,UAAU,YAASC,CAAAA,CAAAA,eAAmBC,EAAAC,EAAA,YAAAC,CAAA,CAAA,GAAAC,IAAAL,EAAA,MAAAG,EAAA,YAAA,CAAAA,EAAA,SAAA,IAAA,GAAAG,IAAAN,EAAA,MAAAG,EAAA,YAAAA,EAAA,SAAA,IAAA,GAAAI,IAAAP,EAAA,MAAAQ,EAAA,EAAA,OAAAL,EAAA,KAAA,CAAA,GAAA,IAAAH,EAAA,MAAA,OAAAO,EAAA,SAAA,QAAA,GAAAE,IAAAT,EAAA,MAAA;AAExC,YAAA,EAACU,QAAkB,GAAA,MAAA,oBAIZ,CAAA;AAKZ,aAEqBC,CAAS,KAAM,CAAA,EAAA,aAAA,KAAA,EAAA,kBAAA,CAAA,IAAAC,EAAA,EAAA,gBAAA,CAAA,CAAA,IAAA,QAAAA,EAAA,EAAA,YAAA,CAAA,CAAA,IAAAA,EAAA,EAAA,YAAA,CAAA,CAAA;AAAA;AAC7B,UAAAC;AAEN,YAAA,EAIO,UAAAC,EAAA,IAAAX;AAAA,aACEY,IAAS;AAAA,eAJRD,EAAA,OAAA,SAAA,KAAA,SAAAD,IAAAC,EAAA,WAAA,OAAA,SAAAD,EAAA,aAAA,KAAA,GAAA,IAAA;AAAA,MAAA,IAQNG,CAAiB;AAAA,IACrB,CAAA,GAAK,IAAiB,MAAA;AACxB,QAEiB,iBAAsB;AAAA,IACjC,GAAApB,WACFqB;AAIEC,QAAAA,MAAcD,iCAAmC,EAAA,MAAA,CAAA,CAAA;AAAA,IAEvDE,GAAAA,IAAAA,MAAAA,EAAAA,qBAAAA,MAAAA;AAAAC,IAAAA;AAAAA,MAEE,MAAOtB,EAAK;AAAA,MACZ,gBAAkB;AAAA,MACpB,EAAA,WAAA,GAAA;AAAA,IAEA;AAEKG,UAAAA,IACHoB,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlFileInput.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlFileInput/PlFileInput.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { prettyBytes } from '@milaboratories/helpers';\nimport type { ImportFileHandle, ImportProgress } from '@platforma-sdk/model';\nimport { getFileNameFromHandle, getFilePathFromHandle } from '@platforma-sdk/model';\nimport { computed, reactive, ref, useSlots, watch } from 'vue';\nimport SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';\nimport { getErrorMessage } from '../../helpers/error.ts';\nimport type { ImportedFiles } from '../../types';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { PlFileDialog } from '../PlFileDialog';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport { PlTooltip } from '../PlTooltip';\nimport './pl-file-input.scss';\n\nconst data = reactive({\n fileDialogOpen: false,\n error: undefined as undefined | string,\n});\n\nconst slots = useSlots();\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: ImportFileHandle | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current import file handle.\n */\n modelValue: ImportFileHandle | undefined;\n /**\n * The label to display above the input field.\n */\n label?: string;\n /**\n * If `true`, the input field is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the component border is dashed.\n */\n dashed?: boolean;\n /**\n * Allowed file extensions (should start with `.`)\n */\n extensions?: string[];\n /**\n * Placeholder text\n */\n placeholder?: string;\n /**\n * Import/Upload progress\n */\n progress?: ImportProgress;\n /**\n * An error message to display below the input field.\n */\n error?: unknown;\n /**\n * A helper text to display below the input field when there are no errors.\n */\n helper?: string;\n /**\n * Remove rounded border and change styles\n */\n cellStyle?: boolean;\n /**\n * File dialog title\n */\n fileDialogTitle?: string;\n /**\n * If `true`, the file dialog window closes when clicking outside the modal area (default: `true`)\n */\n fileDialogCloseOnOutsideClick?: boolean;\n }>(),\n {\n label: undefined,\n extensions: undefined,\n fileDialogTitle: undefined,\n placeholder: undefined,\n progress: undefined,\n error: undefined,\n helper: undefined,\n cellStyle: false,\n fileDialogCloseOnOutsideClick: true,\n },\n);\n\nconst tryValue = <T extends ImportFileHandle>(v: T | undefined, cb: (v: T) => string | undefined) => {\n if (!v) {\n return undefined;\n }\n\n try {\n return cb(v);\n } catch (err) {\n data.error = err instanceof Error ? err.message : String(err);\n return v;\n }\n};\n\nconst fileName = computed(() => tryValue(props.modelValue, getFileNameFromHandle));\n\nconst filePath = computed(() => tryValue(props.modelValue, getFilePathFromHandle));\n\nconst isUploading = computed(() => props.progress && !props.progress.done);\n\nconst isUploaded = computed(() => props.progress && props.progress.done);\n\nconst computedErrorMessage = computed(() => getErrorMessage(data.error, props.error));\n\nconst hasErrors = computed(() => typeof computedErrorMessage.value === 'string');\n\nconst uploadStats = computed(() => {\n const { status, done } = props.progress ?? {};\n\n if (!status || !status.bytesTotal) {\n return '';\n }\n\n if (status.bytesProcessed && !done) {\n return prettyBytes(status.bytesProcessed, {}) + ' / ' + prettyBytes(status.bytesTotal, {});\n }\n\n return prettyBytes(status.bytesTotal, {});\n});\n\nconst progressStyle = computed(() => {\n const { progress } = props;\n\n if (!progress) {\n return {};\n }\n\n return {\n width: progress.done ? '100%' : Math.round((progress.status?.progress ?? 0) * 100) + '%',\n };\n});\n\nconst openFileDialog = () => {\n data.fileDialogOpen = true;\n};\n\nconst onImport = (v: ImportedFiles) => {\n if (v.files.length) {\n emit('update:modelValue', v.files[0]);\n }\n};\n\nconst clear = () => emit('update:modelValue', undefined);\n\nwatch(\n () => props.modelValue,\n () => (data.error = undefined),\n { immediate: true },\n);\n\nconst rootRef = ref();\n\nif (!props.cellStyle) {\n useLabelNotch(rootRef);\n}\n</script>\n\n<template>\n <div :class=\"{ 'pl-file-input__cell-style': !!cellStyle, 'has-file': !!fileName }\" class=\"pl-file-input__envelope\">\n <div\n ref=\"rootRef\"\n :class=\"{ dashed, error: hasErrors }\"\n class=\"pl-file-input\"\n tabindex=\"0\"\n @keyup.enter=\"openFileDialog\"\n @click.stop=\"openFileDialog\"\n >\n <div :style=\"progressStyle\" class=\"pl-file-input__progress\" />\n <label v-if=\"!cellStyle && label\" ref=\"label\">\n <SvgRequired v-if=\"required\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip || filePath\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot v-if=\"slots.tooltip\" name=\"tooltip\" />\n <template v-else>{{ filePath }}</template>\n </template>\n </PlTooltip>\n </label>\n <PlMaskIcon24 v-if=\"hasErrors\" name=\"restart\" />\n <PlMaskIcon24 v-else-if=\"isUploading\" name=\"cloud-upload\" />\n <PlMaskIcon24 v-else-if=\"isUploaded\" name=\"success\" />\n <PlMaskIcon24 v-else name=\"paper-clip\" />\n <div :data-placeholder=\"placeholder ?? 'Choose file'\" class=\"pl-file-input__filename\">\n {{ fileName }}\n </div>\n <div v-if=\"uploadStats\" class=\"pl-file-input__stats\">{{ uploadStats }}</div>\n <PlMaskIcon24 v-if=\"modelValue\" class=\"pl-file-input__clear\" name=\"close\" @click.stop=\"clear\" />\n <DoubleContour class=\"pl-file-input__contour\" />\n </div>\n <div v-if=\"hasErrors\" class=\"pl-file-input__error\">\n {{ computedErrorMessage }}\n </div>\n <div v-else-if=\"helper\" class=\"pl-file-input__helper\">{{ helper }}</div>\n </div>\n <PlFileDialog\n v-model=\"data.fileDialogOpen\"\n :close-on-outside-click=\"fileDialogCloseOnOutsideClick\"\n :extensions=\"extensions\"\n :title=\"fileDialogTitle\"\n @import:files=\"onImport\"\n />\n</template>\n"],"names":["N","T","R","useSlots","v","err","data","k","s","props","h","o","x","E","P","V","J","b","status","computed","y","t","e","progress","openFileDialog","emit","clear","watch","$","useLabelNotch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAAA,WAAsBC,EAAA,GAAA;AAAA,UACJ,IAAAC,EAAA;AAAA,MAChB,gBAAO;AAAA,MACR,OAEaC;AAAAA,IAuEPC,CAAAA,GAAAA,IAAAA,EAAAA,GAAAA,IAAAA,GAAAA,IAAAA,GAAAA,IAAAA,CAAAA,GAAAA,MAAAA;AAID,UAAA;AACF,YAAA;AAAW,iBACJC,EAAK,CAAA;AAAA,QACZC,SAAAA;AACO,iBAAA,EAAA,QAAA,aAAA,QAAA,EAAA,UAAA,OAAA,CAAA,GAAA;AAAA,QAAA;AAAA,IAiBH,GAAAC,IAAAC,EAAA,UAAU,YAASC,CAAAA,CAAAA,eAAmBC,EAAAC,EAAA,YAAAC,CAAA,CAAA,GAAAC,IAAAL,EAAA,MAAAG,EAAA,YAAA,CAAAA,EAAA,SAAA,IAAA,GAAAG,IAAAN,EAAA,MAAAG,EAAA,YAAAA,EAAA,SAAA,IAAA,GAAAI,IAAAP,EAAA,MAAAQ,EAAA,EAAA,OAAAL,EAAA,KAAA,CAAA,GAAA,IAAAH,EAAA,MAAA,OAAAO,EAAA,SAAA,QAAA,GAAAE,IAAAT,EAAA,MAAA;AAExC,YAAA,EAACU,QAAkB,GAAA,MAAA,oBAIZ,CAAA;AAKZ,aAEqBC,CAAS,KAAM,CAAA,EAAA,aAAA,KAAA,EAAA,kBAAA,CAAA,IAAAC,EAAA,EAAA,gBAAA,CAAA,CAAA,IAAA,QAAAA,EAAA,EAAA,YAAA,CAAA,CAAA,IAAAA,EAAA,EAAA,YAAA,CAAA,CAAA;AAAA;AAC7B,UAAAC;AAEN,YAAA,EAIO,UAAAC,EAAA,IAAAX;AAAA,aACEY,IAAS;AAAA,eAJRD,EAAA,OAAA,SAAA,KAAA,SAAAD,IAAAC,EAAA,WAAA,OAAA,SAAAD,EAAA,aAAA,KAAA,GAAA,IAAA;AAAA,MAAA,IAQNG,CAAiB;AAAA,IACrB,CAAA,GAAK,IAAiB,MAAA;AACxB,QAEiB,iBAAsB;AAAA,IACjC,GAAApB,WACFqB;AAIEC,QAAAA,MAAcD,iCAAmC,EAAA,MAAA,CAAA,CAAA;AAAA,IAEvDE,GAAAA,IAAAA,MAAAA,EAAAA,qBAAAA,MAAAA;AAAAC,IAAAA;AAAAA,MAEE,MAAOtB,EAAK;AAAA,MACZ,gBAAkB;AAAA,MACpB,EAAA,WAAA,GAAA;AAAA,IAEA;AAEKG,UAAAA,IACHoB,EAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,27 +1,28 @@
1
- import { defineComponent as S, useSlots as V, ref as n, computed as v, watch as z, createElementBlock as s, openBlock as t, normalizeClass as B, createCommentVNode as x, createVNode as b, createElementVNode as _, createBlock as E, toDisplayString as c, unref as p, withCtx as f, renderSlot as H, createTextVNode as L } from "vue";
2
- import j from "../PlIcon24/PlIcon24.vue.js";
3
- import { okOptional as A, tapIf as P } from "../../lib/util/helpers/dist/index.js";
4
- import { useLogHandle as R } from "./useLogHandle.js";
5
- import { useLabelNotch as $ } from "../../utils/useLabelNotch.js";
6
- import q from "../../utils/DoubleContour.vue.js";
7
- import y from "../PlTooltip/PlTooltip.vue.js";
1
+ import { defineComponent as z, useSlots as A, ref as c, computed as p, watch as L, createElementBlock as d, openBlock as t, normalizeClass as $, createCommentVNode as g, createVNode as u, createElementVNode as k, createBlock as C, toDisplayString as v, unref as l, withCtx as i, renderSlot as j, createTextVNode as F } from "vue";
2
+ import T from "../PlIcon24/PlIcon24.vue.js";
3
+ import { okOptional as P, tapIf as R } from "../../lib/util/helpers/dist/index.js";
4
+ import { useLogHandle as D } from "./useLogHandle.js";
5
+ import { useLabelNotch as q } from "../../utils/useLabelNotch.js";
6
+ import G from "../../utils/DoubleContour.vue.js";
7
+ import m from "../PlTooltip/PlTooltip.vue.js";
8
+ import { downloadContent as I } from "../../helpers/downloadContent.js";
8
9
  (function() {
9
10
  try {
10
11
  if (typeof document < "u") {
11
- var l = document.createElement("style");
12
- l.appendChild(document.createTextNode('.pl-log-view{--log-background: var(--bg-base-light);--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--border-color-log-view: var(--border-color-div-grey);height:100%;max-height:calc(100% - var(--contour-offset));max-width:calc(100% - var(--contour-offset));border-radius:6px;background:var(--log-background);display:flex;position:relative;min-height:44px;padding-right:40px}.pl-log-view__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--border-color-log-view);border-style:solid;box-shadow:none;z-index:0;pointer-events:none}.pl-log-view label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-log-view label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-log-view.has-error{--log-background: linear-gradient(90deg, #FFEBEB 0%, #FFFFFF 100%);--border-color-log-view: var(--border-color-error)}.pl-log-view__copy{position:absolute;top:12px;right:12px;cursor:pointer}.pl-log-view__copy .mask-24{--icon-color: var(--ic-02)}.pl-log-view__copy:hover .mask-24{--icon-color: var(--txt-01)}.pl-log-view__content{margin:12px;max-height:100%;max-width:100%;flex:1;color:var(--txt-01);font-feature-settings:"ss11" on,"ss15" on,"ss17" on;font-family:var(--font-family-monospace);white-space:pre;font-size:14px;font-weight:400;line-height:20px;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-log-view__content::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-log-view__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-log-view__content::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-log-view__error{margin:12px;max-height:100%;max-width:100%;flex:1;color:var(--txt-01);font-feature-settings:"ss11" on,"ss15" on,"ss17" on;font-family:var(--font-family-monospace);white-space:pre;font-size:14px;font-weight:400;line-height:20px;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-log-view__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-log-view__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-log-view__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}')), document.head.appendChild(l);
12
+ var n = document.createElement("style");
13
+ n.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(n);
13
14
  }
14
- } catch (u) {
15
- console.error("vite-plugin-css-injected-by-js", u);
15
+ } catch (f) {
16
+ console.error("vite-plugin-css-injected-by-js", f);
16
17
  }
17
18
  })();
18
- const D = { key: 0 }, I = { class: "pl-log-view__copy" }, M = {
19
+ const J = { key: 0 }, M = { class: "pl-log-view__copy" }, O = {
19
20
  key: 1,
20
21
  class: "pl-log-view__error"
21
- }, O = {
22
+ }, Q = {
22
23
  name: "PlLogView"
23
- }, U = /* @__PURE__ */ S({
24
- ...O,
24
+ }, ro = /* @__PURE__ */ z({
25
+ ...Q,
25
26
  props: {
26
27
  value: {},
27
28
  valueToCopy: {},
@@ -32,93 +33,118 @@ const D = { key: 0 }, I = { class: "pl-log-view__copy" }, M = {
32
33
  maxRetries: {},
33
34
  mockPlatforma: {},
34
35
  label: {},
35
- disableAutoScroll: { type: Boolean }
36
+ disableAutoScroll: { type: Boolean },
37
+ downloadFilename: {}
36
38
  },
37
- setup(l) {
38
- const u = (o) => {
39
+ setup(n) {
40
+ const f = (o) => {
39
41
  if (o && o.ok === !1)
40
42
  return o.errors.join(`
41
43
  `);
42
- }, k = V(), e = l, g = R(e), h = n(!0), m = n(), w = n(), d = v(() => {
44
+ }, N = A(), r = n, h = D(r), w = c(!0), x = c(), y = c(), b = p(() => {
43
45
  var o;
44
- return ((o = g.value) == null ? void 0 : o.error) ?? e.error ?? u(e.output);
45
- }), r = v(() => {
46
+ return ((o = h.value) == null ? void 0 : o.error) ?? r.error ?? f(r.output);
47
+ }), a = p(() => {
46
48
  var o;
47
- return ((o = g.value) == null ? void 0 : o.lines) ?? e.value ?? A(e.output);
48
- }), a = n(!1);
49
- $(w);
50
- const C = v(() => a.value ? "clipboard-copied" : "clipboard"), F = () => {
51
- a.value = !0, setTimeout(() => {
52
- a.value = !1;
49
+ return ((o = h.value) == null ? void 0 : o.lines) ?? r.value ?? P(r.output);
50
+ }), _ = p(() => {
51
+ if (r.valueToCopy)
52
+ return r.valueToCopy;
53
+ if (a.value && typeof a.value == "string")
54
+ return a.value;
55
+ }), s = c(!1);
56
+ q(y);
57
+ const B = p(() => s.value ? "clipboard-copied" : "clipboard"), V = () => {
58
+ s.value = !0, setTimeout(() => {
59
+ s.value = !1;
53
60
  }, 1200);
54
- let o;
55
- e.valueToCopy ? o = e.valueToCopy : r.value && typeof r.value == "string" && (o = r.value), o !== void 0 && navigator.clipboard.writeText(o);
56
- }, T = () => {
57
- e.disableAutoScroll || P(m.value, (o) => {
58
- h.value && o.scrollTo(o.scrollLeft, o.scrollHeight);
61
+ const o = _.value;
62
+ o !== void 0 && navigator.clipboard.writeText(o);
63
+ }, E = (o) => {
64
+ const e = _.value;
65
+ e !== void 0 && I([e, "text/plain"], o);
66
+ }, H = () => {
67
+ r.disableAutoScroll || R(x.value, (o) => {
68
+ w.value && o.scrollTo(o.scrollLeft, o.scrollHeight);
59
69
  });
60
70
  };
61
- z(
62
- r,
71
+ L(
72
+ a,
63
73
  () => {
64
74
  requestAnimationFrame(() => {
65
- T();
75
+ H();
66
76
  });
67
77
  },
68
78
  { immediate: !0 }
69
79
  );
70
- const N = (o) => {
71
- const i = o.target;
72
- h.value = i.scrollTop + 20 >= i.scrollHeight - i.offsetHeight;
80
+ const S = (o) => {
81
+ const e = o.target;
82
+ w.value = e.scrollTop + 20 >= e.scrollHeight - e.offsetHeight;
73
83
  };
74
- return (o, i) => (t(), s("div", {
84
+ return (o, e) => (t(), d("div", {
75
85
  ref_key: "root",
76
- ref: w,
77
- class: B(["pl-log-view", { "has-error": d.value }])
86
+ ref: y,
87
+ class: $(["pl-log-view", { "has-error": b.value }])
78
88
  }, [
79
- o.label ? (t(), s("label", D, [
80
- _("span", null, c(o.label), 1),
81
- p(k).tooltip ? (t(), E(p(y), {
89
+ o.label ? (t(), d("label", J, [
90
+ k("span", null, v(o.label), 1),
91
+ l(N).tooltip ? (t(), C(l(m), {
82
92
  key: 0,
83
93
  class: "info",
84
94
  position: "top"
85
95
  }, {
86
- tooltip: f(() => [
87
- H(o.$slots, "tooltip")
96
+ tooltip: i(() => [
97
+ j(o.$slots, "tooltip")
88
98
  ]),
89
99
  _: 3
90
- })) : x("", !0)
91
- ])) : x("", !0),
92
- b(q, { class: "pl-log-view__contour" }),
93
- _("div", I, [
94
- b(p(y), {
100
+ })) : g("", !0)
101
+ ])) : g("", !0),
102
+ u(G, { class: "pl-log-view__contour" }),
103
+ k("div", M, [
104
+ u(l(m), {
95
105
  "close-delay": 800,
96
106
  position: "top"
97
107
  }, {
98
- tooltip: f(() => [
99
- L(c(a.value ? "copied" : "copy"), 1)
108
+ tooltip: i(() => [
109
+ F(v(s.value ? "copied" : "copy"), 1)
100
110
  ]),
101
- default: f(() => [
102
- b(p(j), {
111
+ default: i(() => [
112
+ u(l(T), {
103
113
  title: "Copy content",
104
- name: C.value,
105
- onClick: F
114
+ name: B.value,
115
+ onClick: V
106
116
  }, null, 8, ["name"])
107
117
  ]),
108
118
  _: 1
109
- })
119
+ }),
120
+ o.downloadFilename ? (t(), C(l(m), {
121
+ key: 0,
122
+ "close-delay": 800,
123
+ position: "top"
124
+ }, {
125
+ tooltip: i(() => e[1] || (e[1] = [
126
+ F("download")
127
+ ])),
128
+ default: i(() => [
129
+ u(l(T), {
130
+ name: "download",
131
+ onClick: e[0] || (e[0] = () => E(o.downloadFilename))
132
+ })
133
+ ]),
134
+ _: 1
135
+ })) : g("", !0)
110
136
  ]),
111
- d.value ? (t(), s("div", M, c(d.value), 1)) : (t(), s("div", {
137
+ b.value ? (t(), d("div", O, v(b.value), 1)) : (t(), d("div", {
112
138
  key: 2,
113
139
  ref_key: "contentRef",
114
- ref: m,
140
+ ref: x,
115
141
  class: "pl-log-view__content",
116
- onScroll: N
117
- }, c(r.value), 545))
142
+ onScroll: S
143
+ }, v(a.value), 545))
118
144
  ], 2));
119
145
  }
120
146
  });
121
147
  export {
122
- U as default
148
+ ro as default
123
149
  };
124
150
  //# sourceMappingURL=PlLogView.vue.js.map
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}