@mwater/visualization 5.2.0 → 5.3.1

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 (254) hide show
  1. package/lib/ColorComponent.d.ts +10 -11
  2. package/lib/ColorComponent.js +78 -29
  3. package/lib/ColorSchemeFactory.d.ts +13 -2
  4. package/lib/ColorSchemeFactory.js +7 -5
  5. package/lib/CustomColorsContext.d.ts +6 -0
  6. package/lib/CustomColorsContext.js +6 -0
  7. package/lib/FiltersDesignerComponent.d.ts +1 -4
  8. package/lib/FiltersDesignerComponent.js +2 -3
  9. package/lib/LocaleContextInjector.d.ts +5 -11
  10. package/lib/LocaleContextInjector.js +4 -12
  11. package/lib/MWaterAddRelatedFormComponent.js +3 -3
  12. package/lib/MWaterAddRelatedIndicatorComponent.d.ts +1 -4
  13. package/lib/MWaterAddRelatedIndicatorComponent.js +6 -6
  14. package/lib/MWaterCompleteTableSelectComponent.d.ts +5 -16
  15. package/lib/MWaterCompleteTableSelectComponent.js +36 -36
  16. package/lib/MWaterContextComponent.d.ts +4 -6
  17. package/lib/MWaterContextComponent.js +4 -13
  18. package/lib/MWaterLoaderComponent.d.ts +5 -3
  19. package/lib/MWaterLoaderComponent.js +2 -1
  20. package/lib/MWaterTableSelectComponent.d.ts +1 -4
  21. package/lib/MWaterTableSelectComponent.js +10 -12
  22. package/lib/UIComponents.d.ts +2 -2
  23. package/lib/UIComponents.js +4 -12
  24. package/lib/axes/AxisBuilder.d.ts +7 -4
  25. package/lib/axes/AxisBuilder.js +3 -1
  26. package/lib/axes/AxisComponent.d.ts +2 -5
  27. package/lib/axes/AxisComponent.js +1 -2
  28. package/lib/axes/ColorPaletteCollectionComponent.d.ts +5 -12
  29. package/lib/axes/ColorPaletteCollectionComponent.js +67 -36
  30. package/lib/dashboards/DashboardComponent.d.ts +4 -12
  31. package/lib/dashboards/DashboardComponent.js +18 -38
  32. package/lib/dashboards/DashboardDesign.d.ts +3 -3
  33. package/lib/dashboards/DashboardUpgrader.js +36 -1
  34. package/lib/dashboards/DashboardViewComponent.d.ts +5 -34
  35. package/lib/dashboards/DashboardViewComponent.js +109 -132
  36. package/lib/dashboards/FontStyleEditor.d.ts +8 -0
  37. package/lib/dashboards/FontStyleEditor.js +130 -0
  38. package/lib/dashboards/LayoutOptionsComponent.d.ts +0 -1
  39. package/lib/dashboards/LayoutOptionsComponent.js +211 -42
  40. package/lib/dashboards/ServerDashboardDataSource.d.ts +1 -2
  41. package/lib/dashboards/ServerDashboardDataSource.js +52 -33
  42. package/lib/dashboards/WidgetComponent.d.ts +3 -3
  43. package/lib/dashboards/WidgetComponent.js +3 -6
  44. package/lib/dashboards/WidgetDataSourcePrioritizer.d.ts +20 -0
  45. package/lib/dashboards/WidgetDataSourcePrioritizer.js +72 -0
  46. package/lib/dashboards/layoutOptions.d.ts +83 -0
  47. package/lib/dashboards/layoutOptions.js +436 -10
  48. package/lib/datagrids/DatagridDesign.d.ts +7 -6
  49. package/lib/datagrids/ServerDatagridDataSource.d.ts +7 -6
  50. package/lib/datagrids/ServerDatagridDataSource.js +87 -33
  51. package/lib/demo.js +3 -3
  52. package/lib/index.css +5 -0
  53. package/lib/index.d.ts +1 -1
  54. package/lib/index.js +0 -1
  55. package/lib/layouts/LayoutManager.d.ts +33 -29
  56. package/lib/layouts/LayoutManager.js +2 -8
  57. package/lib/layouts/blocks/BlocksDisplayComponent.d.ts +26 -57
  58. package/lib/layouts/blocks/BlocksDisplayComponent.js +122 -205
  59. package/lib/layouts/blocks/BlocksLayoutManager.d.ts +6 -22
  60. package/lib/layouts/blocks/BlocksLayoutManager.js +5 -14
  61. package/lib/layouts/blocks/HorizontalBlockComponent.d.ts +5 -4
  62. package/lib/layouts/blocks/HorizontalBlockComponent.js +5 -5
  63. package/lib/mWaterLoader.d.ts +2 -0
  64. package/lib/mWaterLoader.js +2 -1
  65. package/lib/maps/AddLayerComponent.d.ts +6 -8
  66. package/lib/maps/AddLayerComponent.js +6 -6
  67. package/lib/maps/BingLayer.js +10 -20
  68. package/lib/maps/BufferLayer.js +2 -1
  69. package/lib/maps/ChoroplethLayer.js +2 -1
  70. package/lib/maps/DirectMapDataSource.d.ts +5 -2
  71. package/lib/maps/DirectMapDataSource.js +2 -1
  72. package/lib/maps/EditPopupComponent.js +2 -1
  73. package/lib/maps/MapComponent.d.ts +1 -4
  74. package/lib/maps/MapComponent.js +3 -3
  75. package/lib/maps/MarkersLayer.js +30 -25
  76. package/lib/maps/RasterMapViewComponent.d.ts +1 -4
  77. package/lib/maps/RasterMapViewComponent.js +3 -3
  78. package/lib/maps/ServerMapDataSource.d.ts +2 -3
  79. package/lib/maps/ServerMapDataSource.js +5 -5
  80. package/lib/maps/VectorMapViewComponent.js +2 -1
  81. package/lib/maps/mapSymbols.js +2 -0
  82. package/lib/maps/symbols/font-awesome/cloud-rain.png +0 -0
  83. package/lib/maps/vectorMaps.js +61 -55
  84. package/lib/quickfilter/QuickfiltersComponent.d.ts +1 -4
  85. package/lib/quickfilter/QuickfiltersComponent.js +3 -3
  86. package/lib/richtext/DropdownPaletteItem.d.ts +32 -0
  87. package/lib/richtext/DropdownPaletteItem.js +82 -0
  88. package/lib/richtext/FontColorPaletteItem.d.ts +1 -5
  89. package/lib/richtext/FontColorPaletteItem.js +32 -27
  90. package/lib/richtext/ItemsHtmlConverter.js +12 -3
  91. package/lib/richtext/RichTextComponent.d.ts +26 -52
  92. package/lib/richtext/RichTextComponent.js +166 -128
  93. package/lib/valueFormatter.js +6 -1
  94. package/lib/wellknown.d.ts +5 -0
  95. package/lib/wellknown.js +288 -0
  96. package/lib/widgets/DropdownWidgetComponent.d.ts +8 -25
  97. package/lib/widgets/DropdownWidgetComponent.js +48 -25
  98. package/lib/widgets/IFrameWidgetComponent.d.ts +1 -2
  99. package/lib/widgets/ImageWidgetComponent.d.ts +2 -3
  100. package/lib/widgets/MapWidget.d.ts +2 -0
  101. package/lib/widgets/MapWidget.js +2 -1
  102. package/lib/widgets/TOCWidget.js +2 -1
  103. package/lib/widgets/Widget.d.ts +2 -0
  104. package/lib/widgets/WidgetDataSource.d.ts +3 -1
  105. package/lib/widgets/charts/Chart.d.ts +0 -1
  106. package/lib/widgets/charts/ChartViewComponent.d.ts +4 -0
  107. package/lib/widgets/charts/ChartViewComponent.js +11 -3
  108. package/lib/widgets/charts/ChartWidget.d.ts +1 -62
  109. package/lib/widgets/charts/ChartWidget.js +4 -183
  110. package/lib/widgets/charts/ChartWidgetComponent.d.ts +51 -0
  111. package/lib/widgets/charts/ChartWidgetComponent.js +167 -0
  112. package/lib/widgets/charts/calendar/CalendarChartViewComponent.d.ts +1 -4
  113. package/lib/widgets/charts/calendar/CalendarChartViewComponent.js +4 -4
  114. package/lib/widgets/charts/layered/LayeredChart.d.ts +5 -10
  115. package/lib/widgets/charts/layered/LayeredChart.js +6 -7
  116. package/lib/widgets/charts/layered/LayeredChartCompiler.d.ts +4 -2
  117. package/lib/widgets/charts/layered/LayeredChartCompiler.js +46 -32
  118. package/lib/widgets/charts/layered/LayeredChartDesign.d.ts +4 -0
  119. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.d.ts +3 -0
  120. package/lib/widgets/charts/layered/LayeredChartDesignerComponent.js +21 -3
  121. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.d.ts +1 -2
  122. package/lib/widgets/charts/layered/LayeredChartLayerDesignerComponent.js +2 -1
  123. package/lib/widgets/charts/layered/LayeredChartViewComponent.d.ts +1 -4
  124. package/lib/widgets/charts/layered/LayeredChartViewComponent.js +89 -38
  125. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.d.ts +5 -112
  126. package/lib/widgets/charts/pivot/IntersectionDesignerComponent.js +122 -166
  127. package/lib/widgets/charts/pivot/PivotChart.d.ts +6 -0
  128. package/lib/widgets/charts/pivot/PivotChart.js +47 -17
  129. package/lib/widgets/charts/pivot/PivotChartDesign.d.ts +11 -0
  130. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.d.ts +1 -1
  131. package/lib/widgets/charts/pivot/PivotChartDesignerComponent.js +1 -1
  132. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.d.ts +2 -2
  133. package/lib/widgets/charts/pivot/PivotChartLayoutBuilder.js +20 -36
  134. package/lib/widgets/charts/pivot/PivotChartLayoutComponent.js +0 -1
  135. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.d.ts +23 -2
  136. package/lib/widgets/charts/pivot/PivotChartQueryBuilder.js +215 -181
  137. package/lib/widgets/charts/pivot/PivotChartUtils.d.ts +2 -2
  138. package/lib/widgets/charts/pivot/PivotChartViewComponent.d.ts +9 -28
  139. package/lib/widgets/charts/pivot/PivotChartViewComponent.js +20 -60
  140. package/lib/widgets/charts/table/TableChart.js +8 -4
  141. package/lib/widgets/charts/table/TableChartDesignerComponent.js +3 -3
  142. package/lib/widgets/charts/table/TableChartViewComponent.js +11 -11
  143. package/lib/widgets/text/TextComponent.d.ts +5 -12
  144. package/lib/widgets/text/TextComponent.js +19 -39
  145. package/lib/widgets/text/TextWidget.d.ts +2 -1
  146. package/lib/widgets/text/TextWidget.js +5 -1
  147. package/lib/widgets/text/TextWidgetComponent.d.ts +15 -3
  148. package/lib/widgets/text/TextWidgetComponent.js +76 -19
  149. package/lib/widgets/text/TextWidgetDesign.d.ts +13 -1
  150. package/lib/widgets/text/TextWidgetDesign.js +6 -0
  151. package/package.json +4 -4
  152. package/src/ColorComponent.tsx +177 -0
  153. package/src/ColorSchemeFactory.ts +12 -6
  154. package/src/CustomColorsContext.tsx +9 -0
  155. package/src/FiltersDesignerComponent.ts +3 -4
  156. package/src/LocaleContextInjector.tsx +14 -13
  157. package/src/MWaterAddRelatedFormComponent.ts +3 -3
  158. package/src/MWaterAddRelatedIndicatorComponent.ts +6 -6
  159. package/src/MWaterCompleteTableSelectComponent.tsx +36 -36
  160. package/src/MWaterContextComponent.tsx +8 -17
  161. package/src/MWaterLoaderComponent.ts +6 -3
  162. package/src/MWaterTableSelectComponent.tsx +11 -12
  163. package/src/{UIComponents.ts → UIComponents.tsx} +7 -15
  164. package/src/axes/AxisBuilder.ts +7 -5
  165. package/src/axes/AxisComponent.ts +3 -4
  166. package/src/axes/{ColorPaletteCollectionComponent.ts → ColorPaletteCollectionComponent.tsx} +87 -61
  167. package/src/dashboards/DashboardComponent.tsx +71 -107
  168. package/src/dashboards/DashboardDesign.ts +3 -3
  169. package/src/dashboards/DashboardUpgrader.ts +41 -1
  170. package/src/dashboards/DashboardViewComponent.tsx +313 -0
  171. package/src/dashboards/FontStyleEditor.tsx +166 -0
  172. package/src/dashboards/LayoutOptionsComponent.tsx +380 -75
  173. package/src/dashboards/ServerDashboardDataSource.ts +52 -33
  174. package/src/dashboards/WidgetComponent.tsx +6 -12
  175. package/src/dashboards/WidgetDataSourcePrioritizer.ts +82 -0
  176. package/src/dashboards/layoutOptions.tsx +581 -0
  177. package/src/datagrids/DatagridDesign.ts +8 -3
  178. package/src/datagrids/ServerDatagridDataSource.ts +106 -43
  179. package/src/demo.ts +3 -3
  180. package/src/index.css +5 -0
  181. package/src/index.ts +1 -1
  182. package/src/layouts/LayoutManager.ts +44 -42
  183. package/src/layouts/blocks/BlocksDisplayComponent.tsx +498 -0
  184. package/src/layouts/blocks/BlocksLayoutManager.ts +6 -15
  185. package/src/layouts/blocks/HorizontalBlockComponent.ts +9 -8
  186. package/src/mWaterLoader.ts +4 -1
  187. package/src/maps/AddLayerComponent.ts +9 -9
  188. package/src/maps/BingLayer.ts +16 -26
  189. package/src/maps/BufferLayer.ts +2 -1
  190. package/src/maps/ChoroplethLayer.ts +2 -1
  191. package/src/maps/DirectMapDataSource.ts +12 -3
  192. package/src/maps/EditPopupComponent.ts +2 -1
  193. package/src/maps/MapComponent.ts +3 -3
  194. package/src/maps/MarkersLayer.ts +38 -41
  195. package/src/maps/RasterMapViewComponent.ts +3 -3
  196. package/src/maps/ServerMapDataSource.ts +7 -7
  197. package/src/maps/VectorMapViewComponent.tsx +2 -1
  198. package/src/maps/mapSymbols.ts +2 -0
  199. package/src/maps/symbols/font-awesome/cloud-rain.png +0 -0
  200. package/src/maps/vectorMaps.tsx +79 -74
  201. package/src/quickfilter/QuickfiltersComponent.ts +3 -3
  202. package/src/richtext/DropdownPaletteItem.tsx +144 -0
  203. package/src/richtext/FontColorPaletteItem.tsx +160 -0
  204. package/src/richtext/ItemsHtmlConverter.ts +15 -5
  205. package/src/richtext/RichTextComponent.tsx +274 -232
  206. package/src/valueFormatter.ts +5 -1
  207. package/src/wellknown.ts +286 -0
  208. package/src/widgets/DropdownWidgetComponent.tsx +75 -0
  209. package/src/widgets/MapWidget.ts +5 -2
  210. package/src/widgets/TOCWidget.ts +2 -1
  211. package/src/widgets/Widget.ts +3 -0
  212. package/src/widgets/WidgetDataSource.ts +3 -1
  213. package/src/widgets/charts/Chart.ts +1 -1
  214. package/src/widgets/charts/ChartViewComponent.ts +16 -3
  215. package/src/widgets/charts/ChartWidget.ts +3 -275
  216. package/src/widgets/charts/ChartWidgetComponent.tsx +281 -0
  217. package/src/widgets/charts/calendar/CalendarChartViewComponent.tsx +4 -4
  218. package/src/widgets/charts/layered/LayeredChart.ts +4 -6
  219. package/src/widgets/charts/layered/LayeredChartCompiler.ts +80 -63
  220. package/src/widgets/charts/layered/LayeredChartDesign.ts +7 -1
  221. package/src/widgets/charts/layered/LayeredChartDesignerComponent.tsx +43 -10
  222. package/src/widgets/charts/layered/LayeredChartLayerDesignerComponent.tsx +6 -6
  223. package/src/widgets/charts/layered/LayeredChartViewComponent.ts +140 -88
  224. package/src/widgets/charts/pivot/IntersectionDesignerComponent.tsx +305 -221
  225. package/src/widgets/charts/pivot/PivotChart.ts +56 -18
  226. package/src/widgets/charts/pivot/PivotChartDesign.ts +12 -0
  227. package/src/widgets/charts/pivot/PivotChartDesignerComponent.tsx +4 -3
  228. package/src/widgets/charts/pivot/PivotChartLayoutBuilder.ts +39 -76
  229. package/src/widgets/charts/pivot/PivotChartLayoutComponent.tsx +0 -1
  230. package/src/widgets/charts/pivot/PivotChartQueryBuilder.ts +230 -189
  231. package/src/widgets/charts/pivot/PivotChartUtils.ts +4 -4
  232. package/src/widgets/charts/pivot/{PivotChartViewComponent.ts → PivotChartViewComponent.tsx} +86 -89
  233. package/src/widgets/charts/table/TableChart.ts +8 -4
  234. package/src/widgets/charts/table/TableChartDesignerComponent.ts +4 -4
  235. package/src/widgets/charts/table/TableChartViewComponent.ts +13 -14
  236. package/src/widgets/text/TextComponent.tsx +47 -49
  237. package/src/widgets/text/TextWidget.ts +8 -3
  238. package/src/widgets/text/TextWidgetComponent.tsx +249 -0
  239. package/src/widgets/text/TextWidgetDesign.ts +22 -1
  240. package/src/ColorComponent.ts +0 -117
  241. package/src/dashboards/DashboardViewComponent.ts +0 -303
  242. package/src/dashboards/layoutOptions.ts +0 -40
  243. package/src/layout-styles.css +0 -263
  244. package/src/layouts/blocks/BlocksDisplayComponent.ts +0 -461
  245. package/src/layouts/grid/GridLayoutComponent.ts +0 -67
  246. package/src/layouts/grid/GridLayoutManager.ts +0 -185
  247. package/src/layouts/grid/LegoLayoutEngine.ts +0 -142
  248. package/src/layouts/grid/PaletteItemComponent.ts +0 -28
  249. package/src/layouts/grid/README.md +0 -14
  250. package/src/layouts/grid/WidgetContainerComponent.ts +0 -420
  251. package/src/richtext/FontColorPaletteItem.ts +0 -172
  252. package/src/richtext/FontSizePaletteItem.ts +0 -110
  253. package/src/widgets/DropdownWidgetComponent.ts +0 -78
  254. package/src/widgets/text/TextWidgetComponent.ts +0 -120
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const lodash_1 = __importDefault(require("lodash"));
7
- const prop_types_1 = __importDefault(require("prop-types"));
8
7
  const react_1 = __importDefault(require("react"));
9
8
  const R = react_1.default.createElement;
10
9
  const react_select_1 = __importDefault(require("react-select"));
@@ -14,6 +13,7 @@ const TextLiteralComponent_1 = __importDefault(require("./TextLiteralComponent")
14
13
  const DateExprComponent_1 = __importDefault(require("./DateExprComponent"));
15
14
  const QuickfilterCompiler_1 = __importDefault(require("./QuickfilterCompiler"));
16
15
  const IdArrayQuickfilterComponent_1 = __importDefault(require("./IdArrayQuickfilterComponent"));
16
+ const contexts_1 = require("@mwater/expressions-ui/lib/contexts");
17
17
  /** Displays quick filters and allows their value to be modified */
18
18
  class QuickfiltersComponent extends react_1.default.Component {
19
19
  renderQuickfilter(item, index) {
@@ -153,7 +153,7 @@ class QuickfiltersComponent extends react_1.default.Component {
153
153
  exports.default = QuickfiltersComponent;
154
154
  /** Quickfilter for an enum */
155
155
  class EnumQuickfilterComponent extends react_1.default.Component {
156
- static contextTypes = { locale: prop_types_1.default.string };
156
+ static contextType = contexts_1.LocaleContext;
157
157
  handleSingleChange = (val) => {
158
158
  if (val) {
159
159
  return this.props.onValueChange(val);
@@ -206,7 +206,7 @@ class EnumQuickfilterComponent extends react_1.default.Component {
206
206
  render() {
207
207
  const options = lodash_1.default.map(this.props.options, (opt) => ({
208
208
  value: opt.id,
209
- label: expressions_1.ExprUtils.localizeString(opt.name, this.context.locale)
209
+ label: expressions_1.ExprUtils.localizeString(opt.name, this.context)
210
210
  }));
211
211
  // Determine width, estimating about 8 px per letter with 120px padding
212
212
  let width = lodash_1.default.max(options, (o) => o.label.length)?.label?.length;
@@ -0,0 +1,32 @@
1
+ import React, { ReactNode } from "react";
2
+ export interface DropdownItem {
3
+ label: ReactNode;
4
+ value: string;
5
+ /** If true, this item will be rendered only when "More..." is clicked. */
6
+ more?: boolean;
7
+ }
8
+ export interface DropdownPaletteItemProps {
9
+ label: ReactNode;
10
+ items: DropdownItem[];
11
+ /** Called with clicked item */
12
+ onSelect: (value: string) => void;
13
+ /** should the popup be under or over? */
14
+ position?: "under" | "over";
15
+ }
16
+ interface DropdownPaletteItemState {
17
+ open: boolean;
18
+ moreOpen: boolean;
19
+ }
20
+ /** Palette item that allows picking from dropdown */
21
+ export default class DropdownPaletteItem extends React.Component<DropdownPaletteItemProps, DropdownPaletteItemState> {
22
+ static defaultProps: {
23
+ position: string;
24
+ };
25
+ constructor(props: DropdownPaletteItemProps);
26
+ handleMouseDown: (ev: React.MouseEvent) => void;
27
+ handleMoreClick: (ev: React.MouseEvent) => void;
28
+ renderItem(item: DropdownItem): React.JSX.Element;
29
+ renderItems(): React.JSX.Element;
30
+ render(): React.JSX.Element;
31
+ }
32
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_onclickout_1 = __importDefault(require("react-onclickout"));
8
+ /** Palette item that allows picking from dropdown */
9
+ class DropdownPaletteItem extends react_1.default.Component {
10
+ static defaultProps = { position: "under" };
11
+ constructor(props) {
12
+ super(props);
13
+ this.state = {
14
+ open: false,
15
+ moreOpen: false
16
+ };
17
+ }
18
+ handleMouseDown = (ev) => {
19
+ // Ignore if clicking on menu
20
+ if (ev.target.className === "dropdown-palette-menu-item") {
21
+ return;
22
+ }
23
+ // Don't lose focus from editor
24
+ ev.preventDefault();
25
+ this.setState({ open: !this.state.open });
26
+ };
27
+ handleMoreClick = (ev) => {
28
+ ev.preventDefault();
29
+ this.setState({ moreOpen: true });
30
+ };
31
+ renderItem(item) {
32
+ return (react_1.default.createElement("div", { className: "dropdown-palette-menu-item", onMouseDown: (ev) => {
33
+ ev.preventDefault();
34
+ this.props.onSelect(item.value);
35
+ this.setState({ open: false });
36
+ }, key: item.value }, item.label));
37
+ }
38
+ renderItems() {
39
+ const visibleItems = this.state.moreOpen ? this.props.items : this.props.items.filter(item => !item.more);
40
+ const halfLength = Math.ceil(visibleItems.length / 2);
41
+ const leftColumn = visibleItems.slice(0, halfLength);
42
+ const rightColumn = visibleItems.slice(halfLength);
43
+ return (react_1.default.createElement("div", { className: "dropdown-palette-menu" },
44
+ react_1.default.createElement("div", { style: { display: 'flex' } },
45
+ react_1.default.createElement("div", { style: { flex: 1 } }, leftColumn.map(item => this.renderItem(item))),
46
+ react_1.default.createElement("div", { style: { flex: 1 } }, rightColumn.map(item => this.renderItem(item)))),
47
+ this.props.items.some(item => item.more) && !this.state.moreOpen && (react_1.default.createElement("div", { className: "dropdown-palette-menu-item", onMouseDown: this.handleMoreClick }, "More..."))));
48
+ }
49
+ render() {
50
+ const popupPosition = {
51
+ position: "absolute",
52
+ left: 0,
53
+ zIndex: 1000,
54
+ backgroundColor: "white",
55
+ border: "solid 1px #AAA",
56
+ borderRadius: 3
57
+ };
58
+ if (this.props.position === "under") {
59
+ popupPosition.top = 26;
60
+ }
61
+ else {
62
+ popupPosition.bottom = 26;
63
+ }
64
+ return (react_1.default.createElement(react_onclickout_1.default, { onClickOut: () => this.setState({ open: false, moreOpen: false }) },
65
+ react_1.default.createElement("div", { className: "mwater-visualization-text-palette-item", style: { position: "relative" }, onMouseDown: this.handleMouseDown },
66
+ react_1.default.createElement("style", null, `
67
+ .dropdown-palette-menu-item {
68
+ color: black;
69
+ background-color: white;
70
+ text-align: left;
71
+ padding: 5px 15px 5px 15px;
72
+ cursor: pointer;
73
+ }
74
+ .dropdown-palette-menu-item:hover {
75
+ background-color: #DDD;
76
+ }
77
+ `),
78
+ this.state.open ? react_1.default.createElement("div", { style: popupPosition }, this.renderItems()) : undefined,
79
+ this.props.label)));
80
+ }
81
+ }
82
+ exports.default = DropdownPaletteItem;
@@ -14,10 +14,6 @@ export default class FontColorPaletteItem extends React.Component<FontColorPalet
14
14
  };
15
15
  constructor(props: any);
16
16
  handleMouseDown: (ev: any) => void;
17
- render(): React.CElement<{
18
- onClickOut: () => void;
19
- }, React.Component<{
20
- onClickOut: () => void;
21
- }, any, any>>;
17
+ render(): React.JSX.Element;
22
18
  }
23
19
  export {};
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
- const R = react_1.default.createElement;
8
7
  const lodash_1 = __importDefault(require("lodash"));
9
8
  const react_onclickout_1 = __importDefault(require("react-onclickout"));
10
9
  const color_1 = __importDefault(require("color"));
10
+ const CustomColorsContext_1 = require("../CustomColorsContext");
11
11
  // Palette item that allows picking a color
12
12
  class FontColorPaletteItem extends react_1.default.Component {
13
13
  static defaultProps = { position: "under" };
@@ -37,30 +37,25 @@ class FontColorPaletteItem extends react_1.default.Component {
37
37
  else {
38
38
  popupPosition["bottom"] = 26;
39
39
  }
40
- return R(react_onclickout_1.default, { onClickOut: () => this.setState({ open: false }) }, R("div", {
41
- className: "mwater-visualization-text-palette-item",
42
- onMouseDown: this.handleMouseDown,
43
- style: { position: "relative" }
44
- }, this.state.open
45
- ? R("div", { style: popupPosition }, R(ColorPaletteComponent, {
46
- onSetColor: (color) => {
47
- this.props.onSetColor(color);
48
- return this.setState({ open: false });
49
- }
50
- }))
51
- : undefined, R("i", { className: "fa fa-tint" })));
40
+ return (react_1.default.createElement(react_onclickout_1.default, { onClickOut: () => this.setState({ open: false }) },
41
+ react_1.default.createElement("div", { className: "mwater-visualization-text-palette-item", onMouseDown: this.handleMouseDown, style: { position: "relative" } },
42
+ this.state.open ? (react_1.default.createElement("div", { style: popupPosition },
43
+ react_1.default.createElement(ColorPaletteComponent, { onSetColor: (color) => {
44
+ this.props.onSetColor(color);
45
+ return this.setState({ open: false });
46
+ } }))) : undefined,
47
+ react_1.default.createElement("i", { className: "fas fa-palette" }))));
52
48
  }
53
49
  }
54
50
  exports.default = FontColorPaletteItem;
55
51
  class ColorPaletteComponent extends react_1.default.Component {
52
+ static contextType = CustomColorsContext_1.CustomColorsContext;
56
53
  renderColor(color) {
57
- return R("td", null, R("div", {
58
- style: { width: 16, height: 15, backgroundColor: color, margin: 1 },
59
- onMouseDown: (ev) => {
60
- ev.preventDefault();
61
- return this.props.onSetColor(color);
62
- }
63
- }));
54
+ return (react_1.default.createElement("td", null,
55
+ react_1.default.createElement("div", { style: { width: 16, height: 15, backgroundColor: color, margin: 1 }, onMouseDown: (ev) => {
56
+ ev.preventDefault();
57
+ this.props.onSetColor(color);
58
+ } })));
64
59
  }
65
60
  render() {
66
61
  const baseColors = [
@@ -73,12 +68,22 @@ class ColorPaletteComponent extends react_1.default.Component {
73
68
  "#9900FF",
74
69
  "#FF00FF" // magenta
75
70
  ];
76
- return R("div", { style: { padding: 5 } }, R("table", null, R("tbody", null,
77
- // Grey shades
78
- R("tr", null, lodash_1.default.map(lodash_1.default.range(0, 8), (i) => {
79
- return this.renderColor((0, color_1.default)({ r: (i * 255) / 7, g: (i * 255) / 7, b: (i * 255) / 7 }).hex());
80
- })), R("tr", { style: { height: 5 } }),
81
- // Base colors
82
- R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor(c))), R("tr", { style: { height: 5 } }), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.7).hex()))), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.5).hex()))), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.3).hex()))), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.3).hex()))), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.5).hex()))), R("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.7).hex()))))));
71
+ const customColors = this.context?.customColors || [];
72
+ return (react_1.default.createElement("div", { style: { padding: 5 } },
73
+ react_1.default.createElement("table", null,
74
+ react_1.default.createElement("tbody", null,
75
+ lodash_1.default.chunk(customColors.filter(color => color != null), 8).map((colorGroup, index) => (react_1.default.createElement("tr", { key: index }, colorGroup.map((color) => this.renderColor(color))))),
76
+ react_1.default.createElement("tr", null, lodash_1.default.map(lodash_1.default.range(0, 8), (i) => {
77
+ return this.renderColor((0, color_1.default)({ r: (i * 255) / 7, g: (i * 255) / 7, b: (i * 255) / 7 }).hex());
78
+ })),
79
+ react_1.default.createElement("tr", { style: { height: 5 } }),
80
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor(c))),
81
+ react_1.default.createElement("tr", { style: { height: 5 } }),
82
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.7).hex()))),
83
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.5).hex()))),
84
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).lighten(0.3).hex()))),
85
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.3).hex()))),
86
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.5).hex()))),
87
+ react_1.default.createElement("tr", null, lodash_1.default.map(baseColors, (c) => this.renderColor((0, color_1.default)(c).darken(0.7).hex())))))));
83
88
  }
84
89
  }
@@ -65,6 +65,9 @@ class ItemsHtmlConverter {
65
65
  if (!allowedStyles[key]) {
66
66
  continue;
67
67
  }
68
+ if (value == null || value === "") {
69
+ continue;
70
+ }
68
71
  if (!first) {
69
72
  attrs += " ";
70
73
  }
@@ -133,13 +136,19 @@ class ItemsHtmlConverter {
133
136
  }
134
137
  const item = { type: "element", tag, items: this.convertElemToItems(node) };
135
138
  // Add style
136
- if (node.style != null) {
137
- for (style of node.style) {
139
+ const nodeElement = node;
140
+ if (nodeElement.style != null) {
141
+ const styleDeclaration = nodeElement.style;
142
+ for (const style of styleDeclaration) {
138
143
  if (!allowedStyles[style]) {
139
144
  continue;
140
145
  }
146
+ const value = styleDeclaration[style];
147
+ if (value == null || value === "") {
148
+ continue;
149
+ }
141
150
  item.style = item.style || {};
142
- item.style[style] = node.style[style];
151
+ item.style[style] = value;
143
152
  }
144
153
  }
145
154
  // Convert align (Firefox)
@@ -1,14 +1,14 @@
1
- import React, { ReactNode } from "react";
1
+ import React, { ReactNode, CSSProperties, MouseEvent } from "react";
2
2
  import { ContentEditableComponent } from "@mwater/expressions-ui";
3
3
  import ItemsHtmlConverter, { HtmlItem } from "./ItemsHtmlConverter";
4
4
  export interface RichTextComponentProps {
5
5
  items?: HtmlItem[];
6
- onItemsChange: (items: HtmlItem[]) => void;
6
+ onItemsChange?: (items: HtmlItem[]) => void;
7
7
  onItemClick?: (item: HtmlItem) => void;
8
8
  /** Optional className of editor wrapper */
9
9
  className?: string;
10
10
  /** Optional style of editor wrapper */
11
- style?: any;
11
+ style?: CSSProperties;
12
12
  /** Converter to use for editing */
13
13
  itemsHtmlConverter?: ItemsHtmlConverter;
14
14
  /** True (default) to include heading h1, h2 in palette */
@@ -16,9 +16,10 @@ export interface RichTextComponentProps {
16
16
  /** Extra buttons to put in palette */
17
17
  extraPaletteButtons?: ReactNode;
18
18
  }
19
- export default class RichTextComponent extends React.Component<RichTextComponentProps, {
19
+ interface RichTextComponentState {
20
20
  focused: boolean;
21
- }> {
21
+ }
22
+ export default class RichTextComponent extends React.Component<RichTextComponentProps, RichTextComponentState> {
22
23
  static defaultProps: {
23
24
  includeHeadings: boolean;
24
25
  items: never[];
@@ -27,58 +28,31 @@ export default class RichTextComponent extends React.Component<RichTextComponent
27
28
  entireComponent: HTMLElement | null;
28
29
  contentEditable: ContentEditableComponent | null;
29
30
  paletteComponent: HTMLElement | null;
30
- constructor(props: any);
31
- handleClick: (ev: any) => void;
32
- pasteHTML(html: any): void;
31
+ /** Number of changes in progress. Used with beginChanges and endChanges
32
+ * to prevent onChange being called during a change */
33
+ changesInProgress: number;
34
+ constructor(props: RichTextComponentProps);
35
+ handleClick: (ev: MouseEvent) => void;
36
+ pasteHTML(html: string): void;
33
37
  focus(): void;
38
+ beginChanges(): void;
39
+ endChanges(): void;
34
40
  handleInsertExpr: (item: any) => void;
35
- handleSetFontSize: (size: any) => any;
36
- handleSetFontColor: (color: any) => void;
37
- handleChange: (elem: any) => void;
41
+ handleSetFontColor: (color: string) => void;
42
+ handleSetFontSize: (tag: string, size: string | null) => void;
43
+ handleChange: (elem: HTMLElement) => void;
38
44
  handleFocus: () => void;
39
45
  handleBlur: () => void;
40
- handleCommand: (command: any, param: any, ev?: any) => boolean;
41
- handleCreateLink: (ev: any) => void;
42
- handleEditorClick: (ev: any) => void;
46
+ handleCommand: (command: string, param: any, ev?: MouseEvent) => void;
47
+ handleCreateLink: (ev: MouseEvent) => void;
48
+ handleEditorClick: (ev: MouseEvent) => void;
43
49
  createHtml(): string;
44
- renderPalette(): React.CElement<{
45
- style: {
46
- zIndex: number | null;
47
- };
48
- edges: string;
49
- align: string;
50
- render: (schemeName: any, { edges }: any) => React.DetailedReactHTMLElement<{
51
- key: string;
52
- className: string;
53
- ref: (c: HTMLElement | null) => void;
54
- }, HTMLElement>;
55
- }, React.Component<{
56
- style: {
57
- zIndex: number | null;
58
- };
50
+ renderPalette(): React.JSX.Element;
51
+ renderPaletteContent: (schemeName: string, { edges }: {
59
52
  edges: string;
60
- align: string;
61
- render: (schemeName: any, { edges }: any) => React.DetailedReactHTMLElement<{
62
- key: string;
63
- className: string;
64
- ref: (c: HTMLElement | null) => void;
65
- }, HTMLElement>;
66
- }, any, any>>;
67
- renderPaletteContent: (schemeName: any, { edges }: any) => React.DetailedReactHTMLElement<{
68
- key: string;
69
- className: string;
70
- ref: (c: HTMLElement | null) => void;
71
- }, HTMLElement>;
53
+ }) => React.JSX.Element;
72
54
  refContentEditable: (c: ContentEditableComponent | null) => void;
73
- renderHtml(): React.DetailedReactHTMLElement<{
74
- key: string;
75
- style: any;
76
- className: string | undefined;
77
- }, HTMLElement>;
78
- render(): React.DetailedReactHTMLElement<{
79
- style: {
80
- position: "relative";
81
- };
82
- ref: (c: HTMLElement | null) => void;
83
- }, HTMLElement>;
55
+ renderHtml(): React.JSX.Element;
56
+ render(): React.JSX.Element;
84
57
  }
58
+ export {};