@sis-cc/dotstatsuite-components 22.0.1 → 22.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/dist/bridge-d3-react/src/index.js +18 -0
  2. package/dist/bridge-d3-react/src/index.js.map +1 -0
  3. package/dist/bridge-d3-react/src/react-chart-factory.js +44 -0
  4. package/dist/bridge-d3-react/src/react-chart-factory.js.map +1 -0
  5. package/dist/rules/src/chart/getAxisOptions.js +256 -0
  6. package/dist/rules/src/chart/getAxisOptions.js.map +1 -0
  7. package/dist/rules/src/chart/getBaseOptions.js +77 -0
  8. package/dist/rules/src/chart/getBaseOptions.js.map +1 -0
  9. package/dist/rules/src/chart/getChartOptions.js +120 -0
  10. package/dist/rules/src/chart/getChartOptions.js.map +1 -0
  11. package/dist/rules/src/chart/getGridOptions.js +46 -0
  12. package/dist/rules/src/chart/getGridOptions.js.map +1 -0
  13. package/dist/rules/src/chart/getTooltipOptions.js +223 -0
  14. package/dist/rules/src/chart/getTooltipOptions.js.map +1 -0
  15. package/dist/rules/src/constants.js +65 -0
  16. package/dist/rules/src/constants.js.map +1 -0
  17. package/dist/rules/src/date.js +121 -0
  18. package/dist/rules/src/date.js.map +1 -0
  19. package/dist/rules/src/dimension-utils.js +57 -0
  20. package/dist/rules/src/dimension-utils.js.map +1 -0
  21. package/dist/rules/src/factories/choro-series.js +68 -0
  22. package/dist/rules/src/factories/choro-series.js.map +1 -0
  23. package/dist/rules/src/factories/sample-focus.js +25 -0
  24. package/dist/rules/src/factories/sample-focus.js.map +1 -0
  25. package/dist/rules/src/factories/sample-series.js +53 -0
  26. package/dist/rules/src/factories/sample-series.js.map +1 -0
  27. package/dist/rules/src/factories/scatter-dimension.js +35 -0
  28. package/dist/rules/src/factories/scatter-dimension.js.map +1 -0
  29. package/dist/rules/src/factories/scatter-focus.js +42 -0
  30. package/dist/rules/src/factories/scatter-focus.js.map +1 -0
  31. package/dist/rules/src/factories/scatter-series.js +91 -0
  32. package/dist/rules/src/factories/scatter-series.js.map +1 -0
  33. package/dist/rules/src/factories/stacked-dimension.js +32 -0
  34. package/dist/rules/src/factories/stacked-dimension.js.map +1 -0
  35. package/dist/rules/src/factories/stacked-series.js +188 -0
  36. package/dist/rules/src/factories/stacked-series.js.map +1 -0
  37. package/dist/rules/src/factories/symbol-dimension.js +32 -0
  38. package/dist/rules/src/factories/symbol-dimension.js.map +1 -0
  39. package/dist/rules/src/factories/symbol-series.js +65 -0
  40. package/dist/rules/src/factories/symbol-series.js.map +1 -0
  41. package/dist/rules/src/factories/timeline-focus.js +21 -0
  42. package/dist/rules/src/factories/timeline-focus.js.map +1 -0
  43. package/dist/rules/src/factories/timeline-series.js +94 -0
  44. package/dist/rules/src/factories/timeline-series.js.map +1 -0
  45. package/dist/rules/src/get-values-enhanced.js +133 -0
  46. package/dist/rules/src/get-values-enhanced.js.map +1 -0
  47. package/dist/rules/src/header/getDefaultSubtitle.js +44 -0
  48. package/dist/rules/src/header/getDefaultSubtitle.js.map +1 -0
  49. package/dist/rules/src/header/getHeaderUnits.js +21 -0
  50. package/dist/rules/src/header/getHeaderUnits.js.map +1 -0
  51. package/dist/rules/src/header/getSubtitleFlags.js +47 -0
  52. package/dist/rules/src/header/getSubtitleFlags.js.map +1 -0
  53. package/dist/rules/src/header/getTitleFlags.js +12 -0
  54. package/dist/rules/src/header/getTitleFlags.js.map +1 -0
  55. package/dist/rules/src/index.js +378 -0
  56. package/dist/rules/src/index.js.map +1 -0
  57. package/dist/rules/src/layout.js +107 -0
  58. package/dist/rules/src/layout.js.map +1 -0
  59. package/dist/rules/src/observation-formater.js +86 -0
  60. package/dist/rules/src/observation-formater.js.map +1 -0
  61. package/dist/rules/src/preparators/formatValue.js +96 -0
  62. package/dist/rules/src/preparators/formatValue.js.map +1 -0
  63. package/dist/rules/src/preparators/getObservations.js +22 -0
  64. package/dist/rules/src/preparators/getObservations.js.map +1 -0
  65. package/dist/rules/src/preparators/getReportingYearStart.js +19 -0
  66. package/dist/rules/src/preparators/getReportingYearStart.js.map +1 -0
  67. package/dist/rules/src/properties/errors.js +22 -0
  68. package/dist/rules/src/properties/errors.js.map +1 -0
  69. package/dist/rules/src/properties/focus.js +72 -0
  70. package/dist/rules/src/properties/focus.js.map +1 -0
  71. package/dist/rules/src/properties/getAvailableChartTypes.js +31 -0
  72. package/dist/rules/src/properties/getAvailableChartTypes.js.map +1 -0
  73. package/dist/rules/src/properties/getHeaderProps.js +76 -0
  74. package/dist/rules/src/properties/getHeaderProps.js.map +1 -0
  75. package/dist/rules/src/properties/getInformationsStateFromNewProps.js +50 -0
  76. package/dist/rules/src/properties/getInformationsStateFromNewProps.js.map +1 -0
  77. package/dist/rules/src/properties/getObservationsType.js +28 -0
  78. package/dist/rules/src/properties/getObservationsType.js.map +1 -0
  79. package/dist/rules/src/properties/getStringifiedSubtitle.js +9 -0
  80. package/dist/rules/src/properties/getStringifiedSubtitle.js.map +1 -0
  81. package/dist/rules/src/properties/index.js +384 -0
  82. package/dist/rules/src/properties/index.js.map +1 -0
  83. package/dist/rules/src/properties/linear.js +123 -0
  84. package/dist/rules/src/properties/linear.js.map +1 -0
  85. package/dist/rules/src/properties/scatter.js +156 -0
  86. package/dist/rules/src/properties/scatter.js.map +1 -0
  87. package/dist/rules/src/properties/stacked.js +96 -0
  88. package/dist/rules/src/properties/stacked.js.map +1 -0
  89. package/dist/rules/src/properties/symbol.js +76 -0
  90. package/dist/rules/src/properties/symbol.js.map +1 -0
  91. package/dist/rules/src/properties/utils.js +86 -0
  92. package/dist/rules/src/properties/utils.js.map +1 -0
  93. package/dist/rules/src/sdmx-data/index.js +38 -0
  94. package/dist/rules/src/sdmx-data/index.js.map +1 -0
  95. package/dist/rules/src/table/factories/getCellValue.js +53 -0
  96. package/dist/rules/src/table/factories/getCellValue.js.map +1 -0
  97. package/dist/rules/src/v8-transformer.js +174 -0
  98. package/dist/rules/src/v8-transformer.js.map +1 -0
  99. package/dist/rules2/src/applyHierarchicalCodesToDim.js +126 -0
  100. package/dist/rules2/src/applyHierarchicalCodesToDim.js.map +1 -0
  101. package/dist/rules2/src/combinedValuesDisplay.js +77 -0
  102. package/dist/rules2/src/combinedValuesDisplay.js.map +1 -0
  103. package/dist/rules2/src/constants.js +9 -0
  104. package/dist/rules2/src/constants.js.map +1 -0
  105. package/dist/rules2/src/duplicateObservations.js +38 -0
  106. package/dist/rules2/src/duplicateObservations.js.map +1 -0
  107. package/dist/rules2/src/enhanceObservations.js +98 -0
  108. package/dist/rules2/src/enhanceObservations.js.map +1 -0
  109. package/dist/rules2/src/getAttributesSeries.js +39 -0
  110. package/dist/rules2/src/getAttributesSeries.js.map +1 -0
  111. package/dist/rules2/src/getCombinationDefinitions.js +50 -0
  112. package/dist/rules2/src/getCombinationDefinitions.js.map +1 -0
  113. package/dist/rules2/src/getDataflowAttributes.js +25 -0
  114. package/dist/rules2/src/getDataflowAttributes.js.map +1 -0
  115. package/dist/rules2/src/getDataflowTooltipAttributesIds.js +33 -0
  116. package/dist/rules2/src/getDataflowTooltipAttributesIds.js.map +1 -0
  117. package/dist/rules2/src/getDimensionValuesIndexes.js +16 -0
  118. package/dist/rules2/src/getDimensionValuesIndexes.js.map +1 -0
  119. package/dist/rules2/src/getHCodelistsRefsInData.js +35 -0
  120. package/dist/rules2/src/getHCodelistsRefsInData.js.map +1 -0
  121. package/dist/rules2/src/getHeaderCombinations.js +51 -0
  122. package/dist/rules2/src/getHeaderCombinations.js.map +1 -0
  123. package/dist/rules2/src/getHeaderCoordinates.js +10 -0
  124. package/dist/rules2/src/getHeaderCoordinates.js.map +1 -0
  125. package/dist/rules2/src/getHeaderSubtitle.js +37 -0
  126. package/dist/rules2/src/getHeaderSubtitle.js.map +1 -0
  127. package/dist/rules2/src/getHeaderTitle.js +18 -0
  128. package/dist/rules2/src/getHeaderTitle.js.map +1 -0
  129. package/dist/rules2/src/getMSDInformations.js +26 -0
  130. package/dist/rules2/src/getMSDInformations.js.map +1 -0
  131. package/dist/rules2/src/getManyValuesDimensions.js +37 -0
  132. package/dist/rules2/src/getManyValuesDimensions.js.map +1 -0
  133. package/dist/rules2/src/getMetadataCoordinates.js +40 -0
  134. package/dist/rules2/src/getMetadataCoordinates.js.map +1 -0
  135. package/dist/rules2/src/getNotDisplayedIds.js +56 -0
  136. package/dist/rules2/src/getNotDisplayedIds.js.map +1 -0
  137. package/dist/rules2/src/getOneValueDimensions.js +37 -0
  138. package/dist/rules2/src/getOneValueDimensions.js.map +1 -0
  139. package/dist/rules2/src/getSeriesCombinations.js +27 -0
  140. package/dist/rules2/src/getSeriesCombinations.js.map +1 -0
  141. package/dist/rules2/src/hasCellMetadata.js +17 -0
  142. package/dist/rules2/src/hasCellMetadata.js.map +1 -0
  143. package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +60 -0
  144. package/dist/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js.map +1 -0
  145. package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +38 -0
  146. package/dist/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js.map +1 -0
  147. package/dist/rules2/src/index.js +47 -0
  148. package/dist/rules2/src/index.js.map +1 -0
  149. package/dist/rules2/src/parseAttributes.js +44 -0
  150. package/dist/rules2/src/parseAttributes.js.map +1 -0
  151. package/dist/rules2/src/parseCombinations.js +105 -0
  152. package/dist/rules2/src/parseCombinations.js.map +1 -0
  153. package/dist/rules2/src/parseHierarchicalCodelist.js +34 -0
  154. package/dist/rules2/src/parseHierarchicalCodelist.js.map +1 -0
  155. package/dist/rules2/src/parseMetadataSeries.js +124 -0
  156. package/dist/rules2/src/parseMetadataSeries.js.map +1 -0
  157. package/dist/rules2/src/prepareData.js +78 -0
  158. package/dist/rules2/src/prepareData.js.map +1 -0
  159. package/dist/rules2/src/refineAttributes.js +19 -0
  160. package/dist/rules2/src/refineAttributes.js.map +1 -0
  161. package/dist/rules2/src/refineDimensions.js +21 -0
  162. package/dist/rules2/src/refineDimensions.js.map +1 -0
  163. package/dist/rules2/src/refineTimePeriod.js +130 -0
  164. package/dist/rules2/src/refineTimePeriod.js.map +1 -0
  165. package/dist/rules2/src/sdmx3.0DataFormatPatch.js +12 -0
  166. package/dist/rules2/src/sdmx3.0DataFormatPatch.js.map +1 -0
  167. package/dist/rules2/src/table/declineObservationsOverAttributes.js +35 -0
  168. package/dist/rules2/src/table/declineObservationsOverAttributes.js.map +1 -0
  169. package/dist/rules2/src/table/getCells.js +96 -0
  170. package/dist/rules2/src/table/getCells.js.map +1 -0
  171. package/dist/rules2/src/table/getCellsAttributesIds.js +41 -0
  172. package/dist/rules2/src/table/getCellsAttributesIds.js.map +1 -0
  173. package/dist/rules2/src/table/getCellsMetadataCoordinates.js +16 -0
  174. package/dist/rules2/src/table/getCellsMetadataCoordinates.js.map +1 -0
  175. package/dist/rules2/src/table/getCuratedCells.js +36 -0
  176. package/dist/rules2/src/table/getCuratedCells.js.map +1 -0
  177. package/dist/rules2/src/table/getFlagsAndNotes.js +26 -0
  178. package/dist/rules2/src/table/getFlagsAndNotes.js.map +1 -0
  179. package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js +19 -0
  180. package/dist/rules2/src/table/getIndexedCombinationsByDisplay.js.map +1 -0
  181. package/dist/rules2/src/table/getLayout.js +87 -0
  182. package/dist/rules2/src/table/getLayout.js.map +1 -0
  183. package/dist/rules2/src/table/getLayoutData2.js +205 -0
  184. package/dist/rules2/src/table/getLayoutData2.js.map +1 -0
  185. package/dist/rules2/src/table/getSortedLayoutIndexes.js +141 -0
  186. package/dist/rules2/src/table/getSortedLayoutIndexes.js.map +1 -0
  187. package/dist/rules2/src/table/getTableLabelAccessor.js +11 -0
  188. package/dist/rules2/src/table/getTableLabelAccessor.js.map +1 -0
  189. package/dist/rules2/src/table/getTableLayoutIds.js +317 -0
  190. package/dist/rules2/src/table/getTableLayoutIds.js.map +1 -0
  191. package/dist/rules2/src/table/getTableProps.js +85 -0
  192. package/dist/rules2/src/table/getTableProps.js.map +1 -0
  193. package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js +82 -0
  194. package/dist/rules2/src/table/parseSeriesIndexesHierarchies.js.map +1 -0
  195. package/dist/rules2/src/table/parseValueHierarchy.js +29 -0
  196. package/dist/rules2/src/table/parseValueHierarchy.js.map +1 -0
  197. package/dist/rules2/src/table/refineLayoutSize2.js +324 -0
  198. package/dist/rules2/src/table/refineLayoutSize2.js.map +1 -0
  199. package/dist/rules2/src/utils.js +29 -0
  200. package/dist/rules2/src/utils.js.map +1 -0
  201. package/dist/viewer/src/chart.js +50 -0
  202. package/dist/viewer/src/chart.js.map +1 -0
  203. package/dist/viewer/src/chartUtils/options.js +33 -0
  204. package/dist/viewer/src/chartUtils/options.js.map +1 -0
  205. package/dist/viewer/src/chartUtils/series.js +54 -0
  206. package/dist/viewer/src/chartUtils/series.js.map +1 -0
  207. package/dist/viewer/src/footer.js +39 -0
  208. package/dist/viewer/src/footer.js.map +1 -0
  209. package/dist/viewer/src/header.js +12 -0
  210. package/dist/viewer/src/header.js.map +1 -0
  211. package/dist/viewer/src/index.js +160 -0
  212. package/dist/viewer/src/index.js.map +1 -0
  213. package/dist/viewer/src/legends/AxisLegend.js +42 -0
  214. package/dist/viewer/src/legends/AxisLegend.js.map +1 -0
  215. package/dist/viewer/src/legends/ChartLegends.js +80 -0
  216. package/dist/viewer/src/legends/ChartLegends.js.map +1 -0
  217. package/dist/viewer/src/legends/FocusLegend.js +67 -0
  218. package/dist/viewer/src/legends/FocusLegend.js.map +1 -0
  219. package/dist/viewer/src/legends/Legend.js +51 -0
  220. package/dist/viewer/src/legends/Legend.js.map +1 -0
  221. package/dist/viewer/src/legends/SeriesLegend.js +77 -0
  222. package/dist/viewer/src/legends/SeriesLegend.js.map +1 -0
  223. package/dist/viewer/src/utils.js +24 -0
  224. package/dist/viewer/src/utils.js.map +1 -0
  225. package/package.json +1 -1
  226. package/src/app.js +13 -0
  227. package/src/bridge-d3-react/README.md +42 -0
  228. package/src/bridge-d3-react/src/app.js +64 -0
  229. package/src/bridge-d3-react/src/index.js +16 -0
  230. package/src/bridge-d3-react/src/mock-choro.js +394 -0
  231. package/src/bridge-d3-react/src/react-chart-factory.jsx +65 -0
  232. package/src/index.js +10 -0
  233. package/src/rules/README.md +23 -0
  234. package/src/rules/src/chart/getAxisOptions.js +263 -0
  235. package/src/rules/src/chart/getBaseOptions.js +84 -0
  236. package/src/rules/src/chart/getChartOptions.js +118 -0
  237. package/src/rules/src/chart/getGridOptions.js +52 -0
  238. package/src/rules/src/chart/getTooltipOptions.js +230 -0
  239. package/src/rules/src/constants.js +64 -0
  240. package/src/rules/src/date.js +118 -0
  241. package/src/rules/src/dimension-utils.js +54 -0
  242. package/src/rules/src/factories/choro-series.js +65 -0
  243. package/src/rules/src/factories/sample-focus.js +22 -0
  244. package/src/rules/src/factories/sample-series.js +50 -0
  245. package/src/rules/src/factories/scatter-dimension.js +32 -0
  246. package/src/rules/src/factories/scatter-focus.js +39 -0
  247. package/src/rules/src/factories/scatter-series.js +92 -0
  248. package/src/rules/src/factories/stacked-dimension.js +29 -0
  249. package/src/rules/src/factories/stacked-series.js +185 -0
  250. package/src/rules/src/factories/symbol-dimension.js +29 -0
  251. package/src/rules/src/factories/symbol-series.js +62 -0
  252. package/src/rules/src/factories/timeline-focus.js +18 -0
  253. package/src/rules/src/factories/timeline-series.js +91 -0
  254. package/src/rules/src/get-values-enhanced.js +134 -0
  255. package/src/rules/src/header/getDefaultSubtitle.js +40 -0
  256. package/src/rules/src/header/getHeaderUnits.js +17 -0
  257. package/src/rules/src/header/getSubtitleFlags.js +43 -0
  258. package/src/rules/src/header/getTitleFlags.js +8 -0
  259. package/src/rules/src/header/index.js +4 -0
  260. package/src/rules/src/index.js +398 -0
  261. package/src/rules/src/layout.js +113 -0
  262. package/src/rules/src/observation-formater.js +83 -0
  263. package/src/rules/src/preparators/enhanceObservations.js +152 -0
  264. package/src/rules/src/preparators/formatValue.js +93 -0
  265. package/src/rules/src/preparators/getObservations.js +19 -0
  266. package/src/rules/src/preparators/getReportingYearStart.js +16 -0
  267. package/src/rules/src/properties/errors.js +19 -0
  268. package/src/rules/src/properties/focus.js +69 -0
  269. package/src/rules/src/properties/getAvailableChartTypes.js +34 -0
  270. package/src/rules/src/properties/getHeaderProps.js +74 -0
  271. package/src/rules/src/properties/getInformationsStateFromNewProps.js +47 -0
  272. package/src/rules/src/properties/getObservationsType.js +29 -0
  273. package/src/rules/src/properties/getStringifiedSubtitle.js +6 -0
  274. package/src/rules/src/properties/index.js +424 -0
  275. package/src/rules/src/properties/information.js +84 -0
  276. package/src/rules/src/properties/linear.js +129 -0
  277. package/src/rules/src/properties/scatter.js +158 -0
  278. package/src/rules/src/properties/stacked.js +98 -0
  279. package/src/rules/src/properties/symbol.js +79 -0
  280. package/src/rules/src/properties/utils.js +110 -0
  281. package/src/rules/src/sdmx-data/index.js +39 -0
  282. package/src/rules/src/table/factories/getCellValue.js +50 -0
  283. package/src/rules/src/table/index.js +1 -0
  284. package/src/rules/src/v8-transformer.js +177 -0
  285. package/src/rules2/src/applyHierarchicalCodesToDim.js +123 -0
  286. package/src/rules2/src/combinedValuesDisplay.js +74 -0
  287. package/src/rules2/src/constants.js +6 -0
  288. package/src/rules2/src/duplicateObservations.js +35 -0
  289. package/src/rules2/src/enhanceObservations.js +95 -0
  290. package/src/rules2/src/getAdvAttrSeriesAtCoordinates.js +29 -0
  291. package/src/rules2/src/getAttributesSeries.js +36 -0
  292. package/src/rules2/src/getCombinationDefinitions.js +47 -0
  293. package/src/rules2/src/getDataflowAttributes.js +23 -0
  294. package/src/rules2/src/getDataflowTooltipAttributesIds.js +31 -0
  295. package/src/rules2/src/getDimensionValuesIndexes.js +13 -0
  296. package/src/rules2/src/getHCodelistsRefsInData.js +32 -0
  297. package/src/rules2/src/getHeaderCombinations.js +48 -0
  298. package/src/rules2/src/getHeaderCoordinates.js +7 -0
  299. package/src/rules2/src/getHeaderSubtitle.js +34 -0
  300. package/src/rules2/src/getHeaderTitle.js +15 -0
  301. package/src/rules2/src/getMSDInformations.js +23 -0
  302. package/src/rules2/src/getManyValuesDimensions.js +34 -0
  303. package/src/rules2/src/getMetadataCoordinates.js +37 -0
  304. package/src/rules2/src/getMetadataStructureFromData.js +17 -0
  305. package/src/rules2/src/getNotDisplayedIds.js +53 -0
  306. package/src/rules2/src/getOneValueDimensions.js +34 -0
  307. package/src/rules2/src/getSeriesCombinations.js +24 -0
  308. package/src/rules2/src/hasCellMetadata.js +14 -0
  309. package/src/rules2/src/hierarchiseDimensionWithAdvancedHierarchy2.js +57 -0
  310. package/src/rules2/src/hierarchiseDimensionWithNativeHierarchy2.js +35 -0
  311. package/src/rules2/src/index.js +50 -0
  312. package/src/rules2/src/parseAttributes.js +41 -0
  313. package/src/rules2/src/parseCombinations.js +102 -0
  314. package/src/rules2/src/parseHierarchicalCodelist.js +48 -0
  315. package/src/rules2/src/parseMetadataSeries.js +121 -0
  316. package/src/rules2/src/prepareData.js +75 -0
  317. package/src/rules2/src/refineAttributes.js +16 -0
  318. package/src/rules2/src/refineDimensions.js +18 -0
  319. package/src/rules2/src/refineMetadataCoordinates.js +28 -0
  320. package/src/rules2/src/refineTimePeriod.js +127 -0
  321. package/src/rules2/src/sdmx3.0DataFormatPatch.js +9 -0
  322. package/src/rules2/src/table/declineObservationsOverAttributes.js +32 -0
  323. package/src/rules2/src/table/getCells.js +93 -0
  324. package/src/rules2/src/table/getCellsAttributesIds.js +38 -0
  325. package/src/rules2/src/table/getCellsMetadataCoordinates.js +13 -0
  326. package/src/rules2/src/table/getCombinationDimensionsData.js +39 -0
  327. package/src/rules2/src/table/getCuratedCells.js +33 -0
  328. package/src/rules2/src/table/getFlagsAndNotes.js +23 -0
  329. package/src/rules2/src/table/getIndexedCombinationsByDisplay.js +16 -0
  330. package/src/rules2/src/table/getLayout.js +84 -0
  331. package/src/rules2/src/table/getLayoutData2.js +202 -0
  332. package/src/rules2/src/table/getSortedLayoutIndexes.js +138 -0
  333. package/src/rules2/src/table/getTableLabelAccessor.js +9 -0
  334. package/src/rules2/src/table/getTableLayoutIds.js +314 -0
  335. package/src/rules2/src/table/getTableProps.js +82 -0
  336. package/src/rules2/src/table/parseSeriesIndexesHierarchies.js +79 -0
  337. package/src/rules2/src/table/parseValueHierarchy.js +33 -0
  338. package/src/rules2/src/table/refineLayoutSize2.js +321 -0
  339. package/src/rules2/src/utils.js +37 -0
  340. package/src/viewer/mocks/bar.js +33 -0
  341. package/src/viewer/mocks/gpp-symbol.js +93 -0
  342. package/src/viewer/mocks/gpp-time.js +1103 -0
  343. package/src/viewer/mocks/row.js +39 -0
  344. package/src/viewer/mocks/scatter.js +93 -0
  345. package/src/viewer/mocks/stack.js +161 -0
  346. package/src/viewer/src/app/leg.js +36 -0
  347. package/src/viewer/src/app/nodata-res.js +22 -0
  348. package/src/viewer/src/app/nodata-sized.js +23 -0
  349. package/src/viewer/src/app/one-table-cell.js +70 -0
  350. package/src/viewer/src/app/table.js +423 -0
  351. package/src/viewer/src/app/use-case-1.js +33 -0
  352. package/src/viewer/src/app/use-case-2.js +38 -0
  353. package/src/viewer/src/app/use-case-3.js +18 -0
  354. package/src/viewer/src/app.js +116 -0
  355. package/src/viewer/src/chart.jsx +52 -0
  356. package/src/viewer/src/chartUtils/options.js +30 -0
  357. package/src/viewer/src/chartUtils/series.js +51 -0
  358. package/src/viewer/src/footer.jsx +23 -0
  359. package/src/viewer/src/header.jsx +10 -0
  360. package/src/viewer/src/index.jsx +158 -0
  361. package/src/viewer/src/legends/AxisLegend.jsx +41 -0
  362. package/src/viewer/src/legends/ChartLegends.jsx +66 -0
  363. package/src/viewer/src/legends/FocusLegend.jsx +63 -0
  364. package/src/viewer/src/legends/Legend.jsx +46 -0
  365. package/src/viewer/src/legends/SeriesLegend.jsx +78 -0
  366. package/src/viewer/src/utils.js +21 -0
@@ -0,0 +1,424 @@
1
+ import * as R from 'ramda';
2
+ import { getDataFrequency } from '@sis-cc/dotstatsuite-sdmxjs';
3
+ import { series } from '../';
4
+ import {
5
+ H_SYMBOL,
6
+ SCATTER,
7
+ STACKED_BAR,
8
+ STACKED_ROW,
9
+ TIMELINE,
10
+ V_SYMBOL,
11
+ } from '../constants';
12
+ import {
13
+ onChangeFocusSelection,
14
+ focusOptions,
15
+ sampleFocusStateFromNewProps,
16
+ } from './focus';
17
+ import {
18
+ isScatter,
19
+ onChangeScatterDim,
20
+ onChangeScatterVal,
21
+ scatterStateFromNewProps,
22
+ scatterStateValueToOption,
23
+ scatterValueOptions,
24
+ toScatterSingularity,
25
+ } from './scatter';
26
+ import {
27
+ isSymbol,
28
+ onChangeSymbolDim,
29
+ symbolStateFromNewProps,
30
+ toSymbolSingularity,
31
+ } from './symbol';
32
+ import {
33
+ isStacked,
34
+ isStackedDimActive,
35
+ onChangeStackedDimension,
36
+ onChangeStackedMode,
37
+ stackedModeOptions,
38
+ stackedStateFromNewProps,
39
+ toStackedSingularity
40
+ } from './stacked';
41
+ import {
42
+ linearStateFromNewProps,
43
+ initialState as linearInitialState,
44
+ toProperties as toLinearProperties
45
+ } from './linear';
46
+ import {
47
+ chartDimensionOptions,
48
+ chartDimensionToOption,
49
+ hasFocus,
50
+ isChart,
51
+ isNaturalInt,
52
+ isNumber,
53
+ optionParser,
54
+ } from './utils';
55
+ import { getTitleLabel, getSubtitle, getSourceLabel } from './getHeaderProps';
56
+ import { stringifySubtitle } from './getStringifiedSubtitle';
57
+ import { getHasNoTimePeriodError } from './errors';
58
+ /*
59
+ - width/height -> initial undefined, if undefined or blank, replaced by options.base
60
+ */
61
+
62
+ export const toSingularity = ({ data, type }, state) => {
63
+ switch(type) {
64
+ case SCATTER:
65
+ return toScatterSingularity(state);
66
+ case H_SYMBOL: case V_SYMBOL:
67
+ return toSymbolSingularity(data, state);
68
+ case STACKED_BAR: case STACKED_ROW:
69
+ return toStackedSingularity(state);
70
+ default:
71
+ return null;
72
+ }
73
+ };
74
+
75
+ export const toChartData = (props, state) => {
76
+ const dimensions = R.pathOr([], ['data', 'structure', 'dimensions', 'observation'], props);
77
+ const attributes = R.pathOr([], ['data', 'structure', 'attributes', 'observation'], props);
78
+ const frequency = props.type === TIMELINE ? getDataFrequency({ dimensions, attributes }) : null;
79
+ return ({
80
+ frequency,
81
+ series: series(
82
+ props.data,
83
+ props.type,
84
+ R.pick(['highlight', 'baseline'], state),
85
+ toSingularity(props, state),
86
+ props.map,
87
+ props.display,
88
+ props.formaterIds
89
+ ),
90
+ share: {
91
+ focused: R.pick(['highlight', 'baseline'], state),
92
+ chartDimension: toSingularity(props, state),
93
+ }
94
+ });
95
+ };
96
+
97
+ export const getErrors = (props, state) => ({
98
+ noTime: getHasNoTimePeriodError(props),
99
+ });
100
+
101
+ const toFloat = (value) => {
102
+ const float = parseFloat(value);
103
+ return isNaN(float) ? undefined : float;
104
+ }
105
+
106
+ const toOption = (stateValue, optionValue) => R.isNil(stateValue)
107
+ ? optionValue : toFloat(stateValue);
108
+
109
+ const getFreqStepOption = (props, state) => {
110
+ if (props.type !== TIMELINE) {
111
+ return null;
112
+ }
113
+ const inputState = toFloat(state.freqStep);
114
+ return R.isNil(inputState) ? 1 : inputState;
115
+ };
116
+
117
+ export const toChartOptions = (props, state) => {
118
+ const options = R.propOr({}, 'options', props);
119
+ const base = R.propOr({}, 'base', options);
120
+ const axis = R.propOr({}, 'axis', options);
121
+ const axeX = R.propOr({}, 'x', axis);
122
+ const axeY = R.propOr({}, 'y', axis);
123
+ const linearX = R.propOr({}, 'linear', axeX);
124
+ const linearY = R.propOr({}, 'linear', axeY);
125
+ const tickX = R.propOr({}, 'tick', axeX);
126
+ const pivotX = R.propOr({}, 'pivot', linearX);
127
+ const pivotY = R.propOr({}, 'pivot', linearY);
128
+ const map = R.propOr({}, 'map', props);
129
+ return ({
130
+ ...options,
131
+ axis: {
132
+ ...axis,
133
+ x: {
134
+ ...axeX,
135
+ tick: {
136
+ ...tickX,
137
+ step: getFreqStepOption(props, state)
138
+ },
139
+ linear: {
140
+ ...linearX,
141
+ max: toOption(state.maxX, linearX.max),
142
+ min: toOption(state.minX, linearX.min),
143
+ pivot: {
144
+ value: toOption(state.pivotX, pivotX.value)
145
+ },
146
+ step: toOption(
147
+ props.type === TIMELINE ? 1 : state.stepX,
148
+ linearX.step
149
+ ),
150
+ }
151
+ },
152
+ y: {
153
+ ...axeY,
154
+ linear: {
155
+ ...linearY,
156
+ max: toOption(state.maxY, linearY.max),
157
+ min: toOption(state.minY, linearY.min),
158
+ pivot: {
159
+ value: toOption(state.pivotY, pivotY.value)
160
+ },
161
+ step: toOption(state.stepY, linearY.step),
162
+ }
163
+ }
164
+ },
165
+ map: R.pick(['projection', 'scale'], map),
166
+ base: {
167
+ ...base,
168
+ height: toOption(state.fixedHeight, base.height),
169
+ width: toOption(state.fixedWidth, base.width),
170
+ },
171
+ });
172
+ };
173
+
174
+ export const initialState = {
175
+ highlight: [],
176
+ baseline: [],
177
+ fixedWidth: undefined,
178
+ fixedHeight: undefined,
179
+ freqStep: undefined,
180
+ responsiveWidth: undefined,
181
+ responsiveHeight: undefined,
182
+ scatterDimension: undefined,
183
+ scatterX: undefined,
184
+ scatterY: undefined,
185
+ symbolDimension: undefined,
186
+ stackedDimension: undefined,
187
+ stackedMode: undefined,
188
+ id: undefined,
189
+ type: undefined,
190
+ ...linearInitialState,
191
+ };
192
+
193
+ export const stateFromNewProps = (props, state) => {
194
+ const focusState = sampleFocusStateFromNewProps(props, state);
195
+ const scatterState = scatterStateFromNewProps(props, state);
196
+ const symbolState = symbolStateFromNewProps(props, state);
197
+ const stackedState = stackedStateFromNewProps(props, state);
198
+ const linearState = linearStateFromNewProps(props.type);
199
+ return ({
200
+ ...focusState,
201
+ ...scatterState,
202
+ ...symbolState,
203
+ ...stackedState,
204
+ ...linearState,
205
+ fixedWidth: R.prop('fixedWidth', state),
206
+ fixedHeight: R.prop('fixedHeight', state),
207
+ responsiveWidth: R.prop('responsiveWidth', state),
208
+ responsiveHeight: R.prop('responsiveHeight', state),
209
+ freqStep: props.type === TIMELINE
210
+ ? R.prop('freqStep', state) || '1' : undefined,
211
+ type: R.prop('type', props),
212
+ });
213
+ };
214
+
215
+ const propertiesParsers = {
216
+ highlight: onChangeFocusSelection,
217
+ baseline: onChangeFocusSelection,
218
+ fixedWidth: (value) => isNaturalInt(value) ? value : undefined,
219
+ fixedHeight: (value) => isNaturalInt(value) ? value : undefined,
220
+ responsiveWidth: (value) => isNumber(value) ? value : undefined,
221
+ responsiveHeight: (value) => isNumber(value) ? value : undefined,
222
+ freqStep: (value) => isNaturalInt(value) ? value : undefined,
223
+ title: R.identity,
224
+ subtitle: R.identity,
225
+ sourceLabel: R.identity,
226
+ scatterDimension: optionParser,
227
+ scatterX: optionParser,
228
+ scatterY: optionParser,
229
+ symbolDimension: optionParser,
230
+ stackedDimension: optionParser,
231
+ stackedMode: optionParser,
232
+ maxX: (value) => isNumber(value) ? value : undefined,
233
+ maxY: (value) => isNumber(value) ? value : undefined,
234
+ minX: (value) => isNumber(value) ? value : undefined,
235
+ minY: (value) => isNumber(value) ? value : undefined,
236
+ pivotX: (value) => isNumber(value) ? value : undefined,
237
+ pivotY: (value) => isNumber(value) ? value : undefined,
238
+ stepX: (value) => isNaturalInt(value) ? value : undefined,
239
+ stepY: (value) => isNaturalInt(value) ? value : undefined,
240
+ };
241
+
242
+ export const onChangeProperties = (state, onChange) => (newProperties) => {
243
+ const apply = R.is(Function, onChange) ? onChange : R.identity;
244
+ const refined = R.pipe(
245
+ R.mapObjIndexed((value, key) => {
246
+ const _parser = R.prop(key, propertiesParsers);
247
+ const parser = R.is(Function, _parser) ? _parser : R.identity;
248
+ return parser(value);
249
+ }),
250
+ R.pickBy((value, key) => value !== R.prop(key, state))
251
+ )(newProperties);
252
+ if (R.isEmpty(refined)) {
253
+ return ;
254
+ }
255
+ apply(refined);
256
+ };
257
+
258
+ export const toProperties = (props, state, onChange) => ({
259
+ ...toLinearProperties(props, state, onChange),
260
+ highlight: {
261
+ id: 'highlight',
262
+ isActive: hasFocus(props.type),
263
+ onChange: R.pipe(
264
+ onChangeFocusSelection,
265
+ selection => {
266
+ onChange({ highlight: selection });
267
+ }
268
+ ),
269
+ options: focusOptions(
270
+ props,
271
+ state,
272
+ 'baseline',
273
+ toSingularity(props, state)
274
+ ),
275
+ value: R.prop('highlight', state),
276
+ },
277
+ baseline: {
278
+ id: 'baseline',
279
+ isActive: hasFocus(props.type),
280
+ onChange: R.pipe(
281
+ onChangeFocusSelection,
282
+ selection => onChange({ baseline: selection })
283
+ ),
284
+ options: focusOptions(
285
+ props,
286
+ state,
287
+ 'highlight',
288
+ toSingularity(props, state)
289
+ ),
290
+ value: R.prop('baseline', state),
291
+ },
292
+ width: {
293
+ id: 'width',
294
+ isActive: isChart(props.type),
295
+ onChange: (value) => onChange({
296
+ fixedWidth: isNaturalInt(value) ? value : undefined
297
+ }),
298
+ placeholder: R.when(R.complement(R.isNil), (value) => String(Math.floor(Number(value))))(state.responsiveWidth),
299
+ value: R.prop('fixedWidth', state),
300
+ },
301
+ height: {
302
+ id: 'height',
303
+ isActive: isChart(props.type),
304
+ onChange: (value) => onChange({
305
+ fixedHeight: isNaturalInt(value) ? value : undefined
306
+ }),
307
+ placeholder: R.when(R.complement(R.isNil), (value) => String(Math.floor(Number(value))))(state.responsiveHeight),
308
+ },
309
+ freqStep: {
310
+ id: 'freqStep',
311
+ isActive: props.type === TIMELINE,
312
+ onChange: (value) => onChange({
313
+ freqStep: isNaturalInt(value) ? String(value) : undefined
314
+ }),
315
+ value: R.prop('freqStep', state),
316
+ },
317
+ title: {
318
+ id: 'title',
319
+ isActive: isChart(props.type),
320
+ isDefault: R.isNil(state.title),
321
+ onChange: (value) => onChange({ title: value }),
322
+ value: R.isNil(state.title) || R.isEmpty(state.title)
323
+ ? R.pathOr('', ['title', 'label'], props) : state.title,
324
+ onReset: R.isNil(state.title)
325
+ ? null : () => onChange({ title: null })
326
+ },
327
+ subtitle: {
328
+ id: 'subtitle',
329
+ isActive: isChart(props.type),
330
+ isDefault: R.isNil(state.subtitle),
331
+ onChange: (value) => onChange({ subtitle: value }),
332
+ value: R.isNil(state.subtitle) || R.isEmpty(state.subtitle)
333
+ ? stringifySubtitle(props.subtitle || []) : state.subtitle,
334
+ onReset: R.isNil(state.subtitle)
335
+ ? null : () => onChange({ subtitle: null })
336
+ },
337
+ source: {
338
+ id: 'source',
339
+ isActive: isChart(props.type),
340
+ isDefault: R.isNil(state.sourceLabel),
341
+ onChange: (value) => onChange({ sourceLabel: value }),
342
+ value: getSourceLabel(props, state),
343
+ onReset: R.isNil(state.sourceLabel)
344
+ ? null : () => onChange({ sourceLabel: null })
345
+ },
346
+ scatterDimension: {
347
+ id: 'scatterDimension',
348
+ isActive: isScatter(props.type),
349
+ onChange: R.pipe(
350
+ optionParser,
351
+ onChangeScatterDim(props, state),
352
+ onChange
353
+ ),
354
+ options: chartDimensionOptions(props, isScatter),
355
+ value: chartDimensionToOption('scatterDimension')(props, state),
356
+ },
357
+ scatterX: {
358
+ id: 'scatterX',
359
+ isActive: isScatter(props.type),
360
+ onChange: R.pipe(
361
+ optionParser,
362
+ onChangeScatterVal(props, state, 'scatterX', 'scatterY'),
363
+ onChange
364
+ ),
365
+ options: scatterValueOptions(props, state),
366
+ value: scatterStateValueToOption('scatterX', props, state),
367
+ },
368
+ scatterY: {
369
+ id: 'scatterY',
370
+ isActive: isScatter(props.type),
371
+ onChange: R.pipe(
372
+ optionParser,
373
+ onChangeScatterVal(props, state, 'scatterY', 'scatterX'),
374
+ onChange
375
+ ),
376
+ options: scatterValueOptions(props, state),
377
+ value: scatterStateValueToOption('scatterY', props, state),
378
+ },
379
+ symbolDimension: {
380
+ id: 'symbolDimension',
381
+ isActive: isSymbol(props.type),
382
+ options: chartDimensionOptions(props, isSymbol),
383
+ onChange: R.pipe(
384
+ optionParser,
385
+ onChangeSymbolDim(props),
386
+ onChange
387
+ ),
388
+ value: chartDimensionToOption('symbolDimension')(props, state)
389
+ },
390
+ stackedDimension: {
391
+ id: 'stackedDimension',
392
+ isActive: isStackedDimActive(props),
393
+ options: chartDimensionOptions(props, isStacked),
394
+ onChange: R.pipe(
395
+ optionParser,
396
+ onChangeStackedDimension(props, state),
397
+ onChange,
398
+ ),
399
+ value: chartDimensionToOption('stackedDimension')(props, state)
400
+ },
401
+ stackedMode: {
402
+ id: 'stackedMode',
403
+ isActive: isStacked(props.type),
404
+ options: stackedModeOptions,
405
+ onChange: R.pipe(
406
+ optionParser,
407
+ onChangeStackedMode,
408
+ onChange
409
+ ),
410
+ value: R.prop('stackedMode', state)
411
+ },
412
+ logo: {
413
+ id: 'logo',
414
+ isActive: isChart(props.type),
415
+ checked: !state.withLogo,
416
+ onChange: () => onChange({ withLogo: !state.withLogo })
417
+ },
418
+ copyright: {
419
+ id: 'copyright',
420
+ isActive: isChart(props.type),
421
+ checked: !state.withCopyright,
422
+ onChange: () => onChange({ withCopyright: !state.withCopyright })
423
+ }
424
+ });
@@ -0,0 +1,84 @@
1
+ import { is, isEmpty, isNil, map, not, of, path, pipe, prop, length, split, when } from 'ramda';
2
+ import {
3
+ defaultSubtitle,
4
+ extractSdmxArtefacts,
5
+ headerUprsLabel,
6
+ parseDisplay,
7
+ uprAttributes,
8
+ uprAttributesWithOneRelevantValue,
9
+ } from '../';
10
+
11
+ import { dimensionValueDisplay } from '../dimension-utils';
12
+
13
+ export const initialState = {
14
+ subtitle: undefined,
15
+ title: undefined,
16
+ sourceLabel: undefined,
17
+ };
18
+
19
+ export const informationStateFromNewProps = (props, state) => {
20
+ const { id } = extractSdmxArtefacts(props.data);
21
+ if (id !== state.id) {
22
+ return initialState;
23
+ }
24
+ return ({});
25
+ };
26
+
27
+ const getDataflowCode = (url) => {
28
+ if (isNil(url) || isEmpty(url)) {
29
+ return null;
30
+ }
31
+ const match = url.match(/[\w\/]+\/data\/([^\/]+)\//);
32
+ if (!is(Array, match)) {
33
+ return null;
34
+ }
35
+ //v8 case: 'AGENCY,CODE,VERSION'
36
+ const id = match[1];
37
+ const splitId = split(',', id);
38
+ if ((length(splitId) === 1)) {
39
+ return splitId[0];
40
+ }
41
+ return splitId[1];
42
+ };
43
+
44
+ const defaultTitle = (props, display) => {
45
+ const name = path(['data', 'structure', 'name'], props);
46
+ const code = getDataflowCode(props.sdmxUrl);
47
+ return dimensionValueDisplay(display)({ id: code, name });
48
+ };
49
+
50
+ const defaultSourceLabel = (props, title) => {
51
+ const propsLabel = path(['source', 'label'], props);
52
+ return (isNil(propsLabel) || isEmpty(propsLabel))
53
+ ? title : propsLabel;
54
+ }
55
+
56
+ export const toHeader = (props, state) => {
57
+ const display = parseDisplay(props.display);
58
+ const stateTitle = prop('title', state);
59
+ const stateSubtitle = prop('subtitle', state);
60
+ const stateSourceLabel = prop('sourceLabel', state);
61
+ const propsSourceLink = path(['source', 'link'], props);
62
+ const title = (isNil(stateTitle) || isEmpty(stateTitle))
63
+ ? defaultTitle(props, display) : stateTitle;
64
+ const subtitle = (isNil(stateSubtitle) || isEmpty(stateSubtitle))
65
+ ? defaultSubtitle(props.data, display) : stateSubtitle;
66
+ const sourceLink = (isNil(propsSourceLink) || isEmpty(propsSourceLink))
67
+ ? props.sdmxUrl : propsSourceLink;
68
+ const sourceLabel = (isNil(stateSourceLabel) || isEmpty(stateSourceLabel))
69
+ ? defaultSourceLabel(props, title) : stateSourceLabel;
70
+ return ({
71
+ footnotes: { source: sourceLink, sourceLabel },
72
+ title: { label: title },
73
+ subtitle: pipe(
74
+ when(pipe(is(Array), not), of),
75
+ map(entry => ({ label: entry }))
76
+ )(subtitle),
77
+ uprs: pipe(
78
+ extractSdmxArtefacts,
79
+ ({ attributes }) => uprAttributes(attributes),
80
+ uprAttributesWithOneRelevantValue,
81
+ headerUprsLabel(display),
82
+ )(props.data)
83
+ });
84
+ };
@@ -0,0 +1,129 @@
1
+ import * as R from 'ramda';
2
+ import {
3
+ BAR,
4
+ H_SYMBOL,
5
+ ROW,
6
+ SCATTER,
7
+ STACKED_BAR,
8
+ STACKED_ROW,
9
+ TIMELINE,
10
+ V_SYMBOL,
11
+ } from '../constants';
12
+ import { isNumber, isPositiveNumber } from './utils';
13
+ import { isStacked } from './stacked';
14
+
15
+ const hasXLinear = (type) => R.includes(type, [H_SYMBOL, ROW, SCATTER, STACKED_ROW]);
16
+
17
+ const hasYLinear = (type) => R.includes(type, [BAR, SCATTER, STACKED_BAR, TIMELINE, V_SYMBOL]);
18
+
19
+ const hasXPivot = (type) => R.equals(ROW, type);
20
+ const hasYPivot = (type) => R.equals(BAR, type);
21
+
22
+ const xInitialState = {
23
+ computedMaxX: undefined,
24
+ computedMinX: undefined,
25
+ computedStepX: undefined,
26
+ computedPivotX: undefined,
27
+ maxX: undefined,
28
+ minX: undefined,
29
+ pivotX: undefined,
30
+ stepX: undefined,
31
+ };
32
+
33
+ const yInitialState = {
34
+ computedMaxY: undefined,
35
+ computedMinY: undefined,
36
+ computedStepY: undefined,
37
+ computedPivotY: undefined,
38
+ maxY: undefined,
39
+ minY: undefined,
40
+ pivotY: undefined,
41
+ stepY: undefined,
42
+ };
43
+
44
+ export const initialState = { ...xInitialState, ...yInitialState };
45
+
46
+ export const linearStateFromNewProps = (type) => {
47
+ const xLinearState = hasXLinear(type) ? {} : xInitialState;
48
+ const YLinearState = hasYLinear(type) ? {} : yInitialState;
49
+ return ({
50
+ ...xLinearState,
51
+ ...R.when(
52
+ R.always(isStacked(type)),
53
+ R.assoc('pivotY', 0)
54
+ )(YLinearState),
55
+ });
56
+ };
57
+
58
+ export const toProperties = (props, state, onChange) => ({
59
+ maxX: {
60
+ id: 'maxX',
61
+ isActive: hasXLinear(props.type),
62
+ onChange: (value) => onChange({
63
+ maxX: isNumber(value) ? value : undefined
64
+ }),
65
+ value: R.isNil(state.maxX) ? String(state.computedMaxX) : state.maxX
66
+ },
67
+ maxY: {
68
+ id: 'maxY',
69
+ isActive: hasYLinear(props.type),
70
+ onChange: (value) => onChange({
71
+ maxY: isNumber(value) ? value : undefined
72
+ }),
73
+ value: R.isNil(state.maxY) ? String(state.computedMaxY) : state.maxY
74
+ },
75
+ minX: {
76
+ id: 'minX',
77
+ isActive: hasXLinear(props.type),
78
+ onChange: (value) => onChange({
79
+ minX: isNumber(value) ? value : undefined
80
+ }),
81
+ value: R.isNil(state.minX) ? String(state.computedMinX) : state.minX
82
+ },
83
+ minY: {
84
+ id: 'minY',
85
+ isActive: hasYLinear(props.type),
86
+ onChange: (value) => onChange({
87
+ minY: isNumber(value) ? value : undefined
88
+ }),
89
+ value: R.isNil(state.minY) ? String(state.computedMinY) : state.minY
90
+ },
91
+ pivotX: {
92
+ id: 'pivotX',
93
+ isActive: hasXPivot(props.type),
94
+ onChange: (value) => onChange({
95
+ pivotX: isNumber(value) ? value : undefined
96
+ }),
97
+ value: R.when(
98
+ v => R.isNil(v) && (R.propEq('type', ROW)(props) || R.propEq('type', STACKED_ROW)(props)),
99
+ R.always(0)
100
+ )(R.isNil(state.pivotX) ? String(state.computedPivotX) : state.pivotX)
101
+ },
102
+ pivotY: {
103
+ id: 'pivotY',
104
+ isActive: hasYPivot(props.type),
105
+ onChange: (value) => onChange({
106
+ pivotY: isNumber(value) ? value : undefined
107
+ }),
108
+ value: R.when(
109
+ v => R.isNil(v) && (R.propEq('type', BAR)(props) || R.propEq('type', STACKED_BAR)(props)),
110
+ R.always(0)
111
+ )(R.isNil(state.pivotY) ? String(state.computedPivotY) : state.pivotY)
112
+ },
113
+ stepX: {
114
+ id: 'stepX',
115
+ isActive: hasXLinear(props.type),
116
+ onChange: (value) => onChange({
117
+ stepX: isPositiveNumber(value) ? value : undefined
118
+ }),
119
+ value: R.isNil(state.stepX) ? String(state.computedStepX) : state.stepX
120
+ },
121
+ stepY: {
122
+ id: 'stepY',
123
+ isActive: hasYLinear(props.type),
124
+ onChange: (value) => onChange({
125
+ stepY: isPositiveNumber(value) ? value : undefined
126
+ }),
127
+ value: R.isNil(state.stepY) ? String(state.computedStepY) : state.stepY
128
+ },
129
+ });