@platforma-sdk/ui-vue 1.58.8 → 1.58.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/.turbo/turbo-build.log +195 -181
  2. package/.turbo/turbo-formatter$colon$check.log +2 -2
  3. package/.turbo/turbo-linter$colon$check.log +2 -2
  4. package/.turbo/turbo-types$colon$check.log +1 -1
  5. package/CHANGELOG.md +14 -0
  6. package/dist/AgGridVue/createAgGridColDef.js +73 -43
  7. package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
  8. package/dist/AgGridVue/selection.js +55 -47
  9. package/dist/AgGridVue/selection.js.map +1 -1
  10. package/dist/AgGridVue/useAgGridOptions.js +212 -229
  11. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  12. package/dist/_virtual/_plugin-vue_export-helper.js +5 -9
  13. package/dist/_virtual/_rolldown/runtime.js +15 -0
  14. package/dist/aggrid.js +48 -46
  15. package/dist/aggrid.js.map +1 -1
  16. package/dist/assets/block.css +1 -1
  17. package/dist/assets/ui.css +1 -0
  18. package/dist/components/BlockLayout.js +7 -0
  19. package/dist/components/BlockLayout.js.map +1 -0
  20. package/dist/components/BlockLayout.style.js +4 -0
  21. package/dist/components/BlockLayout.style.js.map +1 -0
  22. package/dist/components/BlockLayout.vue.css +1 -0
  23. package/dist/components/BlockLayout.vue2.js +42 -54
  24. package/dist/components/BlockLayout.vue2.js.map +1 -1
  25. package/dist/components/BlockLoader.js +5 -0
  26. package/dist/components/BlockLoader.js.map +1 -0
  27. package/dist/components/BlockLoader.vue2.js +22 -5
  28. package/dist/components/BlockLoader.vue2.js.map +1 -1
  29. package/dist/components/LoaderPage.js +10 -0
  30. package/dist/components/LoaderPage.js.map +1 -0
  31. package/dist/components/NotFound.js +5 -0
  32. package/dist/components/NotFound.js.map +1 -0
  33. package/dist/components/NotFound.vue2.js +18 -5
  34. package/dist/components/NotFound.vue2.js.map +1 -1
  35. package/dist/components/PlAdvancedFilter/FilterEditor.js +7 -0
  36. package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -0
  37. package/dist/components/PlAdvancedFilter/FilterEditor.style.js +18 -0
  38. package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -0
  39. package/dist/components/PlAdvancedFilter/FilterEditor.vue.css +1 -0
  40. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +291 -322
  41. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
  42. package/dist/components/PlAdvancedFilter/OperandButton.js +7 -0
  43. package/dist/components/PlAdvancedFilter/OperandButton.js.map +1 -0
  44. package/dist/components/PlAdvancedFilter/OperandButton.style.js +8 -0
  45. package/dist/components/PlAdvancedFilter/OperandButton.style.js.map +1 -0
  46. package/dist/components/PlAdvancedFilter/OperandButton.vue.css +1 -0
  47. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +19 -24
  48. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
  49. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +7 -0
  50. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js.map +1 -0
  51. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +12 -0
  52. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js.map +1 -0
  53. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.css +1 -0
  54. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +1 -3
  55. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
  56. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +239 -238
  57. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
  58. package/dist/components/PlAdvancedFilter/constants.js +115 -58
  59. package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
  60. package/dist/components/PlAdvancedFilter/index.js +6 -6
  61. package/dist/components/PlAdvancedFilter/index.js.map +1 -1
  62. package/dist/components/PlAdvancedFilter/utils.js +49 -64
  63. package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
  64. package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
  65. package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
  66. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
  67. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
  68. package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
  69. package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
  70. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
  71. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
  72. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
  73. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
  74. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
  75. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
  76. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
  77. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
  78. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
  79. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
  80. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
  81. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
  82. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
  83. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
  84. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
  85. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
  86. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
  87. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
  88. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
  89. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
  90. package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
  91. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
  92. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
  93. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
  94. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
  95. package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
  96. package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
  97. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
  98. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
  99. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
  100. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
  101. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
  102. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
  103. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
  104. package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
  105. package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
  106. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
  107. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
  108. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
  109. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.d.ts.map +1 -1
  110. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +325 -336
  111. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  112. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
  113. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
  114. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
  115. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
  116. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
  117. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
  118. package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
  119. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
  120. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
  121. package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
  122. package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
  123. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
  124. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
  125. package/dist/components/PlAgDataTable/ag-override.js +4 -0
  126. package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
  127. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
  128. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
  129. package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
  130. package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
  131. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
  132. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
  133. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
  134. package/dist/components/PlAgDataTable/sources/common.js +6 -8
  135. package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
  136. package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
  137. package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
  138. package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
  139. package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
  140. package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
  141. package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
  142. package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
  143. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  144. package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
  145. package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
  146. package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
  147. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  148. package/dist/components/PlAgDataTable/types.js +54 -43
  149. package/dist/components/PlAgDataTable/types.js.map +1 -1
  150. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
  151. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
  152. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
  153. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
  154. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
  155. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
  156. package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
  157. package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
  158. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
  159. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
  160. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
  161. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
  162. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
  163. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
  164. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
  165. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
  166. package/dist/components/PlAgRowNumHeader.js +5 -0
  167. package/dist/components/PlAgRowNumHeader.js.map +1 -0
  168. package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
  169. package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
  170. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
  171. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
  172. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
  173. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
  174. package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
  175. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
  176. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
  177. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
  178. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
  179. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
  180. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
  181. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
  182. package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
  183. package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
  184. package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
  185. package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
  186. package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
  187. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -129
  188. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  189. package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
  190. package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
  191. package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
  192. package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
  193. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
  194. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  195. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
  196. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
  197. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
  198. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
  199. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
  200. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  201. package/dist/components/PlAnnotations/components/style.css +1 -1
  202. package/dist/components/PlAnnotations/components/style.module.js +8 -0
  203. package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
  204. package/dist/components/PlAnnotations/utils.js +6 -8
  205. package/dist/components/PlAnnotations/utils.js.map +1 -1
  206. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
  207. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
  208. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
  209. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
  210. package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
  211. package/dist/components/PlBtnExportArchive/Item.js +7 -0
  212. package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
  213. package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
  214. package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
  215. package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
  216. package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
  217. package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
  218. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
  219. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
  220. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
  221. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
  222. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
  223. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
  224. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
  225. package/dist/components/PlBtnExportArchive/Summary.js +7 -0
  226. package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
  227. package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
  228. package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
  229. package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
  230. package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
  231. package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
  232. package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
  233. package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
  234. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
  235. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
  236. package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
  237. package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
  238. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
  239. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
  240. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
  241. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
  242. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
  243. package/dist/composition/fileContent.js +169 -200
  244. package/dist/composition/fileContent.js.map +1 -1
  245. package/dist/computedResult.js +47 -18
  246. package/dist/computedResult.js.map +1 -1
  247. package/dist/createModel.js +44 -60
  248. package/dist/createModel.js.map +1 -1
  249. package/dist/defineApp.js +87 -113
  250. package/dist/defineApp.js.map +1 -1
  251. package/dist/defineStore.js +15 -16
  252. package/dist/defineStore.js.map +1 -1
  253. package/dist/index.js +39 -98
  254. package/dist/index.js.map +1 -1
  255. package/dist/internal/UpdateSerializer.js +50 -66
  256. package/dist/internal/UpdateSerializer.js.map +1 -1
  257. package/dist/internal/createAppModel.js +54 -68
  258. package/dist/internal/createAppModel.js.map +1 -1
  259. package/dist/internal/createAppV1.js +140 -193
  260. package/dist/internal/createAppV1.js.map +1 -1
  261. package/dist/internal/createAppV2.d.ts.map +1 -1
  262. package/dist/internal/createAppV2.js +149 -193
  263. package/dist/internal/createAppV2.js.map +1 -1
  264. package/dist/internal/createAppV3.d.ts.map +1 -1
  265. package/dist/internal/createAppV3.js +157 -202
  266. package/dist/internal/createAppV3.js.map +1 -1
  267. package/dist/internal/test-helpers/utils.d.ts.map +1 -1
  268. package/dist/lib/util/helpers/dist/error.js +1 -0
  269. package/dist/lib/util/helpers/dist/functions.js +8 -9
  270. package/dist/lib/util/helpers/dist/functions.js.map +1 -1
  271. package/dist/lib/util/helpers/dist/hash.js +5 -0
  272. package/dist/lib/util/helpers/dist/hash.js.map +1 -0
  273. package/dist/lib/util/helpers/dist/index.js +9 -0
  274. package/dist/lib/util/helpers/dist/objects.js +75 -42
  275. package/dist/lib/util/helpers/dist/objects.js.map +1 -1
  276. package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
  277. package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
  278. package/dist/lib/util/helpers/dist/random.js +6 -8
  279. package/dist/lib/util/helpers/dist/random.js.map +1 -1
  280. package/dist/lib/util/helpers/dist/strings.js +11 -14
  281. package/dist/lib/util/helpers/dist/strings.js.map +1 -1
  282. package/dist/lib/util/helpers/dist/uniqId.js +7 -0
  283. package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
  284. package/dist/lib/util/helpers/dist/utils.js +34 -50
  285. package/dist/lib/util/helpers/dist/utils.js.map +1 -1
  286. package/dist/lib.js +38 -0
  287. package/dist/objectHash.js +13 -10
  288. package/dist/objectHash.js.map +1 -1
  289. package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
  290. package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
  291. package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
  292. package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
  293. package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
  294. package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
  295. package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
  296. package/dist/plugins/Monetization/LimitCard.js +7 -0
  297. package/dist/plugins/Monetization/LimitCard.js.map +1 -0
  298. package/dist/plugins/Monetization/LimitCard.style.js +18 -0
  299. package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
  300. package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
  301. package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
  302. package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
  303. package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
  304. package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
  305. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
  306. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
  307. package/dist/plugins/Monetization/RunStatus.js +7 -0
  308. package/dist/plugins/Monetization/RunStatus.js.map +1 -0
  309. package/dist/plugins/Monetization/RunStatus.style.js +13 -0
  310. package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
  311. package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
  312. package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
  313. package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
  314. package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
  315. package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
  316. package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
  317. package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
  318. package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
  319. package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
  320. package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
  321. package/dist/plugins/Monetization/useButtonTarget.js +15 -16
  322. package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
  323. package/dist/plugins/Monetization/useInfo.js +36 -71
  324. package/dist/plugins/Monetization/useInfo.js.map +1 -1
  325. package/dist/plugins/Monetization/validation.js +34 -42
  326. package/dist/plugins/Monetization/validation.js.map +1 -1
  327. package/dist/urls.d.ts.map +1 -1
  328. package/dist/urls.js +4 -5
  329. package/dist/urls.js.map +1 -1
  330. package/dist/usePlugin.js +32 -12
  331. package/dist/usePlugin.js.map +1 -1
  332. package/dist/utils.d.ts.map +1 -1
  333. package/dist/utils.js +29 -54
  334. package/dist/utils.js.map +1 -1
  335. package/package.json +9 -9
  336. package/src/components/PlAgDataTable/PlAgDataTableV2.vue +57 -9
  337. package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
  338. package/dist/components/BlockLayout.css +0 -1
  339. package/dist/components/BlockLayout.vue.js +0 -10
  340. package/dist/components/BlockLayout.vue.js.map +0 -1
  341. package/dist/components/BlockLayout.vue3.js +0 -8
  342. package/dist/components/BlockLayout.vue3.js.map +0 -1
  343. package/dist/components/BlockLoader.vue.js +0 -26
  344. package/dist/components/BlockLoader.vue.js.map +0 -1
  345. package/dist/components/LoaderPage.vue.js +0 -15
  346. package/dist/components/LoaderPage.vue.js.map +0 -1
  347. package/dist/components/NotFound.vue.js +0 -26
  348. package/dist/components/NotFound.vue.js.map +0 -1
  349. package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
  350. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
  351. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
  352. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
  353. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
  354. package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
  355. package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
  356. package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
  357. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
  358. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
  359. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
  360. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
  361. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
  362. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
  363. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
  364. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
  365. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
  366. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
  367. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
  368. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
  369. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
  370. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
  371. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
  372. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
  373. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
  374. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
  375. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
  376. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
  377. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
  378. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
  379. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
  380. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
  381. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
  382. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
  383. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
  384. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
  385. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
  386. package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
  387. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
  388. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
  389. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
  390. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
  391. package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
  392. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
  393. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
  394. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
  395. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
  396. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
  397. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
  398. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
  399. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
  400. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
  401. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
  402. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
  403. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
  404. package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
  405. package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
  406. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
  407. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
  408. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
  409. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
  410. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
  411. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
  412. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
  413. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
  414. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
  415. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
  416. package/dist/components/PlAgRowNumHeader.vue.js +0 -39
  417. package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
  418. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
  419. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
  420. package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
  421. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
  422. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
  423. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
  424. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
  425. package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
  426. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
  427. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
  428. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
  429. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
  430. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
  431. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
  432. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
  433. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
  434. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
  435. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
  436. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
  437. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
  438. package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
  439. package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
  440. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
  441. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
  442. package/dist/components/PlBtnExportArchive/Item.css +0 -1
  443. package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
  444. package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
  445. package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
  446. package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
  447. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
  448. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
  449. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
  450. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
  451. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
  452. package/dist/components/PlBtnExportArchive/Summary.css +0 -1
  453. package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
  454. package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
  455. package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
  456. package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
  457. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
  458. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
  459. package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
  460. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
  461. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
  462. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
  463. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
  464. package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
  465. package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
  466. package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
  467. package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
  468. package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
  469. package/dist/plugins/Monetization/LimitCard.css +0 -1
  470. package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
  471. package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
  472. package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
  473. package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
  474. package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
  475. package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
  476. package/dist/plugins/Monetization/RunStatus.css +0 -1
  477. package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
  478. package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
  479. package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
  480. package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
  481. package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
  482. package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
  483. package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
  484. package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
  485. package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
  486. /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
  487. /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
  488. /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
  489. /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"RunStatus.vue2.js","sources":["../../../src/plugins/Monetization/RunStatus.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n canRun: boolean | undefined;\n statusText: string | undefined;\n isLoading?: boolean;\n}>();\n\nconst badgeText = computed(() => {\n if (props.isLoading) {\n return \"Updating...\";\n }\n\n if (props.canRun) {\n return \"Ready to run\";\n }\n\n return \"Cannot run\";\n});\n</script>\n\n<template>\n <div>\n <div :class=\"[{ [$style['can-run']]: canRun, [$style.loading]: isLoading }, $style.container]\">\n <div :class=\"$style.badge\">\n <i :class=\"$style.blob\">\n <span>\n <span :class=\"$style.dot\" />\n </span>\n </i>\n <span>{{ badgeText }}</span>\n </div>\n <slot />\n </div>\n <div v-if=\"statusText\" :class=\"$style.statusText\">{{ statusText }}</div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n align-items: center;\n gap: 8px;\n --blob-color: #ff5c5c;\n --badge-background: rgba(255, 92, 92, 0.12);\n\n &.can-run {\n --blob-color: #49cc49;\n --badge-background: rgba(99, 224, 36, 0.12);\n }\n\n &.loading {\n --blob-color: #ffad0a;\n --badge-background: rgba(255, 173, 10, 0.12);\n }\n}\n\n.statusText {\n margin-top: 6px;\n color: var(--txt-error);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.badge {\n display: flex;\n gap: 6px;\n height: 40px;\n padding: 6px 16px 6px 8px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--badge-background);\n background: var(--badge-background);\n}\n\n.blob {\n width: 24px;\n height: 24px;\n display: flex;\n place-items: center;\n place-content: center;\n\n > span {\n display: flex;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n place-content: center;\n place-items: center;\n background-color: rgb(from var(--blob-color) r g b / 0.24);\n }\n\n .dot {\n border-radius: 50%;\n height: 8px;\n width: 8px;\n transform: scale(1);\n\n background: var(--blob-color);\n box-shadow: 0 0 0 0 var(--blob-color);\n animation: pulse-glob 1s infinite;\n }\n}\n</style>\n"],"names":["props","__props","badgeText","computed","_createElementBlock","_createElementVNode","_normalizeClass","$style","_renderSlot","_ctx"],"mappings":";;;;;;;;;AAGA,UAAMA,IAAQC,GAMRC,IAAYC,EAAS,MACrBH,EAAM,YACD,gBAGLA,EAAM,SACD,iBAGF,YACR;2BAICI,EAaM,OAAA,MAAA;AAAA,MAZJC,EAUM,OAAA;AAAA,QAVA,OAAKC,EAAA,CAAA,EAAA,CAAMC,EAAAA,OAAM,SAAA,CAAA,GAAcN,EAAA,QAAM,CAAGM,EAAAA,OAAO,OAAO,GAAGN,EAAA,aAAaM,EAAAA,OAAO,SAAS,CAAA;AAAA,MAAA;QAC1FF,EAOM,OAAA;AAAA,UAPA,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,QAAA;UACvBF,EAII,KAAA;AAAA,YAJA,OAAKC,EAAEC,EAAAA,OAAO,IAAI;AAAA,UAAA;YACpBF,EAEO,QAAA,MAAA;AAAA,cADLA,EAA4B,QAAA;AAAA,gBAArB,OAAKC,EAAEC,EAAAA,OAAO,GAAG;AAAA,cAAA;;;UAG5BF,EAA4B,gBAAnBH,EAAA,KAAS,GAAA,CAAA;AAAA,QAAA;QAEpBM,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;MAECR,EAAA,mBAAXG,EAAwE,OAAA;AAAA;QAAhD,OAAKE,EAAEC,EAAAA,OAAO,UAAU;AAAA,MAAA,KAAKN,EAAA,UAAU,GAAA,CAAA;;;;"}
1
+ {"version":3,"file":"RunStatus.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/plugins/Monetization/RunStatus.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n canRun: boolean | undefined;\n statusText: string | undefined;\n isLoading?: boolean;\n}>();\n\nconst badgeText = computed(() => {\n if (props.isLoading) {\n return \"Updating...\";\n }\n\n if (props.canRun) {\n return \"Ready to run\";\n }\n\n return \"Cannot run\";\n});\n</script>\n\n<template>\n <div>\n <div :class=\"[{ [$style['can-run']]: canRun, [$style.loading]: isLoading }, $style.container]\">\n <div :class=\"$style.badge\">\n <i :class=\"$style.blob\">\n <span>\n <span :class=\"$style.dot\" />\n </span>\n </i>\n <span>{{ badgeText }}</span>\n </div>\n <slot />\n </div>\n <div v-if=\"statusText\" :class=\"$style.statusText\">{{ statusText }}</div>\n </div>\n</template>\n\n<style module>\n.container {\n display: flex;\n align-items: center;\n gap: 8px;\n --blob-color: #ff5c5c;\n --badge-background: rgba(255, 92, 92, 0.12);\n\n &.can-run {\n --blob-color: #49cc49;\n --badge-background: rgba(99, 224, 36, 0.12);\n }\n\n &.loading {\n --blob-color: #ffad0a;\n --badge-background: rgba(255, 173, 10, 0.12);\n }\n}\n\n.statusText {\n margin-top: 6px;\n color: var(--txt-error);\n font-size: 14px;\n font-weight: 500;\n line-height: 20px;\n}\n\n.badge {\n display: flex;\n gap: 6px;\n height: 40px;\n padding: 6px 16px 6px 8px;\n align-items: center;\n border-radius: 6px;\n border: 1px solid var(--badge-background);\n background: var(--badge-background);\n}\n\n.blob {\n width: 24px;\n height: 24px;\n display: flex;\n place-items: center;\n place-content: center;\n\n > span {\n display: flex;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n place-content: center;\n place-items: center;\n background-color: rgb(from var(--blob-color) r g b / 0.24);\n }\n\n .dot {\n border-radius: 50%;\n height: 8px;\n width: 8px;\n transform: scale(1);\n\n background: var(--blob-color);\n box-shadow: 0 0 0 0 var(--blob-color);\n animation: pulse-glob 1s infinite;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;EAGA,IAAM,IAAQ,GAMR,IAAY,QACZ,EAAM,YACD,gBAGL,EAAM,SACD,iBAGF,aACP;yBAIA,EAaM,OAAA,MAAA,CAZJ,EAUM,OAAA,EAVA,OAAK,EAAA,CAAA;IAAMA,EAAAA,OAAM,aAAc,EAAA;IAASA,EAAAA,OAAO,UAAU,EAAA;GAAS,EAAIA,EAAAA,OAAO,UAAS,CAAA,EAAA,EAAA,CAC1F,EAOM,OAAA,EAPA,OAAK,EAAEA,EAAAA,OAAO,MAAK,EAAA,EAAA,CACvB,EAII,KAAA,EAJA,OAAK,EAAEA,EAAAA,OAAO,KAAI,EAAA,EAAA,CACpB,EAEO,QAAA,MAAA,CADL,EAA4B,QAAA,EAArB,OAAK,EAAEA,EAAAA,OAAO,IAAG,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,EAG5B,EAA4B,QAAA,MAAA,EAAnB,EAAA,MAAS,EAAA,EAAA,CAAA,EAAA,EAAA,EAEpB,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,EAAA,EAEC,EAAA,cAAA,GAAA,EAAX,EAAwE,OAAA;;GAAhD,OAAK,EAAEA,EAAAA,OAAO,WAAU;OAAK,EAAA,WAAU,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA"}
@@ -0,0 +1,7 @@
1
+ import e from "../../_virtual/_plugin-vue_export-helper.js";
2
+ import t from "./UserCabinetCard.vue2.js";
3
+ import n from "./UserCabinetCard.style.js";
4
+ var r = /* @__PURE__ */ e(t, [["__cssModules", { $style: n }]]);
5
+ export { r as default };
6
+
7
+ //# sourceMappingURL=UserCabinetCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserCabinetCard.js","names":[],"sources":["../../../src/plugins/Monetization/UserCabinetCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { PlTooltip, PlMaskIcon24 } from \"@milaboratories/uikit\";\n\nconst props = defineProps<{\n userCabinetUrl: string;\n email?: string;\n}>();\n\nconst copiedMessage = ref(\"\");\n\nconst iconName = computed(() => (copiedMessage.value ? \"clipboard-copied\" : \"clipboard\"));\n\nconst copyToClipboard = () => {\n if (props.userCabinetUrl) {\n navigator.clipboard\n .writeText(props.userCabinetUrl)\n .then(() => {\n copiedMessage.value = \"URL copied!\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n })\n .catch((err) => {\n console.error(\"Failed to copy text: \", err);\n copiedMessage.value = \"Copy failed\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n });\n }\n};\n</script>\n\n<template>\n <div>\n <div v-if=\"userCabinetUrl\" :class=\"$style.urlSection\">\n <div :class=\"$style.urlLabel\">Scientist cabinet URL:</div>\n <div :class=\"$style.urlActions\">\n <div :class=\"$style.urlDisplay\" :title=\"userCabinetUrl\">{{ userCabinetUrl }}</div>\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24\n :class=\"$style.copyIcon\"\n title=\"Copy content\"\n :name=\"iconName\"\n @click=\"copyToClipboard\"\n />\n <template #tooltip>{{ copiedMessage ? copiedMessage : \"Copy\" }}</template>\n </PlTooltip>\n </div>\n <div v-if=\"email\" :class=\"$style.email\">\n <span>License owner:</span>\n <span>{{ email }}</span>\n </div>\n </div>\n <div :class=\"$style.hint\">* Copy and paste the link into your browser</div>\n </div>\n</template>\n\n<style module>\n.hint {\n margin-top: 6px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.email {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n color: var(--txt-03);\n\n > span:last-child {\n max-width: 200px;\n text-overflow: ellipsis;\n display: block;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n.copyIcon {\n cursor: pointer;\n}\n\n.urlSection {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background-color: #f7f8fa;\n border-radius: 6px;\n border: 1px solid #e1e3eb;\n}\n\n.urlLabel {\n font-weight: 500;\n color: #555;\n}\n\n.urlActions {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: nowrap;\n}\n\n.urlDisplay {\n font-family: monospace;\n font-size: 14px;\n color: #0066cc;\n padding: 6px 10px 6px 0;\n border-radius: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import './UserCabinetCard.vue.css';var e = {
2
+ hint: "_hint_19ht8_2",
3
+ email: "_email_19ht8_10",
4
+ copyIcon: "_copyIcon_19ht8_26",
5
+ urlSection: "_urlSection_19ht8_30",
6
+ urlLabel: "_urlLabel_19ht8_40",
7
+ urlActions: "_urlActions_19ht8_45",
8
+ urlDisplay: "_urlDisplay_19ht8_52"
9
+ };
10
+ export { e as default };
11
+
12
+ //# sourceMappingURL=UserCabinetCard.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserCabinetCard.vue_vue_type_style_index_0_lang.module.js","names":[],"sources":["../../../src/plugins/Monetization/UserCabinetCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { PlTooltip, PlMaskIcon24 } from \"@milaboratories/uikit\";\n\nconst props = defineProps<{\n userCabinetUrl: string;\n email?: string;\n}>();\n\nconst copiedMessage = ref(\"\");\n\nconst iconName = computed(() => (copiedMessage.value ? \"clipboard-copied\" : \"clipboard\"));\n\nconst copyToClipboard = () => {\n if (props.userCabinetUrl) {\n navigator.clipboard\n .writeText(props.userCabinetUrl)\n .then(() => {\n copiedMessage.value = \"URL copied!\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n })\n .catch((err) => {\n console.error(\"Failed to copy text: \", err);\n copiedMessage.value = \"Copy failed\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n });\n }\n};\n</script>\n\n<template>\n <div>\n <div v-if=\"userCabinetUrl\" :class=\"$style.urlSection\">\n <div :class=\"$style.urlLabel\">Scientist cabinet URL:</div>\n <div :class=\"$style.urlActions\">\n <div :class=\"$style.urlDisplay\" :title=\"userCabinetUrl\">{{ userCabinetUrl }}</div>\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24\n :class=\"$style.copyIcon\"\n title=\"Copy content\"\n :name=\"iconName\"\n @click=\"copyToClipboard\"\n />\n <template #tooltip>{{ copiedMessage ? copiedMessage : \"Copy\" }}</template>\n </PlTooltip>\n </div>\n <div v-if=\"email\" :class=\"$style.email\">\n <span>License owner:</span>\n <span>{{ email }}</span>\n </div>\n </div>\n <div :class=\"$style.hint\">* Copy and paste the link into your browser</div>\n </div>\n</template>\n\n<style module>\n.hint {\n margin-top: 6px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.email {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n color: var(--txt-03);\n\n > span:last-child {\n max-width: 200px;\n text-overflow: ellipsis;\n display: block;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n.copyIcon {\n cursor: pointer;\n}\n\n.urlSection {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background-color: #f7f8fa;\n border-radius: 6px;\n border: 1px solid #e1e3eb;\n}\n\n.urlLabel {\n font-weight: 500;\n color: #555;\n}\n\n.urlActions {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: nowrap;\n}\n\n.urlDisplay {\n font-family: monospace;\n font-size: 14px;\n color: #0066cc;\n padding: 6px 10px 6px 0;\n border-radius: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n</style>\n"],"mappings":""}
@@ -0,0 +1 @@
1
+ ._hint_19ht8_2{color:var(--txt-03);margin-top:6px;font-size:12px;font-weight:500;line-height:16px}._email_19ht8_10{color:var(--txt-03);justify-content:space-between;align-items:center;font-size:12px;display:flex}._email_19ht8_10>span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:200px;display:block;overflow:hidden}._copyIcon_19ht8_26{cursor:pointer}._urlSection_19ht8_30{background-color:#f7f8fa;border:1px solid #e1e3eb;border-radius:6px;flex-direction:column;gap:8px;padding:12px;display:flex}._urlLabel_19ht8_40{color:#555;font-weight:500}._urlActions_19ht8_45{flex-wrap:nowrap;align-items:center;gap:10px;display:flex}._urlDisplay_19ht8_52{color:#06c;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;max-width:300px;padding:6px 10px 6px 0;font-family:monospace;font-size:14px;overflow:hidden}
@@ -1,71 +1,51 @@
1
- import { defineComponent as v, ref as b, computed as f, createElementBlock as i, openBlock as s, createCommentVNode as u, createElementVNode as a, normalizeClass as t, createVNode as d, toDisplayString as n, unref as p, withCtx as m, createTextVNode as U } from "vue";
2
- import { PlTooltip as k, PlMaskIcon24 as $ } from "@milaboratories/uikit";
3
- const T = ["title"], w = /* @__PURE__ */ v({
4
- __name: "UserCabinetCard",
5
- props: {
6
- userCabinetUrl: {},
7
- email: {}
8
- },
9
- setup(o) {
10
- const r = o, l = b(""), y = f(() => l.value ? "clipboard-copied" : "clipboard"), C = () => {
11
- r.userCabinetUrl && navigator.clipboard.writeText(r.userCabinetUrl).then(() => {
12
- l.value = "URL copied!", setTimeout(() => {
13
- l.value = "";
14
- }, 2e3);
15
- }).catch((e) => {
16
- console.error("Failed to copy text: ", e), l.value = "Copy failed", setTimeout(() => {
17
- l.value = "";
18
- }, 2e3);
19
- });
20
- };
21
- return (e, c) => (s(), i("div", null, [
22
- o.userCabinetUrl ? (s(), i("div", {
23
- key: 0,
24
- class: t(e.$style.urlSection)
25
- }, [
26
- a("div", {
27
- class: t(e.$style.urlLabel)
28
- }, "Scientist cabinet URL:", 2),
29
- a("div", {
30
- class: t(e.$style.urlActions)
31
- }, [
32
- a("div", {
33
- class: t(e.$style.urlDisplay),
34
- title: o.userCabinetUrl
35
- }, n(o.userCabinetUrl), 11, T),
36
- d(p(k), {
37
- "close-delay": 800,
38
- position: "top"
39
- }, {
40
- tooltip: m(() => [
41
- U(n(l.value ? l.value : "Copy"), 1)
42
- ]),
43
- default: m(() => [
44
- d(p($), {
45
- class: t(e.$style.copyIcon),
46
- title: "Copy content",
47
- name: y.value,
48
- onClick: C
49
- }, null, 8, ["class", "name"])
50
- ]),
51
- _: 1
52
- })
53
- ], 2),
54
- o.email ? (s(), i("div", {
55
- key: 0,
56
- class: t(e.$style.email)
57
- }, [
58
- c[0] || (c[0] = a("span", null, "License owner:", -1)),
59
- a("span", null, n(o.email), 1)
60
- ], 2)) : u("", !0)
61
- ], 2)) : u("", !0),
62
- a("div", {
63
- class: t(e.$style.hint)
64
- }, "* Copy and paste the link into your browser", 2)
65
- ]));
66
- }
1
+ import { computed as e, createCommentVNode as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, normalizeClass as s, openBlock as c, ref as l, toDisplayString as u, unref as d, withCtx as f } from "vue";
2
+ import { PlMaskIcon24 as p, PlTooltip as m } from "@milaboratories/uikit";
3
+ var h = ["title"], g = /* @__PURE__ */ o({
4
+ __name: "UserCabinetCard",
5
+ props: {
6
+ userCabinetUrl: {},
7
+ email: {}
8
+ },
9
+ setup(o) {
10
+ let g = o, _ = l(""), v = e(() => _.value ? "clipboard-copied" : "clipboard"), y = () => {
11
+ g.userCabinetUrl && navigator.clipboard.writeText(g.userCabinetUrl).then(() => {
12
+ _.value = "URL copied!", setTimeout(() => {
13
+ _.value = "";
14
+ }, 2e3);
15
+ }).catch((e) => {
16
+ console.error("Failed to copy text: ", e), _.value = "Copy failed", setTimeout(() => {
17
+ _.value = "";
18
+ }, 2e3);
19
+ });
20
+ };
21
+ return (e, l) => (c(), n("div", null, [o.userCabinetUrl ? (c(), n("div", {
22
+ key: 0,
23
+ class: s(e.$style.urlSection)
24
+ }, [
25
+ r("div", { class: s(e.$style.urlLabel) }, "Scientist cabinet URL:", 2),
26
+ r("div", { class: s(e.$style.urlActions) }, [r("div", {
27
+ class: s(e.$style.urlDisplay),
28
+ title: o.userCabinetUrl
29
+ }, u(o.userCabinetUrl), 11, h), a(d(m), {
30
+ "close-delay": 800,
31
+ position: "top"
32
+ }, {
33
+ tooltip: f(() => [i(u(_.value ? _.value : "Copy"), 1)]),
34
+ default: f(() => [a(d(p), {
35
+ class: s(e.$style.copyIcon),
36
+ title: "Copy content",
37
+ name: v.value,
38
+ onClick: y
39
+ }, null, 8, ["class", "name"])]),
40
+ _: 1
41
+ })], 2),
42
+ o.email ? (c(), n("div", {
43
+ key: 0,
44
+ class: s(e.$style.email)
45
+ }, [l[0] ||= r("span", null, "License owner:", -1), r("span", null, u(o.email), 1)], 2)) : t("", !0)
46
+ ], 2)) : t("", !0), r("div", { class: s(e.$style.hint) }, "* Copy and paste the link into your browser", 2)]));
47
+ }
67
48
  });
68
- export {
69
- w as default
70
- };
71
- //# sourceMappingURL=UserCabinetCard.vue2.js.map
49
+ export { g as default };
50
+
51
+ //# sourceMappingURL=UserCabinetCard.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserCabinetCard.vue2.js","sources":["../../../src/plugins/Monetization/UserCabinetCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { PlTooltip, PlMaskIcon24 } from \"@milaboratories/uikit\";\n\nconst props = defineProps<{\n userCabinetUrl: string;\n email?: string;\n}>();\n\nconst copiedMessage = ref(\"\");\n\nconst iconName = computed(() => (copiedMessage.value ? \"clipboard-copied\" : \"clipboard\"));\n\nconst copyToClipboard = () => {\n if (props.userCabinetUrl) {\n navigator.clipboard\n .writeText(props.userCabinetUrl)\n .then(() => {\n copiedMessage.value = \"URL copied!\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n })\n .catch((err) => {\n console.error(\"Failed to copy text: \", err);\n copiedMessage.value = \"Copy failed\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n });\n }\n};\n</script>\n\n<template>\n <div>\n <div v-if=\"userCabinetUrl\" :class=\"$style.urlSection\">\n <div :class=\"$style.urlLabel\">Scientist cabinet URL:</div>\n <div :class=\"$style.urlActions\">\n <div :class=\"$style.urlDisplay\" :title=\"userCabinetUrl\">{{ userCabinetUrl }}</div>\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24\n :class=\"$style.copyIcon\"\n title=\"Copy content\"\n :name=\"iconName\"\n @click=\"copyToClipboard\"\n />\n <template #tooltip>{{ copiedMessage ? copiedMessage : \"Copy\" }}</template>\n </PlTooltip>\n </div>\n <div v-if=\"email\" :class=\"$style.email\">\n <span>License owner:</span>\n <span>{{ email }}</span>\n </div>\n </div>\n <div :class=\"$style.hint\">* Copy and paste the link into your browser</div>\n </div>\n</template>\n\n<style module>\n.hint {\n margin-top: 6px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.email {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n color: var(--txt-03);\n\n > span:last-child {\n max-width: 200px;\n text-overflow: ellipsis;\n display: block;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n.copyIcon {\n cursor: pointer;\n}\n\n.urlSection {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background-color: #f7f8fa;\n border-radius: 6px;\n border: 1px solid #e1e3eb;\n}\n\n.urlLabel {\n font-weight: 500;\n color: #555;\n}\n\n.urlActions {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: nowrap;\n}\n\n.urlDisplay {\n font-family: monospace;\n font-size: 14px;\n color: #0066cc;\n padding: 6px 10px 6px 0;\n border-radius: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n</style>\n"],"names":["props","__props","copiedMessage","ref","iconName","computed","copyToClipboard","err","_createElementBlock","_normalizeClass","$style","_createElementVNode","_hoisted_1","_createVNode","_unref","PlTooltip","_createTextVNode","_toDisplayString","PlMaskIcon24","_cache"],"mappings":";;;;;;;;;AAIA,UAAMA,IAAQC,GAKRC,IAAgBC,EAAI,EAAE,GAEtBC,IAAWC,EAAS,MAAOH,EAAc,QAAQ,qBAAqB,WAAY,GAElFI,IAAkB,MAAM;AAC5B,MAAIN,EAAM,kBACR,UAAU,UACP,UAAUA,EAAM,cAAc,EAC9B,KAAK,MAAM;AACV,QAAAE,EAAc,QAAQ,eACtB,WAAW,MAAM;AACf,UAAAA,EAAc,QAAQ;AAAA,QACxB,GAAG,GAAI;AAAA,MACT,CAAC,EACA,MAAM,CAACK,MAAQ;AACd,gBAAQ,MAAM,yBAAyBA,CAAG,GAC1CL,EAAc,QAAQ,eACtB,WAAW,MAAM;AACf,UAAAA,EAAc,QAAQ;AAAA,QACxB,GAAG,GAAI;AAAA,MACT,CAAC;AAAA,IAEP;2BAIEM,EAqBM,OAAA,MAAA;AAAA,MApBOP,EAAA,uBAAXO,EAkBM,OAAA;AAAA;QAlBsB,OAAKC,EAAEC,EAAAA,OAAO,UAAU;AAAA,MAAA;QAClDC,EAA0D,OAAA;AAAA,UAApD,OAAKF,EAAEC,EAAAA,OAAO,QAAQ;AAAA,QAAA,GAAE,0BAAsB,CAAA;AAAA,QACpDC,EAWM,OAAA;AAAA,UAXA,OAAKF,EAAEC,EAAAA,OAAO,UAAU;AAAA,QAAA;UAC5BC,EAAkF,OAAA;AAAA,YAA5E,OAAKF,EAAEC,EAAAA,OAAO,UAAU;AAAA,YAAG,OAAOT,EAAA;AAAA,UAAA,KAAmBA,EAAA,cAAc,GAAA,IAAAW,CAAA;AAAA,UACzEC,EAQYC,EAAAC,CAAA,GAAA;AAAA,YARA,eAAa;AAAA,YAAK,UAAS;AAAA,UAAA;YAO1B,WAAQ,MAA4C;AAAA,cAAzCC,EAAAC,EAAAf,EAAA,QAAgBA,EAAA,QAAa,MAAA,GAAA,CAAA;AAAA,YAAA;uBANnD,MAKE;AAAA,cALFW,EAKEC,EAAAI,CAAA,GAAA;AAAA,gBAJC,OAAKT,EAAEC,EAAAA,OAAO,QAAQ;AAAA,gBACvB,OAAM;AAAA,gBACL,MAAMN,EAAA;AAAA,gBACN,SAAOE;AAAA,cAAA;;;;;QAKHL,EAAA,cAAXO,EAGM,OAAA;AAAA;UAHa,OAAKC,EAAEC,EAAAA,OAAO,KAAK;AAAA,QAAA;UACpCS,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAAR,EAA2B,cAArB,kBAAc,EAAA;AAAA,UACpBA,EAAwB,gBAAfV,EAAA,KAAK,GAAA,CAAA;AAAA,QAAA;;MAGlBU,EAA2E,OAAA;AAAA,QAArE,OAAKF,EAAEC,EAAAA,OAAO,IAAI;AAAA,MAAA,GAAE,+CAA2C,CAAA;AAAA,IAAA;;;"}
1
+ {"version":3,"file":"UserCabinetCard.vue_vue_type_script_setup_true_lang.js","names":["$style"],"sources":["../../../src/plugins/Monetization/UserCabinetCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { PlTooltip, PlMaskIcon24 } from \"@milaboratories/uikit\";\n\nconst props = defineProps<{\n userCabinetUrl: string;\n email?: string;\n}>();\n\nconst copiedMessage = ref(\"\");\n\nconst iconName = computed(() => (copiedMessage.value ? \"clipboard-copied\" : \"clipboard\"));\n\nconst copyToClipboard = () => {\n if (props.userCabinetUrl) {\n navigator.clipboard\n .writeText(props.userCabinetUrl)\n .then(() => {\n copiedMessage.value = \"URL copied!\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n })\n .catch((err) => {\n console.error(\"Failed to copy text: \", err);\n copiedMessage.value = \"Copy failed\";\n setTimeout(() => {\n copiedMessage.value = \"\";\n }, 2000);\n });\n }\n};\n</script>\n\n<template>\n <div>\n <div v-if=\"userCabinetUrl\" :class=\"$style.urlSection\">\n <div :class=\"$style.urlLabel\">Scientist cabinet URL:</div>\n <div :class=\"$style.urlActions\">\n <div :class=\"$style.urlDisplay\" :title=\"userCabinetUrl\">{{ userCabinetUrl }}</div>\n <PlTooltip :close-delay=\"800\" position=\"top\">\n <PlMaskIcon24\n :class=\"$style.copyIcon\"\n title=\"Copy content\"\n :name=\"iconName\"\n @click=\"copyToClipboard\"\n />\n <template #tooltip>{{ copiedMessage ? copiedMessage : \"Copy\" }}</template>\n </PlTooltip>\n </div>\n <div v-if=\"email\" :class=\"$style.email\">\n <span>License owner:</span>\n <span>{{ email }}</span>\n </div>\n </div>\n <div :class=\"$style.hint\">* Copy and paste the link into your browser</div>\n </div>\n</template>\n\n<style module>\n.hint {\n margin-top: 6px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.email {\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n color: var(--txt-03);\n\n > span:last-child {\n max-width: 200px;\n text-overflow: ellipsis;\n display: block;\n white-space: nowrap;\n overflow: hidden;\n }\n}\n\n.copyIcon {\n cursor: pointer;\n}\n\n.urlSection {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 12px;\n background-color: #f7f8fa;\n border-radius: 6px;\n border: 1px solid #e1e3eb;\n}\n\n.urlLabel {\n font-weight: 500;\n color: #555;\n}\n\n.urlActions {\n display: flex;\n align-items: center;\n gap: 10px;\n flex-wrap: nowrap;\n}\n\n.urlDisplay {\n font-family: monospace;\n font-size: 14px;\n color: #0066cc;\n padding: 6px 10px 6px 0;\n border-radius: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 300px;\n}\n</style>\n"],"mappings":";;;;;;;;;EAIA,IAAM,IAAQ,GAKR,IAAgB,EAAI,GAAG,EAEvB,IAAW,QAAgB,EAAc,QAAQ,qBAAqB,YAAa,EAEnF,UAAwB;AAC5B,GAAI,EAAM,kBACR,UAAU,UACP,UAAU,EAAM,eAAc,CAC9B,WAAW;AAEV,IADA,EAAc,QAAQ,eACtB,iBAAiB;AACf,OAAc,QAAQ;OACrB,IAAK;KACT,CACA,OAAO,MAAQ;AAGd,IAFA,QAAQ,MAAM,yBAAyB,EAAI,EAC3C,EAAc,QAAQ,eACtB,iBAAiB;AACf,OAAc,QAAQ;OACrB,IAAK;KACR;;yBAMN,EAqBM,OAAA,MAAA,CApBO,EAAA,kBAAA,GAAA,EAAX,EAkBM,OAAA;;GAlBsB,OAAK,EAAEA,EAAAA,OAAO,WAAU;;GAClD,EAA0D,OAAA,EAApD,OAAK,EAAEA,EAAAA,OAAO,SAAQ,EAAA,EAAE,0BAAsB,EAAA;GACpD,EAWM,OAAA,EAXA,OAAK,EAAEA,EAAAA,OAAO,WAAU,EAAA,EAAA,CAC5B,EAAkF,OAAA;IAA5E,OAAK,EAAEA,EAAAA,OAAO,WAAU;IAAG,OAAO,EAAA;QAAmB,EAAA,eAAc,EAAA,IAAA,EAAA,EACzE,EAQY,EAAA,EAAA,EAAA;IARA,eAAa;IAAK,UAAS;;IAO1B,SAAO,QAA6C,CAAA,EAAA,EAAzC,EAAA,QAAgB,EAAA,QAAa,OAAA,EAAA,EAAA,CAAA,CAAA;qBADjD,CALF,EAKE,EAAA,EAAA,EAAA;KAJC,OAAK,EAAEA,EAAAA,OAAO,SAAQ;KACvB,OAAM;KACL,MAAM,EAAA;KACN,SAAO;;;;GAKH,EAAA,SAAA,GAAA,EAAX,EAGM,OAAA;;IAHa,OAAK,EAAEA,EAAAA,OAAO,MAAK;gBACpC,EAA2B,QAAA,MAArB,kBAAc,GAAA,EACpB,EAAwB,QAAA,MAAA,EAAf,EAAA,MAAK,EAAA,EAAA,CAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA;sBAGlB,EAA2E,OAAA,EAArE,OAAK,EAAEA,EAAAA,OAAO,KAAI,EAAA,EAAE,+CAA2C,EAAA,CAAA,CAAA"}
@@ -1,17 +1,16 @@
1
- import { ref as r, onMounted as u, onUpdated as c, nextTick as i } from "vue";
2
- function a(n) {
3
- const e = r(), t = ".pl-block-page__title__append", o = () => {
4
- i(() => {
5
- if (!n.value) {
6
- e.value = void 0;
7
- return;
8
- }
9
- e.value = document.querySelector(t) ? t : void 0, e.value || console.error("[Monetization] use #title slot to place monetization button");
10
- });
11
- };
12
- return u(o), c(o), e;
1
+ import { nextTick as e, onMounted as t, onUpdated as n, ref as r } from "vue";
2
+ function i(i) {
3
+ let a = r(), o = ".pl-block-page__title__append", s = () => {
4
+ e(() => {
5
+ if (!i.value) {
6
+ a.value = void 0;
7
+ return;
8
+ }
9
+ a.value = document.querySelector(o) ? o : void 0, a.value || console.error("[Monetization] use #title slot to place monetization button");
10
+ });
11
+ };
12
+ return t(s), n(s), a;
13
13
  }
14
- export {
15
- a as useButtonTarget
16
- };
17
- //# sourceMappingURL=useButtonTarget.js.map
14
+ export { i as useButtonTarget };
15
+
16
+ //# sourceMappingURL=useButtonTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useButtonTarget.js","sources":["../../../src/plugins/Monetization/useButtonTarget.ts"],"sourcesContent":["import type { Ref } from \"vue\";\nimport { ref, nextTick, onMounted, onUpdated } from \"vue\";\n\nexport function useButtonTarget(hasMonetization: Ref<boolean>) {\n const target = ref<string>();\n\n const selector = \".pl-block-page__title__append\";\n\n const check = () => {\n nextTick(() => {\n if (!hasMonetization.value) {\n target.value = undefined;\n return;\n }\n\n target.value = document.querySelector(selector) ? selector : undefined;\n if (!target.value) {\n console.error(`[Monetization] use #title slot to place monetization button`);\n }\n });\n };\n\n onMounted(check);\n onUpdated(check);\n\n return target;\n}\n"],"names":["useButtonTarget","hasMonetization","target","ref","selector","check","nextTick","onMounted","onUpdated"],"mappings":";AAGO,SAASA,EAAgBC,GAA+B;AAC7D,QAAMC,IAASC,EAAA,GAETC,IAAW,iCAEXC,IAAQ,MAAM;AAClB,IAAAC,EAAS,MAAM;AACb,UAAI,CAACL,EAAgB,OAAO;AAC1B,QAAAC,EAAO,QAAQ;AACf;AAAA,MACF;AAEA,MAAAA,EAAO,QAAQ,SAAS,cAAcE,CAAQ,IAAIA,IAAW,QACxDF,EAAO,SACV,QAAQ,MAAM,6DAA6D;AAAA,IAE/E,CAAC;AAAA,EACH;AAEA,SAAAK,EAAUF,CAAK,GACfG,EAAUH,CAAK,GAERH;AACT;"}
1
+ {"version":3,"file":"useButtonTarget.js","names":[],"sources":["../../../src/plugins/Monetization/useButtonTarget.ts"],"sourcesContent":["import type { Ref } from \"vue\";\nimport { ref, nextTick, onMounted, onUpdated } from \"vue\";\n\nexport function useButtonTarget(hasMonetization: Ref<boolean>) {\n const target = ref<string>();\n\n const selector = \".pl-block-page__title__append\";\n\n const check = () => {\n nextTick(() => {\n if (!hasMonetization.value) {\n target.value = undefined;\n return;\n }\n\n target.value = document.querySelector(selector) ? selector : undefined;\n if (!target.value) {\n console.error(`[Monetization] use #title slot to place monetization button`);\n }\n });\n };\n\n onMounted(check);\n onUpdated(check);\n\n return target;\n}\n"],"mappings":";AAGA,SAAgB,EAAgB,GAA+B;CAC7D,IAAM,IAAS,GAAa,EAEtB,IAAW,iCAEX,UAAc;AAClB,UAAe;AACb,OAAI,CAAC,EAAgB,OAAO;AAC1B,MAAO,QAAQ,KAAA;AACf;;AAIF,GADA,EAAO,QAAQ,SAAS,cAAc,EAAS,GAAG,IAAW,KAAA,GACxD,EAAO,SACV,QAAQ,MAAM,8DAA8D;IAE9E;;AAMJ,QAHA,EAAU,EAAM,EAChB,EAAU,EAAM,EAET"}
@@ -1,72 +1,37 @@
1
- import { computed as t, ref as l, watch as _ } from "vue";
2
- import { useSdkPlugin as S } from "../../defineApp.js";
3
- import { Response as h } from "./validation.js";
4
- import { useIntervalFn as k } from "@vueuse/core";
5
- function M() {
6
- const v = S(), c = t(() => v.loaded ? v.useApp() : void 0), z = (e) => e ? "data" in e ? e.data : "args" in e ? e.args : {} : {}, s = t(() => {
7
- var e;
8
- return z((e = c.value) == null ? void 0 : e.model);
9
- }), r = t(() => s.value && "__mnzDate" in s.value), f = t(() => {
10
- var e;
11
- return h.safeParse((e = c.value) == null ? void 0 : e.model.outputs.__mnzInfo);
12
- }), m = t(() => {
13
- var e;
14
- return (e = f.value) == null ? void 0 : e.data;
15
- }), I = t(() => {
16
- var e, n, g;
17
- return ((e = f.value) == null ? void 0 : e.error) ?? ((g = (n = o.value) == null ? void 0 : n.response) == null ? void 0 : g.error);
18
- }), o = l(void 0), u = l(!1), i = l(0);
19
- _(
20
- [m],
21
- ([e]) => {
22
- if (e) {
23
- o.value = e;
24
- const n = ++i.value;
25
- setTimeout(() => {
26
- i.value === n && (u.value = !1);
27
- }, 1e3);
28
- }
29
- },
30
- { immediate: !0 }
31
- );
32
- const a = t(() => {
33
- var e, n;
34
- return (n = (e = o.value) == null ? void 0 : e.response) == null ? void 0 : n.result;
35
- }), d = t(() => {
36
- var e;
37
- return !!((e = a.value) != null && e.canRun);
38
- }), D = t(() => {
39
- var e;
40
- return m.value ? (e = a.value) == null ? void 0 : e.status : "";
41
- }), O = t(() => {
42
- var e;
43
- return (e = a.value) == null ? void 0 : e.customerEmail;
44
- }), P = t(() => {
45
- var e;
46
- return (e = a.value) == null ? void 0 : e.mnz.endOfBillingPeriod;
47
- }), R = t(() => {
48
- var e;
49
- return (e = a.value) == null ? void 0 : e.mnz.limits;
50
- }), p = () => {
51
- u.value = !0, s.value.__mnzDate = (/* @__PURE__ */ new Date()).toISOString();
52
- };
53
- return _(d, (e) => {
54
- r.value && (s.value.__mnzCanRun = e);
55
- }), r.value && k(p, 6e4), {
56
- hasMonetization: r,
57
- result: a,
58
- error: I,
59
- canRun: d,
60
- status: D,
61
- customerEmail: O,
62
- endOfBillingPeriod: P,
63
- limits: R,
64
- refresh: p,
65
- version: i,
66
- isLoading: u
67
- };
1
+ import { useSdkPlugin as e } from "../../defineApp.js";
2
+ import { Response as t } from "./validation.js";
3
+ import { computed as n, ref as r, watch as i } from "vue";
4
+ import { useIntervalFn as a } from "@vueuse/core";
5
+ function o() {
6
+ let o = e(), s = n(() => o.loaded ? o.useApp() : void 0), c = (e) => e ? "data" in e ? e.data : "args" in e ? e.args : {} : {}, l = n(() => c(s.value?.model)), u = n(() => l.value && "__mnzDate" in l.value), d = n(() => t.safeParse(s.value?.model.outputs.__mnzInfo)), f = n(() => d.value?.data), p = n(() => d.value?.error ?? m.value?.response?.error), m = r(void 0), h = r(!1), g = r(0);
7
+ i([f], ([e]) => {
8
+ if (e) {
9
+ m.value = e;
10
+ let t = ++g.value;
11
+ setTimeout(() => {
12
+ g.value === t && (h.value = !1);
13
+ }, 1e3);
14
+ }
15
+ }, { immediate: !0 });
16
+ let _ = n(() => m.value?.response?.result), v = n(() => !!_.value?.canRun), y = n(() => f.value ? _.value?.status : ""), b = n(() => _.value?.customerEmail), x = n(() => _.value?.mnz.endOfBillingPeriod), S = n(() => _.value?.mnz.limits), C = () => {
17
+ h.value = !0, l.value.__mnzDate = (/* @__PURE__ */ new Date()).toISOString();
18
+ };
19
+ return i(v, (e) => {
20
+ u.value && (l.value.__mnzCanRun = e);
21
+ }), u.value && a(C, 6e4), {
22
+ hasMonetization: u,
23
+ result: _,
24
+ error: p,
25
+ canRun: v,
26
+ status: y,
27
+ customerEmail: b,
28
+ endOfBillingPeriod: x,
29
+ limits: S,
30
+ refresh: C,
31
+ version: g,
32
+ isLoading: h
33
+ };
68
34
  }
69
- export {
70
- M as useInfo
71
- };
72
- //# sourceMappingURL=useInfo.js.map
35
+ export { o as useInfo };
36
+
37
+ //# sourceMappingURL=useInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInfo.js","sources":["../../../src/plugins/Monetization/useInfo.ts"],"sourcesContent":["import { computed, watch, ref } from \"vue\";\nimport { useSdkPlugin } from \"../../defineApp\";\nimport { Response } from \"./validation\";\nimport { useIntervalFn } from \"@vueuse/core\";\n\nexport function useInfo() {\n const sdk = useSdkPlugin();\n\n const app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\n // TODO use a separate plugin state when it's implemented\n const getModelArgsOrState = (model: Record<string, unknown> | undefined) => {\n if (!model) return {};\n if (\"data\" in model) {\n return model.data as Record<string, unknown>;\n } else if (\"args\" in model) {\n return model.args as Record<string, unknown>;\n }\n return {};\n };\n\n const inputData = computed(() => getModelArgsOrState(app.value?.model));\n\n const hasMonetization = computed(() => {\n return inputData.value && \"__mnzDate\" in inputData.value;\n });\n\n const parsed = computed(() => Response.safeParse(app.value?.model.outputs[\"__mnzInfo\"]));\n\n const currentInfo = computed<Response | undefined>(() => parsed.value?.data);\n\n const error = computed(() => parsed.value?.error ?? info.value?.response?.error);\n\n const info = ref<Response | undefined>(undefined);\n\n const isLoading = ref(false);\n\n const version = ref(0);\n\n watch(\n [currentInfo],\n ([i]) => {\n if (i) {\n info.value = i;\n const v = ++version.value;\n setTimeout(() => {\n if (version.value === v) {\n isLoading.value = false;\n }\n }, 1000);\n }\n },\n { immediate: true },\n );\n\n const result = computed(() => info.value?.response?.result);\n\n const canRun = computed(() => !!result.value?.canRun);\n\n const status = computed(() => (currentInfo.value ? result.value?.status : \"\"));\n\n const customerEmail = computed(() => result.value?.customerEmail);\n\n const endOfBillingPeriod = computed(() => result.value?.mnz.endOfBillingPeriod);\n\n const limits = computed(() => result.value?.mnz.limits);\n\n const refresh = () => {\n isLoading.value = true;\n inputData.value[\"__mnzDate\"] = new Date().toISOString();\n };\n\n watch(canRun, (v) => {\n if (hasMonetization.value) {\n (inputData.value as Record<string, unknown>)[\"__mnzCanRun\"] = v;\n }\n });\n\n if (hasMonetization.value) {\n useIntervalFn(refresh, 60_000); // 1 minute\n }\n\n return {\n hasMonetization,\n result,\n error,\n canRun,\n status,\n customerEmail,\n endOfBillingPeriod,\n limits,\n refresh,\n version,\n isLoading,\n };\n}\n"],"names":["useInfo","sdk","useSdkPlugin","app","computed","getModelArgsOrState","model","inputData","_a","hasMonetization","parsed","Response","currentInfo","error","_c","_b","info","ref","isLoading","version","watch","i","v","result","canRun","status","customerEmail","endOfBillingPeriod","limits","refresh","useIntervalFn"],"mappings":";;;;AAKO,SAASA,IAAU;AACxB,QAAMC,IAAMC,EAAA,GAENC,IAAMC,EAAS,MAAOH,EAAI,SAASA,EAAI,OAAA,IAAW,MAAU,GAG5DI,IAAsB,CAACC,MACtBA,IACD,UAAUA,IACLA,EAAM,OACJ,UAAUA,IACZA,EAAM,OAER,CAAA,IANY,CAAA,GASfC,IAAYH,EAAS,MAAA;;AAAM,WAAAC,GAAoBG,IAAAL,EAAI,UAAJ,gBAAAK,EAAW,KAAK;AAAA,GAAC,GAEhEC,IAAkBL,EAAS,MACxBG,EAAU,SAAS,eAAeA,EAAU,KACpD,GAEKG,IAASN,EAAS,MAAA;;AAAM,WAAAO,EAAS,WAAUH,IAAAL,EAAI,UAAJ,gBAAAK,EAAW,MAAM,QAAQ,SAAY;AAAA,GAAC,GAEjFI,IAAcR,EAA+B,MAAA;;AAAM,YAAAI,IAAAE,EAAO,UAAP,gBAAAF,EAAc;AAAA,GAAI,GAErEK,IAAQT,EAAS,MAAA;;AAAM,aAAAI,IAAAE,EAAO,UAAP,gBAAAF,EAAc,YAASM,KAAAC,IAAAC,EAAK,UAAL,gBAAAD,EAAY,aAAZ,gBAAAD,EAAsB;AAAA,GAAK,GAEzEE,IAAOC,EAA0B,MAAS,GAE1CC,IAAYD,EAAI,EAAK,GAErBE,IAAUF,EAAI,CAAC;AAErB,EAAAG;AAAA,IACE,CAACR,CAAW;AAAA,IACZ,CAAC,CAACS,CAAC,MAAM;AACP,UAAIA,GAAG;AACL,QAAAL,EAAK,QAAQK;AACb,cAAMC,IAAI,EAAEH,EAAQ;AACpB,mBAAW,MAAM;AACf,UAAIA,EAAQ,UAAUG,MACpBJ,EAAU,QAAQ;AAAA,QAEtB,GAAG,GAAI;AAAA,MACT;AAAA,IACF;AAAA,IACA,EAAE,WAAW,GAAA;AAAA,EAAK;AAGpB,QAAMK,IAASnB,EAAS,MAAA;;AAAM,YAAAW,KAAAP,IAAAQ,EAAK,UAAL,gBAAAR,EAAY,aAAZ,gBAAAO,EAAsB;AAAA,GAAM,GAEpDS,IAASpB,EAAS,MAAA;;AAAM,YAAC,GAACI,IAAAe,EAAO,UAAP,QAAAf,EAAc;AAAA,GAAM,GAE9CiB,IAASrB,EAAS;;AAAO,WAAAQ,EAAY,SAAQJ,IAAAe,EAAO,UAAP,gBAAAf,EAAc,SAAS;AAAA,GAAG,GAEvEkB,IAAgBtB,EAAS,MAAA;;AAAM,YAAAI,IAAAe,EAAO,UAAP,gBAAAf,EAAc;AAAA,GAAa,GAE1DmB,IAAqBvB,EAAS,MAAA;;AAAM,YAAAI,IAAAe,EAAO,UAAP,gBAAAf,EAAc,IAAI;AAAA,GAAkB,GAExEoB,IAASxB,EAAS,MAAA;;AAAM,YAAAI,IAAAe,EAAO,UAAP,gBAAAf,EAAc,IAAI;AAAA,GAAM,GAEhDqB,IAAU,MAAM;AACpB,IAAAX,EAAU,QAAQ,IAClBX,EAAU,MAAM,aAAe,oBAAI,KAAA,GAAO,YAAA;AAAA,EAC5C;AAEA,SAAAa,EAAMI,GAAQ,CAACF,MAAM;AACnB,IAAIb,EAAgB,UACjBF,EAAU,MAAkC,cAAiBe;AAAA,EAElE,CAAC,GAEGb,EAAgB,SAClBqB,EAAcD,GAAS,GAAM,GAGxB;AAAA,IACL,iBAAApB;AAAA,IACA,QAAAc;AAAA,IACA,OAAAV;AAAA,IACA,QAAAW;AAAA,IACA,QAAAC;AAAA,IACA,eAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAV;AAAA,IACA,WAAAD;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useInfo.js","names":[],"sources":["../../../src/plugins/Monetization/useInfo.ts"],"sourcesContent":["import { computed, watch, ref } from \"vue\";\nimport { useSdkPlugin } from \"../../defineApp\";\nimport { Response } from \"./validation\";\nimport { useIntervalFn } from \"@vueuse/core\";\n\nexport function useInfo() {\n const sdk = useSdkPlugin();\n\n const app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\n // TODO use a separate plugin state when it's implemented\n const getModelArgsOrState = (model: Record<string, unknown> | undefined) => {\n if (!model) return {};\n if (\"data\" in model) {\n return model.data as Record<string, unknown>;\n } else if (\"args\" in model) {\n return model.args as Record<string, unknown>;\n }\n return {};\n };\n\n const inputData = computed(() => getModelArgsOrState(app.value?.model));\n\n const hasMonetization = computed(() => {\n return inputData.value && \"__mnzDate\" in inputData.value;\n });\n\n const parsed = computed(() => Response.safeParse(app.value?.model.outputs[\"__mnzInfo\"]));\n\n const currentInfo = computed<Response | undefined>(() => parsed.value?.data);\n\n const error = computed(() => parsed.value?.error ?? info.value?.response?.error);\n\n const info = ref<Response | undefined>(undefined);\n\n const isLoading = ref(false);\n\n const version = ref(0);\n\n watch(\n [currentInfo],\n ([i]) => {\n if (i) {\n info.value = i;\n const v = ++version.value;\n setTimeout(() => {\n if (version.value === v) {\n isLoading.value = false;\n }\n }, 1000);\n }\n },\n { immediate: true },\n );\n\n const result = computed(() => info.value?.response?.result);\n\n const canRun = computed(() => !!result.value?.canRun);\n\n const status = computed(() => (currentInfo.value ? result.value?.status : \"\"));\n\n const customerEmail = computed(() => result.value?.customerEmail);\n\n const endOfBillingPeriod = computed(() => result.value?.mnz.endOfBillingPeriod);\n\n const limits = computed(() => result.value?.mnz.limits);\n\n const refresh = () => {\n isLoading.value = true;\n inputData.value[\"__mnzDate\"] = new Date().toISOString();\n };\n\n watch(canRun, (v) => {\n if (hasMonetization.value) {\n (inputData.value as Record<string, unknown>)[\"__mnzCanRun\"] = v;\n }\n });\n\n if (hasMonetization.value) {\n useIntervalFn(refresh, 60_000); // 1 minute\n }\n\n return {\n hasMonetization,\n result,\n error,\n canRun,\n status,\n customerEmail,\n endOfBillingPeriod,\n limits,\n refresh,\n version,\n isLoading,\n };\n}\n"],"mappings":";;;;AAKA,SAAgB,IAAU;CACxB,IAAM,IAAM,GAAc,EAEpB,IAAM,QAAgB,EAAI,SAAS,EAAI,QAAQ,GAAG,KAAA,EAAW,EAG7D,KAAuB,MACtB,IACD,UAAU,IACL,EAAM,OACJ,UAAU,IACZ,EAAM,OAER,EAAE,GANU,EAAE,EASjB,IAAY,QAAe,EAAoB,EAAI,OAAO,MAAM,CAAC,EAEjE,IAAkB,QACf,EAAU,SAAS,eAAe,EAAU,MACnD,EAEI,IAAS,QAAe,EAAS,UAAU,EAAI,OAAO,MAAM,QAAQ,UAAa,CAAC,EAElF,IAAc,QAAqC,EAAO,OAAO,KAAK,EAEtE,IAAQ,QAAe,EAAO,OAAO,SAAS,EAAK,OAAO,UAAU,MAAM,EAE1E,IAAO,EAA0B,KAAA,EAAU,EAE3C,IAAY,EAAI,GAAM,EAEtB,IAAU,EAAI,EAAE;AAEtB,GACE,CAAC,EAAY,GACZ,CAAC,OAAO;AACP,MAAI,GAAG;AACL,KAAK,QAAQ;GACb,IAAM,IAAI,EAAE,EAAQ;AACpB,oBAAiB;AACf,IAAI,EAAQ,UAAU,MACpB,EAAU,QAAQ;MAEnB,IAAK;;IAGZ,EAAE,WAAW,IAAM,CACpB;CAED,IAAM,IAAS,QAAe,EAAK,OAAO,UAAU,OAAO,EAErD,IAAS,QAAe,CAAC,CAAC,EAAO,OAAO,OAAO,EAE/C,IAAS,QAAgB,EAAY,QAAQ,EAAO,OAAO,SAAS,GAAI,EAExE,IAAgB,QAAe,EAAO,OAAO,cAAc,EAE3D,IAAqB,QAAe,EAAO,OAAO,IAAI,mBAAmB,EAEzE,IAAS,QAAe,EAAO,OAAO,IAAI,OAAO,EAEjD,UAAgB;AAEpB,EADA,EAAU,QAAQ,IAClB,EAAU,MAAM,6BAAe,IAAI,MAAM,EAAC,aAAa;;AAazD,QAVA,EAAM,IAAS,MAAM;AACnB,EAAI,EAAgB,UACjB,EAAU,MAAkC,cAAiB;GAEhE,EAEE,EAAgB,SAClB,EAAc,GAAS,IAAO,EAGzB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
@@ -1,43 +1,35 @@
1
- import { z as t } from "zod";
2
- const n = t.literal("trial"), o = t.literal("free"), e = t.literal("single_payment"), i = t.literal("subscription"), l = t.union([
3
- n,
4
- o,
5
- e,
6
- i,
7
- t.literal("base")
8
- // outdated
9
- ]), a = t.object({
10
- type: t.union([t.literal("unique_launches"), t.literal("volume_limit")]),
11
- used: t.number(),
12
- toSpend: t.number(),
13
- available: t.number().nullable()
14
- // null if unlimited
15
- }), r = t.object(
16
- {
17
- productKey: t.string(),
18
- productName: t.string().default("Unknown product"),
19
- customerEmail: t.string().optional(),
20
- canRun: t.boolean(),
21
- status: t.string(),
22
- // 'select-tariff', 'active', 'payment_required', 'limits_exceeded', 'inactive', 'unknown',
23
- mnz: t.object({
24
- type: l.optional(),
25
- endOfBillingPeriod: t.string().nullable().optional(),
26
- limits: t.array(a).optional()
27
- })
28
- },
29
- { message: "Invalid DryRunResult" }
30
- ), u = t.object({
31
- httpError: t.string().optional(),
32
- response: t.object({
33
- result: r.optional(),
34
- error: t.unknown().optional()
35
- }).optional()
1
+ import { z as e } from "zod";
2
+ var t = e.literal("trial"), n = e.literal("free"), r = e.literal("single_payment"), i = e.literal("subscription"), a = e.union([
3
+ t,
4
+ n,
5
+ r,
6
+ i,
7
+ e.literal("base")
8
+ ]);
9
+ const o = e.object({
10
+ type: e.union([e.literal("unique_launches"), e.literal("volume_limit")]),
11
+ used: e.number(),
12
+ toSpend: e.number(),
13
+ available: e.number().nullable()
14
+ });
15
+ var s = e.object({
16
+ productKey: e.string(),
17
+ productName: e.string().default("Unknown product"),
18
+ customerEmail: e.string().optional(),
19
+ canRun: e.boolean(),
20
+ status: e.string(),
21
+ mnz: e.object({
22
+ type: a.optional(),
23
+ endOfBillingPeriod: e.string().nullable().optional(),
24
+ limits: e.array(o).optional()
25
+ })
26
+ }, { message: "Invalid DryRunResult" }), c = e.object({
27
+ httpError: e.string().optional(),
28
+ response: e.object({
29
+ result: s.optional(),
30
+ error: e.unknown().optional()
31
+ }).optional()
36
32
  }).optional();
37
- export {
38
- r as DryRunResult,
39
- a as Limit,
40
- l as MonetizationType,
41
- u as Response
42
- };
43
- //# sourceMappingURL=validation.js.map
33
+ export { c as Response };
34
+
35
+ //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sources":["../../../src/plugins/Monetization/validation.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst MonetizationTrial = z.literal(\"trial\");\nconst MonetizationFree = z.literal(\"free\");\nconst MonetizationSinglePayment = z.literal(\"single_payment\");\nconst MonetizationSubscription = z.literal(\"subscription\");\n\nconst MonetizationType = z.union([\n MonetizationTrial,\n MonetizationFree,\n MonetizationSinglePayment,\n MonetizationSubscription,\n z.literal(\"base\"), // outdated\n]);\n\nexport const Limit = z.object({\n type: z.union([z.literal(\"unique_launches\"), z.literal(\"volume_limit\")]),\n used: z.number(),\n toSpend: z.number(),\n available: z.number().nullable(), // null if unlimited\n});\n\nconst DryRunResult = z.object(\n {\n productKey: z.string(),\n productName: z.string().default(\"Unknown product\"),\n customerEmail: z.string().optional(),\n canRun: z.boolean(),\n status: z.string(), // 'select-tariff', 'active', 'payment_required', 'limits_exceeded', 'inactive', 'unknown',\n mnz: z.object({\n type: MonetizationType.optional(),\n endOfBillingPeriod: z.string().nullable().optional(),\n limits: z.array(Limit).optional(),\n }),\n },\n { message: \"Invalid DryRunResult\" },\n);\n\ntype DryRunResult = z.infer<typeof DryRunResult>;\n\nconst Response = z\n .object({\n httpError: z.string().optional(),\n response: z\n .object({\n result: DryRunResult.optional(),\n error: z.unknown().optional(),\n })\n .optional(),\n })\n .optional();\n\ntype Response = z.infer<typeof Response>;\n\nexport { MonetizationType, DryRunResult, Response };\n"],"names":["MonetizationTrial","z","MonetizationFree","MonetizationSinglePayment","MonetizationSubscription","MonetizationType","Limit","DryRunResult","Response"],"mappings":";AAEA,MAAMA,IAAoBC,EAAE,QAAQ,OAAO,GACrCC,IAAmBD,EAAE,QAAQ,MAAM,GACnCE,IAA4BF,EAAE,QAAQ,gBAAgB,GACtDG,IAA2BH,EAAE,QAAQ,cAAc,GAEnDI,IAAmBJ,EAAE,MAAM;AAAA,EAC/BD;AAAA,EACAE;AAAA,EACAC;AAAA,EACAC;AAAA,EACAH,EAAE,QAAQ,MAAM;AAAA;AAClB,CAAC,GAEYK,IAAQL,EAAE,OAAO;AAAA,EAC5B,MAAMA,EAAE,MAAM,CAACA,EAAE,QAAQ,iBAAiB,GAAGA,EAAE,QAAQ,cAAc,CAAC,CAAC;AAAA,EACvE,MAAMA,EAAE,OAAA;AAAA,EACR,SAASA,EAAE,OAAA;AAAA,EACX,WAAWA,EAAE,OAAA,EAAS,SAAA;AAAA;AACxB,CAAC,GAEKM,IAAeN,EAAE;AAAA,EACrB;AAAA,IACE,YAAYA,EAAE,OAAA;AAAA,IACd,aAAaA,EAAE,SAAS,QAAQ,iBAAiB;AAAA,IACjD,eAAeA,EAAE,OAAA,EAAS,SAAA;AAAA,IAC1B,QAAQA,EAAE,QAAA;AAAA,IACV,QAAQA,EAAE,OAAA;AAAA;AAAA,IACV,KAAKA,EAAE,OAAO;AAAA,MACZ,MAAMI,EAAiB,SAAA;AAAA,MACvB,oBAAoBJ,EAAE,OAAA,EAAS,SAAA,EAAW,SAAA;AAAA,MAC1C,QAAQA,EAAE,MAAMK,CAAK,EAAE,SAAA;AAAA,IAAS,CACjC;AAAA,EAAA;AAAA,EAEH,EAAE,SAAS,uBAAA;AACb,GAIME,IAAWP,EACd,OAAO;AAAA,EACN,WAAWA,EAAE,OAAA,EAAS,SAAA;AAAA,EACtB,UAAUA,EACP,OAAO;AAAA,IACN,QAAQM,EAAa,SAAA;AAAA,IACrB,OAAON,EAAE,QAAA,EAAU,SAAA;AAAA,EAAS,CAC7B,EACA,SAAA;AACL,CAAC,EACA,SAAA;"}
1
+ {"version":3,"file":"validation.js","names":[],"sources":["../../../src/plugins/Monetization/validation.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst MonetizationTrial = z.literal(\"trial\");\nconst MonetizationFree = z.literal(\"free\");\nconst MonetizationSinglePayment = z.literal(\"single_payment\");\nconst MonetizationSubscription = z.literal(\"subscription\");\n\nconst MonetizationType = z.union([\n MonetizationTrial,\n MonetizationFree,\n MonetizationSinglePayment,\n MonetizationSubscription,\n z.literal(\"base\"), // outdated\n]);\n\nexport const Limit = z.object({\n type: z.union([z.literal(\"unique_launches\"), z.literal(\"volume_limit\")]),\n used: z.number(),\n toSpend: z.number(),\n available: z.number().nullable(), // null if unlimited\n});\n\nconst DryRunResult = z.object(\n {\n productKey: z.string(),\n productName: z.string().default(\"Unknown product\"),\n customerEmail: z.string().optional(),\n canRun: z.boolean(),\n status: z.string(), // 'select-tariff', 'active', 'payment_required', 'limits_exceeded', 'inactive', 'unknown',\n mnz: z.object({\n type: MonetizationType.optional(),\n endOfBillingPeriod: z.string().nullable().optional(),\n limits: z.array(Limit).optional(),\n }),\n },\n { message: \"Invalid DryRunResult\" },\n);\n\ntype DryRunResult = z.infer<typeof DryRunResult>;\n\nconst Response = z\n .object({\n httpError: z.string().optional(),\n response: z\n .object({\n result: DryRunResult.optional(),\n error: z.unknown().optional(),\n })\n .optional(),\n })\n .optional();\n\ntype Response = z.infer<typeof Response>;\n\nexport { MonetizationType, DryRunResult, Response };\n"],"mappings":";AAEA,IAAM,IAAoB,EAAE,QAAQ,QAAQ,EACtC,IAAmB,EAAE,QAAQ,OAAO,EACpC,IAA4B,EAAE,QAAQ,iBAAiB,EACvD,IAA2B,EAAE,QAAQ,eAAe,EAEpD,IAAmB,EAAE,MAAM;CAC/B;CACA;CACA;CACA;CACA,EAAE,QAAQ,OAAO;CAClB,CAAC;AAEF,MAAa,IAAQ,EAAE,OAAO;CAC5B,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,kBAAkB,EAAE,EAAE,QAAQ,eAAe,CAAC,CAAC;CACxE,MAAM,EAAE,QAAQ;CAChB,SAAS,EAAE,QAAQ;CACnB,WAAW,EAAE,QAAQ,CAAC,UAAU;CACjC,CAAC;AAEF,IAAM,IAAe,EAAE,OACrB;CACE,YAAY,EAAE,QAAQ;CACtB,aAAa,EAAE,QAAQ,CAAC,QAAQ,kBAAkB;CAClD,eAAe,EAAE,QAAQ,CAAC,UAAU;CACpC,QAAQ,EAAE,SAAS;CACnB,QAAQ,EAAE,QAAQ;CAClB,KAAK,EAAE,OAAO;EACZ,MAAM,EAAiB,UAAU;EACjC,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;EACpD,QAAQ,EAAE,MAAM,EAAM,CAAC,UAAU;EAClC,CAAC;CACH,EACD,EAAE,SAAS,wBAAwB,CACpC,EAIK,IAAW,EACd,OAAO;CACN,WAAW,EAAE,QAAQ,CAAC,UAAU;CAChC,UAAU,EACP,OAAO;EACN,QAAQ,EAAa,UAAU;EAC/B,OAAO,EAAE,SAAS,CAAC,UAAU;EAC9B,CAAC,CACD,UAAU;CACd,CAAC,CACD,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,aAAa,SAAU,IAAI,MAAM,EAAE,6BAO/C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,IAAI,MAAM,EAAE,QAAQ,IAAI,KACW,UAAU,CAAC,IAAI,CACzF,CAAC"}
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../src/urls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,MAAM,EAAE,6BAO/C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,IAAI,SAAS,IAAI,MAAM,EAAE,EAAE,MAAM,IAAI,KACW,UAAU,CAAC,IAAI,CACzF,CAAC"}
package/dist/urls.js CHANGED
@@ -1,5 +1,4 @@
1
- const e = (r) => Object.fromEntries(new URL(r, "http://dummy").searchParams);
2
- export {
3
- e as parseQuery
4
- };
5
- //# sourceMappingURL=urls.js.map
1
+ const e = (e) => Object.fromEntries(new URL(e, "http://dummy").searchParams);
2
+ export { e as parseQuery };
3
+
4
+ //# sourceMappingURL=urls.js.map
package/dist/urls.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"urls.js","sources":["../src/urls.ts"],"sourcesContent":["import type { ParseQuery } from \"./types\";\n\nexport const parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, \"http://dummy\").pathname as `/${string}`;\n } catch {\n console.error(\"Invalid href\", href);\n return undefined;\n }\n};\n\nexport const parseQuery = <Href extends `/${string}`>(href: Href) => {\n return Object.fromEntries(new URL(href, \"http://dummy\").searchParams) as ParseQuery<Href>;\n};\n"],"names":["parseQuery","href"],"mappings":"AAWO,MAAMA,IAAa,CAA4BC,MAC7C,OAAO,YAAY,IAAI,IAAIA,GAAM,cAAc,EAAE,YAAY;"}
1
+ {"version":3,"file":"urls.js","names":[],"sources":["../src/urls.ts"],"sourcesContent":["import type { ParseQuery } from \"./types\";\n\nexport const parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, \"http://dummy\").pathname as `/${string}`;\n } catch {\n console.error(\"Invalid href\", href);\n return undefined;\n }\n};\n\nexport const parseQuery = <Href extends `/${string}`>(href: Href) => {\n return Object.fromEntries(new URL(href, \"http://dummy\").searchParams) as ParseQuery<Href>;\n};\n"],"mappings":"AAWA,MAAa,KAAyC,MAC7C,OAAO,YAAY,IAAI,IAAI,GAAM,eAAe,CAAC,aAAa"}
package/dist/usePlugin.js CHANGED
@@ -1,14 +1,34 @@
1
+ import { pluginDataKey as e } from "./defineApp.js";
1
2
  import { inject as t } from "vue";
2
- import { pluginDataKey as i } from "./defineApp.js";
3
- function s(r) {
4
- const e = t(i);
5
- if (!e)
6
- throw new Error(
7
- "usePlugin requires a V3 block (BlockModelV3). Make sure the block uses apiVersion 3 and the plugin is installed."
8
- );
9
- return e.getOrCreatePluginState(r);
3
+ /**
4
+ * Composable for accessing a plugin's reactive model: data, outputs, and outputErrors.
5
+ *
6
+ * Mirrors the `app.model` access pattern — `plugin.model.data` is reactive and deep-watched,
7
+ * mutations are automatically queued and sent to storage.
8
+ *
9
+ * @param handle - Opaque plugin handle obtained from `app.plugins`.
10
+ * @typeParam F - The plugin factory type (inferred from the handle)
11
+ *
12
+ * @example
13
+ * ```vue
14
+ * <script setup lang="ts">
15
+ * import { usePlugin, type InferPluginHandle } from '@platforma-sdk/ui-vue';
16
+ * import type { CounterPlugin } from './plugins/counter';
17
+ *
18
+ * const props = defineProps<{ instance: InferPluginHandle<CounterPlugin> }>();
19
+ * const plugin = usePlugin(props.instance);
20
+ *
21
+ * plugin.model.data.count += 1; // reactive, triggers storage update
22
+ * plugin.model.outputs.displayText // computed, plugin's own outputs only
23
+ * plugin.model.outputErrors.displayText // Error | undefined
24
+ * <\/script>
25
+ * ```
26
+ */
27
+ function n(n) {
28
+ let r = t(e);
29
+ if (!r) throw Error("usePlugin requires a V3 block (BlockModelV3). Make sure the block uses apiVersion 3 and the plugin is installed.");
30
+ return r.getOrCreatePluginState(n);
10
31
  }
11
- export {
12
- s as usePlugin
13
- };
14
- //# sourceMappingURL=usePlugin.js.map
32
+ export { n as usePlugin };
33
+
34
+ //# sourceMappingURL=usePlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlugin.js","sources":["../src/usePlugin.ts"],"sourcesContent":["import { inject, type Reactive } from \"vue\";\nimport { pluginDataKey } from \"./defineApp\";\nimport type {\n PluginHandle,\n InferFactoryData,\n InferFactoryOutputs,\n PluginFactoryLike,\n} from \"@platforma-sdk/model\";\n\n/** Per-plugin reactive model exposed to consumers via usePlugin(). */\nexport interface PluginState<Data = unknown, Outputs = unknown> {\n readonly model: Reactive<{\n data: Data;\n outputs: Outputs extends Record<string, unknown>\n ? { [K in keyof Outputs]: Outputs[K] | undefined }\n : Record<string, unknown>;\n outputErrors: Outputs extends Record<string, unknown>\n ? { [K in keyof Outputs]?: Error }\n : Record<string, Error | undefined>;\n }>;\n}\n\n/** Internal interface for plugin access — provided via Vue injection to usePlugin(). */\nexport interface PluginAccess {\n getOrCreatePluginState<F extends PluginFactoryLike>(\n handle: PluginHandle<F>,\n ): PluginState<InferFactoryData<F>, InferFactoryOutputs<F>>;\n}\n\n/**\n * Composable for accessing a plugin's reactive model: data, outputs, and outputErrors.\n *\n * Mirrors the `app.model` access pattern — `plugin.model.data` is reactive and deep-watched,\n * mutations are automatically queued and sent to storage.\n *\n * @param handle - Opaque plugin handle obtained from `app.plugins`.\n * @typeParam F - The plugin factory type (inferred from the handle)\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { usePlugin, type InferPluginHandle } from '@platforma-sdk/ui-vue';\n * import type { CounterPlugin } from './plugins/counter';\n *\n * const props = defineProps<{ instance: InferPluginHandle<CounterPlugin> }>();\n * const plugin = usePlugin(props.instance);\n *\n * plugin.model.data.count += 1; // reactive, triggers storage update\n * plugin.model.outputs.displayText // computed, plugin's own outputs only\n * plugin.model.outputErrors.displayText // Error | undefined\n * </script>\n * ```\n */\nexport function usePlugin<F extends PluginFactoryLike>(handle: PluginHandle<F>) {\n const access = inject<PluginAccess>(pluginDataKey);\n\n if (!access) {\n throw new Error(\n \"usePlugin requires a V3 block (BlockModelV3). \" +\n \"Make sure the block uses apiVersion 3 and the plugin is installed.\",\n );\n }\n\n return access.getOrCreatePluginState<F>(handle);\n}\n"],"names":["usePlugin","handle","access","inject","pluginDataKey"],"mappings":";;AAqDO,SAASA,EAAuCC,GAAyB;AAC9E,QAAMC,IAASC,EAAqBC,CAAa;AAEjD,MAAI,CAACF;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAKJ,SAAOA,EAAO,uBAA0BD,CAAM;AAChD;"}
1
+ {"version":3,"file":"usePlugin.js","names":[],"sources":["../src/usePlugin.ts"],"sourcesContent":["import { inject, type Reactive } from \"vue\";\nimport { pluginDataKey } from \"./defineApp\";\nimport type {\n PluginHandle,\n InferFactoryData,\n InferFactoryOutputs,\n PluginFactoryLike,\n} from \"@platforma-sdk/model\";\n\n/** Per-plugin reactive model exposed to consumers via usePlugin(). */\nexport interface PluginState<Data = unknown, Outputs = unknown> {\n readonly model: Reactive<{\n data: Data;\n outputs: Outputs extends Record<string, unknown>\n ? { [K in keyof Outputs]: Outputs[K] | undefined }\n : Record<string, unknown>;\n outputErrors: Outputs extends Record<string, unknown>\n ? { [K in keyof Outputs]?: Error }\n : Record<string, Error | undefined>;\n }>;\n}\n\n/** Internal interface for plugin access — provided via Vue injection to usePlugin(). */\nexport interface PluginAccess {\n getOrCreatePluginState<F extends PluginFactoryLike>(\n handle: PluginHandle<F>,\n ): PluginState<InferFactoryData<F>, InferFactoryOutputs<F>>;\n}\n\n/**\n * Composable for accessing a plugin's reactive model: data, outputs, and outputErrors.\n *\n * Mirrors the `app.model` access pattern — `plugin.model.data` is reactive and deep-watched,\n * mutations are automatically queued and sent to storage.\n *\n * @param handle - Opaque plugin handle obtained from `app.plugins`.\n * @typeParam F - The plugin factory type (inferred from the handle)\n *\n * @example\n * ```vue\n * <script setup lang=\"ts\">\n * import { usePlugin, type InferPluginHandle } from '@platforma-sdk/ui-vue';\n * import type { CounterPlugin } from './plugins/counter';\n *\n * const props = defineProps<{ instance: InferPluginHandle<CounterPlugin> }>();\n * const plugin = usePlugin(props.instance);\n *\n * plugin.model.data.count += 1; // reactive, triggers storage update\n * plugin.model.outputs.displayText // computed, plugin's own outputs only\n * plugin.model.outputErrors.displayText // Error | undefined\n * </script>\n * ```\n */\nexport function usePlugin<F extends PluginFactoryLike>(handle: PluginHandle<F>) {\n const access = inject<PluginAccess>(pluginDataKey);\n\n if (!access) {\n throw new Error(\n \"usePlugin requires a V3 block (BlockModelV3). \" +\n \"Make sure the block uses apiVersion 3 and the plugin is installed.\",\n );\n }\n\n return access.getOrCreatePluginState<F>(handle);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,SAAgB,EAAuC,GAAyB;CAC9E,IAAM,IAAS,EAAqB,EAAc;AAElD,KAAI,CAAC,EACH,OAAU,MACR,mHAED;AAGH,QAAO,EAAO,uBAA0B,EAAO"}