@vuu-ui/vuu-utils 0.13.116 → 0.13.118

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js +4 -0
  2. package/cjs/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -1
  3. package/cjs/packages/vuu-utils/src/ScaledDecimal.js +39 -0
  4. package/cjs/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  5. package/cjs/packages/vuu-utils/src/column-utils.js +3 -1
  6. package/cjs/packages/vuu-utils/src/column-utils.js.map +1 -1
  7. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js +26 -9
  8. package/cjs/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -1
  9. package/cjs/packages/vuu-utils/src/filters/filter-utils.js +4 -0
  10. package/cjs/packages/vuu-utils/src/filters/filter-utils.js.map +1 -1
  11. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js +2 -1
  12. package/cjs/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -1
  13. package/cjs/packages/vuu-utils/src/form-utils.js +9 -0
  14. package/cjs/packages/vuu-utils/src/form-utils.js.map +1 -1
  15. package/cjs/packages/vuu-utils/src/formatting-utils.js +3 -2
  16. package/cjs/packages/vuu-utils/src/formatting-utils.js.map +1 -1
  17. package/cjs/packages/vuu-utils/src/index.js +76 -67
  18. package/cjs/packages/vuu-utils/src/index.js.map +1 -1
  19. package/cjs/packages/vuu-utils/src/protocol-message-utils.js +13 -0
  20. package/cjs/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
  21. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js +4 -0
  22. package/esm/packages/vuu-utils/src/PageVisibilityObserver.js.map +1 -1
  23. package/esm/packages/vuu-utils/src/ScaledDecimal.js +33 -0
  24. package/esm/packages/vuu-utils/src/ScaledDecimal.js.map +1 -0
  25. package/esm/packages/vuu-utils/src/column-utils.js +3 -2
  26. package/esm/packages/vuu-utils/src/column-utils.js.map +1 -1
  27. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js +26 -9
  28. package/esm/packages/vuu-utils/src/datasource/datasource-filter-utils.js.map +1 -1
  29. package/esm/packages/vuu-utils/src/filters/filter-utils.js +4 -1
  30. package/esm/packages/vuu-utils/src/filters/filter-utils.js.map +1 -1
  31. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js +2 -1
  32. package/esm/packages/vuu-utils/src/filters/filterAsQuery.js.map +1 -1
  33. package/esm/packages/vuu-utils/src/form-utils.js +9 -0
  34. package/esm/packages/vuu-utils/src/form-utils.js.map +1 -1
  35. package/esm/packages/vuu-utils/src/formatting-utils.js +4 -3
  36. package/esm/packages/vuu-utils/src/formatting-utils.js.map +1 -1
  37. package/esm/packages/vuu-utils/src/index.js +17 -16
  38. package/esm/packages/vuu-utils/src/index.js.map +1 -1
  39. package/esm/packages/vuu-utils/src/protocol-message-utils.js +13 -1
  40. package/esm/packages/vuu-utils/src/protocol-message-utils.js.map +1 -1
  41. package/package.json +6 -6
  42. package/types/PageVisibilityObserver.d.ts +2 -1
  43. package/types/ScaledDecimal.d.ts +12 -0
  44. package/types/column-utils.d.ts +2 -1
  45. package/types/filters/filter-utils.d.ts +2 -0
  46. package/types/index.d.ts +16 -16
  47. package/types/protocol-message-utils.d.ts +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnFilterOp,\n ColumnFilterValue,\n ExtendedFilter,\n Filter,\n FilterClauseOp,\n FilterClauseOpBetween,\n FilterContainerFilter,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { SerializableFilter } from \"@vuu-ui/vuu-filters/src/filter-container/ExtendedSingleValueFilterClause\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isBetweenOperator = (\n op: ColumnFilterOp,\n): op is FilterClauseOpBetween =>\n op === \"between\" || op === \"between-inclusive\";\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isSerializableFilter = (f: object): f is SerializableFilter =>\n isSingleValueFilter(f) &&\n \"asQuery\" in f &&\n typeof f[\"asQuery\"] === \"function\";\n\nexport const isFilter = (f: unknown): f is Filter =>\n typeof f === \"object\" &&\n f !== null &&\n (isFilterClause(f) || isMultiClauseFilter(f));\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (\n f?: Partial<Filter>,\n): f is MultiClauseFilter<\"and\"> => f?.op === \"and\";\n\nexport const isBetweenFilter = (\n f?: Filter,\n): f is MultiClauseFilter<\"and\", SingleValueFilterClause> =>\n isAndFilter(f) &&\n f.filters.length === 2 &&\n f.filters[0].column === f.filters[1].column &&\n ((f.filters[0].op === \">\" && f.filters[1].op === \"<\") ||\n (f.filters[0].op === \">=\" && f.filters[1].op === \"<=\"));\n\nexport const isOrFilter = (f?: Partial<Filter>): f is MultiClauseFilter<\"or\"> =>\n f?.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const isExtendedFilter = (f: Filter): f is ExtendedFilter =>\n typeof (f as ExtendedFilter).extendedOptions === \"object\";\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\n// Just until we fully support bool values in filters\nconst stringifyBoolean = (value: string | number | boolean) =>\n typeof value === \"boolean\" ? \"${filter.value}\" : value;\n\nexport const getColumnValueFromFilter = (\n column: ColumnDescriptor,\n operator: ColumnFilterOp,\n filter?: FilterContainerFilter,\n): ColumnFilterValue => {\n if (isSingleValueFilter(filter)) {\n if (filter.column === column.name) {\n if (operator.startsWith(\"between\")) {\n if (filter.op === \"=\") {\n return [`${filter.value}`, \"\"];\n } else if (filter.op === \"<\") {\n return [\"\", `${filter.value}`];\n }\n } else {\n return stringifyBoolean(filter.value);\n }\n }\n } else if (isBetweenFilter(filter)) {\n if (filter.filters[0].column === column.name) {\n const [{ value: v1 }, { value: v2 }] = filter.filters;\n return [`${v1}`, `${v2}`];\n }\n } else if (isAndFilter(filter)) {\n const filterForColumn = filter.filters.find((f) =>\n isBetweenFilter(f)\n ? f.filters[0].column === column.name\n : f.column === column.name,\n );\n if (isSingleValueFilter(filterForColumn)) {\n return stringifyBoolean(filterForColumn.value);\n } else if (\n operator.startsWith(\"between\") &&\n isBetweenFilter(filterForColumn)\n ) {\n const [{ value: v1 }, { value: v2 }] = filterForColumn.filters;\n return [`${v1}`, `${v2}`];\n }\n }\n if (operator.startsWith(\"between\")) {\n if (column.type === \"time\") {\n return [\"00:00:00\", \"23:59:59\"];\n } else {\n return [\"\", \"\"];\n }\n } else {\n return \"\";\n }\n};\n\ntype BetweenFilter = MultiClauseFilter<\"and\", SingleValueFilterClause>;\ntype ChildFilterClause = SingleValueFilterClause | BetweenFilter;\n\nconst betweenFiltersAreEqual = (f1: BetweenFilter, f2: BetweenFilter) => {\n const [from1, to1] = f1.filters;\n const [from2, to2] = f2.filters;\n return filtersAreEqual(from1, from2) && filtersAreEqual(to1, to2);\n};\n\nconst singleValueFilterClausesAreEqual = (\n f1: SingleValueFilterClause,\n f2: SingleValueFilterClause,\n) => f1.column === f2.column && f1.op === f2.op && f1.value === f2.value;\n\nconst findEqualFilter =\n (filters: ChildFilterClause[]) => (filter: ChildFilterClause) => {\n if (isBetweenFilter(filter)) {\n const target = filters.find(\n (f) => isBetweenFilter(f) && betweenFiltersAreEqual(f, filter),\n );\n return target !== undefined;\n } else {\n // A FilterContainerFilter only has one filter clause per column\n const target = filters.find((f) => f.column === filter.column);\n if (target) {\n return target.op === filter.op && target.value === filter.value;\n }\n }\n return false;\n };\n\nexport const filtersAreEqual = (\n f1: FilterContainerFilter | null | undefined,\n f2: FilterContainerFilter | null | undefined,\n): boolean => {\n if (f1 == null && f2 == null) {\n return true;\n } else if (f1 == null || f2 == null) {\n return false;\n } else if (isSingleValueFilter(f1) && isSingleValueFilter(f2)) {\n return singleValueFilterClausesAreEqual(f1, f2);\n } else if (isBetweenFilter(f1) && isBetweenFilter(f2)) {\n return betweenFiltersAreEqual(f1, f2);\n } else if (isAndFilter(f1) && isAndFilter(f2)) {\n if (f1.filters.length === f2.filters.length) {\n return f1.filters.every(findEqualFilter(f2.filters));\n }\n }\n\n return false;\n};\n"],"names":["filter"],"mappings":"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"}
1
+ {"version":3,"file":"filter-utils.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filter-utils.ts"],"sourcesContent":["import type { DataSourceFilter } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnFilterOp,\n ColumnFilterValue,\n ExtendedFilter,\n Filter,\n FilterClauseOp,\n FilterClauseOpBetween,\n FilterContainerFilter,\n FilterWithPartialClause,\n MultiClauseFilter,\n MultiValueFilterClause,\n SingleValueFilterClause,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { SerializableFilter } from \"@vuu-ui/vuu-filters/src/filter-container/ExtendedSingleValueFilterClause\";\nimport {\n ColumnDescriptor,\n RuntimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport { ScaledDecimal } from \"../ScaledDecimal\";\n\nconst singleValueFilterOps = new Set<SingleValueFilterClauseOp>([\n \"=\",\n \"!=\",\n \">\",\n \">=\",\n \"<\",\n \"<=\",\n \"contains\",\n \"starts\",\n \"ends\",\n]);\n\nexport const isBetweenOperator = (\n op: ColumnFilterOp,\n): op is FilterClauseOpBetween =>\n op === \"between\" || op === \"between-inclusive\";\n\nexport const isValidFilterClauseOp = (op?: string): op is FilterClauseOp =>\n op === \"in\" || singleValueFilterOps.has(op as SingleValueFilterClauseOp);\n\nexport const isNamedFilter = (f?: Filter) =>\n f !== undefined && f.name !== undefined;\n\n// ... with type constraints\nexport const isSingleValueFilter = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause =>\n f !== undefined &&\n singleValueFilterOps.has(f.op as SingleValueFilterClauseOp);\n\nexport const isScaledDecimalFilterClause = (\n f: SingleValueFilterClause,\n): f is SingleValueFilterClause<ScaledDecimal> =>\n f.value instanceof ScaledDecimal;\n\nexport const isSerializableFilter = (f: object): f is SerializableFilter =>\n isSingleValueFilter(f) &&\n \"asQuery\" in f &&\n typeof f[\"asQuery\"] === \"function\";\n\nexport const isFilter = (f: unknown): f is Filter =>\n typeof f === \"object\" &&\n f !== null &&\n (isFilterClause(f) || isMultiClauseFilter(f));\n\nexport const isFilterClause = (\n f?: Partial<Filter>,\n): f is SingleValueFilterClause | MultiValueFilterClause =>\n f !== undefined && (isSingleValueFilter(f) || isMultiValueFilter(f));\n\nexport const isMultiValueFilter = (\n f?: Partial<Filter>,\n): f is MultiValueFilterClause => f !== undefined && f.op === \"in\";\n\nexport const isInFilter = (f: Partial<Filter>): f is MultiValueFilterClause =>\n f.op === \"in\";\nexport const isAndFilter = (\n f?: Partial<Filter>,\n): f is MultiClauseFilter<\"and\"> => f?.op === \"and\";\n\nexport const isBetweenFilter = (\n f?: Filter,\n): f is MultiClauseFilter<\"and\", SingleValueFilterClause> =>\n isAndFilter(f) &&\n f.filters.length === 2 &&\n f.filters[0].column === f.filters[1].column &&\n ((f.filters[0].op === \">\" && f.filters[1].op === \"<\") ||\n (f.filters[0].op === \">=\" && f.filters[1].op === \"<=\"));\n\nexport const isOrFilter = (f?: Partial<Filter>): f is MultiClauseFilter<\"or\"> =>\n f?.op === \"or\";\n\nexport const isCompleteFilter = (filter: Partial<Filter>): filter is Filter =>\n isSingleValueFilter(filter) &&\n filter.column !== undefined &&\n filter.op !== undefined &&\n filter.value !== undefined;\n\nexport function isMultiClauseFilter(\n f?: Partial<Filter> | FilterWithPartialClause,\n): f is MultiClauseFilter {\n return f !== undefined && (f.op === \"and\" || f.op === \"or\");\n}\n\nexport const isExtendedFilter = (f: Filter): f is ExtendedFilter =>\n typeof (f as ExtendedFilter).extendedOptions === \"object\";\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter,\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string,\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string,\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\n// Just until we fully support bool values in filters\nconst stringifyBoolean = (value: string | number | boolean) =>\n typeof value === \"boolean\" ? \"${filter.value}\" : value;\n\nexport const getColumnValueFromFilter = (\n column: ColumnDescriptor,\n operator: ColumnFilterOp,\n filter?: FilterContainerFilter,\n): ColumnFilterValue => {\n if (isSingleValueFilter(filter)) {\n if (filter.column === column.name) {\n if (operator.startsWith(\"between\")) {\n if (filter.op === \"=\") {\n return [`${filter.value}`, \"\"];\n } else if (filter.op === \"<\") {\n return [\"\", `${filter.value}`];\n }\n } else {\n return stringifyBoolean(filter.value);\n }\n }\n } else if (isBetweenFilter(filter)) {\n if (filter.filters[0].column === column.name) {\n const [{ value: v1 }, { value: v2 }] = filter.filters;\n return [`${v1}`, `${v2}`];\n }\n } else if (isAndFilter(filter)) {\n const filterForColumn = filter.filters.find((f) =>\n isBetweenFilter(f)\n ? f.filters[0].column === column.name\n : f.column === column.name,\n );\n if (isSingleValueFilter(filterForColumn)) {\n return stringifyBoolean(filterForColumn.value);\n } else if (\n operator.startsWith(\"between\") &&\n isBetweenFilter(filterForColumn)\n ) {\n const [{ value: v1 }, { value: v2 }] = filterForColumn.filters;\n return [`${v1}`, `${v2}`];\n }\n }\n if (operator.startsWith(\"between\")) {\n if (column.type === \"time\") {\n return [\"00:00:00\", \"23:59:59\"];\n } else {\n return [\"\", \"\"];\n }\n } else {\n return \"\";\n }\n};\n\ntype BetweenFilter = MultiClauseFilter<\"and\", SingleValueFilterClause>;\ntype ChildFilterClause = SingleValueFilterClause | BetweenFilter;\n\nconst betweenFiltersAreEqual = (f1: BetweenFilter, f2: BetweenFilter) => {\n const [from1, to1] = f1.filters;\n const [from2, to2] = f2.filters;\n return filtersAreEqual(from1, from2) && filtersAreEqual(to1, to2);\n};\n\nconst singleValueFilterClausesAreEqual = (\n f1: SingleValueFilterClause,\n f2: SingleValueFilterClause,\n) => f1.column === f2.column && f1.op === f2.op && f1.value === f2.value;\n\nconst findEqualFilter =\n (filters: ChildFilterClause[]) => (filter: ChildFilterClause) => {\n if (isBetweenFilter(filter)) {\n const target = filters.find(\n (f) => isBetweenFilter(f) && betweenFiltersAreEqual(f, filter),\n );\n return target !== undefined;\n } else {\n // A FilterContainerFilter only has one filter clause per column\n const target = filters.find((f) => f.column === filter.column);\n if (target) {\n return target.op === filter.op && target.value === filter.value;\n }\n }\n return false;\n };\n\nexport const filtersAreEqual = (\n f1: FilterContainerFilter | null | undefined,\n f2: FilterContainerFilter | null | undefined,\n): boolean => {\n if (f1 == null && f2 == null) {\n return true;\n } else if (f1 == null || f2 == null) {\n return false;\n } else if (isSingleValueFilter(f1) && isSingleValueFilter(f2)) {\n return singleValueFilterClausesAreEqual(f1, f2);\n } else if (isBetweenFilter(f1) && isBetweenFilter(f2)) {\n return betweenFiltersAreEqual(f1, f2);\n } else if (isAndFilter(f1) && isAndFilter(f2)) {\n if (f1.filters.length === f2.filters.length) {\n return f1.filters.every(findEqualFilter(f2.filters));\n }\n }\n\n return false;\n};\n"],"names":["ScaledDecimal","filter"],"mappings":"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"}
@@ -2,8 +2,9 @@
2
2
 
3
3
  var columnUtils = require('../column-utils.js');
4
4
  var filterUtils = require('./filter-utils.js');
5
+ var ScaledDecimal = require('../ScaledDecimal.js');
5
6
 
6
- const filterValue = (value) => typeof value === "string" ? `"${value}"` : value;
7
+ const filterValue = (value) => typeof value === "string" ? `"${value}"` : value instanceof ScaledDecimal.ScaledDecimal ? value.toString() : value;
7
8
  const quotedStrings = (value) => typeof value === "string" ? `"${value}"` : value;
8
9
  const removeOuterMostParentheses = (s) => s.replace(/^\((.*)\)$/, "$1");
9
10
  const filterAsQuery = (f, opts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"filterAsQuery.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filterAsQuery.ts"],"sourcesContent":["import {\n ColumnDescriptorsByName,\n Filter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { isDateTimeDataValue } from \"../column-utils\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSerializableFilter,\n} from \"./filter-utils\";\n\nconst filterValue = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst quotedStrings = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst removeOuterMostParentheses = (s: string) => s.replace(/^\\((.*)\\)$/, \"$1\");\n\nexport const filterAsQuery = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n return removeOuterMostParentheses(filterAsQueryCore(f, opts));\n};\n\nconst filterAsQueryCore = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n if (isMultiClauseFilter(f)) {\n const multiClauseFilter = f.filters\n .map((filter) => filterAsQueryCore(filter, opts))\n .join(` ${f.op} `);\n return `(${multiClauseFilter})`;\n } else if (isMultiValueFilter(f)) {\n return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(\",\")}]`;\n } else {\n return singleValueFilterAsQuery(f, opts);\n }\n};\n\nfunction singleValueFilterAsQuery(\n f: SingleValueFilterClause,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string {\n if (isSerializableFilter(f)) {\n return f.asQuery();\n } else {\n const column = opts?.columnsByName?.[f.column];\n if (column && isDateTimeDataValue(column)) {\n return dateFilterAsQuery(f as SingleValueFilterClause<number>);\n } else {\n return defaultSingleValueFilterAsQuery(f);\n }\n }\n}\n\nexport const ONE_DAY_IN_MILLIS = 1000 * 60 * 60 * 24;\nexport function dateFilterAsQuery(f: SingleValueFilterClause<number>): string {\n switch (f.op) {\n case \"=\": {\n const filters: Array<Filter> = [\n { op: \">=\", column: f.column, value: f.value },\n {\n op: \"<\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILLIS,\n },\n ];\n return filterAsQueryCore({ op: \"and\", filters });\n }\n case \"!=\": {\n const filters: Array<Filter> = [\n { op: \"<\", column: f.column, value: f.value },\n {\n op: \">=\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILLIS,\n },\n ];\n return filterAsQueryCore({ op: \"or\", filters });\n }\n default:\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst defaultSingleValueFilterAsQuery = (f: SingleValueFilterClause) =>\n `${f.column} ${f.op} ${filterValue(f.value)}`;\n"],"names":["isMultiClauseFilter","isMultiValueFilter","isSerializableFilter","isDateTimeDataValue"],"mappings":"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"}
1
+ {"version":3,"file":"filterAsQuery.js","sources":["../../../../../../../packages/vuu-utils/src/filters/filterAsQuery.ts"],"sourcesContent":["import {\n ColumnDescriptorsByName,\n Filter,\n SingleValueFilterClause,\n} from \"@vuu-ui/vuu-filter-types\";\nimport { isDateTimeDataValue } from \"../column-utils\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSerializableFilter,\n} from \"./filter-utils\";\nimport { ScaledDecimal } from \"../ScaledDecimal\";\n\nconst filterValue = (value: string | number | boolean | ScaledDecimal) =>\n typeof value === \"string\"\n ? `\"${value}\"`\n : value instanceof ScaledDecimal\n ? value.toString()\n : value;\n\nconst quotedStrings = (value: string | number | boolean) =>\n typeof value === \"string\" ? `\"${value}\"` : value;\n\nconst removeOuterMostParentheses = (s: string) => s.replace(/^\\((.*)\\)$/, \"$1\");\n\nexport const filterAsQuery = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n return removeOuterMostParentheses(filterAsQueryCore(f, opts));\n};\n\nconst filterAsQueryCore = (\n f: Filter,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string => {\n if (isMultiClauseFilter(f)) {\n const multiClauseFilter = f.filters\n .map((filter) => filterAsQueryCore(filter, opts))\n .join(` ${f.op} `);\n return `(${multiClauseFilter})`;\n } else if (isMultiValueFilter(f)) {\n return `${f.column} ${f.op} [${f.values.map(quotedStrings).join(\",\")}]`;\n } else {\n return singleValueFilterAsQuery(f, opts);\n }\n};\n\nfunction singleValueFilterAsQuery(\n f: SingleValueFilterClause,\n opts?: { columnsByName?: ColumnDescriptorsByName },\n): string {\n if (isSerializableFilter(f)) {\n return f.asQuery();\n } else {\n const column = opts?.columnsByName?.[f.column];\n if (column && isDateTimeDataValue(column)) {\n return dateFilterAsQuery(f as SingleValueFilterClause<number>);\n } else {\n return defaultSingleValueFilterAsQuery(f);\n }\n }\n}\n\nexport const ONE_DAY_IN_MILLIS = 1000 * 60 * 60 * 24;\nexport function dateFilterAsQuery(f: SingleValueFilterClause<number>): string {\n switch (f.op) {\n case \"=\": {\n const filters: Array<Filter> = [\n { op: \">=\", column: f.column, value: f.value },\n {\n op: \"<\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILLIS,\n },\n ];\n return filterAsQueryCore({ op: \"and\", filters });\n }\n case \"!=\": {\n const filters: Array<Filter> = [\n { op: \"<\", column: f.column, value: f.value },\n {\n op: \">=\",\n column: f.column,\n value: f.value + ONE_DAY_IN_MILLIS,\n },\n ];\n return filterAsQueryCore({ op: \"or\", filters });\n }\n default:\n return defaultSingleValueFilterAsQuery(f);\n }\n}\n\nconst defaultSingleValueFilterAsQuery = (f: SingleValueFilterClause) =>\n `${f.column} ${f.op} ${filterValue(f.value)}`;\n"],"names":["ScaledDecimal","isMultiClauseFilter","isMultiValueFilter","isSerializableFilter","isDateTimeDataValue"],"mappings":"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"}
@@ -5,6 +5,7 @@ var dateUtils = require('./date/date-utils.js');
5
5
  require('./date/dateTimePattern.js');
6
6
  require('@internationalized/date');
7
7
  var htmlUtils = require('./html-utils.js');
8
+ var ScaledDecimal = require('./ScaledDecimal.js');
8
9
 
9
10
  const getFieldName = (target) => {
10
11
  const saltFormField = htmlUtils.queryClosest(target, "[data-field]");
@@ -42,6 +43,14 @@ function getTypedValue(value, type, throwIfInvalid = false, options) {
42
43
  return void 0;
43
44
  }
44
45
  }
46
+ case "scaleddecimal2":
47
+ return ScaledDecimal.ScaledDecimal2(value);
48
+ case "scaleddecimal4":
49
+ return ScaledDecimal.ScaledDecimal4(value);
50
+ case "scaleddecimal6":
51
+ return ScaledDecimal.ScaledDecimal6(value);
52
+ case "scaleddecimal8":
53
+ return ScaledDecimal.ScaledDecimal8(value);
45
54
  case "double":
46
55
  case "number": {
47
56
  if (dataUtils.stringIsValidDecimal(value)) {
@@ -1 +1 @@
1
- {"version":3,"file":"form-utils.js","sources":["../../../../../../packages/vuu-utils/src/form-utils.ts"],"sourcesContent":["import { DataValueTypeSimple } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { KeyboardEvent, SyntheticEvent } from \"react\";\nimport { stringIsValidDecimal, stringIsValidInt } from \"./data-utils\";\nimport { isValidTimeString, Time } from \"./date\";\nimport { queryClosest } from \"./html-utils\";\nimport { ExtendedFilterOptions } from \"@vuu-ui/vuu-filter-types\";\n\n/**\n * Use with the following convention:\n *\n * <FormField data-field=\"my-field-name\">\n */\nexport const getFieldName = (target: EventTarget | HTMLElement): string => {\n const saltFormField = queryClosest(target, \"[data-field]\") as HTMLElement;\n const fieldName = saltFormField?.dataset.field;\n if (fieldName) {\n return fieldName;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nexport type InputSource = \"typeahead-suggestion\" | \"text-input\";\n\nexport const isNumber = (\n type: string,\n value: VuuRowDataItemType,\n): value is number => type === \"number\";\n\nexport type CommitHandler<\n E extends HTMLElement = HTMLInputElement,\n T = VuuRowDataItemType,\n> = (\n evt: SyntheticEvent<E> | KeyboardEvent<E>,\n value: T,\n source?: InputSource,\n) => void;\n\nexport const isValidRange = <T>([val1, val2]: [T, T]) => {\n if (isValidTimeString(val1) && isValidTimeString(val2)) {\n return val2 > val1;\n }\n return true;\n};\n\n/**\n * Convert a pair of string values to the type appropriate for the\n * associated column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n */\nexport function getTypedRange(\n [value1, value2]: [string, string],\n dataType: VuuColumnDataType | DataValueTypeSimple,\n options?: ExtendedFilterOptions,\n) {\n return [\n getTypedValue(value1, dataType, false, options),\n getTypedValue(value2, dataType, false, options),\n ];\n}\n\n/**\n * Convert a string value to the type appropriate for the associated\n * column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n * @param value\n * @param type\n * @param throwIfInvalid\n */\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid?: false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | undefined;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid: true,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid = false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n if (stringIsValidInt(value)) {\n return parseInt(value, 10);\n } else if (isValidTimeString(value)) {\n //TOCHECK\n return value;\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"double\":\n case \"number\": {\n if (stringIsValidDecimal(value)) {\n return parseFloat(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n\n case \"time\":\n if (isValidTimeString(value)) {\n // We don't manipulate the values of 'extended' filters, the\n // ExtendedFilter impementation will do that.\n if (options?.type === \"TimeString\") {\n return value;\n } else {\n return +Time(value).asDate();\n }\n } else if (value.length > 0 && Time.isDateInMillis(value)) {\n //if value previously converted\n return Number(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n default:\n return value;\n }\n}\n"],"names":["queryClosest","isValidTimeString","stringIsValidInt","stringIsValidDecimal","Time"],"mappings":";;;;;;;;AAgBa,MAAA,YAAA,GAAe,CAAC,MAA8C,KAAA;AACzE,EAAM,MAAA,aAAA,GAAgBA,sBAAa,CAAA,MAAA,EAAQ,cAAc,CAAA;AACzD,EAAM,MAAA,SAAA,GAAY,eAAe,OAAQ,CAAA,KAAA;AACzC,EAAA,IAAI,SAAW,EAAA;AACb,IAAO,OAAA,SAAA;AAAA,GACF,MAAA;AACL,IAAA,MAAM,MAAM,4BAA4B,CAAA;AAAA;AAE5C;AAIO,MAAM,QAAW,GAAA,CACtB,IACA,EAAA,KAAA,KACoB,IAAS,KAAA;AAWxB,MAAM,YAAe,GAAA,CAAI,CAAC,IAAA,EAAM,IAAI,CAAc,KAAA;AACvD,EAAA,IAAIC,2BAAkB,CAAA,IAAI,CAAK,IAAAA,2BAAA,CAAkB,IAAI,CAAG,EAAA;AACtD,IAAA,OAAO,IAAO,GAAA,IAAA;AAAA;AAEhB,EAAO,OAAA,IAAA;AACT;AAQO,SAAS,cACd,CAAC,MAAA,EAAQ,MAAM,CAAA,EACf,UACA,OACA,EAAA;AACA,EAAO,OAAA;AAAA,IACL,aAAc,CAAA,MAAA,EAAQ,QAAU,EAAA,KAAA,EAAO,OAAO,CAAA;AAAA,IAC9C,aAAc,CAAA,MAAA,EAAQ,QAAU,EAAA,KAAA,EAAO,OAAO;AAAA,GAChD;AACF;AAuBO,SAAS,aACd,CAAA,KAAA,EACA,IACA,EAAA,cAAA,GAAiB,OACjB,OACgC,EAAA;AAChC,EAAA,QAAQ,IAAM;AAAA,IACZ,KAAK,KAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAI,IAAAC,0BAAA,CAAiB,KAAK,CAAG,EAAA;AAC3B,QAAO,OAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,OAC3B,MAAA,IAAWD,2BAAkB,CAAA,KAAK,CAAG,EAAA;AAEnC,QAAO,OAAA,KAAA;AAAA,iBACE,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,QAAA;AAAA,IACL,KAAK,QAAU,EAAA;AACb,MAAI,IAAAE,8BAAA,CAAqB,KAAK,CAAG,EAAA;AAC/B,QAAA,OAAO,WAAW,KAAK,CAAA;AAAA,iBACd,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT;AACF,IAEA,KAAK,SAAA;AACH,MAAO,OAAA,KAAA,KAAU,SAAS,IAAO,GAAA,KAAA;AAAA,IAEnC,KAAK,MAAA;AACH,MAAI,IAAAF,2BAAA,CAAkB,KAAK,CAAG,EAAA;AAG5B,QAAI,IAAA,OAAA,EAAS,SAAS,YAAc,EAAA;AAClC,UAAO,OAAA,KAAA;AAAA,SACF,MAAA;AACL,UAAA,OAAO,CAACG,cAAA,CAAK,KAAK,CAAA,CAAE,MAAO,EAAA;AAAA;AAC7B,iBACS,KAAM,CAAA,MAAA,GAAS,KAAKA,cAAK,CAAA,cAAA,CAAe,KAAK,CAAG,EAAA;AAEzD,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA,iBACV,cAAgB,EAAA;AACzB,QAAA,MAAM,KAAM,CAAA,CAAA,MAAA,EAAS,KAAK,CAAA,gBAAA,EAAmB,IAAI,CAAE,CAAA,CAAA;AAAA,OAC9C,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA;AACT,IACF;AACE,MAAO,OAAA,KAAA;AAAA;AAEb;;;;;;;;"}
1
+ {"version":3,"file":"form-utils.js","sources":["../../../../../../packages/vuu-utils/src/form-utils.ts"],"sourcesContent":["import { DataValueTypeSimple } from \"@vuu-ui/vuu-data-types\";\nimport {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { KeyboardEvent, SyntheticEvent } from \"react\";\nimport { stringIsValidDecimal, stringIsValidInt } from \"./data-utils\";\nimport { isValidTimeString, Time } from \"./date\";\nimport { queryClosest } from \"./html-utils\";\nimport { ExtendedFilterOptions } from \"@vuu-ui/vuu-filter-types\";\nimport {\n type ScaledDecimal,\n ScaledDecimal2,\n ScaledDecimal4,\n ScaledDecimal6,\n ScaledDecimal8,\n} from \"./ScaledDecimal\";\n\n/**\n * Use with the following convention:\n *\n * <FormField data-field=\"my-field-name\">\n */\nexport const getFieldName = (target: EventTarget | HTMLElement): string => {\n const saltFormField = queryClosest(target, \"[data-field]\") as HTMLElement;\n const fieldName = saltFormField?.dataset.field;\n if (fieldName) {\n return fieldName;\n } else {\n throw Error(\"named form field not found\");\n }\n};\n\nexport type InputSource = \"typeahead-suggestion\" | \"text-input\";\n\nexport const isNumber = (\n type: string,\n value: VuuRowDataItemType,\n): value is number => type === \"number\";\n\nexport type CommitHandler<\n E extends HTMLElement = HTMLInputElement,\n T = VuuRowDataItemType,\n> = (\n evt: SyntheticEvent<E> | KeyboardEvent<E>,\n value: T,\n source?: InputSource,\n) => void;\n\nexport const isValidRange = <T>([val1, val2]: [T, T]) => {\n if (isValidTimeString(val1) && isValidTimeString(val2)) {\n return val2 > val1;\n }\n return true;\n};\n\n/**\n * Convert a pair of string values to the type appropriate for the\n * associated column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n */\nexport function getTypedRange(\n [value1, value2]: [string, string],\n dataType: VuuColumnDataType | DataValueTypeSimple,\n options?: ExtendedFilterOptions,\n) {\n return [\n getTypedValue(value1, dataType, false, options),\n getTypedValue(value2, dataType, false, options),\n ];\n}\n\n/**\n * Convert a string value to the type appropriate for the associated\n * column or form field. Can be used when processing a string value\n * from an input used for user editing.\n *\n * @param value\n * @param type\n * @param throwIfInvalid\n */\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid?: false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | undefined;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid: true,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType;\nexport function getTypedValue(\n value: string,\n type: VuuColumnDataType | DataValueTypeSimple,\n throwIfInvalid = false,\n options?: ExtendedFilterOptions,\n): VuuRowDataItemType | ScaledDecimal | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n if (stringIsValidInt(value)) {\n return parseInt(value, 10);\n } else if (isValidTimeString(value)) {\n //TOCHECK\n return value;\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"scaleddecimal2\":\n return ScaledDecimal2(value);\n case \"scaleddecimal4\":\n return ScaledDecimal4(value);\n case \"scaleddecimal6\":\n return ScaledDecimal6(value);\n case \"scaleddecimal8\":\n return ScaledDecimal8(value);\n case \"double\":\n case \"number\": {\n if (stringIsValidDecimal(value)) {\n return parseFloat(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n\n case \"time\":\n if (isValidTimeString(value)) {\n // We don't manipulate the values of 'extended' filters, the\n // ExtendedFilter impementation will do that.\n if (options?.type === \"TimeString\") {\n return value;\n } else {\n return +Time(value).asDate();\n }\n } else if (value.length > 0 && Time.isDateInMillis(value)) {\n //if value previously converted\n return Number(value);\n } else if (throwIfInvalid) {\n throw Error(`value ${value} is not a valid ${type}`);\n } else {\n return undefined;\n }\n default:\n return value;\n }\n}\n"],"names":["queryClosest","isValidTimeString","stringIsValidInt","ScaledDecimal2","ScaledDecimal4","ScaledDecimal6","ScaledDecimal8","stringIsValidDecimal","Time"],"mappings":"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"}
@@ -5,6 +5,7 @@ require('./date/date-utils.js');
5
5
  var dateTimePattern = require('./date/dateTimePattern.js');
6
6
  var formatter = require('./date/formatter.js');
7
7
  var roundDecimal = require('./round-decimal.js');
8
+ var protocolMessageUtils = require('./protocol-message-utils.js');
8
9
 
9
10
  const DEFAULT_NUMERIC_FORMAT = {};
10
11
  const defaultValueFormatter = (value) => value == null ? "" : typeof value === "string" ? value : value.toString();
@@ -75,13 +76,13 @@ const mapFormatter = (map) => {
75
76
  };
76
77
  const NumericTypes = ["decimal", "number"];
77
78
  const getValueFormatter = (column, serverDataType = column.serverDataType) => {
78
- if (columnUtils.isDateTimeDataValue(column)) {
79
+ if (columnUtils.isDateTimeDataValue(column, serverDataType) || columnUtils.isTimeDataValue(column)) {
79
80
  return dateFormatter(column);
80
81
  }
81
82
  const { type } = column;
82
83
  if (columnUtils.isTypeDescriptor(type) && columnUtils.isMappedValueTypeRenderer(type?.renderer)) {
83
84
  return mapFormatter(type.renderer.map);
84
- } else if (serverDataType === "double" || columnUtils.isTypeDescriptor(type) && NumericTypes.includes(type.name)) {
85
+ } else if (protocolMessageUtils.isNumericType(serverDataType) || columnUtils.isTypeDescriptor(type) && NumericTypes.includes(type.name)) {
85
86
  return numericFormatter(column);
86
87
  } else if (serverDataType === "string" || serverDataType === "char") {
87
88
  return (value) => value;
@@ -1 +1 @@
1
- {"version":3,"file":"formatting-utils.js","sources":["../../../../../../packages/vuu-utils/src/formatting-utils.ts"],"sourcesContent":["import { DataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n ColumnTypeValueMap,\n ValueFormatter,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n isDateTimeDataValue,\n isMappedValueTypeRenderer,\n isTypeDescriptor,\n} from \"./column-utils\";\nimport { dateTimePattern, formatDate } from \"./date\";\nimport { roundDecimal, roundScaledDecimal } from \"./round-decimal\";\n\nexport type ValueFormatters = {\n [key: string]: ValueFormatter;\n};\n\nconst DEFAULT_NUMERIC_FORMAT: ColumnTypeFormatting = {};\n\nexport const defaultValueFormatter = (value: unknown) =>\n value == null ? \"\" : typeof value === \"string\" ? value : value.toString();\n\nconst dateFormatter = (column: DataValueDescriptor) => {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"number\" && value !== 0) {\n return formatter(new Date(value));\n } else {\n return \"\";\n }\n };\n};\n\nexport const numericFormatter = ({\n align = \"right\",\n serverDataType,\n type,\n}: Partial<ColumnDescriptor>) => {\n if (type === undefined || typeof type === \"string\") {\n return defaultValueFormatter;\n } else {\n const {\n alignOnDecimals = false,\n decimals,\n roundingRule,\n useLocaleString,\n zeroPad = false,\n } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;\n return (value: unknown) => {\n if (serverDataType?.startsWith(\"scaleddecimal\")) {\n if (typeof value === \"string\") {\n return roundScaledDecimal(\n value,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n } else {\n throw Error(\n `[formatting-utils] numericFormatter, invalid data for ${serverDataType}: '${value}'`,\n );\n }\n }\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"Σ\") || value.startsWith(\"[\"))\n ) {\n return value;\n }\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\"\n ? parseFloat(value)\n : undefined;\n return roundDecimal(\n number,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n };\n }\n};\n\nconst mapFormatter = (map: ColumnTypeValueMap) => {\n return (value: unknown) => {\n return map[value as string] ?? \"\";\n };\n};\n\nconst NumericTypes = [\"decimal\", \"number\"];\n\nexport const getValueFormatter = (\n column: ColumnDescriptor,\n serverDataType = column.serverDataType,\n): ValueFormatter => {\n if (isDateTimeDataValue(column)) {\n return dateFormatter(column);\n }\n\n const { type } = column;\n if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) {\n return mapFormatter(type.renderer.map);\n } else if (\n serverDataType === \"double\" ||\n (isTypeDescriptor(type) && NumericTypes.includes(type.name))\n ) {\n return numericFormatter(column);\n } else if (serverDataType === \"string\" || serverDataType === \"char\") {\n return (value: unknown) => value as string;\n }\n return defaultValueFormatter;\n};\n\n/**\n * Lowercases a string and returns as Lowercase typescript type\n *\n * @param str the input string\n * @returns str converted to Lowercase\n */\nexport const lowerCase = (str: string) =>\n str.toLowerCase() as Lowercase<string>;\n"],"names":["dateTimePattern","formatter","formatDate","roundScaledDecimal","roundDecimal","isDateTimeDataValue","isTypeDescriptor","isMappedValueTypeRenderer"],"mappings":"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"}
1
+ {"version":3,"file":"formatting-utils.js","sources":["../../../../../../packages/vuu-utils/src/formatting-utils.ts"],"sourcesContent":["import { DataValueDescriptor } from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n ColumnTypeFormatting,\n ColumnTypeValueMap,\n ValueFormatter,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n isDateTimeDataValue,\n isMappedValueTypeRenderer,\n isTimeDataValue,\n isTypeDescriptor,\n} from \"./column-utils\";\nimport { dateTimePattern, formatDate } from \"./date\";\nimport { roundDecimal, roundScaledDecimal } from \"./round-decimal\";\nimport { isNumericType } from \"./protocol-message-utils\";\n\nexport type ValueFormatters = {\n [key: string]: ValueFormatter;\n};\n\nconst DEFAULT_NUMERIC_FORMAT: ColumnTypeFormatting = {};\n\nexport const defaultValueFormatter = (value: unknown) =>\n value == null ? \"\" : typeof value === \"string\" ? value : value.toString();\n\nconst dateFormatter = (column: DataValueDescriptor) => {\n const pattern = dateTimePattern(column.type);\n const formatter = formatDate(pattern);\n\n return (value: unknown) => {\n if (typeof value === \"number\" && value !== 0) {\n return formatter(new Date(value));\n } else {\n return \"\";\n }\n };\n};\n\nexport const numericFormatter = ({\n align = \"right\",\n serverDataType,\n type,\n}: Partial<ColumnDescriptor>) => {\n if (type === undefined || typeof type === \"string\") {\n return defaultValueFormatter;\n } else {\n const {\n alignOnDecimals = false,\n decimals,\n roundingRule,\n useLocaleString,\n zeroPad = false,\n } = type.formatting ?? DEFAULT_NUMERIC_FORMAT;\n return (value: unknown) => {\n if (serverDataType?.startsWith(\"scaleddecimal\")) {\n if (typeof value === \"string\") {\n return roundScaledDecimal(\n value,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n } else {\n throw Error(\n `[formatting-utils] numericFormatter, invalid data for ${serverDataType}: '${value}'`,\n );\n }\n }\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"Σ\") || value.startsWith(\"[\"))\n ) {\n return value;\n }\n const number =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\"\n ? parseFloat(value)\n : undefined;\n return roundDecimal(\n number,\n align,\n decimals,\n zeroPad,\n alignOnDecimals,\n useLocaleString,\n roundingRule,\n );\n };\n }\n};\n\nconst mapFormatter = (map: ColumnTypeValueMap) => {\n return (value: unknown) => {\n return map[value as string] ?? \"\";\n };\n};\n\nconst NumericTypes = [\"decimal\", \"number\"];\n\nexport const getValueFormatter = (\n column: ColumnDescriptor,\n serverDataType = column.serverDataType,\n): ValueFormatter => {\n if (isDateTimeDataValue(column, serverDataType) || isTimeDataValue(column)) {\n return dateFormatter(column);\n }\n\n const { type } = column;\n if (isTypeDescriptor(type) && isMappedValueTypeRenderer(type?.renderer)) {\n return mapFormatter(type.renderer.map);\n } else if (\n isNumericType(serverDataType) ||\n (isTypeDescriptor(type) && NumericTypes.includes(type.name))\n ) {\n return numericFormatter(column);\n } else if (serverDataType === \"string\" || serverDataType === \"char\") {\n return (value: unknown) => value as string;\n }\n return defaultValueFormatter;\n};\n\n/**\n * Lowercases a string and returns as Lowercase typescript type\n *\n * @param str the input string\n * @returns str converted to Lowercase\n */\nexport const lowerCase = (str: string) =>\n str.toLowerCase() as Lowercase<string>;\n"],"names":["dateTimePattern","formatter","formatDate","roundScaledDecimal","roundDecimal","isDateTimeDataValue","isTimeDataValue","isTypeDescriptor","isMappedValueTypeRenderer","isNumericType"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var sortable = require('../../../node_modules/@dnd-kit/react/sortable.js');
4
- var index = require('../../../node_modules/@dnd-kit/react/index.js');
5
- var index$1 = require('../../../node_modules/@dnd-kit/dom/index.js');
6
3
  var modifiers = require('../../../node_modules/@dnd-kit/abstract/modifiers.js');
4
+ var index$1 = require('../../../node_modules/@dnd-kit/dom/index.js');
5
+ var index = require('../../../node_modules/@dnd-kit/react/index.js');
6
+ var sortable = require('../../../node_modules/@dnd-kit/react/sortable.js');
7
7
  var arrayUtils = require('./array-utils.js');
8
8
  var boxUtils = require('./box-utils.js');
9
- var columnUtils = require('./column-utils.js');
10
- var cookieUtils = require('./cookie-utils.js');
11
- var componentRegistry = require('./component-registry.js');
12
9
  var Clock = require('./Clock.js');
10
+ var columnUtils = require('./column-utils.js');
13
11
  var commonTypes = require('./common-types.js');
12
+ var componentRegistry = require('./component-registry.js');
13
+ var cookieUtils = require('./cookie-utils.js');
14
14
  var cssUtils = require('./css-utils.js');
15
15
  var dataUtils = require('./data-utils.js');
16
16
  var BaseDataSource = require('./datasource/BaseDataSource.js');
@@ -22,15 +22,15 @@ var dateTimePattern = require('./date/dateTimePattern.js');
22
22
  var formatter = require('./date/formatter.js');
23
23
  var types = require('./date/types.js');
24
24
  var debugUtils = require('./debug-utils.js');
25
- var filterUtils = require('./filters/filter-utils.js');
26
- var filterAsQuery = require('./filters/filterAsQuery.js');
27
- var htmlUtils = require('./html-utils.js');
28
25
  var eventEmitter = require('./event-emitter.js');
29
26
  var featureUtils = require('./feature-utils.js');
27
+ var filterUtils = require('./filters/filter-utils.js');
28
+ var filterAsQuery = require('./filters/filterAsQuery.js');
30
29
  var formUtils = require('./form-utils.js');
31
30
  var formattingUtils = require('./formatting-utils.js');
32
31
  var getUniqueId = require('./getUniqueId.js');
33
32
  var groupUtils = require('./group-utils.js');
33
+ var htmlUtils = require('./html-utils.js');
34
34
  var inputUtils = require('./input-utils.js');
35
35
  var invariant = require('./invariant.js');
36
36
  var itemToString = require('./itemToString.js');
@@ -42,42 +42,43 @@ var localStorageUtils = require('./local-storage-utils.js');
42
42
  var loggingUtils = require('./logging-utils.js');
43
43
  var moduleUtils = require('./module-utils.js');
44
44
  var index$2 = require('./nanoid/index.js');
45
- var reactUtils = require('./react-utils.js');
46
- var roundDecimal = require('./round-decimal.js');
47
45
  var perfUtils = require('./perf-utils.js');
48
46
  var promiseUtils = require('./promise-utils.js');
49
47
  var protocolMessageUtils = require('./protocol-message-utils.js');
50
48
  var rangeUtils = require('./range-utils.js');
49
+ var reactUtils = require('./react-utils.js');
50
+ var roundDecimal = require('./round-decimal.js');
51
51
  var rowUtils = require('./row-utils.js');
52
+ var ScaledDecimal = require('./ScaledDecimal.js');
52
53
  var selectionUtils = require('./selection-utils.js');
53
54
  var shellLayoutTypes = require('./shell-layout-types.js');
54
55
  var sortUtils = require('./sort-utils.js');
55
56
  var tableSchemaUtils = require('./table-schema-utils.js');
56
57
  var textUtils = require('./text-utils.js');
57
- var typeaheadUtils = require('./typeahead-utils.js');
58
- var treeUtils = require('./tree-utils.js');
59
58
  var ThemeProvider = require('./ThemeProvider.js');
59
+ var treeUtils = require('./tree-utils.js');
60
60
  var tsUtils = require('./ts-utils.js');
61
+ var typeaheadUtils = require('./typeahead-utils.js');
61
62
  var urlUtils = require('./url-utils.js');
62
63
  var useId = require('./useId.js');
63
- var useStateRef = require('./useStateRef.js');
64
64
  var useLayoutEffectSkipFirst = require('./useLayoutEffectSkipFirst.js');
65
- var ShellContext = require('./ShellContext.js');
65
+ var useStateRef = require('./useStateRef.js');
66
66
  var DataContext = require('./context-definitions/DataContext.js');
67
67
  var DataProvider = require('./context-definitions/DataProvider.js');
68
68
  var DataSourceProvider = require('./context-definitions/DataSourceProvider.js');
69
69
  var WorkspaceContext = require('./context-definitions/WorkspaceContext.js');
70
70
  var PageVisibilityObserver = require('./PageVisibilityObserver.js');
71
+ var ShellContext = require('./ShellContext.js');
71
72
 
72
73
 
73
74
 
74
- exports.useSortable = sortable.useSortable;
75
+ exports.RestrictToHorizontalAxis = modifiers.RestrictToHorizontalAxis;
76
+ exports.KeyboardSensor = index$1.KeyboardSensor;
77
+ exports.PointerSensor = index$1.PointerSensor;
75
78
  exports.DragDropProvider = index.DragDropProvider;
76
79
  exports.DragOverlay = index.DragOverlay;
77
80
  exports.useInstance = index.useInstance;
78
- exports.KeyboardSensor = index$1.KeyboardSensor;
79
- exports.PointerSensor = index$1.PointerSensor;
80
- exports.RestrictToHorizontalAxis = modifiers.RestrictToHorizontalAxis;
81
+ exports.useSortable = sortable.useSortable;
81
82
  exports.getAddedItems = arrayUtils.getAddedItems;
82
83
  exports.getMissingItems = arrayUtils.getMissingItems;
83
84
  exports.itemsChanged = arrayUtils.itemsChanged;
@@ -90,6 +91,7 @@ exports.getCenteredBox = boxUtils.getCenteredBox;
90
91
  exports.getPositionWithinBox = boxUtils.getPositionWithinBox;
91
92
  exports.isGridLayoutSplitDirection = boxUtils.isGridLayoutSplitDirection;
92
93
  exports.pointPositionWithinRect = boxUtils.pointPositionWithinRect;
94
+ exports.Clock = Clock.Clock;
93
95
  exports.AggregationType = columnUtils.AggregationType;
94
96
  exports.addColumnToSubscribedColumns = columnUtils.addColumnToSubscribedColumns;
95
97
  exports.applyDefaultColumnConfig = columnUtils.applyDefaultColumnConfig;
@@ -145,6 +147,7 @@ exports.isPinned = columnUtils.isPinned;
145
147
  exports.isResizing = columnUtils.isResizing;
146
148
  exports.isStringColumn = columnUtils.isStringColumn;
147
149
  exports.isTextColumn = columnUtils.isTextColumn;
150
+ exports.isTimeDataType = columnUtils.isTimeDataType;
148
151
  exports.isTimeDataValue = columnUtils.isTimeDataValue;
149
152
  exports.isTimestampColumn = columnUtils.isTimestampColumn;
150
153
  exports.isTypeDescriptor = columnUtils.isTypeDescriptor;
@@ -174,8 +177,7 @@ exports.updateColumnFormatting = columnUtils.updateColumnFormatting;
174
177
  exports.updateColumnRenderProps = columnUtils.updateColumnRenderProps;
175
178
  exports.updateColumnType = columnUtils.updateColumnType;
176
179
  exports.visibleColumnAtIndex = columnUtils.visibleColumnAtIndex;
177
- exports.getCookieValue = cookieUtils.getCookieValue;
178
- exports.setCookieValue = cookieUtils.setCookieValue;
180
+ exports.MEASURES = commonTypes.MEASURES;
179
181
  exports.getCellConfigPanelRenderer = componentRegistry.getCellConfigPanelRenderer;
180
182
  exports.getCellRenderer = componentRegistry.getCellRenderer;
181
183
  exports.getCellRendererOptions = componentRegistry.getCellRendererOptions;
@@ -191,8 +193,8 @@ exports.isLayoutComponent = componentRegistry.isLayoutComponent;
191
193
  exports.isView = componentRegistry.isView;
192
194
  exports.registerComponent = componentRegistry.registerComponent;
193
195
  exports.registerConfigurationEditor = componentRegistry.registerConfigurationEditor;
194
- exports.Clock = Clock.Clock;
195
- exports.MEASURES = commonTypes.MEASURES;
196
+ exports.getCookieValue = cookieUtils.getCookieValue;
197
+ exports.setCookieValue = cookieUtils.setCookieValue;
196
198
  exports.importCSS = cssUtils.importCSS;
197
199
  exports.DOWN1 = dataUtils.DOWN1;
198
200
  exports.DOWN2 = dataUtils.DOWN2;
@@ -256,6 +258,20 @@ exports.isDatePattern = types.isDatePattern;
256
258
  exports.isTimePattern = types.isTimePattern;
257
259
  exports.supportedDateTimePatterns = types.supportedDateTimePatterns;
258
260
  exports.RangeMonitor = debugUtils.RangeMonitor;
261
+ exports.EventEmitter = eventEmitter.EventEmitter;
262
+ exports.assertComponentRegistered = featureUtils.assertComponentRegistered;
263
+ exports.assertComponentsRegistered = featureUtils.assertComponentsRegistered;
264
+ exports.byModule = featureUtils.byModule;
265
+ exports.env = featureUtils.env;
266
+ exports.featureFromJson = featureUtils.featureFromJson;
267
+ exports.getCustomAndTableFeatures = featureUtils.getCustomAndTableFeatures;
268
+ exports.getFilterTableFeatures = featureUtils.getFilterTableFeatures;
269
+ exports.hasFilterTableFeatureProps = featureUtils.hasFilterTableFeatureProps;
270
+ exports.isCustomFeature = featureUtils.isCustomFeature;
271
+ exports.isSameTable = featureUtils.isSameTable;
272
+ exports.isStaticFeatures = featureUtils.isStaticFeatures;
273
+ exports.isVuuTables = featureUtils.isVuuTables;
274
+ exports.isWildcardSchema = featureUtils.isWildcardSchema;
259
275
  exports.applyFilterToColumns = filterUtils.applyFilterToColumns;
260
276
  exports.extractFilterForColumn = filterUtils.extractFilterForColumn;
261
277
  exports.filtersAreEqual = filterUtils.filtersAreEqual;
@@ -273,6 +289,7 @@ exports.isMultiClauseFilter = filterUtils.isMultiClauseFilter;
273
289
  exports.isMultiValueFilter = filterUtils.isMultiValueFilter;
274
290
  exports.isNamedFilter = filterUtils.isNamedFilter;
275
291
  exports.isOrFilter = filterUtils.isOrFilter;
292
+ exports.isScaledDecimalFilterClause = filterUtils.isScaledDecimalFilterClause;
276
293
  exports.isSerializableFilter = filterUtils.isSerializableFilter;
277
294
  exports.isSingleValueFilter = filterUtils.isSingleValueFilter;
278
295
  exports.isValidFilterClauseOp = filterUtils.isValidFilterClauseOp;
@@ -280,6 +297,19 @@ exports.stripFilterFromColumns = filterUtils.stripFilterFromColumns;
280
297
  exports.ONE_DAY_IN_MILLIS = filterAsQuery.ONE_DAY_IN_MILLIS;
281
298
  exports.dateFilterAsQuery = filterAsQuery.dateFilterAsQuery;
282
299
  exports.filterAsQuery = filterAsQuery.filterAsQuery;
300
+ exports.getFieldName = formUtils.getFieldName;
301
+ exports.getTypedRange = formUtils.getTypedRange;
302
+ exports.getTypedValue = formUtils.getTypedValue;
303
+ exports.isNumber = formUtils.isNumber;
304
+ exports.isValidRange = formUtils.isValidRange;
305
+ exports.defaultValueFormatter = formattingUtils.defaultValueFormatter;
306
+ exports.getValueFormatter = formattingUtils.getValueFormatter;
307
+ exports.lowerCase = formattingUtils.lowerCase;
308
+ exports.numericFormatter = formattingUtils.numericFormatter;
309
+ exports.getUniqueId = getUniqueId.getUniqueId;
310
+ exports.addGroupColumn = groupUtils.addGroupColumn;
311
+ exports.getGroupStatus = groupUtils.getGroupStatus;
312
+ exports.removeGroupColumn = groupUtils.removeGroupColumn;
283
313
  exports.createEl = htmlUtils.createEl;
284
314
  exports.dispatchCustomEvent = htmlUtils.dispatchCustomEvent;
285
315
  exports.dispatchKeyboardEvent = htmlUtils.dispatchKeyboardEvent;
@@ -296,33 +326,6 @@ exports.isDateInput = htmlUtils.isDateInput;
296
326
  exports.isInputElement = htmlUtils.isInputElement;
297
327
  exports.isSelectableElement = htmlUtils.isSelectableElement;
298
328
  exports.queryClosest = htmlUtils.queryClosest;
299
- exports.EventEmitter = eventEmitter.EventEmitter;
300
- exports.assertComponentRegistered = featureUtils.assertComponentRegistered;
301
- exports.assertComponentsRegistered = featureUtils.assertComponentsRegistered;
302
- exports.byModule = featureUtils.byModule;
303
- exports.env = featureUtils.env;
304
- exports.featureFromJson = featureUtils.featureFromJson;
305
- exports.getCustomAndTableFeatures = featureUtils.getCustomAndTableFeatures;
306
- exports.getFilterTableFeatures = featureUtils.getFilterTableFeatures;
307
- exports.hasFilterTableFeatureProps = featureUtils.hasFilterTableFeatureProps;
308
- exports.isCustomFeature = featureUtils.isCustomFeature;
309
- exports.isSameTable = featureUtils.isSameTable;
310
- exports.isStaticFeatures = featureUtils.isStaticFeatures;
311
- exports.isVuuTables = featureUtils.isVuuTables;
312
- exports.isWildcardSchema = featureUtils.isWildcardSchema;
313
- exports.getFieldName = formUtils.getFieldName;
314
- exports.getTypedRange = formUtils.getTypedRange;
315
- exports.getTypedValue = formUtils.getTypedValue;
316
- exports.isNumber = formUtils.isNumber;
317
- exports.isValidRange = formUtils.isValidRange;
318
- exports.defaultValueFormatter = formattingUtils.defaultValueFormatter;
319
- exports.getValueFormatter = formattingUtils.getValueFormatter;
320
- exports.lowerCase = formattingUtils.lowerCase;
321
- exports.numericFormatter = formattingUtils.numericFormatter;
322
- exports.getUniqueId = getUniqueId.getUniqueId;
323
- exports.addGroupColumn = groupUtils.addGroupColumn;
324
- exports.getGroupStatus = groupUtils.getGroupStatus;
325
- exports.removeGroupColumn = groupUtils.removeGroupColumn;
326
329
  exports.isCharacterKey = inputUtils.isCharacterKey;
327
330
  exports.isQuoteKey = inputUtils.isQuoteKey;
328
331
  exports.invariant = invariant.invariant;
@@ -352,14 +355,6 @@ exports.logUnhandledMessage = loggingUtils.logUnhandledMessage;
352
355
  exports.logger = loggingUtils.logger;
353
356
  exports.isModule = moduleUtils.isModule;
354
357
  exports.uuid = index$2.uuid;
355
- exports.asReactElements = reactUtils.asReactElements;
356
- exports.createSyntheticEvent = reactUtils.createSyntheticEvent;
357
- exports.isSimpleStateValue = reactUtils.isSimpleStateValue;
358
- exports.useIsMounted = reactUtils.useIsMounted;
359
- exports.useStableReference = reactUtils.useStableReference;
360
- exports.exceedsMaxSafeInteger = roundDecimal.exceedsMaxSafeInteger;
361
- exports.roundDecimal = roundDecimal.roundDecimal;
362
- exports.roundScaledDecimal = roundDecimal.roundScaledDecimal;
363
358
  exports.debounce = perfUtils.debounce;
364
359
  exports.throttle = perfUtils.throttle;
365
360
  exports.DeferredPromise = promiseUtils.DeferredPromise;
@@ -373,6 +368,7 @@ exports.isCreateVpSuccess = protocolMessageUtils.isCreateVpSuccess;
373
368
  exports.isCustomComponentActionMessage = protocolMessageUtils.isCustomComponentActionMessage;
374
369
  exports.isLoginErrorMessage = protocolMessageUtils.isLoginErrorMessage;
375
370
  exports.isLoginResponse = protocolMessageUtils.isLoginResponse;
371
+ exports.isNumericType = protocolMessageUtils.isNumericType;
376
372
  exports.isOpenDialogAction = protocolMessageUtils.isOpenDialogAction;
377
373
  exports.isOpenSessionTableDialogMessage = protocolMessageUtils.isOpenSessionTableDialogMessage;
378
374
  exports.isRequestResponse = protocolMessageUtils.isRequestResponse;
@@ -391,10 +387,23 @@ exports.WindowRange = rangeUtils.WindowRange;
391
387
  exports.getFullRange = rangeUtils.getFullRange;
392
388
  exports.rangeNewItems = rangeUtils.rangeNewItems;
393
389
  exports.withinRange = rangeUtils.withinRange;
390
+ exports.asReactElements = reactUtils.asReactElements;
391
+ exports.createSyntheticEvent = reactUtils.createSyntheticEvent;
392
+ exports.isSimpleStateValue = reactUtils.isSimpleStateValue;
393
+ exports.useIsMounted = reactUtils.useIsMounted;
394
+ exports.useStableReference = reactUtils.useStableReference;
395
+ exports.exceedsMaxSafeInteger = roundDecimal.exceedsMaxSafeInteger;
396
+ exports.roundDecimal = roundDecimal.roundDecimal;
397
+ exports.roundScaledDecimal = roundDecimal.roundScaledDecimal;
394
398
  exports.actualRowPositioning = rowUtils.actualRowPositioning;
395
399
  exports.asDataSourceRowObject = rowUtils.asDataSourceRowObject;
396
400
  exports.virtualRowPositioning = rowUtils.virtualRowPositioning;
397
401
  exports.vuuRowToDataSourceRow = rowUtils.vuuRowToDataSourceRow;
402
+ exports.ScaledDecimal = ScaledDecimal.ScaledDecimal;
403
+ exports.ScaledDecimal2 = ScaledDecimal.ScaledDecimal2;
404
+ exports.ScaledDecimal4 = ScaledDecimal.ScaledDecimal4;
405
+ exports.ScaledDecimal6 = ScaledDecimal.ScaledDecimal6;
406
+ exports.ScaledDecimal8 = ScaledDecimal.ScaledDecimal8;
398
407
  exports.deselectItem = selectionUtils.deselectItem;
399
408
  exports.selectItem = selectionUtils.selectItem;
400
409
  exports.VuuShellLocation = shellLayoutTypes.VuuShellLocation;
@@ -405,28 +414,26 @@ exports.toggleOrApplySort = sortUtils.toggleOrApplySort;
405
414
  exports.getVuuTable = tableSchemaUtils.getVuuTable;
406
415
  exports.lastWord = textUtils.lastWord;
407
416
  exports.wordify = textUtils.wordify;
408
- exports.NO_DATA_MATCH = typeaheadUtils.NO_DATA_MATCH;
409
- exports.dropLastPathSegment = treeUtils.dropLastPathSegment;
410
- exports.getParentRow = treeUtils.getParentRow;
411
- exports.lastPathSegment = treeUtils.lastPathSegment;
412
- exports.missingAncestor = treeUtils.missingAncestor;
413
- exports.treeToDataSourceRows = treeUtils.treeToDataSourceRows;
414
417
  exports.DEFAULT_DENSITY = ThemeProvider.DEFAULT_DENSITY;
415
418
  exports.DEFAULT_THEME = ThemeProvider.DEFAULT_THEME;
416
419
  exports.DEFAULT_THEME_MODE = ThemeProvider.DEFAULT_THEME_MODE;
417
420
  exports.ThemeContext = ThemeProvider.ThemeContext;
418
421
  exports.ThemeProvider = ThemeProvider.ThemeProvider;
419
422
  exports.useThemeAttributes = ThemeProvider.useThemeAttributes;
423
+ exports.dropLastPathSegment = treeUtils.dropLastPathSegment;
424
+ exports.getParentRow = treeUtils.getParentRow;
425
+ exports.lastPathSegment = treeUtils.lastPathSegment;
426
+ exports.missingAncestor = treeUtils.missingAncestor;
427
+ exports.treeToDataSourceRows = treeUtils.treeToDataSourceRows;
420
428
  exports.elementImplementsJSONSerialization = tsUtils.elementImplementsJSONSerialization;
421
429
  exports.isNotNullOrUndefined = tsUtils.isNotNullOrUndefined;
422
430
  exports.isObject = tsUtils.isObject;
431
+ exports.NO_DATA_MATCH = typeaheadUtils.NO_DATA_MATCH;
423
432
  exports.getUrlParameter = urlUtils.getUrlParameter;
424
433
  exports.hasUrlParameter = urlUtils.hasUrlParameter;
425
434
  exports.useId = useId.useId;
426
- exports.useStateRef = useStateRef.useStateRef;
427
435
  exports.useLayoutEffectSkipFirst = useLayoutEffectSkipFirst.useLayoutEffectSkipFirst;
428
- exports.ShellContext = ShellContext.ShellContext;
429
- exports.useShellContext = ShellContext.useShellContext;
436
+ exports.useStateRef = useStateRef.useStateRef;
430
437
  exports.DataContext = DataContext.DataContext;
431
438
  exports.DataProvider = DataProvider.DataProvider;
432
439
  exports.useData = DataProvider.useData;
@@ -435,4 +442,6 @@ exports.useDataSource = DataSourceProvider.useDataSource;
435
442
  exports.WorkspaceContext = WorkspaceContext.WorkspaceContext;
436
443
  exports.usePlaceholderJSON = WorkspaceContext.usePlaceholderJSON;
437
444
  exports.PageVisibilityObserver = PageVisibilityObserver.PageVisibilityObserver;
445
+ exports.ShellContext = ShellContext.ShellContext;
446
+ exports.useShellContext = ShellContext.useShellContext;
438
447
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -55,6 +55,18 @@ function isSessionTableActionMessage(rpcResponse) {
55
55
  function isCustomComponentActionMessage(rpcResponse) {
56
56
  return isActionMessage(rpcResponse) && isOpenDialogAction(rpcResponse.action) && isSessionTable(rpcResponse.action.table) && typeof rpcResponse.action.renderComponent === "string" && componentRegistry.isView(rpcResponse.action.renderComponent);
57
57
  }
58
+ const numericTypes = [
59
+ "int",
60
+ "long",
61
+ "double",
62
+ "scaleddecimal2",
63
+ "scaleddecimal4",
64
+ "scaleddecimal6",
65
+ "scaleddecimal8"
66
+ ];
67
+ function isNumericType(dataType) {
68
+ return numericTypes.includes(dataType);
69
+ }
58
70
 
59
71
  exports.INVALID_SESSION = INVALID_SESSION;
60
72
  exports.INVALID_TOKEN = INVALID_TOKEN;
@@ -66,6 +78,7 @@ exports.isCreateVpSuccess = isCreateVpSuccess;
66
78
  exports.isCustomComponentActionMessage = isCustomComponentActionMessage;
67
79
  exports.isLoginErrorMessage = isLoginErrorMessage;
68
80
  exports.isLoginResponse = isLoginResponse;
81
+ exports.isNumericType = isNumericType;
69
82
  exports.isOpenDialogAction = isOpenDialogAction;
70
83
  exports.isOpenSessionTableDialogMessage = isOpenSessionTableDialogMessage;
71
84
  exports.isRequestResponse = isRequestResponse;