cx 22.3.3 → 22.3.4

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