@deephaven/iris-grid 0.42.1-beta.4 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/package.json +15 -15
  2. package/dist/AdvancedFilterCreator.css +0 -106
  3. package/dist/AdvancedFilterCreator.css.map +0 -1
  4. package/dist/AdvancedFilterCreator.js +0 -541
  5. package/dist/AdvancedFilterCreator.js.map +0 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.css +0 -9
  7. package/dist/AdvancedFilterCreatorFilterItem.css.map +0 -1
  8. package/dist/AdvancedFilterCreatorFilterItem.js +0 -184
  9. package/dist/AdvancedFilterCreatorFilterItem.js.map +0 -1
  10. package/dist/AdvancedFilterCreatorSelectValue.css +0 -50
  11. package/dist/AdvancedFilterCreatorSelectValue.css.map +0 -1
  12. package/dist/AdvancedFilterCreatorSelectValue.js +0 -301
  13. package/dist/AdvancedFilterCreatorSelectValue.js.map +0 -1
  14. package/dist/AdvancedFilterCreatorSelectValueList.js +0 -272
  15. package/dist/AdvancedFilterCreatorSelectValueList.js.map +0 -1
  16. package/dist/ColumnHeaderGroup.js +0 -61
  17. package/dist/ColumnHeaderGroup.js.map +0 -1
  18. package/dist/ColumnStatistics.css +0 -76
  19. package/dist/ColumnStatistics.css.map +0 -1
  20. package/dist/ColumnStatistics.js +0 -202
  21. package/dist/ColumnStatistics.js.map +0 -1
  22. package/dist/CommonTypes.js +0 -2
  23. package/dist/CommonTypes.js.map +0 -1
  24. package/dist/CrossColumnSearch.css +0 -35
  25. package/dist/CrossColumnSearch.css.map +0 -1
  26. package/dist/CrossColumnSearch.js +0 -199
  27. package/dist/CrossColumnSearch.js.map +0 -1
  28. package/dist/FilterInputField.css +0 -56
  29. package/dist/FilterInputField.css.map +0 -1
  30. package/dist/FilterInputField.js +0 -232
  31. package/dist/FilterInputField.js.map +0 -1
  32. package/dist/GotoRow.css +0 -45
  33. package/dist/GotoRow.css.map +0 -1
  34. package/dist/GotoRow.js +0 -298
  35. package/dist/GotoRow.js.map +0 -1
  36. package/dist/IrisGrid.css +0 -359
  37. package/dist/IrisGrid.css.map +0 -1
  38. package/dist/IrisGrid.js +0 -3651
  39. package/dist/IrisGrid.js.map +0 -1
  40. package/dist/IrisGridBottomBar.css +0 -85
  41. package/dist/IrisGridBottomBar.css.map +0 -1
  42. package/dist/IrisGridBottomBar.js +0 -36
  43. package/dist/IrisGridBottomBar.js.map +0 -1
  44. package/dist/IrisGridCellOverflowModal.css +0 -17
  45. package/dist/IrisGridCellOverflowModal.css.map +0 -1
  46. package/dist/IrisGridCellOverflowModal.js +0 -157
  47. package/dist/IrisGridCellOverflowModal.js.map +0 -1
  48. package/dist/IrisGridCellRendererUtils.js +0 -20
  49. package/dist/IrisGridCellRendererUtils.js.map +0 -1
  50. package/dist/IrisGridCopyHandler.css +0 -64
  51. package/dist/IrisGridCopyHandler.css.map +0 -1
  52. package/dist/IrisGridCopyHandler.js +0 -331
  53. package/dist/IrisGridCopyHandler.js.map +0 -1
  54. package/dist/IrisGridDataBarCellRenderer.js +0 -10
  55. package/dist/IrisGridDataBarCellRenderer.js.map +0 -1
  56. package/dist/IrisGridIcons.js +0 -25
  57. package/dist/IrisGridIcons.js.map +0 -1
  58. package/dist/IrisGridMetricCalculator.js +0 -33
  59. package/dist/IrisGridMetricCalculator.js.map +0 -1
  60. package/dist/IrisGridModel.js +0 -263
  61. package/dist/IrisGridModel.js.map +0 -1
  62. package/dist/IrisGridModelFactory.js +0 -27
  63. package/dist/IrisGridModelFactory.js.map +0 -1
  64. package/dist/IrisGridModelUpdater.js +0 -96
  65. package/dist/IrisGridModelUpdater.js.map +0 -1
  66. package/dist/IrisGridPartitionSelector.css +0 -48
  67. package/dist/IrisGridPartitionSelector.css.map +0 -1
  68. package/dist/IrisGridPartitionSelector.js +0 -198
  69. package/dist/IrisGridPartitionSelector.js.map +0 -1
  70. package/dist/IrisGridProxyModel.js +0 -530
  71. package/dist/IrisGridProxyModel.js.map +0 -1
  72. package/dist/IrisGridRenderer.js +0 -779
  73. package/dist/IrisGridRenderer.js.map +0 -1
  74. package/dist/IrisGridShortcuts.js +0 -59
  75. package/dist/IrisGridShortcuts.js.map +0 -1
  76. package/dist/IrisGridTableModel.js +0 -273
  77. package/dist/IrisGridTableModel.js.map +0 -1
  78. package/dist/IrisGridTableModelTemplate.js +0 -1589
  79. package/dist/IrisGridTableModelTemplate.js.map +0 -1
  80. package/dist/IrisGridTestUtils.js +0 -121
  81. package/dist/IrisGridTestUtils.js.map +0 -1
  82. package/dist/IrisGridTextCellRenderer.js +0 -139
  83. package/dist/IrisGridTextCellRenderer.js.map +0 -1
  84. package/dist/IrisGridTheme.js +0 -96
  85. package/dist/IrisGridTheme.js.map +0 -1
  86. package/dist/IrisGridTheme.module.css +0 -69
  87. package/dist/IrisGridTheme.module.css.map +0 -1
  88. package/dist/IrisGridTreeTableModel.js +0 -145
  89. package/dist/IrisGridTreeTableModel.js.map +0 -1
  90. package/dist/IrisGridUtils.js +0 -1279
  91. package/dist/IrisGridUtils.js.map +0 -1
  92. package/dist/MissingKeyError.js +0 -15
  93. package/dist/MissingKeyError.js.map +0 -1
  94. package/dist/PartitionSelectorSearch.css +0 -22
  95. package/dist/PartitionSelectorSearch.css.map +0 -1
  96. package/dist/PartitionSelectorSearch.js +0 -317
  97. package/dist/PartitionSelectorSearch.js.map +0 -1
  98. package/dist/PendingDataBottomBar.css +0 -13
  99. package/dist/PendingDataBottomBar.css.map +0 -1
  100. package/dist/PendingDataBottomBar.js +0 -98
  101. package/dist/PendingDataBottomBar.js.map +0 -1
  102. package/dist/TableViewportUpdater.js +0 -156
  103. package/dist/TableViewportUpdater.js.map +0 -1
  104. package/dist/ToastBottomBar.js +0 -42
  105. package/dist/ToastBottomBar.js.map +0 -1
  106. package/dist/TreeTableViewportUpdater.js +0 -96
  107. package/dist/TreeTableViewportUpdater.js.map +0 -1
  108. package/dist/declaration.d.js +0 -2
  109. package/dist/declaration.d.js.map +0 -1
  110. package/dist/format-context-menus/CustomFormatAction.css +0 -25
  111. package/dist/format-context-menus/CustomFormatAction.css.map +0 -1
  112. package/dist/format-context-menus/CustomFormatAction.js +0 -132
  113. package/dist/format-context-menus/CustomFormatAction.js.map +0 -1
  114. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -53
  115. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +0 -1
  116. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -59
  117. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +0 -1
  118. package/dist/format-context-menus/FormatContextMenuUtils.js +0 -63
  119. package/dist/format-context-menus/FormatContextMenuUtils.js.map +0 -1
  120. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -43
  121. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +0 -1
  122. package/dist/format-context-menus/index.js +0 -4
  123. package/dist/format-context-menus/index.js.map +0 -1
  124. package/dist/index.js +0 -24
  125. package/dist/index.js.map +0 -1
  126. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -21
  127. package/dist/key-handlers/ClearFilterKeyHandler.js.map +0 -1
  128. package/dist/key-handlers/CopyKeyHandler.js +0 -31
  129. package/dist/key-handlers/CopyKeyHandler.js.map +0 -1
  130. package/dist/key-handlers/ReverseKeyHandler.js +0 -32
  131. package/dist/key-handlers/ReverseKeyHandler.js.map +0 -1
  132. package/dist/key-handlers/index.js +0 -4
  133. package/dist/key-handlers/index.js.map +0 -1
  134. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +0 -175
  135. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +0 -1
  136. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +0 -139
  137. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +0 -1
  138. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -83
  139. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +0 -1
  140. package/dist/mousehandlers/IrisGridContextMenuHandler.css +0 -19
  141. package/dist/mousehandlers/IrisGridContextMenuHandler.css.map +0 -1
  142. package/dist/mousehandlers/IrisGridContextMenuHandler.js +0 -1220
  143. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +0 -1
  144. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -28
  145. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +0 -1
  146. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -80
  147. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +0 -1
  148. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +0 -126
  149. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +0 -1
  150. package/dist/mousehandlers/IrisGridSortMouseHandler.js +0 -46
  151. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +0 -1
  152. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +0 -151
  153. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +0 -1
  154. package/dist/mousehandlers/PendingMouseHandler.js +0 -39
  155. package/dist/mousehandlers/PendingMouseHandler.js.map +0 -1
  156. package/dist/mousehandlers/index.js +0 -11
  157. package/dist/mousehandlers/index.js.map +0 -1
  158. package/dist/sidebar/AdvancedSettings.js +0 -6
  159. package/dist/sidebar/AdvancedSettings.js.map +0 -1
  160. package/dist/sidebar/AdvancedSettingsMenu.js +0 -29
  161. package/dist/sidebar/AdvancedSettingsMenu.js.map +0 -1
  162. package/dist/sidebar/AdvancedSettingsType.js +0 -7
  163. package/dist/sidebar/AdvancedSettingsType.js.map +0 -1
  164. package/dist/sidebar/ChartBuilder.css +0 -56
  165. package/dist/sidebar/ChartBuilder.css.map +0 -1
  166. package/dist/sidebar/ChartBuilder.js +0 -443
  167. package/dist/sidebar/ChartBuilder.js.map +0 -1
  168. package/dist/sidebar/CustomColumnBuilder.css +0 -58
  169. package/dist/sidebar/CustomColumnBuilder.css.map +0 -1
  170. package/dist/sidebar/CustomColumnBuilder.js +0 -384
  171. package/dist/sidebar/CustomColumnBuilder.js.map +0 -1
  172. package/dist/sidebar/CustomColumnInput.js +0 -90
  173. package/dist/sidebar/CustomColumnInput.js.map +0 -1
  174. package/dist/sidebar/InputEditor.css +0 -35
  175. package/dist/sidebar/InputEditor.css.map +0 -1
  176. package/dist/sidebar/InputEditor.js +0 -177
  177. package/dist/sidebar/InputEditor.js.map +0 -1
  178. package/dist/sidebar/OptionType.js +0 -19
  179. package/dist/sidebar/OptionType.js.map +0 -1
  180. package/dist/sidebar/RollupRows.css +0 -120
  181. package/dist/sidebar/RollupRows.css.map +0 -1
  182. package/dist/sidebar/RollupRows.js +0 -519
  183. package/dist/sidebar/RollupRows.js.map +0 -1
  184. package/dist/sidebar/SelectDistinctBuilder.css +0 -41
  185. package/dist/sidebar/SelectDistinctBuilder.css.map +0 -1
  186. package/dist/sidebar/SelectDistinctBuilder.js +0 -155
  187. package/dist/sidebar/SelectDistinctBuilder.js.map +0 -1
  188. package/dist/sidebar/TableCsvExporter.css +0 -32
  189. package/dist/sidebar/TableCsvExporter.css.map +0 -1
  190. package/dist/sidebar/TableCsvExporter.js +0 -399
  191. package/dist/sidebar/TableCsvExporter.js.map +0 -1
  192. package/dist/sidebar/TableSaver.js +0 -487
  193. package/dist/sidebar/TableSaver.js.map +0 -1
  194. package/dist/sidebar/aggregations/AggregationEdit.css +0 -61
  195. package/dist/sidebar/aggregations/AggregationEdit.css.map +0 -1
  196. package/dist/sidebar/aggregations/AggregationEdit.js +0 -155
  197. package/dist/sidebar/aggregations/AggregationEdit.js.map +0 -1
  198. package/dist/sidebar/aggregations/AggregationOperation.js +0 -19
  199. package/dist/sidebar/aggregations/AggregationOperation.js.map +0 -1
  200. package/dist/sidebar/aggregations/AggregationUtils.js +0 -59
  201. package/dist/sidebar/aggregations/AggregationUtils.js.map +0 -1
  202. package/dist/sidebar/aggregations/Aggregations.css +0 -43
  203. package/dist/sidebar/aggregations/Aggregations.css.map +0 -1
  204. package/dist/sidebar/aggregations/Aggregations.js +0 -178
  205. package/dist/sidebar/aggregations/Aggregations.js.map +0 -1
  206. package/dist/sidebar/aggregations/index.js +0 -2
  207. package/dist/sidebar/aggregations/index.js.map +0 -1
  208. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +0 -123
  209. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +0 -1
  210. package/dist/sidebar/conditional-formatting/ConditionEditor.js +0 -243
  211. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +0 -1
  212. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +0 -22
  213. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +0 -1
  214. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +0 -109
  215. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +0 -1
  216. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -18
  217. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +0 -1
  218. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +0 -57
  219. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +0 -1
  220. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +0 -150
  221. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +0 -1
  222. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -635
  223. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +0 -1
  224. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +0 -122
  225. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +0 -1
  226. package/dist/sidebar/conditional-formatting/StyleEditor.css +0 -55
  227. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +0 -1
  228. package/dist/sidebar/conditional-formatting/StyleEditor.js +0 -150
  229. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +0 -1
  230. package/dist/sidebar/icons/BarIcon.js +0 -24
  231. package/dist/sidebar/icons/BarIcon.js.map +0 -1
  232. package/dist/sidebar/icons/FormatColumnWhereIcon.js +0 -42
  233. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +0 -1
  234. package/dist/sidebar/icons/FormatRowWhereIcon.js +0 -36
  235. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +0 -1
  236. package/dist/sidebar/icons/HistogramIcon.js +0 -24
  237. package/dist/sidebar/icons/HistogramIcon.js.map +0 -1
  238. package/dist/sidebar/icons/LineIcon.js +0 -27
  239. package/dist/sidebar/icons/LineIcon.js.map +0 -1
  240. package/dist/sidebar/icons/PieIcon.js +0 -24
  241. package/dist/sidebar/icons/PieIcon.js.map +0 -1
  242. package/dist/sidebar/icons/ScatterIcon.js +0 -74
  243. package/dist/sidebar/icons/ScatterIcon.js.map +0 -1
  244. package/dist/sidebar/icons/index.js +0 -8
  245. package/dist/sidebar/icons/index.js.map +0 -1
  246. package/dist/sidebar/index.js +0 -18
  247. package/dist/sidebar/index.js.map +0 -1
  248. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css +0 -68
  249. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.css.map +0 -1
  250. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +0 -964
  251. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +0 -1
  252. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +0 -132
  253. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +0 -1
  254. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css +0 -29
  255. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.css.map +0 -1
  256. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +0 -188
  257. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +0 -1
  258. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +0 -81
  259. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +0 -1
  260. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +0 -30
  261. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +0 -1
  262. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +0 -158
  263. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +0 -1
  264. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +0 -146
  265. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +0 -1
  266. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +0 -59
  267. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +0 -1
  268. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +0 -139
  269. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +0 -1
  270. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +0 -44
  271. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +0 -1
  272. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +0 -129
  273. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +0 -1
  274. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js +0 -4
  275. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +0 -1
  276. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +0 -261
  277. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionalFormattingUtils.js","names":["Log","DateUtils","TableUtils","makeColumnFormatColumn","makeRowFormatColumn","makeTernaryFormatRule","log","module","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","NO_FORMATTING","POSITIVE","NEGATIVE","WARN","NEUTRAL","ACCENT_1","ACCENT_2","CUSTOM","getBackgroundForStyleConfig","config","type","customConfig","undefined","background","getColorForStyleConfig","color","getStyleDBString","style","bg","getNumberConditionText","column","value","start","end","getTextForNumberCondition","name","condition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getConditionDBString","isNumberType","isCharType","isStringType","isDateType","isBooleanType","Error","getLabelForNumberCondition","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","getLabelForStringCondition","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","getLabelForDateCondition","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","getLabelForBooleanCondition","IS_TRUE","IS_FALSE","getLabelForCharCondition","getDefaultConditionForType","columnType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","columnName","getShortLabelForConditionType","getFormatColumns","dh","columns","rules","debug","result","rowFormatConfig","columnFormatConfigMap","Map","forEach","formatterType","col","find","prevRule","prevFormatColumn","CONDITIONAL","get","rule","index","indexOf","splice","formatColumn","push","set","isDateConditionValid","dateTimeString","rest","split","tzCode","join","parseDateTimeString","e","i18n","TimeZone","getTimeZone","isSupportedColumn"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"sourcesContent":["import Log from '@deephaven/log';\nimport type {\n Column,\n CustomColumn,\n dh as DhType,\n} from '@deephaven/jsapi-types';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n makeColumnFormatColumn,\n makeRowFormatColumn,\n makeTernaryFormatRule,\n} from './ConditionalFormattingAPIUtils';\nimport { ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingUtils');\n\nexport type ModelColumn = {\n name: string;\n type: string;\n};\n\nexport type Condition =\n | NumberCondition\n | StringCondition\n | DateCondition\n | BooleanCondition\n | CharCondition;\n\nexport interface BaseFormatConfig {\n column: ModelColumn;\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n style: FormatStyleConfig;\n}\n\nexport interface ConditionConfig {\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n}\n\nexport type ChangeCallback = (\n ruleConfig: BaseFormatConfig,\n isValid: boolean\n) => void;\n\nexport enum FormatterType {\n CONDITIONAL = 'conditional',\n ROWS = 'rows',\n}\n\nexport interface FormattingRule {\n type: FormatterType;\n config: BaseFormatConfig;\n}\n\nexport enum NumberCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_BETWEEN = 'is-between',\n GREATER_THAN = 'greater-than',\n GREATER_THAN_OR_EQUAL = 'greater-than-or-equal',\n LESS_THAN = 'less-than',\n LESS_THAN_OR_EQUAL = 'less-than-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum StringCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n CONTAINS = 'contains',\n DOES_NOT_CONTAIN = 'does-not-contain',\n STARTS_WITH = 'starts-with',\n ENDS_WITH = 'ends-with',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum DateCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n IS_BEFORE = 'is-before',\n IS_BEFORE_OR_EQUAL = 'is-before-or-equal',\n IS_AFTER = 'is-after',\n IS_AFTER_OR_EQUAL = 'is-after-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum BooleanCondition {\n IS_TRUE = 'is-true',\n IS_FALSE = 'is-false',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum CharCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum FormatStyleType {\n NO_FORMATTING = 'no-formatting',\n POSITIVE = 'positive',\n NEGATIVE = 'negative',\n WARN = 'warn',\n NEUTRAL = 'neutral',\n ACCENT_1 = 'accent-1',\n ACCENT_2 = 'accent-2',\n CUSTOM = 'custom',\n}\n\nexport interface FormatStyleConfig {\n type: FormatStyleType;\n customConfig?: {\n color: string;\n background: string;\n };\n}\n\nexport function getLabelForStyleType(option: FormatStyleType): string {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\n\nexport function getBackgroundForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig?.background;\n default:\n return undefined;\n }\n}\n\nexport function getColorForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig?.color;\n default:\n return undefined;\n }\n}\n\nexport function getStyleDBString(config: BaseFormatConfig): string | undefined {\n const color = getColorForStyleConfig(config.style);\n const bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return `bgfg(\\`${bg}\\`, \\`${color}\\`)`;\n}\n\nfunction getNumberConditionText(config: BaseFormatConfig): string {\n const { column, value, start, end } = config;\n return getTextForNumberCondition(\n column.name,\n config.condition as NumberCondition,\n value,\n start,\n end\n );\n}\n\nfunction getStringConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForStringCondition(\n column.name,\n config.condition as StringCondition,\n value\n );\n}\n\nfunction getDateConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForDateCondition(\n column.name,\n config.condition as DateCondition,\n value\n );\n}\n\nfunction getBooleanConditionText(config: BaseFormatConfig): string {\n const { column } = config;\n return getTextForBooleanCondition(\n column.name,\n config.condition as BooleanCondition\n );\n}\n\nfunction getCharConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForCharCondition(\n column.name,\n config.condition as CharCondition,\n value\n );\n}\n\nexport function getConditionDBString(config: BaseFormatConfig): string {\n const { column } = config;\n\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getLabelForNumberCondition(condition: NumberCondition): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForBooleanCondition(\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getDefaultConditionForType(columnType: string): Condition {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getDefaultValueForType(columnType: string): string | undefined {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\n\nexport function getConditionConfig(config: BaseFormatConfig): ConditionConfig {\n const { condition, value, start, end } = config;\n return { condition, value, start, end };\n}\n\nexport function getDefaultConditionConfigForType(\n type: string\n): ConditionConfig {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined,\n };\n}\n\nexport function getDefaultStyleConfig(): FormatStyleConfig {\n return {\n type: FormatStyleType.NO_FORMATTING,\n };\n}\n\nfunction getShortLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForBooleanCondition(condition: BooleanCondition): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getShortLabelForNumberCondition(\n condition: NumberCondition\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getTextForNumberCondition(\n columnName: ColumnName,\n condition: NumberCondition,\n value: unknown,\n start: unknown,\n end: unknown\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return `${columnName} == ${value}`;\n case NumberCondition.IS_NOT_EQUAL:\n return `${columnName} != ${value}`;\n case NumberCondition.IS_BETWEEN:\n return `${columnName} > ${start} && ${columnName} < ${end}`;\n case NumberCondition.GREATER_THAN:\n return `${columnName} > ${value}`;\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return `${columnName} >= ${value}`;\n case NumberCondition.LESS_THAN:\n return `${columnName} < ${value}`;\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return `${columnName} <= ${value}`;\n case NumberCondition.IS_NULL:\n return `${columnName} == null`;\n case NumberCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForStringCondition(\n columnName: ColumnName,\n condition: StringCondition,\n value: unknown\n): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return `${columnName} == \"${value}\"`;\n case StringCondition.IS_NOT_EXACTLY:\n return `${columnName} != \"${value}\"`;\n case StringCondition.CONTAINS:\n return `${columnName} != null && ${columnName}.contains(\"${value}\")`;\n case StringCondition.DOES_NOT_CONTAIN:\n return `${columnName} != null && !${columnName}.contains(\"${value}\")`;\n case StringCondition.STARTS_WITH:\n return `${columnName} != null && ${columnName}.startsWith(\"${value}\")`;\n case StringCondition.ENDS_WITH:\n return `${columnName} != null && ${columnName}.endsWith(\"${value}\")`;\n case StringCondition.IS_NULL:\n return `${columnName} == null`;\n case StringCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForDateCondition(\n columnName: ColumnName,\n condition: DateCondition,\n value: unknown\n): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return `${columnName} == convertDateTime(\"${value}\")`;\n case DateCondition.IS_NOT_EXACTLY:\n return `${columnName} != convertDateTime(\\`${value}\\`)`;\n case DateCondition.IS_BEFORE:\n return `${columnName} < convertDateTime(\\`${value}\\`)`;\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return `${columnName} <= convertDateTime(\"${value}\")`;\n case DateCondition.IS_AFTER:\n return `${columnName} > convertDateTime(\\`${value}\\`)`;\n case DateCondition.IS_AFTER_OR_EQUAL:\n return `${columnName} >= convertDateTime(\\`${value}\\`)`;\n case DateCondition.IS_NULL:\n return `${columnName} == null`;\n case DateCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForBooleanCondition(\n columnName: ColumnName,\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return `${columnName} == true`;\n case BooleanCondition.IS_FALSE:\n return `${columnName} == false`;\n case BooleanCondition.IS_NULL:\n return `${columnName} == null`;\n case BooleanCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForCharCondition(\n columnName: ColumnName,\n condition: CharCondition,\n value: unknown\n): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return `${columnName} == '${value}'`;\n case CharCondition.IS_NOT_EQUAL:\n return `${columnName} != '${value}'`;\n case CharCondition.IS_NULL:\n return `isNull(${columnName})`;\n case CharCondition.IS_NOT_NULL:\n return `!isNull(${columnName})`;\n }\n}\n\nexport function getShortLabelForConditionType(\n columnType: string,\n condition: Condition\n): string {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition as NumberCondition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition as CharCondition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition as StringCondition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition as DateCondition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition as BooleanCondition);\n }\n\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(\n dh: DhType,\n columns: readonly Column[],\n rules: readonly FormattingRule[]\n): CustomColumn[] {\n if (rules === undefined) {\n log.debug(`no rules passed.`);\n return [];\n }\n const result: CustomColumn[] = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n let rowFormatConfig: [string, CustomColumn];\n const columnFormatConfigMap = new Map<string, [string, CustomColumn]>();\n rules.forEach(({ config, type: formatterType }) => {\n const { column } = config;\n // Check both name and type because the type can change\n const col = columns.find(\n ({ name, type }) => name === column.name && type === column.type\n );\n if (col === undefined) {\n log.debug(\n `Column ${column.name}:${column.type} not found. Ignoring format rule.`,\n config\n );\n return;\n }\n // Stack ternary format conditions by column\n const [prevRule, prevFormatColumn] = (formatterType ===\n FormatterType.CONDITIONAL\n ? columnFormatConfigMap.get(col.name)\n : rowFormatConfig) ?? ['null', undefined];\n const rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(`Ignoring format rule.`, config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n const index =\n prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n const formatColumn =\n formatterType === FormatterType.CONDITIONAL\n ? makeColumnFormatColumn(col, rule)\n : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(\n dh: DhType,\n condition: DateCondition,\n value?: string\n) {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n\n default: {\n const [dateTimeString, ...rest] = (value ?? '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n const tzCode = rest.join(' ');\n\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n\n return true;\n }\n }\n}\n\nexport function isSupportedColumn({ type }: ModelColumn): boolean {\n return (\n TableUtils.isNumberType(type) ||\n TableUtils.isCharType(type) ||\n TableUtils.isStringType(type) ||\n TableUtils.isDateType(type) ||\n TableUtils.isBooleanType(type)\n );\n}\n"],"mappings":"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"}
@@ -1,122 +0,0 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
- import React, { useCallback, useEffect, useState } from 'react';
7
- import Log from '@deephaven/log';
8
- import { ComboBox } from '@deephaven/components';
9
- import { getDefaultConditionConfigForType, getConditionConfig, getDefaultStyleConfig } from "./ConditionalFormattingUtils.js";
10
- import ConditionEditor from "./ConditionEditor.js";
11
- import StyleEditor from "./StyleEditor.js";
12
- var log = Log.module('RowFormatEditor');
13
- var DEFAULT_CALLBACK = () => undefined;
14
- function makeDefaultConfig(columns) {
15
- var {
16
- type,
17
- name
18
- } = columns[0];
19
- var column = {
20
- type,
21
- name
22
- };
23
- var config = _objectSpread({
24
- column,
25
- style: getDefaultStyleConfig()
26
- }, getDefaultConditionConfigForType(type));
27
- return config;
28
- }
29
- function RowFormatEditor(props) {
30
- var _columns$find;
31
- var {
32
- columns,
33
- config = makeDefaultConfig(columns),
34
- dh,
35
- onChange = DEFAULT_CALLBACK
36
- } = props;
37
- var [selectedColumn, setColumn] = useState((_columns$find = columns.find(c => c.name === config.column.name && c.type === config.column.type)) !== null && _columns$find !== void 0 ? _columns$find : columns[0]);
38
- var [conditionConfig, setConditionConfig] = useState(getConditionConfig(config));
39
- var [conditionValid, setConditionValid] = useState(false);
40
- var [selectedStyle, setStyle] = useState(config.style);
41
- var handleColumnChange = useCallback(value => {
42
- var newColumn = columns.find(_ref => {
43
- var {
44
- name
45
- } = _ref;
46
- return name === value;
47
- });
48
- if (newColumn !== undefined) {
49
- setColumn(newColumn);
50
- if (selectedColumn.type !== newColumn.type) {
51
- setConditionConfig(getDefaultConditionConfigForType(newColumn.type));
52
- setConditionValid(false);
53
- }
54
- } else {
55
- log.error("Column ".concat(value, " not found."));
56
- }
57
- }, [columns, selectedColumn]);
58
- var handleConditionChange = useCallback((updatedConditionConfig, isValid) => {
59
- log.debug('handleConditionChange', updatedConditionConfig, isValid);
60
- setConditionConfig(updatedConditionConfig);
61
- setConditionValid(isValid);
62
- }, []);
63
- var handleStyleChange = useCallback(updatedStyleConfig => {
64
- log.debug('handleStyleChange', updatedStyleConfig);
65
- setStyle(updatedStyleConfig);
66
- }, []);
67
- useEffect(function updateRowFormat() {
68
- if (selectedColumn === undefined) {
69
- log.debug('Column is not selected, skip update.');
70
- return;
71
- }
72
- if (selectedStyle === undefined) {
73
- log.debug('Style is not selected, skip update.');
74
- return;
75
- }
76
- var {
77
- type,
78
- name
79
- } = selectedColumn;
80
- var column = {
81
- type,
82
- name
83
- };
84
- onChange(_objectSpread({
85
- column,
86
- style: selectedStyle
87
- }, conditionConfig), conditionValid);
88
- }, [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]);
89
- var columnInputOptions = columns.map(_ref2 => {
90
- var {
91
- name
92
- } = _ref2;
93
- return {
94
- title: name,
95
- value: name
96
- };
97
- });
98
- return /*#__PURE__*/React.createElement("div", {
99
- className: "conditional-rule-editor form"
100
- }, /*#__PURE__*/React.createElement("div", {
101
- className: "mb-2"
102
- }, /*#__PURE__*/React.createElement("label", {
103
- className: "mb-0"
104
- }, "Format Row If"), /*#__PURE__*/React.createElement(ComboBox, {
105
- defaultValue: selectedColumn === null || selectedColumn === void 0 ? void 0 : selectedColumn.name,
106
- options: columnInputOptions,
107
- inputPlaceholder: "Select a column",
108
- spellCheck: false,
109
- onChange: handleColumnChange,
110
- searchPlaceholder: "Filter columns"
111
- })), selectedColumn !== undefined && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ConditionEditor, {
112
- column: selectedColumn,
113
- config: conditionConfig,
114
- dh: dh,
115
- onChange: handleConditionChange
116
- }), /*#__PURE__*/React.createElement(StyleEditor, {
117
- config: selectedStyle,
118
- onChange: handleStyleChange
119
- })));
120
- }
121
- export default RowFormatEditor;
122
- //# sourceMappingURL=RowFormatEditor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowFormatEditor.js","names":["React","useCallback","useEffect","useState","Log","ComboBox","getDefaultConditionConfigForType","getConditionConfig","getDefaultStyleConfig","ConditionEditor","StyleEditor","log","module","DEFAULT_CALLBACK","undefined","makeDefaultConfig","columns","type","name","column","config","style","RowFormatEditor","props","dh","onChange","selectedColumn","setColumn","find","c","conditionConfig","setConditionConfig","conditionValid","setConditionValid","selectedStyle","setStyle","handleColumnChange","value","newColumn","error","handleConditionChange","updatedConditionConfig","isValid","debug","handleStyleChange","updatedStyleConfig","updateRowFormat","columnInputOptions","map","title"],"sources":["../../../src/sidebar/conditional-formatting/RowFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport Log from '@deephaven/log';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { ComboBox } from '@deephaven/components';\nimport {\n BaseFormatConfig,\n ChangeCallback,\n getDefaultConditionConfigForType,\n getConditionConfig,\n getDefaultStyleConfig,\n ModelColumn,\n} from './ConditionalFormattingUtils';\nimport ConditionEditor from './ConditionEditor';\nimport StyleEditor from './StyleEditor';\n\nconst log = Log.module('RowFormatEditor');\n\nexport interface RowFormatEditorProps {\n columns: ModelColumn[];\n config?: BaseFormatConfig;\n dh: DhType;\n onChange?: ChangeCallback;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction makeDefaultConfig(columns: ModelColumn[]): BaseFormatConfig {\n const { type, name } = columns[0];\n const column = { type, name };\n const config = {\n column,\n style: getDefaultStyleConfig(),\n ...getDefaultConditionConfigForType(type),\n };\n return config;\n}\n\nfunction RowFormatEditor(props: RowFormatEditorProps): JSX.Element {\n const {\n columns,\n config = makeDefaultConfig(columns),\n dh,\n onChange = DEFAULT_CALLBACK,\n } = props;\n\n const [selectedColumn, setColumn] = useState(\n columns.find(\n c => c.name === config.column.name && c.type === config.column.type\n ) ?? columns[0]\n );\n const [conditionConfig, setConditionConfig] = useState(\n getConditionConfig(config)\n );\n const [conditionValid, setConditionValid] = useState(false);\n const [selectedStyle, setStyle] = useState(config.style);\n\n const handleColumnChange = useCallback(\n value => {\n const newColumn = columns.find(({ name }) => name === value);\n if (newColumn !== undefined) {\n setColumn(newColumn);\n if (selectedColumn.type !== newColumn.type) {\n setConditionConfig(getDefaultConditionConfigForType(newColumn.type));\n setConditionValid(false);\n }\n } else {\n log.error(`Column ${value} not found.`);\n }\n },\n [columns, selectedColumn]\n );\n\n const handleConditionChange = useCallback(\n (updatedConditionConfig, isValid) => {\n log.debug('handleConditionChange', updatedConditionConfig, isValid);\n setConditionConfig(updatedConditionConfig);\n setConditionValid(isValid);\n },\n []\n );\n\n const handleStyleChange = useCallback(updatedStyleConfig => {\n log.debug('handleStyleChange', updatedStyleConfig);\n setStyle(updatedStyleConfig);\n }, []);\n\n useEffect(\n function updateRowFormat() {\n if (selectedColumn === undefined) {\n log.debug('Column is not selected, skip update.');\n return;\n }\n if (selectedStyle === undefined) {\n log.debug('Style is not selected, skip update.');\n return;\n }\n const { type, name } = selectedColumn;\n const column = { type, name };\n onChange(\n {\n column,\n style: selectedStyle,\n ...conditionConfig,\n },\n conditionValid\n );\n },\n [onChange, selectedColumn, selectedStyle, conditionConfig, conditionValid]\n );\n\n const columnInputOptions = columns.map(({ name }) => ({\n title: name,\n value: name,\n }));\n\n return (\n <div className=\"conditional-rule-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\">Format Row If</label>\n <ComboBox\n defaultValue={selectedColumn?.name}\n options={columnInputOptions}\n inputPlaceholder=\"Select a column\"\n spellCheck={false}\n onChange={handleColumnChange}\n searchPlaceholder=\"Filter columns\"\n />\n </div>\n\n {selectedColumn !== undefined && (\n <>\n <ConditionEditor\n column={selectedColumn}\n config={conditionConfig}\n dh={dh}\n onChange={handleConditionChange}\n />\n <StyleEditor config={selectedStyle} onChange={handleStyleChange} />\n </>\n )}\n </div>\n );\n}\n\nexport default RowFormatEditor;\n"],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /* stylelint-disable scss/at-import-no-partial-leading-underscore */
2
- .style-editor .cs-dropdown {
3
- display: flex;
4
- text-align: left;
5
- padding-left: 0.5rem;
6
- width: 100%;
7
- justify-content: space-between;
8
- border-radius: 4px;
9
- border: 1px solid #929192;
10
- min-width: 14rem;
11
- }
12
- .style-editor .cs-dropdown:focus {
13
- border-color: rgba(72, 120, 234, 0.85);
14
- }
15
- .style-editor .cs-dropdown .cs-caret {
16
- color: #929192;
17
- }
18
-
19
- .style-dropdown-menu {
20
- border-radius: 4px;
21
- }
22
- .style-dropdown-menu .style-options {
23
- max-height: 400px;
24
- overflow: auto;
25
- }
26
- .style-dropdown-menu .style-option-btn {
27
- border: none;
28
- border-radius: 0;
29
- width: 100%;
30
- padding: 0.375rem 0.75rem;
31
- white-space: nowrap;
32
- text-decoration: none;
33
- background-color: transparent;
34
- text-align: left;
35
- cursor: pointer;
36
- user-select: none;
37
- display: block;
38
- }
39
- .style-dropdown-menu .style-option-btn:hover {
40
- opacity: 0.8;
41
- }
42
- .style-dropdown-menu .style-option-btn:focus {
43
- outline: none;
44
- box-shadow: none;
45
- }
46
- .style-dropdown-menu .style-option-btn:first-child {
47
- border-top-left-radius: 4px;
48
- border-top-right-radius: 4px;
49
- }
50
- .style-dropdown-menu .style-option-btn:last-child {
51
- border-bottom-left-radius: 4px;
52
- border-bottom-right-radius: 4px;
53
- }
54
-
55
- /*# sourceMappingURL=StyleEditor.css.map */
@@ -1 +0,0 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../../../node_modules/@deephaven/components/scss/custom.scss","../../../src/sidebar/conditional-formatting/StyleEditor.scss","../../../../../node_modules/@deephaven/components/scss/new_variables.scss","../../../../../node_modules/@deephaven/components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAAA;ACKE;EACE;EACA;EACA,cCLO;EDMP;EACA;EACA,eE8GY;EF7GZ;EACA;;AACA;EACE,cE2HqB;;AFzHvB;EACE,OEGK;;;AFEX;EACE,eEiGc;;AFhGd;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE,SAxCoB;;AA0CtB;EACE;EACA;;AAEF;EACE,wBEwEU;EFvEV,yBEuEU;;AFrEZ;EACE,2BEoEU;EFnEV,4BEmEU","file":"StyleEditor.css","sourcesContent":["/* stylelint-disable scss/at-import-no-partial-leading-underscore */\n// Consumers should be able to resolve bootstrap/ to node_modules/bootstrap\n\n//Make bootstrap functions available for use in overrides\n@import 'bootstrap/scss/_functions.scss';\n@import './bootstrap_overrides.scss';\n\n//_variable imports come after bootstrap default overrides,\n// makes all other variables and mixins from bootstrap available\n/// with just importing customer.scss\n@import 'bootstrap/scss/_variables.scss';\n@import 'bootstrap/scss/_mixins.scss';\n\n//New variables come after imports\n@import './new_variables.scss';\n","@import '@deephaven/components/scss/custom.scss';\n\n$cs-option-hover-opacity: 0.8;\n\n.style-editor {\n .cs-dropdown {\n display: flex;\n text-align: left;\n padding-left: $spacer-2;\n width: 100%;\n justify-content: space-between;\n border-radius: $border-radius;\n border: $input-border-width solid $input-border-color;\n min-width: 14rem;\n &:focus {\n border-color: $input-focus-border-color;\n }\n .cs-caret {\n color: $input-border-color;\n }\n }\n}\n\n.style-dropdown-menu {\n border-radius: $border-radius;\n .style-options {\n max-height: 400px;\n overflow: auto;\n }\n .style-option-btn {\n border: none;\n border-radius: 0;\n width: 100%;\n padding: $input-btn-padding-y $input-btn-padding-x;\n white-space: nowrap;\n text-decoration: none;\n background-color: transparent;\n text-align: left;\n cursor: pointer;\n user-select: none;\n display: block;\n &:hover {\n opacity: $cs-option-hover-opacity;\n }\n &:focus {\n outline: none;\n box-shadow: none;\n }\n &:first-child {\n border-top-left-radius: $border-radius;\n border-top-right-radius: $border-radius;\n }\n &:last-child {\n border-bottom-left-radius: $border-radius;\n border-bottom-right-radius: $border-radius;\n }\n }\n}\n","//Set of spacer variables from the spacer map\n$spacer-0: map-get($spacers, 0); //0\n$spacer-1: map-get($spacers, 1);\n$spacer-2: map-get($spacers, 2);\n$spacer-3: map-get($spacers, 3);\n$spacer-4: map-get($spacers, 4);\n$spacer-5: map-get($spacers, 5);\n\n//Marching Ants for golden layout dropzone and drag and drop\n//top bottom, left right.\n//create 4 background images that are 50% color 1, 50% color 2 using graidents, two veritical, two horizontal\n//size them to ant-size and thickness\n//position those images along the egdes and make top/bottom repeat-x and left/right repeat-y\n//then offest each of those background positions by ant-size in animation to make them march.\n$ant-size: 8px;\n$ant-thickness: 1px;\n\n@mixin ants-base($color-1: black, $color-2: white) {\n background-image: linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to right, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%),\n linear-gradient(to bottom, $color-2 50%, $color-1 50%);\n background-size: $ant-size $ant-thickness, $ant-size $ant-thickness,\n $ant-thickness $ant-size, $ant-thickness $ant-size;\n background-position: 0 top, 0 bottom, left 0, right 0;\n background-repeat: repeat-x, repeat-x, repeat-y, repeat-y;\n animation: march 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n@mixin drag-stack($pseudo-element) {\n &::#{$pseudo-element} {\n content: ' ';\n background: $primary;\n box-shadow: $box-shadow;\n border-radius: $border-radius;\n position: absolute;\n height: 100%;\n width: 100%;\n @content;\n }\n}\n\n$focus-bg-transparency: 0.12;\n$hover-bg-transparency: 0.14;\n$active-bg-transparency: 0.28;\n$exception-transparency: 0.13;\n","// Styling overrides for bootstrap\n\n// Override / set color variables\n$red: #f95d84;\n$orange: #f37e3f;\n$yellow: #fcd65b;\n$green: #9edc6f;\n$blue: #76d9e4;\n$purple: #aa9af4;\n\n//Define some UI colors\n$interfacegray: #2d2a2e;\n$interfaceblue: #4878ea;\n$interfacewhite: #f0f0ee; //same as gray-200\n$interfaceblack: #1a171a;\n\n//Define our Gray scale\n$white: $interfacewhite;\n$gray-100: #fcfcfa;\n$gray-200: $interfacewhite;\n$gray-300: #c0bfbf;\n$gray-400: #929192;\n$gray-500: #5b5a5c;\n$gray-600: #555356;\n$gray-700: #403e41;\n$gray-800: #373438;\n$gray-850: #322f33;\n$gray-900: #211f22;\n$black: $interfaceblack;\n$content-bg: $interfacegray;\n$background: $interfaceblack;\n$foreground: $interfacewhite;\n\n//Load colors into map\n$colors: ();\n$colors: map-merge(\n (\n 'red': $red,\n 'orange': $orange,\n 'yellow': $yellow,\n 'green': $green,\n 'blue': $blue,\n 'purple': $purple,\n 'white': $white,\n 'black': $black,\n ),\n $colors\n);\n\n//Set default colors\n$body-bg: $black;\n$body-color: $interfacewhite;\n\n// Set brand colors\n$primary: $interfaceblue;\n$primary-hover: darken($primary, 8%);\n$primary-dark: mix($primary, $content-bg, 25%);\n$primary-light: scale-color($primary, $lightness: -25%);\n$secondary: $gray-500;\n$secondary-hover: darken($secondary, 8%);\n$success: $green;\n$info: $yellow;\n$warning: $orange;\n$danger: $red;\n$danger-hover: darken($danger, 8%);\n$light: $gray-100;\n$mid: $gray-400; //Added a mid color, useful for input styling\n$dark: $gray-800;\n$green-dark: scale-color($green, $lightness: -45%, $saturation: -10%);\n\n$theme-colors: () !default;\n$theme-colors: map-merge(\n (\n 'primary': $primary,\n 'primary-hover': $primary-hover,\n 'primary-light': $primary-light,\n 'primary-dark': $primary-dark,\n 'secondary': $secondary,\n 'success': $success,\n 'info': $info,\n 'warning': $warning,\n 'danger': $danger,\n 'light': $light,\n 'dark': $dark,\n 'mid': $mid,\n 'content-bg': $interfacegray,\n 'background': $interfaceblack,\n 'foreground': $interfacewhite,\n ),\n $theme-colors\n);\n\n$component-active-bg: $primary;\n$theme-color-interval: 9%;\n$yiq-contrasted-threshold: 180;\n\n// Override fonts\n$font-family-sans-serif: 'Fira Sans', -apple-system, blinkmacsystemfont,\n 'Segoe UI', 'Roboto', 'Helvetica Neue', arial, sans-serif; //fira sans then native system ui fallbacks\n$font-family-monospace: 'Fira Mono', menlo, monaco, consolas, 'Liberation Mono',\n 'Courier New', monospace;\n$font-family-base: $font-family-sans-serif;\n\n$headings-font-weight: 400;\n\n//Text overides\n$text-muted: $gray-400;\n\n//Style Selection highlight color\n//so browsers add alpha to your color by default, ignoring opacity 1\n//by setting rgba with 0.99 it tricks browser into thinking there is alpha applied\n$text-select-color: $primary-hover;\n$text-select-color-editor: lighten(\n $gray-700,\n 15%\n); //we lighten it abit to account for that 0.01 loss, and because it needs some anyways.\n\n//Grid variables, same value as default just making easily accessible\n$grid-gutter-width: 30px;\n\n//Visual Overrides\n$border-radius: 4px;\n$box-shadow: 0 0.1rem 1rem rgba($black, 45%); //because our UI is so dark, we need darker default shadows\n$box-shadow-900: 0 0.1rem 1rem rgba(0, 0, 0, 45%); //darkest shadow for $black popups over $black UI\n\n//Override Btn\n$btn-border-radius: 4rem;\n$btn-padding-x: 1.5rem;\n$btn-transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out,\n border-color 0.12s ease-in-out, box-shadow 0.12s ease-in-out; //default 0.15 is too long\n$btn-border-width: 2px;\n\n//Override Inputs\n$input-bg: $gray-600;\n$input-disabled-bg: $gray-800;\n$input-color: $foreground;\n$input-border-color: $gray-400;\n$input-placeholder-color: $gray-400;\n$input-focus-border-color: rgba($primary, 85%);\n\n$input-btn-focus-width: 0.2rem;\n$input-btn-focus-color: rgba($component-active-bg, 35%);\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color;\n\n//checkbox\n$custom-control-indicator-bg: $gray-600;\n$custom-control-indicator-bg-size: 75% 75%;\n$custom-control-indicator-disabled-bg: $gray-800;\n$custom-control-indicator-checked-disabled-bg: $gray-800;\n$custom-control-label-disabled-color: $gray-400;\n\n//Custom Select\n$custom-select-indicator-color: $gray-400;\n$custom-select-bg-size: 16px 16px;\n//dhSort icon encoded\n$custom-select-indicator: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M4 7l-.4-.8 4-3.7h.8l4 3.7-.4.8H4zm0 2l-.4.8 4 3.7h.8l4-3.7L12 9H4z'/%3E%3C/svg%3E\"),\n '#',\n '%23'\n);\n$custom-select-focus-box-shadow: $input-btn-focus-box-shadow;\n$custom-select-disabled-color: darken($gray-400, 5%);\n$custom-select-disabled-bg: $gray-800;\n\n//modal\n$modal-content-bg: $gray-200;\n$modal-content-border-width: 0;\n$modal-md: 550px;\n\n// Toast notification\n$toast-bg: $primary-dark;\n$toast-color: $foreground;\n$toast-error-bg: mix($danger, $content-bg, 15%);\n$toast-error-color: $foreground;\n\n//tooltips\n$tooltip-bg: $gray-700;\n$tooltip-color: $foreground;\n$tooltip-box-shadow: 0 0.1rem 1.5rem 0.1rem rgba($black, 80%);\n\n//drowdowns\n$dropdown-bg: $gray-600;\n$dropdown-link-color: $foreground;\n$dropdown-link-hover-color: $foreground;\n$dropdown-link-hover-bg: $primary;\n$dropdown-divider-bg: $gray-700;\n\n//context menus\n$contextmenu-bg: $gray-600;\n$contextmenu-color: $foreground;\n$contextmenu-disabled-color: $text-muted;\n$contextmenu-keyboard-selected-bg: rgba($primary, 50%);\n$contextmenu-selected-bg: $primary;\n$contextmenu-selected-color: $foreground;\n\n//links\n$link-color: $gray-400;\n$link-hover-color: $foreground;\n\n//progress-bar\n$progress-bg: $gray-600;\n$progress-border-radius: 1rem;\n\n// Set global options\n$enable-shadows: false;\n$enable-gradients: false;\n$enable-print-styles: false; //I don't think anyone should expect to \"print\" this app.\n\n// Transition times\n$transition: 0.15s;\n$transition-mid: 0.2s;\n$transition-long: 0.3s;\n$transition-slow: 0.6s;\n\n//form-validation icon, uses vsWarning icon encoded here as svg\n$form-feedback-icon-invalid-color: theme-color('danger');\n$form-feedback-icon-invalid: str-replace(\n url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cg fill='none'%3E%3Cg fill='#{$form-feedback-icon-invalid-color}'%3E%3Cpath d='M7.56 1h.88l6.54 12.26-.44.74H1.44L1 13.26 7.56 1zM8 2.28 2.28 13H13.7L8 2.28zM8.625 12v-1h-1.25v1h1.25zm-1.25-2V6h1.25v4h-1.25z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E \"),\n '#',\n '%23'\n);\n"]}
@@ -1,150 +0,0 @@
1
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
- import Log from '@deephaven/log';
4
- import { ColorUtils } from '@deephaven/utils';
5
- import { dhSort, vsCheck } from '@deephaven/icons';
6
- import { Button, DropdownMenu } from '@deephaven/components';
7
- import { FormatStyleType, getLabelForStyleType, getBackgroundForStyleConfig, getColorForStyleConfig } from "./ConditionalFormattingUtils.js";
8
- import "./StyleEditor.css";
9
- var log = Log.module('StyleEditor');
10
- var DEFAULT_BACKGROUND = '#fcfcfa';
11
- var DEFAULT_COLOR_LIGHT = '#f0f0ee';
12
- var DEFAULT_COLOR_DARK = '#1a171a';
13
- var DEFAULT_DROPDOWN_WIDTH = 200;
14
- var DEFAULT_CALLBACK = () => undefined;
15
- function StyleEditor(props) {
16
- var _config$customConfig$, _config$customConfig;
17
- var {
18
- config,
19
- onChange = DEFAULT_CALLBACK
20
- } = props;
21
- var [styleType, setStyleType] = useState(config.type);
22
- var [background, setBackground] = useState((_config$customConfig$ = (_config$customConfig = config.customConfig) === null || _config$customConfig === void 0 ? void 0 : _config$customConfig.background) !== null && _config$customConfig$ !== void 0 ? _config$customConfig$ : DEFAULT_BACKGROUND);
23
- var [isShown, setShown] = useState(false);
24
- var [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);
25
- var csContainer = useRef(null);
26
- var handleBackgroundChange = useCallback(e => {
27
- var {
28
- value
29
- } = e.target;
30
- log.debug('handleBackgroundChange', value);
31
- setBackground(value);
32
- }, []);
33
- var handleMenuClosed = useCallback(() => {
34
- if (isShown) {
35
- setShown(false);
36
- }
37
- }, [isShown]);
38
- var handleToggleClick = useCallback(() => {
39
- if (!isShown) {
40
- updateDropdownWidth();
41
- }
42
- setShown(!isShown);
43
- }, [isShown]);
44
- var styleOptions = useMemo(() => [FormatStyleType.NO_FORMATTING, FormatStyleType.POSITIVE, FormatStyleType.NEGATIVE, FormatStyleType.WARN, FormatStyleType.NEUTRAL, FormatStyleType.ACCENT_1, FormatStyleType.ACCENT_2, FormatStyleType.CUSTOM], []);
45
- function updateDropdownWidth() {
46
- if (csContainer.current) {
47
- setDropdownWidth(csContainer.current.getBoundingClientRect().width);
48
- }
49
- }
50
- useEffect(function updateTheme() {
51
- onChange({
52
- type: styleType,
53
- customConfig: {
54
- color: ColorUtils.isDark(background) ? DEFAULT_COLOR_LIGHT : DEFAULT_COLOR_DARK,
55
- background
56
- }
57
- });
58
- }, [onChange, styleType, background]);
59
- var renderOptions = useCallback(() => {
60
- var matchFound = false;
61
- var optionArray = [];
62
- var _loop = function _loop() {
63
- var option = styleOptions[index];
64
- var key = "option-".concat(index, "-").concat(option);
65
- matchFound = matchFound || option === styleType;
66
- optionArray.push( /*#__PURE__*/React.createElement(Button, {
67
- key: key,
68
- kind: "inline",
69
- className: "style-option-btn",
70
- onClick: () => {
71
- setStyleType(option);
72
- setShown(false);
73
- },
74
- style: {
75
- color: getColorForStyleConfig({
76
- type: option
77
- }),
78
- background: getBackgroundForStyleConfig({
79
- type: option
80
- })
81
- }
82
- }, option === styleType && /*#__PURE__*/React.createElement(FontAwesomeIcon, {
83
- icon: vsCheck,
84
- className: "mr-2"
85
- }), option !== styleType && /*#__PURE__*/React.createElement("span", {
86
- className: "mr-4"
87
- }), getLabelForStyleType(option)));
88
- };
89
- for (var index = 0; index < styleOptions.length; index += 1) {
90
- _loop();
91
- }
92
- return optionArray;
93
- }, [styleOptions, styleType]);
94
- var renderMenuElement = useCallback(() => /*#__PURE__*/React.createElement("div", {
95
- className: "style-menu-container",
96
- role: "presentation",
97
- style: {
98
- width: dropdownWidth
99
- }
100
- }, /*#__PURE__*/React.createElement("div", {
101
- className: "style-options"
102
- }, renderOptions())), [dropdownWidth, renderOptions]);
103
- return /*#__PURE__*/React.createElement("div", {
104
- className: "style-editor"
105
- }, /*#__PURE__*/React.createElement("div", {
106
- className: "mb-2",
107
- ref: csContainer
108
- }, /*#__PURE__*/React.createElement("label", {
109
- className: "mb-0"
110
- }, "Style"), /*#__PURE__*/React.createElement(Button, {
111
- kind: "inline",
112
- className: "cs-dropdown",
113
- style: {
114
- color: getColorForStyleConfig({
115
- type: styleType
116
- }),
117
- background: getBackgroundForStyleConfig({
118
- type: styleType
119
- })
120
- },
121
- onClick: handleToggleClick
122
- }, getLabelForStyleType(styleType), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
123
- icon: dhSort,
124
- className: "cs-caret"
125
- })), /*#__PURE__*/React.createElement(DropdownMenu, {
126
- isShown: isShown,
127
- actions: {
128
- menuElement: renderMenuElement()
129
- },
130
- popperOptions: {
131
- placement: 'bottom-start'
132
- },
133
- popperClassName: "style-dropdown-menu",
134
- onMenuClosed: handleMenuClosed,
135
- menuStyle: {
136
- maxWidth: '100rem'
137
- }
138
- }))), styleType === FormatStyleType.CUSTOM && /*#__PURE__*/React.createElement("div", {
139
- className: "mb-2"
140
- }, /*#__PURE__*/React.createElement("label", {
141
- className: "mb-0"
142
- }, "Background"), /*#__PURE__*/React.createElement("input", {
143
- type: "color",
144
- value: background,
145
- className: "custom-select color-select",
146
- onChange: handleBackgroundChange
147
- })));
148
- }
149
- export default StyleEditor;
150
- //# sourceMappingURL=StyleEditor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StyleEditor.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","FontAwesomeIcon","Log","ColorUtils","dhSort","vsCheck","Button","DropdownMenu","FormatStyleType","getLabelForStyleType","getBackgroundForStyleConfig","getColorForStyleConfig","log","module","DEFAULT_BACKGROUND","DEFAULT_COLOR_LIGHT","DEFAULT_COLOR_DARK","DEFAULT_DROPDOWN_WIDTH","DEFAULT_CALLBACK","undefined","StyleEditor","props","config","onChange","styleType","setStyleType","type","background","setBackground","customConfig","isShown","setShown","dropdownWidth","setDropdownWidth","csContainer","handleBackgroundChange","e","value","target","debug","handleMenuClosed","handleToggleClick","updateDropdownWidth","styleOptions","NO_FORMATTING","POSITIVE","NEGATIVE","WARN","NEUTRAL","ACCENT_1","ACCENT_2","CUSTOM","current","getBoundingClientRect","width","updateTheme","color","isDark","renderOptions","matchFound","optionArray","option","index","key","push","length","renderMenuElement","menuElement","placement","maxWidth"],"sources":["../../../src/sidebar/conditional-formatting/StyleEditor.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Log from '@deephaven/log';\nimport { ColorUtils } from '@deephaven/utils';\nimport { dhSort, vsCheck } from '@deephaven/icons';\nimport { Button, DropdownMenu } from '@deephaven/components';\nimport {\n FormatStyleType,\n getLabelForStyleType,\n FormatStyleConfig,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n} from './ConditionalFormattingUtils';\n\nimport './StyleEditor.scss';\n\nconst log = Log.module('StyleEditor');\n\nconst DEFAULT_BACKGROUND = '#fcfcfa';\n\nconst DEFAULT_COLOR_LIGHT = '#f0f0ee';\n\nconst DEFAULT_COLOR_DARK = '#1a171a';\n\nconst DEFAULT_DROPDOWN_WIDTH = 200;\n\nexport interface ConditionEditorProps {\n config: FormatStyleConfig;\n onChange?: (config: FormatStyleConfig) => void;\n}\n\nconst DEFAULT_CALLBACK = () => undefined;\n\nfunction StyleEditor(props: ConditionEditorProps): JSX.Element {\n const { config, onChange = DEFAULT_CALLBACK } = props;\n const [styleType, setStyleType] = useState(config.type);\n const [background, setBackground] = useState(\n config.customConfig?.background ?? DEFAULT_BACKGROUND\n );\n const [isShown, setShown] = useState(false);\n const [dropdownWidth, setDropdownWidth] = useState(DEFAULT_DROPDOWN_WIDTH);\n const csContainer = useRef<HTMLDivElement>(null);\n\n const handleBackgroundChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleBackgroundChange', value);\n setBackground(value);\n }, []);\n\n const handleMenuClosed = useCallback(() => {\n if (isShown) {\n setShown(false);\n }\n }, [isShown]);\n\n const handleToggleClick = useCallback(() => {\n if (!isShown) {\n updateDropdownWidth();\n }\n setShown(!isShown);\n }, [isShown]);\n\n const styleOptions = useMemo(\n () => [\n FormatStyleType.NO_FORMATTING,\n FormatStyleType.POSITIVE,\n FormatStyleType.NEGATIVE,\n FormatStyleType.WARN,\n FormatStyleType.NEUTRAL,\n FormatStyleType.ACCENT_1,\n FormatStyleType.ACCENT_2,\n FormatStyleType.CUSTOM,\n ],\n []\n );\n\n function updateDropdownWidth(): void {\n if (csContainer.current) {\n setDropdownWidth(csContainer.current.getBoundingClientRect().width);\n }\n }\n\n useEffect(\n function updateTheme() {\n onChange({\n type: styleType,\n customConfig: {\n color: ColorUtils.isDark(background)\n ? DEFAULT_COLOR_LIGHT\n : DEFAULT_COLOR_DARK,\n background,\n },\n });\n },\n [onChange, styleType, background]\n );\n\n const renderOptions = useCallback(() => {\n let matchFound = false;\n const optionArray: JSX.Element[] = [];\n for (let index = 0; index < styleOptions.length; index += 1) {\n const option = styleOptions[index];\n const key = `option-${index}-${option}`;\n matchFound = matchFound || option === styleType;\n optionArray.push(\n <Button\n key={key}\n kind=\"inline\"\n className=\"style-option-btn\"\n onClick={() => {\n setStyleType(option);\n setShown(false);\n }}\n style={{\n color: getColorForStyleConfig({ type: option }),\n background: getBackgroundForStyleConfig({ type: option }),\n }}\n >\n {option === styleType && (\n <FontAwesomeIcon icon={vsCheck} className=\"mr-2\" />\n )}\n {option !== styleType && <span className=\"mr-4\" />}\n {getLabelForStyleType(option)}\n </Button>\n );\n }\n return optionArray;\n }, [styleOptions, styleType]);\n\n const renderMenuElement = useCallback(\n () => (\n <div\n className=\"style-menu-container\"\n role=\"presentation\"\n style={{ width: dropdownWidth }}\n >\n <div className=\"style-options\">{renderOptions()}</div>\n </div>\n ),\n [dropdownWidth, renderOptions]\n );\n\n return (\n <div className=\"style-editor\">\n <div className=\"mb-2\" ref={csContainer}>\n <label className=\"mb-0\">Style</label>\n <Button\n kind=\"inline\"\n className=\"cs-dropdown\"\n style={{\n color: getColorForStyleConfig({ type: styleType }),\n background: getBackgroundForStyleConfig({ type: styleType }),\n }}\n onClick={handleToggleClick}\n >\n {getLabelForStyleType(styleType)}\n\n <span>\n <FontAwesomeIcon icon={dhSort} className=\"cs-caret\" />\n </span>\n <DropdownMenu\n isShown={isShown}\n actions={{ menuElement: renderMenuElement() }}\n popperOptions={{ placement: 'bottom-start' }}\n popperClassName=\"style-dropdown-menu\"\n onMenuClosed={handleMenuClosed}\n menuStyle={{ maxWidth: '100rem' }}\n />\n </Button>\n </div>\n\n {styleType === FormatStyleType.CUSTOM && (\n <div className=\"mb-2\">\n <label className=\"mb-0\">Background</label>\n <input\n type=\"color\"\n value={background}\n className=\"custom-select color-select\"\n onChange={handleBackgroundChange}\n />\n </div>\n )}\n </div>\n );\n}\n\nexport default StyleEditor;\n"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import * as React from 'react';
3
- function SvgBarIcon(props) {
4
- return (
5
- /*#__PURE__*/
6
- // eslint-disable-next-line react/jsx-props-no-spreading
7
- React.createElement("svg", _extends({
8
- width: 48,
9
- height: 48,
10
- xmlns: "http://www.w3.org/2000/svg"
11
- }, props), /*#__PURE__*/React.createElement("g", {
12
- fill: "none",
13
- fillRule: "evenodd"
14
- }, /*#__PURE__*/React.createElement("path", {
15
- fill: "#C1C0C0",
16
- d: "M44 43v1H4v-1z"
17
- }), /*#__PURE__*/React.createElement("path", {
18
- fill: "#7DA4FF",
19
- d: "M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z"
20
- })))
21
- );
22
- }
23
- export default SvgBarIcon;
24
- //# sourceMappingURL=BarIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BarIcon.js","names":["React","SvgBarIcon","props"],"sources":["../../../src/sidebar/icons/BarIcon.tsx"],"sourcesContent":["import * as React from 'react';\n\nfunction SvgBarIcon(\n props: JSX.IntrinsicAttributes & React.SVGProps<SVGSVGElement>\n): JSX.Element {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <svg width={48} height={48} xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <g fill=\"none\" fillRule=\"evenodd\">\n <path fill=\"#C1C0C0\" d=\"M44 43v1H4v-1z\" />\n <path\n fill=\"#7DA4FF\"\n d=\"M8 26h4v15H8zM15 17h4v24h-4zM22 21h4v20h-4zM29 17h4v24h-4zM36 11h4v30h-4z\"\n />\n </g>\n </svg>\n );\n}\n\nexport default SvgBarIcon;\n"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,UAAU,CACjBC,KAA8D,EACjD;EACb;IAAA;IACE;IACA;MAAK,KAAK,EAAE,EAAG;MAAC,MAAM,EAAE,EAAG;MAAC,KAAK,EAAC;IAA4B,GAAKA,KAAK,gBACtE;MAAG,IAAI,EAAC,MAAM;MAAC,QAAQ,EAAC;IAAS,gBAC/B;MAAM,IAAI,EAAC,SAAS;MAAC,CAAC,EAAC;IAAgB,EAAG,eAC1C;MACE,IAAI,EAAC,SAAS;MACd,CAAC,EAAC;IAA2E,EAC7E,CACA;EACA;AAEV;AAEA,eAAeD,UAAU"}
@@ -1,42 +0,0 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import * as React from 'react';
3
- function FormatColumnWhereIcon(props) {
4
- return /*#__PURE__*/React.createElement("svg", _extends({
5
- width: "48",
6
- height: "48",
7
- viewBox: "0 0 48 48",
8
- fill: "none",
9
- xmlns: "http://www.w3.org/2000/svg"
10
- // eslint-disable-next-line react/jsx-props-no-spreading
11
- }, props), /*#__PURE__*/React.createElement("rect", {
12
- width: "48",
13
- height: "48",
14
- fill: "none"
15
- }), /*#__PURE__*/React.createElement("rect", {
16
- x: "26",
17
- y: "10",
18
- width: "15",
19
- height: "4",
20
- fill: "#9FDE70"
21
- }), /*#__PURE__*/React.createElement("rect", {
22
- x: "26",
23
- y: "22",
24
- width: "15",
25
- height: "4",
26
- fill: "#9FDE70"
27
- }), /*#__PURE__*/React.createElement("rect", {
28
- x: "26",
29
- y: "28",
30
- width: "15",
31
- height: "4",
32
- fill: "#FFD95C"
33
- }), /*#__PURE__*/React.createElement("rect", {
34
- x: "26",
35
- y: "34",
36
- width: "15",
37
- height: "4",
38
- fill: "#9FDE70"
39
- }));
40
- }
41
- export default FormatColumnWhereIcon;
42
- //# sourceMappingURL=FormatColumnWhereIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormatColumnWhereIcon.js","names":["React","FormatColumnWhereIcon","props"],"sources":["../../../src/sidebar/icons/FormatColumnWhereIcon.tsx"],"sourcesContent":["import * as React from 'react';\n\nfunction FormatColumnWhereIcon(\n props: JSX.IntrinsicAttributes & React.SVGProps<SVGSVGElement>\n): JSX.Element {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n <rect width=\"48\" height=\"48\" fill=\"none\" />\n <rect x=\"26\" y=\"10\" width=\"15\" height=\"4\" fill=\"#9FDE70\" />\n <rect x=\"26\" y=\"22\" width=\"15\" height=\"4\" fill=\"#9FDE70\" />\n <rect x=\"26\" y=\"28\" width=\"15\" height=\"4\" fill=\"#FFD95C\" />\n <rect x=\"26\" y=\"34\" width=\"15\" height=\"4\" fill=\"#9FDE70\" />\n </svg>\n );\n}\n\nexport default FormatColumnWhereIcon;\n"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,qBAAqB,CAC5BC,KAA8D,EACjD;EACb,oBACE;IACE,KAAK,EAAC,IAAI;IACV,MAAM,EAAC,IAAI;IACX,OAAO,EAAC,WAAW;IACnB,IAAI,EAAC,MAAM;IACX,KAAK,EAAC;IACN;EAAA,GACIA,KAAK,gBAET;IAAM,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,IAAI;IAAC,IAAI,EAAC;EAAM,EAAG,eAC3C;IAAM,CAAC,EAAC,IAAI;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,eAC3D;IAAM,CAAC,EAAC,IAAI;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,eAC3D;IAAM,CAAC,EAAC,IAAI;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,eAC3D;IAAM,CAAC,EAAC,IAAI;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,CACvD;AAEV;AAEA,eAAeD,qBAAqB"}
@@ -1,36 +0,0 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
- import * as React from 'react';
3
- function FormatRowWhereIcon(props) {
4
- return /*#__PURE__*/React.createElement("svg", _extends({
5
- width: "48",
6
- height: "48",
7
- viewBox: "0 0 48 48",
8
- fill: "none",
9
- xmlns: "http://www.w3.org/2000/svg"
10
- // eslint-disable-next-line react/jsx-props-no-spreading
11
- }, props), /*#__PURE__*/React.createElement("rect", {
12
- width: "48",
13
- height: "48",
14
- fill: "none"
15
- }), /*#__PURE__*/React.createElement("rect", {
16
- x: "4",
17
- y: "16",
18
- width: "40",
19
- height: "4",
20
- fill: "#FFD95C"
21
- }), /*#__PURE__*/React.createElement("rect", {
22
- x: "4",
23
- y: "10",
24
- width: "40",
25
- height: "4",
26
- fill: "#78DCE8"
27
- }), /*#__PURE__*/React.createElement("rect", {
28
- x: "4",
29
- y: "34",
30
- width: "40",
31
- height: "4",
32
- fill: "#78DCE8"
33
- }));
34
- }
35
- export default FormatRowWhereIcon;
36
- //# sourceMappingURL=FormatRowWhereIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormatRowWhereIcon.js","names":["React","FormatRowWhereIcon","props"],"sources":["../../../src/sidebar/icons/FormatRowWhereIcon.tsx"],"sourcesContent":["import * as React from 'react';\n\nfunction FormatRowWhereIcon(\n props: JSX.IntrinsicAttributes & React.SVGProps<SVGSVGElement>\n): JSX.Element {\n return (\n <svg\n width=\"48\"\n height=\"48\"\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n >\n <rect width=\"48\" height=\"48\" fill=\"none\" />\n <rect x=\"4\" y=\"16\" width=\"40\" height=\"4\" fill=\"#FFD95C\" />\n <rect x=\"4\" y=\"10\" width=\"40\" height=\"4\" fill=\"#78DCE8\" />\n <rect x=\"4\" y=\"34\" width=\"40\" height=\"4\" fill=\"#78DCE8\" />\n </svg>\n );\n}\n\nexport default FormatRowWhereIcon;\n"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,kBAAkB,CACzBC,KAA8D,EACjD;EACb,oBACE;IACE,KAAK,EAAC,IAAI;IACV,MAAM,EAAC,IAAI;IACX,OAAO,EAAC,WAAW;IACnB,IAAI,EAAC,MAAM;IACX,KAAK,EAAC;IACN;EAAA,GACIA,KAAK,gBAET;IAAM,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,IAAI;IAAC,IAAI,EAAC;EAAM,EAAG,eAC3C;IAAM,CAAC,EAAC,GAAG;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,eAC1D;IAAM,CAAC,EAAC,GAAG;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,eAC1D;IAAM,CAAC,EAAC,GAAG;IAAC,CAAC,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,MAAM,EAAC,GAAG;IAAC,IAAI,EAAC;EAAS,EAAG,CACtD;AAEV;AAEA,eAAeD,kBAAkB"}