cx 24.7.3 → 24.7.4

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 (760) hide show
  1. package/LICENSE-THIRD-PARTY.md +91 -91
  2. package/LICENSE.md +7 -7
  3. package/README.md +46 -46
  4. package/dist/charts.js +24 -21
  5. package/dist/manifest.js +767 -767
  6. package/index.js +17 -17
  7. package/locale/de-de.js +74 -74
  8. package/locale/en-us.js +74 -74
  9. package/locale/es-es.js +74 -74
  10. package/locale/fr-fr.js +74 -74
  11. package/locale/nl-nl.js +74 -74
  12. package/locale/pt-pt.js +74 -74
  13. package/locale/sr-latn-ba.js +74 -74
  14. package/package.json +1 -1
  15. package/src/charts/Bar.js +89 -89
  16. package/src/charts/Bar.scss +26 -26
  17. package/src/charts/BarGraph.d.ts +15 -15
  18. package/src/charts/BarGraph.js +112 -112
  19. package/src/charts/BarGraph.scss +27 -27
  20. package/src/charts/BubbleGraph.js +92 -92
  21. package/src/charts/BubbleGraph.scss +29 -29
  22. package/src/charts/Chart.d.ts +12 -12
  23. package/src/charts/Chart.js +75 -75
  24. package/src/charts/ColorMap.d.ts +21 -21
  25. package/src/charts/ColorMap.js +96 -96
  26. package/src/charts/Column.d.ts +27 -27
  27. package/src/charts/Column.js +1 -1
  28. package/src/charts/Column.scss +26 -26
  29. package/src/charts/ColumnBarBase.d.ts +64 -64
  30. package/src/charts/ColumnBarBase.js +25 -21
  31. package/src/charts/ColumnBarGraphBase.d.ts +73 -73
  32. package/src/charts/ColumnBarGraphBase.js +114 -114
  33. package/src/charts/ColumnGraph.d.ts +18 -18
  34. package/src/charts/ColumnGraph.scss +27 -27
  35. package/src/charts/Grid.js +5 -5
  36. package/src/charts/Gridlines.d.ts +24 -24
  37. package/src/charts/Gridlines.js +48 -48
  38. package/src/charts/Gridlines.scss +22 -22
  39. package/src/charts/Legend.d.ts +27 -27
  40. package/src/charts/Legend.scss +41 -41
  41. package/src/charts/LegendEntry.scss +30 -30
  42. package/src/charts/LineGraph.d.ts +92 -92
  43. package/src/charts/LineGraph.scss +23 -23
  44. package/src/charts/Marker.scss +41 -41
  45. package/src/charts/MarkerLine.d.ts +57 -57
  46. package/src/charts/MarkerLine.js +128 -128
  47. package/src/charts/MarkerLine.scss +17 -17
  48. package/src/charts/MouseTracker.d.ts +16 -16
  49. package/src/charts/MouseTracker.js +80 -80
  50. package/src/charts/Pie.js +8 -8
  51. package/src/charts/PieChart.d.ts +89 -89
  52. package/src/charts/PieChart.js +527 -527
  53. package/src/charts/PieChart.scss +26 -26
  54. package/src/charts/PieLabel.d.ts +26 -26
  55. package/src/charts/PieLabel.js +71 -71
  56. package/src/charts/PieLabelsContainer.d.ts +6 -6
  57. package/src/charts/PieLabelsContainer.js +55 -55
  58. package/src/charts/Range.d.ts +74 -74
  59. package/src/charts/Range.js +205 -205
  60. package/src/charts/Range.scss +18 -18
  61. package/src/charts/RangeMarker.d.ts +35 -35
  62. package/src/charts/RangeMarker.js +155 -155
  63. package/src/charts/RangeMarker.scss +15 -15
  64. package/src/charts/ScatterGraph.d.ts +64 -64
  65. package/src/charts/ScatterGraph.js +155 -155
  66. package/src/charts/ScatterGraph.scss +21 -21
  67. package/src/charts/Swimlane.d.ts +24 -24
  68. package/src/charts/Swimlane.js +140 -140
  69. package/src/charts/Swimlane.scss +14 -14
  70. package/src/charts/Swimlanes.d.ts +41 -41
  71. package/src/charts/Swimlanes.js +114 -114
  72. package/src/charts/Swimlanes.scss +14 -14
  73. package/src/charts/axis/Axis.js +254 -254
  74. package/src/charts/axis/Axis.scss +22 -22
  75. package/src/charts/axis/CategoryAxis.d.ts +24 -24
  76. package/src/charts/axis/CategoryAxis.js +212 -212
  77. package/src/charts/axis/CategoryAxis.scss +32 -32
  78. package/src/charts/axis/NumericAxis.d.ts +46 -46
  79. package/src/charts/axis/NumericAxis.js +347 -347
  80. package/src/charts/axis/NumericAxis.scss +32 -32
  81. package/src/charts/axis/Stack.d.ts +10 -10
  82. package/src/charts/axis/Stack.js +55 -55
  83. package/src/charts/axis/TimeAxis.d.ts +23 -23
  84. package/src/charts/axis/TimeAxis.js +510 -510
  85. package/src/charts/axis/TimeAxis.scss +32 -32
  86. package/src/charts/axis/index.d.ts +3 -3
  87. package/src/charts/axis/index.js +3 -3
  88. package/src/charts/axis/index.scss +5 -5
  89. package/src/charts/axis/variables.scss +2 -2
  90. package/src/charts/helpers/MinMaxFinder.js +36 -36
  91. package/src/charts/helpers/PointReducer.d.ts +15 -15
  92. package/src/charts/helpers/PointReducer.js +39 -39
  93. package/src/charts/helpers/index.d.ts +4 -4
  94. package/src/charts/helpers/index.js +4 -4
  95. package/src/charts/index.d.ts +27 -27
  96. package/src/charts/index.js +34 -34
  97. package/src/charts/index.scss +22 -22
  98. package/src/charts/palette.scss +95 -95
  99. package/src/charts/shapes.d.ts +22 -22
  100. package/src/charts/shapes.js +79 -79
  101. package/src/charts/variables.scss +21 -21
  102. package/src/core.d.ts +271 -271
  103. package/src/data/AggregateFunction.d.ts +20 -20
  104. package/src/data/AggregateFunction.js +145 -145
  105. package/src/data/ArrayElementView.d.ts +13 -13
  106. package/src/data/ArrayRef.d.ts +14 -14
  107. package/src/data/ArrayRef.js +34 -34
  108. package/src/data/AugmentedViewBase.d.ts +18 -18
  109. package/src/data/Binding.d.ts +19 -19
  110. package/src/data/Binding.js +76 -76
  111. package/src/data/Binding.spec.js +69 -69
  112. package/src/data/ExposedRecordView.d.ts +14 -14
  113. package/src/data/ExposedRecordView.js +69 -69
  114. package/src/data/ExposedValueView.d.ts +19 -19
  115. package/src/data/ExposedValueView.js +72 -72
  116. package/src/data/Expression.d.ts +17 -17
  117. package/src/data/Expression.js +220 -220
  118. package/src/data/Expression.spec.js +174 -174
  119. package/src/data/Grouper.d.ts +21 -21
  120. package/src/data/Grouper.js +144 -144
  121. package/src/data/Grouper.spec.js +57 -57
  122. package/src/data/NestedDataView.d.ts +19 -19
  123. package/src/data/NestedDataView.js +22 -22
  124. package/src/data/ReadOnlyDataView.d.ts +14 -14
  125. package/src/data/ReadOnlyDataView.js +26 -26
  126. package/src/data/Ref.d.ts +24 -24
  127. package/src/data/Ref.js +79 -79
  128. package/src/data/Ref.spec.js +79 -79
  129. package/src/data/Store.d.ts +14 -14
  130. package/src/data/Store.js +46 -46
  131. package/src/data/Store.spec.js +22 -22
  132. package/src/data/StoreProxy.d.ts +4 -4
  133. package/src/data/StoreProxy.js +16 -16
  134. package/src/data/StoreRef.js +54 -54
  135. package/src/data/StoreRef.spec.js +24 -24
  136. package/src/data/StringTemplate.d.ts +15 -15
  137. package/src/data/StringTemplate.js +92 -92
  138. package/src/data/StructuredDataAccessor.d.ts +7 -7
  139. package/src/data/StructuredSelector.d.ts +17 -17
  140. package/src/data/StructuredSelector.js +131 -131
  141. package/src/data/StructuredSelector.spec.js +113 -113
  142. package/src/data/SubscribableView.d.ts +11 -11
  143. package/src/data/SubscribableView.js +54 -54
  144. package/src/data/View.d.ts +131 -131
  145. package/src/data/View.js +182 -182
  146. package/src/data/View.spec.js +60 -60
  147. package/src/data/ZoomIntoPropertyView.d.ts +11 -11
  148. package/src/data/ZoomIntoPropertyView.js +33 -33
  149. package/src/data/ZoomIntoPropertyView.spec.js +65 -65
  150. package/src/data/comparer.d.ts +7 -7
  151. package/src/data/comparer.js +54 -54
  152. package/src/data/comparer.spec.js +60 -60
  153. package/src/data/computable.d.ts +125 -125
  154. package/src/data/computable.js +56 -56
  155. package/src/data/computable.spec.js +55 -55
  156. package/src/data/createAccessorModelProxy.d.ts +6 -6
  157. package/src/data/createAccessorModelProxy.js +43 -43
  158. package/src/data/createAccessorModelProxy.spec.tsx +44 -44
  159. package/src/data/createStructuredSelector.d.ts +2 -2
  160. package/src/data/createStructuredSelector.js +43 -43
  161. package/src/data/createStructuredSelector.spec.js +46 -46
  162. package/src/data/defaultCompare.js +14 -14
  163. package/src/data/diff/diffArrays.d.ts +15 -15
  164. package/src/data/diff/diffArrays.js +41 -41
  165. package/src/data/diff/diffs.spec.js +49 -49
  166. package/src/data/diff/index.d.ts +1 -1
  167. package/src/data/diff/index.js +1 -1
  168. package/src/data/enableFatArrowExpansion.d.ts +1 -1
  169. package/src/data/enableFatArrowExpansion.js +6 -6
  170. package/src/data/getAccessor.d.ts +8 -8
  171. package/src/data/getAccessor.js +61 -61
  172. package/src/data/getSelector.d.ts +3 -3
  173. package/src/data/getSelector.js +48 -48
  174. package/src/data/getSelector.spec.js +43 -43
  175. package/src/data/index.d.ts +30 -30
  176. package/src/data/index.js +28 -28
  177. package/src/data/isSelector.d.ts +1 -1
  178. package/src/data/isSelector.js +26 -26
  179. package/src/data/ops/append.d.ts +1 -1
  180. package/src/data/ops/append.js +7 -7
  181. package/src/data/ops/append.spec.js +28 -28
  182. package/src/data/ops/filter.d.ts +1 -1
  183. package/src/data/ops/filter.js +8 -8
  184. package/src/data/ops/filter.spec.js +29 -29
  185. package/src/data/ops/findTreeNode.d.ts +1 -1
  186. package/src/data/ops/findTreeNode.js +15 -15
  187. package/src/data/ops/findTreeNode.spec.js +24 -24
  188. package/src/data/ops/findTreePath.d.ts +6 -6
  189. package/src/data/ops/findTreePath.js +16 -16
  190. package/src/data/ops/index.d.ts +10 -10
  191. package/src/data/ops/index.js +11 -11
  192. package/src/data/ops/insertElement.d.ts +1 -1
  193. package/src/data/ops/insertElement.js +2 -2
  194. package/src/data/ops/merge.d.ts +3 -3
  195. package/src/data/ops/merge.js +9 -9
  196. package/src/data/ops/merge.spec.js +27 -27
  197. package/src/data/ops/moveElement.d.ts +1 -1
  198. package/src/data/ops/moveElement.js +13 -13
  199. package/src/data/ops/removeTreeNodes.d.ts +5 -5
  200. package/src/data/ops/removeTreeNodes.js +5 -5
  201. package/src/data/ops/removeTreeNodes.spec.js +28 -28
  202. package/src/data/ops/updateArray.d.ts +5 -5
  203. package/src/data/ops/updateArray.js +24 -24
  204. package/src/data/ops/updateArray.spec.js +38 -38
  205. package/src/data/ops/updateTree.d.ts +7 -7
  206. package/src/data/ops/updateTree.js +25 -25
  207. package/src/data/ops/updateTree.spec.js +36 -36
  208. package/src/global.scss +13 -13
  209. package/src/hooks/createLocalStorageRef.d.ts +2 -2
  210. package/src/hooks/createLocalStorageRef.js +22 -22
  211. package/src/hooks/index.d.ts +8 -8
  212. package/src/hooks/index.js +7 -7
  213. package/src/hooks/invokeCallback.d.ts +5 -5
  214. package/src/hooks/invokeCallback.js +6 -6
  215. package/src/hooks/invokeCallback.spec.js +53 -53
  216. package/src/hooks/resolveCallback.d.ts +3 -3
  217. package/src/hooks/resolveCallback.js +11 -11
  218. package/src/hooks/resolveCallback.spec.js +54 -54
  219. package/src/hooks/store.d.ts +7 -7
  220. package/src/hooks/store.js +32 -32
  221. package/src/hooks/store.spec.js +73 -73
  222. package/src/hooks/useEffect.d.ts +2 -2
  223. package/src/hooks/useEffect.js +14 -14
  224. package/src/hooks/useInterval.js +7 -7
  225. package/src/hooks/useState.d.ts +2 -2
  226. package/src/hooks/useState.js +15 -15
  227. package/src/hooks/useTrigger.d.ts +4 -4
  228. package/src/hooks/useTrigger.js +20 -20
  229. package/src/hooks/useTrigger.spec.js +102 -102
  230. package/src/index.js +7 -7
  231. package/src/index.scss +6 -6
  232. package/src/svg/BoundedObject.d.ts +22 -22
  233. package/src/svg/BoundedObject.js +59 -59
  234. package/src/svg/ClipRect.d.ts +4 -4
  235. package/src/svg/ClipRect.js +23 -23
  236. package/src/svg/Ellipse.d.ts +23 -23
  237. package/src/svg/Ellipse.js +36 -36
  238. package/src/svg/Line.d.ts +20 -20
  239. package/src/svg/Line.js +32 -32
  240. package/src/svg/NonOverlappingRect.d.ts +5 -5
  241. package/src/svg/NonOverlappingRect.js +14 -14
  242. package/src/svg/NonOverlappingRectGroup.d.ts +3 -3
  243. package/src/svg/NonOverlappingRectGroup.js +36 -36
  244. package/src/svg/Svg.d.ts +32 -32
  245. package/src/svg/Svg.js +177 -177
  246. package/src/svg/Svg.scss +26 -26
  247. package/src/svg/Text.d.ts +40 -40
  248. package/src/svg/Text.js +78 -78
  249. package/src/svg/TextualBoundedObject.d.ts +6 -6
  250. package/src/svg/TextualBoundedObject.js +28 -28
  251. package/src/svg/index.d.ts +11 -11
  252. package/src/svg/index.js +17 -17
  253. package/src/svg/index.scss +8 -8
  254. package/src/svg/util/Rect.d.ts +40 -40
  255. package/src/svg/util/Rect.js +108 -108
  256. package/src/ui/CSS.d.ts +19 -19
  257. package/src/ui/CSS.js +79 -79
  258. package/src/ui/CSSHelper.d.ts +10 -10
  259. package/src/ui/CSSHelper.js +17 -17
  260. package/src/ui/Container.d.ts +18 -18
  261. package/src/ui/Container.js +183 -183
  262. package/src/ui/ContentResolver.d.ts +12 -12
  263. package/src/ui/ContentResolver.js +78 -78
  264. package/src/ui/Controller.js +114 -114
  265. package/src/ui/Controller.spec.js +414 -414
  266. package/src/ui/Culture.d.ts +51 -51
  267. package/src/ui/Culture.js +129 -129
  268. package/src/ui/Cx.d.ts +18 -18
  269. package/src/ui/Cx.spec.js +193 -193
  270. package/src/ui/DataProxy.d.ts +12 -12
  271. package/src/ui/DataProxy.js +44 -44
  272. package/src/ui/DetachedScope.d.ts +21 -21
  273. package/src/ui/DetachedScope.js +93 -93
  274. package/src/ui/FocusManager.d.ts +29 -29
  275. package/src/ui/Format.d.ts +2 -2
  276. package/src/ui/Format.js +107 -107
  277. package/src/ui/HoverSync.d.ts +13 -13
  278. package/src/ui/HoverSync.js +147 -147
  279. package/src/ui/Instance.js +610 -610
  280. package/src/ui/IsolatedScope.d.ts +16 -16
  281. package/src/ui/IsolatedScope.js +29 -29
  282. package/src/ui/IsolatedScope.spec.js +62 -62
  283. package/src/ui/Localization.d.ts +17 -17
  284. package/src/ui/Localization.js +70 -70
  285. package/src/ui/PureContainer.d.ts +16 -16
  286. package/src/ui/PureContainer.js +7 -7
  287. package/src/ui/RenderingContext.d.ts +9 -9
  288. package/src/ui/RenderingContext.js +88 -88
  289. package/src/ui/Repeater.d.ts +60 -60
  290. package/src/ui/Repeater.js +102 -102
  291. package/src/ui/Repeater.spec.js +143 -143
  292. package/src/ui/Rescope.d.ts +10 -10
  293. package/src/ui/Rescope.js +31 -31
  294. package/src/ui/Rescope.spec.js +195 -195
  295. package/src/ui/ResizeManager.d.ts +9 -9
  296. package/src/ui/ResizeManager.js +30 -30
  297. package/src/ui/Restate.d.ts +21 -21
  298. package/src/ui/Restate.js +163 -163
  299. package/src/ui/Restate.spec.js +422 -422
  300. package/src/ui/StaticText.d.ts +8 -8
  301. package/src/ui/StaticText.js +9 -9
  302. package/src/ui/StructuredInstanceDataAccessor.d.ts +16 -16
  303. package/src/ui/StructuredInstanceDataAccessor.js +26 -26
  304. package/src/ui/Text.d.ts +10 -10
  305. package/src/ui/Text.js +25 -25
  306. package/src/ui/VDOM.js +2 -2
  307. package/src/ui/Widget.d.ts +14 -14
  308. package/src/ui/Widget.js +200 -200
  309. package/src/ui/ZIndexManager.d.ts +7 -7
  310. package/src/ui/ZIndexManager.js +11 -11
  311. package/src/ui/adapter/ArrayAdapter.d.ts +17 -17
  312. package/src/ui/adapter/ArrayAdapter.js +142 -142
  313. package/src/ui/adapter/ArrayAdapter.spec.js +55 -55
  314. package/src/ui/adapter/DataAdapter.js +15 -15
  315. package/src/ui/adapter/GroupAdapter.d.ts +23 -23
  316. package/src/ui/adapter/TreeAdapter.d.ts +24 -24
  317. package/src/ui/adapter/TreeAdapter.js +100 -100
  318. package/src/ui/adapter/TreeAdapter.spec.js +67 -67
  319. package/src/ui/adapter/index.d.ts +4 -4
  320. package/src/ui/adapter/index.js +4 -4
  321. package/src/ui/app/History.d.ts +17 -17
  322. package/src/ui/app/History.js +114 -114
  323. package/src/ui/app/Url.d.ts +21 -21
  324. package/src/ui/app/Url.js +103 -103
  325. package/src/ui/app/Url.spec.js +51 -51
  326. package/src/ui/app/index.d.ts +4 -4
  327. package/src/ui/app/index.js +5 -5
  328. package/src/ui/app/startAppLoop.d.ts +3 -3
  329. package/src/ui/app/startHotAppLoop.d.ts +6 -6
  330. package/src/ui/app/startHotAppLoop.js +25 -25
  331. package/src/ui/batchUpdates.d.ts +10 -10
  332. package/src/ui/batchUpdates.js +67 -67
  333. package/src/ui/bind.d.ts +4 -4
  334. package/src/ui/bind.js +7 -7
  335. package/src/ui/createFunctionalComponent.d.ts +1 -1
  336. package/src/ui/createFunctionalComponent.js +68 -68
  337. package/src/ui/createFunctionalComponent.spec.js +400 -400
  338. package/src/ui/expr.d.ts +24 -24
  339. package/src/ui/expr.js +17 -17
  340. package/src/ui/flattenProps.js +21 -21
  341. package/src/ui/index.js +44 -44
  342. package/src/ui/index.scss +2 -2
  343. package/src/ui/keyboardShortcuts.d.ts +4 -4
  344. package/src/ui/keyboardShortcuts.js +31 -31
  345. package/src/ui/layout/Content.d.ts +14 -14
  346. package/src/ui/layout/Content.js +16 -16
  347. package/src/ui/layout/ContentPlaceholder.d.ts +17 -17
  348. package/src/ui/layout/ContentPlaceholder.js +79 -79
  349. package/src/ui/layout/ContentPlaceholder.spec.js +368 -368
  350. package/src/ui/layout/FirstVisibleChildLayout.d.ts +4 -4
  351. package/src/ui/layout/FirstVisibleChildLayout.js +65 -65
  352. package/src/ui/layout/FirstVisibleChildLayout.spec.js +196 -196
  353. package/src/ui/layout/LabelsLeftLayout.d.ts +11 -11
  354. package/src/ui/layout/LabelsLeftLayout.js +59 -59
  355. package/src/ui/layout/LabelsLeftLayout.scss +44 -44
  356. package/src/ui/layout/LabelsTopLayout.d.ts +15 -15
  357. package/src/ui/layout/LabelsTopLayout.js +134 -134
  358. package/src/ui/layout/LabelsTopLayout.scss +63 -63
  359. package/src/ui/layout/UseParentLayout.d.ts +4 -4
  360. package/src/ui/layout/UseParentLayout.js +6 -6
  361. package/src/ui/layout/exploreChildren.d.ts +14 -14
  362. package/src/ui/layout/exploreChildren.js +40 -40
  363. package/src/ui/layout/index.d.ts +10 -10
  364. package/src/ui/layout/index.js +10 -10
  365. package/src/ui/layout/index.scss +3 -3
  366. package/src/ui/layout/variables.scss +2 -2
  367. package/src/ui/selection/KeySelection.d.ts +17 -17
  368. package/src/ui/selection/KeySelection.js +129 -129
  369. package/src/ui/selection/PropertySelection.d.ts +17 -17
  370. package/src/ui/selection/PropertySelection.js +55 -55
  371. package/src/ui/selection/Selection.d.ts +27 -27
  372. package/src/ui/selection/Selection.js +93 -93
  373. package/src/ui/selection/index.d.ts +3 -3
  374. package/src/ui/selection/index.js +3 -3
  375. package/src/ui/tpl.d.ts +2 -2
  376. package/src/ui/tpl.js +4 -4
  377. package/src/ui/variables.scss +1 -1
  378. package/src/util/Component.d.ts +41 -41
  379. package/src/util/Component.js +107 -107
  380. package/src/util/Console.d.ts +4 -4
  381. package/src/util/Console.js +11 -11
  382. package/src/util/DOM.d.ts +33 -33
  383. package/src/util/DOM.js +72 -72
  384. package/src/util/Debug.d.ts +10 -10
  385. package/src/util/Debug.js +45 -45
  386. package/src/util/Format.d.ts +18 -18
  387. package/src/util/Format.spec.js +69 -69
  388. package/src/util/GlobalCacheIdentifier.js +11 -11
  389. package/src/util/GlobalCacheldentifier.d.ts +6 -6
  390. package/src/util/KeyCode.d.ts +21 -21
  391. package/src/util/KeyCode.js +21 -21
  392. package/src/util/SubscriberList.d.ts +41 -41
  393. package/src/util/SubscriberList.js +57 -57
  394. package/src/util/Timing.d.ts +13 -13
  395. package/src/util/Timing.js +57 -57
  396. package/src/util/TraversalStack.js +42 -42
  397. package/src/util/TraversalStack.spec.js +46 -46
  398. package/src/util/addEventListenerWithOptions.d.ts +6 -6
  399. package/src/util/addEventListenerWithOptions.js +9 -9
  400. package/src/util/browserSupportsPassiveEventHandlers.d.ts +4 -4
  401. package/src/util/browserSupportsPassiveEventHandlers.js +18 -18
  402. package/src/util/calculateNaturalElementHeight.d.ts +1 -1
  403. package/src/util/calculateNaturalElementHeight.js +22 -22
  404. package/src/util/call-once.scss +6 -6
  405. package/src/util/coalesce.d.ts +1 -1
  406. package/src/util/coalesce.js +6 -6
  407. package/src/util/color/hslToRgb.d.ts +8 -8
  408. package/src/util/color/hslToRgb.js +27 -27
  409. package/src/util/color/index.d.ts +3 -3
  410. package/src/util/color/index.js +4 -4
  411. package/src/util/color/parseColor.d.ts +59 -59
  412. package/src/util/color/parseColor.js +119 -119
  413. package/src/util/color/rgbToHex.d.ts +8 -8
  414. package/src/util/color/rgbToHex.js +7 -7
  415. package/src/util/color/rgbToHsl.d.ts +8 -8
  416. package/src/util/color/rgbToHsl.js +27 -27
  417. package/src/util/date/dateDiff.d.ts +7 -7
  418. package/src/util/date/dateDiff.js +3 -3
  419. package/src/util/date/diff.d.ts +7 -7
  420. package/src/util/date/diff.js +7 -7
  421. package/src/util/date/encodeDateWithTimezoneOffset.js +18 -18
  422. package/src/util/date/index.d.ts +8 -8
  423. package/src/util/date/index.js +9 -9
  424. package/src/util/date/lowerBoundCheck.d.ts +7 -7
  425. package/src/util/date/lowerBoundCheck.js +6 -6
  426. package/src/util/date/maxDate.d.ts +5 -5
  427. package/src/util/date/maxDate.js +9 -9
  428. package/src/util/date/minDate.d.ts +5 -5
  429. package/src/util/date/minDate.js +9 -9
  430. package/src/util/date/monthStart.d.ts +5 -5
  431. package/src/util/date/monthStart.js +3 -3
  432. package/src/util/date/sameDate.d.ts +6 -6
  433. package/src/util/date/sameDate.js +5 -5
  434. package/src/util/date/upperBoundCheck.d.ts +7 -7
  435. package/src/util/date/upperBoundCheck.js +6 -6
  436. package/src/util/date/upperBoundCheck.spec.js +30 -30
  437. package/src/util/date/zeroTime.d.ts +6 -6
  438. package/src/util/date/zeroTime.js +3 -3
  439. package/src/util/debounce.d.ts +9 -9
  440. package/src/util/debounce.js +18 -18
  441. package/src/util/dummyCallback.d.ts +1 -1
  442. package/src/util/dummyCallback.js +1 -1
  443. package/src/util/escapeSpecialRegexCharacters.d.ts +6 -6
  444. package/src/util/escapeSpecialRegexCharacters.js +3 -3
  445. package/src/util/eventCallbacks.d.ts +4 -4
  446. package/src/util/eventCallbacks.js +2 -2
  447. package/src/util/expandFatArrows.js +118 -118
  448. package/src/util/findScrollableParent.js +16 -16
  449. package/src/util/getActiveElement.js +3 -3
  450. package/src/util/getParentFrameBoundingClientRect.js +21 -21
  451. package/src/util/getScrollerBoundingClientRect.js +21 -21
  452. package/src/util/getSearchQueryPredicate.js +58 -58
  453. package/src/util/getSearchQueryPredicate.spec.js +40 -40
  454. package/src/util/getTopLevelBoundingClientRect.js +13 -13
  455. package/src/util/getVendorPrefix.js +26 -26
  456. package/src/util/index.d.ts +50 -50
  457. package/src/util/index.js +52 -52
  458. package/src/util/index.scss +10 -10
  459. package/src/util/innerTextTrim.d.ts +6 -6
  460. package/src/util/innerTextTrim.js +5 -5
  461. package/src/util/isArray.d.ts +1 -1
  462. package/src/util/isArray.js +3 -3
  463. package/src/util/isDefined.js +3 -3
  464. package/src/util/isDigit.d.ts +6 -6
  465. package/src/util/isDigit.js +3 -3
  466. package/src/util/isFunction.d.ts +1 -1
  467. package/src/util/isFunction.js +3 -3
  468. package/src/util/isNonEmptyArray.d.ts +1 -1
  469. package/src/util/isNonEmptyArray.js +3 -3
  470. package/src/util/isNumber.d.ts +1 -1
  471. package/src/util/isNumber.js +3 -3
  472. package/src/util/isObject.d.ts +1 -1
  473. package/src/util/isObject.js +3 -3
  474. package/src/util/isPromise.d.ts +1 -1
  475. package/src/util/isPromise.js +6 -6
  476. package/src/util/isString.d.ts +1 -1
  477. package/src/util/isString.js +3 -3
  478. package/src/util/isTextInputElement.d.ts +1 -1
  479. package/src/util/isTextInputElement.js +2 -2
  480. package/src/util/isTouchDevice.d.ts +1 -1
  481. package/src/util/isTouchDevice.js +7 -7
  482. package/src/util/isTouchEvent.d.ts +3 -3
  483. package/src/util/isTouchEvent.js +64 -64
  484. package/src/util/isUndefined.d.ts +1 -1
  485. package/src/util/isUndefined.js +3 -3
  486. package/src/util/onIdleCallback.js +13 -13
  487. package/src/util/parseStyle.d.ts +3 -3
  488. package/src/util/parseStyle.js +27 -27
  489. package/src/util/quote.d.ts +2 -2
  490. package/src/util/quote.js +4 -4
  491. package/src/util/reverseSlice.js +9 -9
  492. package/src/util/routeAppend.js +15 -15
  493. package/src/util/routeAppend.spec.js +19 -19
  494. package/src/util/scrollElementIntoView.d.ts +7 -7
  495. package/src/util/scrollElementIntoView.js +34 -34
  496. package/src/util/scss/add-rules.scss +39 -39
  497. package/src/util/scss/calc.scss +40 -40
  498. package/src/util/scss/call-once.scss +10 -10
  499. package/src/util/scss/clockwise.scss +47 -47
  500. package/src/util/scss/colors.scss +7 -7
  501. package/src/util/scss/deep-get.scss +9 -9
  502. package/src/util/scss/deep-merge.scss +18 -18
  503. package/src/util/scss/include.scss +47 -47
  504. package/src/util/scss/index.scss +9 -9
  505. package/src/util/shallowEquals.js +43 -43
  506. package/src/util/throttle.d.ts +8 -8
  507. package/src/util/throttle.js +14 -14
  508. package/src/util/validatedDebounce.js +19 -19
  509. package/src/variables.scss +217 -217
  510. package/src/widgets/AccessorBindings.spec.tsx +66 -66
  511. package/src/widgets/Button.d.ts +58 -58
  512. package/src/widgets/Button.js +118 -118
  513. package/src/widgets/Button.scss +117 -117
  514. package/src/widgets/CxCredit.d.ts +12 -12
  515. package/src/widgets/CxCredit.js +31 -31
  516. package/src/widgets/CxCredit.scss +41 -41
  517. package/src/widgets/DocumentTitle.d.ts +11 -11
  518. package/src/widgets/DocumentTitle.js +68 -68
  519. package/src/widgets/FlexBox.d.ts +69 -69
  520. package/src/widgets/FlexBox.js +92 -92
  521. package/src/widgets/FlexBox.scss +146 -146
  522. package/src/widgets/Heading.d.ts +16 -16
  523. package/src/widgets/Heading.js +32 -32
  524. package/src/widgets/Heading.scss +38 -38
  525. package/src/widgets/HighlightedSearchText.d.ts +9 -9
  526. package/src/widgets/HighlightedSearchText.js +36 -36
  527. package/src/widgets/HighlightedSearchText.scss +18 -18
  528. package/src/widgets/HtmlElement.d.ts +26 -26
  529. package/src/widgets/HtmlElement.js +273 -273
  530. package/src/widgets/HtmlElement.spec.js +57 -57
  531. package/src/widgets/Icon.d.ts +34 -34
  532. package/src/widgets/Icon.js +50 -50
  533. package/src/widgets/Icon.scss +20 -20
  534. package/src/widgets/List.d.ts +96 -96
  535. package/src/widgets/List.js +587 -587
  536. package/src/widgets/List.scss +92 -92
  537. package/src/widgets/ProgressBar.d.ts +17 -17
  538. package/src/widgets/ProgressBar.js +46 -46
  539. package/src/widgets/ProgressBar.scss +49 -49
  540. package/src/widgets/Resizer.d.ts +27 -27
  541. package/src/widgets/Resizer.js +151 -151
  542. package/src/widgets/Resizer.scss +42 -42
  543. package/src/widgets/Sandbox.d.ts +16 -16
  544. package/src/widgets/Sandbox.js +62 -62
  545. package/src/widgets/Section.d.ts +52 -52
  546. package/src/widgets/Section.js +139 -139
  547. package/src/widgets/Section.scss +54 -54
  548. package/src/widgets/animations.scss +10 -10
  549. package/src/widgets/autoFocus.d.ts +1 -1
  550. package/src/widgets/autoFocus.js +9 -9
  551. package/src/widgets/cx.d.ts +1 -1
  552. package/src/widgets/cx.js +71 -71
  553. package/src/widgets/drag-drop/DragClone.scss +33 -33
  554. package/src/widgets/drag-drop/DragHandle.d.ts +10 -10
  555. package/src/widgets/drag-drop/DragHandle.js +37 -37
  556. package/src/widgets/drag-drop/DragHandle.scss +16 -16
  557. package/src/widgets/drag-drop/DragSource.d.ts +45 -45
  558. package/src/widgets/drag-drop/DragSource.js +160 -160
  559. package/src/widgets/drag-drop/DragSource.scss +24 -24
  560. package/src/widgets/drag-drop/DropZone.d.ts +98 -98
  561. package/src/widgets/drag-drop/DropZone.scss +74 -74
  562. package/src/widgets/drag-drop/index.d.ts +4 -4
  563. package/src/widgets/drag-drop/index.js +4 -4
  564. package/src/widgets/drag-drop/index.scss +3 -3
  565. package/src/widgets/drag-drop/ops.d.ts +56 -56
  566. package/src/widgets/drag-drop/ops.js +344 -344
  567. package/src/widgets/drag-drop/variables.scss +11 -11
  568. package/src/widgets/enableAllInternalDependencies.d.ts +1 -1
  569. package/src/widgets/enableAllInternalDependencies.js +11 -11
  570. package/src/widgets/form/Calendar.d.ts +86 -86
  571. package/src/widgets/form/Calendar.variables.scss +63 -63
  572. package/src/widgets/form/Checkbox.d.ts +43 -43
  573. package/src/widgets/form/Checkbox.js +200 -200
  574. package/src/widgets/form/Checkbox.scss +125 -125
  575. package/src/widgets/form/Checkbox.variables.scss +39 -39
  576. package/src/widgets/form/ColorField.d.ts +43 -43
  577. package/src/widgets/form/ColorField.js +397 -397
  578. package/src/widgets/form/ColorField.scss +92 -92
  579. package/src/widgets/form/ColorPicker.d.ts +23 -23
  580. package/src/widgets/form/ColorPicker.js +480 -480
  581. package/src/widgets/form/ColorPicker.scss +275 -275
  582. package/src/widgets/form/ColorPicker.variables.scss +22 -22
  583. package/src/widgets/form/DateField.d.ts +6 -6
  584. package/src/widgets/form/DateField.js +12 -12
  585. package/src/widgets/form/DateTimeField.d.ts +86 -86
  586. package/src/widgets/form/DateTimeField.js +573 -573
  587. package/src/widgets/form/DateTimeField.scss +90 -90
  588. package/src/widgets/form/DateTimePicker.js +391 -391
  589. package/src/widgets/form/DateTimePicker.scss +44 -44
  590. package/src/widgets/form/Field.d.ts +112 -112
  591. package/src/widgets/form/Field.scss +162 -162
  592. package/src/widgets/form/FieldGroup.d.ts +6 -6
  593. package/src/widgets/form/FieldGroup.js +5 -5
  594. package/src/widgets/form/FieldIcon.js +42 -42
  595. package/src/widgets/form/HelpText.d.ts +10 -10
  596. package/src/widgets/form/HelpText.js +9 -9
  597. package/src/widgets/form/HelpText.scss +23 -23
  598. package/src/widgets/form/Label.d.ts +23 -23
  599. package/src/widgets/form/Label.js +89 -89
  600. package/src/widgets/form/Label.scss +36 -36
  601. package/src/widgets/form/LabeledContainer.d.ts +9 -9
  602. package/src/widgets/form/LabeledContainer.js +59 -59
  603. package/src/widgets/form/LookupField.d.ts +173 -173
  604. package/src/widgets/form/LookupField.scss +219 -219
  605. package/src/widgets/form/MonthField.d.ts +92 -92
  606. package/src/widgets/form/MonthField.js +516 -516
  607. package/src/widgets/form/MonthField.scss +99 -99
  608. package/src/widgets/form/MonthPicker.d.ts +74 -74
  609. package/src/widgets/form/MonthPicker.js +632 -632
  610. package/src/widgets/form/MonthPicker.scss +120 -120
  611. package/src/widgets/form/NumberField.d.ts +96 -96
  612. package/src/widgets/form/NumberField.js +459 -459
  613. package/src/widgets/form/NumberField.scss +65 -65
  614. package/src/widgets/form/Radio.d.ts +37 -37
  615. package/src/widgets/form/Radio.js +188 -188
  616. package/src/widgets/form/Radio.scss +122 -122
  617. package/src/widgets/form/Radio.variables.scss +45 -45
  618. package/src/widgets/form/Select.d.ts +69 -69
  619. package/src/widgets/form/Select.js +269 -269
  620. package/src/widgets/form/Select.scss +98 -98
  621. package/src/widgets/form/Slider.d.ts +65 -65
  622. package/src/widgets/form/Slider.js +351 -351
  623. package/src/widgets/form/Slider.scss +119 -119
  624. package/src/widgets/form/Switch.d.ts +38 -38
  625. package/src/widgets/form/Switch.js +118 -118
  626. package/src/widgets/form/Switch.scss +140 -140
  627. package/src/widgets/form/TextArea.d.ts +17 -17
  628. package/src/widgets/form/TextArea.js +186 -186
  629. package/src/widgets/form/TextArea.scss +60 -60
  630. package/src/widgets/form/TextField.d.ts +78 -78
  631. package/src/widgets/form/TextField.js +289 -289
  632. package/src/widgets/form/TextField.scss +55 -55
  633. package/src/widgets/form/TimeField.d.ts +6 -6
  634. package/src/widgets/form/TimeField.js +11 -11
  635. package/src/widgets/form/TimeList.js +84 -84
  636. package/src/widgets/form/UploadButton.js +213 -213
  637. package/src/widgets/form/UploadButton.scss +47 -47
  638. package/src/widgets/form/ValidationError.d.ts +10 -10
  639. package/src/widgets/form/ValidationError.js +44 -44
  640. package/src/widgets/form/ValidationError.scss +21 -21
  641. package/src/widgets/form/ValidationGroup.d.ts +41 -41
  642. package/src/widgets/form/ValidationGroup.js +68 -68
  643. package/src/widgets/form/ValidationGroup.spec.js +148 -148
  644. package/src/widgets/form/Validator.d.ts +8 -8
  645. package/src/widgets/form/Validator.js +21 -21
  646. package/src/widgets/form/Wheel.js +261 -261
  647. package/src/widgets/form/Wheel.scss +150 -150
  648. package/src/widgets/form/index.d.ts +26 -26
  649. package/src/widgets/form/index.js +28 -28
  650. package/src/widgets/form/index.scss +24 -24
  651. package/src/widgets/form/variables.scss +352 -352
  652. package/src/widgets/grid/Grid.scss +680 -680
  653. package/src/widgets/grid/GridCell.d.ts +38 -38
  654. package/src/widgets/grid/GridCell.js +71 -71
  655. package/src/widgets/grid/GridCellEditor.js +41 -41
  656. package/src/widgets/grid/GridRow.js +228 -228
  657. package/src/widgets/grid/GridRowLine.js +24 -24
  658. package/src/widgets/grid/Pagination.d.ts +14 -14
  659. package/src/widgets/grid/Pagination.js +94 -94
  660. package/src/widgets/grid/Pagination.scss +113 -113
  661. package/src/widgets/grid/TreeNode.d.ts +25 -25
  662. package/src/widgets/grid/TreeNode.js +102 -102
  663. package/src/widgets/grid/TreeNode.scss +89 -89
  664. package/src/widgets/grid/index.d.ts +3 -3
  665. package/src/widgets/grid/index.js +14 -14
  666. package/src/widgets/grid/index.scss +3 -3
  667. package/src/widgets/icons/arrow-down.svg +3 -3
  668. package/src/widgets/icons/arrow-right.svg +2 -2
  669. package/src/widgets/icons/base.svg +104 -104
  670. package/src/widgets/icons/calendar-old.svg +169 -169
  671. package/src/widgets/icons/calendar.js +16 -16
  672. package/src/widgets/icons/calendar.svg +187 -187
  673. package/src/widgets/icons/check.js +12 -12
  674. package/src/widgets/icons/clear.js +14 -14
  675. package/src/widgets/icons/clear.svg +74 -74
  676. package/src/widgets/icons/close.js +19 -19
  677. package/src/widgets/icons/close.svg +74 -74
  678. package/src/widgets/icons/cx.js +37 -37
  679. package/src/widgets/icons/drop-down.js +14 -14
  680. package/src/widgets/icons/dropdown-arrow.svg +61 -61
  681. package/src/widgets/icons/file.js +12 -12
  682. package/src/widgets/icons/file.svg +4 -4
  683. package/src/widgets/icons/folder-open.js +14 -14
  684. package/src/widgets/icons/folder-open.svg +5 -5
  685. package/src/widgets/icons/folder.js +12 -12
  686. package/src/widgets/icons/folder.svg +58 -58
  687. package/src/widgets/icons/forward.js +21 -21
  688. package/src/widgets/icons/forward.svg +67 -67
  689. package/src/widgets/icons/index.js +14 -14
  690. package/src/widgets/icons/loading.js +23 -23
  691. package/src/widgets/icons/loading.svg +4 -4
  692. package/src/widgets/icons/menu.js +16 -16
  693. package/src/widgets/icons/pixel-picker.js +17 -17
  694. package/src/widgets/icons/registry.js +53 -53
  695. package/src/widgets/icons/search.js +12 -12
  696. package/src/widgets/icons/search.svg +107 -107
  697. package/src/widgets/icons/sort-asc.js +13 -13
  698. package/src/widgets/icons/sort-asc.svg +3 -3
  699. package/src/widgets/icons/square.js +17 -17
  700. package/src/widgets/index.d.ts +55 -55
  701. package/src/widgets/index.js +57 -57
  702. package/src/widgets/index.scss +16 -16
  703. package/src/widgets/nav/Link.d.ts +26 -26
  704. package/src/widgets/nav/Link.js +7 -7
  705. package/src/widgets/nav/Link.scss +18 -18
  706. package/src/widgets/nav/LinkButton.d.ts +31 -31
  707. package/src/widgets/nav/Menu.d.ts +27 -27
  708. package/src/widgets/nav/Menu.js +406 -406
  709. package/src/widgets/nav/Menu.scss +74 -74
  710. package/src/widgets/nav/MenuItem.d.ts +31 -31
  711. package/src/widgets/nav/MenuItem.js +445 -445
  712. package/src/widgets/nav/MenuSpacer.d.ts +5 -5
  713. package/src/widgets/nav/MenuSpacer.js +12 -12
  714. package/src/widgets/nav/RedirectRoute.d.ts +9 -9
  715. package/src/widgets/nav/RedirectRoute.js +40 -40
  716. package/src/widgets/nav/Route.d.ts +21 -21
  717. package/src/widgets/nav/Route.js +105 -105
  718. package/src/widgets/nav/Route.spec.js +27 -27
  719. package/src/widgets/nav/Scroller.d.ts +17 -17
  720. package/src/widgets/nav/Scroller.js +214 -214
  721. package/src/widgets/nav/Scroller.scss +146 -146
  722. package/src/widgets/nav/Submenu.d.ts +6 -6
  723. package/src/widgets/nav/Submenu.js +6 -6
  724. package/src/widgets/nav/Tab.d.ts +33 -33
  725. package/src/widgets/nav/Tab.js +82 -82
  726. package/src/widgets/nav/Tab.scss +81 -81
  727. package/src/widgets/nav/cover.scss +21 -21
  728. package/src/widgets/nav/index.d.ts +10 -10
  729. package/src/widgets/nav/index.js +10 -10
  730. package/src/widgets/nav/index.scss +5 -5
  731. package/src/widgets/nav/variables.scss +25 -25
  732. package/src/widgets/overlay/ContextMenu.d.ts +10 -10
  733. package/src/widgets/overlay/ContextMenu.js +29 -29
  734. package/src/widgets/overlay/Dropdown.d.ts +32 -32
  735. package/src/widgets/overlay/Dropdown.js +612 -612
  736. package/src/widgets/overlay/Dropdown.scss +184 -184
  737. package/src/widgets/overlay/FlyweightTooltipTracker.d.ts +8 -8
  738. package/src/widgets/overlay/FlyweightTooltipTracker.js +36 -36
  739. package/src/widgets/overlay/MsgBox.d.ts +16 -16
  740. package/src/widgets/overlay/MsgBox.js +116 -116
  741. package/src/widgets/overlay/Overlay.d.ts +69 -69
  742. package/src/widgets/overlay/Overlay.js +747 -747
  743. package/src/widgets/overlay/Overlay.scss +66 -66
  744. package/src/widgets/overlay/Toast.d.ts +30 -30
  745. package/src/widgets/overlay/Toast.js +92 -92
  746. package/src/widgets/overlay/Toast.scss +162 -162
  747. package/src/widgets/overlay/Tooltip.d.ts +50 -50
  748. package/src/widgets/overlay/Tooltip.js +288 -288
  749. package/src/widgets/overlay/Tooltip.scss +175 -175
  750. package/src/widgets/overlay/alerts.d.ts +7 -7
  751. package/src/widgets/overlay/alerts.js +39 -39
  752. package/src/widgets/overlay/captureMouse.d.ts +53 -53
  753. package/src/widgets/overlay/captureMouse.js +124 -124
  754. package/src/widgets/overlay/captureMouse.scss +13 -13
  755. package/src/widgets/overlay/index.d.ts +10 -10
  756. package/src/widgets/overlay/index.js +10 -10
  757. package/src/widgets/overlay/index.scss +15 -15
  758. package/src/widgets/overlay/tooltip-ops.d.ts +8 -8
  759. package/src/widgets/overlay/tooltip-ops.js +24 -24
  760. package/src/widgets/variables.scss +144 -144
@@ -1,415 +1,415 @@
1
- import { Cx } from './Cx';
2
- import { VDOM } from './Widget';
3
- import { HtmlElement } from '../widgets/HtmlElement';
4
- import { Store } from '../data/Store';
5
- import { Controller } from './Controller';
6
-
7
- import renderer from 'react-test-renderer';
8
- import assert from 'assert';
9
-
10
- describe('Controller', () => {
11
-
12
- it('invokes lifetime methods', () => {
13
-
14
- let init = 0,
15
- prepare = 0,
16
- explore = 0,
17
- cleanup = 0;
18
-
19
- class TestController extends Controller {
20
- onInit() {
21
- init++;
22
- }
23
-
24
- onExplore() {
25
- explore++;
26
- }
27
-
28
- onPrepare() {
29
- prepare++;
30
- }
31
-
32
- onCleanup() {
33
- cleanup++;
34
- }
35
- }
36
-
37
- let widget = <cx>
38
- <div controller={TestController}/>
39
- </cx>;
40
-
41
- let store = new Store();
42
-
43
- const component = renderer.create(
44
- <Cx widget={widget} store={store} subscribe immediate/>
45
- );
46
-
47
- let tree = component.toJSON();
48
- assert.equal(init, 1);
49
- assert.equal(explore, 1);
50
- assert.equal(prepare, 1);
51
- assert.equal(cleanup, 1);
52
- });
53
-
54
- it('widgets invoke controller methods specified as strings', () => {
55
-
56
- let callback = 0;
57
-
58
- class TestController extends Controller {
59
- callback() {
60
- ++callback;
61
- }
62
- }
63
-
64
- class Cmp extends VDOM.Component {
65
- render() {
66
- return <div/>
67
- }
68
-
69
- componentDidMount() {
70
- this.props.instance.invoke("onTest");
71
- }
72
- }
73
-
74
- let store = new Store();
75
-
76
- const component = renderer.create(
77
- <Cx store={store} subscribe immediate>
78
- <Cmp controller={TestController} onTest="callback"/>
79
- </Cx>
80
- );
81
-
82
- let tree = component.toJSON();
83
- assert.equal(callback, 1);
84
- });
85
-
86
- it('widgets can access controller methods specified in ancestor controllers', () => {
87
-
88
- let callback1 = 0;
89
- let callback2 = 0;
90
-
91
- class TestController1 extends Controller {
92
- callback1() {
93
- ++callback1;
94
- }
95
- }
96
-
97
- class TestController2 extends Controller {
98
- callback2() {
99
- ++callback2;
100
- }
101
- }
102
-
103
- class Cmp extends VDOM.Component {
104
- render() {
105
- return <div/>
106
- }
107
-
108
- componentDidMount() {
109
- this.props.instance.invoke("onTest");
110
- }
111
- }
112
-
113
- let store = new Store();
114
-
115
- const component = renderer.create(
116
- <Cx store={store} subscribe immediate>
117
- <div controller={TestController1}>
118
- <Cmp controller={TestController2} onTest="callback1"/>
119
- </div>
120
- </Cx>
121
- );
122
-
123
- let tree = component.toJSON();
124
- assert.equal(callback1, 1);
125
- assert.equal(callback2, 0);
126
- });
127
-
128
- it('ancestor controllers are initialized first', () => {
129
-
130
- let order = [];
131
-
132
- class TestController1 extends Controller {
133
- onInit() {
134
- order.push("1");
135
- }
136
- }
137
-
138
- class TestController2 extends Controller {
139
- onInit() {
140
- order.push("2");
141
- }
142
- }
143
-
144
- let store = new Store();
145
-
146
- const component = renderer.create(
147
- <Cx store={store} subscribe immediate>
148
- <div controller={TestController1}>
149
- <div controller={TestController2}/>
150
- </div>
151
- </Cx>
152
- );
153
-
154
- let tree = component.toJSON();
155
- assert.deepEqual(order, ["1", "2"]);
156
- });
157
-
158
- it('controllers on invisible elements are not initialized', () => {
159
-
160
- let order = [];
161
-
162
- class TestController1 extends Controller {
163
- onInit() {
164
- order.push("1");
165
- }
166
- }
167
-
168
- class TestController2 extends Controller {
169
- onInit() {
170
- order.push("2");
171
- }
172
- }
173
-
174
- let store = new Store();
175
-
176
- const component = renderer.create(
177
- <Cx store={store} subscribe immediate>
178
- <div controller={TestController1}>
179
- <div visible={false} controller={TestController2}/>
180
- </div>
181
- </Cx>
182
- );
183
-
184
- let tree = component.toJSON();
185
- assert.deepEqual(order, ["1"]);
186
- });
187
-
188
- it('invokes triggers and computables in order of definition', () => {
189
- let log = [];
190
-
191
- class TestController extends Controller {
192
- onInit() {
193
- this.addTrigger('t1', [], () => {
194
- log.push('t1');
195
- }, true);
196
-
197
- this.addComputable('c1', [], () => {
198
- log.push('c1');
199
- return null;
200
- });
201
-
202
- this.addTrigger('t2', [], () => {
203
- log.push('t2');
204
- }, true)
205
- }
206
- }
207
-
208
- let widget = <cx>
209
- <div controller={TestController}/>
210
- </cx>;
211
-
212
- let store = new Store();
213
-
214
- const component = renderer.create(
215
- <Cx widget={widget} store={store} subscribe immediate/>
216
- );
217
-
218
- let tree = component.toJSON();
219
- assert.deepEqual(log, ["t1", "c1", "t2"]);
220
- });
221
-
222
- it('is recreated if a component is hidden and shown', () => {
223
- let initCount = 0;
224
-
225
- class TestController extends Controller {
226
- onInit() {
227
- initCount++;
228
- }
229
- }
230
-
231
- let store = new Store();
232
- store.set('visible', true);
233
-
234
- const component = renderer.create(
235
- <Cx store={store} subscribe immediate>
236
- <div visible:bind="visible" controller={TestController}/>
237
- </Cx>
238
- );
239
-
240
- let tree1 = component.toJSON();
241
- assert.equal(initCount, 1);
242
-
243
- store.set('visible', false);
244
- let tree2 = component.toJSON();
245
- assert.equal(tree2, null);
246
-
247
- store.set('visible', true);
248
- let tree3 = component.toJSON();
249
- assert.equal(initCount, 2);
250
- });
251
-
252
- it('allows creation through a factory', () => {
253
- let store = new Store({ data: { x: 0}});
254
-
255
- const controllerFactory = ({store}) => {
256
- return {
257
- increment() {
258
- store.update("x", x => x + 1);
259
- }
260
- }
261
- };
262
-
263
- let c = Controller.create(controllerFactory, {store});
264
-
265
- c.increment();
266
- assert.equal(store.get("x"), 1);
267
- });
268
-
269
- it('lifetime methods of a functional controller are properly invoked', () => {
270
- let initCount = 0,
271
- destroyCount = 0;
272
-
273
- const testController = () => ({
274
- onInit() {
275
- initCount++;
276
- },
277
-
278
- onDestroy() {
279
- destroyCount++;
280
- }
281
- });
282
-
283
- let store = new Store();
284
- store.set('visible', true);
285
-
286
- const component = renderer.create(
287
- <Cx store={store} subscribe immediate>
288
- <div visible:bind="visible" controller={testController}/>
289
- </Cx>
290
- );
291
-
292
- let tree1 = component.toJSON();
293
- assert.equal(initCount, 1);
294
-
295
- store.set('visible', false);
296
- let tree2 = component.toJSON();
297
- assert.equal(destroyCount, 1);
298
-
299
- store.set('visible', true);
300
- let tree3 = component.toJSON();
301
- assert.equal(initCount, 2);
302
- });
303
-
304
- it('widgets can easily define controller methods', () => {
305
- let store = new Store({ data: { x: 0}});
306
-
307
- const component = renderer.create(
308
- <Cx store={store} subscribe immediate>
309
- <div
310
- controller={{
311
- increment(count) {
312
- this.store.update("x", x => x + count);
313
- }
314
- }}
315
- >
316
- <div
317
- controller={{
318
- onInit() {
319
- this.invokeParentMethod("increment", 1);
320
- }
321
- }}
322
- />
323
- </div>
324
-
325
-
326
- </Cx>
327
- );
328
-
329
- let tree1 = component.toJSON();
330
- assert.equal(store.get("x"), 1);
331
- });
332
-
333
- it('functional controllers get store methods through configuration', () => {
334
- let store = new Store({ data: { x: 0}});
335
-
336
- const component = renderer.create(
337
- <Cx store={store} subscribe immediate>
338
- <div
339
- controller={({update}) => ({
340
- increment(count) {
341
- update("x", x => x + count);
342
- }
343
- })}
344
- >
345
- <div
346
- controller={{
347
- onInit() {
348
- this.invokeParentMethod("increment", 1);
349
- }
350
- }}
351
- />
352
- </div>
353
- </Cx>
354
- );
355
-
356
- let tree1 = component.toJSON();
357
- assert.equal(store.get("x"), 1);
358
- });
359
-
360
- it('addComputable accepts refs', () => {
361
- let store = new Store({data: {x: 0}});
362
-
363
- const component = renderer.create(
364
- <Cx store={store} subscribe immediate>
365
- <div
366
- controller={({ref}) => {
367
- let x = ref("x");
368
- return {
369
- onInit() {
370
- this.addComputable("y", [x], x => x + 1);
371
- }
372
- }
373
- }}
374
- />
375
- </Cx>
376
- );
377
-
378
- let tree1 = component.toJSON();
379
- assert.equal(store.get("y"), 1);
380
- });
381
-
382
- it('invokeParentMethod is invoked on parent instance', () => {
383
-
384
- let testValid = [];
385
-
386
- const TestController1 = {
387
- onInit() {
388
- this.test();
389
- },
390
- test() {
391
- testValid.push(1);
392
- this.invokeParentMethod('test', 2);
393
- }
394
- }
395
-
396
- const TestController2 = {
397
- test(val) {
398
- testValid.push(val)
399
- }
400
- }
401
-
402
- let store = new Store();
403
-
404
- const component = renderer.create(
405
- <Cx store={store} subscribe immediate>
406
- <div controller={TestController2}>
407
- <div controller={TestController1}/>
408
- </div>
409
- </Cx>
410
- );
411
-
412
- // let tree = component.toJSON();
413
- assert.deepStrictEqual(testValid, [1, 2]);
414
- });
1
+ import { Cx } from './Cx';
2
+ import { VDOM } from './Widget';
3
+ import { HtmlElement } from '../widgets/HtmlElement';
4
+ import { Store } from '../data/Store';
5
+ import { Controller } from './Controller';
6
+
7
+ import renderer from 'react-test-renderer';
8
+ import assert from 'assert';
9
+
10
+ describe('Controller', () => {
11
+
12
+ it('invokes lifetime methods', () => {
13
+
14
+ let init = 0,
15
+ prepare = 0,
16
+ explore = 0,
17
+ cleanup = 0;
18
+
19
+ class TestController extends Controller {
20
+ onInit() {
21
+ init++;
22
+ }
23
+
24
+ onExplore() {
25
+ explore++;
26
+ }
27
+
28
+ onPrepare() {
29
+ prepare++;
30
+ }
31
+
32
+ onCleanup() {
33
+ cleanup++;
34
+ }
35
+ }
36
+
37
+ let widget = <cx>
38
+ <div controller={TestController}/>
39
+ </cx>;
40
+
41
+ let store = new Store();
42
+
43
+ const component = renderer.create(
44
+ <Cx widget={widget} store={store} subscribe immediate/>
45
+ );
46
+
47
+ let tree = component.toJSON();
48
+ assert.equal(init, 1);
49
+ assert.equal(explore, 1);
50
+ assert.equal(prepare, 1);
51
+ assert.equal(cleanup, 1);
52
+ });
53
+
54
+ it('widgets invoke controller methods specified as strings', () => {
55
+
56
+ let callback = 0;
57
+
58
+ class TestController extends Controller {
59
+ callback() {
60
+ ++callback;
61
+ }
62
+ }
63
+
64
+ class Cmp extends VDOM.Component {
65
+ render() {
66
+ return <div/>
67
+ }
68
+
69
+ componentDidMount() {
70
+ this.props.instance.invoke("onTest");
71
+ }
72
+ }
73
+
74
+ let store = new Store();
75
+
76
+ const component = renderer.create(
77
+ <Cx store={store} subscribe immediate>
78
+ <Cmp controller={TestController} onTest="callback"/>
79
+ </Cx>
80
+ );
81
+
82
+ let tree = component.toJSON();
83
+ assert.equal(callback, 1);
84
+ });
85
+
86
+ it('widgets can access controller methods specified in ancestor controllers', () => {
87
+
88
+ let callback1 = 0;
89
+ let callback2 = 0;
90
+
91
+ class TestController1 extends Controller {
92
+ callback1() {
93
+ ++callback1;
94
+ }
95
+ }
96
+
97
+ class TestController2 extends Controller {
98
+ callback2() {
99
+ ++callback2;
100
+ }
101
+ }
102
+
103
+ class Cmp extends VDOM.Component {
104
+ render() {
105
+ return <div/>
106
+ }
107
+
108
+ componentDidMount() {
109
+ this.props.instance.invoke("onTest");
110
+ }
111
+ }
112
+
113
+ let store = new Store();
114
+
115
+ const component = renderer.create(
116
+ <Cx store={store} subscribe immediate>
117
+ <div controller={TestController1}>
118
+ <Cmp controller={TestController2} onTest="callback1"/>
119
+ </div>
120
+ </Cx>
121
+ );
122
+
123
+ let tree = component.toJSON();
124
+ assert.equal(callback1, 1);
125
+ assert.equal(callback2, 0);
126
+ });
127
+
128
+ it('ancestor controllers are initialized first', () => {
129
+
130
+ let order = [];
131
+
132
+ class TestController1 extends Controller {
133
+ onInit() {
134
+ order.push("1");
135
+ }
136
+ }
137
+
138
+ class TestController2 extends Controller {
139
+ onInit() {
140
+ order.push("2");
141
+ }
142
+ }
143
+
144
+ let store = new Store();
145
+
146
+ const component = renderer.create(
147
+ <Cx store={store} subscribe immediate>
148
+ <div controller={TestController1}>
149
+ <div controller={TestController2}/>
150
+ </div>
151
+ </Cx>
152
+ );
153
+
154
+ let tree = component.toJSON();
155
+ assert.deepEqual(order, ["1", "2"]);
156
+ });
157
+
158
+ it('controllers on invisible elements are not initialized', () => {
159
+
160
+ let order = [];
161
+
162
+ class TestController1 extends Controller {
163
+ onInit() {
164
+ order.push("1");
165
+ }
166
+ }
167
+
168
+ class TestController2 extends Controller {
169
+ onInit() {
170
+ order.push("2");
171
+ }
172
+ }
173
+
174
+ let store = new Store();
175
+
176
+ const component = renderer.create(
177
+ <Cx store={store} subscribe immediate>
178
+ <div controller={TestController1}>
179
+ <div visible={false} controller={TestController2}/>
180
+ </div>
181
+ </Cx>
182
+ );
183
+
184
+ let tree = component.toJSON();
185
+ assert.deepEqual(order, ["1"]);
186
+ });
187
+
188
+ it('invokes triggers and computables in order of definition', () => {
189
+ let log = [];
190
+
191
+ class TestController extends Controller {
192
+ onInit() {
193
+ this.addTrigger('t1', [], () => {
194
+ log.push('t1');
195
+ }, true);
196
+
197
+ this.addComputable('c1', [], () => {
198
+ log.push('c1');
199
+ return null;
200
+ });
201
+
202
+ this.addTrigger('t2', [], () => {
203
+ log.push('t2');
204
+ }, true)
205
+ }
206
+ }
207
+
208
+ let widget = <cx>
209
+ <div controller={TestController}/>
210
+ </cx>;
211
+
212
+ let store = new Store();
213
+
214
+ const component = renderer.create(
215
+ <Cx widget={widget} store={store} subscribe immediate/>
216
+ );
217
+
218
+ let tree = component.toJSON();
219
+ assert.deepEqual(log, ["t1", "c1", "t2"]);
220
+ });
221
+
222
+ it('is recreated if a component is hidden and shown', () => {
223
+ let initCount = 0;
224
+
225
+ class TestController extends Controller {
226
+ onInit() {
227
+ initCount++;
228
+ }
229
+ }
230
+
231
+ let store = new Store();
232
+ store.set('visible', true);
233
+
234
+ const component = renderer.create(
235
+ <Cx store={store} subscribe immediate>
236
+ <div visible:bind="visible" controller={TestController}/>
237
+ </Cx>
238
+ );
239
+
240
+ let tree1 = component.toJSON();
241
+ assert.equal(initCount, 1);
242
+
243
+ store.set('visible', false);
244
+ let tree2 = component.toJSON();
245
+ assert.equal(tree2, null);
246
+
247
+ store.set('visible', true);
248
+ let tree3 = component.toJSON();
249
+ assert.equal(initCount, 2);
250
+ });
251
+
252
+ it('allows creation through a factory', () => {
253
+ let store = new Store({ data: { x: 0}});
254
+
255
+ const controllerFactory = ({store}) => {
256
+ return {
257
+ increment() {
258
+ store.update("x", x => x + 1);
259
+ }
260
+ }
261
+ };
262
+
263
+ let c = Controller.create(controllerFactory, {store});
264
+
265
+ c.increment();
266
+ assert.equal(store.get("x"), 1);
267
+ });
268
+
269
+ it('lifetime methods of a functional controller are properly invoked', () => {
270
+ let initCount = 0,
271
+ destroyCount = 0;
272
+
273
+ const testController = () => ({
274
+ onInit() {
275
+ initCount++;
276
+ },
277
+
278
+ onDestroy() {
279
+ destroyCount++;
280
+ }
281
+ });
282
+
283
+ let store = new Store();
284
+ store.set('visible', true);
285
+
286
+ const component = renderer.create(
287
+ <Cx store={store} subscribe immediate>
288
+ <div visible:bind="visible" controller={testController}/>
289
+ </Cx>
290
+ );
291
+
292
+ let tree1 = component.toJSON();
293
+ assert.equal(initCount, 1);
294
+
295
+ store.set('visible', false);
296
+ let tree2 = component.toJSON();
297
+ assert.equal(destroyCount, 1);
298
+
299
+ store.set('visible', true);
300
+ let tree3 = component.toJSON();
301
+ assert.equal(initCount, 2);
302
+ });
303
+
304
+ it('widgets can easily define controller methods', () => {
305
+ let store = new Store({ data: { x: 0}});
306
+
307
+ const component = renderer.create(
308
+ <Cx store={store} subscribe immediate>
309
+ <div
310
+ controller={{
311
+ increment(count) {
312
+ this.store.update("x", x => x + count);
313
+ }
314
+ }}
315
+ >
316
+ <div
317
+ controller={{
318
+ onInit() {
319
+ this.invokeParentMethod("increment", 1);
320
+ }
321
+ }}
322
+ />
323
+ </div>
324
+
325
+
326
+ </Cx>
327
+ );
328
+
329
+ let tree1 = component.toJSON();
330
+ assert.equal(store.get("x"), 1);
331
+ });
332
+
333
+ it('functional controllers get store methods through configuration', () => {
334
+ let store = new Store({ data: { x: 0}});
335
+
336
+ const component = renderer.create(
337
+ <Cx store={store} subscribe immediate>
338
+ <div
339
+ controller={({update}) => ({
340
+ increment(count) {
341
+ update("x", x => x + count);
342
+ }
343
+ })}
344
+ >
345
+ <div
346
+ controller={{
347
+ onInit() {
348
+ this.invokeParentMethod("increment", 1);
349
+ }
350
+ }}
351
+ />
352
+ </div>
353
+ </Cx>
354
+ );
355
+
356
+ let tree1 = component.toJSON();
357
+ assert.equal(store.get("x"), 1);
358
+ });
359
+
360
+ it('addComputable accepts refs', () => {
361
+ let store = new Store({data: {x: 0}});
362
+
363
+ const component = renderer.create(
364
+ <Cx store={store} subscribe immediate>
365
+ <div
366
+ controller={({ref}) => {
367
+ let x = ref("x");
368
+ return {
369
+ onInit() {
370
+ this.addComputable("y", [x], x => x + 1);
371
+ }
372
+ }
373
+ }}
374
+ />
375
+ </Cx>
376
+ );
377
+
378
+ let tree1 = component.toJSON();
379
+ assert.equal(store.get("y"), 1);
380
+ });
381
+
382
+ it('invokeParentMethod is invoked on parent instance', () => {
383
+
384
+ let testValid = [];
385
+
386
+ const TestController1 = {
387
+ onInit() {
388
+ this.test();
389
+ },
390
+ test() {
391
+ testValid.push(1);
392
+ this.invokeParentMethod('test', 2);
393
+ }
394
+ }
395
+
396
+ const TestController2 = {
397
+ test(val) {
398
+ testValid.push(val)
399
+ }
400
+ }
401
+
402
+ let store = new Store();
403
+
404
+ const component = renderer.create(
405
+ <Cx store={store} subscribe immediate>
406
+ <div controller={TestController2}>
407
+ <div controller={TestController1}/>
408
+ </div>
409
+ </Cx>
410
+ );
411
+
412
+ // let tree = component.toJSON();
413
+ assert.deepStrictEqual(testValid, [1, 2]);
414
+ });
415
415
  });