@vuu-ui/vuu-utils 0.8.83 → 0.8.85
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.
- package/cjs/datasource-utils.js +2 -2
- package/cjs/datasource-utils.js.map +1 -1
- package/cjs/index.js +10 -1
- package/cjs/index.js.map +1 -1
- package/cjs/menu-utils.js +1 -1
- package/cjs/menu-utils.js.map +1 -1
- package/cjs/protocol-message-utils.js +60 -0
- package/cjs/protocol-message-utils.js.map +1 -1
- package/esm/datasource-utils.js +2 -2
- package/esm/datasource-utils.js.map +1 -1
- package/esm/index.js +2 -2
- package/esm/menu-utils.js +1 -1
- package/esm/menu-utils.js.map +1 -1
- package/esm/protocol-message-utils.js +52 -1
- package/esm/protocol-message-utils.js.map +1 -1
- package/package.json +6 -6
- package/types/datasource-utils.d.ts +5 -2
- package/types/menu-utils.d.ts +5 -5
- package/types/protocol-message-utils.d.ts +24 -3
package/cjs/datasource-utils.js
CHANGED
|
@@ -131,8 +131,8 @@ const isConnectionStatusMessage = (msg) => msg.type === "connection-status";
|
|
|
131
131
|
const isConnectionQualityMetrics = (msg) => msg.type === "connection-metrics";
|
|
132
132
|
const messageHasResult = (msg) => typeof msg.result !== "undefined";
|
|
133
133
|
const isErrorResponse = (response) => response?.type === "VP_EDIT_RPC_REJECT";
|
|
134
|
-
const hasAction = (response) => response != void 0 && "action" in response;
|
|
135
134
|
const isViewportMessage = (msg) => "viewport" in msg;
|
|
135
|
+
const messageHasDataRows = (message) => message.type === "viewport-update" && Array.isArray(message.rows);
|
|
136
136
|
const withConfigDefaults = (config) => {
|
|
137
137
|
if (config.aggregations && config.columns && config.filterSpec && config.groupBy && config.sort) {
|
|
138
138
|
return config;
|
|
@@ -159,7 +159,6 @@ const withConfigDefaults = (config) => {
|
|
|
159
159
|
exports.NO_CONFIG_CHANGES = NO_CONFIG_CHANGES;
|
|
160
160
|
exports.NoFilter = NoFilter;
|
|
161
161
|
exports.NoSort = NoSort;
|
|
162
|
-
exports.hasAction = hasAction;
|
|
163
162
|
exports.hasFilter = hasFilter;
|
|
164
163
|
exports.hasGroupBy = hasGroupBy;
|
|
165
164
|
exports.hasSort = hasSort;
|
|
@@ -172,6 +171,7 @@ exports.isGroupByChanged = isGroupByChanged;
|
|
|
172
171
|
exports.isTableSchemaMessage = isTableSchemaMessage;
|
|
173
172
|
exports.isTypeaheadSuggestionProvider = isTypeaheadSuggestionProvider;
|
|
174
173
|
exports.isViewportMessage = isViewportMessage;
|
|
174
|
+
exports.messageHasDataRows = messageHasDataRows;
|
|
175
175
|
exports.messageHasResult = messageHasResult;
|
|
176
176
|
exports.vanillaConfig = vanillaConfig;
|
|
177
177
|
exports.withConfigDefaults = withConfigDefaults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-utils.js","sources":["../src/datasource-utils.ts"],"sourcesContent":["import {\n ConnectionQualityMetrics,\n ConnectionStatusMessage,\n DataSourceConfig,\n MenuRpcResponse,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInRPCEditResponse,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuFilter,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: DataSourceConfig,\n newConfig: DataSourceConfig,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = () => {\n // TODO\n return false;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (config?: DataSourceConfig): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionStatusMessage = (\n msg: object | ConnectionStatusMessage,\n): msg is ConnectionStatusMessage =>\n (msg as ConnectionStatusMessage).type === \"connection-status\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const hasAction = (\n response?: Partial<RpcResponse>,\n): response is MenuRpcResponse | VuuUIMessageInRPCEditResponse =>\n response != undefined && \"action\" in response;\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport const withConfigDefaults = (\n config: DataSourceConfig,\n): WithFullConfig & { visualLink?: LinkDescriptorWithLabel } => {\n if (\n config.aggregations &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datasource-utils.js","sources":["../src/datasource-utils.ts"],"sourcesContent":["import {\n ConnectionQualityMetrics,\n ConnectionStatusMessage,\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceDataMessage,\n DataSourceRow,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuFilter,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: DataSourceConfig,\n newConfig: DataSourceConfig,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = () => {\n // TODO\n return false;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (config?: DataSourceConfig): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionStatusMessage = (\n msg: object | ConnectionStatusMessage,\n): msg is ConnectionStatusMessage =>\n (msg as ConnectionStatusMessage).type === \"connection-status\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport type DataSourceDataMessageWithRows = Omit<\n DataSourceDataMessage,\n \"rows\"\n> & {\n rows: DataSourceRow[];\n};\nexport const messageHasDataRows = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataMessageWithRows =>\n message.type === \"viewport-update\" && Array.isArray(message.rows);\n\nexport const withConfigDefaults = (\n config: DataSourceConfig,\n): WithFullConfig & { visualLink?: LinkDescriptorWithLabel } => {\n if (\n config.aggregations &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n"],"names":[],"mappings":"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"}
|
package/cjs/index.js
CHANGED
|
@@ -172,7 +172,6 @@ exports.isVuuFeatureAction = datasourceActionUtils.isVuuFeatureAction;
|
|
|
172
172
|
exports.NO_CONFIG_CHANGES = datasourceUtils.NO_CONFIG_CHANGES;
|
|
173
173
|
exports.NoFilter = datasourceUtils.NoFilter;
|
|
174
174
|
exports.NoSort = datasourceUtils.NoSort;
|
|
175
|
-
exports.hasAction = datasourceUtils.hasAction;
|
|
176
175
|
exports.hasFilter = datasourceUtils.hasFilter;
|
|
177
176
|
exports.hasGroupBy = datasourceUtils.hasGroupBy;
|
|
178
177
|
exports.hasSort = datasourceUtils.hasSort;
|
|
@@ -185,6 +184,7 @@ exports.isGroupByChanged = datasourceUtils.isGroupByChanged;
|
|
|
185
184
|
exports.isTableSchemaMessage = datasourceUtils.isTableSchemaMessage;
|
|
186
185
|
exports.isTypeaheadSuggestionProvider = datasourceUtils.isTypeaheadSuggestionProvider;
|
|
187
186
|
exports.isViewportMessage = datasourceUtils.isViewportMessage;
|
|
187
|
+
exports.messageHasDataRows = datasourceUtils.messageHasDataRows;
|
|
188
188
|
exports.messageHasResult = datasourceUtils.messageHasResult;
|
|
189
189
|
exports.vanillaConfig = datasourceUtils.vanillaConfig;
|
|
190
190
|
exports.withConfigDefaults = datasourceUtils.withConfigDefaults;
|
|
@@ -293,10 +293,19 @@ exports.asReactElements = reactUtils.asReactElements;
|
|
|
293
293
|
exports.roundDecimal = roundDecimal.roundDecimal;
|
|
294
294
|
exports.debounce = perfUtils.debounce;
|
|
295
295
|
exports.throttle = perfUtils.throttle;
|
|
296
|
+
exports.isActionMessage = protocolMessageUtils.isActionMessage;
|
|
297
|
+
exports.isEditCellRequest = protocolMessageUtils.isEditCellRequest;
|
|
296
298
|
exports.isOpenDialogAction = protocolMessageUtils.isOpenDialogAction;
|
|
297
299
|
exports.isOpenSessionTableDialogMessage = protocolMessageUtils.isOpenSessionTableDialogMessage;
|
|
298
300
|
exports.isRequestResponse = protocolMessageUtils.isRequestResponse;
|
|
301
|
+
exports.isSessionTable = protocolMessageUtils.isSessionTable;
|
|
302
|
+
exports.isSessionTableActionMessage = protocolMessageUtils.isSessionTableActionMessage;
|
|
303
|
+
exports.isViewportRpcRequest = protocolMessageUtils.isViewportRpcRequest;
|
|
299
304
|
exports.isVuuMenuRpcRequest = protocolMessageUtils.isVuuMenuRpcRequest;
|
|
305
|
+
exports.viewportRpcRequest = protocolMessageUtils.viewportRpcRequest;
|
|
306
|
+
exports.vuuAddRowRequest = protocolMessageUtils.vuuAddRowRequest;
|
|
307
|
+
exports.vuuDeleteRowRequest = protocolMessageUtils.vuuDeleteRowRequest;
|
|
308
|
+
exports.vuuEditCellRequest = protocolMessageUtils.vuuEditCellRequest;
|
|
300
309
|
exports.NULL_RANGE = rangeUtils.NULL_RANGE;
|
|
301
310
|
exports.WindowRange = rangeUtils.WindowRange;
|
|
302
311
|
exports.getFullRange = rangeUtils.getFullRange;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/cjs/menu-utils.js
CHANGED
|
@@ -139,7 +139,7 @@ const getMenuRpcRequest = (options) => {
|
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
141
|
};
|
|
142
|
-
const isOpenBulkEditResponse = (
|
|
142
|
+
const isOpenBulkEditResponse = (rpcResponse) => rpcResponse.rpcName === "VP_BULK_EDIT_BEGIN_RPC";
|
|
143
143
|
const hasShowNotificationAction = (res) => res.action?.type === "SHOW_NOTIFICATION_ACTION";
|
|
144
144
|
|
|
145
145
|
exports.buildMenuDescriptorFromVuuMenu = buildMenuDescriptorFromVuuMenu;
|
package/cjs/menu-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-utils.js","sources":["../src/menu-utils.ts"],"sourcesContent":["import {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n DataSourceRow,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport { getFilterPredicate } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerMenuCellRPC,\n ClientToServerMenuRPC,\n ClientToServerMenuRowRPC,\n ShowNotificationAction,\n VuuMenu,\n VuuMenuContext,\n VuuMenuItem,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n TableMenuLocation,\n VuuCellMenuItem,\n VuuRowMenuItem,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getRowRecord, metadataKeys, type ColumnMap } from \"./column-utils\";\n\nexport type VuuServerMenuOptions = {\n columnMap: ColumnMap;\n columnName: string;\n row: DataSourceRow;\n selectedRows: DataSourceRow[];\n viewport: string;\n};\n\nconst { KEY } = metadataKeys;\n\nexport const isRoot = (menu: VuuMenu) => menu.name === \"ROOT\";\n\nexport const isCellMenu = (options: VuuMenuItem): options is VuuCellMenuItem =>\n options.context === \"cell\";\n\nexport const isRowMenu = (options: VuuMenuItem): options is VuuRowMenuItem =>\n options.context === \"row\";\n\nexport const isSelectionMenu = (options: VuuMenuItem): options is VuuMenuItem =>\n options.context === \"selected-rows\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst isVuuMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenuItem =>\n \"rpcName\" in menu;\n\nconst isGroupMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenu =>\n \"menus\" in menu;\n\nconst hasFilter = ({ filter }: VuuMenuItem) =>\n typeof filter === \"string\" && filter.length > 0;\n\nconst vuuContextCompatibleWithTableLocation = (\n uiLocation: TableMenuLocation,\n vuuContext: VuuMenuContext,\n selectedRowCount = 0,\n) => {\n switch (uiLocation) {\n case \"grid\":\n if (vuuContext === \"selected-rows\") {\n return selectedRowCount > 0;\n } else {\n return true;\n }\n case \"header\":\n return vuuContext === \"grid\";\n default:\n return false;\n }\n};\n\nconst gridRowMeetsFilterCriteria = (\n context: VuuMenuContext,\n row: DataSourceRow,\n selectedRows: DataSourceRow[],\n filter: string,\n columnMap: ColumnMap,\n): boolean => {\n if (context === \"cell\" || context === \"row\") {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return filterPredicate(row);\n } else if (context === \"selected-rows\") {\n if (selectedRows.length === 0) {\n return false;\n } else {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return selectedRows.every(filterPredicate);\n }\n }\n return true;\n};\n\nconst menuShouldBeRenderedInThisContext = (\n menuItem: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): boolean => {\n if (isGroupMenuItem(menuItem)) {\n return menuItem.menus.some((childMenu) =>\n menuShouldBeRenderedInThisContext(childMenu, tableLocation, options),\n );\n }\n if (\n !vuuContextCompatibleWithTableLocation(\n tableLocation,\n menuItem.context,\n options.selectedRows?.length,\n )\n ) {\n return false;\n }\n\n if (tableLocation === \"grid\" && hasFilter(menuItem)) {\n return gridRowMeetsFilterCriteria(\n menuItem.context,\n options.row,\n options.selectedRows,\n menuItem.filter,\n options.columnMap,\n );\n }\n\n if (isCellMenu(menuItem) && menuItem.field !== \"*\") {\n return menuItem.field === options.columnName;\n }\n\n return true;\n};\n\nconst getMenuItemOptions = (\n menu: VuuMenuItem,\n options: VuuServerMenuOptions,\n): VuuMenuItem => {\n switch (menu.context) {\n case \"cell\":\n return {\n ...menu,\n field: options.columnName,\n rowKey: options.row[KEY],\n value: options.row[options.columnMap[options.columnName]],\n } as VuuCellMenuItem;\n case \"row\":\n return {\n ...menu,\n row: getRowRecord(options.row, options.columnMap),\n rowKey: options.row[KEY],\n } as VuuRowMenuItem;\n default:\n return menu;\n }\n};\n\nexport const buildMenuDescriptorFromVuuMenu = (\n menu: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): ContextMenuItemDescriptor | undefined => {\n if (menuShouldBeRenderedInThisContext(menu, tableLocation, options)) {\n if (isVuuMenuItem(menu)) {\n return {\n label: menu.name,\n action: \"MENU_RPC_CALL\",\n options: getMenuItemOptions(menu, options),\n };\n } else {\n const children = menu.menus\n .map((childMenu) =>\n buildMenuDescriptorFromVuuMenu(childMenu, tableLocation, options),\n )\n .filter(\n (childMenu) => childMenu !== undefined,\n ) as ContextMenuItemDescriptor[];\n if (children.length > 0) {\n return {\n label: menu.name,\n children,\n };\n }\n }\n }\n};\n\nexport const getMenuRpcRequest = (\n options: VuuMenuItem,\n): Omit<ClientToServerMenuRPC, \"vpId\"> => {\n const { rpcName } = options;\n if (isCellMenu(options)) {\n return {\n field: options.field,\n rowKey: options.rowKey,\n rpcName,\n value: options.value,\n type: \"VIEW_PORT_MENU_CELL_RPC\",\n } as Omit<ClientToServerMenuCellRPC, \"vpId\">;\n } else if (isRowMenu(options)) {\n return {\n rowKey: options.rowKey,\n row: options.row,\n rpcName,\n type: \"VIEW_PORT_MENU_ROW_RPC\",\n } as Omit<ClientToServerMenuRowRPC, \"vpId\">;\n } else if (isSelectionMenu(options)) {\n return {\n rpcName,\n type: \"VIEW_PORT_MENUS_SELECT_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n } else {\n return {\n rpcName,\n type: \"VIEW_PORT_MENU_TABLE_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n }\n};\n\nexport const isOpenBulkEditResponse = (\n res: Partial<RpcResponse>,\n): res is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (res as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<RpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n"],"names":["metadataKeys","getFilterPredicate","getRowRecord"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu-utils.js","sources":["../src/menu-utils.ts"],"sourcesContent":["import {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n DataSourceRow,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { getFilterPredicate } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerMenuCellRPC,\n VuuRpcMenuRequest,\n ClientToServerMenuRowRPC,\n ShowNotificationAction,\n VuuMenu,\n VuuMenuContext,\n VuuMenuItem,\n VuuRpcResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n TableMenuLocation,\n VuuCellMenuItem,\n VuuRowMenuItem,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getRowRecord, metadataKeys, type ColumnMap } from \"./column-utils\";\n\nexport type VuuServerMenuOptions = {\n columnMap: ColumnMap;\n columnName: string;\n row: DataSourceRow;\n selectedRows: DataSourceRow[];\n viewport: string;\n};\n\nconst { KEY } = metadataKeys;\n\nexport const isRoot = (menu: VuuMenu) => menu.name === \"ROOT\";\n\nexport const isCellMenu = (options: VuuMenuItem): options is VuuCellMenuItem =>\n options.context === \"cell\";\n\nexport const isRowMenu = (options: VuuMenuItem): options is VuuRowMenuItem =>\n options.context === \"row\";\n\nexport const isSelectionMenu = (options: VuuMenuItem): options is VuuMenuItem =>\n options.context === \"selected-rows\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst isVuuMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenuItem =>\n \"rpcName\" in menu;\n\nconst isGroupMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenu =>\n \"menus\" in menu;\n\nconst hasFilter = ({ filter }: VuuMenuItem) =>\n typeof filter === \"string\" && filter.length > 0;\n\nconst vuuContextCompatibleWithTableLocation = (\n uiLocation: TableMenuLocation,\n vuuContext: VuuMenuContext,\n selectedRowCount = 0,\n) => {\n switch (uiLocation) {\n case \"grid\":\n if (vuuContext === \"selected-rows\") {\n return selectedRowCount > 0;\n } else {\n return true;\n }\n case \"header\":\n return vuuContext === \"grid\";\n default:\n return false;\n }\n};\n\nconst gridRowMeetsFilterCriteria = (\n context: VuuMenuContext,\n row: DataSourceRow,\n selectedRows: DataSourceRow[],\n filter: string,\n columnMap: ColumnMap,\n): boolean => {\n if (context === \"cell\" || context === \"row\") {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return filterPredicate(row);\n } else if (context === \"selected-rows\") {\n if (selectedRows.length === 0) {\n return false;\n } else {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return selectedRows.every(filterPredicate);\n }\n }\n return true;\n};\n\nconst menuShouldBeRenderedInThisContext = (\n menuItem: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): boolean => {\n if (isGroupMenuItem(menuItem)) {\n return menuItem.menus.some((childMenu) =>\n menuShouldBeRenderedInThisContext(childMenu, tableLocation, options),\n );\n }\n if (\n !vuuContextCompatibleWithTableLocation(\n tableLocation,\n menuItem.context,\n options.selectedRows?.length,\n )\n ) {\n return false;\n }\n\n if (tableLocation === \"grid\" && hasFilter(menuItem)) {\n return gridRowMeetsFilterCriteria(\n menuItem.context,\n options.row,\n options.selectedRows,\n menuItem.filter,\n options.columnMap,\n );\n }\n\n if (isCellMenu(menuItem) && menuItem.field !== \"*\") {\n return menuItem.field === options.columnName;\n }\n\n return true;\n};\n\nconst getMenuItemOptions = (\n menu: VuuMenuItem,\n options: VuuServerMenuOptions,\n): VuuMenuItem => {\n switch (menu.context) {\n case \"cell\":\n return {\n ...menu,\n field: options.columnName,\n rowKey: options.row[KEY],\n value: options.row[options.columnMap[options.columnName]],\n } as VuuCellMenuItem;\n case \"row\":\n return {\n ...menu,\n row: getRowRecord(options.row, options.columnMap),\n rowKey: options.row[KEY],\n } as VuuRowMenuItem;\n default:\n return menu;\n }\n};\n\nexport const buildMenuDescriptorFromVuuMenu = (\n menu: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): ContextMenuItemDescriptor | undefined => {\n if (menuShouldBeRenderedInThisContext(menu, tableLocation, options)) {\n if (isVuuMenuItem(menu)) {\n return {\n label: menu.name,\n action: \"MENU_RPC_CALL\",\n options: getMenuItemOptions(menu, options),\n };\n } else {\n const children = menu.menus\n .map((childMenu) =>\n buildMenuDescriptorFromVuuMenu(childMenu, tableLocation, options),\n )\n .filter(\n (childMenu) => childMenu !== undefined,\n ) as ContextMenuItemDescriptor[];\n if (children.length > 0) {\n return {\n label: menu.name,\n children,\n };\n }\n }\n }\n};\n\nexport const getMenuRpcRequest = (\n options: VuuMenuItem,\n): Omit<VuuRpcMenuRequest, \"vpId\"> => {\n const { rpcName } = options;\n if (isCellMenu(options)) {\n return {\n field: options.field,\n rowKey: options.rowKey,\n rpcName,\n value: options.value,\n type: \"VIEW_PORT_MENU_CELL_RPC\",\n } as Omit<ClientToServerMenuCellRPC, \"vpId\">;\n } else if (isRowMenu(options)) {\n return {\n rowKey: options.rowKey,\n row: options.row,\n rpcName,\n type: \"VIEW_PORT_MENU_ROW_RPC\",\n } as Omit<ClientToServerMenuRowRPC, \"vpId\">;\n } else if (isSelectionMenu(options)) {\n return {\n rpcName,\n type: \"VIEW_PORT_MENUS_SELECT_RPC\",\n } as Omit<VuuRpcMenuRequest, \"vpId\">;\n } else {\n return {\n rpcName,\n type: \"VIEW_PORT_MENU_TABLE_RPC\",\n } as Omit<VuuRpcMenuRequest, \"vpId\">;\n }\n};\n\nexport const isOpenBulkEditResponse = (\n rpcResponse: Partial<VuuRpcResponse>,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (rpcResponse as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<VuuRpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n"],"names":["metadataKeys","getFilterPredicate","getRowRecord"],"mappings":"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"}
|
|
@@ -16,9 +16,69 @@ const isVuuMenuRpcRequest = (message) => MENU_RPC_TYPES.includes(message["type"]
|
|
|
16
16
|
const isRequestResponse = (message) => "requestId" in message;
|
|
17
17
|
const isOpenSessionTableDialogMessage = (rpcResponse) => rpcResponse.type === "VIEW_PORT_MENU_RESP" && isOpenDialogAction(rpcResponse.action) && "tableSchema" in rpcResponse.action;
|
|
18
18
|
const isOpenDialogAction = (action) => action !== void 0 && action.type === "OPEN_DIALOG_ACTION";
|
|
19
|
+
function isViewportRpcRequest(request) {
|
|
20
|
+
return request.type === "VIEW_PORT_RPC_CALL";
|
|
21
|
+
}
|
|
22
|
+
function isEditCellRequest(request) {
|
|
23
|
+
return request.type === "VP_EDIT_CELL_RPC";
|
|
24
|
+
}
|
|
25
|
+
function vuuEditCellRequest(rowKey, field, value, vpId) {
|
|
26
|
+
return {
|
|
27
|
+
rowKey,
|
|
28
|
+
field,
|
|
29
|
+
value,
|
|
30
|
+
type: "VP_EDIT_CELL_RPC",
|
|
31
|
+
vpId
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function viewportRpcRequest(rpcName, vpId) {
|
|
35
|
+
return {
|
|
36
|
+
namedParams: {},
|
|
37
|
+
params: [],
|
|
38
|
+
rpcName,
|
|
39
|
+
type: "VIEW_PORT_RPC_CALL",
|
|
40
|
+
vpId
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function vuuAddRowRequest(rowKey, data, vpId) {
|
|
44
|
+
return {
|
|
45
|
+
rowKey,
|
|
46
|
+
data,
|
|
47
|
+
type: "VP_EDIT_ADD_ROW_RPC",
|
|
48
|
+
vpId
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function vuuDeleteRowRequest(rowKey, vpId) {
|
|
52
|
+
return {
|
|
53
|
+
rowKey,
|
|
54
|
+
type: "VP_EDIT_DELETE_ROW_RPC",
|
|
55
|
+
vpId
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const isSessionTable = (table) => {
|
|
59
|
+
if (table !== null && typeof table === "object" && "table" in table && "module" in table) {
|
|
60
|
+
return table.table.startsWith("session");
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
};
|
|
64
|
+
function isActionMessage(rpcResponse) {
|
|
65
|
+
return rpcResponse.type === "VIEW_PORT_MENU_RESP" || rpcResponse.type === "VIEW_PORT_RPC_REPONSE";
|
|
66
|
+
}
|
|
67
|
+
function isSessionTableActionMessage(rpcResponse) {
|
|
68
|
+
return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && rpcResponse.action?.renderComponent === "inline-form";
|
|
69
|
+
}
|
|
19
70
|
|
|
71
|
+
exports.isActionMessage = isActionMessage;
|
|
72
|
+
exports.isEditCellRequest = isEditCellRequest;
|
|
20
73
|
exports.isOpenDialogAction = isOpenDialogAction;
|
|
21
74
|
exports.isOpenSessionTableDialogMessage = isOpenSessionTableDialogMessage;
|
|
22
75
|
exports.isRequestResponse = isRequestResponse;
|
|
76
|
+
exports.isSessionTable = isSessionTable;
|
|
77
|
+
exports.isSessionTableActionMessage = isSessionTableActionMessage;
|
|
78
|
+
exports.isViewportRpcRequest = isViewportRpcRequest;
|
|
23
79
|
exports.isVuuMenuRpcRequest = isVuuMenuRpcRequest;
|
|
80
|
+
exports.viewportRpcRequest = viewportRpcRequest;
|
|
81
|
+
exports.vuuAddRowRequest = vuuAddRowRequest;
|
|
82
|
+
exports.vuuDeleteRowRequest = vuuDeleteRowRequest;
|
|
83
|
+
exports.vuuEditCellRequest = vuuEditCellRequest;
|
|
24
84
|
//# sourceMappingURL=protocol-message-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-message-utils.js","sources":["../src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n
|
|
1
|
+
{"version":3,"file":"protocol-message-utils.js","sources":["../src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcEditCellRequest,\n VuuRowDataItemType,\n VuuRpcRequest,\n VuuRpcEditAddRowRequest,\n VuuDataRowDto,\n VuuRpcEditDeleteRowRequest,\n VuuRpcViewportRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuRpcViewportResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n \"VP_EDIT_CELL_RPC\",\n \"VP_EDIT_ROW_RPC\",\n \"VP_EDIT_ADD_ROW_RPC\",\n \"VP_EDIT_DELETE_CELL_RPC\",\n \"VP_EDIT_DELETE_ROW_RPC\",\n \"VP_EDIT_SUBMIT_FORM_RPC\",\n];\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport function isViewportRpcRequest(\n request: VuuRpcRequest,\n): request is VuuRpcViewportRequest;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return request.type === \"VIEW_PORT_RPC_CALL\";\n}\n\nexport function isEditCellRequest(\n request: VuuRpcRequest,\n): request is VuuRpcEditCellRequest;\nexport function isEditCellRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function isEditCellRequest(\n request: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return request.type === \"VP_EDIT_CELL_RPC\";\n}\n\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId: string,\n): VuuRpcEditCellRequest;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n): Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId?: string,\n): VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return {\n rowKey,\n field,\n value,\n type: \"VP_EDIT_CELL_RPC\",\n vpId,\n };\n}\n\nexport function viewportRpcRequest(\n rpcName: string,\n vpId: string,\n): VuuRpcViewportRequest;\nexport function viewportRpcRequest(\n rpcName: string,\n): Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function viewportRpcRequest(\n rpcName: string,\n vpId?: string,\n): VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return {\n namedParams: {},\n params: [],\n rpcName,\n type: \"VIEW_PORT_RPC_CALL\",\n vpId,\n };\n}\n\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId: string,\n): VuuRpcEditAddRowRequest;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n): Omit<VuuRpcEditAddRowRequest, \"vpId\">;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId?: string,\n): VuuRpcEditAddRowRequest | Omit<VuuRpcEditAddRowRequest, \"vpId\"> {\n return {\n rowKey,\n data,\n type: \"VP_EDIT_ADD_ROW_RPC\",\n vpId,\n };\n}\n\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId: string,\n): VuuRpcEditDeleteRowRequest;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n): Omit<VuuRpcEditDeleteRowRequest, \"vpId\">;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId?: string,\n): VuuRpcEditDeleteRowRequest | Omit<VuuRpcEditDeleteRowRequest, \"vpId\"> {\n return {\n rowKey,\n type: \"VP_EDIT_DELETE_ROW_RPC\",\n vpId,\n };\n}\n\n// export type WithTableSchema<\n// T extends VuuRpcMenuSuccess | VuuRpcViewportResponse = VuuRpcMenuSuccess,\n// > = T & {\n// action: T extends VuuRpcMenuSuccess\n// ? VuuRpcMenuSuccess[\"action\"] & { tableSchema: TableSchema }\n// : VuuRpcViewportResponse[\"action\"] & { tableSchema: TableSchema };\n// };\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcViewportResponse | VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is\n | Omit<VuuRpcViewportResponse, \"vpId\">\n | Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return (\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" ||\n rpcResponse.type === \"VIEW_PORT_RPC_REPONSE\"\n );\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n"],"names":[],"mappings":";;AAwBA,MAAM,cAAiB,GAAA;AAAA,EACrB,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AACF,CAAA,CAAA;AAEO,MAAM,sBAAsB,CACjC,OAAA,KACiC,eAAe,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAC,EAAA;AAE7D,MAAA,iBAAA,GAAoB,CAC/B,OAAA,KAC6C,WAAe,IAAA,QAAA;AAEjD,MAAA,+BAAA,GAAkC,CAC7C,WAAA,KAEA,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,kBAAA,CAAmB,WAAY,CAAA,MAAM,CACrC,IAAA,aAAA,IAAiB,WAAY,CAAA,OAAA;AAExB,MAAM,qBAAqB,CAChC,MAAA,KAEA,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,IAAS,KAAA,qBAAA;AAQnC,SAAS,qBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,oBAAA,CAAA;AAC1B,CAAA;AAQO,SAAS,kBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,kBAAA,CAAA;AAC1B,CAAA;AAaO,SAAS,kBACd,CAAA,MAAA,EACA,KACA,EAAA,KAAA,EACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAM,EAAA,kBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AASgB,SAAA,kBAAA,CACd,SACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,aAAa,EAAC;AAAA,IACd,QAAQ,EAAC;AAAA,IACT,OAAA;AAAA,IACA,IAAM,EAAA,oBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AAWgB,SAAA,gBAAA,CACd,MACA,EAAA,IAAA,EACA,IACiE,EAAA;AACjE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAM,EAAA,qBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AASgB,SAAA,mBAAA,CACd,QACA,IACuE,EAAA;AACvE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAM,EAAA,wBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AAUa,MAAA,cAAA,GAAiB,CAAC,KAAoB,KAAA;AACjD,EACE,IAAA,KAAA,KAAU,QACV,OAAO,KAAA,KAAU,YACjB,OAAW,IAAA,KAAA,IACX,YAAY,KACZ,EAAA;AACA,IAAQ,OAAA,KAAA,CAAmB,KAAM,CAAA,UAAA,CAAW,SAAS,CAAA,CAAA;AAAA,GACvD;AACA,EAAO,OAAA,KAAA,CAAA;AACT,EAAA;AAUO,SAAS,gBACd,WACA,EAAA;AACA,EAAA,OACE,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,WAAA,CAAY,IAAS,KAAA,uBAAA,CAAA;AAEzB,CAAA;AAmBO,SAAS,4BACd,WAKA,EAAA;AACA,EAAA,OACE,eAAgB,CAAA,WAAW,CAC3B,IAAA,kBAAA,CAAmB,YAAY,MAAM,CAAA,IACrC,cAAe,CAAA,WAAA,CAAY,MAAO,CAAA,KAAK,CACvC,IAAA,WAAA,CAAY,QAAQ,eAAoB,KAAA,aAAA,CAAA;AAE5C;;;;;;;;;;;;;;;;"}
|
package/esm/datasource-utils.js
CHANGED
|
@@ -129,8 +129,8 @@ const isConnectionStatusMessage = (msg) => msg.type === "connection-status";
|
|
|
129
129
|
const isConnectionQualityMetrics = (msg) => msg.type === "connection-metrics";
|
|
130
130
|
const messageHasResult = (msg) => typeof msg.result !== "undefined";
|
|
131
131
|
const isErrorResponse = (response) => response?.type === "VP_EDIT_RPC_REJECT";
|
|
132
|
-
const hasAction = (response) => response != void 0 && "action" in response;
|
|
133
132
|
const isViewportMessage = (msg) => "viewport" in msg;
|
|
133
|
+
const messageHasDataRows = (message) => message.type === "viewport-update" && Array.isArray(message.rows);
|
|
134
134
|
const withConfigDefaults = (config) => {
|
|
135
135
|
if (config.aggregations && config.columns && config.filterSpec && config.groupBy && config.sort) {
|
|
136
136
|
return config;
|
|
@@ -154,5 +154,5 @@ const withConfigDefaults = (config) => {
|
|
|
154
154
|
}
|
|
155
155
|
};
|
|
156
156
|
|
|
157
|
-
export { NO_CONFIG_CHANGES, NoFilter, NoSort,
|
|
157
|
+
export { NO_CONFIG_CHANGES, NoFilter, NoSort, hasFilter, hasGroupBy, hasSort, isConfigChanged, isConnectionQualityMetrics, isConnectionStatusMessage, isErrorResponse, isFilterChanged, isGroupByChanged, isTableSchemaMessage, isTypeaheadSuggestionProvider, isViewportMessage, messageHasDataRows, messageHasResult, vanillaConfig, withConfigDefaults };
|
|
158
158
|
//# sourceMappingURL=datasource-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-utils.js","sources":["../src/datasource-utils.ts"],"sourcesContent":["import {\n ConnectionQualityMetrics,\n ConnectionStatusMessage,\n DataSourceConfig,\n MenuRpcResponse,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInRPCEditResponse,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuFilter,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: DataSourceConfig,\n newConfig: DataSourceConfig,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = () => {\n // TODO\n return false;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (config?: DataSourceConfig): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionStatusMessage = (\n msg: object | ConnectionStatusMessage,\n): msg is ConnectionStatusMessage =>\n (msg as ConnectionStatusMessage).type === \"connection-status\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const hasAction = (\n response?: Partial<RpcResponse>,\n): response is MenuRpcResponse | VuuUIMessageInRPCEditResponse =>\n response != undefined && \"action\" in response;\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport const withConfigDefaults = (\n config: DataSourceConfig,\n): WithFullConfig & { visualLink?: LinkDescriptorWithLabel } => {\n if (\n config.aggregations &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datasource-utils.js","sources":["../src/datasource-utils.ts"],"sourcesContent":["import {\n ConnectionQualityMetrics,\n ConnectionStatusMessage,\n DataSourceCallbackMessage,\n DataSourceConfig,\n DataSourceDataMessage,\n DataSourceRow,\n RpcResponse,\n TypeaheadSuggestionProvider,\n VuuUIMessageIn,\n VuuUIMessageInRPC,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInTableMeta,\n VuuUIMessageOutViewport,\n WithFilter,\n WithFullConfig,\n WithGroupBy,\n WithSort,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n LinkDescriptorWithLabel,\n VuuFilter,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nexport const NoFilter: VuuFilter = { filter: \"\" };\nexport const NoSort: VuuSort = { sortDefs: [] };\n\nexport const vanillaConfig: WithFullConfig = {\n aggregations: [],\n columns: [],\n filterSpec: NoFilter,\n groupBy: [],\n sort: NoSort,\n};\n\nexport type DataSourceConfigChanges = {\n aggregationsChanged: boolean;\n columnsChanged: boolean;\n filterChanged: boolean;\n groupByChanged: boolean;\n sortChanged: boolean;\n visualLinkChanged: boolean;\n};\n\nexport type MaybeDataSourceConfigChanges = DataSourceConfigChanges & {\n noChanges: boolean;\n};\n\ntype DataConfigPredicate = (\n config: DataSourceConfig,\n newConfig: DataSourceConfig,\n) => boolean;\n\nconst equivalentAggregations: DataConfigPredicate = (\n { aggregations: agg1 },\n { aggregations: agg2 },\n) =>\n (agg1 === undefined && agg2?.length === 0) ||\n (agg2 === undefined && agg1?.length === 0);\n\nconst equivalentColumns: DataConfigPredicate = (\n { columns: cols1 },\n { columns: cols2 },\n) =>\n (cols1 === undefined && cols2?.length === 0) ||\n (cols2 === undefined && cols1?.length === 0);\n\nconst equivalentFilter: DataConfigPredicate = (\n { filterSpec: f1 },\n { filterSpec: f2 },\n) =>\n (f1 === undefined && f2?.filter === \"\") ||\n (f2 === undefined && f1?.filter === \"\");\n\nconst equivalentGroupBy: DataConfigPredicate = (\n { groupBy: val1 },\n { groupBy: val2 },\n) =>\n (val1 === undefined && val2?.length === 0) ||\n (val2 === undefined && val1?.length === 0);\n\nconst equivalentSort: DataConfigPredicate = ({ sort: s1 }, { sort: s2 }) =>\n (s1 === undefined && s2?.sortDefs.length === 0) ||\n (s2 === undefined && s1?.sortDefs.length === 0);\n\nconst exactlyTheSame = (a: unknown, b: unknown) => {\n if (a === b) {\n return true;\n } else if (a === undefined && b === undefined) {\n return true;\n } else {\n return false;\n }\n};\n\nconst isAggregationsChanged: DataConfigPredicate = (config, newConfig) => {\n const { aggregations: agg1 } = config;\n const { aggregations: agg2 } = newConfig;\n if (exactlyTheSame(agg1, agg2) || equivalentAggregations(config, newConfig)) {\n return false;\n } else if (agg1 === undefined || agg2 === undefined) {\n return true;\n } else if (agg1.length !== agg2.length) {\n return true;\n }\n return agg1.some(\n ({ column, aggType }, i) =>\n column !== agg2[i].column || aggType !== agg2[i].aggType,\n );\n};\n\nconst isColumnsChanged: DataConfigPredicate = (config, newConfig) => {\n const { columns: cols1 } = config;\n const { columns: cols2 } = newConfig;\n\n if (exactlyTheSame(cols1, cols2) || equivalentColumns(config, newConfig)) {\n return false;\n } else if (cols1 === undefined || cols2 === undefined) {\n return true;\n } else if (cols1?.length !== cols2?.length) {\n return true;\n }\n return cols1.some((column, i) => column !== cols2?.[i]);\n};\n\nexport const isFilterChanged: DataConfigPredicate = (c1, c2) => {\n if (equivalentFilter(c1, c2)) {\n return false;\n } else {\n return c1.filterSpec?.filter !== c2.filterSpec?.filter;\n }\n};\n\nexport const isGroupByChanged: DataConfigPredicate = (config, newConfig) => {\n const { groupBy: g1 } = config;\n const { groupBy: g2 } = newConfig;\n if (exactlyTheSame(g1, g2) || equivalentGroupBy(config, newConfig)) {\n return false;\n } else if (g1 === undefined || g2 === undefined) {\n return true;\n } else if (g1?.length !== g2?.length) {\n return true;\n }\n return g1.some((column, i) => column !== g2?.[i]);\n};\n\nconst isSortChanged: DataConfigPredicate = (config, newConfig) => {\n const { sort: s1 } = config;\n const { sort: s2 } = newConfig;\n if (exactlyTheSame(s1, s2) || equivalentSort(config, newConfig)) {\n return false;\n } else if (s1 === undefined || s2 === undefined) {\n return true;\n } else if (s1?.sortDefs.length !== s2?.sortDefs.length) {\n return true;\n }\n return s1.sortDefs.some(\n ({ column, sortType }, i) =>\n column !== s2.sortDefs[i].column || sortType !== s2.sortDefs[i].sortType,\n );\n};\n\nconst isVisualLinkChanged: DataConfigPredicate = () => {\n // TODO\n return false;\n};\n\nexport const NO_CONFIG_CHANGES: MaybeDataSourceConfigChanges = {\n aggregationsChanged: false,\n columnsChanged: false,\n filterChanged: false,\n groupByChanged: false,\n noChanges: true,\n sortChanged: false,\n visualLinkChanged: false,\n};\n\nexport const isConfigChanged = (\n config: DataSourceConfig | undefined,\n newConfig: DataSourceConfig | undefined,\n): MaybeDataSourceConfigChanges => {\n if (exactlyTheSame(config, newConfig)) {\n return NO_CONFIG_CHANGES;\n }\n\n if (config === undefined && newConfig == undefined) {\n return NO_CONFIG_CHANGES;\n } else if (config === undefined) {\n return isConfigChanged({}, newConfig);\n } else if (newConfig === undefined) {\n return isConfigChanged(config, {});\n }\n\n const aggregationsChanged = isAggregationsChanged(config, newConfig);\n const columnsChanged = isColumnsChanged(config, newConfig);\n const filterChanged = isFilterChanged(config, newConfig);\n const groupByChanged = isGroupByChanged(config, newConfig);\n const sortChanged = isSortChanged(config, newConfig);\n const visualLinkChanged = isVisualLinkChanged(config, newConfig);\n\n const noChanges = !(\n aggregationsChanged ||\n columnsChanged ||\n filterChanged ||\n groupByChanged ||\n sortChanged ||\n visualLinkChanged\n );\n\n return {\n aggregationsChanged,\n columnsChanged,\n filterChanged,\n groupByChanged,\n noChanges,\n sortChanged,\n visualLinkChanged,\n };\n};\n\nexport const hasGroupBy = (config?: DataSourceConfig): config is WithGroupBy =>\n config !== undefined &&\n config.groupBy !== undefined &&\n config.groupBy.length > 0;\n\nexport const hasFilter = (config?: DataSourceConfig): config is WithFilter =>\n config?.filterSpec !== undefined && config.filterSpec.filter.length > 0;\n\nexport const hasSort = (config?: DataSourceConfig): config is WithSort =>\n config?.sort !== undefined &&\n Array.isArray(config.sort?.sortDefs) &&\n config.sort.sortDefs.length > 0;\n\nexport const isTypeaheadSuggestionProvider = (\n source: unknown,\n): source is TypeaheadSuggestionProvider =>\n typeof (source as TypeaheadSuggestionProvider)[\"getTypeaheadSuggestions\"] ===\n \"function\";\n\nexport const isTableSchemaMessage = (\n message: VuuUIMessageIn,\n): message is VuuUIMessageInTableMeta => message.type === \"TABLE_META_RESP\";\n\nexport const isConnectionStatusMessage = (\n msg: object | ConnectionStatusMessage,\n): msg is ConnectionStatusMessage =>\n (msg as ConnectionStatusMessage).type === \"connection-status\";\n\nexport const isConnectionQualityMetrics = (\n msg: object,\n): msg is ConnectionQualityMetrics =>\n (msg as ConnectionQualityMetrics).type === \"connection-metrics\";\n\nexport const messageHasResult = (msg: object): msg is VuuUIMessageInRPC =>\n typeof (msg as VuuUIMessageInRPC).result !== \"undefined\";\n\nexport const isErrorResponse = (\n response?: Partial<RpcResponse>,\n): response is VuuUIMessageInRPCEditReject =>\n response?.type === \"VP_EDIT_RPC_REJECT\";\n\nexport const isViewportMessage = (\n msg: object,\n): msg is VuuUIMessageOutViewport => \"viewport\" in msg;\n\nexport type DataSourceDataMessageWithRows = Omit<\n DataSourceDataMessage,\n \"rows\"\n> & {\n rows: DataSourceRow[];\n};\nexport const messageHasDataRows = (\n message: DataSourceCallbackMessage,\n): message is DataSourceDataMessageWithRows =>\n message.type === \"viewport-update\" && Array.isArray(message.rows);\n\nexport const withConfigDefaults = (\n config: DataSourceConfig,\n): WithFullConfig & { visualLink?: LinkDescriptorWithLabel } => {\n if (\n config.aggregations &&\n config.columns &&\n config.filterSpec &&\n config.groupBy &&\n config.sort\n ) {\n return config as WithFullConfig;\n } else {\n const {\n aggregations = [],\n columns = [],\n filterSpec: filter = { filter: \"\" },\n groupBy = [],\n sort = { sortDefs: [] },\n visualLink,\n } = config;\n\n return {\n aggregations,\n columns,\n filterSpec: filter,\n groupBy,\n sort,\n visualLink,\n };\n }\n};\n"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { MEASURES } from './common-types.js';
|
|
|
8
8
|
export { importCSS } from './css-utils.js';
|
|
9
9
|
export { DOWN1, DOWN2, UP1, UP2, getMovingValueDirection, isValidNumber, shallowEquals } from './data-utils.js';
|
|
10
10
|
export { isViewportMenusAction, isVisualLinkCreatedAction, isVisualLinkRemovedAction, isVisualLinksAction, isVuuFeatureAction } from './datasource-action-utils.js';
|
|
11
|
-
export { NO_CONFIG_CHANGES, NoFilter, NoSort,
|
|
11
|
+
export { NO_CONFIG_CHANGES, NoFilter, NoSort, hasFilter, hasGroupBy, hasSort, isConfigChanged, isConnectionQualityMetrics, isConnectionStatusMessage, isErrorResponse, isFilterChanged, isGroupByChanged, isTableSchemaMessage, isTypeaheadSuggestionProvider, isViewportMessage, messageHasDataRows, messageHasResult, vanillaConfig, withConfigDefaults } from './datasource-utils.js';
|
|
12
12
|
export { formatDate, getDateFormatter } from './date/formatter.js';
|
|
13
13
|
export { dateTimeLabelByType, isDatePattern, isDateTimePattern, isTimePattern, supportedDateTimePatterns } from './date/types.js';
|
|
14
14
|
export { toCalendarDate } from './date/date-utils.js';
|
|
@@ -38,7 +38,7 @@ export { uuid } from './nanoid/index.js';
|
|
|
38
38
|
export { asReactElements } from './react-utils.js';
|
|
39
39
|
export { roundDecimal } from './round-decimal.js';
|
|
40
40
|
export { debounce, throttle } from './perf-utils.js';
|
|
41
|
-
export { isOpenDialogAction, isOpenSessionTableDialogMessage, isRequestResponse, isVuuMenuRpcRequest } from './protocol-message-utils.js';
|
|
41
|
+
export { isActionMessage, isEditCellRequest, isOpenDialogAction, isOpenSessionTableDialogMessage, isRequestResponse, isSessionTable, isSessionTableActionMessage, isViewportRpcRequest, isVuuMenuRpcRequest, viewportRpcRequest, vuuAddRowRequest, vuuDeleteRowRequest, vuuEditCellRequest } from './protocol-message-utils.js';
|
|
42
42
|
export { NULL_RANGE, WindowRange, getFullRange, rangeNewItems, rangesAreSame, resetRange, withinRange } from './range-utils.js';
|
|
43
43
|
export { actualRowPositioning, asDataSourceRowObject, getIndexFromRowElement, getRowElementAtIndex, virtualRowPositioning } from './row-utils.js';
|
|
44
44
|
export { RowSelected, deselectItem, expandSelection, getSelectionStatus, isRowSelected, isRowSelectedLast, isSelected, selectItem, selectionCount } from './selection-utils.js';
|
package/esm/menu-utils.js
CHANGED
|
@@ -137,7 +137,7 @@ const getMenuRpcRequest = (options) => {
|
|
|
137
137
|
};
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
|
-
const isOpenBulkEditResponse = (
|
|
140
|
+
const isOpenBulkEditResponse = (rpcResponse) => rpcResponse.rpcName === "VP_BULK_EDIT_BEGIN_RPC";
|
|
141
141
|
const hasShowNotificationAction = (res) => res.action?.type === "SHOW_NOTIFICATION_ACTION";
|
|
142
142
|
|
|
143
143
|
export { buildMenuDescriptorFromVuuMenu, getMenuRpcRequest, hasShowNotificationAction, isCellMenu, isGroupMenuItemDescriptor, isOpenBulkEditResponse, isRoot, isRowMenu, isSelectionMenu, isTableLocation };
|
package/esm/menu-utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-utils.js","sources":["../src/menu-utils.ts"],"sourcesContent":["import {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n DataSourceRow,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport { getFilterPredicate } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerMenuCellRPC,\n ClientToServerMenuRPC,\n ClientToServerMenuRowRPC,\n ShowNotificationAction,\n VuuMenu,\n VuuMenuContext,\n VuuMenuItem,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n TableMenuLocation,\n VuuCellMenuItem,\n VuuRowMenuItem,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getRowRecord, metadataKeys, type ColumnMap } from \"./column-utils\";\n\nexport type VuuServerMenuOptions = {\n columnMap: ColumnMap;\n columnName: string;\n row: DataSourceRow;\n selectedRows: DataSourceRow[];\n viewport: string;\n};\n\nconst { KEY } = metadataKeys;\n\nexport const isRoot = (menu: VuuMenu) => menu.name === \"ROOT\";\n\nexport const isCellMenu = (options: VuuMenuItem): options is VuuCellMenuItem =>\n options.context === \"cell\";\n\nexport const isRowMenu = (options: VuuMenuItem): options is VuuRowMenuItem =>\n options.context === \"row\";\n\nexport const isSelectionMenu = (options: VuuMenuItem): options is VuuMenuItem =>\n options.context === \"selected-rows\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst isVuuMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenuItem =>\n \"rpcName\" in menu;\n\nconst isGroupMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenu =>\n \"menus\" in menu;\n\nconst hasFilter = ({ filter }: VuuMenuItem) =>\n typeof filter === \"string\" && filter.length > 0;\n\nconst vuuContextCompatibleWithTableLocation = (\n uiLocation: TableMenuLocation,\n vuuContext: VuuMenuContext,\n selectedRowCount = 0,\n) => {\n switch (uiLocation) {\n case \"grid\":\n if (vuuContext === \"selected-rows\") {\n return selectedRowCount > 0;\n } else {\n return true;\n }\n case \"header\":\n return vuuContext === \"grid\";\n default:\n return false;\n }\n};\n\nconst gridRowMeetsFilterCriteria = (\n context: VuuMenuContext,\n row: DataSourceRow,\n selectedRows: DataSourceRow[],\n filter: string,\n columnMap: ColumnMap,\n): boolean => {\n if (context === \"cell\" || context === \"row\") {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return filterPredicate(row);\n } else if (context === \"selected-rows\") {\n if (selectedRows.length === 0) {\n return false;\n } else {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return selectedRows.every(filterPredicate);\n }\n }\n return true;\n};\n\nconst menuShouldBeRenderedInThisContext = (\n menuItem: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): boolean => {\n if (isGroupMenuItem(menuItem)) {\n return menuItem.menus.some((childMenu) =>\n menuShouldBeRenderedInThisContext(childMenu, tableLocation, options),\n );\n }\n if (\n !vuuContextCompatibleWithTableLocation(\n tableLocation,\n menuItem.context,\n options.selectedRows?.length,\n )\n ) {\n return false;\n }\n\n if (tableLocation === \"grid\" && hasFilter(menuItem)) {\n return gridRowMeetsFilterCriteria(\n menuItem.context,\n options.row,\n options.selectedRows,\n menuItem.filter,\n options.columnMap,\n );\n }\n\n if (isCellMenu(menuItem) && menuItem.field !== \"*\") {\n return menuItem.field === options.columnName;\n }\n\n return true;\n};\n\nconst getMenuItemOptions = (\n menu: VuuMenuItem,\n options: VuuServerMenuOptions,\n): VuuMenuItem => {\n switch (menu.context) {\n case \"cell\":\n return {\n ...menu,\n field: options.columnName,\n rowKey: options.row[KEY],\n value: options.row[options.columnMap[options.columnName]],\n } as VuuCellMenuItem;\n case \"row\":\n return {\n ...menu,\n row: getRowRecord(options.row, options.columnMap),\n rowKey: options.row[KEY],\n } as VuuRowMenuItem;\n default:\n return menu;\n }\n};\n\nexport const buildMenuDescriptorFromVuuMenu = (\n menu: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): ContextMenuItemDescriptor | undefined => {\n if (menuShouldBeRenderedInThisContext(menu, tableLocation, options)) {\n if (isVuuMenuItem(menu)) {\n return {\n label: menu.name,\n action: \"MENU_RPC_CALL\",\n options: getMenuItemOptions(menu, options),\n };\n } else {\n const children = menu.menus\n .map((childMenu) =>\n buildMenuDescriptorFromVuuMenu(childMenu, tableLocation, options),\n )\n .filter(\n (childMenu) => childMenu !== undefined,\n ) as ContextMenuItemDescriptor[];\n if (children.length > 0) {\n return {\n label: menu.name,\n children,\n };\n }\n }\n }\n};\n\nexport const getMenuRpcRequest = (\n options: VuuMenuItem,\n): Omit<ClientToServerMenuRPC, \"vpId\"> => {\n const { rpcName } = options;\n if (isCellMenu(options)) {\n return {\n field: options.field,\n rowKey: options.rowKey,\n rpcName,\n value: options.value,\n type: \"VIEW_PORT_MENU_CELL_RPC\",\n } as Omit<ClientToServerMenuCellRPC, \"vpId\">;\n } else if (isRowMenu(options)) {\n return {\n rowKey: options.rowKey,\n row: options.row,\n rpcName,\n type: \"VIEW_PORT_MENU_ROW_RPC\",\n } as Omit<ClientToServerMenuRowRPC, \"vpId\">;\n } else if (isSelectionMenu(options)) {\n return {\n rpcName,\n type: \"VIEW_PORT_MENUS_SELECT_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n } else {\n return {\n rpcName,\n type: \"VIEW_PORT_MENU_TABLE_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n }\n};\n\nexport const isOpenBulkEditResponse = (\n res: Partial<RpcResponse>,\n): res is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (res as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<RpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"menu-utils.js","sources":["../src/menu-utils.ts"],"sourcesContent":["import {\n ContextMenuGroupItemDescriptor,\n ContextMenuItemDescriptor,\n DataSourceRow,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport { getFilterPredicate } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerMenuCellRPC,\n VuuRpcMenuRequest,\n ClientToServerMenuRowRPC,\n ShowNotificationAction,\n VuuMenu,\n VuuMenuContext,\n VuuMenuItem,\n VuuRpcResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n TableMenuLocation,\n VuuCellMenuItem,\n VuuRowMenuItem,\n} from \"@vuu-ui/vuu-table-types\";\nimport { getRowRecord, metadataKeys, type ColumnMap } from \"./column-utils\";\n\nexport type VuuServerMenuOptions = {\n columnMap: ColumnMap;\n columnName: string;\n row: DataSourceRow;\n selectedRows: DataSourceRow[];\n viewport: string;\n};\n\nconst { KEY } = metadataKeys;\n\nexport const isRoot = (menu: VuuMenu) => menu.name === \"ROOT\";\n\nexport const isCellMenu = (options: VuuMenuItem): options is VuuCellMenuItem =>\n options.context === \"cell\";\n\nexport const isRowMenu = (options: VuuMenuItem): options is VuuRowMenuItem =>\n options.context === \"row\";\n\nexport const isSelectionMenu = (options: VuuMenuItem): options is VuuMenuItem =>\n options.context === \"selected-rows\";\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor,\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport const isTableLocation = (\n location: string,\n): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nconst isVuuMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenuItem =>\n \"rpcName\" in menu;\n\nconst isGroupMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenu =>\n \"menus\" in menu;\n\nconst hasFilter = ({ filter }: VuuMenuItem) =>\n typeof filter === \"string\" && filter.length > 0;\n\nconst vuuContextCompatibleWithTableLocation = (\n uiLocation: TableMenuLocation,\n vuuContext: VuuMenuContext,\n selectedRowCount = 0,\n) => {\n switch (uiLocation) {\n case \"grid\":\n if (vuuContext === \"selected-rows\") {\n return selectedRowCount > 0;\n } else {\n return true;\n }\n case \"header\":\n return vuuContext === \"grid\";\n default:\n return false;\n }\n};\n\nconst gridRowMeetsFilterCriteria = (\n context: VuuMenuContext,\n row: DataSourceRow,\n selectedRows: DataSourceRow[],\n filter: string,\n columnMap: ColumnMap,\n): boolean => {\n if (context === \"cell\" || context === \"row\") {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return filterPredicate(row);\n } else if (context === \"selected-rows\") {\n if (selectedRows.length === 0) {\n return false;\n } else {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return selectedRows.every(filterPredicate);\n }\n }\n return true;\n};\n\nconst menuShouldBeRenderedInThisContext = (\n menuItem: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): boolean => {\n if (isGroupMenuItem(menuItem)) {\n return menuItem.menus.some((childMenu) =>\n menuShouldBeRenderedInThisContext(childMenu, tableLocation, options),\n );\n }\n if (\n !vuuContextCompatibleWithTableLocation(\n tableLocation,\n menuItem.context,\n options.selectedRows?.length,\n )\n ) {\n return false;\n }\n\n if (tableLocation === \"grid\" && hasFilter(menuItem)) {\n return gridRowMeetsFilterCriteria(\n menuItem.context,\n options.row,\n options.selectedRows,\n menuItem.filter,\n options.columnMap,\n );\n }\n\n if (isCellMenu(menuItem) && menuItem.field !== \"*\") {\n return menuItem.field === options.columnName;\n }\n\n return true;\n};\n\nconst getMenuItemOptions = (\n menu: VuuMenuItem,\n options: VuuServerMenuOptions,\n): VuuMenuItem => {\n switch (menu.context) {\n case \"cell\":\n return {\n ...menu,\n field: options.columnName,\n rowKey: options.row[KEY],\n value: options.row[options.columnMap[options.columnName]],\n } as VuuCellMenuItem;\n case \"row\":\n return {\n ...menu,\n row: getRowRecord(options.row, options.columnMap),\n rowKey: options.row[KEY],\n } as VuuRowMenuItem;\n default:\n return menu;\n }\n};\n\nexport const buildMenuDescriptorFromVuuMenu = (\n menu: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions,\n): ContextMenuItemDescriptor | undefined => {\n if (menuShouldBeRenderedInThisContext(menu, tableLocation, options)) {\n if (isVuuMenuItem(menu)) {\n return {\n label: menu.name,\n action: \"MENU_RPC_CALL\",\n options: getMenuItemOptions(menu, options),\n };\n } else {\n const children = menu.menus\n .map((childMenu) =>\n buildMenuDescriptorFromVuuMenu(childMenu, tableLocation, options),\n )\n .filter(\n (childMenu) => childMenu !== undefined,\n ) as ContextMenuItemDescriptor[];\n if (children.length > 0) {\n return {\n label: menu.name,\n children,\n };\n }\n }\n }\n};\n\nexport const getMenuRpcRequest = (\n options: VuuMenuItem,\n): Omit<VuuRpcMenuRequest, \"vpId\"> => {\n const { rpcName } = options;\n if (isCellMenu(options)) {\n return {\n field: options.field,\n rowKey: options.rowKey,\n rpcName,\n value: options.value,\n type: \"VIEW_PORT_MENU_CELL_RPC\",\n } as Omit<ClientToServerMenuCellRPC, \"vpId\">;\n } else if (isRowMenu(options)) {\n return {\n rowKey: options.rowKey,\n row: options.row,\n rpcName,\n type: \"VIEW_PORT_MENU_ROW_RPC\",\n } as Omit<ClientToServerMenuRowRPC, \"vpId\">;\n } else if (isSelectionMenu(options)) {\n return {\n rpcName,\n type: \"VIEW_PORT_MENUS_SELECT_RPC\",\n } as Omit<VuuRpcMenuRequest, \"vpId\">;\n } else {\n return {\n rpcName,\n type: \"VIEW_PORT_MENU_TABLE_RPC\",\n } as Omit<VuuRpcMenuRequest, \"vpId\">;\n }\n};\n\nexport const isOpenBulkEditResponse = (\n rpcResponse: Partial<VuuRpcResponse>,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n (rpcResponse as MenuRpcResponse).rpcName === \"VP_BULK_EDIT_BEGIN_RPC\";\n\nexport const hasShowNotificationAction = (\n res: Partial<VuuRpcResponse>,\n): res is MenuRpcResponse<ShowNotificationAction> =>\n (res as MenuRpcResponse).action?.type === \"SHOW_NOTIFICATION_ACTION\";\n"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,57 @@ const isVuuMenuRpcRequest = (message) => MENU_RPC_TYPES.includes(message["type"]
|
|
|
14
14
|
const isRequestResponse = (message) => "requestId" in message;
|
|
15
15
|
const isOpenSessionTableDialogMessage = (rpcResponse) => rpcResponse.type === "VIEW_PORT_MENU_RESP" && isOpenDialogAction(rpcResponse.action) && "tableSchema" in rpcResponse.action;
|
|
16
16
|
const isOpenDialogAction = (action) => action !== void 0 && action.type === "OPEN_DIALOG_ACTION";
|
|
17
|
+
function isViewportRpcRequest(request) {
|
|
18
|
+
return request.type === "VIEW_PORT_RPC_CALL";
|
|
19
|
+
}
|
|
20
|
+
function isEditCellRequest(request) {
|
|
21
|
+
return request.type === "VP_EDIT_CELL_RPC";
|
|
22
|
+
}
|
|
23
|
+
function vuuEditCellRequest(rowKey, field, value, vpId) {
|
|
24
|
+
return {
|
|
25
|
+
rowKey,
|
|
26
|
+
field,
|
|
27
|
+
value,
|
|
28
|
+
type: "VP_EDIT_CELL_RPC",
|
|
29
|
+
vpId
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function viewportRpcRequest(rpcName, vpId) {
|
|
33
|
+
return {
|
|
34
|
+
namedParams: {},
|
|
35
|
+
params: [],
|
|
36
|
+
rpcName,
|
|
37
|
+
type: "VIEW_PORT_RPC_CALL",
|
|
38
|
+
vpId
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function vuuAddRowRequest(rowKey, data, vpId) {
|
|
42
|
+
return {
|
|
43
|
+
rowKey,
|
|
44
|
+
data,
|
|
45
|
+
type: "VP_EDIT_ADD_ROW_RPC",
|
|
46
|
+
vpId
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function vuuDeleteRowRequest(rowKey, vpId) {
|
|
50
|
+
return {
|
|
51
|
+
rowKey,
|
|
52
|
+
type: "VP_EDIT_DELETE_ROW_RPC",
|
|
53
|
+
vpId
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const isSessionTable = (table) => {
|
|
57
|
+
if (table !== null && typeof table === "object" && "table" in table && "module" in table) {
|
|
58
|
+
return table.table.startsWith("session");
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
};
|
|
62
|
+
function isActionMessage(rpcResponse) {
|
|
63
|
+
return rpcResponse.type === "VIEW_PORT_MENU_RESP" || rpcResponse.type === "VIEW_PORT_RPC_REPONSE";
|
|
64
|
+
}
|
|
65
|
+
function isSessionTableActionMessage(rpcResponse) {
|
|
66
|
+
return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && rpcResponse.action?.renderComponent === "inline-form";
|
|
67
|
+
}
|
|
17
68
|
|
|
18
|
-
export { isOpenDialogAction, isOpenSessionTableDialogMessage, isRequestResponse, isVuuMenuRpcRequest };
|
|
69
|
+
export { isActionMessage, isEditCellRequest, isOpenDialogAction, isOpenSessionTableDialogMessage, isRequestResponse, isSessionTable, isSessionTableActionMessage, isViewportRpcRequest, isVuuMenuRpcRequest, viewportRpcRequest, vuuAddRowRequest, vuuDeleteRowRequest, vuuEditCellRequest };
|
|
19
70
|
//# sourceMappingURL=protocol-message-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-message-utils.js","sources":["../src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n
|
|
1
|
+
{"version":3,"file":"protocol-message-utils.js","sources":["../src/protocol-message-utils.ts"],"sourcesContent":["import type {\n MenuRpcAction,\n MenuRpcResponse,\n OpenDialogActionWithSchema,\n RpcResponse,\n TableSchema,\n VuuUiMessageInRequestResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuRpcMenuRequest,\n OpenDialogAction,\n VuuRpcEditCellRequest,\n VuuRowDataItemType,\n VuuRpcRequest,\n VuuRpcEditAddRowRequest,\n VuuDataRowDto,\n VuuRpcEditDeleteRowRequest,\n VuuRpcViewportRequest,\n VuuRpcResponse,\n VuuRpcMenuSuccess,\n VuuTable,\n VuuRpcViewportResponse,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nconst MENU_RPC_TYPES = [\n \"VIEW_PORT_MENUS_SELECT_RPC\",\n \"VIEW_PORT_MENU_TABLE_RPC\",\n \"VIEW_PORT_MENU_ROW_RPC\",\n \"VIEW_PORT_MENU_CELL_RPC\",\n \"VP_EDIT_CELL_RPC\",\n \"VP_EDIT_ROW_RPC\",\n \"VP_EDIT_ADD_ROW_RPC\",\n \"VP_EDIT_DELETE_CELL_RPC\",\n \"VP_EDIT_DELETE_ROW_RPC\",\n \"VP_EDIT_SUBMIT_FORM_RPC\",\n];\n\nexport const isVuuMenuRpcRequest = (\n message: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): message is VuuRpcMenuRequest => MENU_RPC_TYPES.includes(message[\"type\"]);\n\nexport const isRequestResponse = (\n message: object,\n): message is VuuUiMessageInRequestResponse => \"requestId\" in message;\n\nexport const isOpenSessionTableDialogMessage = (\n rpcResponse: RpcResponse,\n): rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema> =>\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" &&\n isOpenDialogAction(rpcResponse.action) &&\n \"tableSchema\" in rpcResponse.action;\n\nexport const isOpenDialogAction = (\n action?: MenuRpcAction,\n): action is OpenDialogAction =>\n action !== undefined && action.type === \"OPEN_DIALOG_ACTION\";\n\nexport function isViewportRpcRequest(\n request: VuuRpcRequest,\n): request is VuuRpcViewportRequest;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function isViewportRpcRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return request.type === \"VIEW_PORT_RPC_CALL\";\n}\n\nexport function isEditCellRequest(\n request: VuuRpcRequest,\n): request is VuuRpcEditCellRequest;\nexport function isEditCellRequest(\n request: Omit<VuuRpcRequest, \"vpId\">,\n): request is Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function isEditCellRequest(\n request: VuuRpcRequest | Omit<VuuRpcRequest, \"vpId\">,\n): request is VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return request.type === \"VP_EDIT_CELL_RPC\";\n}\n\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId: string,\n): VuuRpcEditCellRequest;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n): Omit<VuuRpcEditCellRequest, \"vpId\">;\nexport function vuuEditCellRequest(\n rowKey: string,\n field: string,\n value: VuuRowDataItemType,\n vpId?: string,\n): VuuRpcEditCellRequest | Omit<VuuRpcEditCellRequest, \"vpId\"> {\n return {\n rowKey,\n field,\n value,\n type: \"VP_EDIT_CELL_RPC\",\n vpId,\n };\n}\n\nexport function viewportRpcRequest(\n rpcName: string,\n vpId: string,\n): VuuRpcViewportRequest;\nexport function viewportRpcRequest(\n rpcName: string,\n): Omit<VuuRpcViewportRequest, \"vpId\">;\nexport function viewportRpcRequest(\n rpcName: string,\n vpId?: string,\n): VuuRpcViewportRequest | Omit<VuuRpcViewportRequest, \"vpId\"> {\n return {\n namedParams: {},\n params: [],\n rpcName,\n type: \"VIEW_PORT_RPC_CALL\",\n vpId,\n };\n}\n\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId: string,\n): VuuRpcEditAddRowRequest;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n): Omit<VuuRpcEditAddRowRequest, \"vpId\">;\nexport function vuuAddRowRequest(\n rowKey: string,\n data: VuuDataRowDto,\n vpId?: string,\n): VuuRpcEditAddRowRequest | Omit<VuuRpcEditAddRowRequest, \"vpId\"> {\n return {\n rowKey,\n data,\n type: \"VP_EDIT_ADD_ROW_RPC\",\n vpId,\n };\n}\n\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId: string,\n): VuuRpcEditDeleteRowRequest;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n): Omit<VuuRpcEditDeleteRowRequest, \"vpId\">;\nexport function vuuDeleteRowRequest(\n rowKey: string,\n vpId?: string,\n): VuuRpcEditDeleteRowRequest | Omit<VuuRpcEditDeleteRowRequest, \"vpId\"> {\n return {\n rowKey,\n type: \"VP_EDIT_DELETE_ROW_RPC\",\n vpId,\n };\n}\n\n// export type WithTableSchema<\n// T extends VuuRpcMenuSuccess | VuuRpcViewportResponse = VuuRpcMenuSuccess,\n// > = T & {\n// action: T extends VuuRpcMenuSuccess\n// ? VuuRpcMenuSuccess[\"action\"] & { tableSchema: TableSchema }\n// : VuuRpcViewportResponse[\"action\"] & { tableSchema: TableSchema };\n// };\n\nexport const isSessionTable = (table?: unknown) => {\n if (\n table !== null &&\n typeof table === \"object\" &&\n \"table\" in table &&\n \"module\" in table\n ) {\n return (table as VuuTable).table.startsWith(\"session\");\n }\n return false;\n};\n\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcViewportResponse | VuuRpcMenuSuccess;\nexport function isActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is\n | Omit<VuuRpcViewportResponse, \"vpId\">\n | Omit<VuuRpcMenuSuccess, \"vpId\">;\nexport function isActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n) {\n return (\n rpcResponse.type === \"VIEW_PORT_MENU_RESP\" ||\n rpcResponse.type === \"VIEW_PORT_RPC_REPONSE\"\n );\n}\n\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is Omit<\n VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n >,\n \"vpId\"\n>;\nexport function isSessionTableActionMessage(\n rpcResponse: VuuRpcResponse | Omit<VuuRpcResponse, \"vpId\">,\n): rpcResponse is VuuRpcMenuSuccess<\n OpenDialogAction & {\n tableSchema: TableSchema;\n }\n> {\n return (\n isActionMessage(rpcResponse) &&\n isOpenDialogAction(rpcResponse.action) &&\n isSessionTable(rpcResponse.action.table) &&\n rpcResponse.action?.renderComponent === \"inline-form\"\n );\n}\n"],"names":[],"mappings":"AAwBA,MAAM,cAAiB,GAAA;AAAA,EACrB,4BAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AACF,CAAA,CAAA;AAEO,MAAM,sBAAsB,CACjC,OAAA,KACiC,eAAe,QAAS,CAAA,OAAA,CAAQ,MAAM,CAAC,EAAA;AAE7D,MAAA,iBAAA,GAAoB,CAC/B,OAAA,KAC6C,WAAe,IAAA,QAAA;AAEjD,MAAA,+BAAA,GAAkC,CAC7C,WAAA,KAEA,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,kBAAA,CAAmB,WAAY,CAAA,MAAM,CACrC,IAAA,aAAA,IAAiB,WAAY,CAAA,OAAA;AAExB,MAAM,qBAAqB,CAChC,MAAA,KAEA,MAAW,KAAA,KAAA,CAAA,IAAa,OAAO,IAAS,KAAA,qBAAA;AAQnC,SAAS,qBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,oBAAA,CAAA;AAC1B,CAAA;AAQO,SAAS,kBACd,OACwE,EAAA;AACxE,EAAA,OAAO,QAAQ,IAAS,KAAA,kBAAA,CAAA;AAC1B,CAAA;AAaO,SAAS,kBACd,CAAA,MAAA,EACA,KACA,EAAA,KAAA,EACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAM,EAAA,kBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AASgB,SAAA,kBAAA,CACd,SACA,IAC6D,EAAA;AAC7D,EAAO,OAAA;AAAA,IACL,aAAa,EAAC;AAAA,IACd,QAAQ,EAAC;AAAA,IACT,OAAA;AAAA,IACA,IAAM,EAAA,oBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AAWgB,SAAA,gBAAA,CACd,MACA,EAAA,IAAA,EACA,IACiE,EAAA;AACjE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAM,EAAA,qBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AASgB,SAAA,mBAAA,CACd,QACA,IACuE,EAAA;AACvE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAM,EAAA,wBAAA;AAAA,IACN,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AAUa,MAAA,cAAA,GAAiB,CAAC,KAAoB,KAAA;AACjD,EACE,IAAA,KAAA,KAAU,QACV,OAAO,KAAA,KAAU,YACjB,OAAW,IAAA,KAAA,IACX,YAAY,KACZ,EAAA;AACA,IAAQ,OAAA,KAAA,CAAmB,KAAM,CAAA,UAAA,CAAW,SAAS,CAAA,CAAA;AAAA,GACvD;AACA,EAAO,OAAA,KAAA,CAAA;AACT,EAAA;AAUO,SAAS,gBACd,WACA,EAAA;AACA,EAAA,OACE,WAAY,CAAA,IAAA,KAAS,qBACrB,IAAA,WAAA,CAAY,IAAS,KAAA,uBAAA,CAAA;AAEzB,CAAA;AAmBO,SAAS,4BACd,WAKA,EAAA;AACA,EAAA,OACE,eAAgB,CAAA,WAAW,CAC3B,IAAA,kBAAA,CAAmB,YAAY,MAAM,CAAA,IACrC,cAAe,CAAA,WAAA,CAAY,MAAO,CAAA,KAAK,CACvC,IAAA,WAAA,CAAY,QAAQ,eAAoB,KAAA,aAAA,CAAA;AAE5C;;;;"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
2
|
+
"version": "0.8.85",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"types": "types/index.d.ts",
|
|
6
6
|
"devDependencies": {
|
|
7
|
-
"@vuu-ui/vuu-data-types": "0.8.
|
|
8
|
-
"@vuu-ui/vuu-table-types": "0.8.
|
|
9
|
-
"@vuu-ui/vuu-filter-types": "0.8.
|
|
10
|
-
"@vuu-ui/vuu-protocol-types": "0.8.
|
|
7
|
+
"@vuu-ui/vuu-data-types": "0.8.85",
|
|
8
|
+
"@vuu-ui/vuu-table-types": "0.8.85",
|
|
9
|
+
"@vuu-ui/vuu-filter-types": "0.8.85",
|
|
10
|
+
"@vuu-ui/vuu-protocol-types": "0.8.85"
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"@internationalized/date": "^3.0.0",
|
|
14
|
-
"@vuu-ui/vuu-filter-parser": "0.8.
|
|
14
|
+
"@vuu-ui/vuu-filter-parser": "0.8.85",
|
|
15
15
|
"clsx": "^2.0.0",
|
|
16
16
|
"react": ">=17.0.2",
|
|
17
17
|
"react-dom": ">=17.0.2"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConnectionQualityMetrics, ConnectionStatusMessage, DataSourceConfig,
|
|
1
|
+
import { ConnectionQualityMetrics, ConnectionStatusMessage, DataSourceCallbackMessage, DataSourceConfig, DataSourceDataMessage, DataSourceRow, RpcResponse, TypeaheadSuggestionProvider, VuuUIMessageIn, VuuUIMessageInRPC, VuuUIMessageInRPCEditReject, VuuUIMessageInTableMeta, VuuUIMessageOutViewport, WithFilter, WithFullConfig, WithGroupBy, WithSort } from "@vuu-ui/vuu-data-types";
|
|
2
2
|
import { LinkDescriptorWithLabel, VuuFilter, VuuSort } from "@vuu-ui/vuu-protocol-types";
|
|
3
3
|
export declare const NoFilter: VuuFilter;
|
|
4
4
|
export declare const NoSort: VuuSort;
|
|
@@ -28,8 +28,11 @@ export declare const isConnectionStatusMessage: (msg: object | ConnectionStatusM
|
|
|
28
28
|
export declare const isConnectionQualityMetrics: (msg: object) => msg is ConnectionQualityMetrics;
|
|
29
29
|
export declare const messageHasResult: (msg: object) => msg is VuuUIMessageInRPC;
|
|
30
30
|
export declare const isErrorResponse: (response?: Partial<RpcResponse>) => response is VuuUIMessageInRPCEditReject;
|
|
31
|
-
export declare const hasAction: (response?: Partial<RpcResponse>) => response is VuuUIMessageInRPCEditResponse | MenuRpcResponse<any>;
|
|
32
31
|
export declare const isViewportMessage: (msg: object) => msg is VuuUIMessageOutViewport;
|
|
32
|
+
export type DataSourceDataMessageWithRows = Omit<DataSourceDataMessage, "rows"> & {
|
|
33
|
+
rows: DataSourceRow[];
|
|
34
|
+
};
|
|
35
|
+
export declare const messageHasDataRows: (message: DataSourceCallbackMessage) => message is DataSourceDataMessageWithRows;
|
|
33
36
|
export declare const withConfigDefaults: (config: DataSourceConfig) => WithFullConfig & {
|
|
34
37
|
visualLink?: LinkDescriptorWithLabel;
|
|
35
38
|
};
|
package/types/menu-utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ContextMenuGroupItemDescriptor, ContextMenuItemDescriptor, DataSourceRow, MenuRpcResponse, OpenDialogActionWithSchema
|
|
2
|
-
import {
|
|
1
|
+
import { ContextMenuGroupItemDescriptor, ContextMenuItemDescriptor, DataSourceRow, MenuRpcResponse, OpenDialogActionWithSchema } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { VuuRpcMenuRequest, ShowNotificationAction, VuuMenu, VuuMenuItem, VuuRpcResponse } from "@vuu-ui/vuu-protocol-types";
|
|
3
3
|
import { TableMenuLocation, VuuCellMenuItem, VuuRowMenuItem } from "@vuu-ui/vuu-table-types";
|
|
4
4
|
import { type ColumnMap } from "./column-utils";
|
|
5
5
|
export type VuuServerMenuOptions = {
|
|
@@ -16,6 +16,6 @@ export declare const isSelectionMenu: (options: VuuMenuItem) => options is VuuMe
|
|
|
16
16
|
export declare const isGroupMenuItemDescriptor: (menuItem?: ContextMenuItemDescriptor) => menuItem is ContextMenuGroupItemDescriptor;
|
|
17
17
|
export declare const isTableLocation: (location: string) => location is TableMenuLocation;
|
|
18
18
|
export declare const buildMenuDescriptorFromVuuMenu: (menu: VuuMenu | VuuMenuItem, tableLocation: TableMenuLocation, options: VuuServerMenuOptions) => ContextMenuItemDescriptor | undefined;
|
|
19
|
-
export declare const getMenuRpcRequest: (options: VuuMenuItem) => Omit<
|
|
20
|
-
export declare const isOpenBulkEditResponse: (
|
|
21
|
-
export declare const hasShowNotificationAction: (res: Partial<
|
|
19
|
+
export declare const getMenuRpcRequest: (options: VuuMenuItem) => Omit<VuuRpcMenuRequest, "vpId">;
|
|
20
|
+
export declare const isOpenBulkEditResponse: (rpcResponse: Partial<VuuRpcResponse>) => rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema>;
|
|
21
|
+
export declare const hasShowNotificationAction: (res: Partial<VuuRpcResponse>) => res is MenuRpcResponse<ShowNotificationAction>;
|
|
@@ -1,6 +1,27 @@
|
|
|
1
|
-
import type { MenuRpcAction, MenuRpcResponse, OpenDialogActionWithSchema, RpcResponse,
|
|
2
|
-
import {
|
|
3
|
-
export declare const isVuuMenuRpcRequest: (message:
|
|
1
|
+
import type { MenuRpcAction, MenuRpcResponse, OpenDialogActionWithSchema, RpcResponse, TableSchema, VuuUiMessageInRequestResponse } from "@vuu-ui/vuu-data-types";
|
|
2
|
+
import { VuuRpcMenuRequest, OpenDialogAction, VuuRpcEditCellRequest, VuuRowDataItemType, VuuRpcRequest, VuuRpcEditAddRowRequest, VuuDataRowDto, VuuRpcEditDeleteRowRequest, VuuRpcViewportRequest, VuuRpcResponse, VuuRpcMenuSuccess, VuuRpcViewportResponse } from "@vuu-ui/vuu-protocol-types";
|
|
3
|
+
export declare const isVuuMenuRpcRequest: (message: VuuRpcRequest | Omit<VuuRpcRequest, "vpId">) => message is VuuRpcMenuRequest;
|
|
4
4
|
export declare const isRequestResponse: (message: object) => message is VuuUiMessageInRequestResponse;
|
|
5
5
|
export declare const isOpenSessionTableDialogMessage: (rpcResponse: RpcResponse) => rpcResponse is MenuRpcResponse<OpenDialogActionWithSchema>;
|
|
6
6
|
export declare const isOpenDialogAction: (action?: MenuRpcAction) => action is OpenDialogAction;
|
|
7
|
+
export declare function isViewportRpcRequest(request: VuuRpcRequest): request is VuuRpcViewportRequest;
|
|
8
|
+
export declare function isViewportRpcRequest(request: Omit<VuuRpcRequest, "vpId">): request is Omit<VuuRpcViewportRequest, "vpId">;
|
|
9
|
+
export declare function isEditCellRequest(request: VuuRpcRequest): request is VuuRpcEditCellRequest;
|
|
10
|
+
export declare function isEditCellRequest(request: Omit<VuuRpcRequest, "vpId">): request is Omit<VuuRpcEditCellRequest, "vpId">;
|
|
11
|
+
export declare function vuuEditCellRequest(rowKey: string, field: string, value: VuuRowDataItemType, vpId: string): VuuRpcEditCellRequest;
|
|
12
|
+
export declare function vuuEditCellRequest(rowKey: string, field: string, value: VuuRowDataItemType): Omit<VuuRpcEditCellRequest, "vpId">;
|
|
13
|
+
export declare function viewportRpcRequest(rpcName: string, vpId: string): VuuRpcViewportRequest;
|
|
14
|
+
export declare function viewportRpcRequest(rpcName: string): Omit<VuuRpcViewportRequest, "vpId">;
|
|
15
|
+
export declare function vuuAddRowRequest(rowKey: string, data: VuuDataRowDto, vpId: string): VuuRpcEditAddRowRequest;
|
|
16
|
+
export declare function vuuAddRowRequest(rowKey: string, data: VuuDataRowDto): Omit<VuuRpcEditAddRowRequest, "vpId">;
|
|
17
|
+
export declare function vuuDeleteRowRequest(rowKey: string, vpId: string): VuuRpcEditDeleteRowRequest;
|
|
18
|
+
export declare function vuuDeleteRowRequest(rowKey: string): Omit<VuuRpcEditDeleteRowRequest, "vpId">;
|
|
19
|
+
export declare const isSessionTable: (table?: unknown) => boolean;
|
|
20
|
+
export declare function isActionMessage(rpcResponse: VuuRpcResponse): rpcResponse is VuuRpcViewportResponse | VuuRpcMenuSuccess;
|
|
21
|
+
export declare function isActionMessage(rpcResponse: Omit<VuuRpcResponse, "vpId">): rpcResponse is Omit<VuuRpcViewportResponse, "vpId"> | Omit<VuuRpcMenuSuccess, "vpId">;
|
|
22
|
+
export declare function isSessionTableActionMessage(rpcResponse: VuuRpcResponse): rpcResponse is VuuRpcMenuSuccess<OpenDialogAction & {
|
|
23
|
+
tableSchema: TableSchema;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function isSessionTableActionMessage(rpcResponse: Omit<VuuRpcResponse, "vpId">): rpcResponse is Omit<VuuRpcMenuSuccess<OpenDialogAction & {
|
|
26
|
+
tableSchema: TableSchema;
|
|
27
|
+
}>, "vpId">;
|