cx 24.9.1 → 24.9.3

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