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