@milaboratories/uikit 2.3.8 → 2.3.9

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,11 +1,11 @@
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.8 build /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.3.9 build /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > vite build
5
5
 
6
6
  vite v6.3.5 building for production...
7
7
  transforming...
8
- ✓ 1282 modules transformed.
8
+ ✓ 1284 modules transformed.
9
9
  rendering chunks...
10
10
 
11
11
  [vite:dts] Start generate declaration files...
@@ -35,59 +35,59 @@ 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
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/PlBtnGhost/PlBtnGhost.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
50
50
  dist/components/PlBtnGroup/PlBtnGroup.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
51
- dist/components/PlDropdown/PlDropdown.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
52
51
  dist/components/PlTextArea/PlTextArea.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
52
+ dist/components/PlDropdown/PlDropdown.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/PlContainer/PlContainer.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
60
59
  dist/layout/PlBlockPage/PlBlockPage.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
60
+ dist/layout/PlContainer/PlContainer.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
64
  dist/components/PlStatusTag/PlStatusTag.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
66
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
75
  dist/components/PlNumberField/PlNumberField.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
76
  dist/components/PlDropdownRef/PlDropdownRef.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/PlToggleSwitch/PlToggleSwitch.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
84
83
  dist/components/PlProgressCell/PlProgressCell.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
85
- dist/components/PlDropdownLine/ResizableInput.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
84
+ dist/components/PlAutocomplete/PlAutocomplete.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
86
85
  dist/components/PlCheckbox/PlCheckboxBase.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
86
+ dist/components/PlDropdownLine/ResizableInput.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
87
87
  dist/components/ContextProvider.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
88
88
  dist/components/PlErrorBoundary/PlErrorBoundary.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
89
- dist/components/PlEditableTitle/PlEditableTitle.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
90
89
  dist/components/PlDropdownMulti/PlDropdownMulti.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
90
+ dist/components/PlEditableTitle/PlEditableTitle.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
91
91
  dist/components/PlCheckboxGroup/PlCheckboxGroup.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
92
92
  dist/helpers/math.js  0.12 kB │ gzip: 0.13 kB │ map: 0.33 kB
93
93
  dist/utils/DropdownOverlay/DropdownOverlay.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
@@ -176,8 +176,8 @@ computing gzip size...
176
176
  dist/assets/icons/icon-assets-min/24_arrow-down.svg.js  0.27 kB │ gzip: 0.24 kB │ map: 0.44 kB
177
177
  dist/assets/icons/icon-assets-min/16_add.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.44 kB
178
178
  dist/components/PlRadio/PlRadio.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
179
- dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.47 kB
180
179
  dist/components/PlChartStackedBar/Legends.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
180
+ dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.47 kB
181
181
  dist/assets/icons/icon-assets-min/16_chevron-first.svg.js  0.28 kB │ gzip: 0.23 kB │ map: 0.45 kB
182
182
  dist/components/PlIcon16/PlIcon16.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
183
183
  dist/components/PlIcon24/PlIcon24.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
@@ -231,9 +231,9 @@ computing gzip size...
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
233
  dist/components/PlElementList/PlElementListItem.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
234
+ dist/components/PlChartStackedBar/StackedRowCompact.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
234
235
  dist/assets/icons/icon-assets-min/16_arrow-up.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
235
236
  dist/assets/icons/icon-assets-min/24_linetype-twodash.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.50 kB
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
239
239
  dist/assets/icons/icon-assets-min/16_arrow-down.svg.js  0.31 kB │ gzip: 0.25 kB │ map: 0.49 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,6 +429,7 @@ 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
432
433
  dist/assets/icons/icon-assets-min/16_paper-clip.svg.js  0.55 kB │ gzip: 0.35 kB │ map: 0.73 kB
433
434
  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
434
435
  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
@@ -540,6 +541,7 @@ computing gzip size...
540
541
  dist/assets/icons/icon-assets-min/24_rotation-45.svg.js  0.83 kB │ gzip: 0.49 kB │ map: 1.01 kB
541
542
  dist/components/TabItem.vue.js  0.84 kB │ gzip: 0.48 kB │ map: 1.25 kB
542
543
  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
543
545
  dist/assets/icons/icon-assets-min/24_skatterplot.svg.js  0.85 kB │ gzip: 0.37 kB │ map: 1.06 kB
544
546
  dist/assets/icons/icon-assets-min/24_boxplot-jitter.svg.js  0.85 kB │ gzip: 0.38 kB │ map: 1.06 kB
545
547
  dist/components/DataTable/index.js  0.88 kB │ gzip: 0.41 kB │ map: 2.81 kB
@@ -560,8 +562,8 @@ computing gzip size...
560
562
  dist/assets/icons/icon-assets-min/24_view-show.svg.js  0.93 kB │ gzip: 0.55 kB │ map: 1.11 kB
561
563
  dist/assets/icons/icon-assets-min/24_theme-dark.svg.js  0.94 kB │ gzip: 0.48 kB │ map: 1.12 kB
562
564
  dist/layout/PlRow/PlRow.vue.js  0.94 kB │ gzip: 0.56 kB │ map: 0.61 kB
563
- dist/components/PlIcon24/PlIcon24.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 2.26 kB
564
565
  dist/components/PlIcon16/PlIcon16.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 1.55 kB
566
+ dist/components/PlIcon24/PlIcon24.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 2.26 kB
565
567
  dist/assets/icons/icon-assets-min/24_dendrogram-X-line.svg.js  0.95 kB │ gzip: 0.39 kB │ map: 1.24 kB
566
568
  dist/components/PlAccordion/PlAccordionSection.vue3.js  0.95 kB │ gzip: 0.53 kB │ map: 0.11 kB
567
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
@@ -751,9 +753,9 @@ computing gzip size...
751
753
  dist/sdk/model/dist/index.js  48.66 kB │ gzip: 12.57 kB │ map: 170.66 kB
752
754
  dist/node_modules/.pnpm/sortablejs@1.15.6/node_modules/sortablejs/modular/sortable.esm.js  50.22 kB │ gzip: 14.80 kB │ map: 181.41 kB
753
755
  dist/node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.js  83.81 kB │ gzip: 17.26 kB │ map: 241.16 kB
754
- dist/index.js 501.16 kB │ gzip: 192.24 kB │ map: 5.50 kB
756
+ dist/index.js 501.34 kB │ gzip: 192.29 kB │ map: 5.60 kB
755
757
  dist/components/PlSlideModal/PlSlideModal.vue.js 601.75 kB │ gzip: 204.43 kB │ map: 3.22 kB
756
758
  dist/components/DataTable/TableComponent.vue.js 603.09 kB │ gzip: 205.04 kB │ map: 4.87 kB
757
- [vite:dts] Declaration files built in 16137ms.
759
+ [vite:dts] Declaration files built in 6198ms.
758
760
 
759
- ✓ built in 21.04s
761
+ ✓ built in 10.85s
@@ -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.8 type-check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.3.9 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.9
4
+
5
+ ### Patch Changes
6
+
7
+ - 986c20c: computedCached moved to uikit, watchCached implemented
8
+
3
9
  ## 2.3.8
4
10
 
5
11
  ### Patch Changes
@@ -0,0 +1,12 @@
1
+ import { ComputedGetter, ComputedSetter, ComputedRef, WritableComputedRef } from 'vue';
2
+ export declare function computedCached<T>(options: {
3
+ get: ComputedGetter<T>;
4
+ set: ComputedSetter<T>;
5
+ deep?: boolean;
6
+ }): WritableComputedRef<T>;
7
+ export declare function computedCached<T>(options: {
8
+ get: ComputedGetter<T>;
9
+ deep?: boolean;
10
+ }): ComputedRef<T>;
11
+ export declare function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;
12
+ //# sourceMappingURL=computedCached.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,24 @@
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(
9
+ u,
10
+ (t) => {
11
+ f(t, e.value) || (e.value = t);
12
+ },
13
+ { deep: l }
14
+ ), c ? a({
15
+ get: () => e.value,
16
+ set: (t) => {
17
+ f(t, e.value) || (e.value = t, c(t));
18
+ }
19
+ }) : a(() => e.value);
20
+ }
21
+ export {
22
+ v as computedCached
23
+ };
24
+ //# sourceMappingURL=computedCached.js.map
@@ -0,0 +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;"}
@@ -0,0 +1,9 @@
1
+ import { WatchCallback, WatchHandle, WatchSource } from 'vue';
2
+ type MaybeUndefined<T, I> = I extends true ? T | undefined : T;
3
+ export interface WatchCachedOptions<Immediate = boolean> {
4
+ immediate?: Immediate;
5
+ deep?: boolean;
6
+ }
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
+ export {};
9
+ //# sourceMappingURL=watchCached.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +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);
8
+ },
9
+ {
10
+ deep: e == null ? void 0 : e.deep,
11
+ immediate: !0
12
+ // always initialize cachedValue
13
+ }
14
+ );
15
+ return m(
16
+ () => a.value,
17
+ // `as T` is safe as we always initialize cachedValue
18
+ c,
19
+ // separate watch so that `onWatcherCleanup` would only be triggerred here
20
+ {
21
+ // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,
22
+ // so construct new options to remove unsupported entries
23
+ deep: e == null ? void 0 : e.deep,
24
+ immediate: e == null ? void 0 : e.immediate
25
+ }
26
+ ), u;
27
+ }
28
+ export {
29
+ q as watchCached
30
+ };
31
+ //# sourceMappingURL=watchCached.js.map
@@ -0,0 +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;"}
package/dist/index.d.ts CHANGED
@@ -91,6 +91,8 @@ export { useQuery } from './composition/useQuery.ts';
91
91
  export { useDraggable } from './composition/useDraggable';
92
92
  export { useComponentProp } from './composition/useComponentProp';
93
93
  export * from './composition/useWatchFetch';
94
+ export * from './composition/watchCached';
95
+ export * from './composition/computedCached';
94
96
  /**
95
97
  * Utils/Partials
96
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import { default as g } from "./components/LongText.vue.js";
11
11
 
12
12
  import { default as h } from "./components/SliderRangeTriple.vue.js";
13
13
  import { default as b } from "./components/SliderRange.vue.js";
14
- import { default as D } from "./components/Scrollable.vue.js";
14
+ import { default as B } from "./components/Scrollable.vue.js";
15
15
  import { allCssVariables as e } from "./demo-site-data/all-css-variables.js";
16
16
  import { default as k } from "./layout/PlBlockPage/PlBlockPage.vue.js";
17
17
  import { usePlBlockPageTitleTeleportTarget as I } from "./layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js";
@@ -39,7 +39,7 @@ import { default as ce } from "./components/PlDropdownLine/PlDropdownLine.vue.js
39
39
  import { default as ge } from "./components/PlDropdownLegacy/PlDropdownLegacy.vue.js";
40
40
  import { default as he } from "./components/PlTooltip/PlTooltip.vue.js";
41
41
  import { default as be } from "./components/PlProgressBar/PlProgressBar.vue.js";
42
- import { default as De } from "./components/PlNumberField/PlNumberField.vue.js";
42
+ import { default as Be } from "./components/PlNumberField/PlNumberField.vue.js";
43
43
  import { default as ke } from "./components/PlDropdownMulti/PlDropdownMulti.vue.js";
44
44
  import { default as Ie } from "./components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js";
45
45
  import { default as ve } from "./components/PlCheckbox/PlCheckbox.vue.js";
@@ -64,8 +64,8 @@ import { default as io } from "./components/PlFileInput/PlFileInput.vue.js";
64
64
  import { default as Po } from "./components/PlNotificationAlert/PlNotificationAlert.vue.js";
65
65
  import { default as So } from "./components/PlSvg/PlSvg.vue.js";
66
66
  import { default as Co, default as ho } from "./components/PlIcon16/PlIcon16.vue.js";
67
- import { default as bo, default as Bo } from "./components/PlIcon24/PlIcon24.vue.js";
68
- import { default as wo } from "./components/PlChartStackedBar/PlChartStackedBar.vue.js";
67
+ import { default as bo, default as wo } from "./components/PlIcon24/PlIcon24.vue.js";
68
+ import { default as Do } from "./components/PlChartStackedBar/PlChartStackedBar.vue.js";
69
69
  import { default as Lo } from "./components/PlChartStackedBar/PlChartStackedBarCompact.vue.js";
70
70
  import { default as Mo } from "./components/PlChartHistogram/PlChartHistogram.vue.js";
71
71
  import { default as Eo } from "./components/PlRadio/PlRadio.vue.js";
@@ -89,15 +89,17 @@ import { useInterval as cr } from "./composition/useInterval.js";
89
89
  import { useFormState as gr } from "./composition/useFormState.js";
90
90
  import { useQuery as hr } from "./composition/useQuery.js";
91
91
  import { useDraggable as br } from "./composition/useDraggable.js";
92
- import { useComponentProp as Dr } from "./composition/useComponentProp.js";
92
+ import { useComponentProp as Br } from "./composition/useComponentProp.js";
93
93
  import { useWatchFetch as kr } from "./composition/useWatchFetch.js";
94
- import { default as Ir } from "./utils/PlCloseModalBtn.vue.js";
95
- import { default as vr } from "./utils/DropdownOverlay/DropdownOverlay.vue.js";
96
- import { useLabelNotch as Or } from "./utils/useLabelNotch.js";
97
- import { icons16 as yr } from "./generated/icons-16.js";
98
- import { icons24 as Fr } from "./generated/icons-24.js";
99
- import { detectOutside as Vr, eventListener as zr, getElementScrollPosition as Nr, isElementVisible as Hr, scrollIntoView as qr } from "./helpers/dom.js";
100
- import { animate as Wr, animateInfinite as jr, call as Jr, delay as Kr, listToOptions as Ur, makeEaseInOut as Xr, makeEaseOut as Yr, normalizeListOptions as Zr, randomInt as _r, randomString as $r, requestTick as et, throttle as ot, timeout as rt } from "./helpers/utils.js";
94
+ import { watchCached as Ir } from "./composition/watchCached.js";
95
+ import { computedCached as vr } from "./composition/computedCached.js";
96
+ import { default as Or } from "./utils/PlCloseModalBtn.vue.js";
97
+ import { default as yr } from "./utils/DropdownOverlay/DropdownOverlay.vue.js";
98
+ import { useLabelNotch as Fr } from "./utils/useLabelNotch.js";
99
+ import { icons16 as Vr } from "./generated/icons-16.js";
100
+ import { icons24 as Nr } from "./generated/icons-24.js";
101
+ import { detectOutside as qr, eventListener as Qr, getElementScrollPosition as Wr, isElementVisible as jr, scrollIntoView as Jr } from "./helpers/dom.js";
102
+ import { animate as Ur, animateInfinite as Xr, call as Yr, delay as Zr, listToOptions as _r, makeEaseInOut as $r, makeEaseOut as et, normalizeListOptions as ot, randomInt as rt, randomString as tt, requestTick as at, throttle as lt, timeout as ft } from "./helpers/utils.js";
101
103
  const l = { allCssVariables: e() };
102
104
  export {
103
105
  No as Color,
@@ -105,7 +107,7 @@ export {
105
107
  r as DataTable,
106
108
  l as DemoData,
107
109
  u as DropdownListItem,
108
- vr as DropdownOverlay,
110
+ yr as DropdownOverlay,
109
111
  qo as Gradient,
110
112
  g as LongText,
111
113
  Ue as PlAccordion,
@@ -122,12 +124,12 @@ export {
122
124
  Y as PlBtnSecondary,
123
125
  q as PlBtnSplit,
124
126
  Mo as PlChartHistogram,
125
- wo as PlChartStackedBar,
127
+ Do as PlChartStackedBar,
126
128
  Lo as PlChartStackedBarCompact,
127
129
  ve as PlCheckbox,
128
130
  Oe as PlCheckboxGroup,
129
131
  ye as PlChip,
130
- Ir as PlCloseModalBtn,
132
+ Or as PlCloseModalBtn,
131
133
  v as PlContainer,
132
134
  Fe as PlDialogModal,
133
135
  xe as PlDropdown,
@@ -147,9 +149,9 @@ export {
147
149
  eo as PlLoaderCircular,
148
150
  qe as PlLogView,
149
151
  ho as PlMaskIcon16,
150
- Bo as PlMaskIcon24,
152
+ wo as PlMaskIcon24,
151
153
  Po as PlNotificationAlert,
152
- De as PlNumberField,
154
+ Be as PlNumberField,
153
155
  be as PlProgressBar,
154
156
  ao as PlProgressCell,
155
157
  Eo as PlRadio,
@@ -167,45 +169,46 @@ export {
167
169
  fe as PlTextField,
168
170
  Ne as PlToggleSwitch,
169
171
  he as PlTooltip,
170
- D as Scrollable,
172
+ B as Scrollable,
171
173
  n as Slider,
172
174
  b as SliderRange,
173
175
  h as SliderRangeTriple,
174
176
  p as ThemeSwitcher,
175
- Wr as animate,
176
- jr as animateInfinite,
177
- Jr as call,
177
+ Ur as animate,
178
+ Xr as animateInfinite,
179
+ Yr as call,
178
180
  Ao as categoricalColors,
179
- Kr as delay,
180
- Vr as detectOutside,
181
- zr as eventListener,
182
- Nr as getElementScrollPosition,
183
- yr as icons16,
184
- Fr as icons24,
181
+ vr as computedCached,
182
+ Zr as delay,
183
+ qr as detectOutside,
184
+ Qr as eventListener,
185
+ Wr as getElementScrollPosition,
186
+ Vr as icons16,
187
+ Nr as icons24,
185
188
  Qo as interpolateColor,
186
- Hr as isElementVisible,
187
- Ur as listToOptions,
189
+ jr as isElementVisible,
190
+ _r as listToOptions,
188
191
  Fo as magma,
189
- Xr as makeEaseInOut,
190
- Yr as makeEaseOut,
192
+ $r as makeEaseInOut,
193
+ et as makeEaseOut,
191
194
  Wo as normalizeGradient,
192
- Zr as normalizeListOptions,
195
+ ot as normalizeListOptions,
193
196
  Go as palettes,
194
- _r as randomInt,
195
- $r as randomString,
196
- et as requestTick,
197
- qr as scrollIntoView,
197
+ rt as randomInt,
198
+ tt as randomString,
199
+ at as requestTick,
200
+ Jr as scrollIntoView,
198
201
  c as showContextMenu,
199
- ot as throttle,
200
- rt as timeout,
202
+ lt as throttle,
203
+ ft as timeout,
201
204
  Uo as useClickOutside,
202
- Dr as useComponentProp,
205
+ Br as useComponentProp,
203
206
  br as useDraggable,
204
207
  Yo as useEventListener,
205
208
  gr as useFormState,
206
209
  pr as useHover,
207
210
  cr as useInterval,
208
- Or as useLabelNotch,
211
+ Fr as useLabelNotch,
209
212
  ar as useLocalStorage,
210
213
  ur as useMouse,
211
214
  fr as useMouseCapture,
@@ -218,6 +221,7 @@ export {
218
221
  nr as useSortable2,
219
222
  rr as useTheme,
220
223
  kr as useWatchFetch,
221
- Vo as viridis
224
+ Vo as viridis,
225
+ Ir as watchCached
222
226
  };
223
227
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import './assets/ui.scss';\n\n// @TODO review\nimport * as DataTable from './components/DataTable';\nimport ThemeSwitcher from './components/ThemeSwitcher.vue';\n// @TODO review (may be private)\nimport DropdownListItem from './components/DropdownListItem.vue';\n\n// @TODO review\nimport ContextProvider from './components/ContextProvider.vue';\nimport Slider from './components/Slider.vue';\nimport { showContextMenu } from './components/contextMenu';\n// for new version\nimport LongText from './components/LongText.vue';\nimport SliderRangeTriple from './components/SliderRangeTriple.vue';\nimport SliderRange from './components/SliderRange.vue';\nimport Scrollable from './components/Scrollable.vue';\n\nimport { allCssVariables } from './demo-site-data/all-css-variables.ts';\n\n/**\n * Layout components\n */\n\nexport * from './layout/PlBlockPage';\nexport * from './layout/PlContainer';\nexport * from './layout/PlRow';\nexport * from './layout/PlSpacer';\nexport * from './layout/PlGrid';\n\n/**\n * Components\n */\nexport * from './components/PlErrorBoundary';\n// export * from './components/PlErrorAlert'; // @TODO discuss if we should export it\nexport * from './components/PlAlert';\nexport * from './components/PlBtnSplit';\nexport * from './components/PlBtnPrimary';\nexport * from './components/PlBtnAccent';\nexport * from './components/PlBtnDanger';\nexport * from './components/PlBtnSecondary';\nexport * from './components/PlBtnGhost';\nexport * from './components/PlBtnLink';\nexport * from './components/PlBtnGroup';\nexport * from './components/PlEditableTitle';\nexport * from './components/PlTextField';\nexport * from './components/PlSearchField';\nexport * from './components/PlTextArea';\nexport * from './components/PlDropdown';\nexport * from './components/PlDropdownRef';\nexport * from './components/PlDropdownLine';\nexport * from './components/PlDropdownLegacy';\nexport * from './components/PlTooltip';\nexport * from './components/PlProgressBar';\nexport * from './components/PlNumberField';\nexport * from './components/PlDropdownMulti';\nexport * from './components/PlDropdownMultiRef';\nexport * from './components/PlCheckbox';\nexport * from './components/PlCheckboxGroup';\nexport * from './components/PlChip';\nexport * from './components/PlDialogModal';\nexport * from './components/PlSlideModal';\nexport * from './components/PlToggleSwitch';\nexport * from './components/PlLogView';\nexport * from './components/PlTabs';\nexport * from './components/PlSectionSeparator';\nexport * from './components/PlAccordion';\nexport * from './components/PlStatusTag';\nexport * from './components/PlLoaderCircular';\nexport * from './components/PlSplash';\nexport * from './components/PlProgressCell';\nexport * from './components/PlAutocomplete';\nexport * from './components/PlElementList';\n\nexport * from './components/PlFileDialog';\nexport * from './components/PlFileInput';\nexport * from './components/PlNotificationAlert';\n\nexport * from './components/PlSvg';\nexport * from './components/PlMaskIcon16';\nexport * from './components/PlMaskIcon24';\nexport * from './components/PlIcon16';\nexport * from './components/PlIcon24';\n\nexport * from './components/PlChartStackedBar';\nexport * from './components/PlChartHistogram';\n\nexport * from './components/PlRadio';\n\nexport * from './colors';\n\n/**\n * Usables\n */\nexport { useElementPosition as usePosition } from './composition/usePosition';\nexport { useClickOutside } from './composition/useClickOutside';\nexport { useEventListener } from './composition/useEventListener';\nexport { useScroll } from './composition/useScroll';\nexport { useResizeObserver } from './composition/useResizeObserver';\nexport { useTheme } from './composition/useTheme';\nexport { useLocalStorage } from './composition/useLocalStorage';\nexport { useMouseCapture } from './composition/useMouseCapture';\nexport { useHover } from './composition/useHover';\nexport { useMouse } from './composition/useMouse';\nexport { useSortable } from './composition/useSortable';\nexport { useSortable2 } from './composition/useSortable2';\nexport { useInterval } from './composition/useInterval';\nexport { useFormState } from './composition/useFormState';\nexport { useQuery } from './composition/useQuery.ts';\nexport { useDraggable } from './composition/useDraggable';\nexport { useComponentProp } from './composition/useComponentProp';\nexport * from './composition/useWatchFetch';\n\n/**\n * Utils/Partials\n */\n\nexport { default as PlCloseModalBtn } from './utils/PlCloseModalBtn.vue';\nexport * from './utils/DropdownOverlay';\n\n/**\n * Technical\n * @TODO move it from here maybe\n */\nexport { useLabelNotch } from './utils/useLabelNotch.ts';\n\nexport type * from './types';\n\nexport { icons16, icons24 } from './types';\n\nexport * from './helpers/dom';\n\nexport * from './helpers/utils';\n\n/**\n * @TODO review\n */\nexport { ThemeSwitcher, DropdownListItem, DataTable, ContextProvider, Slider };\n\n// Helpers\nexport { showContextMenu };\n\n// move to new version pl-uikit\nexport { LongText, SliderRangeTriple, SliderRange, Scrollable };\n\n// @todo\nconst DemoData = { allCssVariables: allCssVariables() };\nexport { DemoData };\n"],"names":["DemoData","allCssVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkJA,MAAMA,IAAW,EAAE,iBAAiBC,EAAkB,EAAA;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import './assets/ui.scss';\n\n// @TODO review\nimport * as DataTable from './components/DataTable';\nimport ThemeSwitcher from './components/ThemeSwitcher.vue';\n// @TODO review (may be private)\nimport DropdownListItem from './components/DropdownListItem.vue';\n\n// @TODO review\nimport ContextProvider from './components/ContextProvider.vue';\nimport Slider from './components/Slider.vue';\nimport { showContextMenu } from './components/contextMenu';\n// for new version\nimport LongText from './components/LongText.vue';\nimport SliderRangeTriple from './components/SliderRangeTriple.vue';\nimport SliderRange from './components/SliderRange.vue';\nimport Scrollable from './components/Scrollable.vue';\n\nimport { allCssVariables } from './demo-site-data/all-css-variables.ts';\n\n/**\n * Layout components\n */\n\nexport * from './layout/PlBlockPage';\nexport * from './layout/PlContainer';\nexport * from './layout/PlRow';\nexport * from './layout/PlSpacer';\nexport * from './layout/PlGrid';\n\n/**\n * Components\n */\nexport * from './components/PlErrorBoundary';\n// export * from './components/PlErrorAlert'; // @TODO discuss if we should export it\nexport * from './components/PlAlert';\nexport * from './components/PlBtnSplit';\nexport * from './components/PlBtnPrimary';\nexport * from './components/PlBtnAccent';\nexport * from './components/PlBtnDanger';\nexport * from './components/PlBtnSecondary';\nexport * from './components/PlBtnGhost';\nexport * from './components/PlBtnLink';\nexport * from './components/PlBtnGroup';\nexport * from './components/PlEditableTitle';\nexport * from './components/PlTextField';\nexport * from './components/PlSearchField';\nexport * from './components/PlTextArea';\nexport * from './components/PlDropdown';\nexport * from './components/PlDropdownRef';\nexport * from './components/PlDropdownLine';\nexport * from './components/PlDropdownLegacy';\nexport * from './components/PlTooltip';\nexport * from './components/PlProgressBar';\nexport * from './components/PlNumberField';\nexport * from './components/PlDropdownMulti';\nexport * from './components/PlDropdownMultiRef';\nexport * from './components/PlCheckbox';\nexport * from './components/PlCheckboxGroup';\nexport * from './components/PlChip';\nexport * from './components/PlDialogModal';\nexport * from './components/PlSlideModal';\nexport * from './components/PlToggleSwitch';\nexport * from './components/PlLogView';\nexport * from './components/PlTabs';\nexport * from './components/PlSectionSeparator';\nexport * from './components/PlAccordion';\nexport * from './components/PlStatusTag';\nexport * from './components/PlLoaderCircular';\nexport * from './components/PlSplash';\nexport * from './components/PlProgressCell';\nexport * from './components/PlAutocomplete';\nexport * from './components/PlElementList';\n\nexport * from './components/PlFileDialog';\nexport * from './components/PlFileInput';\nexport * from './components/PlNotificationAlert';\n\nexport * from './components/PlSvg';\nexport * from './components/PlMaskIcon16';\nexport * from './components/PlMaskIcon24';\nexport * from './components/PlIcon16';\nexport * from './components/PlIcon24';\n\nexport * from './components/PlChartStackedBar';\nexport * from './components/PlChartHistogram';\n\nexport * from './components/PlRadio';\n\nexport * from './colors';\n\n/**\n * Usables\n */\nexport { useElementPosition as usePosition } from './composition/usePosition';\nexport { useClickOutside } from './composition/useClickOutside';\nexport { useEventListener } from './composition/useEventListener';\nexport { useScroll } from './composition/useScroll';\nexport { useResizeObserver } from './composition/useResizeObserver';\nexport { useTheme } from './composition/useTheme';\nexport { useLocalStorage } from './composition/useLocalStorage';\nexport { useMouseCapture } from './composition/useMouseCapture';\nexport { useHover } from './composition/useHover';\nexport { useMouse } from './composition/useMouse';\nexport { useSortable } from './composition/useSortable';\nexport { useSortable2 } from './composition/useSortable2';\nexport { useInterval } from './composition/useInterval';\nexport { useFormState } from './composition/useFormState';\nexport { useQuery } from './composition/useQuery.ts';\nexport { useDraggable } from './composition/useDraggable';\nexport { useComponentProp } from './composition/useComponentProp';\nexport * from './composition/useWatchFetch';\nexport * from './composition/watchCached';\nexport * from './composition/computedCached';\n\n/**\n * Utils/Partials\n */\n\nexport { default as PlCloseModalBtn } from './utils/PlCloseModalBtn.vue';\nexport * from './utils/DropdownOverlay';\n\n/**\n * Technical\n * @TODO move it from here maybe\n */\nexport { useLabelNotch } from './utils/useLabelNotch.ts';\n\nexport type * from './types';\n\nexport { icons16, icons24 } from './types';\n\nexport * from './helpers/dom';\n\nexport * from './helpers/utils';\n\n/**\n * @TODO review\n */\nexport { ThemeSwitcher, DropdownListItem, DataTable, ContextProvider, Slider };\n\n// Helpers\nexport { showContextMenu };\n\n// move to new version pl-uikit\nexport { LongText, SliderRangeTriple, SliderRange, Scrollable };\n\n// @todo\nconst DemoData = { allCssVariables: allCssVariables() };\nexport { DemoData };\n"],"names":["DemoData","allCssVariables"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJA,MAAMA,IAAW,EAAE,iBAAiBC,EAAkB,EAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.3.8",
3
+ "version": "2.3.9",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -0,0 +1,58 @@
1
+ import { isJsonEqual } from '@milaboratories/helpers';
2
+ import {
3
+ computed,
4
+ ref,
5
+ watch,
6
+ type ComputedGetter,
7
+ type ComputedSetter,
8
+ type ComputedRef,
9
+ type WritableComputedRef,
10
+ } from 'vue';
11
+
12
+ export function computedCached<T>(options: {
13
+ get: ComputedGetter<T>;
14
+ set: ComputedSetter<T>;
15
+ deep?: boolean;
16
+ }): WritableComputedRef<T>;
17
+ export function computedCached<T>(options: {
18
+ get: ComputedGetter<T>;
19
+ deep?: boolean;
20
+ }): ComputedRef<T>;
21
+ export function computedCached<T>(getter: ComputedGetter<T>): ComputedRef<T>;
22
+ export function computedCached<T>(options: ComputedGetter<T> | {
23
+ get: ComputedGetter<T>;
24
+ set?: ComputedSetter<T>;
25
+ deep?: boolean;
26
+ }) {
27
+ if (typeof options === 'function') {
28
+ options = {
29
+ get: options,
30
+ };
31
+ }
32
+ const { get: getter, set: setter, deep } = options;
33
+
34
+ const cachedValue = ref<T>(getter());
35
+ watch(
36
+ getter,
37
+ (newValue) => {
38
+ if (!isJsonEqual(newValue, cachedValue.value)) {
39
+ cachedValue.value = newValue;
40
+ }
41
+ },
42
+ { deep },
43
+ );
44
+
45
+ if (setter) {
46
+ return computed({
47
+ get: () => cachedValue.value,
48
+ set: (newValue) => {
49
+ if (!isJsonEqual(newValue, cachedValue.value)) {
50
+ cachedValue.value = newValue;
51
+ setter(newValue);
52
+ }
53
+ },
54
+ });
55
+ } else {
56
+ return computed(() => cachedValue.value);
57
+ }
58
+ }
@@ -0,0 +1,45 @@
1
+ import { isJsonEqual } from '@milaboratories/helpers';
2
+ import {
3
+ ref,
4
+ watch,
5
+ type WatchCallback,
6
+ type WatchHandle,
7
+ type WatchSource,
8
+ } from 'vue';
9
+
10
+ type MaybeUndefined<T, I> = I extends true ? T | undefined : T;
11
+ export interface WatchCachedOptions<Immediate = boolean> {
12
+ immediate?: Immediate;
13
+ deep?: boolean;
14
+ // when `once` is needed, caching is useless, use plain watch instead
15
+ }
16
+ export function watchCached<T, Immediate extends Readonly<boolean> = false>(
17
+ source: WatchSource<T>,
18
+ cb: WatchCallback<T, MaybeUndefined<T, Immediate>>,
19
+ options?: WatchCachedOptions<Immediate>,
20
+ ): WatchHandle {
21
+ const cachedValue = ref<T>();
22
+ const handle = watch(
23
+ source,
24
+ (newValue) => {
25
+ if (!isJsonEqual(newValue, cachedValue.value)) {
26
+ cachedValue.value = newValue;
27
+ }
28
+ },
29
+ {
30
+ deep: options?.deep,
31
+ immediate: true, // always initialize cachedValue
32
+ },
33
+ );
34
+ watch<T, Immediate>(
35
+ () => cachedValue.value as T, // `as T` is safe as we always initialize cachedValue
36
+ cb, // separate watch so that `onWatcherCleanup` would only be triggerred here
37
+ {
38
+ // standard vue `WatchOptions` conform to `WatchCachedOptions` interface,
39
+ // so construct new options to remove unsupported entries
40
+ deep: options?.deep,
41
+ immediate: options?.immediate,
42
+ },
43
+ );
44
+ return handle; // stopping first handle would effectively stop the second one
45
+ }
package/src/index.ts CHANGED
@@ -110,6 +110,8 @@ export { useQuery } from './composition/useQuery.ts';
110
110
  export { useDraggable } from './composition/useDraggable';
111
111
  export { useComponentProp } from './composition/useComponentProp';
112
112
  export * from './composition/useWatchFetch';
113
+ export * from './composition/watchCached';
114
+ export * from './composition/computedCached';
113
115
 
114
116
  /**
115
117
  * Utils/Partials