cx 22.8.2 → 22.9.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 (777) 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/data.js +2506 -2506
  5. package/dist/manifest.js +291 -291
  6. package/dist/reset.js +1 -0
  7. package/dist/ui.js +5241 -5241
  8. package/dist/widgets.css +27 -5
  9. package/dist/widgets.js +21956 -21949
  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 -21
  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 -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 +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 -55
  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.variables.scss +107 -107
  517. package/src/widgets/CxCredit.d.ts +12 -12
  518. package/src/widgets/CxCredit.js +31 -31
  519. package/src/widgets/CxCredit.scss +41 -41
  520. package/src/widgets/DocumentTitle.d.ts +11 -11
  521. package/src/widgets/DocumentTitle.js +68 -68
  522. package/src/widgets/FlexBox.d.ts +69 -69
  523. package/src/widgets/FlexBox.js +92 -92
  524. package/src/widgets/FlexBox.scss +155 -155
  525. package/src/widgets/Heading.d.ts +16 -16
  526. package/src/widgets/Heading.js +32 -32
  527. package/src/widgets/Heading.scss +38 -38
  528. package/src/widgets/HighlightedSearchText.d.ts +9 -9
  529. package/src/widgets/HighlightedSearchText.js +36 -36
  530. package/src/widgets/HighlightedSearchText.scss +18 -18
  531. package/src/widgets/HtmlElement.d.ts +26 -26
  532. package/src/widgets/HtmlElement.js +273 -273
  533. package/src/widgets/HtmlElement.spec.js +57 -57
  534. package/src/widgets/Icon.d.ts +36 -36
  535. package/src/widgets/Icon.js +50 -50
  536. package/src/widgets/Icon.scss +20 -20
  537. package/src/widgets/List.d.ts +87 -87
  538. package/src/widgets/List.js +589 -589
  539. package/src/widgets/List.scss +92 -92
  540. package/src/widgets/ProgressBar.d.ts +17 -17
  541. package/src/widgets/ProgressBar.js +46 -46
  542. package/src/widgets/ProgressBar.scss +49 -49
  543. package/src/widgets/Resizer.d.ts +27 -27
  544. package/src/widgets/Resizer.js +151 -151
  545. package/src/widgets/Resizer.scss +42 -42
  546. package/src/widgets/Sandbox.d.ts +16 -16
  547. package/src/widgets/Sandbox.js +62 -62
  548. package/src/widgets/Section.d.ts +52 -52
  549. package/src/widgets/Section.js +139 -139
  550. package/src/widgets/Section.scss +54 -54
  551. package/src/widgets/animations.scss +10 -10
  552. package/src/widgets/autoFocus.d.ts +1 -1
  553. package/src/widgets/autoFocus.js +11 -11
  554. package/src/widgets/cx.d.ts +1 -1
  555. package/src/widgets/cx.js +71 -71
  556. package/src/widgets/drag-drop/DragClone.scss +33 -33
  557. package/src/widgets/drag-drop/DragHandle.d.ts +10 -10
  558. package/src/widgets/drag-drop/DragHandle.js +37 -37
  559. package/src/widgets/drag-drop/DragHandle.scss +16 -16
  560. package/src/widgets/drag-drop/DragSource.d.ts +34 -34
  561. package/src/widgets/drag-drop/DragSource.js +160 -160
  562. package/src/widgets/drag-drop/DragSource.scss +24 -24
  563. package/src/widgets/drag-drop/DropZone.d.ts +90 -90
  564. package/src/widgets/drag-drop/DropZone.js +213 -213
  565. package/src/widgets/drag-drop/DropZone.scss +74 -74
  566. package/src/widgets/drag-drop/index.d.ts +4 -4
  567. package/src/widgets/drag-drop/index.js +4 -4
  568. package/src/widgets/drag-drop/index.scss +3 -3
  569. package/src/widgets/drag-drop/ops.d.ts +56 -56
  570. package/src/widgets/drag-drop/ops.js +344 -344
  571. package/src/widgets/drag-drop/variables.scss +11 -11
  572. package/src/widgets/enableAllInternalDependencies.d.ts +1 -1
  573. package/src/widgets/enableAllInternalDependencies.js +11 -11
  574. package/src/widgets/form/Calendar.d.ts +60 -60
  575. package/src/widgets/form/Calendar.js +506 -506
  576. package/src/widgets/form/Calendar.scss +164 -164
  577. package/src/widgets/form/Calendar.variables.scss +63 -63
  578. package/src/widgets/form/Checkbox.d.ts +43 -43
  579. package/src/widgets/form/Checkbox.js +200 -200
  580. package/src/widgets/form/Checkbox.scss +122 -122
  581. package/src/widgets/form/Checkbox.variables.scss +39 -39
  582. package/src/widgets/form/ColorField.d.ts +43 -43
  583. package/src/widgets/form/ColorField.js +389 -389
  584. package/src/widgets/form/ColorField.scss +92 -92
  585. package/src/widgets/form/ColorPicker.d.ts +23 -23
  586. package/src/widgets/form/ColorPicker.js +451 -451
  587. package/src/widgets/form/ColorPicker.scss +184 -184
  588. package/src/widgets/form/ColorPicker.variables.scss +20 -20
  589. package/src/widgets/form/DateField.d.ts +6 -6
  590. package/src/widgets/form/DateField.js +12 -12
  591. package/src/widgets/form/DateTimeField.d.ts +83 -83
  592. package/src/widgets/form/DateTimeField.js +571 -571
  593. package/src/widgets/form/DateTimeField.scss +90 -90
  594. package/src/widgets/form/DateTimePicker.js +391 -391
  595. package/src/widgets/form/DateTimePicker.scss +44 -44
  596. package/src/widgets/form/Field.d.ts +112 -112
  597. package/src/widgets/form/Field.js +419 -419
  598. package/src/widgets/form/Field.scss +162 -162
  599. package/src/widgets/form/FieldGroup.d.ts +6 -6
  600. package/src/widgets/form/FieldGroup.js +5 -5
  601. package/src/widgets/form/HelpText.d.ts +10 -10
  602. package/src/widgets/form/HelpText.js +9 -9
  603. package/src/widgets/form/HelpText.scss +23 -23
  604. package/src/widgets/form/Label.d.ts +25 -25
  605. package/src/widgets/form/Label.js +86 -86
  606. package/src/widgets/form/Label.scss +36 -36
  607. package/src/widgets/form/LabeledContainer.d.ts +17 -17
  608. package/src/widgets/form/LabeledContainer.js +57 -57
  609. package/src/widgets/form/LookupField.d.ts +159 -159
  610. package/src/widgets/form/LookupField.js +1119 -1118
  611. package/src/widgets/form/LookupField.scss +219 -210
  612. package/src/widgets/form/MonthField.d.ts +88 -88
  613. package/src/widgets/form/MonthField.js +512 -512
  614. package/src/widgets/form/MonthField.scss +99 -99
  615. package/src/widgets/form/MonthPicker.d.ts +68 -68
  616. package/src/widgets/form/MonthPicker.js +631 -631
  617. package/src/widgets/form/MonthPicker.scss +120 -120
  618. package/src/widgets/form/NumberField.d.ts +94 -94
  619. package/src/widgets/form/NumberField.js +443 -443
  620. package/src/widgets/form/NumberField.scss +65 -65
  621. package/src/widgets/form/Radio.d.ts +37 -37
  622. package/src/widgets/form/Radio.js +188 -188
  623. package/src/widgets/form/Radio.scss +122 -122
  624. package/src/widgets/form/Radio.variables.scss +45 -45
  625. package/src/widgets/form/Select.d.ts +73 -73
  626. package/src/widgets/form/Select.js +274 -274
  627. package/src/widgets/form/Select.scss +98 -98
  628. package/src/widgets/form/Slider.d.ts +62 -62
  629. package/src/widgets/form/Slider.js +345 -345
  630. package/src/widgets/form/Slider.scss +121 -121
  631. package/src/widgets/form/Switch.d.ts +38 -38
  632. package/src/widgets/form/Switch.js +120 -120
  633. package/src/widgets/form/Switch.scss +140 -140
  634. package/src/widgets/form/TextArea.d.ts +17 -17
  635. package/src/widgets/form/TextArea.js +182 -182
  636. package/src/widgets/form/TextArea.scss +60 -60
  637. package/src/widgets/form/TextField.d.ts +75 -75
  638. package/src/widgets/form/TextField.js +285 -285
  639. package/src/widgets/form/TextField.scss +55 -67
  640. package/src/widgets/form/TimeField.d.ts +6 -6
  641. package/src/widgets/form/TimeField.js +11 -11
  642. package/src/widgets/form/TimeList.js +84 -84
  643. package/src/widgets/form/UploadButton.d.ts +31 -31
  644. package/src/widgets/form/UploadButton.js +213 -213
  645. package/src/widgets/form/UploadButton.scss +47 -47
  646. package/src/widgets/form/ValidationError.d.ts +10 -10
  647. package/src/widgets/form/ValidationError.js +37 -37
  648. package/src/widgets/form/ValidationError.scss +21 -21
  649. package/src/widgets/form/ValidationGroup.spec.js +148 -148
  650. package/src/widgets/form/Validator.d.ts +6 -6
  651. package/src/widgets/form/Wheel.js +261 -261
  652. package/src/widgets/form/Wheel.scss +148 -148
  653. package/src/widgets/form/index.d.ts +26 -26
  654. package/src/widgets/form/index.js +29 -29
  655. package/src/widgets/form/index.scss +24 -24
  656. package/src/widgets/form/variables.scss +1 -0
  657. package/src/widgets/grid/Grid.d.ts +369 -369
  658. package/src/widgets/grid/Grid.js +3223 -3223
  659. package/src/widgets/grid/Grid.scss +680 -680
  660. package/src/widgets/grid/GridCell.d.ts +29 -29
  661. package/src/widgets/grid/GridCell.js +70 -70
  662. package/src/widgets/grid/GridCellEditor.js +41 -41
  663. package/src/widgets/grid/GridRow.js +228 -228
  664. package/src/widgets/grid/GridRowLine.js +24 -24
  665. package/src/widgets/grid/Pagination.d.ts +14 -14
  666. package/src/widgets/grid/Pagination.js +94 -94
  667. package/src/widgets/grid/Pagination.scss +113 -113
  668. package/src/widgets/grid/TreeNode.d.ts +25 -25
  669. package/src/widgets/grid/TreeNode.js +102 -102
  670. package/src/widgets/grid/TreeNode.scss +90 -90
  671. package/src/widgets/grid/index.d.ts +3 -3
  672. package/src/widgets/grid/index.js +14 -14
  673. package/src/widgets/grid/index.scss +3 -3
  674. package/src/widgets/grid/variables.scss +88 -88
  675. package/src/widgets/icons/arrow-down.svg +3 -3
  676. package/src/widgets/icons/arrow-right.svg +2 -2
  677. package/src/widgets/icons/base.svg +104 -104
  678. package/src/widgets/icons/calendar-old.svg +169 -169
  679. package/src/widgets/icons/calendar.js +16 -16
  680. package/src/widgets/icons/calendar.svg +187 -187
  681. package/src/widgets/icons/check.js +12 -12
  682. package/src/widgets/icons/clear.js +14 -14
  683. package/src/widgets/icons/clear.svg +74 -74
  684. package/src/widgets/icons/close.js +19 -19
  685. package/src/widgets/icons/close.svg +74 -74
  686. package/src/widgets/icons/cx.js +37 -37
  687. package/src/widgets/icons/drop-down.js +14 -14
  688. package/src/widgets/icons/dropdown-arrow.svg +61 -61
  689. package/src/widgets/icons/file.js +12 -12
  690. package/src/widgets/icons/file.svg +4 -4
  691. package/src/widgets/icons/folder-open.js +14 -14
  692. package/src/widgets/icons/folder-open.svg +5 -5
  693. package/src/widgets/icons/folder.js +12 -12
  694. package/src/widgets/icons/folder.svg +58 -58
  695. package/src/widgets/icons/forward.js +21 -21
  696. package/src/widgets/icons/forward.svg +67 -67
  697. package/src/widgets/icons/index.js +14 -14
  698. package/src/widgets/icons/loading.js +23 -23
  699. package/src/widgets/icons/loading.svg +4 -4
  700. package/src/widgets/icons/menu.js +16 -16
  701. package/src/widgets/icons/registry.js +53 -53
  702. package/src/widgets/icons/search.js +12 -12
  703. package/src/widgets/icons/search.svg +107 -107
  704. package/src/widgets/icons/sort-asc.js +13 -13
  705. package/src/widgets/icons/sort-asc.svg +3 -3
  706. package/src/widgets/icons/square.js +17 -17
  707. package/src/widgets/index.d.ts +55 -55
  708. package/src/widgets/index.js +57 -57
  709. package/src/widgets/index.scss +16 -16
  710. package/src/widgets/nav/Link.d.ts +26 -26
  711. package/src/widgets/nav/Link.js +7 -7
  712. package/src/widgets/nav/Link.scss +18 -18
  713. package/src/widgets/nav/LinkButton.d.ts +31 -31
  714. package/src/widgets/nav/LinkButton.js +127 -127
  715. package/src/widgets/nav/Menu.d.ts +27 -27
  716. package/src/widgets/nav/Menu.js +406 -406
  717. package/src/widgets/nav/Menu.scss +74 -74
  718. package/src/widgets/nav/Menu.variables.scss +17 -17
  719. package/src/widgets/nav/MenuItem.d.ts +35 -35
  720. package/src/widgets/nav/MenuItem.js +445 -445
  721. package/src/widgets/nav/MenuItem.scss +128 -128
  722. package/src/widgets/nav/MenuSpacer.d.ts +5 -5
  723. package/src/widgets/nav/MenuSpacer.js +12 -12
  724. package/src/widgets/nav/RedirectRoute.d.ts +9 -9
  725. package/src/widgets/nav/RedirectRoute.js +40 -40
  726. package/src/widgets/nav/Route.d.ts +21 -21
  727. package/src/widgets/nav/Route.js +105 -105
  728. package/src/widgets/nav/Route.spec.js +27 -27
  729. package/src/widgets/nav/Scroller.d.ts +17 -17
  730. package/src/widgets/nav/Scroller.js +214 -214
  731. package/src/widgets/nav/Scroller.scss +146 -146
  732. package/src/widgets/nav/Submenu.d.ts +6 -6
  733. package/src/widgets/nav/Submenu.js +6 -6
  734. package/src/widgets/nav/Tab.d.ts +33 -33
  735. package/src/widgets/nav/Tab.js +82 -82
  736. package/src/widgets/nav/Tab.scss +81 -81
  737. package/src/widgets/nav/Tab.variables.scss +80 -80
  738. package/src/widgets/nav/cover.scss +21 -21
  739. package/src/widgets/nav/index.d.ts +10 -10
  740. package/src/widgets/nav/index.js +10 -10
  741. package/src/widgets/nav/index.scss +5 -5
  742. package/src/widgets/nav/variables.scss +25 -25
  743. package/src/widgets/overlay/ContextMenu.d.ts +8 -8
  744. package/src/widgets/overlay/ContextMenu.js +28 -28
  745. package/src/widgets/overlay/Dropdown.d.ts +27 -27
  746. package/src/widgets/overlay/Dropdown.js +610 -610
  747. package/src/widgets/overlay/Dropdown.scss +184 -184
  748. package/src/widgets/overlay/FlyweightTooltipTracker.d.ts +8 -8
  749. package/src/widgets/overlay/FlyweightTooltipTracker.js +36 -36
  750. package/src/widgets/overlay/MsgBox.d.ts +16 -16
  751. package/src/widgets/overlay/MsgBox.js +116 -116
  752. package/src/widgets/overlay/Overlay.d.ts +69 -69
  753. package/src/widgets/overlay/Overlay.js +747 -747
  754. package/src/widgets/overlay/Overlay.scss +66 -66
  755. package/src/widgets/overlay/Toast.d.ts +30 -30
  756. package/src/widgets/overlay/Toast.js +92 -92
  757. package/src/widgets/overlay/Toast.scss +162 -162
  758. package/src/widgets/overlay/Tooltip.d.ts +50 -50
  759. package/src/widgets/overlay/Tooltip.js +288 -283
  760. package/src/widgets/overlay/Tooltip.scss +175 -175
  761. package/src/widgets/overlay/Window.d.ts +39 -39
  762. package/src/widgets/overlay/Window.js +195 -195
  763. package/src/widgets/overlay/Window.scss +112 -112
  764. package/src/widgets/overlay/Window.variables.scss +67 -67
  765. package/src/widgets/overlay/alerts.d.ts +7 -7
  766. package/src/widgets/overlay/alerts.js +39 -39
  767. package/src/widgets/overlay/captureMouse.d.ts +53 -53
  768. package/src/widgets/overlay/captureMouse.js +132 -132
  769. package/src/widgets/overlay/captureMouse.scss +13 -13
  770. package/src/widgets/overlay/index.d.ts +10 -10
  771. package/src/widgets/overlay/index.js +10 -10
  772. package/src/widgets/overlay/index.scss +15 -15
  773. package/src/widgets/overlay/tooltip-ops.d.ts +8 -8
  774. package/src/widgets/overlay/tooltip-ops.js +24 -24
  775. package/src/widgets/overlay/variables.scss +82 -82
  776. package/src/widgets/variables.scss +144 -144
  777. package/yarn-error.log +0 -7973
@@ -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
  });