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