cx 24.9.3 → 24.9.4

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