cx 24.8.0 → 24.8.1

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