@vuu-ui/vuu-data-remote 0.11.2 → 0.12.0

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.
@@ -69,6 +69,11 @@ class VuuDataSource extends vuuUtils.BaseDataSource {
69
69
  `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`
70
70
  );
71
71
  }
72
+ if (message.type === "viewport-update") {
73
+ console.log(
74
+ `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`
75
+ );
76
+ }
72
77
  this._clientCallback?.(message);
73
78
  }
74
79
  if (this.optimize === "debounce") {
@@ -132,6 +137,9 @@ class VuuDataSource extends vuuUtils.BaseDataSource {
132
137
  this.server = await ConnectionManager.serverAPI;
133
138
  const { bufferSize } = this;
134
139
  const dataSourceConfig = vuuUtils.combineFilters(this.config);
140
+ console.log(
141
+ `[VuuDataSource] subscribe, send subscribe message range (${this._range.from}:${this._range.to})`
142
+ );
135
143
  this.server?.subscribe(
136
144
  {
137
145
  ...dataSourceConfig,
@@ -157,7 +165,7 @@ class VuuDataSource extends vuuUtils.BaseDataSource {
157
165
  this.removeAllListeners();
158
166
  __privateSet(this, _status, "unsubscribed");
159
167
  this.viewport = "";
160
- this.range = { from: 0, to: 0 };
168
+ this.range = vuuUtils.Range(0, 0);
161
169
  }
162
170
  }
163
171
  suspend() {
@@ -1 +1 @@
1
- {"version":3,"file":"VuuDataSource.js","sources":["../src/VuuDataSource.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceCallbackMessage,\n DataSourceConstructorProps,\n DataSourceStatus,\n DataSourceVisualLinkCreatedMessage,\n OptimizeStrategy,\n Selection,\n ServerAPI,\n SubscribeCallback,\n SubscribeProps,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuCreateVisualLink,\n VuuDataRowDto,\n VuuGroupBy,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n VuuRpcMenuRequest,\n VuuRpcRequest,\n VuuRpcResponse,\n VuuRpcViewportRequest,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nimport {\n BaseDataSource,\n combineFilters,\n debounce,\n isViewportMenusAction,\n isVisualLinksAction,\n itemsOrOrderChanged,\n logger,\n selectionCount,\n throttle,\n uuid,\n vuuAddRowRequest,\n vuuDeleteRowRequest,\n vuuEditCellRequest,\n} from \"@vuu-ui/vuu-utils\";\nimport ConnectionManager from \"./ConnectionManager\";\nimport { isDataSourceConfigMessage } from \"./data-source\";\n\nimport { MenuRpcResponse } from \"@vuu-ui/vuu-data-types\";\n\ntype RangeRequest = (range: VuuRange) => void;\n\nconst { info, infoEnabled } = logger(\"VuuDataSource\");\n\n/*---------------------------------------------------------------------\n A VuuDataSource manages a single subscription via the ServerProxy\n ---------------------------------------------------------------------*/\nexport class VuuDataSource extends BaseDataSource implements DataSource {\n private bufferSize: number;\n private server: ServerAPI | null = null;\n rangeRequest: RangeRequest;\n\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #links: LinkDescriptorWithLabel[] | undefined;\n #menu: VuuMenu | undefined;\n #optimize: OptimizeStrategy = \"throttle\";\n #selectedRowsCount = 0;\n #status: DataSourceStatus = \"initialising\";\n #tableSchema: TableSchema | undefined;\n\n public table: VuuTable;\n\n constructor(props: DataSourceConstructorProps) {\n super(props);\n\n const { bufferSize = 100, table, visualLink } = props;\n\n if (!table)\n throw Error(\"RemoteDataSource constructor called without table\");\n\n this.bufferSize = bufferSize;\n this.table = table;\n\n this.#pendingVisualLink = visualLink;\n\n // this.rangeRequest = this.throttleRangeRequest;\n this.rangeRequest = this.rawRangeRequest;\n }\n\n async subscribe(subscribeProps: SubscribeProps, callback: SubscribeCallback) {\n super.subscribe(subscribeProps, callback);\n const {\n selectedIndexValues,\n viewport = this.viewport || (this.viewport = uuid()),\n } = subscribeProps;\n\n if (this.#status === \"disabled\" || this.#status === \"disabling\") {\n this.enable(callback);\n return;\n }\n\n if (\n this.#status !== \"initialising\" &&\n this.#status !== \"unsubscribed\"\n // We can subscribe to a disabled dataSource. No request will be\n // sent to server to create a new VP, just to enable the existing one.\n // The current subscribing client becomes the subscription owner\n ) {\n return;\n }\n\n this.#status = \"subscribing\";\n this.#selectedRowsCount = selectionCount(selectedIndexValues);\n\n this.server = await ConnectionManager.serverAPI;\n\n const { bufferSize } = this;\n\n // TODO and await response here\n\n const dataSourceConfig = combineFilters(this.config);\n\n this.server?.subscribe(\n {\n ...dataSourceConfig,\n bufferSize,\n range: this._range,\n selectedIndexValues: selectedIndexValues,\n table: this.table,\n title: this._title,\n viewport,\n },\n this.handleMessageFromServer,\n );\n }\n\n handleMessageFromServer = (message: DataSourceCallbackMessage) => {\n if (message.type === \"subscribed\") {\n this.#status = \"subscribed\";\n this.tableSchema = message.tableSchema;\n this._clientCallback?.(message);\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n this.emit(\"subscribed\", message);\n } else if (message.type === \"disabled\") {\n this.#status = \"disabled\";\n } else if (message.type === \"enabled\") {\n this.#status = \"enabled\";\n } else if (isDataSourceConfigMessage(message)) {\n // This is an ACK for a CHANGE_VP message. Nothing to do here. We need\n // to wait for data to be returned before we can consider the change\n // to be in effect.\n return;\n } else if (message.type === \"debounce-begin\") {\n this.optimize = \"debounce\";\n } else {\n if (\n message.type === \"viewport-update\" &&\n message.size !== undefined &&\n message.size !== this.size\n ) {\n this.size = message.size;\n this.emit(\"resize\", message.size);\n } else if (message.type === \"viewport-clear\") {\n this.size = 0;\n this.emit(\"resize\", 0);\n }\n // This is used to remove any progress indication from the UI. We wait for actual data rather than\n // just the CHANGE_VP_SUCCESS ack as there is often a delay between receiving the ack and the data.\n // It may be a SIZE only message, eg in the case of removing a groupBy column from a multi-column\n // groupby, where no tree nodes are expanded.\n if (this.isAwaitingConfirmationOfConfigChange) {\n this.confirmConfigChange();\n }\n\n if (isViewportMenusAction(message)) {\n this.#menu = message.menu;\n } else if (isVisualLinksAction(message)) {\n this.#links = message.links as LinkDescriptorWithLabel[];\n } else {\n if (infoEnabled && message.type === \"viewport-update\") {\n info(\n `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`,\n );\n }\n this._clientCallback?.(message);\n }\n\n if (this.optimize === \"debounce\") {\n this.revertDebounce();\n }\n }\n };\n\n unsubscribe() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`unsubscribe #${this.viewport}`);\n if (this.viewport) {\n this.server?.unsubscribe(this.viewport);\n this.emit(\"unsubscribed\", this.viewport);\n }\n this.server?.destroy(this.viewport);\n this.server = null;\n this.removeAllListeners();\n this.#status = \"unsubscribed\";\n this.viewport = \"\";\n this.range = { from: 0, to: 0 };\n }\n }\n\n suspend() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`suspend #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"suspended\";\n this.server?.send({\n type: \"suspend\",\n viewport: this.viewport,\n });\n this.emit(\"suspended\", this.viewport);\n }\n }\n }\n\n resume(callback?: SubscribeCallback) {\n const isDisabled = this.#status.startsWith(\"disabl\");\n const isSuspended = this.#status === \"suspended\";\n info?.(`resume #${this.viewport}, current status ${this.#status}`);\n if (callback) {\n this._clientCallback = callback;\n }\n if (this.viewport) {\n if (isDisabled) {\n this.enable();\n } else if (isSuspended) {\n this.server?.send({\n type: \"resume\",\n viewport: this.viewport,\n });\n this.#status = \"subscribed\";\n this.emit(\"resumed\", this.viewport);\n }\n }\n }\n\n disable() {\n info?.(`disable #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"disabling\";\n this.server?.send({\n viewport: this.viewport,\n type: \"disable\",\n });\n this.emit(\"disabled\", this.viewport);\n }\n }\n\n enable(callback?: SubscribeCallback) {\n info?.(`enable #${this.viewport}, current status ${this.#status}`);\n if (\n this.viewport &&\n (this.#status === \"disabled\" || this.#status === \"disabling\")\n ) {\n this.#status = \"enabling\";\n if (callback) {\n this._clientCallback = callback;\n }\n this.server?.send({\n viewport: this.viewport,\n type: \"enable\",\n });\n this.emit(\"enabled\", this.viewport);\n }\n }\n\n select(selected: Selection) {\n this.#selectedRowsCount = selectionCount(selected);\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"select\",\n selected,\n });\n this.emit(\"row-selection\", selected, this.#selectedRowsCount);\n }\n }\n\n openTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"openTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n closeTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"closeTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n get tableSchema() {\n return this.#tableSchema;\n }\n\n set tableSchema(tableSchema: TableSchema | undefined) {\n this.#tableSchema = tableSchema;\n // TOSO emit an event\n }\n\n get links() {\n return this.#links;\n }\n\n get menu() {\n return this.#menu;\n }\n\n get status() {\n return this.#status;\n }\n\n get optimize() {\n return this.#optimize;\n }\n\n set optimize(optimize: OptimizeStrategy) {\n if (optimize !== this.#optimize) {\n this.#optimize = optimize;\n switch (optimize) {\n case \"none\":\n this.rangeRequest = this.rawRangeRequest;\n break;\n case \"debounce\":\n this.rangeRequest = this.debounceRangeRequest;\n break;\n case \"throttle\":\n this.rangeRequest = this.throttleRangeRequest;\n break;\n }\n this.emit(\"optimize\", optimize);\n }\n }\n\n private revertDebounce = debounce(() => {\n this.optimize = \"throttle\";\n }, 100);\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n private rawRangeRequest: RangeRequest = (range) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n };\n\n private debounceRangeRequest: RangeRequest = debounce((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 50);\n\n private throttleRangeRequest: RangeRequest = throttle((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 80);\n\n get config() {\n return super.config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.config = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this._config),\n });\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.impendingConfig = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this.config),\n });\n }\n }\n\n get groupBy() {\n return this._config.groupBy;\n }\n\n set groupBy(groupBy: VuuGroupBy) {\n if (itemsOrOrderChanged(this.groupBy, groupBy)) {\n const wasGrouped = this.groupBy.length > 0;\n\n this.impendingConfig = {\n ...this._config,\n groupBy,\n };\n\n if (!wasGrouped && groupBy.length > 0 && this.viewport) {\n this._clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n type: \"viewport-update\",\n size: 0,\n rows: [],\n });\n }\n }\n }\n\n get title() {\n return super.title || `${this.table.module} ${this.table.table}`;\n }\n\n set title(title: string) {\n super.title = title;\n if (this.viewport && title) {\n // This message doesn't actually trigger a message to Vuu server\n // it will be used to recompute visual link labels\n this.server?.send({\n type: \"setTitle\",\n title,\n viewport: this.viewport,\n });\n }\n }\n\n get visualLink() {\n return this._config.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._config = {\n ...this._config,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.server\n ?.rpcCall<DataSourceVisualLinkCreatedMessage>({\n childColumnName: fromColumn,\n childVpId: this.viewport,\n parentColumnName: toColumn,\n parentVpId: parentClientVpId,\n type: \"CREATE_VISUAL_LINK\",\n } as VuuCreateVisualLink)\n .then((response) => {\n this.emit(\"visual-link-created\", response);\n });\n }\n } else {\n if (this.viewport) {\n this.server\n ?.rpcCall({\n type: \"REMOVE_VISUAL_LINK\",\n childVpId: this.viewport,\n })\n .then(() => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n this.emit(\"config\", this._config, this.range);\n }\n\n async remoteProcedureCall<T extends VuuRpcResponse = VuuRpcResponse>() {\n return Promise.reject<T>();\n }\n\n /** @deprecated */\n async rpcCall<T extends VuuRpcResponse = VuuRpcResponse>(\n rpcRequest: Omit<VuuRpcRequest, \"vpId\">,\n ) {\n if (this.viewport && this.server) {\n return this.server?.rpcCall<T>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcViewportRequest);\n } else {\n throw Error(`rpcCall server or viewport are undefined`);\n }\n }\n\n /** @deprecated */\n async menuRpcCall(rpcRequest: Omit<VuuRpcRequest, \"vpId\">) {\n if (this.viewport) {\n return this.server?.rpcCall<MenuRpcResponse>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcMenuRequest);\n }\n }\n\n applyEdit(rowKey: string, columnName: string, value: VuuRowDataItemType) {\n return this.menuRpcCall(vuuEditCellRequest(rowKey, columnName, value)).then(\n (response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n },\n );\n }\n\n insertRow(rowKey: string, data: VuuDataRowDto) {\n return this.menuRpcCall(vuuAddRowRequest(rowKey, data)).then((response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n });\n }\n deleteRow(rowKey: string) {\n return this.menuRpcCall(vuuDeleteRowRequest(rowKey)).then((response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n });\n }\n}\n"],"names":["logger","BaseDataSource","isDataSourceConfigMessage","isViewportMenusAction","isVisualLinksAction","debounce","throttle","uuid","selectionCount","combineFilters","itemsOrOrderChanged","vuuEditCellRequest","vuuAddRowRequest","vuuDeleteRowRequest"],"mappings":"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"}
1
+ {"version":3,"file":"VuuDataSource.js","sources":["../src/VuuDataSource.ts"],"sourcesContent":["import {\n DataSource,\n DataSourceCallbackMessage,\n DataSourceConstructorProps,\n DataSourceStatus,\n DataSourceVisualLinkCreatedMessage,\n OptimizeStrategy,\n Selection,\n ServerAPI,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuCreateVisualLink,\n VuuDataRowDto,\n VuuGroupBy,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n VuuRpcMenuRequest,\n VuuRpcRequest,\n VuuRpcResponse,\n VuuRpcViewportRequest,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nimport {\n BaseDataSource,\n combineFilters,\n debounce,\n isViewportMenusAction,\n isVisualLinksAction,\n itemsOrOrderChanged,\n logger,\n Range,\n selectionCount,\n throttle,\n uuid,\n vuuAddRowRequest,\n vuuDeleteRowRequest,\n vuuEditCellRequest,\n} from \"@vuu-ui/vuu-utils\";\nimport ConnectionManager from \"./ConnectionManager\";\nimport { isDataSourceConfigMessage } from \"./data-source\";\n\nimport { MenuRpcResponse } from \"@vuu-ui/vuu-data-types\";\n\ntype RangeRequest = (range: VuuRange) => void;\n\nconst { info, infoEnabled } = logger(\"VuuDataSource\");\n\n/*---------------------------------------------------------------------\n A VuuDataSource manages a single subscription via the ServerProxy\n ---------------------------------------------------------------------*/\nexport class VuuDataSource extends BaseDataSource implements DataSource {\n private bufferSize: number;\n private server: ServerAPI | null = null;\n rangeRequest: RangeRequest;\n\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #links: LinkDescriptorWithLabel[] | undefined;\n #menu: VuuMenu | undefined;\n #optimize: OptimizeStrategy = \"throttle\";\n #selectedRowsCount = 0;\n #status: DataSourceStatus = \"initialising\";\n #tableSchema: TableSchema | undefined;\n\n public table: VuuTable;\n\n constructor(props: DataSourceConstructorProps) {\n super(props);\n\n const { bufferSize = 100, table, visualLink } = props;\n\n if (!table)\n throw Error(\"RemoteDataSource constructor called without table\");\n\n this.bufferSize = bufferSize;\n this.table = table;\n\n this.#pendingVisualLink = visualLink;\n\n // this.rangeRequest = this.throttleRangeRequest;\n this.rangeRequest = this.rawRangeRequest;\n }\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n super.subscribe(subscribeProps, callback);\n const {\n selectedIndexValues,\n viewport = this.viewport || (this.viewport = uuid()),\n } = subscribeProps;\n\n if (this.#status === \"disabled\" || this.#status === \"disabling\") {\n this.enable(callback);\n return;\n }\n\n if (\n this.#status !== \"initialising\" &&\n this.#status !== \"unsubscribed\"\n // We can subscribe to a disabled dataSource. No request will be\n // sent to server to create a new VP, just to enable the existing one.\n // The current subscribing client becomes the subscription owner\n ) {\n return;\n }\n\n this.#status = \"subscribing\";\n this.#selectedRowsCount = selectionCount(selectedIndexValues);\n\n this.server = await ConnectionManager.serverAPI;\n\n const { bufferSize } = this;\n\n // TODO and await response here\n\n const dataSourceConfig = combineFilters(this.config);\n\n console.log(\n `[VuuDataSource] subscribe, send subscribe message range (${this._range.from}:${this._range.to})`,\n );\n\n this.server?.subscribe(\n {\n ...dataSourceConfig,\n bufferSize,\n range: this._range,\n selectedIndexValues: selectedIndexValues,\n table: this.table,\n title: this._title,\n viewport,\n },\n this.handleMessageFromServer,\n );\n }\n\n handleMessageFromServer = (message: DataSourceCallbackMessage) => {\n if (message.type === \"subscribed\") {\n this.#status = \"subscribed\";\n this.tableSchema = message.tableSchema;\n this._clientCallback?.(message);\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n this.emit(\"subscribed\", message);\n } else if (message.type === \"disabled\") {\n this.#status = \"disabled\";\n } else if (message.type === \"enabled\") {\n this.#status = \"enabled\";\n } else if (isDataSourceConfigMessage(message)) {\n // This is an ACK for a CHANGE_VP message. Nothing to do here. We need\n // to wait for data to be returned before we can consider the change\n // to be in effect.\n return;\n } else if (message.type === \"debounce-begin\") {\n this.optimize = \"debounce\";\n } else {\n if (\n message.type === \"viewport-update\" &&\n message.size !== undefined &&\n message.size !== this.size\n ) {\n this.size = message.size;\n this.emit(\"resize\", message.size);\n } else if (message.type === \"viewport-clear\") {\n this.size = 0;\n this.emit(\"resize\", 0);\n }\n // This is used to remove any progress indication from the UI. We wait for actual data rather than\n // just the CHANGE_VP_SUCCESS ack as there is often a delay between receiving the ack and the data.\n // It may be a SIZE only message, eg in the case of removing a groupBy column from a multi-column\n // groupby, where no tree nodes are expanded.\n if (this.isAwaitingConfirmationOfConfigChange) {\n this.confirmConfigChange();\n }\n\n if (isViewportMenusAction(message)) {\n this.#menu = message.menu;\n } else if (isVisualLinksAction(message)) {\n this.#links = message.links as LinkDescriptorWithLabel[];\n } else {\n if (infoEnabled && message.type === \"viewport-update\") {\n info(\n `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`,\n );\n }\n if (message.type === \"viewport-update\") {\n console.log(\n `handleMessageFromServer<viewport-update> range (${message.range?.from}:${message.range?.to}) rows ${message.rows?.at(0)?.[0]} - ${message.rows?.at(-1)?.[0]}`,\n );\n }\n this._clientCallback?.(message);\n }\n\n if (this.optimize === \"debounce\") {\n this.revertDebounce();\n }\n }\n };\n\n unsubscribe() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`unsubscribe #${this.viewport}`);\n if (this.viewport) {\n this.server?.unsubscribe(this.viewport);\n this.emit(\"unsubscribed\", this.viewport);\n }\n this.server?.destroy(this.viewport);\n this.server = null;\n this.removeAllListeners();\n this.#status = \"unsubscribed\";\n this.viewport = \"\";\n this.range = Range(0, 0);\n }\n }\n\n suspend() {\n if (this.#status !== \"unsubscribed\") {\n info?.(`suspend #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"suspended\";\n this.server?.send({\n type: \"suspend\",\n viewport: this.viewport,\n });\n this.emit(\"suspended\", this.viewport);\n }\n }\n }\n\n resume(callback?: DataSourceSubscribeCallback) {\n const isDisabled = this.#status.startsWith(\"disabl\");\n const isSuspended = this.#status === \"suspended\";\n info?.(`resume #${this.viewport}, current status ${this.#status}`);\n if (callback) {\n this._clientCallback = callback;\n }\n if (this.viewport) {\n if (isDisabled) {\n this.enable();\n } else if (isSuspended) {\n this.server?.send({\n type: \"resume\",\n viewport: this.viewport,\n });\n this.#status = \"subscribed\";\n this.emit(\"resumed\", this.viewport);\n }\n }\n }\n\n disable() {\n info?.(`disable #${this.viewport}, current status ${this.#status}`);\n if (this.viewport) {\n this.#status = \"disabling\";\n this.server?.send({\n viewport: this.viewport,\n type: \"disable\",\n });\n this.emit(\"disabled\", this.viewport);\n }\n }\n\n enable(callback?: DataSourceSubscribeCallback) {\n info?.(`enable #${this.viewport}, current status ${this.#status}`);\n if (\n this.viewport &&\n (this.#status === \"disabled\" || this.#status === \"disabling\")\n ) {\n this.#status = \"enabling\";\n if (callback) {\n this._clientCallback = callback;\n }\n this.server?.send({\n viewport: this.viewport,\n type: \"enable\",\n });\n this.emit(\"enabled\", this.viewport);\n }\n }\n\n select(selected: Selection) {\n this.#selectedRowsCount = selectionCount(selected);\n if (this.viewport) {\n this.server?.send({\n viewport: this.viewport,\n type: \"select\",\n selected,\n });\n this.emit(\"row-selection\", selected, this.#selectedRowsCount);\n }\n }\n\n openTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"openTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n closeTreeNode(keyOrIndex: string | number) {\n if (this.viewport) {\n const [key, index] =\n typeof keyOrIndex === \"string\" ? [keyOrIndex] : [undefined, keyOrIndex];\n this.server?.send({\n index,\n key,\n type: \"closeTreeNode\",\n viewport: this.viewport,\n });\n }\n }\n\n get tableSchema() {\n return this.#tableSchema;\n }\n\n set tableSchema(tableSchema: TableSchema | undefined) {\n this.#tableSchema = tableSchema;\n // TOSO emit an event\n }\n\n get links() {\n return this.#links;\n }\n\n get menu() {\n return this.#menu;\n }\n\n get status() {\n return this.#status;\n }\n\n get optimize() {\n return this.#optimize;\n }\n\n set optimize(optimize: OptimizeStrategy) {\n if (optimize !== this.#optimize) {\n this.#optimize = optimize;\n switch (optimize) {\n case \"none\":\n this.rangeRequest = this.rawRangeRequest;\n break;\n case \"debounce\":\n this.rangeRequest = this.debounceRangeRequest;\n break;\n case \"throttle\":\n this.rangeRequest = this.throttleRangeRequest;\n break;\n }\n this.emit(\"optimize\", optimize);\n }\n }\n\n private revertDebounce = debounce(() => {\n this.optimize = \"throttle\";\n }, 100);\n\n get selectedRowsCount() {\n return this.#selectedRowsCount;\n }\n\n private rawRangeRequest: RangeRequest = (range) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n };\n\n private debounceRangeRequest: RangeRequest = debounce((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 50);\n\n private throttleRangeRequest: RangeRequest = throttle((range: VuuRange) => {\n if (this.viewport && this.server) {\n this.server.send({\n viewport: this.viewport,\n type: \"setViewRange\",\n range,\n });\n }\n }, 80);\n\n get config() {\n return super.config;\n }\n\n set config(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.config = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this._config),\n });\n }\n }\n\n set impendingConfig(config: WithBaseFilter<WithFullConfig>) {\n if (config !== this.config) {\n super.impendingConfig = config;\n this.server?.send({\n viewport: this.viewport,\n type: \"config\",\n config: combineFilters(this.config),\n });\n }\n }\n\n get groupBy() {\n return this._config.groupBy;\n }\n\n set groupBy(groupBy: VuuGroupBy) {\n if (itemsOrOrderChanged(this.groupBy, groupBy)) {\n const wasGrouped = this.groupBy.length > 0;\n\n this.impendingConfig = {\n ...this._config,\n groupBy,\n };\n\n if (!wasGrouped && groupBy.length > 0 && this.viewport) {\n this._clientCallback?.({\n clientViewportId: this.viewport,\n mode: \"batch\",\n type: \"viewport-update\",\n size: 0,\n rows: [],\n });\n }\n }\n }\n\n get title() {\n return super.title || `${this.table.module} ${this.table.table}`;\n }\n\n set title(title: string) {\n super.title = title;\n if (this.viewport && title) {\n // This message doesn't actually trigger a message to Vuu server\n // it will be used to recompute visual link labels\n this.server?.send({\n type: \"setTitle\",\n title,\n viewport: this.viewport,\n });\n }\n }\n\n get visualLink() {\n return this._config.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._config = {\n ...this._config,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.server\n ?.rpcCall<DataSourceVisualLinkCreatedMessage>({\n childColumnName: fromColumn,\n childVpId: this.viewport,\n parentColumnName: toColumn,\n parentVpId: parentClientVpId,\n type: \"CREATE_VISUAL_LINK\",\n } as VuuCreateVisualLink)\n .then((response) => {\n this.emit(\"visual-link-created\", response);\n });\n }\n } else {\n if (this.viewport) {\n this.server\n ?.rpcCall({\n type: \"REMOVE_VISUAL_LINK\",\n childVpId: this.viewport,\n })\n .then(() => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n this.emit(\"config\", this._config, this.range);\n }\n\n async remoteProcedureCall<T extends VuuRpcResponse = VuuRpcResponse>() {\n return Promise.reject<T>();\n }\n\n /** @deprecated */\n async rpcCall<T extends VuuRpcResponse = VuuRpcResponse>(\n rpcRequest: Omit<VuuRpcRequest, \"vpId\">,\n ) {\n if (this.viewport && this.server) {\n return this.server?.rpcCall<T>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcViewportRequest);\n } else {\n throw Error(`rpcCall server or viewport are undefined`);\n }\n }\n\n /** @deprecated */\n async menuRpcCall(rpcRequest: Omit<VuuRpcRequest, \"vpId\">) {\n if (this.viewport) {\n return this.server?.rpcCall<MenuRpcResponse>({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcMenuRequest);\n }\n }\n\n applyEdit(rowKey: string, columnName: string, value: VuuRowDataItemType) {\n return this.menuRpcCall(vuuEditCellRequest(rowKey, columnName, value)).then(\n (response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n },\n );\n }\n\n insertRow(rowKey: string, data: VuuDataRowDto) {\n return this.menuRpcCall(vuuAddRowRequest(rowKey, data)).then((response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n });\n }\n deleteRow(rowKey: string) {\n return this.menuRpcCall(vuuDeleteRowRequest(rowKey)).then((response) => {\n if (response?.error) {\n return response.error;\n } else {\n return true;\n }\n });\n }\n}\n"],"names":["logger","BaseDataSource","isDataSourceConfigMessage","isViewportMenusAction","isVisualLinksAction","debounce","throttle","uuid","selectionCount","combineFilters","Range","itemsOrOrderChanged","vuuEditCellRequest","vuuAddRowRequest","vuuDeleteRowRequest"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,kBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,YAAA;AAqDA,MAAM,EAAE,IAAA,EAAM,WAAY,EAAA,GAAIA,gBAAO,eAAe,CAAA;AAK7C,MAAM,sBAAsBC,uBAAqC,CAAA;AAAA,EAetE,YAAY,KAAmC,EAAA;AAC7C,IAAA,KAAA,CAAM,KAAK,CAAA;AAfb,IAAQ,aAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACR,IAAA,aAAA,CAAA,IAAA,EAAQ,QAA2B,EAAA,IAAA,CAAA;AACnC,IAAA,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAEA,IAAA,YAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,KAAA,CAAA;AACA,IAA8B,YAAA,CAAA,IAAA,EAAA,SAAA,EAAA,UAAA,CAAA;AAC9B,IAAqB,YAAA,CAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;AACrB,IAA4B,YAAA,CAAA,IAAA,EAAA,OAAA,EAAA,cAAA,CAAA;AAC5B,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AAEA,IAAO,aAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAyEP,IAAA,aAAA,CAAA,IAAA,EAAA,yBAAA,EAA0B,CAAC,OAAuC,KAAA;AAChE,MAAI,IAAA,OAAA,CAAQ,SAAS,YAAc,EAAA;AACjC,QAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,YAAA,CAAA;AACf,QAAA,IAAA,CAAK,cAAc,OAAQ,CAAA,WAAA;AAC3B,QAAA,IAAA,CAAK,kBAAkB,OAAO,CAAA;AAC9B,QAAA,IAAI,mBAAK,kBAAoB,CAAA,EAAA;AAC3B,UAAA,IAAA,CAAK,aAAa,YAAK,CAAA,IAAA,EAAA,kBAAA,CAAA;AACvB,UAAA,YAAA,CAAA,IAAA,EAAK,kBAAqB,EAAA,KAAA,CAAA,CAAA;AAAA;AAE5B,QAAK,IAAA,CAAA,IAAA,CAAK,cAAc,OAAO,CAAA;AAAA,OACjC,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,UAAY,EAAA;AACtC,QAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,UAAA,CAAA;AAAA,OACjB,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,SAAW,EAAA;AACrC,QAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,SAAA,CAAA;AAAA,OACjB,MAAA,IAAWC,oCAA0B,CAAA,OAAO,CAAG,EAAA;AAI7C,QAAA;AAAA,OACF,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,gBAAkB,EAAA;AAC5C,QAAA,IAAA,CAAK,QAAW,GAAA,UAAA;AAAA,OACX,MAAA;AACL,QACE,IAAA,OAAA,CAAQ,SAAS,iBACjB,IAAA,OAAA,CAAQ,SAAS,KACjB,CAAA,IAAA,OAAA,CAAQ,IAAS,KAAA,IAAA,CAAK,IACtB,EAAA;AACA,UAAA,IAAA,CAAK,OAAO,OAAQ,CAAA,IAAA;AACpB,UAAK,IAAA,CAAA,IAAA,CAAK,QAAU,EAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,SAClC,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,gBAAkB,EAAA;AAC5C,UAAA,IAAA,CAAK,IAAO,GAAA,CAAA;AACZ,UAAK,IAAA,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA;AAMvB,QAAA,IAAI,KAAK,oCAAsC,EAAA;AAC7C,UAAA,IAAA,CAAK,mBAAoB,EAAA;AAAA;AAG3B,QAAI,IAAAC,8BAAA,CAAsB,OAAO,CAAG,EAAA;AAClC,UAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,OAAQ,CAAA,IAAA,CAAA;AAAA,SACvB,MAAA,IAAWC,4BAAoB,CAAA,OAAO,CAAG,EAAA;AACvC,UAAA,YAAA,CAAA,IAAA,EAAK,QAAS,OAAQ,CAAA,KAAA,CAAA;AAAA,SACjB,MAAA;AACL,UAAI,IAAA,WAAA,IAAe,OAAQ,CAAA,IAAA,KAAS,iBAAmB,EAAA;AACrD,YAAA,IAAA;AAAA,cACE,CAAA,gDAAA,EAAmD,QAAQ,KAAO,EAAA,IAAI,IAAI,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,OAAA,EAAU,OAAQ,CAAA,IAAA,EAAM,GAAG,CAAC,CAAA,GAAI,CAAC,CAAC,CAAM,GAAA,EAAA,OAAA,CAAQ,MAAM,EAAG,CAAA,CAAA,CAAE,CAAI,GAAA,CAAC,CAAC,CAAA;AAAA,aAC9J;AAAA;AAEF,UAAI,IAAA,OAAA,CAAQ,SAAS,iBAAmB,EAAA;AACtC,YAAQ,OAAA,CAAA,GAAA;AAAA,cACN,CAAA,gDAAA,EAAmD,QAAQ,KAAO,EAAA,IAAI,IAAI,OAAQ,CAAA,KAAA,EAAO,EAAE,CAAA,OAAA,EAAU,OAAQ,CAAA,IAAA,EAAM,GAAG,CAAC,CAAA,GAAI,CAAC,CAAC,CAAM,GAAA,EAAA,OAAA,CAAQ,MAAM,EAAG,CAAA,CAAA,CAAE,CAAI,GAAA,CAAC,CAAC,CAAA;AAAA,aAC9J;AAAA;AAEF,UAAA,IAAA,CAAK,kBAAkB,OAAO,CAAA;AAAA;AAGhC,QAAI,IAAA,IAAA,CAAK,aAAa,UAAY,EAAA;AAChC,UAAA,IAAA,CAAK,cAAe,EAAA;AAAA;AACtB;AACF,KACF,CAAA;AAoKA,IAAQ,aAAA,CAAA,IAAA,EAAA,gBAAA,EAAiBC,kBAAS,MAAM;AACtC,MAAA,IAAA,CAAK,QAAW,GAAA,UAAA;AAAA,OACf,GAAG,CAAA,CAAA;AAMN,IAAQ,aAAA,CAAA,IAAA,EAAA,iBAAA,EAAgC,CAAC,KAAU,KAAA;AACjD,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,MAAQ,EAAA;AAChC,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,UAAU,IAAK,CAAA,QAAA;AAAA,UACf,IAAM,EAAA,cAAA;AAAA,UACN;AAAA,SACD,CAAA;AAAA;AACH,KACF,CAAA;AAEA,IAAQ,aAAA,CAAA,IAAA,EAAA,sBAAA,EAAqCA,iBAAS,CAAA,CAAC,KAAoB,KAAA;AACzE,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,MAAQ,EAAA;AAChC,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,UAAU,IAAK,CAAA,QAAA;AAAA,UACf,IAAM,EAAA,cAAA;AAAA,UACN;AAAA,SACD,CAAA;AAAA;AACH,OACC,EAAE,CAAA,CAAA;AAEL,IAAQ,aAAA,CAAA,IAAA,EAAA,sBAAA,EAAqCC,iBAAS,CAAA,CAAC,KAAoB,KAAA;AACzE,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,MAAQ,EAAA;AAChC,QAAA,IAAA,CAAK,OAAO,IAAK,CAAA;AAAA,UACf,UAAU,IAAK,CAAA,QAAA;AAAA,UACf,IAAM,EAAA,cAAA;AAAA,UACN;AAAA,SACD,CAAA;AAAA;AACH,OACC,EAAE,CAAA,CAAA;AA3UH,IAAA,MAAM,EAAE,UAAA,GAAa,GAAK,EAAA,KAAA,EAAO,YAAe,GAAA,KAAA;AAEhD,IAAA,IAAI,CAAC,KAAA;AACH,MAAA,MAAM,MAAM,mDAAmD,CAAA;AAEjE,IAAA,IAAA,CAAK,UAAa,GAAA,UAAA;AAClB,IAAA,IAAA,CAAK,KAAQ,GAAA,KAAA;AAEb,IAAA,YAAA,CAAA,IAAA,EAAK,kBAAqB,EAAA,UAAA,CAAA;AAG1B,IAAA,IAAA,CAAK,eAAe,IAAK,CAAA,eAAA;AAAA;AAC3B,EAEA,MAAM,SACJ,CAAA,cAAA,EACA,QACA,EAAA;AACA,IAAM,KAAA,CAAA,SAAA,CAAU,gBAAgB,QAAQ,CAAA;AACxC,IAAM,MAAA;AAAA,MACJ,mBAAA;AAAA,MACA,QAAW,GAAA,IAAA,CAAK,QAAa,KAAA,IAAA,CAAK,WAAWC,aAAK,EAAA;AAAA,KAChD,GAAA,cAAA;AAEJ,IAAA,IAAI,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,KAAY,UAAc,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,WAAa,EAAA;AAC/D,MAAA,IAAA,CAAK,OAAO,QAAQ,CAAA;AACpB,MAAA;AAAA;AAGF,IAAA,IACE,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,KAAY,cACjB,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,cAIjB,EAAA;AACA,MAAA;AAAA;AAGF,IAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,aAAA,CAAA;AACf,IAAK,YAAA,CAAA,IAAA,EAAA,kBAAA,EAAqBC,wBAAe,mBAAmB,CAAA,CAAA;AAE5D,IAAK,IAAA,CAAA,MAAA,GAAS,MAAM,iBAAkB,CAAA,SAAA;AAEtC,IAAM,MAAA,EAAE,YAAe,GAAA,IAAA;AAIvB,IAAM,MAAA,gBAAA,GAAmBC,uBAAe,CAAA,IAAA,CAAK,MAAM,CAAA;AAEnD,IAAQ,OAAA,CAAA,GAAA;AAAA,MACN,6DAA6D,IAAK,CAAA,MAAA,CAAO,IAAI,CAAI,CAAA,EAAA,IAAA,CAAK,OAAO,EAAE,CAAA,CAAA;AAAA,KACjG;AAEA,IAAA,IAAA,CAAK,MAAQ,EAAA,SAAA;AAAA,MACX;AAAA,QACE,GAAG,gBAAA;AAAA,QACH,UAAA;AAAA,QACA,OAAO,IAAK,CAAA,MAAA;AAAA,QACZ,mBAAA;AAAA,QACA,OAAO,IAAK,CAAA,KAAA;AAAA,QACZ,OAAO,IAAK,CAAA,MAAA;AAAA,QACZ;AAAA,OACF;AAAA,MACA,IAAK,CAAA;AAAA,KACP;AAAA;AACF,EAmEA,WAAc,GAAA;AACZ,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,cAAgB,EAAA;AACnC,MAAO,IAAA,GAAA,CAAA,aAAA,EAAgB,IAAK,CAAA,QAAQ,CAAE,CAAA,CAAA;AACtC,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAK,IAAA,CAAA,MAAA,EAAQ,WAAY,CAAA,IAAA,CAAK,QAAQ,CAAA;AACtC,QAAK,IAAA,CAAA,IAAA,CAAK,cAAgB,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AAEzC,MAAK,IAAA,CAAA,MAAA,EAAQ,OAAQ,CAAA,IAAA,CAAK,QAAQ,CAAA;AAClC,MAAA,IAAA,CAAK,MAAS,GAAA,IAAA;AACd,MAAA,IAAA,CAAK,kBAAmB,EAAA;AACxB,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,cAAA,CAAA;AACf,MAAA,IAAA,CAAK,QAAW,GAAA,EAAA;AAChB,MAAK,IAAA,CAAA,KAAA,GAAQC,cAAM,CAAA,CAAA,EAAG,CAAC,CAAA;AAAA;AACzB;AACF,EAEA,OAAU,GAAA;AACR,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,cAAgB,EAAA;AACnC,MAAA,IAAA,GAAO,YAAY,IAAK,CAAA,QAAQ,CAAoB,iBAAA,EAAA,YAAA,CAAA,IAAA,EAAK,QAAO,CAAE,CAAA,CAAA;AAClE,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,WAAA,CAAA;AACf,QAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,UAChB,IAAM,EAAA,SAAA;AAAA,UACN,UAAU,IAAK,CAAA;AAAA,SAChB,CAAA;AACD,QAAK,IAAA,CAAA,IAAA,CAAK,WAAa,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AACtC;AACF;AACF,EAEA,OAAO,QAAwC,EAAA;AAC7C,IAAA,MAAM,UAAa,GAAA,YAAA,CAAA,IAAA,EAAK,OAAQ,CAAA,CAAA,UAAA,CAAW,QAAQ,CAAA;AACnD,IAAM,MAAA,WAAA,GAAc,mBAAK,OAAY,CAAA,KAAA,WAAA;AACrC,IAAA,IAAA,GAAO,WAAW,IAAK,CAAA,QAAQ,CAAoB,iBAAA,EAAA,YAAA,CAAA,IAAA,EAAK,QAAO,CAAE,CAAA,CAAA;AACjE,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,IAAA,CAAK,eAAkB,GAAA,QAAA;AAAA;AAEzB,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,IAAA,CAAK,MAAO,EAAA;AAAA,iBACH,WAAa,EAAA;AACtB,QAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,UAChB,IAAM,EAAA,QAAA;AAAA,UACN,UAAU,IAAK,CAAA;AAAA,SAChB,CAAA;AACD,QAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,YAAA,CAAA;AACf,QAAK,IAAA,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AACpC;AACF;AACF,EAEA,OAAU,GAAA;AACR,IAAA,IAAA,GAAO,YAAY,IAAK,CAAA,QAAQ,CAAoB,iBAAA,EAAA,YAAA,CAAA,IAAA,EAAK,QAAO,CAAE,CAAA,CAAA;AAClE,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,WAAA,CAAA;AACf,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,IAAM,EAAA;AAAA,OACP,CAAA;AACD,MAAK,IAAA,CAAA,IAAA,CAAK,UAAY,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AACrC;AACF,EAEA,OAAO,QAAwC,EAAA;AAC7C,IAAA,IAAA,GAAO,WAAW,IAAK,CAAA,QAAQ,CAAoB,iBAAA,EAAA,YAAA,CAAA,IAAA,EAAK,QAAO,CAAE,CAAA,CAAA;AACjE,IAAA,IACE,KAAK,QACJ,KAAA,YAAA,CAAA,IAAA,EAAK,aAAY,UAAc,IAAA,YAAA,CAAA,IAAA,EAAK,aAAY,WACjD,CAAA,EAAA;AACA,MAAA,YAAA,CAAA,IAAA,EAAK,OAAU,EAAA,UAAA,CAAA;AACf,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAA,CAAK,eAAkB,GAAA,QAAA;AAAA;AAEzB,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,IAAM,EAAA;AAAA,OACP,CAAA;AACD,MAAK,IAAA,CAAA,IAAA,CAAK,SAAW,EAAA,IAAA,CAAK,QAAQ,CAAA;AAAA;AACpC;AACF,EAEA,OAAO,QAAqB,EAAA;AAC1B,IAAK,YAAA,CAAA,IAAA,EAAA,kBAAA,EAAqBF,wBAAe,QAAQ,CAAA,CAAA;AACjD,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,IAAM,EAAA,QAAA;AAAA,QACN;AAAA,OACD,CAAA;AACD,MAAA,IAAA,CAAK,IAAK,CAAA,eAAA,EAAiB,QAAU,EAAA,YAAA,CAAA,IAAA,EAAK,kBAAkB,CAAA,CAAA;AAAA;AAC9D;AACF,EAEA,aAAa,UAA6B,EAAA;AACxC,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GACf,OAAO,UAAA,KAAe,QAAW,GAAA,CAAC,UAAU,CAAA,GAAI,CAAC,KAAA,CAAA,EAAW,UAAU,CAAA;AACxE,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,KAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,IAAK,CAAA;AAAA,OAChB,CAAA;AAAA;AACH;AACF,EAEA,cAAc,UAA6B,EAAA;AACzC,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAA,MAAM,CAAC,GAAA,EAAK,KAAK,CAAA,GACf,OAAO,UAAA,KAAe,QAAW,GAAA,CAAC,UAAU,CAAA,GAAI,CAAC,KAAA,CAAA,EAAW,UAAU,CAAA;AACxE,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,KAAA;AAAA,QACA,GAAA;AAAA,QACA,IAAM,EAAA,eAAA;AAAA,QACN,UAAU,IAAK,CAAA;AAAA,OAChB,CAAA;AAAA;AACH;AACF,EAEA,IAAI,WAAc,GAAA;AAChB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AACd,EAEA,IAAI,YAAY,WAAsC,EAAA;AACpD,IAAA,YAAA,CAAA,IAAA,EAAK,YAAe,EAAA,WAAA,CAAA;AAAA;AAEtB,EAEA,IAAI,KAAQ,GAAA;AACV,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,MAAA,CAAA;AAAA;AACd,EAEA,IAAI,IAAO,GAAA;AACT,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,KAAA,CAAA;AAAA;AACd,EAEA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AACd,EAEA,IAAI,QAAW,GAAA;AACb,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AACd,EAEA,IAAI,SAAS,QAA4B,EAAA;AACvC,IAAI,IAAA,QAAA,KAAa,mBAAK,SAAW,CAAA,EAAA;AAC/B,MAAA,YAAA,CAAA,IAAA,EAAK,SAAY,EAAA,QAAA,CAAA;AACjB,MAAA,QAAQ,QAAU;AAAA,QAChB,KAAK,MAAA;AACH,UAAA,IAAA,CAAK,eAAe,IAAK,CAAA,eAAA;AACzB,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,IAAA,CAAK,eAAe,IAAK,CAAA,oBAAA;AACzB,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,IAAA,CAAK,eAAe,IAAK,CAAA,oBAAA;AACzB,UAAA;AAAA;AAEJ,MAAK,IAAA,CAAA,IAAA,CAAK,YAAY,QAAQ,CAAA;AAAA;AAChC;AACF,EAMA,IAAI,iBAAoB,GAAA;AACtB,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,kBAAA,CAAA;AAAA;AACd,EAgCA,IAAI,MAAS,GAAA;AACX,IAAA,OAAO,KAAM,CAAA,MAAA;AAAA;AACf,EAEA,IAAI,OAAO,MAAwC,EAAA;AACjD,IAAI,IAAA,MAAA,KAAW,KAAK,MAAQ,EAAA;AAC1B,MAAA,KAAA,CAAM,MAAS,GAAA,MAAA;AACf,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,IAAM,EAAA,QAAA;AAAA,QACN,MAAA,EAAQC,uBAAe,CAAA,IAAA,CAAK,OAAO;AAAA,OACpC,CAAA;AAAA;AACH;AACF,EAEA,IAAI,gBAAgB,MAAwC,EAAA;AAC1D,IAAI,IAAA,MAAA,KAAW,KAAK,MAAQ,EAAA;AAC1B,MAAA,KAAA,CAAM,eAAkB,GAAA,MAAA;AACxB,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,UAAU,IAAK,CAAA,QAAA;AAAA,QACf,IAAM,EAAA,QAAA;AAAA,QACN,MAAA,EAAQA,uBAAe,CAAA,IAAA,CAAK,MAAM;AAAA,OACnC,CAAA;AAAA;AACH;AACF,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,OAAO,KAAK,OAAQ,CAAA,OAAA;AAAA;AACtB,EAEA,IAAI,QAAQ,OAAqB,EAAA;AAC/B,IAAA,IAAIE,4BAAoB,CAAA,IAAA,CAAK,OAAS,EAAA,OAAO,CAAG,EAAA;AAC9C,MAAM,MAAA,UAAA,GAAa,IAAK,CAAA,OAAA,CAAQ,MAAS,GAAA,CAAA;AAEzC,MAAA,IAAA,CAAK,eAAkB,GAAA;AAAA,QACrB,GAAG,IAAK,CAAA,OAAA;AAAA,QACR;AAAA,OACF;AAEA,MAAA,IAAI,CAAC,UAAc,IAAA,OAAA,CAAQ,MAAS,GAAA,CAAA,IAAK,KAAK,QAAU,EAAA;AACtD,QAAA,IAAA,CAAK,eAAkB,GAAA;AAAA,UACrB,kBAAkB,IAAK,CAAA,QAAA;AAAA,UACvB,IAAM,EAAA,OAAA;AAAA,UACN,IAAM,EAAA,iBAAA;AAAA,UACN,IAAM,EAAA,CAAA;AAAA,UACN,MAAM;AAAC,SACR,CAAA;AAAA;AACH;AACF;AACF,EAEA,IAAI,KAAQ,GAAA;AACV,IAAO,OAAA,KAAA,CAAM,SAAS,CAAG,EAAA,IAAA,CAAK,MAAM,MAAM,CAAA,CAAA,EAAI,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA;AAChE,EAEA,IAAI,MAAM,KAAe,EAAA;AACvB,IAAA,KAAA,CAAM,KAAQ,GAAA,KAAA;AACd,IAAI,IAAA,IAAA,CAAK,YAAY,KAAO,EAAA;AAG1B,MAAA,IAAA,CAAK,QAAQ,IAAK,CAAA;AAAA,QAChB,IAAM,EAAA,UAAA;AAAA,QACN,KAAA;AAAA,QACA,UAAU,IAAK,CAAA;AAAA,OAChB,CAAA;AAAA;AACH;AACF,EAEA,IAAI,UAAa,GAAA;AACf,IAAA,OAAO,KAAK,OAAQ,CAAA,UAAA;AAAA;AACtB,EAEA,IAAI,WAAW,UAAiD,EAAA;AAC9D,IAAA,IAAA,CAAK,OAAU,GAAA;AAAA,MACb,GAAG,IAAK,CAAA,OAAA;AAAA,MACR;AAAA,KACF;AAEA,IAAA,IAAI,UAAY,EAAA;AACd,MAAM,MAAA;AAAA,QACJ,gBAAA;AAAA,QACA,IAAA,EAAM,EAAE,UAAA,EAAY,QAAS;AAAA,OAC3B,GAAA,UAAA;AAEJ,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAA,IAAA,CAAK,QACD,OAA4C,CAAA;AAAA,UAC5C,eAAiB,EAAA,UAAA;AAAA,UACjB,WAAW,IAAK,CAAA,QAAA;AAAA,UAChB,gBAAkB,EAAA,QAAA;AAAA,UAClB,UAAY,EAAA,gBAAA;AAAA,UACZ,IAAM,EAAA;AAAA,SACgB,CAAA,CACvB,IAAK,CAAA,CAAC,QAAa,KAAA;AAClB,UAAK,IAAA,CAAA,IAAA,CAAK,uBAAuB,QAAQ,CAAA;AAAA,SAC1C,CAAA;AAAA;AACL,KACK,MAAA;AACL,MAAA,IAAI,KAAK,QAAU,EAAA;AACjB,QAAA,IAAA,CAAK,QACD,OAAQ,CAAA;AAAA,UACR,IAAM,EAAA,oBAAA;AAAA,UACN,WAAW,IAAK,CAAA;AAAA,SACjB,CACA,CAAA,IAAA,CAAK,MAAM;AACV,UAAA,IAAA,CAAK,KAAK,qBAAqB,CAAA;AAAA,SAChC,CAAA;AAAA;AACL;AAGF,IAAA,IAAA,CAAK,IAAK,CAAA,QAAA,EAAU,IAAK,CAAA,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA;AAC9C,EAEA,MAAM,mBAAiE,GAAA;AACrE,IAAA,OAAO,QAAQ,MAAU,EAAA;AAAA;AAC3B;AAAA,EAGA,MAAM,QACJ,UACA,EAAA;AACA,IAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,MAAQ,EAAA;AAChC,MAAO,OAAA,IAAA,CAAK,QAAQ,OAAW,CAAA;AAAA,QAC7B,GAAG,UAAA;AAAA,QACH,MAAM,IAAK,CAAA;AAAA,OACa,CAAA;AAAA,KACrB,MAAA;AACL,MAAA,MAAM,MAAM,CAA0C,wCAAA,CAAA,CAAA;AAAA;AACxD;AACF;AAAA,EAGA,MAAM,YAAY,UAAyC,EAAA;AACzD,IAAA,IAAI,KAAK,QAAU,EAAA;AACjB,MAAO,OAAA,IAAA,CAAK,QAAQ,OAAyB,CAAA;AAAA,QAC3C,GAAG,UAAA;AAAA,QACH,MAAM,IAAK,CAAA;AAAA,OACS,CAAA;AAAA;AACxB;AACF,EAEA,SAAA,CAAU,MAAgB,EAAA,UAAA,EAAoB,KAA2B,EAAA;AACvE,IAAA,OAAO,KAAK,WAAY,CAAAC,2BAAA,CAAmB,QAAQ,UAAY,EAAA,KAAK,CAAC,CAAE,CAAA,IAAA;AAAA,MACrE,CAAC,QAAa,KAAA;AACZ,QAAA,IAAI,UAAU,KAAO,EAAA;AACnB,UAAA,OAAO,QAAS,CAAA,KAAA;AAAA,SACX,MAAA;AACL,UAAO,OAAA,IAAA;AAAA;AACT;AACF,KACF;AAAA;AACF,EAEA,SAAA,CAAU,QAAgB,IAAqB,EAAA;AAC7C,IAAO,OAAA,IAAA,CAAK,YAAYC,yBAAiB,CAAA,MAAA,EAAQ,IAAI,CAAC,CAAA,CAAE,IAAK,CAAA,CAAC,QAAa,KAAA;AACzE,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,OAAO,QAAS,CAAA,KAAA;AAAA,OACX,MAAA;AACL,QAAO,OAAA,IAAA;AAAA;AACT,KACD,CAAA;AAAA;AACH,EACA,UAAU,MAAgB,EAAA;AACxB,IAAO,OAAA,IAAA,CAAK,YAAYC,4BAAoB,CAAA,MAAM,CAAC,CAAE,CAAA,IAAA,CAAK,CAAC,QAAa,KAAA;AACtE,MAAA,IAAI,UAAU,KAAO,EAAA;AACnB,QAAA,OAAO,QAAS,CAAA,KAAA;AAAA,OACX,MAAA;AACL,QAAO,OAAA,IAAA;AAAA;AACT,KACD,CAAA;AAAA;AAEL;AArgBE,kBAAA,GAAA,IAAA,OAAA,EAAA;AACA,MAAA,GAAA,IAAA,OAAA,EAAA;AACA,KAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,kBAAA,GAAA,IAAA,OAAA,EAAA;AACA,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -49,6 +49,89 @@ var getCookieValue = (name) => {
49
49
  };
50
50
 
51
51
  // ../vuu-utils/src/range-utils.ts
52
+ var defaultRangeOptions = {
53
+ renderBufferSize: 0,
54
+ rowCount: -1
55
+ };
56
+ var _baseFrom, _renderBufferSize, _rowCount, _baseTo;
57
+ var _RangeImpl = class _RangeImpl {
58
+ constructor(from, to, rangeOptions = defaultRangeOptions) {
59
+ __privateAdd(this, _baseFrom);
60
+ __privateAdd(this, _renderBufferSize, 0);
61
+ __privateAdd(this, _rowCount, -1);
62
+ __privateAdd(this, _baseTo);
63
+ // We have to keep these as simple public properties (not getters) so they survive structuredClone
64
+ __publicField(this, "from", 0);
65
+ __publicField(this, "to", 0);
66
+ var _a, _b;
67
+ __privateSet(this, _baseFrom, from);
68
+ __privateSet(this, _baseTo, to);
69
+ this.renderBufferSize = (_a = rangeOptions.renderBufferSize) != null ? _a : defaultRangeOptions.renderBufferSize;
70
+ this.rowCount = (_b = rangeOptions.rowCount) != null ? _b : defaultRangeOptions.rowCount;
71
+ console.log(
72
+ \`[Range] new (\${__privateGet(this, _baseFrom)}:\${__privateGet(this, _baseTo)}) renderBuffer: \${this.renderBufferSize}, rowCount: \${this.rowCount}\`
73
+ );
74
+ }
75
+ get firstRowInViewport() {
76
+ return __privateGet(this, _baseFrom) + 1;
77
+ }
78
+ get lastRowInViewport() {
79
+ if (__privateGet(this, _rowCount) > 0) {
80
+ return Math.min(__privateGet(this, _baseTo), __privateGet(this, _rowCount));
81
+ } else {
82
+ return __privateGet(this, _baseTo);
83
+ }
84
+ }
85
+ get renderBufferSize() {
86
+ return __privateGet(this, _renderBufferSize);
87
+ }
88
+ set renderBufferSize(value) {
89
+ __privateSet(this, _renderBufferSize, value);
90
+ this.from = Math.max(0, __privateGet(this, _baseFrom) - value);
91
+ if (__privateGet(this, _rowCount) > 0) {
92
+ this.to = Math.max(__privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize), __privateGet(this, _rowCount));
93
+ } else {
94
+ this.to = __privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize);
95
+ }
96
+ }
97
+ get rowCount() {
98
+ return __privateGet(this, _rowCount);
99
+ }
100
+ set rowCount(value) {
101
+ __privateSet(this, _rowCount, value);
102
+ if (value > 0) {
103
+ this.to = Math.min(__privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize), value);
104
+ } else {
105
+ this.to = __privateGet(this, _baseTo) + __privateGet(this, _renderBufferSize);
106
+ }
107
+ }
108
+ get reset() {
109
+ return new _RangeImpl(0, __privateGet(this, _baseTo) - __privateGet(this, _baseFrom), {
110
+ rowCount: __privateGet(this, _rowCount),
111
+ renderBufferSize: __privateGet(this, _renderBufferSize)
112
+ });
113
+ }
114
+ equals(range) {
115
+ return range.from === __privateGet(this, _baseFrom) && range.to === __privateGet(this, _baseTo);
116
+ }
117
+ toJson() {
118
+ return {
119
+ from: this.from,
120
+ to: this.to,
121
+ baseFrom: __privateGet(this, _baseFrom),
122
+ baseTo: __privateGet(this, _baseTo),
123
+ renderBufferSize: __privateGet(this, _renderBufferSize),
124
+ rowCount: __privateGet(this, _rowCount)
125
+ };
126
+ }
127
+ };
128
+ _baseFrom = new WeakMap();
129
+ _renderBufferSize = new WeakMap();
130
+ _rowCount = new WeakMap();
131
+ _baseTo = new WeakMap();
132
+ var RangeImpl = _RangeImpl;
133
+ var Range = (from, to, rangeOptions) => new RangeImpl(from, to, rangeOptions);
134
+ var NULL_RANGE = Range(0, 0);
52
135
  function getFullRange({ from, to }, bufferSize = 0, totalRowCount = Number.MAX_SAFE_INTEGER) {
53
136
  if (from === 0 && to === 0) {
54
137
  return { from, to };
@@ -350,6 +433,53 @@ var KeySet = class {
350
433
  }
351
434
  };
352
435
 
436
+ // ../vuu-utils/src/selection-utils.ts
437
+ var { SELECTED } = metadataKeys;
438
+ var RowSelected = {
439
+ False: 0,
440
+ True: 1,
441
+ First: 2,
442
+ Last: 4
443
+ };
444
+ var rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
445
+ var SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
446
+ var FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
447
+ var LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
448
+ var getSelectionStatus = (selected, itemIndex) => {
449
+ for (const item of selected) {
450
+ if (typeof item === "number") {
451
+ if (item === itemIndex) {
452
+ return SINGLE_SELECTED_ROW;
453
+ }
454
+ } else if (rangeIncludes(item, itemIndex)) {
455
+ if (itemIndex === item[0]) {
456
+ return FIRST_SELECTED_ROW_OF_BLOCK;
457
+ } else if (itemIndex === item[1]) {
458
+ return LAST_SELECTED_ROW_OF_BLOCK;
459
+ } else {
460
+ return RowSelected.True;
461
+ }
462
+ }
463
+ }
464
+ return RowSelected.False;
465
+ };
466
+ var expandSelection = (selected) => {
467
+ if (selected.every((selectedItem) => typeof selectedItem === "number")) {
468
+ return selected;
469
+ }
470
+ const expandedSelected = [];
471
+ for (const selectedItem of selected) {
472
+ if (typeof selectedItem === "number") {
473
+ expandedSelected.push(selectedItem);
474
+ } else {
475
+ for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {
476
+ expandedSelected.push(i);
477
+ }
478
+ }
479
+ }
480
+ return expandedSelected;
481
+ };
482
+
353
483
  // ../vuu-utils/src/promise-utils.ts
354
484
  var _promise, _resolve, _reject, _resolved;
355
485
  var DeferredPromise = class {
@@ -411,53 +541,6 @@ function isSessionTableActionMessage(rpcResponse) {
411
541
  return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && ((_a = rpcResponse.action) == null ? void 0 : _a.renderComponent) === "inline-form";
412
542
  }
413
543
 
414
- // ../vuu-utils/src/selection-utils.ts
415
- var { SELECTED } = metadataKeys;
416
- var RowSelected = {
417
- False: 0,
418
- True: 1,
419
- First: 2,
420
- Last: 4
421
- };
422
- var rangeIncludes = (range, index) => index >= range[0] && index <= range[1];
423
- var SINGLE_SELECTED_ROW = RowSelected.True + RowSelected.First + RowSelected.Last;
424
- var FIRST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.First;
425
- var LAST_SELECTED_ROW_OF_BLOCK = RowSelected.True + RowSelected.Last;
426
- var getSelectionStatus = (selected, itemIndex) => {
427
- for (const item of selected) {
428
- if (typeof item === "number") {
429
- if (item === itemIndex) {
430
- return SINGLE_SELECTED_ROW;
431
- }
432
- } else if (rangeIncludes(item, itemIndex)) {
433
- if (itemIndex === item[0]) {
434
- return FIRST_SELECTED_ROW_OF_BLOCK;
435
- } else if (itemIndex === item[1]) {
436
- return LAST_SELECTED_ROW_OF_BLOCK;
437
- } else {
438
- return RowSelected.True;
439
- }
440
- }
441
- }
442
- return RowSelected.False;
443
- };
444
- var expandSelection = (selected) => {
445
- if (selected.every((selectedItem) => typeof selectedItem === "number")) {
446
- return selected;
447
- }
448
- const expandedSelected = [];
449
- for (const selectedItem of selected) {
450
- if (typeof selectedItem === "number") {
451
- expandedSelected.push(selectedItem);
452
- } else {
453
- for (let i = selectedItem[0]; i <= selectedItem[1]; i++) {
454
- expandedSelected.push(i);
455
- }
456
- }
457
- }
458
- return expandedSelected;
459
- };
460
-
461
544
  // src/message-utils.ts
462
545
  var isVuuRpcRequest = (message) => message["type"] === "VIEW_PORT_RPC_CALL";
463
546
  var stripRequestId = ({
@@ -1735,6 +1818,9 @@ var ServerProxy = class {
1735
1818
  /**********************************************************************/
1736
1819
  setViewRange(viewport, message) {
1737
1820
  const requestId = nextRequestId();
1821
+ console.log(
1822
+ \`[ServerProxy] setViewRange (\${message.range.from}:\${message.range.to})\`
1823
+ );
1738
1824
  infoEnabled2 && info2(\`setViewRange (\${message.range.from}:\${message.range.to})\`);
1739
1825
  const [serverRequest, rows, debounceRequest] = viewport.rangeRequest(
1740
1826
  requestId,