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