@milaboratories/uikit 2.3.11 → 2.3.12

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.
@@ -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.12 build /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > vite build
5
5
 
6
6
  vite v6.3.5 building for production...
@@ -14,8 +14,8 @@ computing gzip size...
14
14
  dist/_virtual/stringify2.js  0.09 kB │ gzip: 0.11 kB │ map: 0.10 kB
15
15
  dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/number.js  0.09 kB │ gzip: 0.11 kB │ map: 0.33 kB
16
16
  dist/components/PlTabs/Tab.vue2.js  0.09 kB │ gzip: 0.11 kB │ map: 0.09 kB
17
- dist/node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js  0.09 kB │ gzip: 0.11 kB │ map: 0.32 kB
18
17
  dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/identity.js  0.09 kB │ gzip: 0.11 kB │ map: 0.33 kB
18
+ dist/node_modules/.pnpm/d3-axis@3.0.0/node_modules/d3-axis/src/identity.js  0.09 kB │ gzip: 0.11 kB │ map: 0.32 kB
19
19
  dist/node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/identity.js  0.09 kB │ gzip: 0.11 kB │ map: 0.32 kB
20
20
  dist/components/PlTooltip/global.js  0.10 kB │ gzip: 0.11 kB │ map: 0.22 kB
21
21
  dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/array.js  0.10 kB │ gzip: 0.11 kB │ map: 0.36 kB
@@ -35,8 +35,8 @@ 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
39
+ dist/components/DataTable/TScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
40
40
  dist/components/TabItem.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
@@ -46,41 +46,41 @@ computing gzip size...
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
- dist/components/PlTextArea/PlTextArea.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
50
49
  dist/components/PlBtnGhost/PlBtnGhost.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
51
50
  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/PlTextArea/PlTextArea.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
61
- dist/components/PlBtnAccent/PlBtnAccent.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
62
61
  dist/components/PlBtnDanger/PlBtnDanger.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
62
+ dist/components/PlBtnAccent/PlBtnAccent.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
70
- dist/components/PlFileDialog/PlFileDialog.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
71
70
  dist/components/PlSlideModal/PlSlideModal.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
71
+ dist/components/PlFileDialog/PlFileDialog.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
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
77
76
  dist/components/PlNumberField/PlNumberField.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
77
+ dist/components/PlProgressBar/PlProgressBar.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
80
80
  dist/components/PlBtnSecondary/PlBtnSecondary.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
81
81
  dist/components/PlDropdownLine/PlDropdownLine.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
82
- dist/components/PlAutocomplete/PlAutocomplete.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
83
82
  dist/components/PlProgressCell/PlProgressCell.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
83
+ dist/components/PlAutocomplete/PlAutocomplete.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
84
84
  dist/components/PlToggleSwitch/PlToggleSwitch.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
85
85
  dist/components/PlDropdownLine/ResizableInput.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
86
86
  dist/components/PlCheckbox/PlCheckboxBase.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 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
@@ -360,8 +360,8 @@ computing gzip size...
360
360
  dist/assets/icons/icon-assets-min/16_y-axis.svg.js  0.45 kB │ gzip: 0.30 kB │ map: 0.65 kB
361
361
  dist/assets/icons/icon-assets-min/24_delete-circle.svg.js  0.45 kB │ gzip: 0.31 kB │ map: 0.65 kB
362
362
  dist/assets/icons/icon-assets-min/24_zoom-in.svg.js  0.45 kB │ gzip: 0.30 kB │ map: 0.65 kB
363
- dist/assets/images/24_checkbox-light-enabled-checked.svg.js  0.45 kB │ gzip: 0.33 kB │ map: 0.71 kB
364
363
  dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue3.js  0.45 kB │ gzip: 0.32 kB │ map: 0.12 kB
364
+ dist/assets/images/24_checkbox-light-enabled-checked.svg.js  0.45 kB │ gzip: 0.33 kB │ map: 0.71 kB
365
365
  dist/assets/icons/icon-assets-min/24_frame-type-all.svg.js  0.46 kB │ gzip: 0.31 kB │ map: 0.65 kB
366
366
  dist/assets/icons/icon-assets-min/16_delete-bin.svg.js  0.46 kB │ gzip: 0.32 kB │ map: 0.64 kB
367
367
  dist/assets/icons/icon-assets-min/24_frame-type-left-bottom.svg.js  0.46 kB │ gzip: 0.30 kB │ map: 0.67 kB
@@ -415,8 +415,8 @@ computing gzip size...
415
415
  dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/filter.js  0.53 kB │ gzip: 0.35 kB │ map: 1.42 kB
416
416
  dist/utils/PlCloseModalBtn.vue.js  0.53 kB │ gzip: 0.36 kB │ map: 0.85 kB
417
417
  dist/assets/icons/icon-assets-min/24_warning.svg.js  0.53 kB │ gzip: 0.37 kB │ map: 0.71 kB
418
- dist/assets/icons/icon-assets-min/24_info-outline.svg.js  0.54 kB │ gzip: 0.36 kB │ map: 0.72 kB
419
418
  dist/components/DataTable/composition/useColumn.js  0.54 kB │ gzip: 0.31 kB │ map: 1.45 kB
419
+ dist/assets/icons/icon-assets-min/24_info-outline.svg.js  0.54 kB │ gzip: 0.36 kB │ map: 0.72 kB
420
420
  dist/assets/icons/icon-assets-min/24_align-center.svg.js  0.54 kB │ gzip: 0.31 kB │ map: 0.75 kB
421
421
  dist/assets/icons/icon-assets-min/24_table-alias.svg.js  0.54 kB │ gzip: 0.34 kB │ map: 0.72 kB
422
422
  dist/assets/icons/icon-assets-min/24_box.svg.js  0.54 kB │ gzip: 0.34 kB │ map: 0.71 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
@@ -562,8 +562,8 @@ computing gzip size...
562
562
  dist/assets/icons/icon-assets-min/24_view-show.svg.js  0.93 kB │ gzip: 0.55 kB │ map: 1.11 kB
563
563
  dist/assets/icons/icon-assets-min/24_theme-dark.svg.js  0.94 kB │ gzip: 0.48 kB │ map: 1.12 kB
564
564
  dist/layout/PlRow/PlRow.vue.js  0.94 kB │ gzip: 0.56 kB │ map: 0.61 kB
565
- dist/components/PlIcon16/PlIcon16.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 1.55 kB
566
565
  dist/components/PlIcon24/PlIcon24.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 2.26 kB
566
+ dist/components/PlIcon16/PlIcon16.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 1.55 kB
567
567
  dist/assets/icons/icon-assets-min/24_dendrogram-X-line.svg.js  0.95 kB │ gzip: 0.39 kB │ map: 1.24 kB
568
568
  dist/components/PlAccordion/PlAccordionSection.vue3.js  0.95 kB │ gzip: 0.53 kB │ map: 0.11 kB
569
569
  dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js  0.96 kB │ gzip: 0.40 kB │ map: 3.13 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
@@ -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 6195ms.
760
760
 
761
- ✓ built in 11.41s
761
+ ✓ built in 11.61s
@@ -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.12 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,11 @@
1
1
  # @milaboratories/uikit
2
2
 
3
+ ## 2.3.12
4
+
5
+ ### Patch Changes
6
+
7
+ - 2273454: Dont use permament svg w/h
8
+
3
9
  ## 2.3.11
4
10
 
5
11
  ### Patch Changes
@@ -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;"}
@@ -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;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.3.11",
3
+ "version": "2.3.12",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -23,8 +23,8 @@
23
23
  "@vueuse/core": "^13.3.0",
24
24
  "d3": "^7.9.0",
25
25
  "resize-observer-polyfill": "^1.5.1",
26
- "@milaboratories/helpers": "^1.6.17",
27
- "@platforma-sdk/model": "^1.40.1"
26
+ "@platforma-sdk/model": "^1.40.1",
27
+ "@milaboratories/helpers": "^1.6.17"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@vitejs/plugin-vue": "^5.2.3",
@@ -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/ts-configs": "1.0.4",
38
37
  "@milaboratories/eslint-config": "^1.0.4",
39
- "@milaboratories/build-configs": "1.0.4"
38
+ "@milaboratories/build-configs": "1.0.4",
39
+ "@milaboratories/ts-configs": "1.0.4"
40
40
  },
41
41
  "scripts": {
42
42
  "dev": "vite",
@@ -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
  );