@finos/legend-data-cube 0.0.2

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 (517) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/lib/application/DataCubeDocumentation.d.ts +22 -0
  4. package/lib/application/DataCubeDocumentation.d.ts.map +1 -0
  5. package/lib/application/DataCubeDocumentation.js +23 -0
  6. package/lib/application/DataCubeDocumentation.js.map +1 -0
  7. package/lib/components/DataCube.d.ts +19 -0
  8. package/lib/components/DataCube.d.ts.map +1 -0
  9. package/lib/components/DataCube.js +67 -0
  10. package/lib/components/DataCube.js.map +1 -0
  11. package/lib/components/DataCubeProvider.d.ts +27 -0
  12. package/lib/components/DataCubeProvider.d.ts.map +1 -0
  13. package/lib/components/DataCubeProvider.js +34 -0
  14. package/lib/components/DataCubeProvider.js.map +1 -0
  15. package/lib/components/application/DataCubeAlert.d.ts +44 -0
  16. package/lib/components/application/DataCubeAlert.d.ts.map +1 -0
  17. package/lib/components/application/DataCubeAlert.js +83 -0
  18. package/lib/components/application/DataCubeAlert.js.map +1 -0
  19. package/lib/components/application/DataCubeDocumentationPanel.d.ts +19 -0
  20. package/lib/components/application/DataCubeDocumentationPanel.d.ts.map +1 -0
  21. package/lib/components/application/DataCubeDocumentationPanel.js +32 -0
  22. package/lib/components/application/DataCubeDocumentationPanel.js.map +1 -0
  23. package/lib/components/application/DataCubeLayoutManager.d.ts +27 -0
  24. package/lib/components/application/DataCubeLayoutManager.d.ts.map +1 -0
  25. package/lib/components/application/DataCubeLayoutManager.js +116 -0
  26. package/lib/components/application/DataCubeLayoutManager.js.map +1 -0
  27. package/lib/components/application/DataCubeSettingsPanel.d.ts +19 -0
  28. package/lib/components/application/DataCubeSettingsPanel.d.ts.map +1 -0
  29. package/lib/components/application/DataCubeSettingsPanel.js +53 -0
  30. package/lib/components/application/DataCubeSettingsPanel.js.map +1 -0
  31. package/lib/components/editor/DataCubeEditor.d.ts +22 -0
  32. package/lib/components/editor/DataCubeEditor.d.ts.map +1 -0
  33. package/lib/components/editor/DataCubeEditor.js +51 -0
  34. package/lib/components/editor/DataCubeEditor.js.map +1 -0
  35. package/lib/components/editor/DataCubeEditorColumnPropertiesPanel.d.ts +22 -0
  36. package/lib/components/editor/DataCubeEditorColumnPropertiesPanel.d.ts.map +1 -0
  37. package/lib/components/editor/DataCubeEditorColumnPropertiesPanel.js +274 -0
  38. package/lib/components/editor/DataCubeEditorColumnPropertiesPanel.js.map +1 -0
  39. package/lib/components/editor/DataCubeEditorColumnsPanel.d.ts +22 -0
  40. package/lib/components/editor/DataCubeEditorColumnsPanel.d.ts.map +1 -0
  41. package/lib/components/editor/DataCubeEditorColumnsPanel.js +35 -0
  42. package/lib/components/editor/DataCubeEditorColumnsPanel.js.map +1 -0
  43. package/lib/components/editor/DataCubeEditorColumnsSelector.d.ts +32 -0
  44. package/lib/components/editor/DataCubeEditorColumnsSelector.d.ts.map +1 -0
  45. package/lib/components/editor/DataCubeEditorColumnsSelector.js +307 -0
  46. package/lib/components/editor/DataCubeEditorColumnsSelector.js.map +1 -0
  47. package/lib/components/editor/DataCubeEditorGeneralPropertiesPanel.d.ts +22 -0
  48. package/lib/components/editor/DataCubeEditorGeneralPropertiesPanel.d.ts.map +1 -0
  49. package/lib/components/editor/DataCubeEditorGeneralPropertiesPanel.js +167 -0
  50. package/lib/components/editor/DataCubeEditorGeneralPropertiesPanel.js.map +1 -0
  51. package/lib/components/editor/DataCubeEditorHorizontalPivotsPanel.d.ts +22 -0
  52. package/lib/components/editor/DataCubeEditorHorizontalPivotsPanel.d.ts.map +1 -0
  53. package/lib/components/editor/DataCubeEditorHorizontalPivotsPanel.js +29 -0
  54. package/lib/components/editor/DataCubeEditorHorizontalPivotsPanel.js.map +1 -0
  55. package/lib/components/editor/DataCubeEditorSortsPanel.d.ts +22 -0
  56. package/lib/components/editor/DataCubeEditorSortsPanel.d.ts.map +1 -0
  57. package/lib/components/editor/DataCubeEditorSortsPanel.js +62 -0
  58. package/lib/components/editor/DataCubeEditorSortsPanel.js.map +1 -0
  59. package/lib/components/editor/DataCubeEditorVerticalPivotsPanel.d.ts +22 -0
  60. package/lib/components/editor/DataCubeEditorVerticalPivotsPanel.d.ts.map +1 -0
  61. package/lib/components/editor/DataCubeEditorVerticalPivotsPanel.js +25 -0
  62. package/lib/components/editor/DataCubeEditorVerticalPivotsPanel.js.map +1 -0
  63. package/lib/components/extend/DataCubeColumnEditor.d.ts +22 -0
  64. package/lib/components/extend/DataCubeColumnEditor.d.ts.map +1 -0
  65. package/lib/components/extend/DataCubeColumnEditor.js +169 -0
  66. package/lib/components/extend/DataCubeColumnEditor.js.map +1 -0
  67. package/lib/components/filter/DataCubeFilterEditor.d.ts +22 -0
  68. package/lib/components/filter/DataCubeFilterEditor.d.ts.map +1 -0
  69. package/lib/components/filter/DataCubeFilterEditor.js +312 -0
  70. package/lib/components/filter/DataCubeFilterEditor.js.map +1 -0
  71. package/lib/components/grid/DataCubeGrid.d.ts +27 -0
  72. package/lib/components/grid/DataCubeGrid.d.ts.map +1 -0
  73. package/lib/components/grid/DataCubeGrid.js +241 -0
  74. package/lib/components/grid/DataCubeGrid.js.map +1 -0
  75. package/lib/components/grid/DataCubeGridShared.d.ts +18 -0
  76. package/lib/components/grid/DataCubeGridShared.d.ts.map +1 -0
  77. package/lib/components/grid/DataCubeGridShared.js +25 -0
  78. package/lib/components/grid/DataCubeGridShared.js.map +1 -0
  79. package/lib/components/shared/DataCubeFormUtils.d.ts +54 -0
  80. package/lib/components/shared/DataCubeFormUtils.d.ts.map +1 -0
  81. package/lib/components/shared/DataCubeFormUtils.js +251 -0
  82. package/lib/components/shared/DataCubeFormUtils.js.map +1 -0
  83. package/lib/components/shared/DataCubePureCodeEditorUtils.d.ts +22 -0
  84. package/lib/components/shared/DataCubePureCodeEditorUtils.d.ts.map +1 -0
  85. package/lib/components/shared/DataCubePureCodeEditorUtils.js +64 -0
  86. package/lib/components/shared/DataCubePureCodeEditorUtils.js.map +1 -0
  87. package/lib/index.css +17 -0
  88. package/lib/index.css.map +1 -0
  89. package/lib/index.d.ts +21 -0
  90. package/lib/index.d.ts.map +1 -0
  91. package/lib/index.js +21 -0
  92. package/lib/index.js.map +1 -0
  93. package/lib/package.json +89 -0
  94. package/lib/stores/DataCubeState.d.ts +32 -0
  95. package/lib/stores/DataCubeState.d.ts.map +1 -0
  96. package/lib/stores/DataCubeState.js +84 -0
  97. package/lib/stores/DataCubeState.js.map +1 -0
  98. package/lib/stores/DataCubeViewState.d.ts +50 -0
  99. package/lib/stores/DataCubeViewState.d.ts.map +1 -0
  100. package/lib/stores/DataCubeViewState.js +109 -0
  101. package/lib/stores/DataCubeViewState.js.map +1 -0
  102. package/lib/stores/core/DataCubeConfiguration.d.ts +107 -0
  103. package/lib/stores/core/DataCubeConfiguration.d.ts.map +1 -0
  104. package/lib/stores/core/DataCubeConfiguration.js +185 -0
  105. package/lib/stores/core/DataCubeConfiguration.js.map +1 -0
  106. package/lib/stores/core/DataCubeConfigurationBuilder.d.ts +25 -0
  107. package/lib/stores/core/DataCubeConfigurationBuilder.d.ts.map +1 -0
  108. package/lib/stores/core/DataCubeConfigurationBuilder.js +50 -0
  109. package/lib/stores/core/DataCubeConfigurationBuilder.js.map +1 -0
  110. package/lib/stores/core/DataCubeInfoState.d.ts +33 -0
  111. package/lib/stores/core/DataCubeInfoState.d.ts.map +1 -0
  112. package/lib/stores/core/DataCubeInfoState.js +48 -0
  113. package/lib/stores/core/DataCubeInfoState.js.map +1 -0
  114. package/lib/stores/core/DataCubeQueryBuilder.d.ts +35 -0
  115. package/lib/stores/core/DataCubeQueryBuilder.d.ts.map +1 -0
  116. package/lib/stores/core/DataCubeQueryBuilder.js +130 -0
  117. package/lib/stores/core/DataCubeQueryBuilder.js.map +1 -0
  118. package/lib/stores/core/DataCubeQueryBuilderUtils.d.ts +50 -0
  119. package/lib/stores/core/DataCubeQueryBuilderUtils.d.ts.map +1 -0
  120. package/lib/stores/core/DataCubeQueryBuilderUtils.js +320 -0
  121. package/lib/stores/core/DataCubeQueryBuilderUtils.js.map +1 -0
  122. package/lib/stores/core/DataCubeQueryEngine.d.ts +224 -0
  123. package/lib/stores/core/DataCubeQueryEngine.d.ts.map +1 -0
  124. package/lib/stores/core/DataCubeQueryEngine.js +286 -0
  125. package/lib/stores/core/DataCubeQueryEngine.js.map +1 -0
  126. package/lib/stores/core/DataCubeQuerySnapshot.d.ts +89 -0
  127. package/lib/stores/core/DataCubeQuerySnapshot.d.ts.map +1 -0
  128. package/lib/stores/core/DataCubeQuerySnapshot.js +82 -0
  129. package/lib/stores/core/DataCubeQuerySnapshot.js.map +1 -0
  130. package/lib/stores/core/DataCubeQuerySnapshotBuilder.d.ts +33 -0
  131. package/lib/stores/core/DataCubeQuerySnapshotBuilder.d.ts.map +1 -0
  132. package/lib/stores/core/DataCubeQuerySnapshotBuilder.js +260 -0
  133. package/lib/stores/core/DataCubeQuerySnapshotBuilder.js.map +1 -0
  134. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.d.ts +30 -0
  135. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.d.ts.map +1 -0
  136. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.js +125 -0
  137. package/lib/stores/core/DataCubeQuerySnapshotBuilderUtils.js.map +1 -0
  138. package/lib/stores/core/DataCubeQuerySnapshotManager.d.ts +47 -0
  139. package/lib/stores/core/DataCubeQuerySnapshotManager.d.ts.map +1 -0
  140. package/lib/stores/core/DataCubeQuerySnapshotManager.js +84 -0
  141. package/lib/stores/core/DataCubeQuerySnapshotManager.js.map +1 -0
  142. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.d.ts +28 -0
  143. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.d.ts.map +1 -0
  144. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.js +25 -0
  145. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation.js.map +1 -0
  146. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts +27 -0
  147. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.d.ts.map +1 -0
  148. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.js +39 -0
  149. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.js.map +1 -0
  150. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts +27 -0
  151. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.d.ts.map +1 -0
  152. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.js +47 -0
  153. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.js.map +1 -0
  154. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts +27 -0
  155. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.d.ts.map +1 -0
  156. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.js +44 -0
  157. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__First.js.map +1 -0
  158. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts +27 -0
  159. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.d.ts.map +1 -0
  160. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js +53 -0
  161. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.js.map +1 -0
  162. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts +27 -0
  163. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.d.ts.map +1 -0
  164. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.js +44 -0
  165. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.js.map +1 -0
  166. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts +27 -0
  167. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.d.ts.map +1 -0
  168. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.js +39 -0
  169. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.js.map +1 -0
  170. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts +27 -0
  171. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.d.ts.map +1 -0
  172. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.js +39 -0
  173. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.js.map +1 -0
  174. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts +27 -0
  175. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.d.ts.map +1 -0
  176. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js +39 -0
  177. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.js.map +1 -0
  178. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts +27 -0
  179. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.d.ts.map +1 -0
  180. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js +39 -0
  181. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.js.map +1 -0
  182. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts +27 -0
  183. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.d.ts.map +1 -0
  184. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.js +39 -0
  185. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.js.map +1 -0
  186. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts +27 -0
  187. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.d.ts.map +1 -0
  188. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js +44 -0
  189. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.js.map +1 -0
  190. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts +27 -0
  191. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.d.ts.map +1 -0
  192. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js +39 -0
  193. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.js.map +1 -0
  194. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts +27 -0
  195. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.d.ts.map +1 -0
  196. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js +39 -0
  197. package/lib/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.js.map +1 -0
  198. package/lib/stores/core/filter/DataCubeQueryFilterEditorState.d.ts +36 -0
  199. package/lib/stores/core/filter/DataCubeQueryFilterEditorState.d.ts.map +1 -0
  200. package/lib/stores/core/filter/DataCubeQueryFilterEditorState.js +153 -0
  201. package/lib/stores/core/filter/DataCubeQueryFilterEditorState.js.map +1 -0
  202. package/lib/stores/core/filter/DataCubeQueryFilterOperation.d.ts +32 -0
  203. package/lib/stores/core/filter/DataCubeQueryFilterOperation.d.ts.map +1 -0
  204. package/lib/stores/core/filter/DataCubeQueryFilterOperation.js +48 -0
  205. package/lib/stores/core/filter/DataCubeQueryFilterOperation.js.map +1 -0
  206. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.d.ts +34 -0
  207. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.d.ts.map +1 -0
  208. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.js +59 -0
  209. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Contain.js.map +1 -0
  210. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.d.ts +34 -0
  211. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.d.ts.map +1 -0
  212. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js +64 -0
  213. package/lib/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.js.map +1 -0
  214. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.d.ts +34 -0
  215. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.d.ts.map +1 -0
  216. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.js +59 -0
  217. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWith.js.map +1 -0
  218. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.d.ts +34 -0
  219. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.d.ts.map +1 -0
  220. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js +64 -0
  221. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.js.map +1 -0
  222. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.d.ts +34 -0
  223. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.d.ts.map +1 -0
  224. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.js +136 -0
  225. package/lib/stores/core/filter/DataCubeQueryFilterOperation__Equal.js.map +1 -0
  226. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.d.ts +34 -0
  227. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.d.ts.map +1 -0
  228. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js +64 -0
  229. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.js.map +1 -0
  230. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.d.ts +34 -0
  231. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.d.ts.map +1 -0
  232. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js +64 -0
  233. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.js.map +1 -0
  234. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.d.ts +34 -0
  235. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.d.ts.map +1 -0
  236. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.js +65 -0
  237. package/lib/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.js.map +1 -0
  238. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.d.ts +34 -0
  239. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.d.ts.map +1 -0
  240. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.js +67 -0
  241. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.js.map +1 -0
  242. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.d.ts +34 -0
  243. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.d.ts.map +1 -0
  244. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js +64 -0
  245. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.js.map +1 -0
  246. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.d.ts +34 -0
  247. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.d.ts.map +1 -0
  248. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js +67 -0
  249. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.js.map +1 -0
  250. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.d.ts +34 -0
  251. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.d.ts.map +1 -0
  252. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js +64 -0
  253. package/lib/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.js.map +1 -0
  254. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.d.ts +31 -0
  255. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.d.ts.map +1 -0
  256. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.js +64 -0
  257. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.js.map +1 -0
  258. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.d.ts +31 -0
  259. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.d.ts.map +1 -0
  260. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.js +64 -0
  261. package/lib/stores/core/filter/DataCubeQueryFilterOperation__IsNull.js.map +1 -0
  262. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.d.ts +34 -0
  263. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.d.ts.map +1 -0
  264. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.js +67 -0
  265. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThan.js.map +1 -0
  266. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.d.ts +34 -0
  267. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.d.ts.map +1 -0
  268. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js +64 -0
  269. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.js.map +1 -0
  270. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.d.ts +34 -0
  271. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.d.ts.map +1 -0
  272. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js +67 -0
  273. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.js.map +1 -0
  274. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.d.ts +34 -0
  275. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.d.ts.map +1 -0
  276. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js +64 -0
  277. package/lib/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.js.map +1 -0
  278. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.d.ts +34 -0
  279. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.d.ts.map +1 -0
  280. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.js +59 -0
  281. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotContain.js.map +1 -0
  282. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.d.ts +34 -0
  283. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.d.ts.map +1 -0
  284. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.js +59 -0
  285. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.js.map +1 -0
  286. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.d.ts +34 -0
  287. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.d.ts.map +1 -0
  288. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.js +69 -0
  289. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.js.map +1 -0
  290. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.d.ts +34 -0
  291. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.d.ts.map +1 -0
  292. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js +64 -0
  293. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.js.map +1 -0
  294. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.d.ts +34 -0
  295. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.d.ts.map +1 -0
  296. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js +64 -0
  297. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.js.map +1 -0
  298. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.d.ts +34 -0
  299. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.d.ts.map +1 -0
  300. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js +65 -0
  301. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.js.map +1 -0
  302. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.d.ts +34 -0
  303. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.d.ts.map +1 -0
  304. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.js +59 -0
  305. package/lib/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.js.map +1 -0
  306. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.d.ts +34 -0
  307. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.d.ts.map +1 -0
  308. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.js +59 -0
  309. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWith.js.map +1 -0
  310. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.d.ts +34 -0
  311. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.d.ts.map +1 -0
  312. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js +64 -0
  313. package/lib/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.js.map +1 -0
  314. package/lib/stores/editor/DataCubeEditorColumnPropertiesPanelState.d.ts +37 -0
  315. package/lib/stores/editor/DataCubeEditorColumnPropertiesPanelState.d.ts.map +1 -0
  316. package/lib/stores/editor/DataCubeEditorColumnPropertiesPanelState.js +68 -0
  317. package/lib/stores/editor/DataCubeEditorColumnPropertiesPanelState.js.map +1 -0
  318. package/lib/stores/editor/DataCubeEditorColumnsPanelState.d.ts +58 -0
  319. package/lib/stores/editor/DataCubeEditorColumnsPanelState.d.ts.map +1 -0
  320. package/lib/stores/editor/DataCubeEditorColumnsPanelState.js +127 -0
  321. package/lib/stores/editor/DataCubeEditorColumnsPanelState.js.map +1 -0
  322. package/lib/stores/editor/DataCubeEditorColumnsSelectorState.d.ts +42 -0
  323. package/lib/stores/editor/DataCubeEditorColumnsSelectorState.d.ts.map +1 -0
  324. package/lib/stores/editor/DataCubeEditorColumnsSelectorState.js +75 -0
  325. package/lib/stores/editor/DataCubeEditorColumnsSelectorState.js.map +1 -0
  326. package/lib/stores/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts +35 -0
  327. package/lib/stores/editor/DataCubeEditorGeneralPropertiesPanelState.d.ts.map +1 -0
  328. package/lib/stores/editor/DataCubeEditorGeneralPropertiesPanelState.js +59 -0
  329. package/lib/stores/editor/DataCubeEditorGeneralPropertiesPanelState.js.map +1 -0
  330. package/lib/stores/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts +38 -0
  331. package/lib/stores/editor/DataCubeEditorHorizontalPivotsPanelState.d.ts.map +1 -0
  332. package/lib/stores/editor/DataCubeEditorHorizontalPivotsPanelState.js +75 -0
  333. package/lib/stores/editor/DataCubeEditorHorizontalPivotsPanelState.js.map +1 -0
  334. package/lib/stores/editor/DataCubeEditorMutableConfiguration.d.ts +107 -0
  335. package/lib/stores/editor/DataCubeEditorMutableConfiguration.d.ts.map +1 -0
  336. package/lib/stores/editor/DataCubeEditorMutableConfiguration.js +467 -0
  337. package/lib/stores/editor/DataCubeEditorMutableConfiguration.js.map +1 -0
  338. package/lib/stores/editor/DataCubeEditorPanelState.d.ts +29 -0
  339. package/lib/stores/editor/DataCubeEditorPanelState.d.ts.map +1 -0
  340. package/lib/stores/editor/DataCubeEditorPanelState.js +17 -0
  341. package/lib/stores/editor/DataCubeEditorPanelState.js.map +1 -0
  342. package/lib/stores/editor/DataCubeEditorSortsPanelState.d.ts +41 -0
  343. package/lib/stores/editor/DataCubeEditorSortsPanelState.d.ts.map +1 -0
  344. package/lib/stores/editor/DataCubeEditorSortsPanelState.js +86 -0
  345. package/lib/stores/editor/DataCubeEditorSortsPanelState.js.map +1 -0
  346. package/lib/stores/editor/DataCubeEditorState.d.ts +64 -0
  347. package/lib/stores/editor/DataCubeEditorState.d.ts.map +1 -0
  348. package/lib/stores/editor/DataCubeEditorState.js +155 -0
  349. package/lib/stores/editor/DataCubeEditorState.js.map +1 -0
  350. package/lib/stores/editor/DataCubeEditorVerticalPivotsPanelState.d.ts +35 -0
  351. package/lib/stores/editor/DataCubeEditorVerticalPivotsPanelState.d.ts.map +1 -0
  352. package/lib/stores/editor/DataCubeEditorVerticalPivotsPanelState.js +58 -0
  353. package/lib/stores/editor/DataCubeEditorVerticalPivotsPanelState.js.map +1 -0
  354. package/lib/stores/engine/DataCubeApplicationEngine.d.ts +55 -0
  355. package/lib/stores/engine/DataCubeApplicationEngine.d.ts.map +1 -0
  356. package/lib/stores/engine/DataCubeApplicationEngine.js +33 -0
  357. package/lib/stores/engine/DataCubeApplicationEngine.js.map +1 -0
  358. package/lib/stores/engine/DataCubeEngine.d.ts +124 -0
  359. package/lib/stores/engine/DataCubeEngine.d.ts.map +1 -0
  360. package/lib/stores/engine/DataCubeEngine.js +182 -0
  361. package/lib/stores/engine/DataCubeEngine.js.map +1 -0
  362. package/lib/stores/engine/DataCubeLayoutManagerState.d.ts +62 -0
  363. package/lib/stores/engine/DataCubeLayoutManagerState.d.ts.map +1 -0
  364. package/lib/stores/engine/DataCubeLayoutManagerState.js +133 -0
  365. package/lib/stores/engine/DataCubeLayoutManagerState.js.map +1 -0
  366. package/lib/stores/engine/DataCubeQuery.d.ts +40 -0
  367. package/lib/stores/engine/DataCubeQuery.d.ts.map +1 -0
  368. package/lib/stores/engine/DataCubeQuery.js +79 -0
  369. package/lib/stores/engine/DataCubeQuery.js.map +1 -0
  370. package/lib/stores/extend/DataCubeColumnEditorState.d.ts +61 -0
  371. package/lib/stores/extend/DataCubeColumnEditorState.d.ts.map +1 -0
  372. package/lib/stores/extend/DataCubeColumnEditorState.js +260 -0
  373. package/lib/stores/extend/DataCubeColumnEditorState.js.map +1 -0
  374. package/lib/stores/extend/DataCubeExtendManagerState.d.ts +46 -0
  375. package/lib/stores/extend/DataCubeExtendManagerState.d.ts.map +1 -0
  376. package/lib/stores/extend/DataCubeExtendManagerState.js +119 -0
  377. package/lib/stores/extend/DataCubeExtendManagerState.js.map +1 -0
  378. package/lib/stores/filter/DataCubeFilterEditorState.d.ts +61 -0
  379. package/lib/stores/filter/DataCubeFilterEditorState.d.ts.map +1 -0
  380. package/lib/stores/filter/DataCubeFilterEditorState.js +228 -0
  381. package/lib/stores/filter/DataCubeFilterEditorState.js.map +1 -0
  382. package/lib/stores/grid/DataCubeGridClientEngine.d.ts +93 -0
  383. package/lib/stores/grid/DataCubeGridClientEngine.d.ts.map +1 -0
  384. package/lib/stores/grid/DataCubeGridClientEngine.js +364 -0
  385. package/lib/stores/grid/DataCubeGridClientEngine.js.map +1 -0
  386. package/lib/stores/grid/DataCubeGridClientExportEngine.d.ts +31 -0
  387. package/lib/stores/grid/DataCubeGridClientExportEngine.d.ts.map +1 -0
  388. package/lib/stores/grid/DataCubeGridClientExportEngine.js +152 -0
  389. package/lib/stores/grid/DataCubeGridClientExportEngine.js.map +1 -0
  390. package/lib/stores/grid/DataCubeGridConfigurationBuilder.d.ts +180 -0
  391. package/lib/stores/grid/DataCubeGridConfigurationBuilder.d.ts.map +1 -0
  392. package/lib/stores/grid/DataCubeGridConfigurationBuilder.js +649 -0
  393. package/lib/stores/grid/DataCubeGridConfigurationBuilder.js.map +1 -0
  394. package/lib/stores/grid/DataCubeGridControllerState.d.ts +89 -0
  395. package/lib/stores/grid/DataCubeGridControllerState.d.ts.map +1 -0
  396. package/lib/stores/grid/DataCubeGridControllerState.js +342 -0
  397. package/lib/stores/grid/DataCubeGridControllerState.js.map +1 -0
  398. package/lib/stores/grid/DataCubeGridMenuBuilder.d.ts +19 -0
  399. package/lib/stores/grid/DataCubeGridMenuBuilder.d.ts.map +1 -0
  400. package/lib/stores/grid/DataCubeGridMenuBuilder.js +687 -0
  401. package/lib/stores/grid/DataCubeGridMenuBuilder.js.map +1 -0
  402. package/lib/stores/grid/DataCubeGridQueryBuilder.d.ts +23 -0
  403. package/lib/stores/grid/DataCubeGridQueryBuilder.d.ts.map +1 -0
  404. package/lib/stores/grid/DataCubeGridQueryBuilder.js +130 -0
  405. package/lib/stores/grid/DataCubeGridQueryBuilder.js.map +1 -0
  406. package/lib/stores/grid/DataCubeGridQuerySnapshotBuilder.d.ts +27 -0
  407. package/lib/stores/grid/DataCubeGridQuerySnapshotBuilder.d.ts.map +1 -0
  408. package/lib/stores/grid/DataCubeGridQuerySnapshotBuilder.js +66 -0
  409. package/lib/stores/grid/DataCubeGridQuerySnapshotBuilder.js.map +1 -0
  410. package/lib/stores/grid/DataCubeGridState.d.ts +55 -0
  411. package/lib/stores/grid/DataCubeGridState.d.ts.map +1 -0
  412. package/lib/stores/grid/DataCubeGridState.js +114 -0
  413. package/lib/stores/grid/DataCubeGridState.js.map +1 -0
  414. package/package.json +89 -0
  415. package/src/application/DataCubeDocumentation.ts +22 -0
  416. package/src/components/DataCube.tsx +157 -0
  417. package/src/components/DataCubeProvider.tsx +58 -0
  418. package/src/components/application/DataCubeAlert.tsx +173 -0
  419. package/src/components/application/DataCubeDocumentationPanel.tsx +42 -0
  420. package/src/components/application/DataCubeLayoutManager.tsx +190 -0
  421. package/src/components/application/DataCubeSettingsPanel.tsx +205 -0
  422. package/src/components/editor/DataCubeEditor.tsx +114 -0
  423. package/src/components/editor/DataCubeEditorColumnPropertiesPanel.tsx +1210 -0
  424. package/src/components/editor/DataCubeEditorColumnsPanel.tsx +121 -0
  425. package/src/components/editor/DataCubeEditorColumnsSelector.tsx +596 -0
  426. package/src/components/editor/DataCubeEditorGeneralPropertiesPanel.tsx +786 -0
  427. package/src/components/editor/DataCubeEditorHorizontalPivotsPanel.tsx +61 -0
  428. package/src/components/editor/DataCubeEditorSortsPanel.tsx +166 -0
  429. package/src/components/editor/DataCubeEditorVerticalPivotsPanel.tsx +43 -0
  430. package/src/components/extend/DataCubeColumnEditor.tsx +366 -0
  431. package/src/components/filter/DataCubeFilterEditor.tsx +907 -0
  432. package/src/components/grid/DataCubeGrid.tsx +384 -0
  433. package/src/components/grid/DataCubeGridShared.tsx +45 -0
  434. package/src/components/shared/DataCubeFormUtils.tsx +574 -0
  435. package/src/components/shared/DataCubePureCodeEditorUtils.tsx +91 -0
  436. package/src/index.tsx +22 -0
  437. package/src/stores/DataCubeState.tsx +100 -0
  438. package/src/stores/DataCubeViewState.ts +129 -0
  439. package/src/stores/core/DataCubeConfiguration.ts +240 -0
  440. package/src/stores/core/DataCubeConfigurationBuilder.ts +66 -0
  441. package/src/stores/core/DataCubeInfoState.ts +61 -0
  442. package/src/stores/core/DataCubeQueryBuilder.ts +296 -0
  443. package/src/stores/core/DataCubeQueryBuilderUtils.ts +514 -0
  444. package/src/stores/core/DataCubeQueryEngine.ts +327 -0
  445. package/src/stores/core/DataCubeQuerySnapshot.ts +191 -0
  446. package/src/stores/core/DataCubeQuerySnapshotBuilder.ts +406 -0
  447. package/src/stores/core/DataCubeQuerySnapshotBuilderUtils.ts +197 -0
  448. package/src/stores/core/DataCubeQuerySnapshotManager.ts +148 -0
  449. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation.ts +47 -0
  450. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Average.tsx +52 -0
  451. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Count.tsx +61 -0
  452. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__First.tsx +57 -0
  453. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__JoinStrings.tsx +81 -0
  454. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Last.tsx +57 -0
  455. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Max.tsx +52 -0
  456. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Min.tsx +52 -0
  457. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevPopulation.tsx +55 -0
  458. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__StdDevSample.tsx +52 -0
  459. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__Sum.tsx +52 -0
  460. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__UniqueValue.tsx +57 -0
  461. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__VariancePopulation.tsx +52 -0
  462. package/src/stores/core/aggregation/DataCubeQueryAggregateOperation__VarianceSample.tsx +52 -0
  463. package/src/stores/core/filter/DataCubeQueryFilterEditorState.ts +231 -0
  464. package/src/stores/core/filter/DataCubeQueryFilterOperation.ts +96 -0
  465. package/src/stores/core/filter/DataCubeQueryFilterOperation__Contain.tsx +88 -0
  466. package/src/stores/core/filter/DataCubeQueryFilterOperation__ContainCaseInsensitive.tsx +94 -0
  467. package/src/stores/core/filter/DataCubeQueryFilterOperation__EndWith.tsx +88 -0
  468. package/src/stores/core/filter/DataCubeQueryFilterOperation__EndWithCaseInsensitive.tsx +94 -0
  469. package/src/stores/core/filter/DataCubeQueryFilterOperation__Equal.tsx +170 -0
  470. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitive.tsx +94 -0
  471. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualCaseInsensitiveColumn.tsx +92 -0
  472. package/src/stores/core/filter/DataCubeQueryFilterOperation__EqualColumn.tsx +93 -0
  473. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThan.tsx +96 -0
  474. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanColumn.tsx +92 -0
  475. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqual.tsx +96 -0
  476. package/src/stores/core/filter/DataCubeQueryFilterOperation__GreaterThanOrEqualColumn.tsx +92 -0
  477. package/src/stores/core/filter/DataCubeQueryFilterOperation__IsNotNull.tsx +92 -0
  478. package/src/stores/core/filter/DataCubeQueryFilterOperation__IsNull.tsx +89 -0
  479. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThan.tsx +96 -0
  480. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanColumn.tsx +92 -0
  481. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqual.tsx +96 -0
  482. package/src/stores/core/filter/DataCubeQueryFilterOperation__LessThanOrEqualColumn.tsx +92 -0
  483. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotContain.tsx +91 -0
  484. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEndWith.tsx +91 -0
  485. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqual.tsx +101 -0
  486. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitive.tsx +97 -0
  487. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualCaseInsensitiveColumn.tsx +95 -0
  488. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotEqualColumn.tsx +96 -0
  489. package/src/stores/core/filter/DataCubeQueryFilterOperation__NotStartWith.tsx +91 -0
  490. package/src/stores/core/filter/DataCubeQueryFilterOperation__StartWith.tsx +88 -0
  491. package/src/stores/core/filter/DataCubeQueryFilterOperation__StartWithCaseInsensitive.tsx +94 -0
  492. package/src/stores/editor/DataCubeEditorColumnPropertiesPanelState.ts +111 -0
  493. package/src/stores/editor/DataCubeEditorColumnsPanelState.ts +198 -0
  494. package/src/stores/editor/DataCubeEditorColumnsSelectorState.ts +115 -0
  495. package/src/stores/editor/DataCubeEditorGeneralPropertiesPanelState.ts +87 -0
  496. package/src/stores/editor/DataCubeEditorHorizontalPivotsPanelState.ts +132 -0
  497. package/src/stores/editor/DataCubeEditorMutableConfiguration.ts +677 -0
  498. package/src/stores/editor/DataCubeEditorPanelState.ts +37 -0
  499. package/src/stores/editor/DataCubeEditorSortsPanelState.ts +147 -0
  500. package/src/stores/editor/DataCubeEditorState.tsx +206 -0
  501. package/src/stores/editor/DataCubeEditorVerticalPivotsPanelState.ts +110 -0
  502. package/src/stores/engine/DataCubeApplicationEngine.tsx +120 -0
  503. package/src/stores/engine/DataCubeEngine.ts +276 -0
  504. package/src/stores/engine/DataCubeLayoutManagerState.ts +184 -0
  505. package/src/stores/engine/DataCubeQuery.ts +130 -0
  506. package/src/stores/extend/DataCubeColumnEditorState.tsx +365 -0
  507. package/src/stores/extend/DataCubeExtendManagerState.tsx +175 -0
  508. package/src/stores/filter/DataCubeFilterEditorState.tsx +327 -0
  509. package/src/stores/grid/DataCubeGridClientEngine.ts +506 -0
  510. package/src/stores/grid/DataCubeGridClientExportEngine.ts +173 -0
  511. package/src/stores/grid/DataCubeGridConfigurationBuilder.tsx +940 -0
  512. package/src/stores/grid/DataCubeGridControllerState.ts +493 -0
  513. package/src/stores/grid/DataCubeGridMenuBuilder.tsx +861 -0
  514. package/src/stores/grid/DataCubeGridQueryBuilder.ts +195 -0
  515. package/src/stores/grid/DataCubeGridQuerySnapshotBuilder.ts +125 -0
  516. package/src/stores/grid/DataCubeGridState.ts +155 -0
  517. package/tsconfig.json +164 -0
@@ -0,0 +1,1210 @@
1
+ /**
2
+ * Copyright (c) 2020-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { cn, DataCubeIcon, useDropdownMenu } from '@finos/legend-art';
18
+ import { observer } from 'mobx-react-lite';
19
+ import {
20
+ FormBadge_Advanced,
21
+ FormCheckbox,
22
+ FormColorPickerButton,
23
+ FormDropdownMenu,
24
+ FormDropdownMenuItem,
25
+ FormDropdownMenuItemSeparator,
26
+ FormDropdownMenuTrigger,
27
+ FormNumberInput,
28
+ FormTextInput,
29
+ FormDocumentation,
30
+ } from '../shared/DataCubeFormUtils.js';
31
+ import {
32
+ DataCubeColumnDataType,
33
+ DataCubeColumnKind,
34
+ DataCubeColumnPinPlacement,
35
+ DataCubeFont,
36
+ DataCubeFontCase,
37
+ DataCubeFontFormatUnderlineVariant,
38
+ DataCubeFontTextAlignment,
39
+ DataCubeNumberScale,
40
+ DEFAULT_COLUMN_MAX_WIDTH,
41
+ DEFAULT_COLUMN_MIN_WIDTH,
42
+ DEFAULT_COLUMN_WIDTH,
43
+ DEFAULT_URL_LABEL_QUERY_PARAM,
44
+ } from '../../stores/core/DataCubeQueryEngine.js';
45
+ import { DocumentationKey } from '../../application/DataCubeDocumentation.js';
46
+ import type { DataCubeViewState } from '../../stores/DataCubeViewState.js';
47
+ import { _sortByColName } from '../../stores/core/DataCubeQuerySnapshot.js';
48
+
49
+ export const DataCubeEditorColumnPropertiesPanel = observer(
50
+ (props: { view: DataCubeViewState }) => {
51
+ const { view } = props;
52
+ const panel = view.editor.columnProperties;
53
+ const gridConfiguration = view.editor.generalProperties.configuration;
54
+ const selectedColumn = panel.selectedColumn;
55
+ const [
56
+ openColumnsDropdown,
57
+ closeColumnsDropdown,
58
+ columnsDropdownProps,
59
+ columnsDropPropsOpen,
60
+ ] = useDropdownMenu();
61
+ const [
62
+ openKindDropdown,
63
+ closeKindDropdown,
64
+ kindDropdownProps,
65
+ kindDropdownPropsOpen,
66
+ ] = useDropdownMenu();
67
+ const [
68
+ openAggregationTypeDropdown,
69
+ closeAggregationTypeDropdown,
70
+ aggregationTypeDropdownProps,
71
+ aggregationTypeDropdownPropsOpen,
72
+ ] = useDropdownMenu();
73
+ const [
74
+ openNumberScaleDropdown,
75
+ closeNumberScaleDropdown,
76
+ numberScaleDropdownProps,
77
+ numberScaleDropdownPropsOpen,
78
+ ] = useDropdownMenu();
79
+ const [
80
+ openColumnPinDropdown,
81
+ closeColumnPinDropdown,
82
+ columnPinDropdownProps,
83
+ columnPinDropdownPropsOpen,
84
+ ] = useDropdownMenu();
85
+ const [
86
+ openFontFamilyDropdown,
87
+ closeFontFamilyDropdown,
88
+ fontFamilyDropdownProps,
89
+ fontFamilyDropdownPropsOpen,
90
+ ] = useDropdownMenu();
91
+ const [
92
+ openFontSizeDropdown,
93
+ closeFontSizeDropdown,
94
+ openFontSizeDropdownProps,
95
+ openFontSizeDropdownPropsOpen,
96
+ ] = useDropdownMenu();
97
+ const [
98
+ openFontFormatUnderlineVariantDropdown,
99
+ closeFontFormatUnderlineVariantDropdown,
100
+ fontFormatUnderlineVariantDropdownProps,
101
+ ] = useDropdownMenu();
102
+ const [openFontCaseDropdown, closeFontCaseDropdown, fontCaseDropdownProps] =
103
+ useDropdownMenu();
104
+
105
+ return (
106
+ <div className="h-full w-full select-none p-2">
107
+ <div className="flex h-6 justify-between">
108
+ <div className="flex h-full">
109
+ <div className="relative flex h-6 items-center text-xl font-medium">
110
+ <DataCubeIcon.TableColumn />
111
+ <DataCubeIcon.TableColumnOptions__Settings className="absolute bottom-1 right-0 bg-white text-xs" />
112
+ </div>
113
+ <div className="ml-1 flex h-6 items-center text-xl font-medium">
114
+ Column Properties
115
+ </div>
116
+ </div>
117
+ <div className="flex h-full items-center pr-2">
118
+ <FormCheckbox
119
+ label="Show advanced settings?"
120
+ checked={panel.showAdvancedSettings}
121
+ onChange={() =>
122
+ panel.setShowAdvancedSettings(!panel.showAdvancedSettings)
123
+ }
124
+ />
125
+ <FormBadge_Advanced />
126
+ </div>
127
+ </div>
128
+ <div className="flex h-[calc(100%_-_24px)] w-full">
129
+ <div className="h-full w-full py-2">
130
+ <div className="flex h-6 w-full items-center">
131
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
132
+ Choose Column:
133
+ </div>
134
+ <FormDropdownMenuTrigger
135
+ className="w-80"
136
+ onClick={openColumnsDropdown}
137
+ open={columnsDropPropsOpen}
138
+ >
139
+ <div className="flex h-full w-full items-center">
140
+ <div className="overflow-hidden overflow-ellipsis whitespace-nowrap">
141
+ {selectedColumn?.name ?? '(None)'}
142
+ </div>
143
+ {selectedColumn && (
144
+ <>
145
+ <div className="ml-1.5 mr-0.5 flex h-3.5 w-12 flex-shrink-0 items-center justify-center rounded-sm border border-neutral-300 bg-neutral-100 text-xs font-medium uppercase text-neutral-600">
146
+ {selectedColumn.dataType}
147
+ </div>
148
+ {Boolean(
149
+ panel.editor.leafExtendColumns.find(
150
+ (col) => col.name === selectedColumn.name,
151
+ ),
152
+ ) && (
153
+ <div className="mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600">
154
+ {`Extended (Leaf Level)`}
155
+ </div>
156
+ )}
157
+ {Boolean(
158
+ panel.editor.groupExtendColumns.find(
159
+ (col) => col.name === selectedColumn.name,
160
+ ),
161
+ ) && (
162
+ <div className="mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600">
163
+ {`Extended (Group Level)`}
164
+ </div>
165
+ )}
166
+ </>
167
+ )}
168
+ </div>
169
+ </FormDropdownMenuTrigger>
170
+ <FormDropdownMenu className="w-80" {...columnsDropdownProps}>
171
+ {panel.columns
172
+ .slice()
173
+ .sort(_sortByColName)
174
+ .map((column) => (
175
+ <FormDropdownMenuItem
176
+ key={column.name}
177
+ onClick={() => {
178
+ panel.setSelectedColumnName(column.name);
179
+ closeColumnsDropdown();
180
+ }}
181
+ autoFocus={column.name === selectedColumn?.name}
182
+ >
183
+ <div className="overflow-hidden overflow-ellipsis whitespace-nowrap">
184
+ {column.name}
185
+ </div>
186
+ <div className="ml-1.5 mr-0.5 flex h-3.5 w-12 flex-shrink-0 items-center justify-center rounded-sm border border-neutral-300 bg-neutral-100 text-xs font-medium uppercase text-neutral-600">
187
+ {column.dataType}
188
+ </div>
189
+ {Boolean(
190
+ panel.editor.leafExtendColumns.find(
191
+ (col) => col.name === column.name,
192
+ ),
193
+ ) && (
194
+ <div className="mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600">
195
+ {`Extended (Leaf Level)`}
196
+ </div>
197
+ )}
198
+ {Boolean(
199
+ panel.editor.groupExtendColumns.find(
200
+ (col) => col.name === column.name,
201
+ ),
202
+ ) && (
203
+ <div className="mr-0.5 flex h-3.5 flex-shrink-0 items-center rounded-sm border border-neutral-300 bg-neutral-100 px-1 text-xs font-medium uppercase text-neutral-600">
204
+ {`Extended (Group Level)`}
205
+ </div>
206
+ )}
207
+ </FormDropdownMenuItem>
208
+ ))}
209
+ </FormDropdownMenu>
210
+ {panel.showAdvancedSettings && selectedColumn && (
211
+ <>
212
+ <div className="mx-2 h-[1px] w-4 flex-shrink-0 bg-neutral-400" />
213
+ <div className="flex h-6 items-center">
214
+ <div className="flex h-full flex-shrink-0 items-center text-sm">
215
+ Column Kind:
216
+ <FormDocumentation
217
+ className="ml-1"
218
+ documentationKey={
219
+ DocumentationKey.DATA_CUBE_COLUMN_KINDS
220
+ }
221
+ />
222
+ </div>
223
+ <FormDropdownMenuTrigger
224
+ className="ml-1.5 w-20"
225
+ onClick={openKindDropdown}
226
+ open={kindDropdownPropsOpen}
227
+ // disallow changing the column kind if the column is being used as pivot column
228
+ disabled={Boolean(
229
+ panel.editor.verticalPivots.selector.selectedColumns.find(
230
+ (col) => col.name === selectedColumn.name,
231
+ ) ??
232
+ panel.editor.horizontalPivots.selector.selectedColumns.find(
233
+ (col) => col.name === selectedColumn.name,
234
+ ),
235
+ )}
236
+ >
237
+ {selectedColumn.kind}
238
+ </FormDropdownMenuTrigger>
239
+ <FormDropdownMenu className="w-20" {...kindDropdownProps}>
240
+ {[
241
+ DataCubeColumnKind.DIMENSION,
242
+ DataCubeColumnKind.MEASURE,
243
+ ].map((kind) => (
244
+ <FormDropdownMenuItem
245
+ key={kind}
246
+ onClick={() => {
247
+ if (kind !== selectedColumn.kind) {
248
+ selectedColumn.setKind(kind);
249
+ selectedColumn.setExcludedFromHorizontalPivot(
250
+ kind === DataCubeColumnKind.DIMENSION,
251
+ );
252
+ }
253
+ closeKindDropdown();
254
+ }}
255
+ autoFocus={kind === selectedColumn.kind}
256
+ >
257
+ {kind}
258
+ </FormDropdownMenuItem>
259
+ ))}
260
+ </FormDropdownMenu>
261
+ <FormBadge_Advanced />
262
+ </div>
263
+ </>
264
+ )}
265
+ </div>
266
+
267
+ <div className="-ml-2 mb-2 mt-3 h-[1px] w-[calc(100%_+_16px)] bg-neutral-200" />
268
+
269
+ {selectedColumn && (
270
+ <>
271
+ <div className="mt-2 flex h-5 w-full items-center">
272
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
273
+ Display Name:
274
+ </div>
275
+ <FormTextInput
276
+ className="w-80"
277
+ value={selectedColumn.displayName ?? ''}
278
+ onChange={(event) => {
279
+ const value = event.target.value.trim();
280
+ selectedColumn.setDisplayName(
281
+ value !== '' ? value : undefined,
282
+ );
283
+ }}
284
+ />
285
+ </div>
286
+
287
+ <div className="mt-2 flex h-5 w-full items-center">
288
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
289
+ Aggregation:
290
+ </div>
291
+ <FormDropdownMenuTrigger
292
+ className="w-32"
293
+ onClick={openAggregationTypeDropdown}
294
+ disabled={
295
+ selectedColumn.kind === DataCubeColumnKind.DIMENSION
296
+ }
297
+ open={aggregationTypeDropdownPropsOpen}
298
+ >
299
+ {selectedColumn.aggregateOperation.operator}
300
+ </FormDropdownMenuTrigger>
301
+ <FormDropdownMenu
302
+ className="w-32"
303
+ {...aggregationTypeDropdownProps}
304
+ >
305
+ {panel.view.engine.aggregateOperations
306
+ .filter((op) => op.isCompatibleWithColumn(selectedColumn))
307
+ .map((op) => (
308
+ <FormDropdownMenuItem
309
+ key={op.operator}
310
+ onClick={() => {
311
+ selectedColumn.setAggregateOperation(op);
312
+ closeAggregationTypeDropdown();
313
+ }}
314
+ autoFocus={op === selectedColumn.aggregateOperation}
315
+ >
316
+ {op.label}
317
+ </FormDropdownMenuItem>
318
+ ))}
319
+ </FormDropdownMenu>
320
+
321
+ <FormCheckbox
322
+ className="ml-3"
323
+ label="Exclude from H-Pivot"
324
+ checked={selectedColumn.excludedFromHorizontalPivot}
325
+ onChange={() =>
326
+ selectedColumn.setExcludedFromHorizontalPivot(
327
+ !selectedColumn.excludedFromHorizontalPivot,
328
+ )
329
+ }
330
+ disabled={
331
+ selectedColumn.kind === DataCubeColumnKind.DIMENSION
332
+ }
333
+ />
334
+ </div>
335
+
336
+ {selectedColumn.dataType === DataCubeColumnDataType.NUMBER && (
337
+ <>
338
+ <div className="mt-2 flex h-5 w-full items-center">
339
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
340
+ Number Format:
341
+ </div>
342
+ <FormNumberInput
343
+ className="w-16 text-sm"
344
+ min={0}
345
+ step={1}
346
+ value={selectedColumn.decimals ?? 0}
347
+ setValue={(value) => {
348
+ selectedColumn.setDecimals(value);
349
+ }}
350
+ />
351
+ <div className="ml-1 flex-shrink-0 text-sm">
352
+ Decimal places
353
+ </div>
354
+ <FormCheckbox
355
+ className="ml-3"
356
+ label="Display commas"
357
+ checked={selectedColumn.displayCommas}
358
+ onChange={() =>
359
+ selectedColumn.setDisplayCommas(
360
+ !selectedColumn.displayCommas,
361
+ )
362
+ }
363
+ />
364
+ <FormCheckbox
365
+ className="ml-3"
366
+ label="Negative number in parens"
367
+ checked={selectedColumn.negativeNumberInParens}
368
+ onChange={() =>
369
+ selectedColumn.setNegativeNumberInParens(
370
+ !selectedColumn.negativeNumberInParens,
371
+ )
372
+ }
373
+ />
374
+ </div>
375
+
376
+ <div className="mt-2 flex h-5 w-full items-center">
377
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
378
+ Number Scale:
379
+ </div>
380
+ <FormDropdownMenuTrigger
381
+ className="w-32"
382
+ onClick={openNumberScaleDropdown}
383
+ open={numberScaleDropdownPropsOpen}
384
+ >
385
+ {selectedColumn.numberScale ?? '(None)'}
386
+ </FormDropdownMenuTrigger>
387
+ <FormDropdownMenu
388
+ className="w-32"
389
+ {...numberScaleDropdownProps}
390
+ >
391
+ {[
392
+ undefined,
393
+ DataCubeNumberScale.PERCENT,
394
+ DataCubeNumberScale.BASIS_POINT,
395
+ DataCubeNumberScale.THOUSANDS,
396
+ DataCubeNumberScale.MILLIONS,
397
+ DataCubeNumberScale.BILLIONS,
398
+ DataCubeNumberScale.TRILLIONS,
399
+ DataCubeNumberScale.AUTO,
400
+ ].map((scale) => (
401
+ <FormDropdownMenuItem
402
+ key={scale ?? ''}
403
+ onClick={() => {
404
+ selectedColumn.setNumberScale(scale);
405
+ closeNumberScaleDropdown();
406
+ }}
407
+ autoFocus={scale === selectedColumn.numberScale}
408
+ >
409
+ {scale ?? '(None)'}
410
+ </FormDropdownMenuItem>
411
+ ))}
412
+ </FormDropdownMenu>
413
+ </div>
414
+ </>
415
+ )}
416
+
417
+ {selectedColumn.dataType === DataCubeColumnDataType.TEXT && (
418
+ <>
419
+ <div className="mt-2 flex h-5 w-full items-center">
420
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
421
+ Dislay as Link?
422
+ <FormDocumentation
423
+ className="ml-1"
424
+ documentationKey={
425
+ DocumentationKey.DATA_CUBE_COLUMN_DISPLAY_AS_LINK
426
+ }
427
+ />
428
+ </div>
429
+ <FormCheckbox
430
+ checked={selectedColumn.displayAsLink}
431
+ onChange={() =>
432
+ selectedColumn.setDisplayAsLink(
433
+ !selectedColumn.displayAsLink,
434
+ )
435
+ }
436
+ />
437
+ <div className="ml-1 h-[1px] w-2 flex-shrink-0 bg-neutral-400" />
438
+ <div className="ml-2 mr-1.5 flex h-full flex-shrink-0 items-center text-sm">
439
+ Use Parameter in Link as Label:
440
+ </div>
441
+ <FormTextInput
442
+ className="w-48"
443
+ placeholder={DEFAULT_URL_LABEL_QUERY_PARAM}
444
+ value={selectedColumn.linkLabelParameter ?? ''}
445
+ onChange={(event) => {
446
+ const value = event.target.value.trim();
447
+ selectedColumn.setLinkLabelParameter(
448
+ value !== '' ? value : undefined,
449
+ );
450
+ }}
451
+ />
452
+ </div>
453
+ </>
454
+ )}
455
+
456
+ <div className="mt-2 flex h-5 w-full items-center">
457
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
458
+ {`Missing Value Format:`}
459
+ <FormDocumentation
460
+ className="ml-1"
461
+ documentationKey={
462
+ DocumentationKey.DATA_CUBE_COLUMN_MISSING_VALUE_FORMAT
463
+ }
464
+ />
465
+ </div>
466
+ <FormTextInput
467
+ className="w-16"
468
+ value={selectedColumn.missingValueDisplayText ?? ''}
469
+ onChange={(event) => {
470
+ const value = event.target.value.trim();
471
+ selectedColumn.setMissingValueDisplayText(
472
+ value !== '' ? value : undefined,
473
+ );
474
+ }}
475
+ placeholder="(empty)"
476
+ />
477
+ </div>
478
+
479
+ <div className="mt-2 flex h-5 w-full items-center">
480
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
481
+ Visibility:
482
+ </div>
483
+ <FormCheckbox
484
+ label="Blur content"
485
+ checked={selectedColumn.blur}
486
+ onChange={() =>
487
+ selectedColumn.setBlur(!selectedColumn.blur)
488
+ }
489
+ disabled={selectedColumn.hideFromView}
490
+ />
491
+ <FormCheckbox
492
+ className="ml-3"
493
+ label="Hide from view"
494
+ checked={selectedColumn.hideFromView}
495
+ onChange={() =>
496
+ selectedColumn.setHideFromView(
497
+ !selectedColumn.hideFromView,
498
+ )
499
+ }
500
+ />
501
+ </div>
502
+
503
+ <div className="mt-2 flex h-5 w-full items-center">
504
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
505
+ Pin:
506
+ </div>
507
+ <FormDropdownMenuTrigger
508
+ className="w-16"
509
+ onClick={openColumnPinDropdown}
510
+ open={columnPinDropdownPropsOpen}
511
+ >
512
+ {selectedColumn.pinned ?? '(None)'}
513
+ </FormDropdownMenuTrigger>
514
+ <FormDropdownMenu
515
+ className="w-16"
516
+ {...columnPinDropdownProps}
517
+ >
518
+ {[
519
+ undefined,
520
+ DataCubeColumnPinPlacement.LEFT,
521
+ DataCubeColumnPinPlacement.RIGHT,
522
+ ].map((placement) => (
523
+ <FormDropdownMenuItem
524
+ key={placement ?? ''}
525
+ onClick={() => {
526
+ selectedColumn.setPinned(placement);
527
+ closeColumnPinDropdown();
528
+ }}
529
+ autoFocus={placement === selectedColumn.pinned}
530
+ >
531
+ {placement ?? '(None)'}
532
+ </FormDropdownMenuItem>
533
+ ))}
534
+ </FormDropdownMenu>
535
+ </div>
536
+
537
+ <div className="mt-1.5 flex h-6 w-full items-center">
538
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
539
+ Width:
540
+ </div>
541
+ <FormCheckbox
542
+ label="(Any)"
543
+ checked={
544
+ selectedColumn.fixedWidth === undefined &&
545
+ selectedColumn.minWidth === undefined &&
546
+ selectedColumn.maxWidth === undefined
547
+ }
548
+ onChange={() => {
549
+ if (
550
+ selectedColumn.fixedWidth === undefined &&
551
+ selectedColumn.minWidth === undefined &&
552
+ selectedColumn.maxWidth === undefined
553
+ ) {
554
+ selectedColumn.setFixedWidth(DEFAULT_COLUMN_WIDTH);
555
+ selectedColumn.setMinWidth(undefined);
556
+ selectedColumn.setMaxWidth(undefined);
557
+ } else {
558
+ selectedColumn.setFixedWidth(undefined);
559
+ selectedColumn.setMinWidth(undefined);
560
+ selectedColumn.setMaxWidth(undefined);
561
+ }
562
+ }}
563
+ />
564
+
565
+ <FormCheckbox
566
+ className="ml-3"
567
+ label="Fixed"
568
+ checked={selectedColumn.fixedWidth !== undefined}
569
+ onChange={() => {
570
+ selectedColumn.setFixedWidth(
571
+ selectedColumn.fixedWidth !== undefined
572
+ ? undefined
573
+ : DEFAULT_COLUMN_WIDTH,
574
+ );
575
+ selectedColumn.setMinWidth(undefined);
576
+ selectedColumn.setMaxWidth(undefined);
577
+ }}
578
+ />
579
+ <div className="ml-1 h-[1px] w-2 flex-shrink-0 bg-neutral-400" />
580
+ <FormNumberInput
581
+ className="ml-1 w-16 text-sm"
582
+ min={0}
583
+ step={50}
584
+ defaultValue={undefined}
585
+ isValid={(value) => value !== undefined && value > 0}
586
+ value={selectedColumn.fixedWidth}
587
+ setValue={(value) => {
588
+ selectedColumn.setFixedWidth(value);
589
+ }}
590
+ disabled={
591
+ selectedColumn.minWidth !== undefined ||
592
+ selectedColumn.maxWidth !== undefined
593
+ }
594
+ />
595
+
596
+ <FormCheckbox
597
+ className="ml-3"
598
+ label="In range"
599
+ checked={
600
+ selectedColumn.minWidth !== undefined ||
601
+ selectedColumn.maxWidth !== undefined
602
+ }
603
+ onChange={() => {
604
+ if (
605
+ selectedColumn.minWidth === undefined &&
606
+ selectedColumn.maxWidth === undefined
607
+ ) {
608
+ selectedColumn.setMinWidth(DEFAULT_COLUMN_MIN_WIDTH);
609
+ selectedColumn.setMaxWidth(DEFAULT_COLUMN_MAX_WIDTH);
610
+ selectedColumn.setFixedWidth(undefined);
611
+ } else {
612
+ selectedColumn.setMinWidth(undefined);
613
+ selectedColumn.setMaxWidth(undefined);
614
+ selectedColumn.setFixedWidth(undefined);
615
+ }
616
+ }}
617
+ />
618
+ <div className="ml-1 h-[1px] w-2 flex-shrink-0 bg-neutral-400" />
619
+ <FormNumberInput
620
+ className="ml-1 w-16 text-sm"
621
+ min={0}
622
+ step={50}
623
+ defaultValue={undefined}
624
+ isValid={(value) => value !== undefined && value > 0}
625
+ value={selectedColumn.minWidth}
626
+ setValue={(value) => {
627
+ selectedColumn.setMinWidth(value);
628
+ }}
629
+ disabled={selectedColumn.fixedWidth !== undefined}
630
+ />
631
+ <div className="ml-1 h-[1px] w-1 flex-shrink-0 bg-neutral-400" />
632
+ <FormNumberInput
633
+ className="ml-1 w-16 text-sm"
634
+ min={selectedColumn.minWidth ?? 0}
635
+ step={50}
636
+ defaultValue={undefined}
637
+ isValid={(value) =>
638
+ value !== undefined &&
639
+ value >= (selectedColumn.minWidth ?? 0)
640
+ }
641
+ value={selectedColumn.maxWidth}
642
+ setValue={(value) => {
643
+ selectedColumn.setMaxWidth(value);
644
+ }}
645
+ disabled={selectedColumn.fixedWidth !== undefined}
646
+ />
647
+ </div>
648
+
649
+ <div className="my-2 h-[1px] w-full bg-neutral-200" />
650
+
651
+ <div className="mt-2 flex h-5 w-full items-center">
652
+ <div className="flex h-full w-32 flex-shrink-0 items-center text-sm">
653
+ Font:
654
+ </div>
655
+ <FormDropdownMenuTrigger
656
+ className="w-28"
657
+ onClick={openFontFamilyDropdown}
658
+ open={fontFamilyDropdownPropsOpen}
659
+ >
660
+ {selectedColumn.fontFamily ?? gridConfiguration.fontFamily}
661
+ </FormDropdownMenuTrigger>
662
+ <FormDropdownMenu
663
+ className="w-28"
664
+ {...fontFamilyDropdownProps}
665
+ >
666
+ {[
667
+ DataCubeFont.ARIAL,
668
+ DataCubeFont.ROBOTO,
669
+ DataCubeFont.ROBOTO_CONDENSED,
670
+ ].map((font) => (
671
+ <FormDropdownMenuItem
672
+ key={font}
673
+ onClick={() => {
674
+ selectedColumn.setFontFamily(font);
675
+ closeFontFamilyDropdown();
676
+ }}
677
+ autoFocus={
678
+ font ===
679
+ (selectedColumn.fontFamily ??
680
+ gridConfiguration.fontFamily)
681
+ }
682
+ >
683
+ {font}
684
+ </FormDropdownMenuItem>
685
+ ))}
686
+ <FormDropdownMenuItemSeparator />
687
+ {[
688
+ DataCubeFont.GEORGIA,
689
+ DataCubeFont.ROBOTO_SERIF,
690
+ DataCubeFont.TIMES_NEW_ROMAN,
691
+ ].map((font) => (
692
+ <FormDropdownMenuItem
693
+ key={font}
694
+ onClick={() => {
695
+ selectedColumn.setFontFamily(font);
696
+ closeFontFamilyDropdown();
697
+ }}
698
+ autoFocus={
699
+ font ===
700
+ (selectedColumn.fontFamily ??
701
+ gridConfiguration.fontFamily)
702
+ }
703
+ >
704
+ {font}
705
+ </FormDropdownMenuItem>
706
+ ))}
707
+ <FormDropdownMenuItemSeparator />
708
+ {[
709
+ DataCubeFont.JERBRAINS_MONO,
710
+ DataCubeFont.ROBOTO_MONO,
711
+ DataCubeFont.UBUNTU_MONO,
712
+ ].map((font) => (
713
+ <FormDropdownMenuItem
714
+ key={font}
715
+ onClick={() => {
716
+ selectedColumn.setFontFamily(font);
717
+ closeFontFamilyDropdown();
718
+ }}
719
+ autoFocus={
720
+ font ===
721
+ (selectedColumn.fontFamily ??
722
+ gridConfiguration.fontFamily)
723
+ }
724
+ >
725
+ {font}
726
+ </FormDropdownMenuItem>
727
+ ))}
728
+ </FormDropdownMenu>
729
+
730
+ <FormDropdownMenuTrigger
731
+ className="ml-1 w-10"
732
+ onClick={openFontSizeDropdown}
733
+ open={openFontSizeDropdownPropsOpen}
734
+ >
735
+ {selectedColumn.fontSize ?? gridConfiguration.fontSize}
736
+ </FormDropdownMenuTrigger>
737
+ <FormDropdownMenu
738
+ className="w-10"
739
+ {...openFontSizeDropdownProps}
740
+ >
741
+ {[
742
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26,
743
+ 28, 32, 36, 48, 72,
744
+ ].map((size) => (
745
+ <FormDropdownMenuItem
746
+ key={size}
747
+ onClick={() => {
748
+ selectedColumn.setFontSize(size);
749
+ closeFontSizeDropdown();
750
+ }}
751
+ autoFocus={
752
+ size ===
753
+ (selectedColumn.fontSize ??
754
+ gridConfiguration.fontSize)
755
+ }
756
+ >
757
+ {size}
758
+ </FormDropdownMenuItem>
759
+ ))}
760
+ </FormDropdownMenu>
761
+
762
+ <div className="relative ml-2 flex h-5">
763
+ <button
764
+ title="Bold"
765
+ className={cn(
766
+ 'relative flex h-5 w-5 items-center justify-center rounded-bl-sm rounded-tl-sm border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
767
+ {
768
+ 'bg-neutral-200':
769
+ selectedColumn.fontBold ??
770
+ gridConfiguration.fontBold,
771
+ },
772
+ )}
773
+ onClick={() =>
774
+ selectedColumn.setFontBold(
775
+ !(
776
+ selectedColumn.fontBold ??
777
+ gridConfiguration.fontBold
778
+ ),
779
+ )
780
+ }
781
+ >
782
+ <DataCubeIcon.FontBold />
783
+ </button>
784
+ <button
785
+ title="Italic"
786
+ className={cn(
787
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
788
+ {
789
+ 'bg-neutral-200':
790
+ selectedColumn.fontItalic ??
791
+ gridConfiguration.fontItalic,
792
+ },
793
+ )}
794
+ onClick={() =>
795
+ selectedColumn.setFontItalic(
796
+ !(
797
+ selectedColumn.fontItalic ??
798
+ gridConfiguration.fontItalic
799
+ ),
800
+ )
801
+ }
802
+ >
803
+ <DataCubeIcon.FontItalic />
804
+ </button>
805
+ <button
806
+ title={`Underline${(selectedColumn.fontUnderline ?? gridConfiguration.fontUnderline) ? ` (${selectedColumn.fontUnderline ?? gridConfiguration.fontUnderline})` : ''}`}
807
+ className={cn(
808
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center border border-r-0 border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
809
+ {
810
+ 'bg-neutral-200':
811
+ (selectedColumn.fontUnderline ??
812
+ gridConfiguration.fontUnderline) !== undefined,
813
+ },
814
+ )}
815
+ onClick={() => {
816
+ if (
817
+ (selectedColumn.fontUnderline ??
818
+ gridConfiguration.fontUnderline) === undefined
819
+ ) {
820
+ selectedColumn.setFontUnderline(
821
+ DataCubeFontFormatUnderlineVariant.SOLID,
822
+ );
823
+ selectedColumn.setFontStrikethrough(false);
824
+ } else {
825
+ selectedColumn.setFontUnderline(undefined);
826
+ }
827
+ }}
828
+ >
829
+ <DataCubeIcon.FontUnderline />
830
+ </button>
831
+ <button
832
+ className="text-2xs relative -ml-[1px] flex h-5 w-2.5 items-center justify-center border border-l-0 border-neutral-400 bg-neutral-50 p-0 text-neutral-600 focus:z-[1]"
833
+ onClick={openFontFormatUnderlineVariantDropdown}
834
+ >
835
+ <div
836
+ className={cn('h-4 w-[0.5px] bg-neutral-200', {
837
+ 'opacity-0':
838
+ (selectedColumn.fontUnderline ??
839
+ gridConfiguration.fontUnderline) !== undefined,
840
+ })}
841
+ />
842
+ <DataCubeIcon.CaretDown />
843
+ </button>
844
+ <FormDropdownMenu
845
+ className="w-14"
846
+ {...fontFormatUnderlineVariantDropdownProps}
847
+ >
848
+ {[
849
+ DataCubeFontFormatUnderlineVariant.SOLID,
850
+ DataCubeFontFormatUnderlineVariant.DASHED,
851
+ DataCubeFontFormatUnderlineVariant.DOTTED,
852
+ DataCubeFontFormatUnderlineVariant.DOUBLE,
853
+ DataCubeFontFormatUnderlineVariant.WAVY,
854
+ ].map((variant) => (
855
+ <FormDropdownMenuItem
856
+ className="relative"
857
+ key={variant}
858
+ onClick={() => {
859
+ selectedColumn.setFontUnderline(variant);
860
+ selectedColumn.setFontStrikethrough(false);
861
+ closeFontFormatUnderlineVariantDropdown();
862
+ }}
863
+ autoFocus={
864
+ variant ===
865
+ (selectedColumn.fontUnderline ??
866
+ gridConfiguration.fontUnderline)
867
+ }
868
+ >
869
+ <div
870
+ className={cn(
871
+ '!hover:underline absolute top-0 !underline',
872
+ {
873
+ '!hover:decoration-solid !decoration-solid':
874
+ variant ===
875
+ DataCubeFontFormatUnderlineVariant.SOLID,
876
+ '!hover:decoration-dashed !decoration-dashed':
877
+ variant ===
878
+ DataCubeFontFormatUnderlineVariant.DASHED,
879
+ '!hover:decoration-dotted !decoration-dotted':
880
+ variant ===
881
+ DataCubeFontFormatUnderlineVariant.DOTTED,
882
+ '!hover:decoration-double !decoration-double':
883
+ variant ===
884
+ DataCubeFontFormatUnderlineVariant.DOUBLE,
885
+ '!hover:decoration-wavy !decoration-wavy':
886
+ variant ===
887
+ DataCubeFontFormatUnderlineVariant.WAVY,
888
+ },
889
+ )}
890
+ >
891
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
892
+ </div>
893
+ </FormDropdownMenuItem>
894
+ ))}
895
+ </FormDropdownMenu>
896
+ <button
897
+ title="Strikethrough"
898
+ className={cn(
899
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
900
+ {
901
+ 'bg-neutral-200':
902
+ selectedColumn.fontStrikethrough ??
903
+ gridConfiguration.fontStrikethrough,
904
+ },
905
+ )}
906
+ onClick={() => {
907
+ if (
908
+ selectedColumn.fontStrikethrough ??
909
+ gridConfiguration.fontStrikethrough
910
+ ) {
911
+ selectedColumn.setFontStrikethrough(false);
912
+ } else {
913
+ selectedColumn.setFontStrikethrough(true);
914
+ selectedColumn.setFontUnderline(undefined);
915
+ }
916
+ }}
917
+ >
918
+ <DataCubeIcon.FontStrikethrough />
919
+ </button>
920
+ <button
921
+ title={`Case${(selectedColumn.fontCase ?? gridConfiguration.fontCase) ? ` (${selectedColumn.fontCase ?? gridConfiguration.fontCase})` : ''}`}
922
+ className={cn(
923
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center border border-r-0 border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
924
+ {
925
+ 'bg-neutral-200':
926
+ (selectedColumn.fontCase ??
927
+ gridConfiguration.fontCase) !== undefined,
928
+ },
929
+ )}
930
+ onClick={() => {
931
+ if (
932
+ (selectedColumn.fontCase ??
933
+ gridConfiguration.fontCase) === undefined
934
+ ) {
935
+ selectedColumn.setFontCase(
936
+ DataCubeFontCase.UPPERCASE,
937
+ );
938
+ } else {
939
+ selectedColumn.setFontCase(undefined);
940
+ }
941
+ }}
942
+ >
943
+ <DataCubeIcon.FontCase className="stroke-[0.5px]" />
944
+ </button>
945
+ <button
946
+ className="text-2xs relative -ml-[1px] flex h-5 w-2.5 items-center justify-center rounded-br-sm rounded-tr-sm border border-l-0 border-neutral-400 bg-neutral-50 p-0 text-neutral-600 focus:z-[1]"
947
+ onClick={openFontCaseDropdown}
948
+ >
949
+ <div
950
+ className={cn('h-4 w-[0.5px] bg-neutral-200', {
951
+ 'opacity-0':
952
+ (selectedColumn.fontCase ??
953
+ gridConfiguration.fontCase) !== undefined,
954
+ })}
955
+ />
956
+ <DataCubeIcon.CaretDown />
957
+ </button>
958
+ <FormDropdownMenu
959
+ className="w-20"
960
+ {...fontCaseDropdownProps}
961
+ >
962
+ {[
963
+ DataCubeFontCase.LOWERCASE,
964
+ DataCubeFontCase.UPPERCASE,
965
+ DataCubeFontCase.CAPITALIZE,
966
+ ].map((fontCase) => (
967
+ <FormDropdownMenuItem
968
+ key={fontCase}
969
+ onClick={() => {
970
+ selectedColumn.setFontCase(fontCase);
971
+ closeFontCaseDropdown();
972
+ }}
973
+ autoFocus={
974
+ fontCase ===
975
+ (selectedColumn.fontCase ??
976
+ gridConfiguration.fontCase)
977
+ }
978
+ >
979
+ <div
980
+ className={cn({
981
+ lowercase:
982
+ fontCase === DataCubeFontCase.LOWERCASE,
983
+ uppercase:
984
+ fontCase === DataCubeFontCase.UPPERCASE,
985
+ capitalize:
986
+ fontCase === DataCubeFontCase.CAPITALIZE,
987
+ })}
988
+ >
989
+ {fontCase}
990
+ </div>
991
+ </FormDropdownMenuItem>
992
+ ))}
993
+ </FormDropdownMenu>
994
+ </div>
995
+
996
+ <div className="relative ml-2 flex h-5">
997
+ <button
998
+ title="Align Left"
999
+ className={cn(
1000
+ 'relative flex h-5 w-5 items-center justify-center rounded-bl-sm rounded-tl-sm border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
1001
+ {
1002
+ 'bg-neutral-200':
1003
+ (selectedColumn.textAlign ??
1004
+ gridConfiguration.textAlign) ===
1005
+ DataCubeFontTextAlignment.LEFT,
1006
+ },
1007
+ )}
1008
+ onClick={() =>
1009
+ selectedColumn.setTextAlign(
1010
+ DataCubeFontTextAlignment.LEFT,
1011
+ )
1012
+ }
1013
+ >
1014
+ <DataCubeIcon.TextAlignLeft />
1015
+ </button>
1016
+ <button
1017
+ title="Align Center"
1018
+ className={cn(
1019
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
1020
+ {
1021
+ 'bg-neutral-200':
1022
+ (selectedColumn.textAlign ??
1023
+ gridConfiguration.textAlign) ===
1024
+ DataCubeFontTextAlignment.CENTER,
1025
+ },
1026
+ )}
1027
+ onClick={() =>
1028
+ selectedColumn.setTextAlign(
1029
+ DataCubeFontTextAlignment.CENTER,
1030
+ )
1031
+ }
1032
+ >
1033
+ <DataCubeIcon.TextAlignCenter />
1034
+ </button>
1035
+ <button
1036
+ title="Align Right"
1037
+ className={cn(
1038
+ 'relative -ml-[1px] flex h-5 w-5 items-center justify-center rounded-br-sm rounded-tr-sm border border-neutral-400 bg-neutral-50 p-0 text-neutral-700 focus:z-[1]',
1039
+ {
1040
+ 'bg-neutral-200':
1041
+ (selectedColumn.textAlign ??
1042
+ gridConfiguration.textAlign) ===
1043
+ DataCubeFontTextAlignment.RIGHT,
1044
+ },
1045
+ )}
1046
+ onClick={() =>
1047
+ selectedColumn.setTextAlign(
1048
+ DataCubeFontTextAlignment.RIGHT,
1049
+ )
1050
+ }
1051
+ >
1052
+ <DataCubeIcon.TextAlignRight />
1053
+ </button>
1054
+ </div>
1055
+ </div>
1056
+
1057
+ <div className="mt-2 flex w-full">
1058
+ <div className="flex h-6 w-32 flex-shrink-0 items-center text-sm">
1059
+ Colors:
1060
+ </div>
1061
+ <div className="h-18">
1062
+ <div className="flex h-6">
1063
+ <div className="w-16 flex-shrink-0" />
1064
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center text-sm">
1065
+ Normal
1066
+ </div>
1067
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center text-sm">
1068
+ Negative
1069
+ </div>
1070
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center text-sm">
1071
+ Zero
1072
+ </div>
1073
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center text-sm">
1074
+ Error
1075
+ </div>
1076
+ </div>
1077
+ <div className="flex h-6">
1078
+ <div className="flex h-full w-16 flex-shrink-0 items-center text-sm">
1079
+ Foreground:
1080
+ </div>
1081
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1082
+ <FormColorPickerButton
1083
+ color={
1084
+ selectedColumn.normalForegroundColor ??
1085
+ gridConfiguration.normalForegroundColor
1086
+ }
1087
+ defaultColor={gridConfiguration.normalForegroundColor}
1088
+ onChange={(value) =>
1089
+ selectedColumn.setNormalForegroundColor(value)
1090
+ }
1091
+ />
1092
+ </div>
1093
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1094
+ <FormColorPickerButton
1095
+ color={
1096
+ selectedColumn.negativeForegroundColor ??
1097
+ gridConfiguration.negativeForegroundColor
1098
+ }
1099
+ defaultColor={
1100
+ gridConfiguration.negativeForegroundColor
1101
+ }
1102
+ onChange={(value) =>
1103
+ selectedColumn.setNegativeForegroundColor(value)
1104
+ }
1105
+ />
1106
+ </div>
1107
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1108
+ <FormColorPickerButton
1109
+ color={
1110
+ selectedColumn.zeroForegroundColor ??
1111
+ gridConfiguration.zeroForegroundColor
1112
+ }
1113
+ defaultColor={gridConfiguration.zeroForegroundColor}
1114
+ onChange={(value) =>
1115
+ selectedColumn.setZeroForegroundColor(value)
1116
+ }
1117
+ />
1118
+ </div>
1119
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1120
+ <FormColorPickerButton
1121
+ color={
1122
+ selectedColumn.errorForegroundColor ??
1123
+ gridConfiguration.errorForegroundColor
1124
+ }
1125
+ defaultColor={gridConfiguration.errorForegroundColor}
1126
+ onChange={(value) =>
1127
+ selectedColumn.setErrorForegroundColor(value)
1128
+ }
1129
+ />
1130
+ </div>
1131
+ </div>
1132
+ <div className="flex h-6">
1133
+ <div className="flex h-full w-16 flex-shrink-0 items-center text-sm">
1134
+ Background:
1135
+ </div>
1136
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1137
+ <FormColorPickerButton
1138
+ color={
1139
+ selectedColumn.normalBackgroundColor ??
1140
+ gridConfiguration.normalBackgroundColor
1141
+ }
1142
+ defaultColor={gridConfiguration.normalBackgroundColor}
1143
+ onChange={(value) =>
1144
+ selectedColumn.setNormalBackgroundColor(value)
1145
+ }
1146
+ />
1147
+ </div>
1148
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1149
+ <FormColorPickerButton
1150
+ color={
1151
+ selectedColumn.negativeBackgroundColor ??
1152
+ gridConfiguration.negativeBackgroundColor
1153
+ }
1154
+ defaultColor={
1155
+ gridConfiguration.negativeBackgroundColor
1156
+ }
1157
+ onChange={(value) =>
1158
+ selectedColumn.setNegativeBackgroundColor(value)
1159
+ }
1160
+ />
1161
+ </div>
1162
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1163
+ <FormColorPickerButton
1164
+ color={
1165
+ selectedColumn.zeroBackgroundColor ??
1166
+ gridConfiguration.zeroBackgroundColor
1167
+ }
1168
+ defaultColor={gridConfiguration.zeroBackgroundColor}
1169
+ onChange={(value) =>
1170
+ selectedColumn.setZeroBackgroundColor(value)
1171
+ }
1172
+ />
1173
+ </div>
1174
+ <div className="flex h-full w-12 flex-shrink-0 items-center justify-center">
1175
+ <FormColorPickerButton
1176
+ color={
1177
+ selectedColumn.errorBackgroundColor ??
1178
+ gridConfiguration.errorBackgroundColor
1179
+ }
1180
+ defaultColor={gridConfiguration.errorBackgroundColor}
1181
+ onChange={(value) =>
1182
+ selectedColumn.setErrorBackgroundColor(value)
1183
+ }
1184
+ />
1185
+ </div>
1186
+ </div>
1187
+ </div>
1188
+ </div>
1189
+
1190
+ <div className="mt-2 flex w-full">
1191
+ <div className="flex h-6 w-32 flex-shrink-0 items-center text-sm" />
1192
+ <div className="w-80">
1193
+ <div className="mb-2 h-[1px] w-full bg-neutral-200" />
1194
+ <button
1195
+ className="flex h-5 items-center justify-center rounded-sm border border-neutral-400 bg-neutral-200 p-0 px-1 text-sm text-neutral-700 disabled:text-neutral-400"
1196
+ disabled={selectedColumn.isUsingDefaultStyling}
1197
+ onClick={() => selectedColumn.useDefaultStyling()}
1198
+ >
1199
+ Use Default Styling
1200
+ </button>
1201
+ </div>
1202
+ </div>
1203
+ </>
1204
+ )}
1205
+ </div>
1206
+ </div>
1207
+ </div>
1208
+ );
1209
+ },
1210
+ );