cx 22.8.1 → 22.8.2

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