@milaboratories/uikit 2.3.11 → 2.3.13

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 (32) hide show
  1. package/.turbo/turbo-build.log +20 -20
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +12 -0
  4. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +1 -1
  5. package/dist/components/PlDropdown/PlDropdown.vue.js +1 -1
  6. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +1 -1
  7. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +1 -1
  8. package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
  9. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
  10. package/dist/components/PlElementList/PlElementListItem.vue3.js +31 -31
  11. package/dist/components/PlFileInput/PlFileInput.vue.js +1 -1
  12. package/dist/components/PlSvg/registry.d.ts.map +1 -1
  13. package/dist/components/PlSvg/registry.js +26 -28
  14. package/dist/components/PlSvg/registry.js.map +1 -1
  15. package/dist/components/PlTextArea/PlTextArea.vue.js +1 -1
  16. package/dist/components/PlTextField/PlTextField.vue.js +1 -1
  17. package/dist/composition/computedCached.d.ts +4 -5
  18. package/dist/composition/computedCached.d.ts.map +1 -1
  19. package/dist/composition/computedCached.js +13 -14
  20. package/dist/composition/computedCached.js.map +1 -1
  21. package/dist/composition/watchCached.d.ts +1 -1
  22. package/dist/composition/watchCached.d.ts.map +1 -1
  23. package/dist/composition/watchCached.js +12 -12
  24. package/dist/composition/watchCached.js.map +1 -1
  25. package/dist/generated/components/svg/images/{SvgRequired.vue2.js → SvgRequired.vue.js} +1 -1
  26. package/dist/generated/components/svg/images/SvgRequired.vue.js.map +1 -0
  27. package/package.json +3 -3
  28. package/src/components/PlElementList/PlElementListItem.vue +3 -2
  29. package/src/components/PlSvg/registry.ts +10 -12
  30. package/src/composition/computedCached.ts +18 -16
  31. package/src/composition/watchCached.ts +9 -6
  32. package/dist/generated/components/svg/images/SvgRequired.vue2.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.3.11 build /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.3.13 build /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > vite build
5
5
 
6
6
  vite v6.3.5 building for production...
@@ -23,8 +23,8 @@ computing gzip size...
23
23
  dist/components/PlFileDialog/Local.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
24
24
  dist/components/Slider.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
25
25
  dist/layout/PlGrid/PlGrid.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
26
- dist/components/PlChip/PlChip.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
27
26
  dist/components/PlTabs/PlTabs.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
27
+ dist/components/PlChip/PlChip.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
28
28
  dist/components/DataTable/TdCell.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
29
29
  dist/components/DataTable/TrHead.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
30
30
  dist/components/DataTable/ThCell.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
@@ -35,35 +35,35 @@ computing gzip size...
35
35
  dist/components/PlAlert/PlAlert.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
36
36
  dist/components/VScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
37
37
  dist/components/HScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
38
- dist/components/DataTable/TScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
39
38
  dist/base/BtnBase.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
40
39
  dist/components/TabItem.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
40
+ dist/components/DataTable/TScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
41
41
  dist/layout/PlSpacer/PlSpacer.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
42
42
  dist/components/PlSplash/PlSplash.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
43
43
  dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/nodes.js  0.11 kB │ gzip: 0.12 kB │ map: 0.36 kB
44
- dist/components/PlBtnLink/PlBtnLink.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
45
44
  dist/components/PlTooltip/PlTooltip.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
45
+ dist/components/PlBtnLink/PlBtnLink.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
46
46
  dist/components/PlLogView/PlLogView.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
47
47
  dist/components/Scrollable.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
48
48
  dist/components/PlBtnSplit/PlBtnSplit.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
49
49
  dist/components/PlTextArea/PlTextArea.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
50
50
  dist/components/PlBtnGhost/PlBtnGhost.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
51
- dist/components/PlBtnGroup/PlBtnGroup.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
52
51
  dist/components/PlDropdown/PlDropdown.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
52
+ dist/components/PlBtnGroup/PlBtnGroup.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
53
53
  dist/components/PlCheckbox/PlCheckbox.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
54
54
  dist/components/InputRange.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
55
55
  dist/utils/DoubleContour.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.43 kB
56
56
  dist/generated/components/svg/images/SvgRequired.vue3.js  0.11 kB │ gzip: 0.11 kB │ map: 1.02 kB
57
57
  dist/components/PlDropdown/OptionList.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
58
58
  dist/components/SliderRange.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
59
- dist/layout/PlBlockPage/PlBlockPage.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
60
59
  dist/layout/PlContainer/PlContainer.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
60
+ dist/layout/PlBlockPage/PlBlockPage.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
61
61
  dist/components/PlBtnAccent/PlBtnAccent.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
62
62
  dist/components/PlBtnDanger/PlBtnDanger.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
63
63
  dist/components/PlTextField/PlTextField.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
64
- dist/components/PlFileInput/PlFileInput.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
65
- dist/components/PlAccordion/PlAccordion.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
66
64
  dist/components/PlStatusTag/PlStatusTag.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
65
+ dist/components/PlAccordion/PlAccordion.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
66
+ dist/components/PlFileInput/PlFileInput.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
67
67
  dist/components/DataTable/ColumnCaret.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
68
68
  dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sparse.js  0.11 kB │ gzip: 0.12 kB │ map: 0.39 kB
69
69
  dist/components/PlBtnPrimary/PlBtnPrimary.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
@@ -72,8 +72,8 @@ computing gzip size...
72
72
  dist/utils/InnerBorder.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.34 kB
73
73
  dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/number.js  0.11 kB │ gzip: 0.12 kB │ map: 0.78 kB
74
74
  dist/components/ThemeSwitcher.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
75
- dist/components/PlProgressBar/PlProgressBar.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
76
75
  dist/components/PlDropdownRef/PlDropdownRef.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
76
+ dist/components/PlProgressBar/PlProgressBar.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
77
77
  dist/components/PlNumberField/PlNumberField.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
78
78
  dist/components/PlDialogModal/PlDialogModal.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
79
79
  dist/components/DataTable/TableComponent.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
@@ -97,8 +97,8 @@ computing gzip size...
97
97
  dist/components/PlLoaderCircular/PlLoaderCircular.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
98
98
  dist/components/SliderRangeTriple.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
99
99
  dist/components/DataTable/BaseCellComponent.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
100
- dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js  0.12 kB │ gzip: 0.12 kB │ map: 0.39 kB
101
100
  dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/constant.js  0.12 kB │ gzip: 0.12 kB │ map: 0.39 kB
101
+ dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/constant.js  0.12 kB │ gzip: 0.12 kB │ map: 0.39 kB
102
102
  dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
103
103
  dist/components/DataTable/ColumnsCommandMenu.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
104
104
  dist/components/PlNotificationAlert/PlNotificationAlert.vue2.js  0.13 kB │ gzip: 0.12 kB │ map: 0.11 kB
@@ -230,9 +230,9 @@ computing gzip size...
230
230
  dist/assets/icons/icon-assets-min/24_text-align-right.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.50 kB
231
231
  dist/assets/icons/icon-assets-min/16_checkmark.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
232
232
  dist/components/PlChartStackedBar/PlChartStackedBar.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
233
+ dist/components/PlElementList/PlElementListItem.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
233
234
  dist/assets/icons/icon-assets-min/16_arrow-up.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
234
235
  dist/assets/icons/icon-assets-min/24_linetype-twodash.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.50 kB
235
- dist/components/PlElementList/PlElementListItem.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
236
236
  dist/components/PlChartStackedBar/StackedRowCompact.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
237
237
  dist/_virtual/canonicalize.js  0.30 kB │ gzip: 0.22 kB │ map: 0.10 kB
238
238
  dist/assets/icons/icon-assets-min/24_checkmark.svg.js  0.31 kB │ gzip: 0.25 kB │ map: 0.49 kB
@@ -429,11 +429,11 @@ computing gzip size...
429
429
  dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/interrupt.js  0.55 kB │ gzip: 0.35 kB │ map: 1.53 kB
430
430
  dist/utils/DoubleContour.vue.js  0.55 kB │ gzip: 0.37 kB │ map: 0.70 kB
431
431
  dist/assets/icons/icon-assets-min/24_paper-clip.svg.js  0.55 kB │ gzip: 0.33 kB │ map: 0.73 kB
432
- dist/composition/computedCached.js  0.55 kB │ gzip: 0.32 kB │ map: 2.15 kB
433
432
  dist/assets/icons/icon-assets-min/16_paper-clip.svg.js  0.55 kB │ gzip: 0.35 kB │ map: 0.73 kB
434
433
  dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/sort.js  0.55 kB │ gzip: 0.36 kB │ map: 1.72 kB
435
434
  dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/selectAll.js  0.55 kB │ gzip: 0.34 kB │ map: 1.68 kB
436
435
  dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/interpolate.js  0.56 kB │ gzip: 0.26 kB │ map: 0.88 kB
436
+ dist/composition/computedCached.js  0.56 kB │ gzip: 0.33 kB │ map: 2.39 kB
437
437
  dist/assets/icons/icon-assets-min/16_settings.svg.js  0.56 kB │ gzip: 0.33 kB │ map: 0.74 kB
438
438
  dist/assets/icons/icon-assets-min/24_frame-type-none.svg.js  0.56 kB │ gzip: 0.27 kB │ map: 0.75 kB
439
439
  dist/components/DataTable/ColumnCaret.vue.js  0.56 kB │ gzip: 0.37 kB │ map: 0.78 kB
@@ -535,13 +535,13 @@ computing gzip size...
535
535
  dist/assets/icons/icon-assets-min/24_color.svg.js  0.81 kB │ gzip: 0.44 kB │ map: 1.02 kB
536
536
  dist/assets/icons/icon-assets-min/24_show.svg.js  0.81 kB │ gzip: 0.49 kB │ map: 0.99 kB
537
537
  dist/assets/icons/icon-assets-min/24_cloud-offline.svg.js  0.81 kB │ gzip: 0.51 kB │ map: 1.01 kB
538
+ dist/composition/watchCached.js  0.81 kB │ gzip: 0.45 kB │ map: 2.45 kB
538
539
  dist/assets/icons/icon-assets-min/24_cookie.svg.js  0.82 kB │ gzip: 0.48 kB │ map: 0.99 kB
539
540
  dist/assets/icons/icon-assets-min/24_bar-cross.svg.js  0.82 kB │ gzip: 0.37 kB │ map: 1.07 kB
540
541
  dist/assets/icons/icon-assets-min/24_view-hide.svg.js  0.83 kB │ gzip: 0.51 kB │ map: 1.01 kB
541
542
  dist/assets/icons/icon-assets-min/24_rotation-45.svg.js  0.83 kB │ gzip: 0.49 kB │ map: 1.01 kB
542
543
  dist/components/TabItem.vue.js  0.84 kB │ gzip: 0.48 kB │ map: 1.25 kB
543
544
  dist/components/PlFileDialog/remote.js  0.84 kB │ gzip: 0.48 kB │ map: 2.26 kB
544
- dist/composition/watchCached.js  0.85 kB │ gzip: 0.45 kB │ map: 2.11 kB
545
545
  dist/assets/icons/icon-assets-min/24_skatterplot.svg.js  0.85 kB │ gzip: 0.37 kB │ map: 1.06 kB
546
546
  dist/assets/icons/icon-assets-min/24_boxplot-jitter.svg.js  0.85 kB │ gzip: 0.38 kB │ map: 1.06 kB
547
547
  dist/components/DataTable/index.js  0.88 kB │ gzip: 0.41 kB │ map: 2.81 kB
@@ -604,7 +604,7 @@ computing gzip size...
604
604
  dist/node_modules/.pnpm/d3-zoom@3.0.0/node_modules/d3-zoom/src/transform.js  1.16 kB │ gzip: 0.40 kB │ map: 3.01 kB
605
605
  dist/assets/icons/icon-assets-min/24_cluster.svg.js  1.16 kB │ gzip: 0.47 kB │ map: 1.34 kB
606
606
  dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/linear.js  1.17 kB │ gzip: 0.55 kB │ map: 3.28 kB
607
- dist/generated/components/svg/images/SvgRequired.vue2.js  1.19 kB │ gzip: 0.75 kB │ map: 1.03 kB
607
+ dist/generated/components/svg/images/SvgRequired.vue.js  1.19 kB │ gzip: 0.75 kB │ map: 1.03 kB
608
608
  dist/components/PlSectionSeparator/PlSectionSeparator.vue3.js  1.19 kB │ gzip: 0.60 kB │ map: 0.11 kB
609
609
  dist/components/PlRadio/PlRadio.vue2.js  1.23 kB │ gzip: 0.66 kB │ map: 2.83 kB
610
610
  dist/components/PlIcon24/PlIcon24.vue3.js  1.23 kB │ gzip: 0.38 kB │ map: 0.10 kB
@@ -674,7 +674,6 @@ computing gzip size...
674
674
  dist/components/DropdownListItem.vue.js  1.89 kB │ gzip: 0.77 kB │ map: 2.72 kB
675
675
  dist/assets/icons/icon-assets-min/24_pen-tool.svg.js  1.94 kB │ gzip: 1.00 kB │ map: 2.11 kB
676
676
  dist/assets/icons/icon-assets-min/16_sorter.svg.js  1.96 kB │ gzip: 0.51 kB │ map: 2.19 kB
677
- dist/components/PlSvg/registry.js  1.98 kB │ gzip: 0.96 kB │ map: 5.37 kB
678
677
  dist/components/PlToggleSwitch/PlToggleSwitch.vue.js  2.02 kB │ gzip: 0.97 kB │ map: 1.31 kB
679
678
  dist/assets/icons/icon-assets-min/24_bindot.svg.js  2.04 kB │ gzip: 0.38 kB │ map: 2.40 kB
680
679
  dist/assets/icons/icon-assets-min/24_violin-jitter.svg.js  2.08 kB │ gzip: 0.98 kB │ map: 2.29 kB
@@ -683,6 +682,7 @@ computing gzip size...
683
682
  dist/assets/icons/icon-assets-min/24_annotation.svg.js  2.11 kB │ gzip: 0.63 kB │ map: 2.36 kB
684
683
  dist/node_modules/.pnpm/d3-dispatch@3.0.1/node_modules/d3-dispatch/src/dispatch.js  2.11 kB │ gzip: 0.88 kB │ map: 5.87 kB
685
684
  dist/components/PlDropdownLine/ResizableInput.vue.js  2.17 kB │ gzip: 1.03 kB │ map: 1.76 kB
685
+ dist/components/PlSvg/registry.js  2.20 kB │ gzip: 0.99 kB │ map: 5.59 kB
686
686
  dist/components/PlLoaderCircular/PlLoaderCircular.vue.js  2.21 kB │ gzip: 0.94 kB │ map: 0.14 kB
687
687
  dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js  2.22 kB │ gzip: 0.89 kB │ map: 7.16 kB
688
688
  dist/components/InputRange.vue.js  2.24 kB │ gzip: 0.92 kB │ map: 3.72 kB
@@ -717,8 +717,8 @@ computing gzip size...
717
717
  dist/components/PlBtnPrimary/PlBtnPrimary.vue.js  3.57 kB │ gzip: 1.34 kB │ map: 1.22 kB
718
718
  dist/components/PlFileDialog/PlFileDialog.vue.js  3.58 kB │ gzip: 1.41 kB │ map: 4.60 kB
719
719
  dist/composition/useSortable.js  3.68 kB │ gzip: 1.30 kB │ map: 10.85 kB
720
- dist/components/PlElementList/PlElementListItem.vue3.js  3.71 kB │ gzip: 1.34 kB │ map: 0.12 kB
721
- dist/components/PlElementList/PlElementListItem.vue2.js  3.76 kB │ gzip: 1.14 kB │ map: 6.43 kB
720
+ dist/components/PlElementList/PlElementListItem.vue2.js  3.76 kB │ gzip: 1.14 kB │ map: 6.50 kB
721
+ dist/components/PlElementList/PlElementListItem.vue3.js  3.78 kB │ gzip: 1.37 kB │ map: 0.12 kB
722
722
  dist/components/PlChip/PlChip.vue.js  4.01 kB │ gzip: 1.61 kB │ map: 1.35 kB
723
723
  dist/assets/icons/icon-assets-min/24_heatmap.svg.js  4.38 kB │ gzip: 0.99 kB │ map: 4.68 kB
724
724
  dist/composition/useSortable2.js  4.41 kB │ gzip: 1.50 kB │ map: 13.06 kB
@@ -745,7 +745,7 @@ computing gzip size...
745
745
  dist/components/PlDropdownLine/PlDropdownLine.vue.js  14.66 kB │ gzip: 3.91 kB │ map: 13.27 kB
746
746
  dist/lib/model/common/dist/index.js  15.38 kB │ gzip: 4.26 kB │ map: 89.05 kB
747
747
  dist/components/PlDropdown/PlDropdown.vue.js  16.29 kB │ gzip: 4.79 kB │ map: 15.21 kB
748
- dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js  17.36 kB │ gzip: 4.83 kB │ map: 14.94 kB
748
+ dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js  17.35 kB │ gzip: 4.83 kB │ map: 14.94 kB
749
749
  dist/components/PlAutocomplete/PlAutocomplete.vue.js  17.72 kB │ gzip: 5.14 kB │ map: 17.60 kB
750
750
  dist/components/PlDropdownMulti/PlDropdownMulti.vue.js  20.19 kB │ gzip: 5.27 kB │ map: 13.43 kB
751
751
  dist/components/PlSvg/PlSvg.vue2.js  39.01 kB │ gzip: 3.39 kB │ map: 11.95 kB
@@ -756,6 +756,6 @@ computing gzip size...
756
756
  dist/index.js 501.34 kB │ gzip: 192.29 kB │ map: 5.60 kB
757
757
  dist/components/PlSlideModal/PlSlideModal.vue.js 601.75 kB │ gzip: 204.43 kB │ map: 3.22 kB
758
758
  dist/components/DataTable/TableComponent.vue.js 603.09 kB │ gzip: 205.04 kB │ map: 4.87 kB
759
- [vite:dts] Declaration files built in 6869ms.
759
+ [vite:dts] Declaration files built in 6196ms.
760
760
 
761
- ✓ built in 11.41s
761
+ ✓ built in 11.36s
@@ -1,5 +1,5 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.3.11 type-check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.3.13 type-check /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > vue-tsc --project ./tsconfig.lib.json
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @milaboratories/uikit
2
2
 
3
+ ## 2.3.13
4
+
5
+ ### Patch Changes
6
+
7
+ - 98eded5: Update styles
8
+
9
+ ## 2.3.12
10
+
11
+ ### Patch Changes
12
+
13
+ - 2273454: Dont use permament svg w/h
14
+
3
15
  ## 2.3.11
4
16
 
5
17
  ### Patch Changes
@@ -15,7 +15,7 @@ import Oe from "../PlIcon16/PlIcon16.vue.js";
15
15
  import xe from "../PlIcon24/PlIcon24.vue.js";
16
16
  import Ee from "../../utils/DropdownOverlay/DropdownOverlay.vue.js";
17
17
  import { useWatchFetch as H } from "../../composition/useWatchFetch.js";
18
- import Ve from "../../generated/components/svg/images/SvgRequired.vue2.js";
18
+ import Ve from "../../generated/components/svg/images/SvgRequired.vue.js";
19
19
  import { getErrorMessage as Ae } from "../../helpers/error.js";
20
20
  import { debouncedRef as Ce } from "../../node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/shared/index.js";
21
21
  const De = ["tabindex"], Re = { class: "pl-autocomplete__container" }, Fe = { class: "pl-autocomplete__field" }, Me = ["disabled", "placeholder"], $e = {
@@ -12,7 +12,7 @@ import we from "../LongText.vue.js";
12
12
  import { normalizeListOptions as _e } from "../../helpers/utils.js";
13
13
  import ke from "../PlIcon16/PlIcon16.vue.js";
14
14
  import ye from "../PlIcon24/PlIcon24.vue.js";
15
- import ge from "../../generated/components/svg/images/SvgRequired.vue2.js";
15
+ import ge from "../../generated/components/svg/images/SvgRequired.vue.js";
16
16
  import { getErrorMessage as Ie } from "../../helpers/error.js";
17
17
  import be from "./OptionList.vue.js";
18
18
  import { useGroupBy as Ve } from "./useGroupBy.js";
@@ -14,7 +14,7 @@ import we from "../LongText.vue.js";
14
14
  import ke from "../PlIcon16/PlIcon16.vue.js";
15
15
  import ye from "../PlIcon24/PlIcon24.vue.js";
16
16
  import { normalizeListOptions as Ie } from "../../helpers/utils.js";
17
- import ge from "../../generated/components/svg/images/SvgRequired.vue2.js";
17
+ import ge from "../../generated/components/svg/images/SvgRequired.vue.js";
18
18
  import { getErrorMessage as Ve } from "../../helpers/error.js";
19
19
  const be = { class: "ui-dropdown__envelope" }, Ce = ["tabindex"], Ee = { class: "ui-dropdown__container" }, Le = { class: "ui-dropdown__field" }, Se = ["disabled", "placeholder"], xe = { class: "ui-dropdown__controls" }, Ae = { key: 0 }, Oe = {
20
20
  key: 0,
@@ -11,7 +11,7 @@ import { deepEqual as k, deepIncludes as x } from "../../helpers/objects.js";
11
11
  import { normalizeListOptions as pe } from "../../helpers/utils.js";
12
12
  import fe from "../../utils/DropdownOverlay/DropdownOverlay.vue.js";
13
13
  import me from "../PlIcon24/PlIcon24.vue.js";
14
- import ve from "../../generated/components/svg/images/SvgRequired.vue2.js";
14
+ import ve from "../../generated/components/svg/images/SvgRequired.vue.js";
15
15
  import { getErrorMessage as he } from "../../helpers/error.js";
16
16
  const _e = ["tabindex"], we = { class: "pl-dropdown-multi__container" }, ye = { class: "pl-dropdown-multi__field" }, ke = ["disabled", "placeholder"], be = {
17
17
  key: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"PlElementListItem.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"names":[],"mappings":"yBA6PiB,CAAC,SAAS,OAAO,yBACpB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WA0M1D,mBAAmB,CAAC;;;;;;cAvMpB,CAAC;eACA,MAAM;wBACG,OAAO;kBACb,OAAO;qBACJ,OAAO;qBACP,OAAO;sBACN,OAAO;oBACT,OAAO;oBACP,OAAO;mBACR,OAAO;oBACN,OAAO;kBACT,OAAO;mBA4L2E,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;eAzLF,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;eADjD,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;;YAKpD,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,KAAK,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACpC,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;;;;;YAqLD,OAAO,CAAC,OAAO,WAAW,CAAC;;AApNvE,wBAoN4E;AA2B5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"PlElementListItem.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"names":[],"mappings":"yBA8PiB,CAAC,SAAS,OAAO,yBACpB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAClD,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,iBAC5F,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;WA0M1D,mBAAmB,CAAC;;;;;;cAvMpB,CAAC;eACA,MAAM;wBACG,OAAO;kBACb,OAAO;qBACJ,OAAO;qBACP,OAAO;sBACN,OAAO;oBACT,OAAO;oBACP,OAAO;mBACR,OAAO;oBACN,OAAO;kBACT,OAAO;mBA4L2E,CAAC,4BAA2B;oBACzG,OAAO,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI;WAClD,GAAG;;eAzLF,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;eADjD,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;kBAC3C,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO;;;YAKpD,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACvC,KAAK,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;YACpC,QAAQ,QAAQ,CAAC,SAAS,MAAM,GAAG,IAAI;;;;;YAqLD,OAAO,CAAC,OAAO,WAAW,CAAC;;AApNvE,wBAoN4E;AA2B5E,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlElementListItem.vue2.js","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"sourcesContent":["<script generic=\"T extends unknown = unknown\" lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlIcon24 } from '../PlIcon24';\n\nconst props = defineProps<{\n item: T;\n index: number;\n showDragHandle: boolean;\n isActive: boolean;\n isDraggable: boolean;\n isRemovable: boolean;\n isExpandable: boolean;\n isExpanded: boolean;\n isToggable: boolean;\n isToggled: boolean;\n isPinnable: boolean;\n isPinned: boolean;\n}>();\n\nconst slots = defineSlots<{\n title: (props: { item: T; index: number }) => unknown;\n content?: (props: { item: T; index: number }) => unknown;\n}>();\nconst hasContentSlot = computed(() => slots['content'] !== undefined);\n\nconst emit = defineEmits<{\n (e: 'expand', item: T, index: number): void;\n (e: 'toggle', item: T, index: number): void;\n (e: 'pin', item: T, index: number): void;\n (e: 'remove', item: T, index: number): void;\n}>();\n</script>\n\n<template>\n <div\n :class=\"[$style.root, {\n [$style.active]: props.isActive,\n [$style.pinned]: props.isPinned,\n [$style.disabled]: props.isToggled,\n }]\"\n >\n <div\n :class=\"[$style.head, {\n [$style.clickable]: hasContentSlot,\n }]\"\n @click=\"isExpandable && emit('expand', props.item, props.index)\"\n >\n <div\n v-if=\"props.showDragHandle\"\n :class=\"[$style.action, $style.draggable, { [$style.disable]: !props.isDraggable } ]\"\n :data-draggable=\"props.isDraggable\"\n >\n <PlIcon16 name=\"drag-dots\" />\n </div>\n <PlIcon16 v-if=\"isExpandable\" :class=\"[$style.contentChevron, { [$style.opened]: props.isExpanded }]\" name=\"chevron-down\" />\n\n <div :class=\"$style.title\">\n <slot name=\"title\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n\n <div :class=\"[$style.actions, $style.showOnHover]\">\n <div\n v-if=\"props.isToggable\"\n :class=\"[$style.action, $style.clickable, { [$style.disable]: !props.isToggable }]\"\n @click.stop=\"emit('toggle', props.item, props.index)\"\n >\n <PlIcon24 :name=\"props.isToggled === true ? 'view-hide' : 'view-show'\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isPinnable\"\n :class=\"[$style.action, $style.clickable, {\n [$style.disable]: !props.isPinnable,\n [$style.activated]: props.isPinned,\n }]\"\n @click.stop=\"emit('pin', props.item, props.index)\"\n >\n <PlIcon24 name=\"pin\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isRemovable\"\n :class=\"[$style.action, $style.clickable]\"\n @click.stop=\"emit('remove', props.item, props.index)\"\n >\n <PlIcon16 name=\"close\" />\n </div>\n </div>\n </div>\n <div\n v-if=\"hasContentSlot && props.isExpanded\"\n :class=\"[$style.body, { [$style.disabled]: props.isToggled }]\"\n >\n <slot name=\"content\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n </div>\n</template>\n\n<style module>\n@use '../../assets/variables.scss' as *;\n\n.root {\n --background: rgba(255, 255, 255, 0.8);\n --border-color: var(--color-div-grey);\n --head-background: unset;\n --box-shadow: none;\n --box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent);\n\n &:global(.sortable-drag),\n &:global(.sortable-chosen) {\n --head-background: var(--gradient-light-lime);\n --border-color: var(--border-color-focus);\n --box-shadow: var(--box-shadow-active)\n }\n}\n.root {\n display: flex;\n flex-direction: column;\n justify-content: center;\n border-radius: var(--border-radius);\n border: 1px solid var(--border-color);\n background-color: var(--background);\n transition: box-shadow 0.15s;\n box-shadow: var(--box-shadow);;\n overflow: hidden;\n\n &:hover {\n --border-color: var(--border-color-focus);\n }\n\n &.disabled {\n opacity: 0.6;\n filter: grayscale(1);\n }\n\n &.pinned {\n --background: var(--bg-base-light);\n }\n\n &.active {\n --border-color: var(--border-color-focus);\n --head-background: var(--btn-accent-positive-500);\n }\n}\n\n.head {\n position: relative;\n display: flex;\n align-items: center;\n padding: 8px;\n min-height: 40px;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n background: var(--head-background);\n\n &:hover, &.opened {\n --head-background: var(--gradient-light-lime);\n }\n}\n\n.contentChevron {\n display: block;\n width: 16px;\n height: 16px;\n margin-right: 4px;\n transform: rotate(-90deg);\n transition: transform 0.15s;\n\n &.opened {\n transform: rotate(0deg);\n }\n}\n\n.title {\n display: flex;\n flex-direction: row;\n flex: 1 1 0;\n gap: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 24px;\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n\n &.disabled {\n pointer-events: none;\n }\n}\n\n.actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n background-color: var(--background);\n border-radius: var(--border-radius);\n}\n\n.action {\n width: 24px;\n height: 24px;\n padding: 4px; /* use padding instead of gap on parent, for better accessibility */\n opacity: 0.6;\n border-radius: var(--border-radius);\n transition: all 0.15s;\n\n svg {\n width: 16px;\n height: 16px;\n }\n\n &:hover {\n opacity: 1;\n background-color: var(--bg-elevated-02);\n }\n\n &.activated {\n opacity: 0.8;\n }\n\n &.disable {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.clickable {\n cursor: pointer;\n}\n\n.draggable {\n cursor: grab;\n}\n\n.showOnHover {\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.root:hover .showOnHover {\n opacity: 1;\n}\n</style>\n"],"names":["props","__props","slots","_useSlots","hasContentSlot","computed","emit","__emit"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAeRC,IAAQC,EAGV,GACEC,IAAiBC,EAAS,MAAMH,EAAM,YAAe,MAAS,GAE9DI,IAAOC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlElementListItem.vue2.js","sources":["../../../src/components/PlElementList/PlElementListItem.vue"],"sourcesContent":["<script generic=\"T extends unknown = unknown\" lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlIcon24 } from '../PlIcon24';\n\nconst props = defineProps<{\n item: T;\n index: number;\n showDragHandle: boolean;\n isActive: boolean;\n isDraggable: boolean;\n isRemovable: boolean;\n isExpandable: boolean;\n isExpanded: boolean;\n isToggable: boolean;\n isToggled: boolean;\n isPinnable: boolean;\n isPinned: boolean;\n}>();\n\nconst slots = defineSlots<{\n title: (props: { item: T; index: number }) => unknown;\n content?: (props: { item: T; index: number }) => unknown;\n}>();\nconst hasContentSlot = computed(() => slots['content'] !== undefined);\n\nconst emit = defineEmits<{\n (e: 'expand', item: T, index: number): void;\n (e: 'toggle', item: T, index: number): void;\n (e: 'pin', item: T, index: number): void;\n (e: 'remove', item: T, index: number): void;\n}>();\n</script>\n\n<template>\n <div\n :class=\"[$style.root, {\n [$style.active]: props.isActive,\n [$style.pinned]: props.isPinned,\n [$style.disabled]: props.isToggled,\n }]\"\n >\n <div\n :class=\"[$style.head, {\n [$style.clickable]: hasContentSlot,\n }]\"\n @click=\"isExpandable && emit('expand', props.item, props.index)\"\n >\n <div\n v-if=\"props.showDragHandle\"\n :class=\"[$style.action, $style.draggable, { [$style.disable]: !props.isDraggable } ]\"\n :data-draggable=\"props.isDraggable\"\n >\n <PlIcon16 name=\"drag-dots\" />\n </div>\n <PlIcon16 v-if=\"isExpandable\" :class=\"[$style.contentChevron, { [$style.opened]: props.isExpanded }]\" name=\"chevron-down\" />\n\n <div :class=\"$style.title\">\n <slot name=\"title\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n\n <div :class=\"[$style.actions, $style.showOnHover]\">\n <div\n v-if=\"props.isToggable\"\n :class=\"[$style.action, $style.clickable, { [$style.disable]: !props.isToggable }]\"\n @click.stop=\"emit('toggle', props.item, props.index)\"\n >\n <PlIcon24 :name=\"props.isToggled === true ? 'view-hide' : 'view-show'\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isPinnable\"\n :class=\"[$style.action, $style.clickable, {\n [$style.disable]: !props.isPinnable,\n [$style.activated]: props.isPinned,\n }]\"\n @click.stop=\"emit('pin', props.item, props.index)\"\n >\n <PlIcon24 name=\"pin\" size=\"16\" />\n </div>\n <div\n v-if=\"props.isRemovable\"\n :class=\"[$style.action, $style.clickable]\"\n @click.stop=\"emit('remove', props.item, props.index)\"\n >\n <PlIcon16 name=\"close\" />\n </div>\n </div>\n </div>\n <div\n v-if=\"hasContentSlot && props.isExpanded\"\n :class=\"[$style.body, { [$style.disabled]: props.isToggled }]\"\n >\n <slot name=\"content\" :item=\"props.item\" :index=\"props.index\" />\n </div>\n </div>\n</template>\n\n<style module>\n@use '../../assets/variables.scss' as *;\n\n.root {\n --background: rgba(255, 255, 255, 0.8);\n --border-color: var(--color-div-grey);\n --head-background: unset;\n --box-shadow: none;\n --box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent);\n\n &:global(.sortable-drag),\n &:global(.sortable-chosen) {\n --head-background: var(--gradient-light-lime);\n --border-color: var(--border-color-focus);\n --box-shadow: var(--box-shadow-active)\n }\n}\n.root {\n display: flex;\n flex-direction: column;\n justify-content: center;\n border-radius: var(--border-radius);\n border: 1px solid var(--border-color);\n background-color: var(--background);\n transition: box-shadow 0.15s;\n box-shadow: var(--box-shadow);;\n overflow: hidden;\n\n &:hover {\n --border-color: var(--border-color-focus);\n }\n\n &.disabled {\n --icon-color: var(--ic-02);\n --border-color: var(--border-color-div-grey);\n color: var(--txt-03);\n filter: grayscale(1);\n }\n\n &.pinned {\n --background: var(--bg-base-light);\n }\n\n &.active {\n --border-color: var(--border-color-focus);\n --head-background: var(--btn-accent-positive-500);\n }\n}\n\n.head {\n position: relative;\n display: flex;\n align-items: center;\n padding: 8px;\n min-height: 40px;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n background: var(--head-background);\n\n &:hover, &.opened {\n --head-background: var(--gradient-light-lime);\n }\n}\n\n.contentChevron {\n display: block;\n width: 16px;\n height: 16px;\n margin-right: 4px;\n transform: rotate(-90deg);\n transition: transform 0.15s;\n\n &.opened {\n transform: rotate(0deg);\n }\n}\n\n.title {\n display: flex;\n flex-direction: row;\n flex: 1 1 0;\n gap: 8px;\n text-overflow: ellipsis;\n}\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 24px;\n border-radius: 0 0 var(--border-radius) var(--border-radius);\n\n &.disabled {\n pointer-events: none;\n }\n}\n\n.actions {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n background-color: var(--background);\n border-radius: var(--border-radius);\n}\n\n.action {\n width: 24px;\n height: 24px;\n padding: 4px; /* use padding instead of gap on parent, for better accessibility */\n opacity: 0.6;\n border-radius: var(--border-radius);\n transition: all 0.15s;\n\n svg {\n width: 16px;\n height: 16px;\n }\n\n &:hover {\n opacity: 1;\n background-color: var(--bg-elevated-02);\n }\n\n &.activated {\n opacity: 0.8;\n }\n\n &.disable {\n cursor: not-allowed;\n opacity: 0.4;\n }\n}\n\n.clickable {\n cursor: pointer;\n}\n\n.draggable {\n cursor: grab;\n}\n\n.showOnHover {\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.root:hover .showOnHover {\n opacity: 1;\n}\n</style>\n"],"names":["props","__props","slots","_useSlots","hasContentSlot","computed","emit","__emit"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAeRC,IAAQC,EAGV,GACEC,IAAiBC,EAAS,MAAMH,EAAM,YAAe,MAAS,GAE9DI,IAAOC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,39 +1,39 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('@use "../../assets/variables.scss" as *;._root_tuoht_4{--background: rgba(255, 255, 255, .8);--border-color: var(--color-div-grey);--head-background: unset;--box-shadow: none;--box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent)}._root_tuoht_4.sortable-drag,._root_tuoht_4.sortable-chosen{--head-background: var(--gradient-light-lime);--border-color: var(--border-color-focus);--box-shadow: var(--box-shadow-active) }._root_tuoht_4{display:flex;flex-direction:column;justify-content:center;border-radius:var(--border-radius);border:1px solid var(--border-color);background-color:var(--background);transition:box-shadow .15s;box-shadow:var(--box-shadow);overflow:hidden}._root_tuoht_4:hover{--border-color: var(--border-color-focus)}._root_tuoht_4._disabled_tuoht_33{opacity:.6;filter:grayscale(1)}._root_tuoht_4._pinned_tuoht_38{--background: var(--bg-base-light)}._root_tuoht_4._active_tuoht_42{--border-color: var(--border-color-focus);--head-background: var(--btn-accent-positive-500)}._head_tuoht_48{position:relative;display:flex;align-items:center;padding:8px;min-height:40px;border-radius:var(--border-radius) var(--border-radius) 0 0;background:var(--head-background)}._head_tuoht_48:hover,._head_tuoht_48._opened_tuoht_57{--head-background: var(--gradient-light-lime)}._contentChevron_tuoht_62{display:block;width:16px;height:16px;margin-right:4px;transform:rotate(-90deg);transition:transform .15s}._contentChevron_tuoht_62._opened_tuoht_57{transform:rotate(0)}._title_tuoht_75{display:flex;flex-direction:row;flex:1 1 0;gap:8px;overflow:hidden;text-overflow:ellipsis}._body_tuoht_84{display:flex;flex-direction:column;gap:12px;padding:24px;border-radius:0 0 var(--border-radius) var(--border-radius)}._body_tuoht_84._disabled_tuoht_33{pointer-events:none}._actions_tuoht_96{position:absolute;top:8px;right:8px;display:flex;align-items:center;background-color:var(--background);border-radius:var(--border-radius)}._action_tuoht_96{width:24px;height:24px;padding:4px;opacity:.6;border-radius:var(--border-radius);transition:all .15s}._action_tuoht_96 svg{width:16px;height:16px}._action_tuoht_96:hover{opacity:1;background-color:var(--bg-elevated-02)}._action_tuoht_96._activated_tuoht_124{opacity:.8}._action_tuoht_96._disable_tuoht_33{cursor:not-allowed;opacity:.4}._clickable_tuoht_134{cursor:pointer}._draggable_tuoht_138{cursor:grab}._showOnHover_tuoht_142{opacity:0;transition:opacity .15s}._root_tuoht_4:hover ._showOnHover_tuoht_142{opacity:1}')),document.head.appendChild(o)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- const t = "_root_tuoht_4", o = "_disabled_tuoht_33", _ = "_pinned_tuoht_38", e = "_active_tuoht_42", n = "_head_tuoht_48", c = "_opened_tuoht_57", a = "_contentChevron_tuoht_62", s = "_title_tuoht_75", d = "_body_tuoht_84", i = "_actions_tuoht_96", h = "_action_tuoht_96", l = "_activated_tuoht_124", u = "_disable_tuoht_33", b = "_clickable_tuoht_134", r = "_draggable_tuoht_138", v = "_showOnHover_tuoht_142", p = {
3
- root: t,
4
- disabled: o,
5
- pinned: _,
6
- active: e,
7
- head: n,
8
- opened: c,
9
- contentChevron: a,
10
- title: s,
1
+ (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('@use "../../assets/variables.scss" as *;._root_1s3c0_4{--background: rgba(255, 255, 255, .8);--border-color: var(--color-div-grey);--head-background: unset;--box-shadow: none;--box-shadow-active: 0 0 0 4px color-mix(in srgb, var(--border-color-focus) 50%, transparent)}._root_1s3c0_4.sortable-drag,._root_1s3c0_4.sortable-chosen{--head-background: var(--gradient-light-lime);--border-color: var(--border-color-focus);--box-shadow: var(--box-shadow-active) }._root_1s3c0_4{display:flex;flex-direction:column;justify-content:center;border-radius:var(--border-radius);border:1px solid var(--border-color);background-color:var(--background);transition:box-shadow .15s;box-shadow:var(--box-shadow);overflow:hidden}._root_1s3c0_4:hover{--border-color: var(--border-color-focus)}._root_1s3c0_4._disabled_1s3c0_33{--icon-color: var(--ic-02);--border-color: var(--border-color-div-grey);color:var(--txt-03);filter:grayscale(1)}._root_1s3c0_4._pinned_1s3c0_40{--background: var(--bg-base-light)}._root_1s3c0_4._active_1s3c0_44{--border-color: var(--border-color-focus);--head-background: var(--btn-accent-positive-500)}._head_1s3c0_50{position:relative;display:flex;align-items:center;padding:8px;min-height:40px;border-radius:var(--border-radius) var(--border-radius) 0 0;background:var(--head-background)}._head_1s3c0_50:hover,._head_1s3c0_50._opened_1s3c0_59{--head-background: var(--gradient-light-lime)}._contentChevron_1s3c0_64{display:block;width:16px;height:16px;margin-right:4px;transform:rotate(-90deg);transition:transform .15s}._contentChevron_1s3c0_64._opened_1s3c0_59{transform:rotate(0)}._title_1s3c0_77{display:flex;flex-direction:row;flex:1 1 0;gap:8px;text-overflow:ellipsis}._body_1s3c0_85{display:flex;flex-direction:column;gap:12px;padding:24px;border-radius:0 0 var(--border-radius) var(--border-radius)}._body_1s3c0_85._disabled_1s3c0_33{pointer-events:none}._actions_1s3c0_97{position:absolute;top:8px;right:8px;display:flex;align-items:center;background-color:var(--background);border-radius:var(--border-radius)}._action_1s3c0_97{width:24px;height:24px;padding:4px;opacity:.6;border-radius:var(--border-radius);transition:all .15s}._action_1s3c0_97 svg{width:16px;height:16px}._action_1s3c0_97:hover{opacity:1;background-color:var(--bg-elevated-02)}._action_1s3c0_97._activated_1s3c0_125{opacity:.8}._action_1s3c0_97._disable_1s3c0_33{cursor:not-allowed;opacity:.4}._clickable_1s3c0_135{cursor:pointer}._draggable_1s3c0_139{cursor:grab}._showOnHover_1s3c0_143{opacity:0;transition:opacity .15s}._root_1s3c0_4:hover ._showOnHover_1s3c0_143{opacity:1}')),document.head.appendChild(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ const c = "_root_1s3c0_4", t = "_disabled_1s3c0_33", o = "_pinned_1s3c0_40", _ = "_active_1s3c0_44", s = "_head_1s3c0_50", e = "_opened_1s3c0_59", n = "_contentChevron_1s3c0_64", a = "_title_1s3c0_77", d = "_body_1s3c0_85", i = "_actions_1s3c0_97", l = "_action_1s3c0_97", b = "_activated_1s3c0_125", r = "_disable_1s3c0_33", v = "_clickable_1s3c0_135", h = "_draggable_1s3c0_139", p = "_showOnHover_1s3c0_143", g = {
3
+ root: c,
4
+ disabled: t,
5
+ pinned: o,
6
+ active: _,
7
+ head: s,
8
+ opened: e,
9
+ contentChevron: n,
10
+ title: a,
11
11
  body: d,
12
12
  actions: i,
13
- action: h,
14
- activated: l,
15
- disable: u,
16
- clickable: b,
17
- draggable: r,
18
- showOnHover: v
13
+ action: l,
14
+ activated: b,
15
+ disable: r,
16
+ clickable: v,
17
+ draggable: h,
18
+ showOnHover: p
19
19
  };
20
20
  export {
21
- h as action,
21
+ l as action,
22
22
  i as actions,
23
- l as activated,
24
- e as active,
23
+ b as activated,
24
+ _ as active,
25
25
  d as body,
26
- b as clickable,
27
- a as contentChevron,
28
- p as default,
29
- u as disable,
30
- o as disabled,
31
- r as draggable,
32
- n as head,
33
- c as opened,
34
- _ as pinned,
35
- t as root,
36
- v as showOnHover,
37
- s as title
26
+ v as clickable,
27
+ n as contentChevron,
28
+ g as default,
29
+ r as disable,
30
+ t as disabled,
31
+ h as draggable,
32
+ s as head,
33
+ e as opened,
34
+ o as pinned,
35
+ c as root,
36
+ p as showOnHover,
37
+ a as title
38
38
  };
39
39
  //# sourceMappingURL=PlElementListItem.vue3.js.map
@@ -8,7 +8,7 @@ import "../../sdk/model/dist/index.js";
8
8
  import Q from "../../utils/DoubleContour.vue.js";
9
9
  import { useLabelNotch as W } from "../../utils/useLabelNotch.js";
10
10
  import { prettyBytes as y } from "../../lib/util/helpers/dist/index.js";
11
- import X from "../../generated/components/svg/images/SvgRequired.vue2.js";
11
+ import X from "../../generated/components/svg/images/SvgRequired.vue.js";
12
12
  import { getErrorMessage as Y } from "../../helpers/error.js";
13
13
  import { getFileNameFromHandle as Z, getFilePathFromHandle as x } from "../../lib/model/common/dist/index.js";
14
14
  const ee = {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/components/PlSvg/registry.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,sBAAsB,EAAE,cAAc,CAAC;KACxC;CACF;AAcD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAKF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CA2D/D"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/components/PlSvg/registry.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,sBAAsB,EAAE,cAAc,CAAC;KACxC;CACF;AAcD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAKF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAyD/D"}
@@ -1,41 +1,39 @@
1
- import { uniqueId as b } from "../../lib/util/helpers/dist/index.js";
2
- function E() {
1
+ import { uniqueId as D } from "../../lib/util/helpers/dist/index.js";
2
+ function H() {
3
3
  const e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
4
4
  return e.setAttribute("xmlns", "http://www.w3.org/2000/svg"), e.style.display = "none", document.body.prepend(e), e;
5
5
  }
6
6
  window.SvgRegistryRawSvgMap = window.SvgRegistryRawSvgMap ?? /* @__PURE__ */ new Map();
7
- window.SvgRegistryDefsElement = window.SvgRegistryDefsElement ?? E();
8
- const r = window.SvgRegistryRawSvgMap, $ = window.SvgRegistryDefsElement;
9
- function k(e, c) {
10
- var d, l;
11
- if (!r.has(e)) {
12
- const a = `svg-${c ? `${c}-` : ""}${b(16)}`, w = (d = e.match(/width="(\d+)(px)?"/)) == null ? void 0 : d[1], m = (l = e.match(/height="(\d+)(px)?"/)) == null ? void 0 : l[1], i = e.match(/viewBox="[-+]?\d*\.?\d+(?:e[-+]?\d+)?"/), f = i == null ? void 0 : i[2], S = i == null ? void 0 : i[3];
13
- let n = Number(f ?? w ?? 16);
14
- n = isNaN(n) ? 16 : n;
15
- let g = Number(S ?? m ?? 16);
16
- g = isNaN(g) ? 16 : g;
17
- const u = `0 0 ${n} ${g}`, p = e.match(/^<svg([^>]*)>/i);
18
- let o = p ? p[1] : "";
19
- o = o.replace(/\s*id\s*=\s*(['"])[^'"]*\1/gi, "").replace(/\s*viewBox\s*=\s*(['"])[^'"]*\1/gi, "");
20
- let M = 0, y = 0;
21
- const R = e.replace(/^<svg[^>]*>/i, `<svg id="${a}" viewBox="${u}" ${o}>`).replace(/<\/svg>\s*$/, "</svg>").replace(
7
+ window.SvgRegistryDefsElement = window.SvgRegistryDefsElement ?? H();
8
+ const l = window.SvgRegistryRawSvgMap, u = window.SvgRegistryDefsElement;
9
+ function B(e, d) {
10
+ var c, $, w, m, f;
11
+ if (!l.has(e)) {
12
+ const g = `svg-${d ? `${d}-` : ""}${D(16)}`, t = (c = e.match(/^<svg[^>]*>/i)) == null ? void 0 : c[0], h = ($ = t == null ? void 0 : t.match(/fill\s*=\s*"(.*?)"/)) == null ? void 0 : $[1], p = (w = t == null ? void 0 : t.match(/stroke\s*=\s*"(.*?)"/)) == null ? void 0 : w[1], y = (m = t == null ? void 0 : t.match(/width\s*=\s*"(\d+)(px)?"/)) == null ? void 0 : m[1], R = (f = t == null ? void 0 : t.match(/height\s*=\s*"(\d+)(px)?"/)) == null ? void 0 : f[1], n = t == null ? void 0 : t.match(/viewBox\s*=\s*"[-+]?\d*\.?\d+(?:e[-+]?\d+)?"/), k = n == null ? void 0 : n[2], x = n == null ? void 0 : n[3];
13
+ let r = Number(k ?? y ?? 16);
14
+ r = isNaN(r) ? 16 : r;
15
+ let o = Number(x ?? R ?? 16);
16
+ o = isNaN(o) ? 16 : o;
17
+ const E = `0 0 ${r} ${o}`;
18
+ let b = 0, N = 0;
19
+ const I = h ? `fill="${h}"` : "", S = p ? `stroke="${p}"` : "", A = e.replace(/^<svg[^>]*>/i, `<svg id="${g}" viewBox="${E}" ${I} ${S}>`).replace(/<\/svg>\s*$/, "</svg>").replace(
22
20
  /\bfill\s*=\s*(['"])(.*?)\1/gi,
23
- (x, t, s) => /^(none|transparent)$/i.test(s) ? `fill=${t}${s}${t}` : `fill=${t}var(--svg-fill-${M++}, ${s})${t}`
21
+ (C, s, i) => /^(none|transparent)$/i.test(i) ? `fill=${s}${i}${s}` : `fill=${s}var(--svg-fill-${b++}, ${i})${s}`
24
22
  ).replace(
25
23
  /\bstroke\s*=\s*(['"])(.*?)\1/gi,
26
- (x, t, s) => /^(none|transparent)$/i.test(s) ? `stroke=${t}${s}${t}` : `stroke=${t}var(--svg-stroke-${y++}, ${s})${t}`
27
- ), h = document.createElement("template");
28
- h.innerHTML = R;
29
- const v = h.content.firstElementChild;
30
- v && $ && $.appendChild(v), r.set(e, {
31
- spriteId: a,
32
- defaultWidth: n,
33
- defaultHeight: g
24
+ (C, s, i) => /^(none|transparent)$/i.test(i) ? `stroke=${s}${i}${s}` : `stroke=${s}var(--svg-stroke-${N++}, ${i})${s}`
25
+ ), a = document.createElement("template");
26
+ a.innerHTML = A;
27
+ const v = a.content.firstElementChild;
28
+ v && u && u.appendChild(v), l.set(e, {
29
+ spriteId: g,
30
+ defaultWidth: r,
31
+ defaultHeight: o
34
32
  });
35
33
  }
36
- return r.get(e);
34
+ return l.get(e);
37
35
  }
38
36
  export {
39
- k as registerSvg
37
+ B as registerSvg
40
38
  };
41
39
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sources":["../../../src/components/PlSvg/registry.ts"],"sourcesContent":["import { uniqueId } from '@milaboratories/helpers';\n\ndeclare global {\n interface Window {\n SvgRegistryRawSvgMap: Map<string, SvgMeta>;\n SvgRegistryDefsElement: SVGDefsElement;\n }\n}\n\nfunction createSpriteContainer() {\n const defsElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n defsElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n defsElement.style.display = 'none';\n document.body.prepend(defsElement);\n return defsElement;\n}\n\n// prevent multiple definitions of the same SVG registry in different builds\nwindow.SvgRegistryRawSvgMap = window.SvgRegistryRawSvgMap ?? new Map<string, SvgMeta>();\nwindow.SvgRegistryDefsElement = window.SvgRegistryDefsElement ?? createSpriteContainer();\n\nexport type SvgMeta = {\n spriteId: string;\n defaultWidth: number;\n defaultHeight: number;\n};\n\nconst registeredRaw = window.SvgRegistryRawSvgMap;\nconst defsElement = window.SvgRegistryDefsElement;\n\nexport function registerSvg(raw: string, name?: string): SvgMeta {\n if (!registeredRaw.has(raw)) {\n const id = `svg-${name ? `${name}-` : ''}${uniqueId(16)}`;\n\n const widthMatch = raw.match(/width=\"(\\d+)(px)?\"/)?.[1];\n const heightMatch = raw.match(/height=\"(\\d+)(px)?\"/)?.[1];\n const viewBoxParts = raw.match(/viewBox=\"[-+]?\\d*\\.?\\d+(?:e[-+]?\\d+)?\"/);\n const viewBoxWidthMatch = viewBoxParts?.[2];\n const viewBoxHeightMatch = viewBoxParts?.[3];\n let width = Number(viewBoxWidthMatch ?? widthMatch ?? 16);\n width = isNaN(width) ? 16 : width;\n let height = Number(viewBoxHeightMatch ?? heightMatch ?? 16);\n height = isNaN(height) ? 16 : height;\n const viewBox = `0 0 ${width} ${height}`;\n\n // Parse the original SVG tag and preserve all its attributes except id and viewBox\n const svgTagMatch = raw.match(/^<svg([^>]*)>/i);\n let svgAttributes = svgTagMatch ? svgTagMatch[1] : '';\n // Remove any existing id or viewBox attributes\n svgAttributes = svgAttributes\n .replace(/\\s*id\\s*=\\s*(['\"])[^'\"]*\\1/gi, '')\n .replace(/\\s*viewBox\\s*=\\s*(['\"])[^'\"]*\\1/gi, '');\n\n let fillIdx = 0;\n let strokeIdx = 0;\n const preparedSvg = raw\n .replace(/^<svg[^>]*>/i, `<svg id=\"${id}\" viewBox=\"${viewBox}\" ${svgAttributes}>`)\n .replace(/<\\/svg>\\s*$/, '</svg>')\n .replace(\n /\\bfill\\s*=\\s*(['\"])(.*?)\\1/gi,\n (_, q, value) =>\n /^(none|transparent)$/i.test(value)\n ? `fill=${q}${value}${q}`\n : `fill=${q}var(--svg-fill-${fillIdx++}, ${value})${q}`,\n )\n .replace(\n /\\bstroke\\s*=\\s*(['\"])(.*?)\\1/gi,\n (_, q, value) =>\n /^(none|transparent)$/i.test(value)\n ? `stroke=${q}${value}${q}`\n : `stroke=${q}var(--svg-stroke-${strokeIdx++}, ${value})${q}`,\n );\n\n const template = document.createElement('template');\n template.innerHTML = preparedSvg;\n\n const symbol = template.content.firstElementChild;\n if (symbol && defsElement) {\n defsElement.appendChild(symbol);\n }\n\n registeredRaw.set(raw, {\n spriteId: id,\n defaultWidth: width,\n defaultHeight: height,\n });\n }\n\n return registeredRaw.get(raw)!;\n}\n"],"names":["createSpriteContainer","defsElement","registeredRaw","registerSvg","raw","name","id","uniqueId","widthMatch","_a","heightMatch","_b","viewBoxParts","viewBoxWidthMatch","viewBoxHeightMatch","width","height","viewBox","svgTagMatch","svgAttributes","fillIdx","strokeIdx","preparedSvg","_","q","value","template","symbol"],"mappings":";AASA,SAASA,IAAwB;AAC/B,QAAMC,IAAc,SAAS,gBAAgB,8BAA8B,KAAK;AAChFA,SAAAA,EAAY,aAAa,SAAS,4BAA4B,GAC9DA,EAAY,MAAM,UAAU,QACnB,SAAA,KAAK,QAAQA,CAAW,GAC1BA;AACT;AAGA,OAAO,uBAAuB,OAAO,wBAAwB,oBAAI,IAAqB;AACtF,OAAO,yBAAyB,OAAO,0BAA0BD,EAAsB;AAQvF,MAAME,IAAgB,OAAO,sBACvBD,IAAc,OAAO;AAEX,SAAAE,EAAYC,GAAaC,GAAwB;;AAC/D,MAAI,CAACH,EAAc,IAAIE,CAAG,GAAG;AACrB,UAAAE,IAAK,OAAOD,IAAO,GAAGA,CAAI,MAAM,EAAE,GAAGE,EAAS,EAAE,CAAC,IAEjDC,KAAaC,IAAAL,EAAI,MAAM,oBAAoB,MAA9B,gBAAAK,EAAkC,IAC/CC,KAAcC,IAAAP,EAAI,MAAM,qBAAqB,MAA/B,gBAAAO,EAAmC,IACjDC,IAAeR,EAAI,MAAM,wCAAwC,GACjES,IAAoBD,KAAA,gBAAAA,EAAe,IACnCE,IAAqBF,KAAA,gBAAAA,EAAe;AAC1C,QAAIG,IAAQ,OAAOF,KAAqBL,KAAc,EAAE;AAChD,IAAAO,IAAA,MAAMA,CAAK,IAAI,KAAKA;AAC5B,QAAIC,IAAS,OAAOF,KAAsBJ,KAAe,EAAE;AAClD,IAAAM,IAAA,MAAMA,CAAM,IAAI,KAAKA;AAC9B,UAAMC,IAAU,OAAOF,CAAK,IAAIC,CAAM,IAGhCE,IAAcd,EAAI,MAAM,gBAAgB;AAC9C,QAAIe,IAAgBD,IAAcA,EAAY,CAAC,IAAI;AAEnD,IAAAC,IAAgBA,EACb,QAAQ,gCAAgC,EAAE,EAC1C,QAAQ,qCAAqC,EAAE;AAElD,QAAIC,IAAU,GACVC,IAAY;AAChB,UAAMC,IAAclB,EACjB,QAAQ,gBAAgB,YAAYE,CAAE,cAAcW,CAAO,KAAKE,CAAa,GAAG,EAChF,QAAQ,eAAe,QAAQ,EAC/B;AAAA,MACC;AAAA,MACA,CAACI,GAAGC,GAAGC,MACL,wBAAwB,KAAKA,CAAK,IAC9B,QAAQD,CAAC,GAAGC,CAAK,GAAGD,CAAC,KACrB,QAAQA,CAAC,kBAAkBJ,GAAS,KAAKK,CAAK,IAAID,CAAC;AAAA,IAAA,EAE1D;AAAA,MACC;AAAA,MACA,CAACD,GAAGC,GAAGC,MACL,wBAAwB,KAAKA,CAAK,IAC9B,UAAUD,CAAC,GAAGC,CAAK,GAAGD,CAAC,KACvB,UAAUA,CAAC,oBAAoBH,GAAW,KAAKI,CAAK,IAAID,CAAC;AAAA,IACjE,GAEIE,IAAW,SAAS,cAAc,UAAU;AAClD,IAAAA,EAAS,YAAYJ;AAEf,UAAAK,IAASD,EAAS,QAAQ;AAChC,IAAIC,KAAU1B,KACZA,EAAY,YAAY0B,CAAM,GAGhCzB,EAAc,IAAIE,GAAK;AAAA,MACrB,UAAUE;AAAA,MACV,cAAcS;AAAA,MACd,eAAeC;AAAA,IAAA,CAChB;AAAA,EAAA;AAGI,SAAAd,EAAc,IAAIE,CAAG;AAC9B;"}
1
+ {"version":3,"file":"registry.js","sources":["../../../src/components/PlSvg/registry.ts"],"sourcesContent":["import { uniqueId } from '@milaboratories/helpers';\n\ndeclare global {\n interface Window {\n SvgRegistryRawSvgMap: Map<string, SvgMeta>;\n SvgRegistryDefsElement: SVGDefsElement;\n }\n}\n\nfunction createSpriteContainer() {\n const defsElement = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n defsElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n defsElement.style.display = 'none';\n document.body.prepend(defsElement);\n return defsElement;\n}\n\n// prevent multiple definitions of the same SVG registry in different builds\nwindow.SvgRegistryRawSvgMap = window.SvgRegistryRawSvgMap ?? new Map<string, SvgMeta>();\nwindow.SvgRegistryDefsElement = window.SvgRegistryDefsElement ?? createSpriteContainer();\n\nexport type SvgMeta = {\n spriteId: string;\n defaultWidth: number;\n defaultHeight: number;\n};\n\nconst registeredRaw = window.SvgRegistryRawSvgMap;\nconst defsElement = window.SvgRegistryDefsElement;\n\nexport function registerSvg(raw: string, name?: string): SvgMeta {\n if (!registeredRaw.has(raw)) {\n const id = `svg-${name ? `${name}-` : ''}${uniqueId(16)}`;\n\n const openSvgTagMatch = raw.match(/^<svg[^>]*>/i)?.[0];\n const fillMatch = openSvgTagMatch?.match(/fill\\s*=\\s*\"(.*?)\"/)?.[1];\n const strokeMatch = openSvgTagMatch?.match(/stroke\\s*=\\s*\"(.*?)\"/)?.[1];\n const widthMatch = openSvgTagMatch?.match(/width\\s*=\\s*\"(\\d+)(px)?\"/)?.[1];\n const heightMatch = openSvgTagMatch?.match(/height\\s*=\\s*\"(\\d+)(px)?\"/)?.[1];\n const viewBoxParts = openSvgTagMatch?.match(/viewBox\\s*=\\s*\"[-+]?\\d*\\.?\\d+(?:e[-+]?\\d+)?\"/);\n const viewBoxWidthMatch = viewBoxParts?.[2];\n const viewBoxHeightMatch = viewBoxParts?.[3];\n let width = Number(viewBoxWidthMatch ?? widthMatch ?? 16);\n width = isNaN(width) ? 16 : width;\n let height = Number(viewBoxHeightMatch ?? heightMatch ?? 16);\n height = isNaN(height) ? 16 : height;\n const viewBox = `0 0 ${width} ${height}`;\n\n let fillIdx = 0;\n let strokeIdx = 0;\n const fillAttr = fillMatch ? `fill=\"${fillMatch}\"` : '';\n const strokeAttr = strokeMatch ? `stroke=\"${strokeMatch}\"` : '';\n\n const preparedSvg = raw\n .replace(/^<svg[^>]*>/i, `<svg id=\"${id}\" viewBox=\"${viewBox}\" ${fillAttr} ${strokeAttr}>`)\n .replace(/<\\/svg>\\s*$/, '</svg>')\n .replace(\n /\\bfill\\s*=\\s*(['\"])(.*?)\\1/gi,\n (_, q, value) =>\n /^(none|transparent)$/i.test(value)\n ? `fill=${q}${value}${q}`\n : `fill=${q}var(--svg-fill-${fillIdx++}, ${value})${q}`,\n )\n .replace(\n /\\bstroke\\s*=\\s*(['\"])(.*?)\\1/gi,\n (_, q, value) =>\n /^(none|transparent)$/i.test(value)\n ? `stroke=${q}${value}${q}`\n : `stroke=${q}var(--svg-stroke-${strokeIdx++}, ${value})${q}`,\n );\n\n const template = document.createElement('template');\n template.innerHTML = preparedSvg;\n\n const symbol = template.content.firstElementChild;\n if (symbol && defsElement) {\n defsElement.appendChild(symbol);\n }\n\n registeredRaw.set(raw, {\n spriteId: id,\n defaultWidth: width,\n defaultHeight: height,\n });\n }\n\n return registeredRaw.get(raw)!;\n}\n"],"names":["createSpriteContainer","defsElement","registeredRaw","registerSvg","raw","name","id","uniqueId","openSvgTagMatch","_a","fillMatch","_b","strokeMatch","_c","widthMatch","_d","heightMatch","_e","viewBoxParts","viewBoxWidthMatch","viewBoxHeightMatch","width","height","viewBox","fillIdx","strokeIdx","fillAttr","strokeAttr","preparedSvg","_","q","value","template","symbol"],"mappings":";AASA,SAASA,IAAwB;AAC/B,QAAMC,IAAc,SAAS,gBAAgB,8BAA8B,KAAK;AAChFA,SAAAA,EAAY,aAAa,SAAS,4BAA4B,GAC9DA,EAAY,MAAM,UAAU,QACnB,SAAA,KAAK,QAAQA,CAAW,GAC1BA;AACT;AAGA,OAAO,uBAAuB,OAAO,wBAAwB,oBAAI,IAAqB;AACtF,OAAO,yBAAyB,OAAO,0BAA0BD,EAAsB;AAQvF,MAAME,IAAgB,OAAO,sBACvBD,IAAc,OAAO;AAEX,SAAAE,EAAYC,GAAaC,GAAwB;;AAC/D,MAAI,CAACH,EAAc,IAAIE,CAAG,GAAG;AACrB,UAAAE,IAAK,OAAOD,IAAO,GAAGA,CAAI,MAAM,EAAE,GAAGE,EAAS,EAAE,CAAC,IAEjDC,KAAkBC,IAAAL,EAAI,MAAM,cAAc,MAAxB,gBAAAK,EAA4B,IAC9CC,KAAYC,IAAAH,KAAA,gBAAAA,EAAiB,MAAM,0BAAvB,gBAAAG,EAA+C,IAC3DC,KAAcC,IAAAL,KAAA,gBAAAA,EAAiB,MAAM,4BAAvB,gBAAAK,EAAiD,IAC/DC,KAAaC,IAAAP,KAAA,gBAAAA,EAAiB,MAAM,gCAAvB,gBAAAO,EAAqD,IAClEC,KAAcC,IAAAT,KAAA,gBAAAA,EAAiB,MAAM,iCAAvB,gBAAAS,EAAsD,IACpEC,IAAeV,KAAA,gBAAAA,EAAiB,MAAM,iDACtCW,IAAoBD,KAAA,gBAAAA,EAAe,IACnCE,IAAqBF,KAAA,gBAAAA,EAAe;AAC1C,QAAIG,IAAQ,OAAOF,KAAqBL,KAAc,EAAE;AAChD,IAAAO,IAAA,MAAMA,CAAK,IAAI,KAAKA;AAC5B,QAAIC,IAAS,OAAOF,KAAsBJ,KAAe,EAAE;AAClD,IAAAM,IAAA,MAAMA,CAAM,IAAI,KAAKA;AAC9B,UAAMC,IAAU,OAAOF,CAAK,IAAIC,CAAM;AAEtC,QAAIE,IAAU,GACVC,IAAY;AAChB,UAAMC,IAAWhB,IAAY,SAASA,CAAS,MAAM,IAC/CiB,IAAaf,IAAc,WAAWA,CAAW,MAAM,IAEvDgB,IAAcxB,EACjB,QAAQ,gBAAgB,YAAYE,CAAE,cAAciB,CAAO,KAAKG,CAAQ,IAAIC,CAAU,GAAG,EACzF,QAAQ,eAAe,QAAQ,EAC/B;AAAA,MACC;AAAA,MACA,CAACE,GAAGC,GAAGC,MACL,wBAAwB,KAAKA,CAAK,IAC9B,QAAQD,CAAC,GAAGC,CAAK,GAAGD,CAAC,KACrB,QAAQA,CAAC,kBAAkBN,GAAS,KAAKO,CAAK,IAAID,CAAC;AAAA,IAAA,EAE1D;AAAA,MACC;AAAA,MACA,CAACD,GAAGC,GAAGC,MACL,wBAAwB,KAAKA,CAAK,IAC9B,UAAUD,CAAC,GAAGC,CAAK,GAAGD,CAAC,KACvB,UAAUA,CAAC,oBAAoBL,GAAW,KAAKM,CAAK,IAAID,CAAC;AAAA,IACjE,GAEIE,IAAW,SAAS,cAAc,UAAU;AAClD,IAAAA,EAAS,YAAYJ;AAEf,UAAAK,IAASD,EAAS,QAAQ;AAChC,IAAIC,KAAUhC,KACZA,EAAY,YAAYgC,CAAM,GAGhC/B,EAAc,IAAIE,GAAK;AAAA,MACrB,UAAUE;AAAA,MACV,cAAce;AAAA,MACd,eAAeC;AAAA,IAAA,CAChB;AAAA,EAAA;AAGI,SAAApB,EAAc,IAAIE,CAAG;AAC9B;"}
@@ -5,7 +5,7 @@ import H from "../PlTooltip/PlTooltip.vue.js";
5
5
  import T from "../../utils/DoubleContour.vue.js";
6
6
  import { useLabelNotch as z } from "../../utils/useLabelNotch.js";
7
7
  import { useValidation as A } from "../../utils/useValidation.js";
8
- import I from "../../generated/components/svg/images/SvgRequired.vue2.js";
8
+ import I from "../../generated/components/svg/images/SvgRequired.vue.js";
9
9
  import { getErrorMessage as L } from "../../helpers/error.js";
10
10
  const P = { class: "ui-text-area__envelope" }, R = {
11
11
  key: 0,
@@ -7,7 +7,7 @@ import { useLabelNotch as J } from "../../utils/useLabelNotch.js";
7
7
  import { useValidation as K } from "../../utils/useValidation.js";
8
8
  import Q from "../PlIcon16/PlIcon16.vue.js";
9
9
  import W from "../PlIcon24/PlIcon24.vue.js";
10
- import X from "../../generated/components/svg/images/SvgRequired.vue2.js";
10
+ import X from "../../generated/components/svg/images/SvgRequired.vue.js";
11
11
  import { getErrorMessage as Y } from "../../helpers/error.js";
12
12
  const Z = { class: "pl-text-field__envelope" }, ee = {
13
13
  key: 0,
@@ -1,12 +1,11 @@
1
1
  import { ComputedGetter, ComputedSetter, ComputedRef, WritableComputedRef } from 'vue';
2
+ /**
3
+ * Alternative to `computed`, but triggering only on actual data changes.
4
+ * Always `deep` as the plain `computed` is.
5
+ */
2
6
  export declare function computedCached<T>(options: {
3
7
  get: ComputedGetter<T>;
4
8
  set: ComputedSetter<T>;
5
- deep?: boolean;
6
9
  }): WritableComputedRef<T>;
7
- export declare function computedCached<T>(options: {
8
- get: ComputedGetter<T>;
9
- deep?: boolean;
10
- }): ComputedRef<T>;
11
10
  export declare function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;
12
11
  //# sourceMappingURL=computedCached.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computedCached.d.ts","sourceRoot":"","sources":["../../src/composition/computedCached.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,KAAK,CAAC;AAEb,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3B,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AACnB,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"computedCached.d.ts","sourceRoot":"","sources":["../../src/composition/computedCached.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,KAAK,CAAC;AAEb;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACvB,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CACxB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC3B,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC"}
@@ -1,24 +1,23 @@
1
- import { isJsonEqual as f } from "../lib/util/helpers/dist/index.js";
2
- import { ref as o, watch as i, computed as a } from "vue";
3
- function v(r) {
4
- typeof r == "function" && (r = {
5
- get: r
6
- });
7
- const { get: u, set: c, deep: l } = r, e = o(u());
8
- return i(
1
+ import { isJsonEqual as f, deepClone as r } from "../lib/util/helpers/dist/index.js";
2
+ import { ref as s, watch as c, computed as i } from "vue";
3
+ function d(o) {
4
+ let u, l;
5
+ typeof o == "function" ? u = o : (u = o.get, l = o.set);
6
+ const e = s(u());
7
+ return c(
9
8
  u,
10
9
  (t) => {
11
- f(t, e.value) || (e.value = t);
10
+ f(t, e.value) || (e.value = r(t));
12
11
  },
13
- { deep: l }
14
- ), c ? a({
12
+ { deep: !0 }
13
+ ), l ? i({
15
14
  get: () => e.value,
16
15
  set: (t) => {
17
- f(t, e.value) || (e.value = t, c(t));
16
+ f(t, e.value) || (e.value = t, l(t));
18
17
  }
19
- }) : a(() => e.value);
18
+ }) : i(() => e.value);
20
19
  }
21
20
  export {
22
- v as computedCached
21
+ d as computedCached
23
22
  };
24
23
  //# sourceMappingURL=computedCached.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"computedCached.js","sources":["../../src/composition/computedCached.ts"],"sourcesContent":["import { isJsonEqual } from '@milaboratories/helpers';\nimport {\n computed,\n ref,\n watch,\n type ComputedGetter,\n type ComputedSetter,\n type ComputedRef,\n type WritableComputedRef,\n} from 'vue';\n\nexport function computedCached<T>(options: {\n get: ComputedGetter<T>;\n set: ComputedSetter<T>;\n deep?: boolean;\n}): WritableComputedRef<T>;\nexport function computedCached<T>(options: {\n get: ComputedGetter<T>;\n deep?: boolean;\n}): ComputedRef<T>;\nexport function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;\nexport function computedCached<T>(options: ComputedGetter<T> | {\n get: ComputedGetter<T>;\n set?: ComputedSetter<T>;\n deep?: boolean;\n}) {\n if (typeof options === 'function') {\n options = {\n get: options,\n };\n }\n const { get: getter, set: setter, deep } = options;\n\n const cachedValue = ref<T>(getter());\n watch(\n getter,\n (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n cachedValue.value = newValue;\n }\n },\n { deep },\n );\n\n if (setter) {\n return computed({\n get: () => cachedValue.value,\n set: (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n cachedValue.value = newValue;\n setter(newValue);\n }\n },\n });\n } else {\n return computed(() => cachedValue.value);\n }\n}\n"],"names":["computedCached","options","getter","setter","deep","cachedValue","ref","watch","newValue","isJsonEqual","computed"],"mappings":";;AAqBO,SAASA,EAAkBC,GAI/B;AACG,EAAA,OAAOA,KAAY,eACXA,IAAA;AAAA,IACR,KAAKA;AAAA,EACP;AAEF,QAAM,EAAE,KAAKC,GAAQ,KAAKC,GAAQ,MAAAC,MAASH,GAErCI,IAAcC,EAAOJ,GAAQ;AAWnC,SAVAK;AAAA,IACEL;AAAA,IACA,CAACM,MAAa;AACZ,MAAKC,EAAYD,GAAUH,EAAY,KAAK,MAC1CA,EAAY,QAAQG;AAAA,IAExB;AAAA,IACA,EAAE,MAAAJ,EAAK;AAAA,EACT,GAEID,IACKO,EAAS;AAAA,IACd,KAAK,MAAML,EAAY;AAAA,IACvB,KAAK,CAACG,MAAa;AACjB,MAAKC,EAAYD,GAAUH,EAAY,KAAK,MAC1CA,EAAY,QAAQG,GACpBL,EAAOK,CAAQ;AAAA,IACjB;AAAA,EACF,CACD,IAEME,EAAS,MAAML,EAAY,KAAK;AAE3C;"}
1
+ {"version":3,"file":"computedCached.js","sources":["../../src/composition/computedCached.ts"],"sourcesContent":["import { deepClone, isJsonEqual } from '@milaboratories/helpers';\nimport {\n computed,\n ref,\n watch,\n type ComputedGetter,\n type ComputedSetter,\n type ComputedRef,\n type WritableComputedRef,\n} from 'vue';\n\n/**\n * Alternative to `computed`, but triggering only on actual data changes.\n * Always `deep` as the plain `computed` is.\n */\nexport function computedCached<T>(options: {\n get: ComputedGetter<T>;\n set: ComputedSetter<T>;\n}): WritableComputedRef<T>;\nexport function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;\nexport function computedCached<T>(arg: ComputedGetter<T> | {\n get: ComputedGetter<T>;\n set: ComputedSetter<T>;\n}) {\n let getter: ComputedGetter<T>;\n let setter: ComputedSetter<T> | undefined = undefined;\n if (typeof arg === 'function') {\n getter = arg;\n } else {\n getter = arg.get;\n setter = arg.set;\n }\n\n const cachedValue = ref<T>(getter());\n watch(\n getter,\n (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n // `deepClone` is needed because in case some fields are patched the deep would be triggered,\n // but objects would be equal as the saved value was also patched\n cachedValue.value = deepClone(newValue);\n }\n },\n { deep: true },\n );\n\n if (setter) {\n return computed({\n get: () => cachedValue.value,\n set: (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n cachedValue.value = newValue;\n setter(newValue);\n }\n },\n });\n } else {\n return computed(() => cachedValue.value);\n }\n}\n"],"names":["computedCached","arg","getter","setter","cachedValue","ref","watch","newValue","isJsonEqual","deepClone","computed"],"mappings":";;AAoBO,SAASA,EAAkBC,GAG/B;AACG,MAAAC,GACAC;AACA,EAAA,OAAOF,KAAQ,aACRC,IAAAD,KAETC,IAASD,EAAI,KACbE,IAASF,EAAI;AAGT,QAAAG,IAAcC,EAAOH,GAAQ;AAanC,SAZAI;AAAA,IACEJ;AAAA,IACA,CAACK,MAAa;AACZ,MAAKC,EAAYD,GAAUH,EAAY,KAAK,MAG9BA,EAAA,QAAQK,EAAUF,CAAQ;AAAA,IAE1C;AAAA,IACA,EAAE,MAAM,GAAK;AAAA,EACf,GAEIJ,IACKO,EAAS;AAAA,IACd,KAAK,MAAMN,EAAY;AAAA,IACvB,KAAK,CAACG,MAAa;AACjB,MAAKC,EAAYD,GAAUH,EAAY,KAAK,MAC1CA,EAAY,QAAQG,GACpBJ,EAAOI,CAAQ;AAAA,IACjB;AAAA,EACF,CACD,IAEMG,EAAS,MAAMN,EAAY,KAAK;AAE3C;"}
@@ -2,8 +2,8 @@ import { WatchCallback, WatchHandle, WatchSource } from 'vue';
2
2
  type MaybeUndefined<T, I> = I extends true ? T | undefined : T;
3
3
  export interface WatchCachedOptions<Immediate = boolean> {
4
4
  immediate?: Immediate;
5
- deep?: boolean;
6
5
  }
6
+ /** Alternative to `watch`, but triggering only on actual data changes */
7
7
  export declare function watchCached<T, Immediate extends Readonly<boolean> = false>(source: WatchSource<T>, cb: WatchCallback<T, MaybeUndefined<T, Immediate>>, options?: WatchCachedOptions<Immediate>): WatchHandle;
8
8
  export {};
9
9
  //# sourceMappingURL=watchCached.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watchCached.d.ts","sourceRoot":"","sources":["../../src/composition/watchCached.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,KAAK,CAAC;AAEb,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AAC/D,MAAM,WAAW,kBAAkB,CAAC,SAAS,GAAG,OAAO;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAEhB;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,SAAS,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,EACxE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACtC,WAAW,CAyBb"}
1
+ {"version":3,"file":"watchCached.d.ts","sourceRoot":"","sources":["../../src/composition/watchCached.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,KAAK,CAAC;AAEb,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;AAC/D,MAAM,WAAW,kBAAkB,CAAC,SAAS,GAAG,OAAO;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;CAGvB;AACD,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,SAAS,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,EACxE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,EACtB,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,GACtC,WAAW,CA2Bb"}
@@ -1,31 +1,31 @@
1
- import { isJsonEqual as l } from "../lib/util/helpers/dist/index.js";
2
- import { ref as f, watch as m } from "vue";
3
- function q(r, c, e) {
4
- const a = f(), u = m(
5
- r,
6
- (d) => {
7
- l(d, a.value) || (a.value = d);
1
+ import { isJsonEqual as c, deepClone as i } from "../lib/util/helpers/dist/index.js";
2
+ import { ref as l, watch as t } from "vue";
3
+ function n(m, d, e) {
4
+ const a = l(), u = t(
5
+ m,
6
+ (r) => {
7
+ c(r, a.value) || (a.value = i(r));
8
8
  },
9
9
  {
10
- deep: e == null ? void 0 : e.deep,
10
+ deep: !0,
11
11
  immediate: !0
12
12
  // always initialize cachedValue
13
13
  }
14
14
  );
15
- return m(
15
+ return t(
16
16
  () => a.value,
17
17
  // `as T` is safe as we always initialize cachedValue
18
- c,
18
+ d,
19
19
  // separate watch so that `onWatcherCleanup` would only be triggerred here
20
20
  {
21
21
  // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,
22
22
  // so construct new options to remove unsupported entries
23
- deep: e == null ? void 0 : e.deep,
23
+ deep: !0,
24
24
  immediate: e == null ? void 0 : e.immediate
25
25
  }
26
26
  ), u;
27
27
  }
28
28
  export {
29
- q as watchCached
29
+ n as watchCached
30
30
  };
31
31
  //# sourceMappingURL=watchCached.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watchCached.js","sources":["../../src/composition/watchCached.ts"],"sourcesContent":["import { isJsonEqual } from '@milaboratories/helpers';\nimport {\n ref,\n watch,\n type WatchCallback,\n type WatchHandle,\n type WatchSource,\n} from 'vue';\n\ntype MaybeUndefined<T, I> = I extends true ? T | undefined : T;\nexport interface WatchCachedOptions<Immediate = boolean> {\n immediate?: Immediate;\n deep?: boolean;\n // when `once` is needed, caching is useless, use plain watch instead\n}\nexport function watchCached<T, Immediate extends Readonly<boolean> = false>(\n source: WatchSource<T>,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchCachedOptions<Immediate>,\n): WatchHandle {\n const cachedValue = ref<T>();\n const handle = watch(\n source,\n (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n cachedValue.value = newValue;\n }\n },\n {\n deep: options?.deep,\n immediate: true, // always initialize cachedValue\n },\n );\n watch<T, Immediate>(\n () => cachedValue.value as T, // `as T` is safe as we always initialize cachedValue\n cb, // separate watch so that `onWatcherCleanup` would only be triggerred here\n {\n // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,\n // so construct new options to remove unsupported entries\n deep: options?.deep,\n immediate: options?.immediate,\n },\n );\n return handle; // stopping first handle would effectively stop the second one\n}\n"],"names":["watchCached","source","cb","options","cachedValue","ref","handle","watch","newValue","isJsonEqual"],"mappings":";;AAegB,SAAAA,EACdC,GACAC,GACAC,GACa;AACb,QAAMC,IAAcC,EAAO,GACrBC,IAASC;AAAA,IACbN;AAAA,IACA,CAACO,MAAa;AACZ,MAAKC,EAAYD,GAAUJ,EAAY,KAAK,MAC1CA,EAAY,QAAQI;AAAA,IAExB;AAAA,IACA;AAAA,MACE,MAAML,KAAA,gBAAAA,EAAS;AAAA,MACf,WAAW;AAAA;AAAA,IAAA;AAAA,EAEf;AACA,SAAAI;AAAA,IACE,MAAMH,EAAY;AAAA;AAAA,IAClBF;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,MAGE,MAAMC,KAAA,gBAAAA,EAAS;AAAA,MACf,WAAWA,KAAA,gBAAAA,EAAS;AAAA,IAAA;AAAA,EAExB,GACOG;AACT;"}
1
+ {"version":3,"file":"watchCached.js","sources":["../../src/composition/watchCached.ts"],"sourcesContent":["import { deepClone, isJsonEqual } from '@milaboratories/helpers';\nimport {\n ref,\n watch,\n type WatchCallback,\n type WatchHandle,\n type WatchSource,\n} from 'vue';\n\ntype MaybeUndefined<T, I> = I extends true ? T | undefined : T;\nexport interface WatchCachedOptions<Immediate = boolean> {\n immediate?: Immediate;\n // deep: true; - caching is useless when you are using the source as a `shallowRef`\n // once: false; - caching is useless when you need a single shot, use plain watch instead\n}\n/** Alternative to `watch`, but triggering only on actual data changes */\nexport function watchCached<T, Immediate extends Readonly<boolean> = false>(\n source: WatchSource<T>,\n cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,\n options?: WatchCachedOptions<Immediate>,\n): WatchHandle {\n const cachedValue = ref<T>();\n const handle = watch(\n source,\n (newValue) => {\n if (!isJsonEqual(newValue, cachedValue.value)) {\n // `deepClone` is needed because in case some fields are patched the deep would be triggered,\n // but objects would be equal as the saved value was also patched\n cachedValue.value = deepClone(newValue);\n }\n },\n {\n deep: true,\n immediate: true, // always initialize cachedValue\n },\n );\n watch<T, Immediate>(\n () => cachedValue.value as T, // `as T` is safe as we always initialize cachedValue\n cb, // separate watch so that `onWatcherCleanup` would only be triggerred here\n {\n // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,\n // so construct new options to remove unsupported entries\n deep: true,\n immediate: options?.immediate,\n },\n );\n return handle; // stopping first handle would effectively stop the second one\n}\n"],"names":["watchCached","source","cb","options","cachedValue","ref","handle","watch","newValue","isJsonEqual","deepClone"],"mappings":";;AAgBgB,SAAAA,EACdC,GACAC,GACAC,GACa;AACb,QAAMC,IAAcC,EAAO,GACrBC,IAASC;AAAA,IACbN;AAAA,IACA,CAACO,MAAa;AACZ,MAAKC,EAAYD,GAAUJ,EAAY,KAAK,MAG9BA,EAAA,QAAQM,EAAUF,CAAQ;AAAA,IAE1C;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA;AAAA,IAAA;AAAA,EAEf;AACA,SAAAD;AAAA,IACE,MAAMH,EAAY;AAAA;AAAA,IAClBF;AAAA;AAAA,IACA;AAAA;AAAA;AAAA,MAGE,MAAM;AAAA,MACN,WAAWC,KAAA,gBAAAA,EAAS;AAAA,IAAA;AAAA,EAExB,GACOG;AACT;"}
@@ -14,4 +14,4 @@ const h = /* @__PURE__ */ r(e, [["render", i]]);
14
14
  export {
15
15
  h as default
16
16
  };
17
- //# sourceMappingURL=SvgRequired.vue2.js.map
17
+ //# sourceMappingURL=SvgRequired.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvgRequired.vue.js","sources":["../../../../../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":["_hoisted_1"],"mappings":";;;;AAOoC,MAAAA,IAAA;AAAA,EAAA,OAAA;AAAA;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.3.11",
3
+ "version": "2.3.13",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -34,9 +34,9 @@
34
34
  "vue-tsc": "^2.2.10",
35
35
  "yarpm": "^1.2.0",
36
36
  "svgo": "^3.3.2",
37
+ "@milaboratories/build-configs": "1.0.4",
37
38
  "@milaboratories/ts-configs": "1.0.4",
38
- "@milaboratories/eslint-config": "^1.0.4",
39
- "@milaboratories/build-configs": "1.0.4"
39
+ "@milaboratories/eslint-config": "^1.0.4"
40
40
  },
41
41
  "scripts": {
42
42
  "dev": "vite",
@@ -128,7 +128,9 @@ const emit = defineEmits<{
128
128
  }
129
129
 
130
130
  &.disabled {
131
- opacity: 0.6;
131
+ --icon-color: var(--ic-02);
132
+ --border-color: var(--border-color-div-grey);
133
+ color: var(--txt-03);
132
134
  filter: grayscale(1);
133
135
  }
134
136
 
@@ -174,7 +176,6 @@ const emit = defineEmits<{
174
176
  flex-direction: row;
175
177
  flex: 1 1 0;
176
178
  gap: 8px;
177
- overflow: hidden;
178
179
  text-overflow: ellipsis;
179
180
  }
180
181
 
@@ -32,9 +32,12 @@ export function registerSvg(raw: string, name?: string): SvgMeta {
32
32
  if (!registeredRaw.has(raw)) {
33
33
  const id = `svg-${name ? `${name}-` : ''}${uniqueId(16)}`;
34
34
 
35
- const widthMatch = raw.match(/width="(\d+)(px)?"/)?.[1];
36
- const heightMatch = raw.match(/height="(\d+)(px)?"/)?.[1];
37
- const viewBoxParts = raw.match(/viewBox="[-+]?\d*\.?\d+(?:e[-+]?\d+)?"/);
35
+ const openSvgTagMatch = raw.match(/^<svg[^>]*>/i)?.[0];
36
+ const fillMatch = openSvgTagMatch?.match(/fill\s*=\s*"(.*?)"/)?.[1];
37
+ const strokeMatch = openSvgTagMatch?.match(/stroke\s*=\s*"(.*?)"/)?.[1];
38
+ const widthMatch = openSvgTagMatch?.match(/width\s*=\s*"(\d+)(px)?"/)?.[1];
39
+ const heightMatch = openSvgTagMatch?.match(/height\s*=\s*"(\d+)(px)?"/)?.[1];
40
+ const viewBoxParts = openSvgTagMatch?.match(/viewBox\s*=\s*"[-+]?\d*\.?\d+(?:e[-+]?\d+)?"/);
38
41
  const viewBoxWidthMatch = viewBoxParts?.[2];
39
42
  const viewBoxHeightMatch = viewBoxParts?.[3];
40
43
  let width = Number(viewBoxWidthMatch ?? widthMatch ?? 16);
@@ -43,18 +46,13 @@ export function registerSvg(raw: string, name?: string): SvgMeta {
43
46
  height = isNaN(height) ? 16 : height;
44
47
  const viewBox = `0 0 ${width} ${height}`;
45
48
 
46
- // Parse the original SVG tag and preserve all its attributes except id and viewBox
47
- const svgTagMatch = raw.match(/^<svg([^>]*)>/i);
48
- let svgAttributes = svgTagMatch ? svgTagMatch[1] : '';
49
- // Remove any existing id or viewBox attributes
50
- svgAttributes = svgAttributes
51
- .replace(/\s*id\s*=\s*(['"])[^'"]*\1/gi, '')
52
- .replace(/\s*viewBox\s*=\s*(['"])[^'"]*\1/gi, '');
53
-
54
49
  let fillIdx = 0;
55
50
  let strokeIdx = 0;
51
+ const fillAttr = fillMatch ? `fill="${fillMatch}"` : '';
52
+ const strokeAttr = strokeMatch ? `stroke="${strokeMatch}"` : '';
53
+
56
54
  const preparedSvg = raw
57
- .replace(/^<svg[^>]*>/i, `<svg id="${id}" viewBox="${viewBox}" ${svgAttributes}>`)
55
+ .replace(/^<svg[^>]*>/i, `<svg id="${id}" viewBox="${viewBox}" ${fillAttr} ${strokeAttr}>`)
58
56
  .replace(/<\/svg>\s*$/, '</svg>')
59
57
  .replace(
60
58
  /\bfill\s*=\s*(['"])(.*?)\1/gi,
@@ -1,4 +1,4 @@
1
- import { isJsonEqual } from '@milaboratories/helpers';
1
+ import { deepClone, isJsonEqual } from '@milaboratories/helpers';
2
2
  import {
3
3
  computed,
4
4
  ref,
@@ -9,37 +9,39 @@ import {
9
9
  type WritableComputedRef,
10
10
  } from 'vue';
11
11
 
12
+ /**
13
+ * Alternative to `computed`, but triggering only on actual data changes.
14
+ * Always `deep` as the plain `computed` is.
15
+ */
12
16
  export function computedCached<T>(options: {
13
17
  get: ComputedGetter<T>;
14
18
  set: ComputedSetter<T>;
15
- deep?: boolean;
16
19
  }): WritableComputedRef<T>;
17
- export function computedCached<T>(options: {
18
- get: ComputedGetter<T>;
19
- deep?: boolean;
20
- }): ComputedRef<T>;
21
20
  export function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;
22
- export function computedCached<T>(options: ComputedGetter<T> | {
21
+ export function computedCached<T>(arg: ComputedGetter<T> | {
23
22
  get: ComputedGetter<T>;
24
- set?: ComputedSetter<T>;
25
- deep?: boolean;
23
+ set: ComputedSetter<T>;
26
24
  }) {
27
- if (typeof options === 'function') {
28
- options = {
29
- get: options,
30
- };
25
+ let getter: ComputedGetter<T>;
26
+ let setter: ComputedSetter<T> | undefined = undefined;
27
+ if (typeof arg === 'function') {
28
+ getter = arg;
29
+ } else {
30
+ getter = arg.get;
31
+ setter = arg.set;
31
32
  }
32
- const { get: getter, set: setter, deep } = options;
33
33
 
34
34
  const cachedValue = ref<T>(getter());
35
35
  watch(
36
36
  getter,
37
37
  (newValue) => {
38
38
  if (!isJsonEqual(newValue, cachedValue.value)) {
39
- cachedValue.value = newValue;
39
+ // `deepClone` is needed because in case some fields are patched the deep would be triggered,
40
+ // but objects would be equal as the saved value was also patched
41
+ cachedValue.value = deepClone(newValue);
40
42
  }
41
43
  },
42
- { deep },
44
+ { deep: true },
43
45
  );
44
46
 
45
47
  if (setter) {
@@ -1,4 +1,4 @@
1
- import { isJsonEqual } from '@milaboratories/helpers';
1
+ import { deepClone, isJsonEqual } from '@milaboratories/helpers';
2
2
  import {
3
3
  ref,
4
4
  watch,
@@ -10,9 +10,10 @@ import {
10
10
  type MaybeUndefined<T, I> = I extends true ? T | undefined : T;
11
11
  export interface WatchCachedOptions<Immediate = boolean> {
12
12
  immediate?: Immediate;
13
- deep?: boolean;
14
- // when `once` is needed, caching is useless, use plain watch instead
13
+ // deep: true; - caching is useless when you are using the source as a `shallowRef`
14
+ // once: false; - caching is useless when you need a single shot, use plain watch instead
15
15
  }
16
+ /** Alternative to `watch`, but triggering only on actual data changes */
16
17
  export function watchCached<T, Immediate extends Readonly<boolean> = false>(
17
18
  source: WatchSource<T>,
18
19
  cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,
@@ -23,11 +24,13 @@ export function watchCached<T, Immediate extends Readonly<boolean> = false>(
23
24
  source,
24
25
  (newValue) => {
25
26
  if (!isJsonEqual(newValue, cachedValue.value)) {
26
- cachedValue.value = newValue;
27
+ // `deepClone` is needed because in case some fields are patched the deep would be triggered,
28
+ // but objects would be equal as the saved value was also patched
29
+ cachedValue.value = deepClone(newValue);
27
30
  }
28
31
  },
29
32
  {
30
- deep: options?.deep,
33
+ deep: true,
31
34
  immediate: true, // always initialize cachedValue
32
35
  },
33
36
  );
@@ -37,7 +40,7 @@ export function watchCached<T, Immediate extends Readonly<boolean> = false>(
37
40
  {
38
41
  // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,
39
42
  // so construct new options to remove unsupported entries
40
- deep: options?.deep,
43
+ deep: true,
41
44
  immediate: options?.immediate,
42
45
  },
43
46
  );
@@ -1 +0,0 @@
1
- {"version":3,"file":"SvgRequired.vue2.js","sources":["../../../../../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":["_hoisted_1"],"mappings":";;;;AAOoC,MAAAA,IAAA;AAAA,EAAA,OAAA;AAAA;;;;;;"}