@platforma-sdk/ui-vue 1.40.6 → 1.41.1

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 (94) hide show
  1. package/.turbo/turbo-build.log +49 -22
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +20 -0
  4. package/dist/AgGridVue/useAgGridOptions.js +54 -53
  5. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  6. package/dist/components/BlockLayout.vue.d.ts.map +1 -1
  7. package/dist/components/BlockLayout.vue.js +7 -50
  8. package/dist/components/BlockLayout.vue.js.map +1 -1
  9. package/dist/components/BlockLayout.vue2.js +53 -2
  10. package/dist/components/BlockLayout.vue2.js.map +1 -1
  11. package/dist/components/BlockLayout.vue3.js +9 -0
  12. package/dist/components/BlockLayout.vue3.js.map +1 -0
  13. package/dist/components/NotFound.vue.d.ts.map +1 -1
  14. package/dist/components/NotFound.vue.js +12 -14
  15. package/dist/components/NotFound.vue.js.map +1 -1
  16. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +7 -6
  17. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +1 -1
  18. package/dist/components/PlAgDataTable/sources/table-source-v2.js +12 -12
  19. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +10 -9
  20. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +1 -1
  21. package/dist/components/PlAgRowNumHeader.vue.js +3 -2
  22. package/dist/components/PlAgRowNumHeader.vue.js.map +1 -1
  23. package/dist/components/PlAnnotations/components/DynamicForm.vue2.js +10 -10
  24. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts +1 -1
  25. package/dist/components/PlAnnotations/components/PlAnnotationCreateDialog.vue.d.ts.map +1 -1
  26. package/dist/components/PlMultiSequenceAlignment/data.js +51 -51
  27. package/dist/composition/fileContent.js +16 -16
  28. package/dist/defineApp.d.ts +19 -6
  29. package/dist/defineApp.d.ts.map +1 -1
  30. package/dist/defineApp.js +50 -30
  31. package/dist/defineApp.js.map +1 -1
  32. package/dist/internal/UpdateSerializer.d.ts +26 -0
  33. package/dist/internal/UpdateSerializer.d.ts.map +1 -0
  34. package/dist/internal/UpdateSerializer.js +65 -0
  35. package/dist/internal/UpdateSerializer.js.map +1 -0
  36. package/dist/internal/createAppModel.d.ts +1 -1
  37. package/dist/internal/createAppModel.d.ts.map +1 -1
  38. package/dist/internal/createAppModel.js +43 -51
  39. package/dist/internal/createAppModel.js.map +1 -1
  40. package/dist/internal/{createApp.d.ts → createAppV1.d.ts} +4 -4
  41. package/dist/internal/createAppV1.d.ts.map +1 -0
  42. package/dist/internal/{createApp.js → createAppV1.js} +17 -18
  43. package/dist/internal/createAppV1.js.map +1 -0
  44. package/dist/internal/createAppV2.d.ts +56 -0
  45. package/dist/internal/createAppV2.d.ts.map +1 -0
  46. package/dist/internal/createAppV2.js +158 -0
  47. package/dist/internal/createAppV2.js.map +1 -0
  48. package/dist/internal/test-helpers/BlockMock.d.ts +28 -0
  49. package/dist/internal/test-helpers/BlockMock.d.ts.map +1 -0
  50. package/dist/internal/test-helpers/createMockApi.d.ts +4 -0
  51. package/dist/internal/test-helpers/createMockApi.d.ts.map +1 -0
  52. package/dist/internal/test-helpers/utils.d.ts +4 -0
  53. package/dist/internal/test-helpers/utils.d.ts.map +1 -0
  54. package/dist/{types.static-test.d.ts → internal/v1.static-test.d.ts} +3 -3
  55. package/dist/internal/v1.static-test.d.ts.map +1 -0
  56. package/dist/internal/v2.static-test.d.ts +7 -0
  57. package/dist/internal/v2.static-test.d.ts.map +1 -0
  58. package/dist/lib/model/common/dist/index.js +214 -199
  59. package/dist/lib/model/common/dist/index.js.map +1 -1
  60. package/dist/lib/ui/uikit/dist/lib/model/common/dist/index.js +8 -8
  61. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +64 -43
  62. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  63. package/dist/lib/util/helpers/dist/index.js +67 -56
  64. package/dist/lib/util/helpers/dist/index.js.map +1 -1
  65. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js +29 -0
  66. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js.map +1 -0
  67. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js +208 -0
  68. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/core.js.map +1 -0
  69. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js +95 -0
  70. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/duplex.js.map +1 -0
  71. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js +112 -0
  72. package/dist/node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/module/helpers.js.map +1 -0
  73. package/dist/sdk/model/dist/index.js +151 -131
  74. package/dist/sdk/model/dist/index.js.map +1 -1
  75. package/dist/types.d.ts +2 -2
  76. package/dist/types.d.ts.map +1 -1
  77. package/package.json +9 -6
  78. package/src/components/BlockLayout.vue +9 -1
  79. package/src/components/NotFound.vue +1 -3
  80. package/src/defineApp.ts +134 -36
  81. package/src/internal/UpdateSerializer.ts +112 -0
  82. package/src/internal/createAppModel.ts +7 -20
  83. package/src/internal/{createApp.ts → createAppV1.ts} +10 -6
  84. package/src/internal/createAppV2.test.ts +158 -0
  85. package/src/internal/createAppV2.ts +309 -0
  86. package/src/internal/test-helpers/BlockMock.ts +144 -0
  87. package/src/internal/test-helpers/createMockApi.ts +92 -0
  88. package/src/internal/test-helpers/utils.ts +65 -0
  89. package/src/{types.static-test.ts → internal/v1.static-test.ts} +5 -9
  90. package/src/internal/v2.static-test.ts +98 -0
  91. package/src/types.ts +2 -2
  92. package/dist/internal/createApp.d.ts.map +0 -1
  93. package/dist/internal/createApp.js.map +0 -1
  94. package/dist/types.static-test.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,MAAMA,EAAe;AAAA,EAArB;AACE,IAAAC,EAAA,MAAAC,GAAuC,CAAC;AAAA;AAAA,EAEjC,QAAQC,GAAqC;AAClD,WAAAC,EAAA,MAAKF,GAAW,OAAO,OAAO,CAAA,GAAIG,EAAA,MAAKH,IAAUC,CAAO,IACjD;AAAA,EAAA;AAAA,EAGT,IAAY,aAAa;AAChB,WAAAE,EAAA,MAAKH,GAAS,cAAc,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/B,iBAAiBI,GAA4B;AAClD,WAAAD,EAAA,MAAKH,GAAS,gBAAgBI,GACvB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,WAAWC,GAAmB;AACnC,WAAAF,EAAA,MAAKH,GAAS,UAAUK,GACjB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,eAAeC,GAAsB;AAC1C,WAAAH,EAAA,MAAKH,GAAS,cAAcM,GACrB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,YAAYC,GAAoB;AACrC,WAAAJ,EAAA,MAAKH,GAAS,WAAWO,GAClB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,sBAAsBC,GAAsB;AACjD,WAAAL,EAAA,MAAKH,GAAS,qBAAqBQ,GAC5B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,gBAAgBC,GAAuB;AAC5C,WAAAN,EAAA,MAAKH,GAAS,eAAeS,GACtB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,cAAcC,GAAqB;AACxC,WAAAP,EAAA,MAAKH,GAAS,aAAaU,GACpB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,gBAAgBC,GAAoC;AACzD,WAAAR,EAAA,MAAKH,GAAS,eAAeW,GACtB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,WAAWC,GAAmB;AACnC,WAAAT,EAAA,MAAKH,GAAS,UAAUY,GACjB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,cAAcC,GAAwC;AAC3D,WAAAV,EAAA,MAAKH,GAAS,aAAaa,GACpB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,UAAsDC,GAAQC,GAAsC;AACpG,WAAAZ,EAAA,MAAAH,GAASc,CAAG,IAAIC,GACd;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,OAAqBX,GAAoC;AAC9D,WAAAD,EAAA,MAAKH,GAAS,aAAa,CAAC,GAAG,KAAK,YAAYI,CAAG,GAC5C;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,iBAAiBY,IAAgB,IAAM;AAC5C,WAAAb,EAAA,MAAKH,GAAS,mBAAmBgB,GAC1B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASF,gBACLZ,GAoCG;AACI,WAAA,KAAK,OAAO,OAAO,OAAO;AAAA,MAC/B,cAAc;AAAA,MACd,uBAAuB,EAAE,MAAM,OAAO;AAAA,MACtC,WAAW,EAAE,SAAS,EAAE;AAAA,MACxB,aAAa,CAACa,MAA8D;;AAC1E,gBAAAC,IAAAd,EAAI,wBAAJ,QAAAc,EAAA,KAAAd,GAA0Ba,IACnB;AAAA,MACT;AAAA,MACA,sBAAsB,CAACE,MAAiD;;AAC/D,eAAA;AAAA,UACL,WAAW;AAAA,UACX,QAAQ;AAAA,YACN,YAAYf,EAAI;AAAA,YAChB,QAAOc,IAAAd,EAAI,4BAAJ,gBAAAc,EAAA,KAAAd,GAA8Be;AAAA,YACrC,iBAAiB,MAAM;;AACd,sBAAAD,IAAAd,EAAI,0BAAJ,gBAAAc,EAAA,KAAAd,GAA4Be;AAAA,YAAQ;AAAA,UAC7C;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEJ,GAAGf,CAAG,CAAC;AAAA,EAAA;AAAA,EAGF,QAAQ;AACb,WAAOD,EAAA,MAAKH;AAAA,EAAA;AAEhB;AApNEA,IAAA;AAyOK,SAASoB,GACdC,GACA;AACA,QAAMC,IAAUC,EAAoB,GAE9BC,IAAaC,EAA8B,MAAM;;AACrD,UAAMrB,IAAkC;AAAA,MACtC,OAAOsB;AAAA,MACP,yBAAyBC;AAAAA,MACzB,wBAAwBC;AAAAA,MACxB,aAAa,CAACC,MAAsB;AAClC,QAAAP,EAAQ,QAAQO,EAAE,KAClBC,EAAwBD,EAAE,GAAG;AAAA,MAAA;AAAA,IAEjC,GAEME,IAAS,CAAS3B,MACfA,GAGH4B,IAASX,EAAQ,EAAE,SAAS,IAAIvB,EAAQ,GAAG,QAAAiC,GAAQ,GAEnD9B,IAAU,OAAO,OAAO,IAAIG,GAAK4B,aAAkBlC,IAAUkC,EAAO,MAAM,IAAIA,CAAM;AAE1F,WAAI/B,EAAQ,qBACFA,EAAA,aAAa,CAACgC,EAAoB,GAAG,GAAIhC,EAAQ,cAAc,EAAG,IAGxEA,EAAQ,eACVA,EAAQ,+BAA+B;AAAA,MACrC,MAAMA,EAAQ;AAAA,IAChB,IAGE,mCAAmCA,KACrC,QAAQ,KAAK,qIAAqI,GAG5IA,EAAA,UAAUA,EAAQ,YAAYA,EAAQ,SAEtCA,EAAA,cAAaiB,IAAAjB,EAAQ,eAAR,gBAAAiB,EAAoB,IAAI,CAACgB,MAAOC,EAAmBD,CAAE,IAGlEjC,EAAA,aAAa,OAAO,OAAO,CAAA,GAAIA,EAAQ,cAAc,IAAI;AAAA,MAAA,cAC/DmC;AAAAA,MAAA,yBACAC;AAAAA,MAAA,wBACAC;AAAAA,MACAC,mBAAAA;AAAAA,IAAA,CACD,GAEMtC;AAAA,EAAA,CACR,GAEKuC,IAAcf,EAAsB,MAAM;AAC9C,UAAMxB,IAAUuB,EAAW;AAEpB,WAAA;AAAA,MACL,GAAGvB;AAAA,MACH,+BAA+B;AAAA,QAC7B,UAAUA,EAAQ;AAAA,QAClB,cAAcA,EAAQ;AAAA,QACtB,aAAaA,EAAQ;AAAA,MAAA;AAAA,IAEzB;AAAA,EAAA,CACD;AAED,SAAAwC,EAAS,MAAMjB,EAAW,MAAM,kBAAkB,MAAM;AACtD,IAAIF,EAAQ,SACVQ,EAAwBR,EAAQ,KAAK;AAAA,EACvC,CACD,GAEKoB,EAAA;AAAA,IACJ,MAAMlB,EAAW,MAAM;AAAA,IACvB,MAAMA,EAAW,MAAM;AAAA,EAAA,GACtB,CAAC,CAACjB,GAAUF,CAAO,MAAM;;AAC1B,UAAMsC,IAAgC;AAAA,MACpC,UAAApC;AAAA;AAAA,MAEA,cAAciB,EAAW,MAAM;AAAA,MAC/B,aAAaA,EAAW,MAAM;AAAA,MAC9B,aAAaA,EAAW,MAAM;AAAA,IAChC;AAGA,KAAAN,IAAAI,EAAQ,UAAR,QAAAJ,EAAe,kBAAkB;AAAA,MAC/B,SAAS,CAACb;AAAA,MACV,+BAAAsC;AAAA,IAAA,KAGFC,IAAAtB,EAAQ,UAAR,QAAAsB,EAAe,kBAAkB;AAAA,MAC/B,SAAAvC;AAAA,MACA,+BAAAsC;AAAA,IAAA;AAAA,KAED,EAAE,MAAM,IAAM,WAAW,IAAM,GAE3B,EAAE,aAAAH,GAAa,SAAAlB,EAAQ;AAChC;"}
1
+ {"version":3,"file":"useAgGridOptions.js","sources":["../../src/AgGridVue/useAgGridOptions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColGroupDef, GridApi, GridOptions, GridReadyEvent, ICellRendererParams, RowSelectionOptions, ValueSetterParams } from 'ag-grid-enterprise';\nimport type { Component } from 'vue';\nimport { computed, shallowRef, watch } from 'vue';\nimport { AgGridTheme } from '../aggrid';\nimport { autoSizeRowNumberColumn, makeRowNumberColDef, PlAgOverlayLoading, type PlAgOverlayLoadingParams } from '../components/PlAgDataTable';\nimport { PlAgOverlayNoRows } from '../components/PlAgDataTable';\nimport { createAgGridColDef, type ColDefExtended } from './createAgGridColDef';\nimport { whenever } from '@vueuse/core';\nimport { PlAgCellFile } from '../components/PlAgCellFile';\nimport { PlAgChartStackedBarCell } from '../components/PlAgChartStackedBarCell';\nimport { PlAgChartHistogramCell } from '../components/PlAgChartHistogramCell';\nimport type { ImportFileHandle } from '@platforma-sdk/model';\nimport type { ImportProgress } from '@platforma-sdk/model';\nimport { PlAgCellStatusTag } from '../components/PlAgCellStatusTag';\ninterface GridOptionsExtended<TData = any> extends Omit<GridOptions<TData>, 'columnDefs' | 'loadingOverlayComponentParams'> {\n /**\n * Array of Column / Column Group definitions.\n */\n columnDefs?: (ColDefExtended<TData> | ColGroupDef<TData>)[] | null;\n /**\n * Show row numbers column\n */\n rowNumbersColumn?: boolean;\n /**\n * Loading overlay text\n */\n loadingText?: string;\n /**\n * Not ready overlay (No datasource). Takes priority over \"loading\"\n */\n notReady?: boolean;\n /**\n * \"No datasource\" by default\n */\n notReadyText?: string;\n /**\n * Use \"transparent\" to make table headers visible below the loading layer (experimental)\n */\n loadingOverlayType?: 'transparent' | undefined;\n /**\n * Override standard 'Empty' text for the \"no rows\" overlay\n */\n noRowsText?: string;\n /**\n * @deprecated Use loading, notReady, loadingText, loadingOverlayType instead\n */\n loadingOverlayComponentParams?: never;\n}\n\n// @TODO (super simple builder for now)\nclass Builder<TData> {\n #options: GridOptionsExtended<TData> = {};\n\n public options(options: GridOptionsExtended<TData>) {\n this.#options = Object.assign({}, this.#options, options);\n return this;\n }\n\n private get columnDefs() {\n return this.#options.columnDefs ?? [];\n }\n\n /**\n * Set default column definition\n * @param def - column definition\n * @returns this\n */\n public setDefaultColDef(def: ColDefExtended<TData>) {\n this.#options.defaultColDef = def;\n return this;\n }\n\n /**\n * Show loading overlay\n * @param loading\n * @returns this\n */\n public setLoading(loading?: boolean) {\n this.#options.loading = loading;\n return this;\n }\n\n /**\n * Set loading overlay custom text (default is \"Loading\")\n * @param loadingText\n * @returns this\n */\n public setLoadingText(loadingText?: string) {\n this.#options.loadingText = loadingText;\n return this;\n }\n\n /**\n * Show \"not ready overlay\n * @param notReady\n * @returns this\n */\n public setNotReady(notReady?: boolean) {\n this.#options.notReady = notReady;\n return this;\n }\n\n /**\n * Set loading overlay type\n * @param type\n * @returns this\n */\n public setLoadingOverlayType(type?: 'transparent') {\n this.#options.loadingOverlayType = type;\n return this;\n }\n\n /**\n * Set \"not ready\" text\n * @param notReadyText\n * @returns this\n */\n public setNotReadyText(notReadyText?: string) {\n this.#options.notReadyText = notReadyText;\n return this;\n }\n\n /**\n * Set \"no rows\" text when there are no rows (default is \"Empty\")\n * @param noRowsText\n * @returns this\n */\n public setNoRowsText(noRowsText?: string) {\n this.#options.noRowsText = noRowsText;\n return this;\n }\n\n /**\n * Set row selection options\n * @param rowSelection\n * @returns this\n */\n public setRowSelection(rowSelection?: RowSelectionOptions) {\n this.#options.rowSelection = rowSelection;\n return this;\n }\n\n /**\n * Set row data\n * @param rowData\n * @returns this\n */\n public setRowData(rowData?: TData[]) {\n this.#options.rowData = rowData;\n return this;\n }\n\n /**\n * Set components\n * @param components\n * @returns this\n */\n public setComponents(components?: Record<string, Component>) {\n this.#options.components = components;\n return this;\n }\n\n /**\n * Set an option\n * @param key - option key\n * @param value - option value\n * @returns this\n */\n public setOption<K extends keyof GridOptionsExtended<TData>>(key: K, value: GridOptionsExtended<TData>[K]) {\n this.#options[key] = value;\n return this;\n }\n\n /**\n * Add an extended column definition\n * @param def - column definition\n * @returns this\n */\n public column<TValue = any>(def: ColDefExtended<TData, TValue>) {\n this.#options.columnDefs = [...this.columnDefs, def];\n return this;\n }\n\n /**\n * Show row numbers column\n * @param show - show or hide row numbers column\n * @returns this\n */\n public columnRowNumbers(show: boolean = true) {\n this.#options.rowNumbersColumn = show;\n return this;\n }\n\n /**\n * Add a file input column\n * @param def - column definition\n * @param cb - callback to set params for the file input cell renderer\n * @returns this\n */\n public columnFileInput<TValue = any>(\n def: ColDefExtended<TData, TValue> & {\n /**\n * Allowed file extensions (like ['fastq.gz'])\n */\n extensions?: string[];\n /**\n * The resolveProgress function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveProgress, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveProgress: (cellData) => {\n * const progresses = app.progresses;\n * if (!cellData.value.importFileHandle) return undefined;\n * else return progresses[cellData.value.importFileHandle];\n * }\n * }\n */\n resolveImportProgress?: (cellData: ICellRendererParams<TData, TValue>) => ImportProgress | undefined;\n\n /**\n * The resolveFileHandle function is an optional input parameter for the component\n * that allows tracking the file upload progress in real-time.\n * By passing resolveFileHandle, you can ensure that the component\n * displays accurate progress values for each file as they upload.\n * How to use it in AgGrid\n * cellRendererParams: {\n * resolveFileHandle: (cellData) => {\n * return cellData.value.importFileHandle;\n * }\n * }\n */\n resolveImportFileHandle?: (cellData: ICellRendererParams<TData, TValue>) => ImportFileHandle | undefined;\n\n setImportFileHandle?: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => void;\n }) {\n return this.column(Object.assign({\n cellRenderer: 'PlAgCellFile',\n headerComponentParams: { type: 'File' },\n cellStyle: { padding: 0 },\n valueSetter: (d: ValueSetterParams<TData, ImportFileHandle | undefined>) => {\n def.setImportFileHandle?.(d);\n return true;\n },\n cellRendererSelector: (cellData: ICellRendererParams<TData, TValue>) => {\n return {\n component: 'PlAgCellFile',\n params: {\n extensions: def.extensions,\n value: def.resolveImportFileHandle?.(cellData),\n resolveProgress: () => {\n return def.resolveImportProgress?.(cellData);\n },\n },\n };\n },\n }, def));\n }\n\n public build() {\n return this.#options;\n }\n}\n\n// Simple helper to use like column<string> in grid options literal\ntype ColumnFunc<TData> = <TValue>(def: ColDefExtended<TData, TValue>) => ColDefExtended<TData, TValue>;\n\n/**\n * Returns a set of Ag Grid options along with a reference to the Ag Grid API.\n * (This is a fast prototype)\n *\n * @example\n * ```ts\n * const { gridOptions, gridApi } = useAgGridOptions(() => ({\n * // custom grid options here\n * }));\n *\n * // Usage in a template (v-bind is required!)\n * <template>\n * <AgGridVue :style=\"{ height: '100%' }\" v-bind=\"gridOptions\" />\n * </template>\n * ```\n */\nexport function useAgGridOptions<TData>(\n factory: (context: { builder: Builder<TData>; column: ColumnFunc<TData> }) => Builder<TData> | GridOptionsExtended<TData>,\n) {\n const gridApi = shallowRef<GridApi>();\n\n const extOptions = computed<GridOptionsExtended>(() => {\n const def: GridOptionsExtended<TData> = {\n theme: AgGridTheme,\n loadingOverlayComponent: PlAgOverlayLoading,\n noRowsOverlayComponent: PlAgOverlayNoRows,\n onGridReady: (e: GridReadyEvent) => {\n gridApi.value = e.api;\n autoSizeRowNumberColumn(e.api); // @TODO\n },\n };\n\n const column = <TValue>(def: ColDefExtended<TData, TValue>) => {\n return def;\n };\n\n const result = factory({ builder: new Builder(), column });\n\n const options = Object.assign({}, def, result instanceof Builder ? result.build() : result);\n\n if (options.rowNumbersColumn) {\n options.columnDefs = [makeRowNumberColDef(), ...(options.columnDefs ?? [])];\n }\n\n if (options.noRowsText) {\n options.noRowsOverlayComponentParams = {\n text: options.noRowsText,\n };\n }\n\n if ('loadingOverlayComponentParams' in options) {\n console.warn('useAgGridOptions: remove loadingOverlayComponentParams from options, use loading, notReady, loadingText, loadingOverlayType instead');\n }\n\n options.loading = options.notReady || options.loading;\n\n options.columnDefs = options.columnDefs?.map((it) => createAgGridColDef(it));\n\n // Register all special components\n options.components = Object.assign({}, options.components ?? {}, {\n PlAgCellFile,\n PlAgChartStackedBarCell,\n PlAgChartHistogramCell,\n PlAgCellStatusTag,\n });\n\n return options;\n });\n\n const gridOptions = computed<GridOptions>(() => {\n const options = extOptions.value;\n\n return {\n ...options,\n loadingOverlayComponentParams: {\n notReady: options.notReady,\n notReadyText: options.notReadyText,\n overlayType: options.loadingOverlayType,\n } satisfies PlAgOverlayLoadingParams,\n };\n });\n\n whenever(() => extOptions.value.rowNumbersColumn, () => {\n if (gridApi.value) {\n autoSizeRowNumberColumn(gridApi.value);\n }\n });\n\n watch([\n () => extOptions.value.notReady,\n () => extOptions.value.loading,\n ], ([notReady, loading]) => {\n const loadingOverlayComponentParams = {\n notReady,\n // we probably don't need to update the parameters below\n notReadyText: extOptions.value.notReadyText,\n overlayType: extOptions.value.loadingOverlayType,\n loadingText: extOptions.value.loadingText,\n } satisfies PlAgOverlayLoadingParams;\n\n // Hack to apply loadingOverlayComponentParams\n gridApi.value?.updateGridOptions({\n loading: !loading,\n loadingOverlayComponentParams,\n });\n\n gridApi.value?.updateGridOptions({\n loading,\n loadingOverlayComponentParams,\n });\n }, { deep: true, immediate: true });\n\n return { gridOptions, gridApi };\n};\n"],"names":["Builder","__privateAdd","_options","options","__privateSet","__privateGet","def","loading","loadingText","notReady","type","notReadyText","noRowsText","rowSelection","rowData","components","key","value","show","d","_a","cellData","useAgGridOptions","factory","gridApi","shallowRef","extOptions","computed","AgGridTheme","PlAgOverlayLoading","PlAgOverlayNoRows","e","autoSizeRowNumberColumn","column","result","makeRowNumberColDef","it","createAgGridColDef","PlAgCellFile","PlAgChartStackedBarCell","PlAgChartHistogramCell","PlAgCellStatusTag","gridOptions","whenever","watch","loadingOverlayComponentParams","_b"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue.d.ts","sourceRoot":"","sources":["../../src/components/BlockLayout.vue"],"names":[],"mappings":"AAwDA,OAAO,sBAAsB,CAAC;;AAuJ9B,wBAKG"}
1
+ {"version":3,"file":"BlockLayout.vue.d.ts","sourceRoot":"","sources":["../../src/components/BlockLayout.vue"],"names":[],"mappings":"AAgEA,OAAO,sBAAsB,CAAC;;AA6J9B,wBAKG"}
@@ -1,53 +1,10 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.block{flex:1;background-color:#fff;max-height:100%;max-width:100%;width:100%;height:100%;position:relative;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__not-found,.block__loader-page{display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center}.block__loader-page .loader-container{display:flex;transform:scale(8)}.block__loader-page .loader-icon{animation:spin 4s linear infinite;background-color:#ccc;margin:auto}.block__layout{padding:0}.block__loader{height:4px;background-color:transparent;position:absolute;z-index:1;top:0;right:0;left:0;overflow:hidden}.block__loader:before{content:"";position:absolute;left:-50%;height:4px;width:33%;background-color:var(--border-color-focus);animation:loader-animation 1.3s linear infinite}.block__progress{--progress-width: 0%;height:4px;background-color:transparent;position:absolute;top:0;right:0;left:0;overflow:hidden}.block__progress:before{content:"";position:absolute;left:0;height:4px;width:var(--progress-width);background-color:var(--border-color-focus);will-change:width;background-image:linear-gradient(90deg,#0000,#fffc,#0000);background-position:0 0;background-size:80px 100%;background-repeat:repeat-y;animation:shine-animation 1.2s linear infinite}@keyframes shine-animation{0%{background-position:-160px 0}to{background-position:calc(100% + 80px) 0}}.block__error{background:var(--txt-error);color:#fff;max-height:50vh;padding:16px 24px;-webkit-user-select:auto;user-select:auto;width:100%;overflow:auto;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__error pre{white-space:pre-wrap;margin:0}.block .scroll-content{height:100%;display:flex;flex-direction:column}.block .scroll-content>div:last-child{flex:1;overflow:auto}@keyframes loader-animation{0%{left:-40%}50%{left:20%;width:38%}to{left:100%;width:50%}}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- import { defineComponent as _, computed as a, createElementBlock as i, openBlock as t, Fragment as k, createElementVNode as h, createBlock as s, createCommentVNode as c, createVNode as y, unref as n, toDisplayString as g, withCtx as N, createTextVNode as w, resolveDynamicComponent as C } from "vue";
3
-
4
- import { useSdkPlugin as E } from "../defineApp.js";
5
- import V from "./NotFound.vue.js";
6
- import x from "./LoaderPage.vue.js";
7
- import B from "./PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js";
8
- import L from "./BlockLoader.vue.js";
9
- import $ from "../plugins/Monetization/MonetizationSidebar.vue.js";
10
- const A = { class: "block block__layout" }, P = { key: 0 }, q = /* @__PURE__ */ _({
11
- __name: "BlockLayout",
12
- setup(S) {
13
- const o = E(), m = (e) => {
14
- try {
15
- return new URL(e, "http://dummy").pathname;
16
- } catch {
17
- console.error("Invalid href", e);
18
- return;
19
- }
20
- }, p = a(() => o.loaded ? o.useApp().href : void 0), l = a(() => {
21
- if (o.loaded) {
22
- const e = o.useApp(), r = m(e.snapshot.navigationState.href);
23
- return r ? e.getRoute(r) : void 0;
24
- }
25
- }), u = a(() => o.loaded ? o.useApp() : void 0), d = a(() => u.value ? u.value.model.outputErrors : {}), v = a(() => {
26
- var e;
27
- return ((e = u.value) == null ? void 0 : e.showErrorsNotification) ?? !0;
28
- }), f = a(() => {
29
- var e, r;
30
- return (r = (e = u.value) == null ? void 0 : e.progress) == null ? void 0 : r.call(e);
31
- });
32
- return (e, r) => (t(), i(k, null, [
33
- h("div", A, [
34
- y(L, { value: f.value }, null, 8, ["value"]),
35
- n(o).error ? (t(), i("div", P, g(n(o).error), 1)) : n(o).loaded ? l.value ? (t(), s(C(l.value), { key: p.value })) : (t(), s(V, { key: 3 })) : (t(), s(x, { key: 1 }, {
36
- default: N(() => r[0] || (r[0] = [
37
- w("Loading...")
38
- ])),
39
- _: 1
40
- })),
41
- n(o).loaded && v.value ? (t(), s(n(B), {
42
- key: 4,
43
- errors: d.value
44
- }, null, 8, ["errors"])) : c("", !0)
45
- ]),
46
- l.value ? (t(), s(n($), { key: 0 })) : c("", !0)
47
- ], 64));
48
- }
49
- });
1
+ import o from "./BlockLayout.vue2.js";
2
+ import s from "./BlockLayout.vue3.js";
3
+ import t from "../_virtual/_plugin-vue_export-helper.js";
4
+ const r = {
5
+ $style: s
6
+ }, f = /* @__PURE__ */ t(o, [["__cssModules", r]]);
50
7
  export {
51
- q as default
8
+ f as default
52
9
  };
53
10
  //# sourceMappingURL=BlockLayout.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAa,GAEnBC,IAAgB,CAACC,MAAuB;AACxC,UAAA;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,cACtB;AACP,gBAAA,MAAM,gBAAgBA,CAAI;AAC3B;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACRM,cAAAA,IAAMN,EAAI,OAAO,GACjBO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAAA;AAAA,IAGtC,CACR,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,WAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BlockLayout.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,56 @@
1
- import f from "./BlockLayout.vue.js";
1
+ (function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode('.block{flex:1;background-color:#fff;max-height:100%;max-width:100%;width:100%;height:100%;position:relative;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__not-found,.block__loader-page{display:flex;flex-direction:column;flex:1;align-items:center;justify-content:center}.block__loader-page .loader-container{display:flex;transform:scale(8)}.block__loader-page .loader-icon{animation:spin 4s linear infinite;background-color:#ccc;margin:auto}.block__layout{padding:0}.block__loader{height:4px;background-color:transparent;position:absolute;z-index:1;top:0;right:0;left:0;overflow:hidden}.block__loader:before{content:"";position:absolute;left:-50%;height:4px;width:33%;background-color:var(--border-color-focus);animation:loader-animation 1.3s linear infinite}.block__progress{--progress-width: 0%;height:4px;background-color:transparent;position:absolute;top:0;right:0;left:0;overflow:hidden}.block__progress:before{content:"";position:absolute;left:0;height:4px;width:var(--progress-width);background-color:var(--border-color-focus);will-change:width;background-image:linear-gradient(90deg,#0000,#fffc,#0000);background-position:0 0;background-size:80px 100%;background-repeat:repeat-y;animation:shine-animation 1.2s linear infinite}@keyframes shine-animation{0%{background-position:-160px 0}to{background-position:calc(100% + 80px) 0}}.block__error{background:var(--txt-error);color:#fff;max-height:50vh;padding:16px 24px;-webkit-user-select:auto;user-select:auto;width:100%;overflow:auto;display:flex;flex-direction:column;--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.block__error::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.block__error::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.block__error::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.block__error pre{white-space:pre-wrap;margin:0}.block .scroll-content{height:100%;display:flex;flex-direction:column}.block .scroll-content>div:last-child{flex:1;overflow:auto}@keyframes loader-animation{0%{left:-40%}50%{left:20%;width:38%}to{left:100%;width:50%}}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
+ import { defineComponent as _, computed as a, createElementBlock as i, openBlock as t, Fragment as k, createElementVNode as y, createBlock as s, createCommentVNode as c, createVNode as h, unref as n, normalizeClass as g, toDisplayString as C, withCtx as N, createTextVNode as w, resolveDynamicComponent as E } from "vue";
3
+
4
+ import { useSdkPlugin as V } from "../defineApp.js";
5
+ import $ from "./NotFound.vue.js";
6
+ import B from "./LoaderPage.vue.js";
7
+ import L from "./PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js";
8
+ import x from "./BlockLoader.vue.js";
9
+ import A from "../plugins/Monetization/MonetizationSidebar.vue.js";
10
+ const P = { class: "block block__layout" }, j = /* @__PURE__ */ _({
11
+ __name: "BlockLayout",
12
+ setup(S) {
13
+ const o = V(), m = (e) => {
14
+ try {
15
+ return new URL(e, "http://dummy").pathname;
16
+ } catch {
17
+ console.error("Invalid href", e);
18
+ return;
19
+ }
20
+ }, p = a(() => o.loaded ? o.useApp().href : void 0), u = a(() => {
21
+ if (o.loaded) {
22
+ const e = o.useApp(), r = m(e.snapshot.navigationState.href);
23
+ return r ? e.getRoute(r) : void 0;
24
+ }
25
+ }), l = a(() => o.loaded ? o.useApp() : void 0), d = a(() => l.value ? l.value.model.outputErrors : {}), v = a(() => {
26
+ var e;
27
+ return ((e = l.value) == null ? void 0 : e.showErrorsNotification) ?? !0;
28
+ }), f = a(() => {
29
+ var e, r;
30
+ return (r = (e = l.value) == null ? void 0 : e.progress) == null ? void 0 : r.call(e);
31
+ });
32
+ return (e, r) => (t(), i(k, null, [
33
+ y("div", P, [
34
+ h(x, { value: f.value }, null, 8, ["value"]),
35
+ n(o).error ? (t(), i("div", {
36
+ key: 0,
37
+ class: g(e.$style.error)
38
+ }, C(n(o).error), 3)) : n(o).loaded ? u.value ? (t(), s(E(u.value), { key: p.value })) : (t(), s($, { key: 3 })) : (t(), s(B, { key: 1 }, {
39
+ default: N(() => r[0] || (r[0] = [
40
+ w("Loading...")
41
+ ])),
42
+ _: 1
43
+ })),
44
+ n(o).loaded && v.value ? (t(), s(n(L), {
45
+ key: 4,
46
+ errors: d.value
47
+ }, null, 8, ["errors"])) : c("", !0)
48
+ ]),
49
+ u.value ? (t(), s(n(A), { key: 0 })) : c("", !0)
50
+ ], 64));
51
+ }
52
+ });
2
53
  export {
3
- f as default
54
+ j as default
4
55
  };
5
56
  //# sourceMappingURL=BlockLayout.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockLayout.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"BlockLayout.vue2.js","sources":["../../src/components/BlockLayout.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport '../assets/block.scss';\nimport { computed } from 'vue';\nimport { useSdkPlugin } from '../defineApp';\nimport NotFound from './NotFound.vue';\nimport LoaderPage from './LoaderPage.vue';\nimport { PlAppErrorNotificationAlert } from './PlAppErrorNotificationAlert';\nimport BlockLoader from './BlockLoader.vue';\nimport { MonetizationSidebar } from '../plugins/Monetization';\n\nconst sdk = useSdkPlugin();\n\nconst parsePathname = (href: `/${string}`) => {\n try {\n return new URL(href, 'http://dummy').pathname as `/${string}`;\n } catch (_cause) {\n console.error('Invalid href', href);\n return undefined;\n }\n};\n\nconst href = computed(() => (sdk.loaded ? sdk.useApp().href : undefined));\n\nconst CurrentView = computed(() => {\n if (sdk.loaded) {\n const app = sdk.useApp();\n const pathname = parsePathname(app.snapshot.navigationState.href);\n return pathname ? app.getRoute(pathname) : undefined;\n }\n\n return undefined;\n});\n\nconst app = computed(() => (sdk.loaded ? sdk.useApp() : undefined));\n\nconst errors = computed(() => (app.value ? app.value.model.outputErrors : {}));\n\nconst showErrorsNotification = computed(() => app.value?.showErrorsNotification ?? true);\n\nconst progress = computed(() => app.value?.progress?.());\n</script>\n\n<template>\n <div class=\"block block__layout\">\n <BlockLoader :value=\"progress\" />\n <div v-if=\"sdk.error\" :class=\"$style.error\">{{ sdk.error }}</div>\n <LoaderPage v-else-if=\"!sdk.loaded\">Loading...</LoaderPage>\n <component :is=\"CurrentView\" v-else-if=\"CurrentView\" :key=\"href\" />\n <NotFound v-else />\n <PlAppErrorNotificationAlert v-if=\"sdk.loaded && showErrorsNotification\" :errors=\"errors\" />\n </div>\n <!-- Plugins -->\n <MonetizationSidebar v-if=\"CurrentView\" />\n</template>\n\n<style module>\n.error {\n color: red;\n font-weight: bold;\n padding: 24px;\n}\n</style>\n"],"names":["sdk","useSdkPlugin","parsePathname","href","computed","CurrentView","app","pathname","errors","showErrorsNotification","_a","progress","_b"],"mappings":";;;;;;;;;;;AAUA,UAAMA,IAAMC,EAAa,GAEnBC,IAAgB,CAACC,MAAuB;AACxC,UAAA;AACF,eAAO,IAAI,IAAIA,GAAM,cAAc,EAAE;AAAA,cACtB;AACP,gBAAA,MAAM,gBAAgBA,CAAI;AAC3B;AAAA,MAAA;AAAA,IAEX,GAEMA,IAAOC,EAAS,MAAOJ,EAAI,SAASA,EAAI,OAAA,EAAS,OAAO,MAAU,GAElEK,IAAcD,EAAS,MAAM;AACjC,UAAIJ,EAAI,QAAQ;AACRM,cAAAA,IAAMN,EAAI,OAAO,GACjBO,IAAWL,EAAcI,EAAI,SAAS,gBAAgB,IAAI;AAChE,eAAOC,IAAWD,EAAI,SAASC,CAAQ,IAAI;AAAA,MAAA;AAAA,IAGtC,CACR,GAEKD,IAAMF,EAAS,MAAOJ,EAAI,SAASA,EAAI,WAAW,MAAU,GAE5DQ,IAASJ,EAAS,MAAOE,EAAI,QAAQA,EAAI,MAAM,MAAM,eAAe,EAAG,GAEvEG,IAAyBL,EAAS,MAAA;;AAAM,eAAAM,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,2BAA0B;AAAA,KAAI,GAEjFC,IAAWP,EAAS,MAAA;;AAAM,cAAAQ,KAAAF,IAAAJ,EAAI,UAAJ,gBAAAI,EAAW,aAAX,gBAAAE,EAAA,KAAAF;AAAA,KAAuB;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,9 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._error_rqtei_2{color:red;font-weight:700;padding:24px}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
+ const r = "_error_rqtei_2", e = {
3
+ error: r
4
+ };
5
+ export {
6
+ e as default,
7
+ r as error
8
+ };
9
+ //# sourceMappingURL=BlockLayout.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockLayout.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NotFound.vue.d.ts","sourceRoot":"","sources":["../../src/components/NotFound.vue"],"names":[],"mappings":";AA8FA,wBAMG"}
1
+ {"version":3,"file":"NotFound.vue.d.ts","sourceRoot":"","sources":["../../src/components/NotFound.vue"],"names":[],"mappings":";AA0FA,wBAMG"}
@@ -1,21 +1,19 @@
1
- import { defineComponent as a, createElementBlock as i, openBlock as s, createElementVNode as p, createVNode as u, toDisplayString as d, unref as n, withModifiers as c, withCtx as f, createTextVNode as l } from "vue";
1
+ import { defineComponent as r, createElementBlock as i, openBlock as s, createElementVNode as a, createVNode as p, toDisplayString as u, unref as e, withModifiers as d, withCtx as c, createTextVNode as l } from "vue";
2
2
  import "../lib/ui/uikit/dist/index.js";
3
3
  import { useSdkPlugin as m } from "../defineApp.js";
4
- import _ from "../lib/ui/uikit/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js";
5
- const k = { class: "block__not-found" }, C = /* @__PURE__ */ a({
4
+ import f from "../lib/ui/uikit/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js";
5
+ const _ = { class: "block__not-found" }, S = /* @__PURE__ */ r({
6
6
  __name: "NotFound",
7
- setup(g) {
8
- const t = m().useApp(), r = () => {
9
- t.updateNavigationState((o) => {
10
- o.href = "/";
11
- });
7
+ setup(k) {
8
+ const t = m().useApp(), n = () => {
9
+ t.navigateTo("/");
12
10
  };
13
- return (o, e) => (s(), i("div", k, [
14
- p("h1", null, "Not found route: " + d(n(t).snapshot.navigationState.href), 1),
15
- u(n(_), {
16
- onClick: c(r, ["stop"])
11
+ return (h, o) => (s(), i("div", _, [
12
+ a("h1", null, "Not found route: " + u(e(t).snapshot.navigationState.href), 1),
13
+ p(e(f), {
14
+ onClick: d(n, ["stop"])
17
15
  }, {
18
- default: f(() => e[0] || (e[0] = [
16
+ default: c(() => o[0] || (o[0] = [
19
17
  l("Return to main page")
20
18
  ])),
21
19
  _: 1
@@ -24,6 +22,6 @@ const k = { class: "block__not-found" }, C = /* @__PURE__ */ a({
24
22
  }
25
23
  });
26
24
  export {
27
- C as default
25
+ S as default
28
26
  };
29
27
  //# sourceMappingURL=NotFound.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.updateNavigationState((state) => {\n state.href = '/';\n });\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain","state"],"mappings":";;;;;;;AAMM,UAAAA,IAFMC,EAAa,EAET,OAAO,GAEjBC,IAAW,MAAM;AACjB,MAAAF,EAAA,sBAAsB,CAACG,MAAU;AACnC,QAAAA,EAAM,OAAO;AAAA,MAAA,CACd;AAAA,IACH;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"NotFound.vue.js","sources":["../../src/components/NotFound.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlBtnSecondary } from '@milaboratories/uikit';\nimport { useSdkPlugin } from '../defineApp';\n\nconst sdk = useSdkPlugin();\n\nconst app = sdk.useApp();\n\nconst goToMain = () => {\n app.navigateTo('/');\n};\n</script>\n\n<template>\n <div class=\"block__not-found\">\n <h1>Not found route: {{ app.snapshot.navigationState.href }}</h1>\n <PlBtnSecondary @click.stop=\"goToMain\">Return to main page</PlBtnSecondary>\n </div>\n</template>\n"],"names":["app","useSdkPlugin","goToMain"],"mappings":";;;;;;;AAMM,UAAAA,IAFMC,EAAa,EAET,OAAO,GAEjBC,IAAW,MAAM;AACrB,MAAAF,EAAI,WAAW,GAAG;AAAA,IACpB;;;;;;;;;;;;;;"}
@@ -7,10 +7,11 @@
7
7
  .pl-ag-chart-stacked-bar-cell{height:100%;display:flex;flex-direction:row;align-items:center}.pl-ag-chart-stacked-bar-cell__not-ready{color:var(--txt-03)!important}
8
8
  .pl-ag-chart-histogram-cell{height:100%;display:flex;flex-direction:row;align-items:center}.pl-ag-chart-histogram-cell__not-ready{color:var(--txt-03)!important}
9
9
  .pl-ag-cell-status-tag{height:100%;padding:0 12px}`)),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
10
- import { defineComponent as l, ref as m, computed as d, onBeforeMount as c, onBeforeUnmount as v, toDisplayString as f } from "vue";
10
+ import { defineComponent as l, ref as n, computed as d, onBeforeMount as c, onBeforeUnmount as v, toDisplayString as f } from "vue";
11
11
 
12
12
 
13
13
  import "../../sdk/model/dist/index.js";
14
+ import "../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js";
14
15
  import "../../aggrid.js";
15
16
  import "../../lib/ui/uikit/dist/index.js";
16
17
 
@@ -29,15 +30,15 @@ import { getTotalRowsCount as i, getSelectedRowsCount as p } from "../../AgGridV
29
30
  import "../PlMultiSequenceAlignment/data.js";
30
31
  import "@milaboratories/biowasm-tools";
31
32
  import "../../composition/fileContent.js";
32
- const q = /* @__PURE__ */ l({
33
+ const z = /* @__PURE__ */ l({
33
34
  __name: "PlAgRowCount",
34
35
  props: {
35
36
  params: {}
36
37
  },
37
38
  setup(t) {
38
- const o = m(i(t.params.api)), r = m(p(t.params.api)), u = new Intl.PluralRules("en"), n = new Intl.NumberFormat("en"), s = d(() => {
39
- let a = n.format(o.value) + " ";
40
- return a += u.select(o.value) === "one" ? "row" : "rows", r.value > 0 && (a += " (" + n.format(r.value) + " selected)"), a;
39
+ const o = n(i(t.params.api)), r = n(p(t.params.api)), u = new Intl.PluralRules("en"), m = new Intl.NumberFormat("en"), s = d(() => {
40
+ let a = m.format(o.value) + " ";
41
+ return a += u.select(o.value) === "one" ? "row" : "rows", r.value > 0 && (a += " (" + m.format(r.value) + " selected)"), a;
41
42
  });
42
43
  function e() {
43
44
  o.value = i(t.params.api), r.value = p(t.params.api);
@@ -50,6 +51,6 @@ const q = /* @__PURE__ */ l({
50
51
  }
51
52
  });
52
53
  export {
53
- q as default
54
+ z as default
54
55
  };
55
56
  //# sourceMappingURL=PlAgRowCount.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgRowCount.vue.js","sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from 'ag-grid-enterprise';\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue';\nimport { getSelectedRowsCount, getTotalRowsCount } from '../../lib';\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules('en');\nconst numberFormatter = new Intl.NumberFormat('en');\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + ' ';\n result += pluralRules.select(totalRowCount.value) === 'one' ? 'row' : 'rows';\n if (selectedRowCount.value > 0) {\n result += ' (' + numberFormatter.format(selectedRowCount.value) + ' selected)';\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener('selectionChanged', updateRowCounts);\n params.api.addEventListener('rowDataUpdated', updateRowCounts);\n params.api.addEventListener('modelUpdated', updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener('selectionChanged', updateRowCounts);\n params.api.removeEventListener('rowDataUpdated', updateRowCounts);\n params.api.removeEventListener('modelUpdated', updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"names":["totalRowCount","ref","getTotalRowsCount","__props","selectedRowCount","getSelectedRowsCount","pluralRules","numberFormatter","output","computed","result","updateRowCounts","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAgBC,EAAIC,EAAkBC,EAAA,OAAO,GAAG,CAAC,GACjDC,IAAmBH,EAAII,EAAqBF,EAAM,OAAC,GAAG,CAAC,GAEvDG,IAAc,IAAI,KAAK,YAAY,IAAI,GACvCC,IAAkB,IAAI,KAAK,aAAa,IAAI,GAE5CC,IAASC,EAAS,MAAM;AAC5B,UAAIC,IAASH,EAAgB,OAAOP,EAAc,KAAK,IAAI;AAC3D,aAAAU,KAAUJ,EAAY,OAAON,EAAc,KAAK,MAAM,QAAQ,QAAQ,QAClEI,EAAiB,QAAQ,MAC3BM,KAAU,OAAOH,EAAgB,OAAOH,EAAiB,KAAK,IAAI,eAE7DM;AAAA,IAAA,CACR;AAED,aAASC,IAAkB;AACzB,MAAAX,EAAc,QAAQE,EAAkBC,SAAO,GAAG,GAClDC,EAAiB,QAAQC,EAAqBF,SAAO,GAAG;AAAA,IAAA;AAG1D,WAAAS,EAAc,MAAM;AAClB,MAAAT,EAAM,OAAC,IAAI,iBAAiB,oBAAoBQ,CAAe,GAC/DR,EAAM,OAAC,IAAI,iBAAiB,kBAAkBQ,CAAe,GAC7DR,EAAM,OAAC,IAAI,iBAAiB,gBAAgBQ,CAAe;AAAA,IAAA,CAC5D,GAEDE,EAAgB,MAAM;AACpB,MAAAV,EAAA,OAAO,IAAI,oBAAoB,oBAAoBQ,CAAe,GAClER,EAAA,OAAO,IAAI,oBAAoB,kBAAkBQ,CAAe,GAChER,EAAM,OAAC,IAAI,oBAAoB,gBAAgBQ,CAAe;AAAA,IAAA,CAC/D;;;"}
1
+ {"version":3,"file":"PlAgRowCount.vue.js","sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from 'ag-grid-enterprise';\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue';\nimport { getSelectedRowsCount, getTotalRowsCount } from '../../lib';\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules('en');\nconst numberFormatter = new Intl.NumberFormat('en');\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + ' ';\n result += pluralRules.select(totalRowCount.value) === 'one' ? 'row' : 'rows';\n if (selectedRowCount.value > 0) {\n result += ' (' + numberFormatter.format(selectedRowCount.value) + ' selected)';\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener('selectionChanged', updateRowCounts);\n params.api.addEventListener('rowDataUpdated', updateRowCounts);\n params.api.addEventListener('modelUpdated', updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener('selectionChanged', updateRowCounts);\n params.api.removeEventListener('rowDataUpdated', updateRowCounts);\n params.api.removeEventListener('modelUpdated', updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"names":["totalRowCount","ref","getTotalRowsCount","__props","selectedRowCount","getSelectedRowsCount","pluralRules","numberFormatter","output","computed","result","updateRowCounts","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAMA,IAAgBC,EAAIC,EAAkBC,EAAA,OAAO,GAAG,CAAC,GACjDC,IAAmBH,EAAII,EAAqBF,EAAM,OAAC,GAAG,CAAC,GAEvDG,IAAc,IAAI,KAAK,YAAY,IAAI,GACvCC,IAAkB,IAAI,KAAK,aAAa,IAAI,GAE5CC,IAASC,EAAS,MAAM;AAC5B,UAAIC,IAASH,EAAgB,OAAOP,EAAc,KAAK,IAAI;AAC3D,aAAAU,KAAUJ,EAAY,OAAON,EAAc,KAAK,MAAM,QAAQ,QAAQ,QAClEI,EAAiB,QAAQ,MAC3BM,KAAU,OAAOH,EAAgB,OAAOH,EAAiB,KAAK,IAAI,eAE7DM;AAAA,IAAA,CACR;AAED,aAASC,IAAkB;AACzB,MAAAX,EAAc,QAAQE,EAAkBC,SAAO,GAAG,GAClDC,EAAiB,QAAQC,EAAqBF,SAAO,GAAG;AAAA,IAAA;AAG1D,WAAAS,EAAc,MAAM;AAClB,MAAAT,EAAM,OAAC,IAAI,iBAAiB,oBAAoBQ,CAAe,GAC/DR,EAAM,OAAC,IAAI,iBAAiB,kBAAkBQ,CAAe,GAC7DR,EAAM,OAAC,IAAI,iBAAiB,gBAAgBQ,CAAe;AAAA,IAAA,CAC5D,GAEDE,EAAgB,MAAM;AACpB,MAAAV,EAAA,OAAO,IAAI,oBAAoB,oBAAoBQ,CAAe,GAClER,EAAA,OAAO,IAAI,oBAAoB,kBAAkBQ,CAAe,GAChER,EAAM,OAAC,IAAI,oBAAoB,gBAAgBQ,CAAe;AAAA,IAAA,CAC/D;;;"}
@@ -4,14 +4,14 @@ import z from "../../PlAgColumnHeader/PlAgColumnHeader.vue.js";
4
4
  import K from "../../PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js";
5
5
  import { PTableHidden as P } from "./common.js";
6
6
  import { defaultMainMenuItems as A } from "./menu-items.js";
7
- import { makeRowNumberColDef as V, PlAgDataTableRowNumberColId as Y } from "./row-number.js";
8
- import { getColumnRenderingSpec as j } from "./value-rendering.js";
7
+ import { makeRowNumberColDef as V, PlAgDataTableRowNumberColId as j } from "./row-number.js";
8
+ import { getColumnRenderingSpec as Q } from "./value-rendering.js";
9
9
  import { isJsonEqual as I } from "../../../lib/util/helpers/dist/index.js";
10
10
  import { getAxisId as b, canonicalizeJson as N, pTableValue as E } from "../../../lib/model/common/dist/index.js";
11
- function Q(s) {
11
+ function U(s) {
12
12
  return s.type === "column" && q(s.spec);
13
13
  }
14
- function U(s, n, m, c) {
14
+ function W(s, n, m, c) {
15
15
  const l = [];
16
16
  for (let u = 0; u < n[0].data.length; ++u) {
17
17
  const f = m.map((p) => L(
@@ -67,13 +67,13 @@ async function le({
67
67
  }), h = [...r], R = r.findIndex((e) => o[e].type === "column");
68
68
  for (let e = r.length - 1; e >= R; --e) {
69
69
  const t = r[e];
70
- if (!Q(o[t])) continue;
70
+ if (!U(o[t])) continue;
71
71
  const i = b(o[t].spec.axesSpec[0]), a = r.findIndex((O) => I(o[O].id, i));
72
72
  a !== -1 ? r[a] = t : console.warn(`multiple label columns match axisId: ${JSON.stringify(i)}`), r.splice(e, 1), h.splice(e, 1);
73
73
  }
74
74
  const $ = [
75
75
  V(),
76
- ...h.map((e, t) => W(e, o[e], o[r[t]], u, f))
76
+ ...h.map((e, t) => X(e, o[e], o[r[t]], u, f))
77
77
  ], g = [...r], S = /* @__PURE__ */ new Map();
78
78
  for (let e = 0; e < x; ++e) S.set(e, -1);
79
79
  g.forEach((e, t) => {
@@ -124,10 +124,10 @@ async function le({
124
124
  length: t
125
125
  });
126
126
  if (C !== s.value || e.api.isDestroyed()) return e.fail();
127
- i = U(h, a, G, F);
127
+ i = W(h, a, G, F);
128
128
  }
129
129
  e.success({ rowData: i, rowCount: y }), e.api.autoSizeColumns(
130
- e.api.getAllDisplayedColumns().filter((a) => a.getColId() !== Y)
130
+ e.api.getAllDisplayedColumns().filter((a) => a.getColId() !== j)
131
131
  ), e.api.setGridOption("loading", !1);
132
132
  } catch (t) {
133
133
  if (C !== s.value || e.api.isDestroyed()) return e.fail();
@@ -139,12 +139,12 @@ async function le({
139
139
  }
140
140
  };
141
141
  }
142
- function W(s, n, m, c, l) {
142
+ function X(s, n, m, c, l) {
143
143
  var p, w;
144
144
  const u = N({
145
145
  source: n,
146
146
  labeled: m
147
- }), f = n.type === "axis" ? n.spec.type : n.spec.valueType, d = j(n), o = {};
147
+ }), f = n.type === "axis" ? n.spec.type : n.spec.valueType, d = Q(n), o = {};
148
148
  return d.fontFamily && (d.fontFamily === "monospace" ? (o.fontFamily = "Spline Sans Mono", o.fontWeight = 300) : o.fontFamily = d.fontFamily), {
149
149
  colId: u,
150
150
  mainMenuItems: A,
@@ -206,7 +206,7 @@ function W(s, n, m, c, l) {
206
206
  }
207
207
  export {
208
208
  le as calculateGridOptions,
209
- Q as isLabelColumn,
210
- W as makeColDef
209
+ U as isLabelColumn,
210
+ X as makeColDef
211
211
  };
212
212
  //# sourceMappingURL=table-source-v2.js.map
@@ -7,12 +7,13 @@
7
7
  .pl-ag-chart-stacked-bar-cell{height:100%;display:flex;flex-direction:row;align-items:center}.pl-ag-chart-stacked-bar-cell__not-ready{color:var(--txt-03)!important}
8
8
  .pl-ag-chart-histogram-cell{height:100%;display:flex;flex-direction:row;align-items:center}.pl-ag-chart-histogram-cell__not-ready{color:var(--txt-03)!important}
9
9
  .pl-ag-cell-status-tag{height:100%;padding:0 12px}`)),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
10
- import { defineComponent as x, ref as c, computed as C, onBeforeMount as h, onBeforeUnmount as y, createElementBlock as d, openBlock as i, normalizeClass as n, unref as t, createCommentVNode as u, createBlock as B, toDisplayString as b } from "vue";
10
+ import { defineComponent as x, ref as c, computed as C, onBeforeMount as h, onBeforeUnmount as y, createElementBlock as d, openBlock as l, normalizeClass as n, unref as t, createCommentVNode as u, createBlock as B, toDisplayString as b } from "vue";
11
11
  import "../../lib/ui/uikit/dist/index.js";
12
12
  import r from "./pl-ag-row-num-checkbox.module.scss.js";
13
13
 
14
14
 
15
15
  import "../../sdk/model/dist/index.js";
16
+ import "../../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js";
16
17
  import "../../aggrid.js";
17
18
 
18
19
  import "../../plugins/Monetization/validation.js";
@@ -31,7 +32,7 @@ import "../PlMultiSequenceAlignment/data.js";
31
32
  import "@milaboratories/biowasm-tools";
32
33
  import "../../composition/fileContent.js";
33
34
  import E from "../../lib/ui/uikit/dist/components/PlCheckbox/PlCheckbox.vue.js";
34
- const W = /* @__PURE__ */ x({
35
+ const X = /* @__PURE__ */ x({
35
36
  __name: "PlAgRowNumCheckbox",
36
37
  props: {
37
38
  params: {}
@@ -39,21 +40,21 @@ const W = /* @__PURE__ */ x({
39
40
  setup(f) {
40
41
  const e = f, a = e.params.api, o = c(!!e.params.node.isSelected()), v = C(() => o.value || p(a)), S = c(p(a)), m = () => {
41
42
  o.value = e.params.node.isSelected() !== !1;
42
- }, k = (l) => {
43
- p(a) && (e.params.node.setSelected(l), m());
43
+ }, k = (i) => {
44
+ p(a) && (e.params.node.setSelected(i), m());
44
45
  };
45
46
  return h(() => {
46
47
  e.params.node.addEventListener("rowSelected", m);
47
48
  }), y(() => {
48
49
  e.params.node.removeEventListener("rowSelected", m);
49
- }), (l, s) => (i(), d("div", {
50
+ }), (i, s) => (l(), d("div", {
50
51
  class: n([t(r).container, { [t(r)["allowed-selection"]]: S.value }, "d-flex", "justify-center", "align-center"])
51
52
  }, [
52
- o.value ? u("", !0) : (i(), d("div", {
53
+ o.value ? u("", !0) : (l(), d("div", {
53
54
  key: 0,
54
55
  class: n([t(r).text])
55
- }, b(l.params.value), 3)),
56
- v.value ? (i(), B(t(E), {
56
+ }, b(i.params.value), 3)),
57
+ v.value ? (l(), B(t(E), {
57
58
  key: 1,
58
59
  modelValue: o.value,
59
60
  "onUpdate:modelValue": [
@@ -66,6 +67,6 @@ const W = /* @__PURE__ */ x({
66
67
  }
67
68
  });
68
69
  export {
69
- W as default
70
+ X as default
70
71
  };
71
72
  //# sourceMappingURL=PlAgRowNumCheckbox.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgRowNumCheckbox.vue.js","sources":["../../../src/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport { PlCheckbox } from '@milaboratories/uikit';\nimport { ref, computed, onBeforeMount, onBeforeUnmount } from 'vue';\nimport $styles from './pl-ag-row-num-checkbox.module.scss';\nimport { isSelectionEnabled } from '../../lib';\n\nconst props = defineProps<{ params: ICellRendererParams }>();\n\nconst api = props.params.api;\nconst isChecked = ref(!!props.params.node.isSelected());\nconst forceShowCheckbox = computed(() => isChecked.value || isSelectionEnabled(api));\nconst allowedSelection = ref(isSelectionEnabled(api));\n\nconst updateSelection = () => {\n isChecked.value = props.params.node.isSelected() !== false;\n};\n\nconst setSelection = (val: boolean) => {\n if (isSelectionEnabled(api)) {\n props.params.node.setSelected(val);\n updateSelection();\n }\n};\n\nonBeforeMount(() => {\n props.params.node.addEventListener('rowSelected', updateSelection);\n});\n\nonBeforeUnmount(() => {\n props.params.node.removeEventListener('rowSelected', updateSelection);\n});\n</script>\n\n<template>\n <div :class=\"[$styles.container, { [$styles['allowed-selection']]: allowedSelection }, 'd-flex', 'justify-center', 'align-center']\">\n <div v-if=\"!isChecked\" :class=\"[$styles.text]\">{{ params.value }}</div>\n <PlCheckbox\n v-if=\"forceShowCheckbox\"\n v-model=\"isChecked\"\n :class=\"[$styles.checkbox, isChecked && $styles.checked]\"\n @update:modelValue=\"setSelection\"\n />\n </div>\n</template>\n"],"names":["props","__props","api","isChecked","ref","forceShowCheckbox","computed","isSelectionEnabled","allowedSelection","updateSelection","setSelection","val","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAMF,EAAM,OAAO,KACnBG,IAAYC,EAAI,CAAC,CAACJ,EAAM,OAAO,KAAK,YAAY,GAChDK,IAAoBC,EAAS,MAAMH,EAAU,SAASI,EAAmBL,CAAG,CAAC,GAC7EM,IAAmBJ,EAAIG,EAAmBL,CAAG,CAAC,GAE9CO,IAAkB,MAAM;AAC5B,MAAAN,EAAU,QAAQH,EAAM,OAAO,KAAK,iBAAiB;AAAA,IACvD,GAEMU,IAAe,CAACC,MAAiB;AACjC,MAAAJ,EAAmBL,CAAG,MAClBF,EAAA,OAAO,KAAK,YAAYW,CAAG,GACjBF,EAAA;AAAA,IAEpB;AAEA,WAAAG,EAAc,MAAM;AAClB,MAAAZ,EAAM,OAAO,KAAK,iBAAiB,eAAeS,CAAe;AAAA,IAAA,CAClE,GAEDI,EAAgB,MAAM;AACpB,MAAAb,EAAM,OAAO,KAAK,oBAAoB,eAAeS,CAAe;AAAA,IAAA,CACrE;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlAgRowNumCheckbox.vue.js","sources":["../../../src/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { ICellRendererParams } from 'ag-grid-enterprise';\nimport { PlCheckbox } from '@milaboratories/uikit';\nimport { ref, computed, onBeforeMount, onBeforeUnmount } from 'vue';\nimport $styles from './pl-ag-row-num-checkbox.module.scss';\nimport { isSelectionEnabled } from '../../lib';\n\nconst props = defineProps<{ params: ICellRendererParams }>();\n\nconst api = props.params.api;\nconst isChecked = ref(!!props.params.node.isSelected());\nconst forceShowCheckbox = computed(() => isChecked.value || isSelectionEnabled(api));\nconst allowedSelection = ref(isSelectionEnabled(api));\n\nconst updateSelection = () => {\n isChecked.value = props.params.node.isSelected() !== false;\n};\n\nconst setSelection = (val: boolean) => {\n if (isSelectionEnabled(api)) {\n props.params.node.setSelected(val);\n updateSelection();\n }\n};\n\nonBeforeMount(() => {\n props.params.node.addEventListener('rowSelected', updateSelection);\n});\n\nonBeforeUnmount(() => {\n props.params.node.removeEventListener('rowSelected', updateSelection);\n});\n</script>\n\n<template>\n <div :class=\"[$styles.container, { [$styles['allowed-selection']]: allowedSelection }, 'd-flex', 'justify-center', 'align-center']\">\n <div v-if=\"!isChecked\" :class=\"[$styles.text]\">{{ params.value }}</div>\n <PlCheckbox\n v-if=\"forceShowCheckbox\"\n v-model=\"isChecked\"\n :class=\"[$styles.checkbox, isChecked && $styles.checked]\"\n @update:modelValue=\"setSelection\"\n />\n </div>\n</template>\n"],"names":["props","__props","api","isChecked","ref","forceShowCheckbox","computed","isSelectionEnabled","allowedSelection","updateSelection","setSelection","val","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAERC,IAAMF,EAAM,OAAO,KACnBG,IAAYC,EAAI,CAAC,CAACJ,EAAM,OAAO,KAAK,YAAY,GAChDK,IAAoBC,EAAS,MAAMH,EAAU,SAASI,EAAmBL,CAAG,CAAC,GAC7EM,IAAmBJ,EAAIG,EAAmBL,CAAG,CAAC,GAE9CO,IAAkB,MAAM;AAC5B,MAAAN,EAAU,QAAQH,EAAM,OAAO,KAAK,iBAAiB;AAAA,IACvD,GAEMU,IAAe,CAACC,MAAiB;AACjC,MAAAJ,EAAmBL,CAAG,MAClBF,EAAA,OAAO,KAAK,YAAYW,CAAG,GACjBF,EAAA;AAAA,IAEpB;AAEA,WAAAG,EAAc,MAAM;AAClB,MAAAZ,EAAM,OAAO,KAAK,iBAAiB,eAAeS,CAAe;AAAA,IAAA,CAClE,GAEDI,EAAgB,MAAM;AACpB,MAAAb,EAAM,OAAO,KAAK,oBAAoB,eAAeS,CAAe;AAAA,IAAA,CACrE;;;;;;;;;;;;;;;;;;;"}
@@ -12,6 +12,7 @@ import "../lib/ui/uikit/dist/index.js";
12
12
 
13
13
 
14
14
  import "../sdk/model/dist/index.js";
15
+ import "../node_modules/.pnpm/fast-json-patch@3.1.1/node_modules/fast-json-patch/index.js";
15
16
  import "../aggrid.js";
16
17
 
17
18
  import "../plugins/Monetization/validation.js";
@@ -30,7 +31,7 @@ import "./PlMultiSequenceAlignment/data.js";
30
31
  import "@milaboratories/biowasm-tools";
31
32
  import "../composition/fileContent.js";
32
33
  import h from "../lib/ui/uikit/dist/components/PlCheckbox/PlCheckbox.vue.js";
33
- const k = { style: { position: "absolute", inset: "0", display: "flex", "justify-content": "center", "align-items": "center" } }, B = { key: 1 }, $ = /* @__PURE__ */ E({
34
+ const k = { style: { position: "absolute", inset: "0", display: "flex", "justify-content": "center", "align-items": "center" } }, B = { key: 1 }, _ = /* @__PURE__ */ E({
34
35
  __name: "PlAgRowNumHeader",
35
36
  props: {
36
37
  params: {}
@@ -65,6 +66,6 @@ const k = { style: { position: "absolute", inset: "0", display: "flex", "justify
65
66
  }
66
67
  });
67
68
  export {
68
- $ as default
69
+ _ as default
69
70
  };
70
71
  //# sourceMappingURL=PlAgRowNumHeader.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgRowNumHeader.vue.js","sources":["../../src/components/PlAgRowNumHeader.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlCheckbox } from '@milaboratories/uikit';\nimport type { IHeaderParams } from 'ag-grid-enterprise';\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue';\nimport { deselectAll, getSelectedRowsCount, getTotalRowsCount, isSelectionEnabled, selectAll } from '../lib';\n\nconst { params } = defineProps<{\n params: IHeaderParams;\n}>();\n\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst isSelectable = ref(isSelectionEnabled(params.api));\n\nconst someRowsSelected = computed(() =>\n selectedRowCount.value > 0,\n);\n\nconst allRowsSelected = computed(() =>\n someRowsSelected.value\n && selectedRowCount.value === totalRowCount.value,\n);\n\nfunction toggleSelectAll() {\n if (someRowsSelected.value) {\n deselectAll(params.api);\n } else {\n selectAll(params.api);\n }\n}\n\nfunction updateRowCounts() {\n selectedRowCount.value = getSelectedRowsCount(params.api);\n totalRowCount.value = getTotalRowsCount(params.api);\n}\n\nfunction updateIsSelectable() {\n isSelectable.value = isSelectionEnabled(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener('selectionChanged', updateRowCounts);\n params.api.addEventListener('rowDataUpdated', updateRowCounts);\n params.api.addEventListener('modelUpdated', updateRowCounts);\n params.api.addEventListener('stateUpdated', updateIsSelectable);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener('selectionChanged', updateRowCounts);\n params.api.removeEventListener('rowDataUpdated', updateRowCounts);\n params.api.removeEventListener('modelUpdated', updateRowCounts);\n params.api.removeEventListener('stateUpdated', updateIsSelectable);\n});\n</script>\n\n<template>\n <div\n style=\"\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n >\n <PlCheckbox\n v-if=\"isSelectable\"\n :model-value=\"someRowsSelected\"\n :indeterminate=\"someRowsSelected && !allRowsSelected\"\n @update:model-value=\"toggleSelectAll\"\n />\n <span v-else>\n {{ params.displayName }}\n </span>\n </div>\n</template>\n"],"names":["selectedRowCount","ref","getSelectedRowsCount","__props","totalRowCount","getTotalRowsCount","isSelectable","isSelectionEnabled","someRowsSelected","computed","allRowsSelected","toggleSelectAll","deselectAll","selectAll","updateRowCounts","updateIsSelectable","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAMA,IAAmBC,EAAIC,EAAqBC,EAAM,OAAC,GAAG,CAAC,GACvDC,IAAgBH,EAAII,EAAkBF,EAAA,OAAO,GAAG,CAAC,GACjDG,IAAeL,EAAIM,EAAmBJ,EAAA,OAAO,GAAG,CAAC,GAEjDK,IAAmBC;AAAA,MAAS,MAChCT,EAAiB,QAAQ;AAAA,IAC3B,GAEMU,IAAkBD;AAAA,MAAS,MAC/BD,EAAiB,SACdR,EAAiB,UAAUI,EAAc;AAAA,IAC9C;AAEA,aAASO,IAAkB;AACzB,MAAIH,EAAiB,QACPI,EAAAT,EAAA,OAAO,GAAG,IAEZU,EAAAV,EAAA,OAAO,GAAG;AAAA,IACtB;AAGF,aAASW,IAAkB;AACzB,MAAAd,EAAiB,QAAQE,EAAqBC,SAAO,GAAG,GACxDC,EAAc,QAAQC,EAAkBF,SAAO,GAAG;AAAA,IAAA;AAGpD,aAASY,IAAqB;AAC5B,MAAAT,EAAa,QAAQC,EAAmBJ,SAAO,GAAG;AAAA,IAAA;AAGpD,WAAAa,EAAc,MAAM;AAClB,MAAAb,EAAM,OAAC,IAAI,iBAAiB,oBAAoBW,CAAe,GAC/DX,EAAM,OAAC,IAAI,iBAAiB,kBAAkBW,CAAe,GAC7DX,EAAM,OAAC,IAAI,iBAAiB,gBAAgBW,CAAe,GAC3DX,EAAM,OAAC,IAAI,iBAAiB,gBAAgBY,CAAkB;AAAA,IAAA,CAC/D,GAEDE,EAAgB,MAAM;AACpB,MAAAd,EAAA,OAAO,IAAI,oBAAoB,oBAAoBW,CAAe,GAClEX,EAAA,OAAO,IAAI,oBAAoB,kBAAkBW,CAAe,GAChEX,EAAM,OAAC,IAAI,oBAAoB,gBAAgBW,CAAe,GAC9DX,EAAA,OAAO,IAAI,oBAAoB,gBAAgBY,CAAkB;AAAA,IAAA,CAClE;;;;;;;;;;"}
1
+ {"version":3,"file":"PlAgRowNumHeader.vue.js","sources":["../../src/components/PlAgRowNumHeader.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { PlCheckbox } from '@milaboratories/uikit';\nimport type { IHeaderParams } from 'ag-grid-enterprise';\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from 'vue';\nimport { deselectAll, getSelectedRowsCount, getTotalRowsCount, isSelectionEnabled, selectAll } from '../lib';\n\nconst { params } = defineProps<{\n params: IHeaderParams;\n}>();\n\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst isSelectable = ref(isSelectionEnabled(params.api));\n\nconst someRowsSelected = computed(() =>\n selectedRowCount.value > 0,\n);\n\nconst allRowsSelected = computed(() =>\n someRowsSelected.value\n && selectedRowCount.value === totalRowCount.value,\n);\n\nfunction toggleSelectAll() {\n if (someRowsSelected.value) {\n deselectAll(params.api);\n } else {\n selectAll(params.api);\n }\n}\n\nfunction updateRowCounts() {\n selectedRowCount.value = getSelectedRowsCount(params.api);\n totalRowCount.value = getTotalRowsCount(params.api);\n}\n\nfunction updateIsSelectable() {\n isSelectable.value = isSelectionEnabled(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener('selectionChanged', updateRowCounts);\n params.api.addEventListener('rowDataUpdated', updateRowCounts);\n params.api.addEventListener('modelUpdated', updateRowCounts);\n params.api.addEventListener('stateUpdated', updateIsSelectable);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener('selectionChanged', updateRowCounts);\n params.api.removeEventListener('rowDataUpdated', updateRowCounts);\n params.api.removeEventListener('modelUpdated', updateRowCounts);\n params.api.removeEventListener('stateUpdated', updateIsSelectable);\n});\n</script>\n\n<template>\n <div\n style=\"\n position: absolute;\n inset: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n >\n <PlCheckbox\n v-if=\"isSelectable\"\n :model-value=\"someRowsSelected\"\n :indeterminate=\"someRowsSelected && !allRowsSelected\"\n @update:model-value=\"toggleSelectAll\"\n />\n <span v-else>\n {{ params.displayName }}\n </span>\n </div>\n</template>\n"],"names":["selectedRowCount","ref","getSelectedRowsCount","__props","totalRowCount","getTotalRowsCount","isSelectable","isSelectionEnabled","someRowsSelected","computed","allRowsSelected","toggleSelectAll","deselectAll","selectAll","updateRowCounts","updateIsSelectable","onBeforeMount","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAMA,IAAmBC,EAAIC,EAAqBC,EAAM,OAAC,GAAG,CAAC,GACvDC,IAAgBH,EAAII,EAAkBF,EAAA,OAAO,GAAG,CAAC,GACjDG,IAAeL,EAAIM,EAAmBJ,EAAA,OAAO,GAAG,CAAC,GAEjDK,IAAmBC;AAAA,MAAS,MAChCT,EAAiB,QAAQ;AAAA,IAC3B,GAEMU,IAAkBD;AAAA,MAAS,MAC/BD,EAAiB,SACdR,EAAiB,UAAUI,EAAc;AAAA,IAC9C;AAEA,aAASO,IAAkB;AACzB,MAAIH,EAAiB,QACPI,EAAAT,EAAA,OAAO,GAAG,IAEZU,EAAAV,EAAA,OAAO,GAAG;AAAA,IACtB;AAGF,aAASW,IAAkB;AACzB,MAAAd,EAAiB,QAAQE,EAAqBC,SAAO,GAAG,GACxDC,EAAc,QAAQC,EAAkBF,SAAO,GAAG;AAAA,IAAA;AAGpD,aAASY,IAAqB;AAC5B,MAAAT,EAAa,QAAQC,EAAmBJ,SAAO,GAAG;AAAA,IAAA;AAGpD,WAAAa,EAAc,MAAM;AAClB,MAAAb,EAAM,OAAC,IAAI,iBAAiB,oBAAoBW,CAAe,GAC/DX,EAAM,OAAC,IAAI,iBAAiB,kBAAkBW,CAAe,GAC7DX,EAAM,OAAC,IAAI,iBAAiB,gBAAgBW,CAAe,GAC3DX,EAAM,OAAC,IAAI,iBAAiB,gBAAgBY,CAAkB;AAAA,IAAA,CAC/D,GAEDE,EAAgB,MAAM;AACpB,MAAAd,EAAA,OAAO,IAAI,oBAAoB,oBAAoBW,CAAe,GAClEX,EAAA,OAAO,IAAI,oBAAoB,kBAAkBW,CAAe,GAChEX,EAAM,OAAC,IAAI,oBAAoB,gBAAgBW,CAAe,GAC9DX,EAAA,OAAO,IAAI,oBAAoB,gBAAgBY,CAAkB;AAAA,IAAA,CAClE;;;;;;;;;;"}