cx 24.8.7 → 24.9.1

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