cx 22.7.1 → 22.8.2

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