cx 24.8.5 → 24.8.7

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 (747) 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 +774 -774
  5. package/dist/ui.js +11 -3
  6. package/dist/widgets.js +1 -1
  7. package/index.js +17 -17
  8. package/locale/de-de.js +74 -74
  9. package/locale/en-us.js +74 -74
  10. package/locale/es-es.js +74 -74
  11. package/locale/fr-fr.js +74 -74
  12. package/locale/nl-nl.js +74 -74
  13. package/locale/pt-pt.js +74 -74
  14. package/locale/sr-latn-ba.js +74 -74
  15. package/package.json +1 -1
  16. package/src/charts/Bar.js +89 -89
  17. package/src/charts/Bar.scss +26 -26
  18. package/src/charts/BarGraph.d.ts +15 -15
  19. package/src/charts/BarGraph.js +112 -112
  20. package/src/charts/BarGraph.scss +27 -27
  21. package/src/charts/BubbleGraph.js +92 -92
  22. package/src/charts/BubbleGraph.scss +29 -29
  23. package/src/charts/Chart.d.ts +12 -12
  24. package/src/charts/Chart.js +75 -75
  25. package/src/charts/ColorMap.d.ts +21 -21
  26. package/src/charts/ColorMap.js +96 -96
  27. package/src/charts/Column.scss +26 -26
  28. package/src/charts/ColumnBarBase.d.ts +64 -64
  29. package/src/charts/ColumnBarGraphBase.d.ts +73 -73
  30. package/src/charts/ColumnBarGraphBase.js +114 -114
  31. package/src/charts/ColumnGraph.d.ts +18 -18
  32. package/src/charts/ColumnGraph.scss +27 -27
  33. package/src/charts/Grid.js +5 -5
  34. package/src/charts/Gridlines.d.ts +24 -24
  35. package/src/charts/Gridlines.js +48 -48
  36. package/src/charts/Gridlines.scss +22 -22
  37. package/src/charts/Legend.d.ts +27 -27
  38. package/src/charts/Legend.scss +41 -41
  39. package/src/charts/LegendEntry.scss +30 -30
  40. package/src/charts/LineGraph.d.ts +92 -92
  41. package/src/charts/LineGraph.scss +23 -23
  42. package/src/charts/Marker.scss +41 -41
  43. package/src/charts/MarkerLine.d.ts +57 -57
  44. package/src/charts/MarkerLine.js +128 -128
  45. package/src/charts/MarkerLine.scss +17 -17
  46. package/src/charts/MouseTracker.d.ts +16 -16
  47. package/src/charts/MouseTracker.js +80 -80
  48. package/src/charts/Pie.js +8 -8
  49. package/src/charts/PieChart.d.ts +89 -89
  50. package/src/charts/PieChart.js +527 -527
  51. package/src/charts/PieChart.scss +26 -26
  52. package/src/charts/PieLabel.d.ts +26 -26
  53. package/src/charts/PieLabel.js +71 -71
  54. package/src/charts/PieLabelsContainer.d.ts +6 -6
  55. package/src/charts/PieLabelsContainer.js +55 -55
  56. package/src/charts/Range.d.ts +74 -74
  57. package/src/charts/Range.js +205 -205
  58. package/src/charts/Range.scss +18 -18
  59. package/src/charts/RangeMarker.d.ts +35 -35
  60. package/src/charts/RangeMarker.js +155 -155
  61. package/src/charts/RangeMarker.scss +15 -15
  62. package/src/charts/ScatterGraph.d.ts +64 -64
  63. package/src/charts/ScatterGraph.scss +21 -21
  64. package/src/charts/Swimlane.d.ts +24 -24
  65. package/src/charts/Swimlane.js +140 -140
  66. package/src/charts/Swimlane.scss +14 -14
  67. package/src/charts/Swimlanes.d.ts +41 -41
  68. package/src/charts/Swimlanes.js +114 -114
  69. package/src/charts/Swimlanes.scss +14 -14
  70. package/src/charts/axis/Axis.scss +22 -22
  71. package/src/charts/axis/CategoryAxis.d.ts +24 -24
  72. package/src/charts/axis/CategoryAxis.js +212 -212
  73. package/src/charts/axis/CategoryAxis.scss +32 -32
  74. package/src/charts/axis/NumericAxis.d.ts +46 -46
  75. package/src/charts/axis/NumericAxis.js +347 -347
  76. package/src/charts/axis/NumericAxis.scss +32 -32
  77. package/src/charts/axis/Stack.d.ts +10 -10
  78. package/src/charts/axis/Stack.js +55 -55
  79. package/src/charts/axis/TimeAxis.d.ts +23 -23
  80. package/src/charts/axis/TimeAxis.js +510 -510
  81. package/src/charts/axis/TimeAxis.scss +32 -32
  82. package/src/charts/axis/index.d.ts +3 -3
  83. package/src/charts/axis/index.js +3 -3
  84. package/src/charts/axis/index.scss +5 -5
  85. package/src/charts/axis/variables.scss +2 -2
  86. package/src/charts/helpers/MinMaxFinder.js +36 -36
  87. package/src/charts/helpers/PointReducer.d.ts +15 -15
  88. package/src/charts/helpers/PointReducer.js +43 -43
  89. package/src/charts/helpers/SnapPointFinder.js +69 -69
  90. package/src/charts/helpers/index.d.ts +4 -4
  91. package/src/charts/helpers/index.js +4 -4
  92. package/src/charts/index.d.ts +27 -27
  93. package/src/charts/index.js +34 -34
  94. package/src/charts/index.scss +22 -22
  95. package/src/charts/palette.scss +95 -95
  96. package/src/charts/shapes.d.ts +22 -22
  97. package/src/charts/shapes.js +79 -79
  98. package/src/charts/variables.scss +21 -21
  99. package/src/core.d.ts +271 -271
  100. package/src/data/AggregateFunction.d.ts +20 -20
  101. package/src/data/AggregateFunction.js +145 -145
  102. package/src/data/ArrayElementView.d.ts +13 -13
  103. package/src/data/ArrayRef.d.ts +14 -14
  104. package/src/data/ArrayRef.js +34 -34
  105. package/src/data/AugmentedViewBase.d.ts +18 -18
  106. package/src/data/Binding.d.ts +19 -19
  107. package/src/data/Binding.js +76 -76
  108. package/src/data/Binding.spec.js +69 -69
  109. package/src/data/ExposedRecordView.d.ts +14 -14
  110. package/src/data/ExposedRecordView.js +69 -69
  111. package/src/data/ExposedValueView.d.ts +19 -19
  112. package/src/data/ExposedValueView.js +72 -72
  113. package/src/data/Expression.d.ts +17 -17
  114. package/src/data/Expression.js +220 -220
  115. package/src/data/Expression.spec.js +174 -174
  116. package/src/data/Grouper.d.ts +21 -21
  117. package/src/data/Grouper.js +144 -144
  118. package/src/data/Grouper.spec.js +57 -57
  119. package/src/data/NestedDataView.d.ts +19 -19
  120. package/src/data/NestedDataView.js +22 -22
  121. package/src/data/ReadOnlyDataView.d.ts +14 -14
  122. package/src/data/ReadOnlyDataView.js +26 -26
  123. package/src/data/Ref.d.ts +24 -24
  124. package/src/data/Ref.js +79 -79
  125. package/src/data/Ref.spec.js +79 -79
  126. package/src/data/Store.d.ts +14 -14
  127. package/src/data/Store.js +46 -46
  128. package/src/data/Store.spec.js +22 -22
  129. package/src/data/StoreProxy.d.ts +4 -4
  130. package/src/data/StoreProxy.js +16 -16
  131. package/src/data/StoreRef.js +54 -54
  132. package/src/data/StoreRef.spec.js +24 -24
  133. package/src/data/StringTemplate.d.ts +15 -15
  134. package/src/data/StringTemplate.js +92 -92
  135. package/src/data/StructuredDataAccessor.d.ts +7 -7
  136. package/src/data/StructuredSelector.d.ts +17 -17
  137. package/src/data/StructuredSelector.js +131 -131
  138. package/src/data/StructuredSelector.spec.js +113 -113
  139. package/src/data/SubscribableView.d.ts +11 -11
  140. package/src/data/SubscribableView.js +54 -54
  141. package/src/data/View.d.ts +131 -131
  142. package/src/data/View.js +182 -182
  143. package/src/data/View.spec.js +60 -60
  144. package/src/data/ZoomIntoPropertyView.d.ts +11 -11
  145. package/src/data/ZoomIntoPropertyView.js +33 -33
  146. package/src/data/ZoomIntoPropertyView.spec.js +65 -65
  147. package/src/data/comparer.d.ts +7 -7
  148. package/src/data/comparer.js +54 -54
  149. package/src/data/comparer.spec.js +60 -60
  150. package/src/data/computable.d.ts +125 -125
  151. package/src/data/computable.js +56 -56
  152. package/src/data/computable.spec.js +55 -55
  153. package/src/data/createAccessorModelProxy.d.ts +6 -6
  154. package/src/data/createAccessorModelProxy.js +43 -43
  155. package/src/data/createAccessorModelProxy.spec.tsx +44 -44
  156. package/src/data/createStructuredSelector.d.ts +2 -2
  157. package/src/data/createStructuredSelector.js +43 -43
  158. package/src/data/createStructuredSelector.spec.js +46 -46
  159. package/src/data/defaultCompare.js +14 -14
  160. package/src/data/diff/diffArrays.d.ts +15 -15
  161. package/src/data/diff/diffArrays.js +41 -41
  162. package/src/data/diff/diffs.spec.js +49 -49
  163. package/src/data/diff/index.d.ts +1 -1
  164. package/src/data/diff/index.js +1 -1
  165. package/src/data/enableFatArrowExpansion.d.ts +1 -1
  166. package/src/data/enableFatArrowExpansion.js +6 -6
  167. package/src/data/getAccessor.d.ts +8 -8
  168. package/src/data/getAccessor.js +61 -61
  169. package/src/data/getSelector.d.ts +3 -3
  170. package/src/data/getSelector.js +48 -48
  171. package/src/data/getSelector.spec.js +43 -43
  172. package/src/data/index.d.ts +30 -30
  173. package/src/data/index.js +28 -28
  174. package/src/data/isSelector.d.ts +1 -1
  175. package/src/data/isSelector.js +26 -26
  176. package/src/data/ops/append.d.ts +1 -1
  177. package/src/data/ops/append.js +7 -7
  178. package/src/data/ops/append.spec.js +28 -28
  179. package/src/data/ops/filter.d.ts +1 -1
  180. package/src/data/ops/filter.js +8 -8
  181. package/src/data/ops/filter.spec.js +29 -29
  182. package/src/data/ops/findTreeNode.d.ts +1 -1
  183. package/src/data/ops/findTreeNode.js +15 -15
  184. package/src/data/ops/findTreeNode.spec.js +24 -24
  185. package/src/data/ops/findTreePath.d.ts +6 -6
  186. package/src/data/ops/findTreePath.js +16 -16
  187. package/src/data/ops/index.d.ts +10 -10
  188. package/src/data/ops/index.js +11 -11
  189. package/src/data/ops/insertElement.d.ts +1 -1
  190. package/src/data/ops/insertElement.js +2 -2
  191. package/src/data/ops/merge.d.ts +3 -3
  192. package/src/data/ops/merge.js +9 -9
  193. package/src/data/ops/merge.spec.js +27 -27
  194. package/src/data/ops/moveElement.d.ts +1 -1
  195. package/src/data/ops/moveElement.js +13 -13
  196. package/src/data/ops/removeTreeNodes.d.ts +5 -5
  197. package/src/data/ops/removeTreeNodes.js +5 -5
  198. package/src/data/ops/removeTreeNodes.spec.js +28 -28
  199. package/src/data/ops/updateArray.d.ts +5 -5
  200. package/src/data/ops/updateArray.js +24 -24
  201. package/src/data/ops/updateArray.spec.js +38 -38
  202. package/src/data/ops/updateTree.d.ts +7 -7
  203. package/src/data/ops/updateTree.js +25 -25
  204. package/src/data/ops/updateTree.spec.js +36 -36
  205. package/src/global.scss +13 -13
  206. package/src/hooks/createLocalStorageRef.d.ts +2 -2
  207. package/src/hooks/createLocalStorageRef.js +22 -22
  208. package/src/hooks/index.d.ts +8 -8
  209. package/src/hooks/index.js +7 -7
  210. package/src/hooks/invokeCallback.d.ts +5 -5
  211. package/src/hooks/invokeCallback.js +6 -6
  212. package/src/hooks/invokeCallback.spec.js +53 -53
  213. package/src/hooks/resolveCallback.d.ts +3 -3
  214. package/src/hooks/resolveCallback.js +11 -11
  215. package/src/hooks/resolveCallback.spec.js +54 -54
  216. package/src/hooks/store.d.ts +7 -7
  217. package/src/hooks/store.js +32 -32
  218. package/src/hooks/store.spec.js +73 -73
  219. package/src/hooks/useEffect.d.ts +2 -2
  220. package/src/hooks/useEffect.js +14 -14
  221. package/src/hooks/useInterval.js +7 -7
  222. package/src/hooks/useState.d.ts +2 -2
  223. package/src/hooks/useState.js +15 -15
  224. package/src/hooks/useTrigger.d.ts +4 -4
  225. package/src/hooks/useTrigger.js +20 -20
  226. package/src/hooks/useTrigger.spec.js +102 -102
  227. package/src/index.js +7 -7
  228. package/src/index.scss +6 -6
  229. package/src/svg/BoundedObject.d.ts +22 -22
  230. package/src/svg/BoundedObject.js +59 -59
  231. package/src/svg/ClipRect.d.ts +4 -4
  232. package/src/svg/ClipRect.js +23 -23
  233. package/src/svg/Ellipse.d.ts +23 -23
  234. package/src/svg/Ellipse.js +36 -36
  235. package/src/svg/Line.d.ts +20 -20
  236. package/src/svg/Line.js +32 -32
  237. package/src/svg/NonOverlappingRect.d.ts +5 -5
  238. package/src/svg/NonOverlappingRect.js +14 -14
  239. package/src/svg/NonOverlappingRectGroup.d.ts +3 -3
  240. package/src/svg/NonOverlappingRectGroup.js +36 -36
  241. package/src/svg/Svg.d.ts +32 -32
  242. package/src/svg/Svg.js +177 -177
  243. package/src/svg/Svg.scss +26 -26
  244. package/src/svg/Text.d.ts +40 -40
  245. package/src/svg/Text.js +78 -78
  246. package/src/svg/TextualBoundedObject.d.ts +6 -6
  247. package/src/svg/TextualBoundedObject.js +28 -28
  248. package/src/svg/index.d.ts +11 -11
  249. package/src/svg/index.js +17 -17
  250. package/src/svg/index.scss +8 -8
  251. package/src/svg/util/Rect.d.ts +40 -40
  252. package/src/svg/util/Rect.js +108 -108
  253. package/src/ui/CSS.d.ts +19 -19
  254. package/src/ui/CSS.js +79 -79
  255. package/src/ui/CSSHelper.d.ts +10 -10
  256. package/src/ui/CSSHelper.js +17 -17
  257. package/src/ui/Container.d.ts +18 -18
  258. package/src/ui/Container.js +183 -183
  259. package/src/ui/ContentResolver.d.ts +12 -12
  260. package/src/ui/ContentResolver.js +78 -78
  261. package/src/ui/Controller.js +114 -114
  262. package/src/ui/Controller.spec.js +414 -414
  263. package/src/ui/Culture.d.ts +51 -51
  264. package/src/ui/Culture.js +129 -129
  265. package/src/ui/Cx.d.ts +18 -18
  266. package/src/ui/Cx.js +325 -317
  267. package/src/ui/Cx.spec.js +193 -193
  268. package/src/ui/DataProxy.d.ts +12 -12
  269. package/src/ui/DataProxy.js +44 -44
  270. package/src/ui/DetachedScope.d.ts +21 -21
  271. package/src/ui/DetachedScope.js +93 -93
  272. package/src/ui/FocusManager.d.ts +29 -29
  273. package/src/ui/Format.d.ts +2 -2
  274. package/src/ui/Format.js +107 -107
  275. package/src/ui/HoverSync.d.ts +13 -13
  276. package/src/ui/HoverSync.js +147 -147
  277. package/src/ui/Instance.js +610 -610
  278. package/src/ui/IsolatedScope.d.ts +16 -16
  279. package/src/ui/IsolatedScope.js +29 -29
  280. package/src/ui/IsolatedScope.spec.js +62 -62
  281. package/src/ui/Localization.d.ts +17 -17
  282. package/src/ui/Localization.js +70 -70
  283. package/src/ui/PureContainer.d.ts +16 -16
  284. package/src/ui/PureContainer.js +7 -7
  285. package/src/ui/RenderingContext.d.ts +9 -9
  286. package/src/ui/RenderingContext.js +88 -88
  287. package/src/ui/Repeater.d.ts +60 -60
  288. package/src/ui/Repeater.js +102 -102
  289. package/src/ui/Repeater.spec.js +143 -143
  290. package/src/ui/Rescope.d.ts +10 -10
  291. package/src/ui/Rescope.js +31 -31
  292. package/src/ui/Rescope.spec.js +195 -195
  293. package/src/ui/ResizeManager.d.ts +9 -9
  294. package/src/ui/ResizeManager.js +30 -30
  295. package/src/ui/Restate.d.ts +21 -21
  296. package/src/ui/Restate.js +163 -163
  297. package/src/ui/Restate.spec.js +422 -422
  298. package/src/ui/StaticText.d.ts +8 -8
  299. package/src/ui/StaticText.js +9 -9
  300. package/src/ui/StructuredInstanceDataAccessor.d.ts +16 -16
  301. package/src/ui/StructuredInstanceDataAccessor.js +26 -26
  302. package/src/ui/Text.d.ts +10 -10
  303. package/src/ui/Text.js +25 -25
  304. package/src/ui/VDOM.js +2 -2
  305. package/src/ui/Widget.d.ts +14 -14
  306. package/src/ui/Widget.js +200 -200
  307. package/src/ui/ZIndexManager.d.ts +7 -7
  308. package/src/ui/ZIndexManager.js +11 -11
  309. package/src/ui/adapter/ArrayAdapter.d.ts +17 -17
  310. package/src/ui/adapter/ArrayAdapter.js +142 -142
  311. package/src/ui/adapter/ArrayAdapter.spec.js +55 -55
  312. package/src/ui/adapter/DataAdapter.js +15 -15
  313. package/src/ui/adapter/GroupAdapter.d.ts +23 -23
  314. package/src/ui/adapter/TreeAdapter.d.ts +24 -24
  315. package/src/ui/adapter/TreeAdapter.js +100 -100
  316. package/src/ui/adapter/TreeAdapter.spec.js +67 -67
  317. package/src/ui/adapter/index.d.ts +4 -4
  318. package/src/ui/adapter/index.js +4 -4
  319. package/src/ui/app/History.d.ts +17 -17
  320. package/src/ui/app/History.js +114 -114
  321. package/src/ui/app/Url.js +103 -103
  322. package/src/ui/app/Url.spec.js +51 -51
  323. package/src/ui/app/index.d.ts +4 -4
  324. package/src/ui/app/index.js +5 -5
  325. package/src/ui/app/startAppLoop.d.ts +3 -3
  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.js +44 -44
  339. package/src/ui/index.scss +2 -2
  340. package/src/ui/keyboardShortcuts.d.ts +4 -4
  341. package/src/ui/keyboardShortcuts.js +31 -31
  342. package/src/ui/layout/Content.d.ts +14 -14
  343. package/src/ui/layout/Content.js +16 -16
  344. package/src/ui/layout/ContentPlaceholder.d.ts +17 -17
  345. package/src/ui/layout/ContentPlaceholder.js +79 -79
  346. package/src/ui/layout/ContentPlaceholder.spec.js +368 -368
  347. package/src/ui/layout/FirstVisibleChildLayout.d.ts +4 -4
  348. package/src/ui/layout/FirstVisibleChildLayout.js +65 -65
  349. package/src/ui/layout/FirstVisibleChildLayout.spec.js +196 -196
  350. package/src/ui/layout/LabelsLeftLayout.d.ts +11 -11
  351. package/src/ui/layout/LabelsLeftLayout.js +59 -59
  352. package/src/ui/layout/LabelsLeftLayout.scss +44 -44
  353. package/src/ui/layout/LabelsTopLayout.d.ts +15 -15
  354. package/src/ui/layout/LabelsTopLayout.js +134 -134
  355. package/src/ui/layout/LabelsTopLayout.scss +63 -63
  356. package/src/ui/layout/UseParentLayout.d.ts +4 -4
  357. package/src/ui/layout/UseParentLayout.js +6 -6
  358. package/src/ui/layout/exploreChildren.d.ts +14 -14
  359. package/src/ui/layout/exploreChildren.js +40 -40
  360. package/src/ui/layout/index.d.ts +10 -10
  361. package/src/ui/layout/index.js +10 -10
  362. package/src/ui/layout/index.scss +3 -3
  363. package/src/ui/layout/variables.scss +2 -2
  364. package/src/ui/selection/KeySelection.d.ts +17 -17
  365. package/src/ui/selection/KeySelection.js +129 -129
  366. package/src/ui/selection/PropertySelection.d.ts +17 -17
  367. package/src/ui/selection/Selection.d.ts +27 -27
  368. package/src/ui/selection/Selection.js +93 -93
  369. package/src/ui/selection/index.d.ts +3 -3
  370. package/src/ui/selection/index.js +3 -3
  371. package/src/ui/tpl.d.ts +2 -2
  372. package/src/ui/tpl.js +4 -4
  373. package/src/ui/variables.scss +1 -1
  374. package/src/util/Component.d.ts +41 -41
  375. package/src/util/Component.js +107 -107
  376. package/src/util/Console.d.ts +4 -4
  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 +39 -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 +41 -41
  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 +92 -92
  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.scss +74 -74
  556. package/src/widgets/drag-drop/index.d.ts +4 -4
  557. package/src/widgets/drag-drop/index.js +4 -4
  558. package/src/widgets/drag-drop/index.scss +3 -3
  559. package/src/widgets/drag-drop/ops.d.ts +56 -56
  560. package/src/widgets/drag-drop/ops.js +344 -344
  561. package/src/widgets/drag-drop/variables.scss +11 -11
  562. package/src/widgets/enableAllInternalDependencies.d.ts +1 -1
  563. package/src/widgets/enableAllInternalDependencies.js +11 -11
  564. package/src/widgets/form/Calendar.d.ts +86 -86
  565. package/src/widgets/form/Calendar.variables.scss +63 -63
  566. package/src/widgets/form/Checkbox.d.ts +43 -43
  567. package/src/widgets/form/Checkbox.js +200 -200
  568. package/src/widgets/form/Checkbox.scss +125 -125
  569. package/src/widgets/form/Checkbox.variables.scss +39 -39
  570. package/src/widgets/form/ColorField.js +397 -397
  571. package/src/widgets/form/ColorField.scss +92 -92
  572. package/src/widgets/form/ColorPicker.d.ts +23 -23
  573. package/src/widgets/form/ColorPicker.js +480 -480
  574. package/src/widgets/form/ColorPicker.scss +275 -275
  575. package/src/widgets/form/ColorPicker.variables.scss +22 -22
  576. package/src/widgets/form/DateField.d.ts +6 -6
  577. package/src/widgets/form/DateField.js +12 -12
  578. package/src/widgets/form/DateTimeField.js +573 -573
  579. package/src/widgets/form/DateTimeField.scss +90 -90
  580. package/src/widgets/form/DateTimePicker.js +391 -391
  581. package/src/widgets/form/DateTimePicker.scss +44 -44
  582. package/src/widgets/form/Field.d.ts +112 -112
  583. package/src/widgets/form/Field.scss +162 -162
  584. package/src/widgets/form/FieldGroup.d.ts +6 -6
  585. package/src/widgets/form/FieldGroup.js +5 -5
  586. package/src/widgets/form/FieldIcon.js +42 -42
  587. package/src/widgets/form/HelpText.d.ts +10 -10
  588. package/src/widgets/form/HelpText.js +9 -9
  589. package/src/widgets/form/HelpText.scss +23 -23
  590. package/src/widgets/form/Label.d.ts +23 -23
  591. package/src/widgets/form/Label.js +89 -89
  592. package/src/widgets/form/Label.scss +36 -36
  593. package/src/widgets/form/LabeledContainer.d.ts +9 -9
  594. package/src/widgets/form/LabeledContainer.js +59 -59
  595. package/src/widgets/form/LookupField.scss +219 -219
  596. package/src/widgets/form/MonthField.js +516 -516
  597. package/src/widgets/form/MonthField.scss +99 -99
  598. package/src/widgets/form/MonthPicker.d.ts +74 -74
  599. package/src/widgets/form/MonthPicker.js +632 -632
  600. package/src/widgets/form/MonthPicker.scss +120 -120
  601. package/src/widgets/form/NumberField.d.ts +96 -96
  602. package/src/widgets/form/NumberField.js +459 -459
  603. package/src/widgets/form/NumberField.scss +65 -65
  604. package/src/widgets/form/Radio.d.ts +37 -37
  605. package/src/widgets/form/Radio.js +188 -188
  606. package/src/widgets/form/Radio.scss +122 -122
  607. package/src/widgets/form/Radio.variables.scss +45 -45
  608. package/src/widgets/form/Select.d.ts +69 -69
  609. package/src/widgets/form/Select.js +269 -269
  610. package/src/widgets/form/Select.scss +98 -98
  611. package/src/widgets/form/Slider.d.ts +65 -65
  612. package/src/widgets/form/Slider.js +351 -351
  613. package/src/widgets/form/Slider.scss +119 -119
  614. package/src/widgets/form/Switch.d.ts +38 -38
  615. package/src/widgets/form/Switch.js +118 -118
  616. package/src/widgets/form/Switch.scss +140 -140
  617. package/src/widgets/form/TextArea.d.ts +17 -17
  618. package/src/widgets/form/TextArea.js +186 -186
  619. package/src/widgets/form/TextArea.scss +60 -60
  620. package/src/widgets/form/TextField.d.ts +78 -78
  621. package/src/widgets/form/TextField.js +289 -289
  622. package/src/widgets/form/TextField.scss +55 -55
  623. package/src/widgets/form/TimeField.d.ts +6 -6
  624. package/src/widgets/form/TimeField.js +11 -11
  625. package/src/widgets/form/TimeList.js +84 -84
  626. package/src/widgets/form/UploadButton.js +213 -213
  627. package/src/widgets/form/UploadButton.scss +47 -47
  628. package/src/widgets/form/ValidationError.d.ts +10 -10
  629. package/src/widgets/form/ValidationError.js +44 -44
  630. package/src/widgets/form/ValidationError.scss +21 -21
  631. package/src/widgets/form/ValidationGroup.d.ts +41 -41
  632. package/src/widgets/form/ValidationGroup.js +68 -68
  633. package/src/widgets/form/ValidationGroup.spec.js +148 -148
  634. package/src/widgets/form/Validator.d.ts +8 -8
  635. package/src/widgets/form/Validator.js +21 -21
  636. package/src/widgets/form/Wheel.js +261 -261
  637. package/src/widgets/form/Wheel.scss +150 -150
  638. package/src/widgets/form/index.d.ts +26 -26
  639. package/src/widgets/form/index.js +28 -28
  640. package/src/widgets/form/index.scss +24 -24
  641. package/src/widgets/form/variables.scss +352 -352
  642. package/src/widgets/grid/Grid.scss +680 -680
  643. package/src/widgets/grid/GridCell.d.ts +38 -38
  644. package/src/widgets/grid/GridCell.js +71 -71
  645. package/src/widgets/grid/GridCellEditor.js +41 -41
  646. package/src/widgets/grid/GridRow.js +228 -228
  647. package/src/widgets/grid/GridRowLine.js +24 -24
  648. package/src/widgets/grid/Pagination.d.ts +14 -14
  649. package/src/widgets/grid/Pagination.js +94 -94
  650. package/src/widgets/grid/Pagination.scss +113 -113
  651. package/src/widgets/grid/TreeNode.d.ts +25 -25
  652. package/src/widgets/grid/TreeNode.js +102 -102
  653. package/src/widgets/grid/TreeNode.scss +89 -89
  654. package/src/widgets/grid/index.d.ts +3 -3
  655. package/src/widgets/grid/index.js +14 -14
  656. package/src/widgets/grid/index.scss +3 -3
  657. package/src/widgets/icons/arrow-down.svg +3 -3
  658. package/src/widgets/icons/arrow-right.svg +2 -2
  659. package/src/widgets/icons/base.svg +104 -104
  660. package/src/widgets/icons/calendar-old.svg +169 -169
  661. package/src/widgets/icons/calendar.js +16 -16
  662. package/src/widgets/icons/calendar.svg +187 -187
  663. package/src/widgets/icons/check.js +12 -12
  664. package/src/widgets/icons/clear.js +14 -14
  665. package/src/widgets/icons/clear.svg +74 -74
  666. package/src/widgets/icons/close.js +19 -19
  667. package/src/widgets/icons/close.svg +74 -74
  668. package/src/widgets/icons/cx.js +37 -37
  669. package/src/widgets/icons/drop-down.js +14 -14
  670. package/src/widgets/icons/dropdown-arrow.svg +61 -61
  671. package/src/widgets/icons/file.js +12 -12
  672. package/src/widgets/icons/file.svg +4 -4
  673. package/src/widgets/icons/folder-open.js +14 -14
  674. package/src/widgets/icons/folder-open.svg +5 -5
  675. package/src/widgets/icons/folder.js +12 -12
  676. package/src/widgets/icons/folder.svg +58 -58
  677. package/src/widgets/icons/forward.js +21 -21
  678. package/src/widgets/icons/forward.svg +67 -67
  679. package/src/widgets/icons/index.js +14 -14
  680. package/src/widgets/icons/loading.js +23 -23
  681. package/src/widgets/icons/loading.svg +4 -4
  682. package/src/widgets/icons/menu.js +16 -16
  683. package/src/widgets/icons/pixel-picker.js +17 -17
  684. package/src/widgets/icons/registry.js +53 -53
  685. package/src/widgets/icons/search.js +12 -12
  686. package/src/widgets/icons/search.svg +107 -107
  687. package/src/widgets/icons/sort-asc.js +13 -13
  688. package/src/widgets/icons/sort-asc.svg +3 -3
  689. package/src/widgets/icons/square.js +17 -17
  690. package/src/widgets/index.d.ts +55 -55
  691. package/src/widgets/index.js +57 -57
  692. package/src/widgets/index.scss +16 -16
  693. package/src/widgets/nav/Link.d.ts +26 -26
  694. package/src/widgets/nav/Link.js +7 -7
  695. package/src/widgets/nav/Link.scss +18 -18
  696. package/src/widgets/nav/Menu.d.ts +27 -27
  697. package/src/widgets/nav/Menu.js +406 -406
  698. package/src/widgets/nav/Menu.scss +74 -74
  699. package/src/widgets/nav/MenuItem.d.ts +31 -31
  700. package/src/widgets/nav/MenuItem.js +445 -445
  701. package/src/widgets/nav/MenuSpacer.d.ts +5 -5
  702. package/src/widgets/nav/MenuSpacer.js +12 -12
  703. package/src/widgets/nav/RedirectRoute.d.ts +9 -9
  704. package/src/widgets/nav/RedirectRoute.js +40 -40
  705. package/src/widgets/nav/Route.d.ts +21 -21
  706. package/src/widgets/nav/Route.js +105 -105
  707. package/src/widgets/nav/Route.spec.js +27 -27
  708. package/src/widgets/nav/Scroller.d.ts +17 -17
  709. package/src/widgets/nav/Scroller.js +214 -214
  710. package/src/widgets/nav/Scroller.scss +146 -146
  711. package/src/widgets/nav/Submenu.d.ts +6 -6
  712. package/src/widgets/nav/Submenu.js +6 -6
  713. package/src/widgets/nav/Tab.d.ts +33 -33
  714. package/src/widgets/nav/Tab.js +82 -82
  715. package/src/widgets/nav/Tab.scss +81 -81
  716. package/src/widgets/nav/cover.scss +21 -21
  717. package/src/widgets/nav/index.d.ts +10 -10
  718. package/src/widgets/nav/index.js +10 -10
  719. package/src/widgets/nav/index.scss +5 -5
  720. package/src/widgets/nav/variables.scss +25 -25
  721. package/src/widgets/overlay/ContextMenu.d.ts +10 -10
  722. package/src/widgets/overlay/ContextMenu.js +29 -29
  723. package/src/widgets/overlay/Dropdown.d.ts +32 -32
  724. package/src/widgets/overlay/Dropdown.js +612 -612
  725. package/src/widgets/overlay/Dropdown.scss +184 -184
  726. package/src/widgets/overlay/FlyweightTooltipTracker.d.ts +8 -8
  727. package/src/widgets/overlay/FlyweightTooltipTracker.js +36 -36
  728. package/src/widgets/overlay/MsgBox.d.ts +16 -16
  729. package/src/widgets/overlay/MsgBox.js +116 -116
  730. package/src/widgets/overlay/Overlay.d.ts +69 -69
  731. package/src/widgets/overlay/Overlay.js +747 -747
  732. package/src/widgets/overlay/Overlay.scss +66 -66
  733. package/src/widgets/overlay/Toast.d.ts +30 -30
  734. package/src/widgets/overlay/Toast.js +92 -92
  735. package/src/widgets/overlay/Toast.scss +162 -162
  736. package/src/widgets/overlay/Tooltip.d.ts +50 -50
  737. package/src/widgets/overlay/Tooltip.js +295 -295
  738. package/src/widgets/overlay/Tooltip.scss +175 -175
  739. package/src/widgets/overlay/alerts.d.ts +7 -7
  740. package/src/widgets/overlay/alerts.js +39 -39
  741. package/src/widgets/overlay/captureMouse.d.ts +53 -53
  742. package/src/widgets/overlay/captureMouse.js +1 -1
  743. package/src/widgets/overlay/captureMouse.scss +13 -13
  744. package/src/widgets/overlay/index.d.ts +10 -10
  745. package/src/widgets/overlay/index.js +10 -10
  746. package/src/widgets/overlay/index.scss +15 -15
  747. 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
  });