@cratis/scene.components 0.1.0

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 (539) hide show
  1. package/.storybook/main.ts +55 -0
  2. package/.storybook/preview.tsx +36 -0
  3. package/CratisComponents.stories.tsx +235 -0
  4. package/README.md +192 -0
  5. package/bindings/ArcRuntimeBoundary.tsx +36 -0
  6. package/bindings/BindingKind.ts +18 -0
  7. package/bindings/BoundConstructor.ts +21 -0
  8. package/bindings/ElementBinding.ts +19 -0
  9. package/bindings/MissingBinding.tsx +34 -0
  10. package/bindings/Placeholder.tsx +42 -0
  11. package/bindings/bindingRegistry.ts +105 -0
  12. package/bindings/for_bindingRegistry/when_a_command_is_registered.ts +30 -0
  13. package/bindings/for_bindingRegistry/when_a_query_is_not_registered.ts +17 -0
  14. package/bindings/for_bindingRegistry/when_a_query_is_registered.ts +30 -0
  15. package/bindings/for_bindingRegistry/when_bindings_are_cleared.ts +29 -0
  16. package/bindings/for_resolveElementBinding/when_resolving_a_command_binding.ts +34 -0
  17. package/bindings/for_resolveElementBinding/when_resolving_a_query_binding.ts +45 -0
  18. package/bindings/index.ts +11 -0
  19. package/bindings/resolveElementBinding.ts +33 -0
  20. package/common/SceneDropdown.tsx +31 -0
  21. package/common/SceneErrorBoundary.tsx +17 -0
  22. package/common/SceneIcon.tsx +18 -0
  23. package/common/SceneTooltip.tsx +28 -0
  24. package/common/index.ts +7 -0
  25. package/cratisComponents.ts +91 -0
  26. package/cratisComponentsPackage.ts +101 -0
  27. package/data/SceneDataTable.tsx +41 -0
  28. package/data/SceneObservableDataTable.tsx +41 -0
  29. package/data/for_SceneDataTable/when_the_query_binding_is_missing.tsx +48 -0
  30. package/data/index.ts +5 -0
  31. package/dialogs/SceneBusyIndicatorDialog.tsx +29 -0
  32. package/dialogs/SceneCommandDialog.tsx +42 -0
  33. package/dialogs/SceneConfirmationDialog.tsx +23 -0
  34. package/dialogs/SceneDialog.tsx +41 -0
  35. package/dialogs/SceneStepperCommandDialog.tsx +50 -0
  36. package/dialogs/index.ts +8 -0
  37. package/dist/cjs/bindings/ArcRuntimeBoundary.js +37 -0
  38. package/dist/cjs/bindings/ArcRuntimeBoundary.js.map +1 -0
  39. package/dist/cjs/bindings/BindingKind.js +19 -0
  40. package/dist/cjs/bindings/BindingKind.js.map +1 -0
  41. package/dist/cjs/bindings/MissingBinding.js +24 -0
  42. package/dist/cjs/bindings/MissingBinding.js.map +1 -0
  43. package/dist/cjs/bindings/Placeholder.js +38 -0
  44. package/dist/cjs/bindings/Placeholder.js.map +1 -0
  45. package/dist/cjs/bindings/bindingRegistry.js +101 -0
  46. package/dist/cjs/bindings/bindingRegistry.js.map +1 -0
  47. package/dist/cjs/bindings/resolveElementBinding.js +34 -0
  48. package/dist/cjs/bindings/resolveElementBinding.js.map +1 -0
  49. package/dist/cjs/common/SceneDropdown.js +30 -0
  50. package/dist/cjs/common/SceneDropdown.js.map +1 -0
  51. package/dist/cjs/common/SceneErrorBoundary.js +20 -0
  52. package/dist/cjs/common/SceneErrorBoundary.js.map +1 -0
  53. package/dist/cjs/common/SceneIcon.js +22 -0
  54. package/dist/cjs/common/SceneIcon.js.map +1 -0
  55. package/dist/cjs/common/SceneTooltip.js +29 -0
  56. package/dist/cjs/common/SceneTooltip.js.map +1 -0
  57. package/dist/cjs/cratisComponents.js +106 -0
  58. package/dist/cjs/cratisComponents.js.map +1 -0
  59. package/dist/cjs/cratisComponentsPackage.js +105 -0
  60. package/dist/cjs/cratisComponentsPackage.js.map +1 -0
  61. package/dist/cjs/data/SceneDataTable.js +46 -0
  62. package/dist/cjs/data/SceneDataTable.js.map +1 -0
  63. package/dist/cjs/data/SceneObservableDataTable.js +44 -0
  64. package/dist/cjs/data/SceneObservableDataTable.js.map +1 -0
  65. package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js +30 -0
  66. package/dist/cjs/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
  67. package/dist/cjs/dialogs/SceneCommandDialog.js +47 -0
  68. package/dist/cjs/dialogs/SceneCommandDialog.js.map +1 -0
  69. package/dist/cjs/dialogs/SceneConfirmationDialog.js +25 -0
  70. package/dist/cjs/dialogs/SceneConfirmationDialog.js.map +1 -0
  71. package/dist/cjs/dialogs/SceneDialog.js +41 -0
  72. package/dist/cjs/dialogs/SceneDialog.js.map +1 -0
  73. package/dist/cjs/dialogs/SceneStepperCommandDialog.js +54 -0
  74. package/dist/cjs/dialogs/SceneStepperCommandDialog.js.map +1 -0
  75. package/dist/cjs/editors/SceneFilterPanel.js +57 -0
  76. package/dist/cjs/editors/SceneFilterPanel.js.map +1 -0
  77. package/dist/cjs/editors/SceneObjectContentEditor.js +37 -0
  78. package/dist/cjs/editors/SceneObjectContentEditor.js.map +1 -0
  79. package/dist/cjs/editors/SceneObjectNavigationalBar.js +34 -0
  80. package/dist/cjs/editors/SceneObjectNavigationalBar.js.map +1 -0
  81. package/dist/cjs/editors/SceneSchemaEditor.js +33 -0
  82. package/dist/cjs/editors/SceneSchemaEditor.js.map +1 -0
  83. package/dist/cjs/editors/SceneTimeMachine.js +32 -0
  84. package/dist/cjs/editors/SceneTimeMachine.js.map +1 -0
  85. package/dist/cjs/editors/filterDefinitions.js +59 -0
  86. package/dist/cjs/editors/filterDefinitions.js.map +1 -0
  87. package/dist/cjs/editors/timeMachineVersions.js +44 -0
  88. package/dist/cjs/editors/timeMachineVersions.js.map +1 -0
  89. package/dist/cjs/editors/useEditableCopy.js +39 -0
  90. package/dist/cjs/editors/useEditableCopy.js.map +1 -0
  91. package/dist/cjs/forms/SceneCommandForm.js +46 -0
  92. package/dist/cjs/forms/SceneCommandForm.js.map +1 -0
  93. package/dist/cjs/forms/fields/CommandFormField.js +31 -0
  94. package/dist/cjs/forms/fields/CommandFormField.js.map +1 -0
  95. package/dist/cjs/forms/fields/SceneCalendarField.js +41 -0
  96. package/dist/cjs/forms/fields/SceneCalendarField.js.map +1 -0
  97. package/dist/cjs/forms/fields/SceneCheckboxField.js +28 -0
  98. package/dist/cjs/forms/fields/SceneCheckboxField.js.map +1 -0
  99. package/dist/cjs/forms/fields/SceneChipsField.js +33 -0
  100. package/dist/cjs/forms/fields/SceneChipsField.js.map +1 -0
  101. package/dist/cjs/forms/fields/SceneColorPickerField.js +30 -0
  102. package/dist/cjs/forms/fields/SceneColorPickerField.js.map +1 -0
  103. package/dist/cjs/forms/fields/SceneDropdownField.js +35 -0
  104. package/dist/cjs/forms/fields/SceneDropdownField.js.map +1 -0
  105. package/dist/cjs/forms/fields/SceneInputTextField.js +45 -0
  106. package/dist/cjs/forms/fields/SceneInputTextField.js.map +1 -0
  107. package/dist/cjs/forms/fields/SceneMultiSelectField.js +40 -0
  108. package/dist/cjs/forms/fields/SceneMultiSelectField.js.map +1 -0
  109. package/dist/cjs/forms/fields/SceneNumberField.js +32 -0
  110. package/dist/cjs/forms/fields/SceneNumberField.js.map +1 -0
  111. package/dist/cjs/forms/fields/SceneRadioButtonField.js +35 -0
  112. package/dist/cjs/forms/fields/SceneRadioButtonField.js.map +1 -0
  113. package/dist/cjs/forms/fields/SceneRadioGroupField.js +36 -0
  114. package/dist/cjs/forms/fields/SceneRadioGroupField.js.map +1 -0
  115. package/dist/cjs/forms/fields/SceneSliderField.js +31 -0
  116. package/dist/cjs/forms/fields/SceneSliderField.js.map +1 -0
  117. package/dist/cjs/forms/fields/SceneTextAreaField.js +31 -0
  118. package/dist/cjs/forms/fields/SceneTextAreaField.js.map +1 -0
  119. package/dist/cjs/forms/fields/resolveFieldBinding.js +27 -0
  120. package/dist/cjs/forms/fields/resolveFieldBinding.js.map +1 -0
  121. package/dist/cjs/index.js +123 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/package.json +3 -0
  124. package/dist/cjs/pages/SceneDataPage.js +45 -0
  125. package/dist/cjs/pages/SceneDataPage.js.map +1 -0
  126. package/dist/cjs/pages/SceneFormElement.js +26 -0
  127. package/dist/cjs/pages/SceneFormElement.js.map +1 -0
  128. package/dist/cjs/pages/ScenePage.js +28 -0
  129. package/dist/cjs/pages/ScenePage.js.map +1 -0
  130. package/dist/cjs/properties.js +104 -0
  131. package/dist/cjs/properties.js.map +1 -0
  132. package/dist/cjs/toolbar/SceneToolbar.js +27 -0
  133. package/dist/cjs/toolbar/SceneToolbar.js.map +1 -0
  134. package/dist/cjs/toolbar/SceneToolbarButton.js +32 -0
  135. package/dist/cjs/toolbar/SceneToolbarButton.js.map +1 -0
  136. package/dist/cjs/toolbar/SceneToolbarGroup.js +27 -0
  137. package/dist/cjs/toolbar/SceneToolbarGroup.js.map +1 -0
  138. package/dist/cjs/toolbar/SceneToolbarSeparator.js +25 -0
  139. package/dist/cjs/toolbar/SceneToolbarSeparator.js.map +1 -0
  140. package/dist/esm/CratisComponents.stories.d.ts +29 -0
  141. package/dist/esm/CratisComponents.stories.d.ts.map +1 -0
  142. package/dist/esm/CratisComponents.stories.js +187 -0
  143. package/dist/esm/CratisComponents.stories.js.map +1 -0
  144. package/dist/esm/bindings/ArcRuntimeBoundary.d.ts +6 -0
  145. package/dist/esm/bindings/ArcRuntimeBoundary.d.ts.map +1 -0
  146. package/dist/esm/bindings/ArcRuntimeBoundary.js +35 -0
  147. package/dist/esm/bindings/ArcRuntimeBoundary.js.map +1 -0
  148. package/dist/esm/bindings/BindingKind.d.ts +5 -0
  149. package/dist/esm/bindings/BindingKind.d.ts.map +1 -0
  150. package/dist/esm/bindings/BindingKind.js +17 -0
  151. package/dist/esm/bindings/BindingKind.js.map +1 -0
  152. package/dist/esm/bindings/BoundConstructor.d.ts +2 -0
  153. package/dist/esm/bindings/BoundConstructor.d.ts.map +1 -0
  154. package/dist/esm/bindings/BoundConstructor.js +2 -0
  155. package/dist/esm/bindings/BoundConstructor.js.map +1 -0
  156. package/dist/esm/bindings/ElementBinding.d.ts +6 -0
  157. package/dist/esm/bindings/ElementBinding.d.ts.map +1 -0
  158. package/dist/esm/bindings/ElementBinding.js +2 -0
  159. package/dist/esm/bindings/ElementBinding.js.map +1 -0
  160. package/dist/esm/bindings/MissingBinding.d.ts +9 -0
  161. package/dist/esm/bindings/MissingBinding.d.ts.map +1 -0
  162. package/dist/esm/bindings/MissingBinding.js +22 -0
  163. package/dist/esm/bindings/MissingBinding.js.map +1 -0
  164. package/dist/esm/bindings/Placeholder.d.ts +7 -0
  165. package/dist/esm/bindings/Placeholder.d.ts.map +1 -0
  166. package/dist/esm/bindings/Placeholder.js +36 -0
  167. package/dist/esm/bindings/Placeholder.js.map +1 -0
  168. package/dist/esm/bindings/bindingRegistry.d.ts +11 -0
  169. package/dist/esm/bindings/bindingRegistry.d.ts.map +1 -0
  170. package/dist/esm/bindings/bindingRegistry.js +91 -0
  171. package/dist/esm/bindings/bindingRegistry.js.map +1 -0
  172. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts +2 -0
  173. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.d.ts.map +1 -0
  174. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js +25 -0
  175. package/dist/esm/bindings/for_bindingRegistry/when_a_command_is_registered.js.map +1 -0
  176. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts +2 -0
  177. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.d.ts.map +1 -0
  178. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js +12 -0
  179. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_not_registered.js.map +1 -0
  180. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts +2 -0
  181. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.d.ts.map +1 -0
  182. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js +23 -0
  183. package/dist/esm/bindings/for_bindingRegistry/when_a_query_is_registered.js.map +1 -0
  184. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts +2 -0
  185. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.d.ts.map +1 -0
  186. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js +18 -0
  187. package/dist/esm/bindings/for_bindingRegistry/when_bindings_are_cleared.js.map +1 -0
  188. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts +2 -0
  189. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.d.ts.map +1 -0
  190. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js +25 -0
  191. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_command_binding.js.map +1 -0
  192. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts +2 -0
  193. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.d.ts.map +1 -0
  194. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js +33 -0
  195. package/dist/esm/bindings/for_resolveElementBinding/when_resolving_a_query_binding.js.map +1 -0
  196. package/dist/esm/bindings/index.d.ts +9 -0
  197. package/dist/esm/bindings/index.d.ts.map +1 -0
  198. package/dist/esm/bindings/index.js +9 -0
  199. package/dist/esm/bindings/index.js.map +1 -0
  200. package/dist/esm/bindings/resolveElementBinding.d.ts +5 -0
  201. package/dist/esm/bindings/resolveElementBinding.d.ts.map +1 -0
  202. package/dist/esm/bindings/resolveElementBinding.js +32 -0
  203. package/dist/esm/bindings/resolveElementBinding.js.map +1 -0
  204. package/dist/esm/common/SceneDropdown.d.ts +3 -0
  205. package/dist/esm/common/SceneDropdown.d.ts.map +1 -0
  206. package/dist/esm/common/SceneDropdown.js +28 -0
  207. package/dist/esm/common/SceneDropdown.js.map +1 -0
  208. package/dist/esm/common/SceneErrorBoundary.d.ts +3 -0
  209. package/dist/esm/common/SceneErrorBoundary.d.ts.map +1 -0
  210. package/dist/esm/common/SceneErrorBoundary.js +18 -0
  211. package/dist/esm/common/SceneErrorBoundary.js.map +1 -0
  212. package/dist/esm/common/SceneIcon.d.ts +3 -0
  213. package/dist/esm/common/SceneIcon.d.ts.map +1 -0
  214. package/dist/esm/common/SceneIcon.js +20 -0
  215. package/dist/esm/common/SceneIcon.js.map +1 -0
  216. package/dist/esm/common/SceneTooltip.d.ts +3 -0
  217. package/dist/esm/common/SceneTooltip.d.ts.map +1 -0
  218. package/dist/esm/common/SceneTooltip.js +27 -0
  219. package/dist/esm/common/SceneTooltip.js.map +1 -0
  220. package/dist/esm/common/index.d.ts +5 -0
  221. package/dist/esm/common/index.d.ts.map +1 -0
  222. package/dist/esm/common/index.js +5 -0
  223. package/dist/esm/common/index.js.map +1 -0
  224. package/dist/esm/cratisComponents.d.ts +4 -0
  225. package/dist/esm/cratisComponents.d.ts.map +1 -0
  226. package/dist/esm/cratisComponents.js +103 -0
  227. package/dist/esm/cratisComponents.js.map +1 -0
  228. package/dist/esm/cratisComponentsPackage.d.ts +5 -0
  229. package/dist/esm/cratisComponentsPackage.d.ts.map +1 -0
  230. package/dist/esm/cratisComponentsPackage.js +102 -0
  231. package/dist/esm/cratisComponentsPackage.js.map +1 -0
  232. package/dist/esm/data/SceneDataTable.d.ts +3 -0
  233. package/dist/esm/data/SceneDataTable.d.ts.map +1 -0
  234. package/dist/esm/data/SceneDataTable.js +44 -0
  235. package/dist/esm/data/SceneDataTable.js.map +1 -0
  236. package/dist/esm/data/SceneObservableDataTable.d.ts +3 -0
  237. package/dist/esm/data/SceneObservableDataTable.d.ts.map +1 -0
  238. package/dist/esm/data/SceneObservableDataTable.js +42 -0
  239. package/dist/esm/data/SceneObservableDataTable.js.map +1 -0
  240. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts +2 -0
  241. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.d.ts.map +1 -0
  242. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js +36 -0
  243. package/dist/esm/data/for_SceneDataTable/when_the_query_binding_is_missing.js.map +1 -0
  244. package/dist/esm/data/index.d.ts +3 -0
  245. package/dist/esm/data/index.d.ts.map +1 -0
  246. package/dist/esm/data/index.js +3 -0
  247. package/dist/esm/data/index.js.map +1 -0
  248. package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts +3 -0
  249. package/dist/esm/dialogs/SceneBusyIndicatorDialog.d.ts.map +1 -0
  250. package/dist/esm/dialogs/SceneBusyIndicatorDialog.js +28 -0
  251. package/dist/esm/dialogs/SceneBusyIndicatorDialog.js.map +1 -0
  252. package/dist/esm/dialogs/SceneCommandDialog.d.ts +3 -0
  253. package/dist/esm/dialogs/SceneCommandDialog.d.ts.map +1 -0
  254. package/dist/esm/dialogs/SceneCommandDialog.js +45 -0
  255. package/dist/esm/dialogs/SceneCommandDialog.js.map +1 -0
  256. package/dist/esm/dialogs/SceneConfirmationDialog.d.ts +2 -0
  257. package/dist/esm/dialogs/SceneConfirmationDialog.d.ts.map +1 -0
  258. package/dist/esm/dialogs/SceneConfirmationDialog.js +23 -0
  259. package/dist/esm/dialogs/SceneConfirmationDialog.js.map +1 -0
  260. package/dist/esm/dialogs/SceneDialog.d.ts +3 -0
  261. package/dist/esm/dialogs/SceneDialog.d.ts.map +1 -0
  262. package/dist/esm/dialogs/SceneDialog.js +39 -0
  263. package/dist/esm/dialogs/SceneDialog.js.map +1 -0
  264. package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts +3 -0
  265. package/dist/esm/dialogs/SceneStepperCommandDialog.d.ts.map +1 -0
  266. package/dist/esm/dialogs/SceneStepperCommandDialog.js +52 -0
  267. package/dist/esm/dialogs/SceneStepperCommandDialog.js.map +1 -0
  268. package/dist/esm/dialogs/index.d.ts +6 -0
  269. package/dist/esm/dialogs/index.d.ts.map +1 -0
  270. package/dist/esm/dialogs/index.js +6 -0
  271. package/dist/esm/dialogs/index.js.map +1 -0
  272. package/dist/esm/editors/SceneFilterPanel.d.ts +3 -0
  273. package/dist/esm/editors/SceneFilterPanel.d.ts.map +1 -0
  274. package/dist/esm/editors/SceneFilterPanel.js +55 -0
  275. package/dist/esm/editors/SceneFilterPanel.js.map +1 -0
  276. package/dist/esm/editors/SceneObjectContentEditor.d.ts +3 -0
  277. package/dist/esm/editors/SceneObjectContentEditor.d.ts.map +1 -0
  278. package/dist/esm/editors/SceneObjectContentEditor.js +35 -0
  279. package/dist/esm/editors/SceneObjectContentEditor.js.map +1 -0
  280. package/dist/esm/editors/SceneObjectNavigationalBar.d.ts +3 -0
  281. package/dist/esm/editors/SceneObjectNavigationalBar.d.ts.map +1 -0
  282. package/dist/esm/editors/SceneObjectNavigationalBar.js +32 -0
  283. package/dist/esm/editors/SceneObjectNavigationalBar.js.map +1 -0
  284. package/dist/esm/editors/SceneSchemaEditor.d.ts +3 -0
  285. package/dist/esm/editors/SceneSchemaEditor.d.ts.map +1 -0
  286. package/dist/esm/editors/SceneSchemaEditor.js +31 -0
  287. package/dist/esm/editors/SceneSchemaEditor.js.map +1 -0
  288. package/dist/esm/editors/SceneTimeMachine.d.ts +3 -0
  289. package/dist/esm/editors/SceneTimeMachine.d.ts.map +1 -0
  290. package/dist/esm/editors/SceneTimeMachine.js +30 -0
  291. package/dist/esm/editors/SceneTimeMachine.js.map +1 -0
  292. package/dist/esm/editors/filterDefinitions.d.ts +3 -0
  293. package/dist/esm/editors/filterDefinitions.d.ts.map +1 -0
  294. package/dist/esm/editors/filterDefinitions.js +57 -0
  295. package/dist/esm/editors/filterDefinitions.js.map +1 -0
  296. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts +2 -0
  297. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.d.ts.map +1 -0
  298. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js +15 -0
  299. package/dist/esm/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.js.map +1 -0
  300. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts +2 -0
  301. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.d.ts.map +1 -0
  302. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js +39 -0
  303. package/dist/esm/editors/for_filterDefinitions/when_reading_filter_definitions.js.map +1 -0
  304. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts +2 -0
  305. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.d.ts.map +1 -0
  306. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js +32 -0
  307. package/dist/esm/editors/for_timeMachineVersions/when_reading_versions.js.map +1 -0
  308. package/dist/esm/editors/index.d.ts +9 -0
  309. package/dist/esm/editors/index.d.ts.map +1 -0
  310. package/dist/esm/editors/index.js +9 -0
  311. package/dist/esm/editors/index.js.map +1 -0
  312. package/dist/esm/editors/timeMachineVersions.d.ts +3 -0
  313. package/dist/esm/editors/timeMachineVersions.d.ts.map +1 -0
  314. package/dist/esm/editors/timeMachineVersions.js +42 -0
  315. package/dist/esm/editors/timeMachineVersions.js.map +1 -0
  316. package/dist/esm/editors/useEditableCopy.d.ts +2 -0
  317. package/dist/esm/editors/useEditableCopy.d.ts.map +1 -0
  318. package/dist/esm/editors/useEditableCopy.js +37 -0
  319. package/dist/esm/editors/useEditableCopy.js.map +1 -0
  320. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts +2 -0
  321. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.d.ts.map +1 -0
  322. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js +25 -0
  323. package/dist/esm/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.js.map +1 -0
  324. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts +2 -0
  325. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.d.ts.map +1 -0
  326. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js +34 -0
  327. package/dist/esm/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.js.map +1 -0
  328. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts +2 -0
  329. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.d.ts.map +1 -0
  330. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js +49 -0
  331. package/dist/esm/for_cratisComponentsPackage/when_resolving_its_dependencies.js.map +1 -0
  332. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts +2 -0
  333. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.d.ts.map +1 -0
  334. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js +27 -0
  335. package/dist/esm/for_cratisComponentsPackage/when_validating_the_bundle.js.map +1 -0
  336. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts +2 -0
  337. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.d.ts.map +1 -0
  338. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js +24 -0
  339. package/dist/esm/for_properties/when_a_property_has_the_wrong_type.js.map +1 -0
  340. package/dist/esm/for_properties/when_a_property_is_missing.d.ts +2 -0
  341. package/dist/esm/for_properties/when_a_property_is_missing.d.ts.map +1 -0
  342. package/dist/esm/for_properties/when_a_property_is_missing.js +13 -0
  343. package/dist/esm/for_properties/when_a_property_is_missing.js.map +1 -0
  344. package/dist/esm/for_properties/when_a_property_is_present.d.ts +2 -0
  345. package/dist/esm/for_properties/when_a_property_is_present.d.ts.map +1 -0
  346. package/dist/esm/for_properties/when_a_property_is_present.js +21 -0
  347. package/dist/esm/for_properties/when_a_property_is_present.js.map +1 -0
  348. package/dist/esm/forms/SceneCommandForm.d.ts +3 -0
  349. package/dist/esm/forms/SceneCommandForm.d.ts.map +1 -0
  350. package/dist/esm/forms/SceneCommandForm.js +44 -0
  351. package/dist/esm/forms/SceneCommandForm.js.map +1 -0
  352. package/dist/esm/forms/fields/CommandFormField.d.ts +9 -0
  353. package/dist/esm/forms/fields/CommandFormField.d.ts.map +1 -0
  354. package/dist/esm/forms/fields/CommandFormField.js +29 -0
  355. package/dist/esm/forms/fields/CommandFormField.js.map +1 -0
  356. package/dist/esm/forms/fields/FieldBinding.d.ts +6 -0
  357. package/dist/esm/forms/fields/FieldBinding.d.ts.map +1 -0
  358. package/dist/esm/forms/fields/FieldBinding.js +2 -0
  359. package/dist/esm/forms/fields/FieldBinding.js.map +1 -0
  360. package/dist/esm/forms/fields/SceneCalendarField.d.ts +3 -0
  361. package/dist/esm/forms/fields/SceneCalendarField.d.ts.map +1 -0
  362. package/dist/esm/forms/fields/SceneCalendarField.js +39 -0
  363. package/dist/esm/forms/fields/SceneCalendarField.js.map +1 -0
  364. package/dist/esm/forms/fields/SceneCheckboxField.d.ts +3 -0
  365. package/dist/esm/forms/fields/SceneCheckboxField.d.ts.map +1 -0
  366. package/dist/esm/forms/fields/SceneCheckboxField.js +26 -0
  367. package/dist/esm/forms/fields/SceneCheckboxField.js.map +1 -0
  368. package/dist/esm/forms/fields/SceneChipsField.d.ts +3 -0
  369. package/dist/esm/forms/fields/SceneChipsField.d.ts.map +1 -0
  370. package/dist/esm/forms/fields/SceneChipsField.js +31 -0
  371. package/dist/esm/forms/fields/SceneChipsField.js.map +1 -0
  372. package/dist/esm/forms/fields/SceneColorPickerField.d.ts +3 -0
  373. package/dist/esm/forms/fields/SceneColorPickerField.d.ts.map +1 -0
  374. package/dist/esm/forms/fields/SceneColorPickerField.js +28 -0
  375. package/dist/esm/forms/fields/SceneColorPickerField.js.map +1 -0
  376. package/dist/esm/forms/fields/SceneDropdownField.d.ts +3 -0
  377. package/dist/esm/forms/fields/SceneDropdownField.d.ts.map +1 -0
  378. package/dist/esm/forms/fields/SceneDropdownField.js +33 -0
  379. package/dist/esm/forms/fields/SceneDropdownField.js.map +1 -0
  380. package/dist/esm/forms/fields/SceneInputTextField.d.ts +3 -0
  381. package/dist/esm/forms/fields/SceneInputTextField.d.ts.map +1 -0
  382. package/dist/esm/forms/fields/SceneInputTextField.js +43 -0
  383. package/dist/esm/forms/fields/SceneInputTextField.js.map +1 -0
  384. package/dist/esm/forms/fields/SceneMultiSelectField.d.ts +3 -0
  385. package/dist/esm/forms/fields/SceneMultiSelectField.d.ts.map +1 -0
  386. package/dist/esm/forms/fields/SceneMultiSelectField.js +38 -0
  387. package/dist/esm/forms/fields/SceneMultiSelectField.js.map +1 -0
  388. package/dist/esm/forms/fields/SceneNumberField.d.ts +3 -0
  389. package/dist/esm/forms/fields/SceneNumberField.d.ts.map +1 -0
  390. package/dist/esm/forms/fields/SceneNumberField.js +30 -0
  391. package/dist/esm/forms/fields/SceneNumberField.js.map +1 -0
  392. package/dist/esm/forms/fields/SceneRadioButtonField.d.ts +3 -0
  393. package/dist/esm/forms/fields/SceneRadioButtonField.d.ts.map +1 -0
  394. package/dist/esm/forms/fields/SceneRadioButtonField.js +33 -0
  395. package/dist/esm/forms/fields/SceneRadioButtonField.js.map +1 -0
  396. package/dist/esm/forms/fields/SceneRadioGroupField.d.ts +3 -0
  397. package/dist/esm/forms/fields/SceneRadioGroupField.d.ts.map +1 -0
  398. package/dist/esm/forms/fields/SceneRadioGroupField.js +34 -0
  399. package/dist/esm/forms/fields/SceneRadioGroupField.js.map +1 -0
  400. package/dist/esm/forms/fields/SceneSliderField.d.ts +3 -0
  401. package/dist/esm/forms/fields/SceneSliderField.d.ts.map +1 -0
  402. package/dist/esm/forms/fields/SceneSliderField.js +29 -0
  403. package/dist/esm/forms/fields/SceneSliderField.js.map +1 -0
  404. package/dist/esm/forms/fields/SceneTextAreaField.d.ts +3 -0
  405. package/dist/esm/forms/fields/SceneTextAreaField.d.ts.map +1 -0
  406. package/dist/esm/forms/fields/SceneTextAreaField.js +29 -0
  407. package/dist/esm/forms/fields/SceneTextAreaField.js.map +1 -0
  408. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts +2 -0
  409. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.d.ts.map +1 -0
  410. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js +12 -0
  411. package/dist/esm/forms/fields/for_CommandFormField/when_the_field_names_no_property.js.map +1 -0
  412. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts +2 -0
  413. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.d.ts.map +1 -0
  414. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js +24 -0
  415. package/dist/esm/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.js.map +1 -0
  416. package/dist/esm/forms/fields/index.d.ts +16 -0
  417. package/dist/esm/forms/fields/index.d.ts.map +1 -0
  418. package/dist/esm/forms/fields/index.js +16 -0
  419. package/dist/esm/forms/fields/index.js.map +1 -0
  420. package/dist/esm/forms/fields/resolveFieldBinding.d.ts +4 -0
  421. package/dist/esm/forms/fields/resolveFieldBinding.d.ts.map +1 -0
  422. package/dist/esm/forms/fields/resolveFieldBinding.js +25 -0
  423. package/dist/esm/forms/fields/resolveFieldBinding.js.map +1 -0
  424. package/dist/esm/forms/index.d.ts +3 -0
  425. package/dist/esm/forms/index.d.ts.map +1 -0
  426. package/dist/esm/forms/index.js +3 -0
  427. package/dist/esm/forms/index.js.map +1 -0
  428. package/dist/esm/given.d.ts +3 -0
  429. package/dist/esm/given.d.ts.map +1 -0
  430. package/dist/esm/given.js +21 -0
  431. package/dist/esm/given.js.map +1 -0
  432. package/dist/esm/index.d.ts +12 -0
  433. package/dist/esm/index.d.ts.map +1 -0
  434. package/dist/esm/index.js +51 -0
  435. package/dist/esm/index.js.map +1 -0
  436. package/dist/esm/package.json +3 -0
  437. package/dist/esm/pages/SceneDataPage.d.ts +3 -0
  438. package/dist/esm/pages/SceneDataPage.d.ts.map +1 -0
  439. package/dist/esm/pages/SceneDataPage.js +43 -0
  440. package/dist/esm/pages/SceneDataPage.js.map +1 -0
  441. package/dist/esm/pages/SceneFormElement.d.ts +3 -0
  442. package/dist/esm/pages/SceneFormElement.d.ts.map +1 -0
  443. package/dist/esm/pages/SceneFormElement.js +24 -0
  444. package/dist/esm/pages/SceneFormElement.js.map +1 -0
  445. package/dist/esm/pages/ScenePage.d.ts +3 -0
  446. package/dist/esm/pages/ScenePage.d.ts.map +1 -0
  447. package/dist/esm/pages/ScenePage.js +26 -0
  448. package/dist/esm/pages/ScenePage.js.map +1 -0
  449. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts +2 -0
  450. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.d.ts.map +1 -0
  451. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js +31 -0
  452. package/dist/esm/pages/for_ScenePage/when_rendering_a_page.js.map +1 -0
  453. package/dist/esm/pages/index.d.ts +4 -0
  454. package/dist/esm/pages/index.d.ts.map +1 -0
  455. package/dist/esm/pages/index.js +4 -0
  456. package/dist/esm/pages/index.js.map +1 -0
  457. package/dist/esm/properties.d.ts +9 -0
  458. package/dist/esm/properties.d.ts.map +1 -0
  459. package/dist/esm/properties.js +95 -0
  460. package/dist/esm/properties.js.map +1 -0
  461. package/dist/esm/toolbar/SceneToolbar.d.ts +3 -0
  462. package/dist/esm/toolbar/SceneToolbar.d.ts.map +1 -0
  463. package/dist/esm/toolbar/SceneToolbar.js +25 -0
  464. package/dist/esm/toolbar/SceneToolbar.js.map +1 -0
  465. package/dist/esm/toolbar/SceneToolbarButton.d.ts +3 -0
  466. package/dist/esm/toolbar/SceneToolbarButton.d.ts.map +1 -0
  467. package/dist/esm/toolbar/SceneToolbarButton.js +30 -0
  468. package/dist/esm/toolbar/SceneToolbarButton.js.map +1 -0
  469. package/dist/esm/toolbar/SceneToolbarGroup.d.ts +3 -0
  470. package/dist/esm/toolbar/SceneToolbarGroup.d.ts.map +1 -0
  471. package/dist/esm/toolbar/SceneToolbarGroup.js +25 -0
  472. package/dist/esm/toolbar/SceneToolbarGroup.js.map +1 -0
  473. package/dist/esm/toolbar/SceneToolbarSeparator.d.ts +3 -0
  474. package/dist/esm/toolbar/SceneToolbarSeparator.d.ts.map +1 -0
  475. package/dist/esm/toolbar/SceneToolbarSeparator.js +23 -0
  476. package/dist/esm/toolbar/SceneToolbarSeparator.js.map +1 -0
  477. package/dist/esm/toolbar/index.d.ts +5 -0
  478. package/dist/esm/toolbar/index.d.ts.map +1 -0
  479. package/dist/esm/toolbar/index.js +5 -0
  480. package/dist/esm/toolbar/index.js.map +1 -0
  481. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  482. package/editors/SceneFilterPanel.tsx +52 -0
  483. package/editors/SceneObjectContentEditor.tsx +36 -0
  484. package/editors/SceneObjectNavigationalBar.tsx +34 -0
  485. package/editors/SceneSchemaEditor.tsx +34 -0
  486. package/editors/SceneTimeMachine.tsx +32 -0
  487. package/editors/filterDefinitions.ts +59 -0
  488. package/editors/for_SceneObjectNavigationalBar/when_navigating_back_up_the_trail.tsx +18 -0
  489. package/editors/for_filterDefinitions/when_reading_filter_definitions.ts +49 -0
  490. package/editors/for_timeMachineVersions/when_reading_versions.ts +39 -0
  491. package/editors/index.ts +11 -0
  492. package/editors/timeMachineVersions.ts +44 -0
  493. package/editors/useEditableCopy.ts +32 -0
  494. package/for_cratisComponents/when_rendering_a_screen_through_the_real_renderer.tsx +37 -0
  495. package/for_cratisComponentsPackage/when_a_profile_ranks_it_above_the_packages_it_layers_on.ts +49 -0
  496. package/for_cratisComponentsPackage/when_resolving_its_dependencies.ts +68 -0
  497. package/for_cratisComponentsPackage/when_validating_the_bundle.ts +39 -0
  498. package/for_properties/when_a_property_has_the_wrong_type.ts +41 -0
  499. package/for_properties/when_a_property_is_missing.ts +26 -0
  500. package/for_properties/when_a_property_is_present.ts +36 -0
  501. package/forms/SceneCommandForm.tsx +45 -0
  502. package/forms/fields/CommandFormField.tsx +32 -0
  503. package/forms/fields/FieldBinding.ts +26 -0
  504. package/forms/fields/SceneCalendarField.tsx +41 -0
  505. package/forms/fields/SceneCheckboxField.tsx +29 -0
  506. package/forms/fields/SceneChipsField.tsx +34 -0
  507. package/forms/fields/SceneColorPickerField.tsx +31 -0
  508. package/forms/fields/SceneDropdownField.tsx +36 -0
  509. package/forms/fields/SceneInputTextField.tsx +37 -0
  510. package/forms/fields/SceneMultiSelectField.tsx +40 -0
  511. package/forms/fields/SceneNumberField.tsx +33 -0
  512. package/forms/fields/SceneRadioButtonField.tsx +37 -0
  513. package/forms/fields/SceneRadioGroupField.tsx +36 -0
  514. package/forms/fields/SceneSliderField.tsx +32 -0
  515. package/forms/fields/SceneTextAreaField.tsx +32 -0
  516. package/forms/fields/for_CommandFormField/when_the_field_names_no_property.tsx +16 -0
  517. package/forms/fields/for_resolveFieldBinding/when_resolving_a_field_binding.ts +34 -0
  518. package/forms/fields/index.ts +18 -0
  519. package/forms/fields/resolveFieldBinding.ts +27 -0
  520. package/forms/index.ts +5 -0
  521. package/given.ts +33 -0
  522. package/index.ts +14 -0
  523. package/package.json +68 -0
  524. package/pages/SceneDataPage.tsx +40 -0
  525. package/pages/SceneFormElement.tsx +21 -0
  526. package/pages/ScenePage.tsx +30 -0
  527. package/pages/for_ScenePage/when_rendering_a_page.tsx +39 -0
  528. package/pages/index.ts +6 -0
  529. package/properties.ts +112 -0
  530. package/storybook-static/assets/CommandDialog-B78_eDOU.css +1 -0
  531. package/storybook-static/assets/CratisComponents-qPooLvTv.css +1 -0
  532. package/storybook-static/assets/DataPage-CroWzXsC.css +1 -0
  533. package/storybook-static/assets/iframe-DQhZBFM5.css +1 -0
  534. package/theme/sceneTokenBridge.css +72 -0
  535. package/toolbar/SceneToolbar.tsx +28 -0
  536. package/toolbar/SceneToolbarButton.tsx +31 -0
  537. package/toolbar/SceneToolbarGroup.tsx +28 -0
  538. package/toolbar/SceneToolbarSeparator.tsx +21 -0
  539. package/toolbar/index.ts +7 -0
@@ -0,0 +1,101 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { PackageKind, ScenePackage } from '@cratis/scene.model';
5
+ import { ScenePackageBundle } from '@cratis/scene.react';
6
+ import { cratisComponents, cratisComponentsPackageName } from './cratisComponents';
7
+
8
+ /**
9
+ * The `Cratis.Components` package's declaration - what a profile gets when it lists this package.
10
+ *
11
+ * This is the concrete case the whole package-dependency mechanism exists for. `@cratis/components` is
12
+ * not a self-contained library: every component in it is a wrapper over a PrimeReact widget, and its
13
+ * own styling is a compiled Tailwind utility sheet (`@cratis/components/styles`) plus a `--cratis-*`
14
+ * token layer. Activate it in a profile without PrimeReact and nothing renders; activate it without
15
+ * Tailwind and everything renders unstyled. Both are stated as dependencies so a package picker can say
16
+ * so while the profile is being configured, instead of leaving it to be discovered when the page opens.
17
+ *
18
+ * The version ranges are the real ones the library carries: `>=10.9.0` for PrimeReact because its
19
+ * `--cratis-*` tokens resolve PrimeReact 11's design tokens first and fall back to the version 10 theme
20
+ * variables, so it spans the upgrade window; `^4.0.0` for Tailwind because the utility sheet is compiled
21
+ * against Tailwind 4.
22
+ */
23
+ export const cratisComponentsPackageManifest: ScenePackage = {
24
+ name: cratisComponentsPackageName,
25
+ version: '2.8.1',
26
+ kind: PackageKind.ComponentLibrary,
27
+ dependencies: [
28
+ { name: 'PrimeReact', versionRange: '>=10.9.0' },
29
+ { name: 'Tailwind', versionRange: '^4.0.0' },
30
+ ],
31
+ components: [
32
+ 'page',
33
+ 'dataPage',
34
+ 'formElement',
35
+ 'dataTable',
36
+ 'table',
37
+ 'observableDataTable',
38
+ 'commandForm',
39
+ 'inputTextField',
40
+ 'numberField',
41
+ 'checkboxField',
42
+ 'textAreaField',
43
+ 'dropdownField',
44
+ 'sliderField',
45
+ 'calendarField',
46
+ 'colorPickerField',
47
+ 'multiSelectField',
48
+ 'chipsField',
49
+ 'radioButtonField',
50
+ 'radioGroupField',
51
+ 'dialog',
52
+ 'confirmationDialog',
53
+ 'busyIndicatorDialog',
54
+ 'commandDialog',
55
+ 'stepperCommandDialog',
56
+ 'icon',
57
+ 'tooltip',
58
+ 'dropdown',
59
+ 'errorBoundary',
60
+ 'objectContentEditor',
61
+ 'objectNavigationalBar',
62
+ 'schemaEditor',
63
+ 'timeMachine',
64
+ 'filterPanel',
65
+ 'toolbar',
66
+ 'toolbarButton',
67
+ 'toolbarGroup',
68
+ 'toolbarSeparator',
69
+ ],
70
+
71
+ // A component library ships components, and nothing else. Layouts, screen templates and dialog
72
+ // templates all belong to a Blueprint: they are decisions about what an application looks like as a
73
+ // whole, and this package deliberately makes none of them - it provides the Arc-bound composites a
74
+ // template is *built from*, so that a blueprint can place a `dataPage` in a slot and configure it,
75
+ // rather than shipping one opinionated data page nobody can rearrange.
76
+ layouts: [],
77
+ screenTemplates: [],
78
+ dialogTemplates: [],
79
+
80
+ // No themes either, for a different reason: `@cratis/components` has no palette of its own. It reads
81
+ // a `--cratis-*` variable layer that resolves whatever PrimeReact theme - or Scene theme, through
82
+ // this package's token bridge - happens to be active. Shipping a theme here would be this library
83
+ // asserting a look it was specifically built not to have.
84
+ themes: [],
85
+
86
+ displayName: 'Cratis Components',
87
+ description: "Cratis' Arc-bound data, form and dialog composites, built on PrimeReact and Tailwind.",
88
+ module: '@cratis/scene.components',
89
+ };
90
+
91
+ /**
92
+ * The `Cratis.Components` package as a loadable bundle - the manifest above, plus the React components
93
+ * behind the names it declares.
94
+ *
95
+ * No `layouts`, `screenTemplates`, `dialogTemplates` or `themes` are provided, matching a manifest that
96
+ * declares none of them; `validatePackageBundle` is what proves the two halves agree.
97
+ */
98
+ export const cratisComponentsPackage: ScenePackageBundle = {
99
+ manifest: cratisComponentsPackageManifest,
100
+ components: cratisComponents,
101
+ };
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
7
+ import { booleanProperty, stringArrayProperty, stringProperty } from '../properties';
8
+
9
+ const DataTableForQuery = lazy(async () => ({ default: (await import('@cratis/components/DataTables')).DataTableForQuery }));
10
+
11
+ /**
12
+ * The `Cratis.Components:dataTable` component, also registered as `table` - `DataTableForQuery` from
13
+ * `@cratis/components/DataTables`.
14
+ *
15
+ * Registering it under the bare name `table` as well is override priority working as designed: a profile
16
+ * listing `core`, `PrimeReact` and `Cratis.Components` in that order resolves `table` here and records
17
+ * the other two as shadowed. That is the right outcome, because this is a strictly better `table` for a
18
+ * Cratis application - it performs the query, pages against the server, and wires filtering and sorting
19
+ * back into it, where PrimeReact's `DataTable` is handed rows and knows nothing about where they came from.
20
+ *
21
+ * The `query` property names an Arc query proxy; the columns come from the `content` slot.
22
+ */
23
+ export function SceneDataTable({ element, slots }: RegisteredComponentProps) {
24
+ const { name, target } = resolveElementBinding(element, BindingKind.Query);
25
+ if (!target) return <MissingBinding element={element} kind={BindingKind.Query} name={name} />;
26
+
27
+ return (
28
+ <ArcRuntimeBoundary>
29
+ <DataTableForQuery
30
+ query={target}
31
+ emptyMessage={stringProperty(element.properties, 'emptyMessage') ?? ''}
32
+ dataKey={stringProperty(element.properties, 'dataKey')}
33
+ globalFilterFields={stringArrayProperty(element.properties, 'globalFilterFields')}
34
+ clientFiltering={booleanProperty(element.properties, 'clientFiltering')}
35
+ className={stringProperty(element.properties, 'className')}
36
+ >
37
+ {slots.content}
38
+ </DataTableForQuery>
39
+ </ArcRuntimeBoundary>
40
+ );
41
+ }
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
7
+ import { booleanProperty, stringArrayProperty, stringProperty } from '../properties';
8
+
9
+ const DataTableForObservableQuery = lazy(async () => ({
10
+ default: (await import('@cratis/components/DataTables')).DataTableForObservableQuery,
11
+ }));
12
+
13
+ /**
14
+ * The `Cratis.Components:observableDataTable` component - `DataTableForObservableQuery` from
15
+ * `@cratis/components/DataTables`.
16
+ *
17
+ * A separate name rather than a flag on `dataTable`, because the distinction is in the *proxy* a host
18
+ * registers, not in how the table is configured: an observable query opens a WebSocket subscription and
19
+ * re-renders when the server's read model changes, and a plain query does not. A screen that names an
20
+ * observable query here is stating that its data is live, which is a design decision worth being able to
21
+ * read off the screen.
22
+ */
23
+ export function SceneObservableDataTable({ element, slots }: RegisteredComponentProps) {
24
+ const { name, target } = resolveElementBinding(element, BindingKind.Query);
25
+ if (!target) return <MissingBinding element={element} kind={BindingKind.Query} name={name} />;
26
+
27
+ return (
28
+ <ArcRuntimeBoundary>
29
+ <DataTableForObservableQuery
30
+ query={target}
31
+ emptyMessage={stringProperty(element.properties, 'emptyMessage') ?? ''}
32
+ dataKey={stringProperty(element.properties, 'dataKey')}
33
+ globalFilterFields={stringArrayProperty(element.properties, 'globalFilterFields')}
34
+ clientFiltering={booleanProperty(element.properties, 'clientFiltering')}
35
+ className={stringProperty(element.properties, 'className')}
36
+ >
37
+ {slots.content}
38
+ </DataTableForObservableQuery>
39
+ </ArcRuntimeBoundary>
40
+ );
41
+ }
@@ -0,0 +1,48 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { expect } from 'chai';
5
+ import { render, screen } from '@testing-library/react';
6
+ import { externalComponent } from '../../given';
7
+ import { clearBindings, registerQuery } from '../../bindings';
8
+ import { SceneDataTable } from '../SceneDataTable';
9
+
10
+ class AllInvoices {}
11
+
12
+ describe('when the query binding is missing', () => {
13
+ beforeEach(() => clearBindings());
14
+ afterEach(() => clearBindings());
15
+
16
+ describe('and the screen names a query nothing is registered under', () => {
17
+ beforeEach(() => {
18
+ const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
19
+ render(<SceneDataTable element={element} slots={{}} />);
20
+ });
21
+
22
+ it('should render a placeholder naming the binding rather than throwing', () =>
23
+ expect(screen.getByText("Unresolved query binding 'AllInvoices' on Cratis.Components:dataTable")).to.exist);
24
+ });
25
+
26
+ describe('and the screen names no query at all', () => {
27
+ beforeEach(() => {
28
+ const element = externalComponent('Cratis.Components:dataTable', { emptyMessage: 'No invoices' });
29
+ render(<SceneDataTable element={element} slots={{}} />);
30
+ });
31
+
32
+ it('should render a placeholder saying the binding is missing', () =>
33
+ expect(screen.getByText('Missing query binding on Cratis.Components:dataTable')).to.exist);
34
+ });
35
+
36
+ describe('and the named query is registered', () => {
37
+ beforeEach(() => {
38
+ registerQuery('AllInvoices', AllInvoices);
39
+ const element = externalComponent('Cratis.Components:dataTable', { query: 'AllInvoices', emptyMessage: 'No invoices' });
40
+ render(<SceneDataTable element={element} slots={{}} />);
41
+ });
42
+
43
+ it('should render no placeholder', () => (screen.queryByText(/query binding/) === null).should.be.true);
44
+
45
+ it('should hand off to the lazily loaded Arc-bound table', () =>
46
+ expect(document.querySelector('[data-scene-arc-loading]')).to.exist);
47
+ });
48
+ });
package/data/index.ts ADDED
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ export * from './SceneDataTable';
5
+ export * from './SceneObservableDataTable';
@@ -0,0 +1,29 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary } from '../bindings';
7
+ import { stringProperty } from '../properties';
8
+
9
+ const BusyIndicatorDialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).BusyIndicatorDialog }));
10
+
11
+ /**
12
+ * The `Cratis.Components:busyIndicatorDialog` component - `BusyIndicatorDialog` from
13
+ * `@cratis/components/Dialogs`.
14
+ *
15
+ * The blocking spinner shown while a long-running command is in flight. In a running application it is
16
+ * the Arc dialog host that renders it, threading its own `title` and `message` through; exposing it as a
17
+ * Scene component is what lets a screen show the same chrome at design time, so its wording and
18
+ * placement can be designed rather than discovered the first time an operation takes a while.
19
+ */
20
+ export function SceneBusyIndicatorDialog({ element }: RegisteredComponentProps) {
21
+ return (
22
+ <ArcRuntimeBoundary>
23
+ <BusyIndicatorDialog
24
+ title={stringProperty(element.properties, 'title') ?? ''}
25
+ message={stringProperty(element.properties, 'message') ?? ''}
26
+ />
27
+ </ArcRuntimeBoundary>
28
+ );
29
+ }
@@ -0,0 +1,42 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
7
+ import { booleanProperty, stringProperty } from '../properties';
8
+
9
+ const CommandDialog = lazy(async () => ({ default: (await import('@cratis/components/CommandDialog')).CommandDialog }));
10
+
11
+ /**
12
+ * The `Cratis.Components:commandDialog` component - `CommandDialog` from `@cratis/components/CommandDialog`.
13
+ *
14
+ * A dialog whose confirm button *is* the command's execution: it binds the form to the command, submits
15
+ * on confirm, feeds the backend's validation results back onto the fields, and only closes when the
16
+ * command succeeded. That last part is the reason to use it rather than composing `dialog` with
17
+ * `commandForm` - a hand-composed pair has no way to keep the dialog open on a rejected command without
18
+ * reimplementing the protocol.
19
+ *
20
+ * The `command` property names an Arc command proxy; the fields go in the `content` slot.
21
+ */
22
+ export function SceneCommandDialog({ element, slots }: RegisteredComponentProps) {
23
+ const { name, target } = resolveElementBinding(element, BindingKind.Command);
24
+ if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;
25
+
26
+ return (
27
+ <ArcRuntimeBoundary>
28
+ <CommandDialog
29
+ title={stringProperty(element.properties, 'title') ?? ''}
30
+ command={target}
31
+ visible={booleanProperty(element.properties, 'visible') ?? true}
32
+ width={stringProperty(element.properties, 'width')}
33
+ resizable={booleanProperty(element.properties, 'resizable')}
34
+ okLabel={stringProperty(element.properties, 'okLabel')}
35
+ cancelLabel={stringProperty(element.properties, 'cancelLabel')}
36
+ className={stringProperty(element.properties, 'className')}
37
+ >
38
+ {slots.content}
39
+ </CommandDialog>
40
+ </ArcRuntimeBoundary>
41
+ );
42
+ }
@@ -0,0 +1,23 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { ArcRuntimeBoundary } from '../bindings';
6
+
7
+ const ConfirmationDialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).ConfirmationDialog }));
8
+
9
+ /**
10
+ * The `Cratis.Components:confirmationDialog` component - `ConfirmationDialog` from
11
+ * `@cratis/components/Dialogs`.
12
+ *
13
+ * Takes no properties by design: it is not a dialog a screen configures, it is the host that renders
14
+ * whatever confirmation the running application has asked for through Arc's dialog service. A screen
15
+ * places it once, near the root, and every `Are you sure?` in the application appears there.
16
+ */
17
+ export function SceneConfirmationDialog() {
18
+ return (
19
+ <ArcRuntimeBoundary>
20
+ <ConfirmationDialog />
21
+ </ArcRuntimeBoundary>
22
+ );
23
+ }
@@ -0,0 +1,41 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary } from '../bindings';
7
+ import { booleanProperty, stringProperty } from '../properties';
8
+
9
+ const Dialog = lazy(async () => ({ default: (await import('@cratis/components/Dialogs')).Dialog }));
10
+
11
+ /**
12
+ * The `Cratis.Components:dialog` component, registered under the bare name `dialog` - `Dialog` from
13
+ * `@cratis/components/Dialogs`.
14
+ *
15
+ * Shadowing PrimeReact's `dialog` deliberately. PrimeReact's is a modal frame and nothing more; this one
16
+ * resolves its result through Arc's dialog context, so a screen's dialog participates in the same
17
+ * request/response protocol as the rest of the application - a caller awaits a `DialogResult` instead of
18
+ * threading `visible` state and callbacks by hand.
19
+ *
20
+ * `visible` defaults to `true` because a dialog placed on a screen is being placed to be seen; a host
21
+ * that controls visibility sets the property explicitly.
22
+ */
23
+ export function SceneDialog({ element, slots }: RegisteredComponentProps) {
24
+ return (
25
+ <ArcRuntimeBoundary>
26
+ <Dialog
27
+ title={stringProperty(element.properties, 'title') ?? ''}
28
+ visible={booleanProperty(element.properties, 'visible') ?? true}
29
+ width={stringProperty(element.properties, 'width')}
30
+ resizable={booleanProperty(element.properties, 'resizable')}
31
+ isValid={booleanProperty(element.properties, 'isValid')}
32
+ isBusy={booleanProperty(element.properties, 'isBusy')}
33
+ okLabel={stringProperty(element.properties, 'okLabel')}
34
+ cancelLabel={stringProperty(element.properties, 'cancelLabel')}
35
+ className={stringProperty(element.properties, 'className')}
36
+ >
37
+ {slots.content}
38
+ </Dialog>
39
+ </ArcRuntimeBoundary>
40
+ );
41
+ }
@@ -0,0 +1,50 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { lazy } from 'react';
5
+ import { RegisteredComponentProps } from '@cratis/scene.react';
6
+ import { ArcRuntimeBoundary, BindingKind, MissingBinding, resolveElementBinding } from '../bindings';
7
+ import { booleanProperty, stringProperty, unionProperty } from '../properties';
8
+
9
+ const StepperCommandDialog = lazy(async () => ({
10
+ default: (await import('@cratis/components/CommandDialog')).StepperCommandDialog,
11
+ }));
12
+
13
+ /** Whether the step headers run across the top or down the side. */
14
+ const orientations = ['horizontal', 'vertical'] as const;
15
+
16
+ /**
17
+ * The `Cratis.Components:stepperCommandDialog` component - `StepperCommandDialog` from
18
+ * `@cratis/components/CommandDialog`.
19
+ *
20
+ * `commandDialog` split across steps, for a command with more fields than fit one screen. It stays a
21
+ * single command: the steps partition the *fields*, not the intent, and nothing is submitted until the
22
+ * last step - so a half-finished wizard leaves no trace, which is exactly what a command should do.
23
+ *
24
+ * `linear` decides whether a step can be skipped ahead of the one before it. The step panels go in the
25
+ * `content` slot.
26
+ */
27
+ export function SceneStepperCommandDialog({ element, slots }: RegisteredComponentProps) {
28
+ const { name, target } = resolveElementBinding(element, BindingKind.Command);
29
+ if (!target) return <MissingBinding element={element} kind={BindingKind.Command} name={name} />;
30
+
31
+ return (
32
+ <ArcRuntimeBoundary>
33
+ <StepperCommandDialog
34
+ title={stringProperty(element.properties, 'title') ?? ''}
35
+ command={target}
36
+ visible={booleanProperty(element.properties, 'visible') ?? true}
37
+ width={stringProperty(element.properties, 'width')}
38
+ linear={booleanProperty(element.properties, 'linear')}
39
+ orientation={unionProperty(element.properties, 'orientation', orientations)}
40
+ okLabel={stringProperty(element.properties, 'okLabel')}
41
+ nextLabel={stringProperty(element.properties, 'nextLabel')}
42
+ previousLabel={stringProperty(element.properties, 'previousLabel')}
43
+ showCancel={booleanProperty(element.properties, 'showCancel')}
44
+ cancelLabel={stringProperty(element.properties, 'cancelLabel')}
45
+ >
46
+ {slots.content}
47
+ </StepperCommandDialog>
48
+ </ArcRuntimeBoundary>
49
+ );
50
+ }
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ export * from './SceneDialog';
5
+ export * from './SceneConfirmationDialog';
6
+ export * from './SceneBusyIndicatorDialog';
7
+ export * from './SceneCommandDialog';
8
+ export * from './SceneStepperCommandDialog';
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var Common = require('@cratis/components/Common');
6
+
7
+ /**
8
+ * Isolates one Arc-bound component so that neither loading it nor failing to load it can take the
9
+ * surrounding screen down with it.
10
+ *
11
+ * The Arc-bound half of `@cratis/components` - `DataPage`, the data tables, `CommandForm` and its
12
+ * fields, every dialog - reaches `@cratis/arc` and `@cratis/arc.react` at import time. Those are peer
13
+ * dependencies the *host* supplies, and a design surface is not a host: Studio previews a screen without
14
+ * an Arc client, without a backend, and often without a single binding registered. This package
15
+ * therefore imports every Arc-bound component through a dynamic `import()` rather than a static one, so
16
+ * that a screen made only of the library's Arc-free components never pulls the Arc runtime in at all.
17
+ *
18
+ * That deferral has two visible states, and this covers both: `Suspense` while the chunk is in flight,
19
+ * and the library's own `ErrorBoundary` when it cannot be loaded - which is what a host without Arc
20
+ * installed will see. One dashed-out region, not a blank screen and not a thrown render.
21
+ *
22
+ * `ErrorBoundary` is used by composition rather than by writing another one: an error boundary is the
23
+ * one thing React still requires a class for, and `@cratis/components` already ships that class.
24
+ */ function ArcRuntimeBoundary({ children }) {
25
+ return /*#__PURE__*/ jsxRuntime.jsx(Common.ErrorBoundary, {
26
+ children: /*#__PURE__*/ jsxRuntime.jsx(react.Suspense, {
27
+ fallback: /*#__PURE__*/ jsxRuntime.jsx("span", {
28
+ "data-scene-arc-loading": "",
29
+ children: "Loading"
30
+ }),
31
+ children: children
32
+ })
33
+ });
34
+ }
35
+
36
+ exports.ArcRuntimeBoundary = ArcRuntimeBoundary;
37
+ //# sourceMappingURL=ArcRuntimeBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArcRuntimeBoundary.js","sources":["../../../bindings/ArcRuntimeBoundary.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ReactNode, Suspense } from 'react';\nimport { ErrorBoundary } from '@cratis/components/Common';\n\nexport interface ArcRuntimeBoundaryProps {\n /** The lazily loaded, Arc-bound content this boundary isolates. */\n children: ReactNode;\n}\n\n/**\n * Isolates one Arc-bound component so that neither loading it nor failing to load it can take the\n * surrounding screen down with it.\n *\n * The Arc-bound half of `@cratis/components` - `DataPage`, the data tables, `CommandForm` and its\n * fields, every dialog - reaches `@cratis/arc` and `@cratis/arc.react` at import time. Those are peer\n * dependencies the *host* supplies, and a design surface is not a host: Studio previews a screen without\n * an Arc client, without a backend, and often without a single binding registered. This package\n * therefore imports every Arc-bound component through a dynamic `import()` rather than a static one, so\n * that a screen made only of the library's Arc-free components never pulls the Arc runtime in at all.\n *\n * That deferral has two visible states, and this covers both: `Suspense` while the chunk is in flight,\n * and the library's own `ErrorBoundary` when it cannot be loaded - which is what a host without Arc\n * installed will see. One dashed-out region, not a blank screen and not a thrown render.\n *\n * `ErrorBoundary` is used by composition rather than by writing another one: an error boundary is the\n * one thing React still requires a class for, and `@cratis/components` already ships that class.\n */\nexport function ArcRuntimeBoundary({ children }: ArcRuntimeBoundaryProps) {\n return (\n <ErrorBoundary>\n <Suspense fallback={<span data-scene-arc-loading=''>Loading</span>}>{children}</Suspense>\n </ErrorBoundary>\n );\n}\n"],"names":["ArcRuntimeBoundary","children","_jsx","ErrorBoundary","Suspense","fallback","span","data-scene-arc-loading"],"mappings":";;;;;;AAWA;;;;;;;;;;;;;;;;;AAiBC,IACM,SAASA,kBAAAA,CAAmB,EAAEC,QAAQ,EAA2B,EAAA;AACpE,IAAA,qBACIC,cAAA,CAACC,oBAAAA,EAAAA;AACG,QAAA,QAAA,gBAAAD,cAAA,CAACE,cAAAA,EAAAA;AAASC,YAAAA,QAAAA,gBAAUH,cAAA,CAACI,MAAAA,EAAAA;gBAAKC,wBAAAA,EAAuB,EAAA;AAAG,gBAAA,QAAA,EAAA;;AAAiBN,YAAAA,QAAAA,EAAAA;;;AAGjF;;;;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * What a name in a screen is expected to resolve to when it is looked up in the binding registry.
7
+ *
8
+ * Queries and commands are kept apart rather than sharing one namespace because they are opposite halves
9
+ * of CQRS and a screen means exactly one of them at each site: `data Invoices via query AllInvoices`
10
+ * cannot be satisfied by a command of the same name, and letting it be satisfied would turn a modeling
11
+ * mistake into a runtime one.
12
+ */ var BindingKind = /*#__PURE__*/ function(BindingKind) {
13
+ /** An Arc query proxy - what a data table or data page reads its rows from. */ BindingKind["Query"] = "query";
14
+ /** An Arc command proxy - what a command form or command dialog submits. */ BindingKind["Command"] = "command";
15
+ return BindingKind;
16
+ }({});
17
+
18
+ exports.BindingKind = BindingKind;
19
+ //# sourceMappingURL=BindingKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BindingKind.js","sources":["../../../bindings/BindingKind.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n/**\n * What a name in a screen is expected to resolve to when it is looked up in the binding registry.\n *\n * Queries and commands are kept apart rather than sharing one namespace because they are opposite halves\n * of CQRS and a screen means exactly one of them at each site: `data Invoices via query AllInvoices`\n * cannot be satisfied by a command of the same name, and letting it be satisfied would turn a modeling\n * mistake into a runtime one.\n */\nexport enum BindingKind {\n /** An Arc query proxy - what a data table or data page reads its rows from. */\n Query = 'query',\n\n /** An Arc command proxy - what a command form or command dialog submits. */\n Command = 'command',\n}\n"],"names":["BindingKind"],"mappings":";;AAAA;AACA;AAEA;;;;;;;IAQO,IAAKA,WAAAA,iBAAAA,SAAAA,WAAAA,EAAAA;oFACqE,WAAA,CAAA,OAAA,CAAA,GAAA,OAAA;iFAGH,WAAA,CAAA,SAAA,CAAA,GAAA,SAAA;AAJlEA,IAAAA,OAAAA,WAAAA;AAMX,CAAA,CAAA,EAAA;;;;"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Placeholder = require('./Placeholder.js');
5
+
6
+ // Copyright (c) Cratis. All rights reserved.
7
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
8
+ /**
9
+ * The placeholder an Arc-bound adapter renders instead of its real component when the binding it needs
10
+ * is not available.
11
+ *
12
+ * It names the binding, because that is the only actionable part: the fix is either to register that
13
+ * name in the host or to correct the name in the screen, and the message has to be enough to tell those
14
+ * two apart without opening a debugger.
15
+ */ function MissingBinding({ element, kind, name }) {
16
+ const problem = name === undefined ? `Missing ${kind} binding` : `Unresolved ${kind} binding '${name}'`;
17
+ return /*#__PURE__*/ jsxRuntime.jsx(Placeholder.Placeholder, {
18
+ element: element,
19
+ problem: problem
20
+ });
21
+ }
22
+
23
+ exports.MissingBinding = MissingBinding;
24
+ //# sourceMappingURL=MissingBinding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MissingBinding.js","sources":["../../../bindings/MissingBinding.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\nimport { BindingKind } from './BindingKind';\nimport { Placeholder } from './Placeholder';\n\nexport interface MissingBindingProps {\n /** The element whose binding could not be satisfied. */\n element: ExternalComponent;\n\n /** Whether a query or a command was wanted. */\n kind: BindingKind;\n\n /**\n * The name the screen asked for, or `undefined` when the screen never named one. The two are\n * different mistakes and get different messages - a screen that names `AllInvoices` needs the host\n * to register it, while a screen that names nothing needs editing.\n */\n name?: string;\n}\n\n/**\n * The placeholder an Arc-bound adapter renders instead of its real component when the binding it needs\n * is not available.\n *\n * It names the binding, because that is the only actionable part: the fix is either to register that\n * name in the host or to correct the name in the screen, and the message has to be enough to tell those\n * two apart without opening a debugger.\n */\nexport function MissingBinding({ element, kind, name }: MissingBindingProps) {\n const problem = name === undefined ? `Missing ${kind} binding` : `Unresolved ${kind} binding '${name}'`;\n return <Placeholder element={element} problem={problem} />;\n}\n"],"names":["MissingBinding","element","kind","name","problem","undefined","_jsx","Placeholder"],"mappings":";;;;;AAAA;AACA;AAqBA;;;;;;;IAQO,SAASA,cAAAA,CAAe,EAAEC,OAAO,EAAEC,IAAI,EAAEC,IAAI,EAAuB,EAAA;AACvE,IAAA,MAAMC,UAAUD,IAAAA,KAASE,SAAAA,GAAY,CAAC,QAAQ,EAAEH,KAAK,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAEA,IAAAA,CAAK,UAAU,EAAEC,IAAAA,CAAK,CAAC,CAAC;AACvG,IAAA,qBAAOG,cAAA,CAACC,uBAAAA,EAAAA;QAAYN,OAAAA,EAASA,OAAAA;QAASG,OAAAA,EAASA;;AACnD;;;;"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // Copyright (c) Cratis. All rights reserved.
6
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
7
+ /**
8
+ * The stand-in an adapter renders when it has been given a screen it cannot honor - a binding name
9
+ * nothing is registered under, or a required property the screen never set.
10
+ *
11
+ * Deliberately the same presentation as `UnresolvedComponent` in `@cratis/scene.react`: a dashed red box
12
+ * that states the problem in monospace. They are the same class of failure seen at two different depths -
13
+ * the renderer could not find the component, or the component could not find what it needs - and a
14
+ * designer scanning a preview should recognize both instantly as "something here is not wired up".
15
+ *
16
+ * Rendering this rather than throwing is the whole point. Studio's design-time preview usually has no
17
+ * bindings registered at all, and it still has to show a usable layout: one unbound table must cost one
18
+ * dashed box, not the entire screen.
19
+ */ function Placeholder({ element, problem }) {
20
+ return /*#__PURE__*/ jsxRuntime.jsxs("div", {
21
+ "data-scene-id": element.id,
22
+ "data-scene-placeholder": element.componentName,
23
+ style: {
24
+ border: '1px dashed red',
25
+ color: 'red',
26
+ padding: '0.25rem 0.5rem',
27
+ fontFamily: 'monospace'
28
+ },
29
+ children: [
30
+ problem,
31
+ " on ",
32
+ element.componentName
33
+ ]
34
+ });
35
+ }
36
+
37
+ exports.Placeholder = Placeholder;
38
+ //# sourceMappingURL=Placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Placeholder.js","sources":["../../../bindings/Placeholder.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { ExternalComponent } from '@cratis/scene.model';\n\nexport interface PlaceholderProps {\n /**\n * The element that could not be rendered as configured. Its `componentName` names what was being\n * rendered, which is most of what makes the placeholder actionable.\n */\n element: ExternalComponent;\n\n /**\n * What is wrong, phrased as the problem rather than the remedy - `Unresolved query binding 'AllInvoices'`.\n */\n problem: string;\n}\n\n/**\n * The stand-in an adapter renders when it has been given a screen it cannot honor - a binding name\n * nothing is registered under, or a required property the screen never set.\n *\n * Deliberately the same presentation as `UnresolvedComponent` in `@cratis/scene.react`: a dashed red box\n * that states the problem in monospace. They are the same class of failure seen at two different depths -\n * the renderer could not find the component, or the component could not find what it needs - and a\n * designer scanning a preview should recognize both instantly as \"something here is not wired up\".\n *\n * Rendering this rather than throwing is the whole point. Studio's design-time preview usually has no\n * bindings registered at all, and it still has to show a usable layout: one unbound table must cost one\n * dashed box, not the entire screen.\n */\nexport function Placeholder({ element, problem }: PlaceholderProps) {\n return (\n <div\n data-scene-id={element.id}\n data-scene-placeholder={element.componentName}\n style={{ border: '1px dashed red', color: 'red', padding: '0.25rem 0.5rem', fontFamily: 'monospace' }}\n >\n {problem} on {element.componentName}\n </div>\n );\n}\n"],"names":["Placeholder","element","problem","_jsxs","div","data-scene-id","id","data-scene-placeholder","componentName","style","border","color","padding","fontFamily"],"mappings":";;;;AAAA;AACA;AAiBA;;;;;;;;;;;;AAYC,IACM,SAASA,WAAAA,CAAY,EAAEC,OAAO,EAAEC,OAAO,EAAoB,EAAA;AAC9D,IAAA,qBACIC,eAAA,CAACC,KAAAA,EAAAA;AACGC,QAAAA,eAAAA,EAAeJ,QAAQK,EAAE;AACzBC,QAAAA,wBAAAA,EAAwBN,QAAQO,aAAa;QAC7CC,KAAAA,EAAO;YAAEC,MAAAA,EAAQ,gBAAA;YAAkBC,KAAAA,EAAO,KAAA;YAAOC,OAAAA,EAAS,gBAAA;YAAkBC,UAAAA,EAAY;AAAY,SAAA;;AAEnGX,YAAAA,OAAAA;AAAQ,YAAA,MAAA;AAAKD,YAAAA,OAAAA,CAAQO;;;AAGlC;;;;"}