@cratis/scene.model 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 (441) hide show
  1. package/README.md +40 -0
  2. package/common/BindingExpression.ts +12 -0
  3. package/common/Color.ts +14 -0
  4. package/common/HorizontalAlignment.ts +12 -0
  5. package/common/Size.ts +12 -0
  6. package/common/Thickness.ts +14 -0
  7. package/common/VerticalAlignment.ts +12 -0
  8. package/common/Visibility.ts +11 -0
  9. package/common/index.ts +10 -0
  10. package/contributionPoints/Contribution.ts +17 -0
  11. package/contributionPoints/ContributionPoint.ts +14 -0
  12. package/contributionPoints/NavigationItem.ts +21 -0
  13. package/contributionPoints/index.ts +6 -0
  14. package/dist/cjs/common/BindingExpression.js +13 -0
  15. package/dist/cjs/common/BindingExpression.js.map +1 -0
  16. package/dist/cjs/common/Color.js +15 -0
  17. package/dist/cjs/common/Color.js.map +1 -0
  18. package/dist/cjs/common/HorizontalAlignment.js +16 -0
  19. package/dist/cjs/common/HorizontalAlignment.js.map +1 -0
  20. package/dist/cjs/common/Size.js +13 -0
  21. package/dist/cjs/common/Size.js.map +1 -0
  22. package/dist/cjs/common/Thickness.js +15 -0
  23. package/dist/cjs/common/Thickness.js.map +1 -0
  24. package/dist/cjs/common/VerticalAlignment.js +16 -0
  25. package/dist/cjs/common/VerticalAlignment.js.map +1 -0
  26. package/dist/cjs/common/Visibility.js +15 -0
  27. package/dist/cjs/common/Visibility.js.map +1 -0
  28. package/dist/cjs/contributionPoints/Contribution.js +12 -0
  29. package/dist/cjs/contributionPoints/Contribution.js.map +1 -0
  30. package/dist/cjs/contributionPoints/ContributionPoint.js +15 -0
  31. package/dist/cjs/contributionPoints/ContributionPoint.js.map +1 -0
  32. package/dist/cjs/contributionPoints/NavigationItem.js +14 -0
  33. package/dist/cjs/contributionPoints/NavigationItem.js.map +1 -0
  34. package/dist/cjs/elements/ContentControl.js +10 -0
  35. package/dist/cjs/elements/ContentControl.js.map +1 -0
  36. package/dist/cjs/elements/Control.js +17 -0
  37. package/dist/cjs/elements/Control.js.map +1 -0
  38. package/dist/cjs/elements/ExternalComponent.js +11 -0
  39. package/dist/cjs/elements/ExternalComponent.js.map +1 -0
  40. package/dist/cjs/elements/FrameworkElement.js +15 -0
  41. package/dist/cjs/elements/FrameworkElement.js.map +1 -0
  42. package/dist/cjs/elements/ItemsControl.js +11 -0
  43. package/dist/cjs/elements/ItemsControl.js.map +1 -0
  44. package/dist/cjs/elements/Panel.js +10 -0
  45. package/dist/cjs/elements/Panel.js.map +1 -0
  46. package/dist/cjs/elements/SceneElement.js +14 -0
  47. package/dist/cjs/elements/SceneElement.js.map +1 -0
  48. package/dist/cjs/elements/VisualElement.js +14 -0
  49. package/dist/cjs/elements/VisualElement.js.map +1 -0
  50. package/dist/cjs/forms/Form.js +13 -0
  51. package/dist/cjs/forms/Form.js.map +1 -0
  52. package/dist/cjs/forms/FormField.js +17 -0
  53. package/dist/cjs/forms/FormField.js.map +1 -0
  54. package/dist/cjs/forms/PopulateFromItem.js +10 -0
  55. package/dist/cjs/forms/PopulateFromItem.js.map +1 -0
  56. package/dist/cjs/forms/PopulateViaQuery.js +11 -0
  57. package/dist/cjs/forms/PopulateViaQuery.js.map +1 -0
  58. package/dist/cjs/index.js +110 -0
  59. package/dist/cjs/index.js.map +1 -0
  60. package/dist/cjs/layouts/ElementPlacement.js +14 -0
  61. package/dist/cjs/layouts/ElementPlacement.js.map +1 -0
  62. package/dist/cjs/layouts/FlowArrangement.js +11 -0
  63. package/dist/cjs/layouts/FlowArrangement.js.map +1 -0
  64. package/dist/cjs/layouts/FlowColumn.js +10 -0
  65. package/dist/cjs/layouts/FlowColumn.js.map +1 -0
  66. package/dist/cjs/layouts/FlowContainer.js +12 -0
  67. package/dist/cjs/layouts/FlowContainer.js.map +1 -0
  68. package/dist/cjs/layouts/FlowContainerKind.js +20 -0
  69. package/dist/cjs/layouts/FlowContainerKind.js.map +1 -0
  70. package/dist/cjs/layouts/FlowGrid.js +12 -0
  71. package/dist/cjs/layouts/FlowGrid.js.map +1 -0
  72. package/dist/cjs/layouts/FlowLeaf.js +10 -0
  73. package/dist/cjs/layouts/FlowLeaf.js.map +1 -0
  74. package/dist/cjs/layouts/FlowNode.js +14 -0
  75. package/dist/cjs/layouts/FlowNode.js.map +1 -0
  76. package/dist/cjs/layouts/FlowOverride.js +12 -0
  77. package/dist/cjs/layouts/FlowOverride.js.map +1 -0
  78. package/dist/cjs/layouts/FlowRow.js +10 -0
  79. package/dist/cjs/layouts/FlowRow.js.map +1 -0
  80. package/dist/cjs/layouts/FlowSlotLeaf.js +10 -0
  81. package/dist/cjs/layouts/FlowSlotLeaf.js.map +1 -0
  82. package/dist/cjs/layouts/FreeformArrangement.js +10 -0
  83. package/dist/cjs/layouts/FreeformArrangement.js.map +1 -0
  84. package/dist/cjs/layouts/FreeformSlotArrangement.js +10 -0
  85. package/dist/cjs/layouts/FreeformSlotArrangement.js.map +1 -0
  86. package/dist/cjs/layouts/FreeformSlotVariant.js +11 -0
  87. package/dist/cjs/layouts/FreeformSlotVariant.js.map +1 -0
  88. package/dist/cjs/layouts/FreeformVariant.js +11 -0
  89. package/dist/cjs/layouts/FreeformVariant.js.map +1 -0
  90. package/dist/cjs/layouts/Layout.js +12 -0
  91. package/dist/cjs/layouts/Layout.js.map +1 -0
  92. package/dist/cjs/layouts/Slot.js +11 -0
  93. package/dist/cjs/layouts/Slot.js.map +1 -0
  94. package/dist/cjs/layouts/SlotPlacement.js +18 -0
  95. package/dist/cjs/layouts/SlotPlacement.js.map +1 -0
  96. package/dist/cjs/package.json +3 -0
  97. package/dist/cjs/packages/PackageDependency.js +16 -0
  98. package/dist/cjs/packages/PackageDependency.js.map +1 -0
  99. package/dist/cjs/packages/PackageKind.js +34 -0
  100. package/dist/cjs/packages/PackageKind.js.map +1 -0
  101. package/dist/cjs/packages/ScenePackage.js +21 -0
  102. package/dist/cjs/packages/ScenePackage.js.map +1 -0
  103. package/dist/cjs/profiles/Theme.js +21 -0
  104. package/dist/cjs/profiles/Theme.js.map +1 -0
  105. package/dist/cjs/profiles/UiProfile.js +13 -0
  106. package/dist/cjs/profiles/UiProfile.js.map +1 -0
  107. package/dist/cjs/screens/DialogTemplate.js +15 -0
  108. package/dist/cjs/screens/DialogTemplate.js.map +1 -0
  109. package/dist/cjs/screens/Screen.js +15 -0
  110. package/dist/cjs/screens/Screen.js.map +1 -0
  111. package/dist/cjs/screens/ScreenTemplate.js +16 -0
  112. package/dist/cjs/screens/ScreenTemplate.js.map +1 -0
  113. package/dist/cjs/sizeClasses/HeightSizeClass.js +14 -0
  114. package/dist/cjs/sizeClasses/HeightSizeClass.js.map +1 -0
  115. package/dist/cjs/sizeClasses/SizeClass.js +11 -0
  116. package/dist/cjs/sizeClasses/SizeClass.js.map +1 -0
  117. package/dist/cjs/sizeClasses/WidthSizeClass.js +14 -0
  118. package/dist/cjs/sizeClasses/WidthSizeClass.js.map +1 -0
  119. package/dist/cjs/starters/UiStarter.js +19 -0
  120. package/dist/cjs/starters/UiStarter.js.map +1 -0
  121. package/dist/esm/common/BindingExpression.d.ts +5 -0
  122. package/dist/esm/common/BindingExpression.d.ts.map +1 -0
  123. package/dist/esm/common/BindingExpression.js +11 -0
  124. package/dist/esm/common/BindingExpression.js.map +1 -0
  125. package/dist/esm/common/Color.d.ts +8 -0
  126. package/dist/esm/common/Color.d.ts.map +1 -0
  127. package/dist/esm/common/Color.js +13 -0
  128. package/dist/esm/common/Color.js.map +1 -0
  129. package/dist/esm/common/HorizontalAlignment.d.ts +7 -0
  130. package/dist/esm/common/HorizontalAlignment.d.ts.map +1 -0
  131. package/dist/esm/common/HorizontalAlignment.js +14 -0
  132. package/dist/esm/common/HorizontalAlignment.js.map +1 -0
  133. package/dist/esm/common/Size.d.ts +6 -0
  134. package/dist/esm/common/Size.d.ts.map +1 -0
  135. package/dist/esm/common/Size.js +11 -0
  136. package/dist/esm/common/Size.js.map +1 -0
  137. package/dist/esm/common/Thickness.d.ts +8 -0
  138. package/dist/esm/common/Thickness.d.ts.map +1 -0
  139. package/dist/esm/common/Thickness.js +13 -0
  140. package/dist/esm/common/Thickness.js.map +1 -0
  141. package/dist/esm/common/VerticalAlignment.d.ts +7 -0
  142. package/dist/esm/common/VerticalAlignment.d.ts.map +1 -0
  143. package/dist/esm/common/VerticalAlignment.js +14 -0
  144. package/dist/esm/common/VerticalAlignment.js.map +1 -0
  145. package/dist/esm/common/Visibility.d.ts +6 -0
  146. package/dist/esm/common/Visibility.d.ts.map +1 -0
  147. package/dist/esm/common/Visibility.js +13 -0
  148. package/dist/esm/common/Visibility.js.map +1 -0
  149. package/dist/esm/common/index.d.ts +8 -0
  150. package/dist/esm/common/index.d.ts.map +1 -0
  151. package/dist/esm/common/index.js +8 -0
  152. package/dist/esm/common/index.js.map +1 -0
  153. package/dist/esm/contributionPoints/Contribution.d.ts +8 -0
  154. package/dist/esm/contributionPoints/Contribution.d.ts.map +1 -0
  155. package/dist/esm/contributionPoints/Contribution.js +10 -0
  156. package/dist/esm/contributionPoints/Contribution.js.map +1 -0
  157. package/dist/esm/contributionPoints/ContributionPoint.d.ts +5 -0
  158. package/dist/esm/contributionPoints/ContributionPoint.d.ts.map +1 -0
  159. package/dist/esm/contributionPoints/ContributionPoint.js +13 -0
  160. package/dist/esm/contributionPoints/ContributionPoint.js.map +1 -0
  161. package/dist/esm/contributionPoints/NavigationItem.d.ts +10 -0
  162. package/dist/esm/contributionPoints/NavigationItem.d.ts.map +1 -0
  163. package/dist/esm/contributionPoints/NavigationItem.js +12 -0
  164. package/dist/esm/contributionPoints/NavigationItem.js.map +1 -0
  165. package/dist/esm/contributionPoints/index.d.ts +4 -0
  166. package/dist/esm/contributionPoints/index.d.ts.map +1 -0
  167. package/dist/esm/contributionPoints/index.js +4 -0
  168. package/dist/esm/contributionPoints/index.js.map +1 -0
  169. package/dist/esm/elements/ContentControl.d.ts +7 -0
  170. package/dist/esm/elements/ContentControl.d.ts.map +1 -0
  171. package/dist/esm/elements/ContentControl.js +8 -0
  172. package/dist/esm/elements/ContentControl.js.map +1 -0
  173. package/dist/esm/elements/Control.d.ts +14 -0
  174. package/dist/esm/elements/Control.d.ts.map +1 -0
  175. package/dist/esm/elements/Control.js +15 -0
  176. package/dist/esm/elements/Control.js.map +1 -0
  177. package/dist/esm/elements/ExternalComponent.d.ts +8 -0
  178. package/dist/esm/elements/ExternalComponent.d.ts.map +1 -0
  179. package/dist/esm/elements/ExternalComponent.js +9 -0
  180. package/dist/esm/elements/ExternalComponent.js.map +1 -0
  181. package/dist/esm/elements/FrameworkElement.d.ts +12 -0
  182. package/dist/esm/elements/FrameworkElement.d.ts.map +1 -0
  183. package/dist/esm/elements/FrameworkElement.js +13 -0
  184. package/dist/esm/elements/FrameworkElement.js.map +1 -0
  185. package/dist/esm/elements/ItemsControl.d.ts +9 -0
  186. package/dist/esm/elements/ItemsControl.d.ts.map +1 -0
  187. package/dist/esm/elements/ItemsControl.js +9 -0
  188. package/dist/esm/elements/ItemsControl.js.map +1 -0
  189. package/dist/esm/elements/Panel.d.ts +7 -0
  190. package/dist/esm/elements/Panel.d.ts.map +1 -0
  191. package/dist/esm/elements/Panel.js +8 -0
  192. package/dist/esm/elements/Panel.js.map +1 -0
  193. package/dist/esm/elements/SceneElement.d.ts +6 -0
  194. package/dist/esm/elements/SceneElement.d.ts.map +1 -0
  195. package/dist/esm/elements/SceneElement.js +12 -0
  196. package/dist/esm/elements/SceneElement.js.map +1 -0
  197. package/dist/esm/elements/VisualElement.d.ts +11 -0
  198. package/dist/esm/elements/VisualElement.d.ts.map +1 -0
  199. package/dist/esm/elements/VisualElement.js +12 -0
  200. package/dist/esm/elements/VisualElement.js.map +1 -0
  201. package/dist/esm/elements/index.d.ts +9 -0
  202. package/dist/esm/elements/index.d.ts.map +1 -0
  203. package/dist/esm/elements/index.js +9 -0
  204. package/dist/esm/elements/index.js.map +1 -0
  205. package/dist/esm/for_shape/when_checking_the_mirror_matches_the_shared_manifest.d.ts +2 -0
  206. package/dist/esm/for_shape/when_checking_the_mirror_matches_the_shared_manifest.d.ts.map +1 -0
  207. package/dist/esm/for_shape/when_checking_the_mirror_matches_the_shared_manifest.js +22 -0
  208. package/dist/esm/for_shape/when_checking_the_mirror_matches_the_shared_manifest.js.map +1 -0
  209. package/dist/esm/forms/Form.d.ts +10 -0
  210. package/dist/esm/forms/Form.d.ts.map +1 -0
  211. package/dist/esm/forms/Form.js +11 -0
  212. package/dist/esm/forms/Form.js.map +1 -0
  213. package/dist/esm/forms/FormField.d.ts +8 -0
  214. package/dist/esm/forms/FormField.d.ts.map +1 -0
  215. package/dist/esm/forms/FormField.js +15 -0
  216. package/dist/esm/forms/FormField.js.map +1 -0
  217. package/dist/esm/forms/PopulateFromItem.d.ts +7 -0
  218. package/dist/esm/forms/PopulateFromItem.d.ts.map +1 -0
  219. package/dist/esm/forms/PopulateFromItem.js +8 -0
  220. package/dist/esm/forms/PopulateFromItem.js.map +1 -0
  221. package/dist/esm/forms/PopulateSource.d.ts +3 -0
  222. package/dist/esm/forms/PopulateSource.d.ts.map +1 -0
  223. package/dist/esm/forms/PopulateSource.js +2 -0
  224. package/dist/esm/forms/PopulateSource.js.map +1 -0
  225. package/dist/esm/forms/PopulateViaQuery.d.ts +8 -0
  226. package/dist/esm/forms/PopulateViaQuery.d.ts.map +1 -0
  227. package/dist/esm/forms/PopulateViaQuery.js +9 -0
  228. package/dist/esm/forms/PopulateViaQuery.js.map +1 -0
  229. package/dist/esm/forms/index.d.ts +6 -0
  230. package/dist/esm/forms/index.d.ts.map +1 -0
  231. package/dist/esm/forms/index.js +6 -0
  232. package/dist/esm/forms/index.js.map +1 -0
  233. package/dist/esm/index.d.ts +11 -0
  234. package/dist/esm/index.d.ts.map +1 -0
  235. package/dist/esm/index.js +53 -0
  236. package/dist/esm/index.js.map +1 -0
  237. package/dist/esm/layouts/Arrangement.d.ts +3 -0
  238. package/dist/esm/layouts/Arrangement.d.ts.map +1 -0
  239. package/dist/esm/layouts/Arrangement.js +2 -0
  240. package/dist/esm/layouts/Arrangement.js.map +1 -0
  241. package/dist/esm/layouts/ElementPlacement.d.ts +10 -0
  242. package/dist/esm/layouts/ElementPlacement.d.ts.map +1 -0
  243. package/dist/esm/layouts/ElementPlacement.js +12 -0
  244. package/dist/esm/layouts/ElementPlacement.js.map +1 -0
  245. package/dist/esm/layouts/FlowArrangement.d.ts +9 -0
  246. package/dist/esm/layouts/FlowArrangement.d.ts.map +1 -0
  247. package/dist/esm/layouts/FlowArrangement.js +9 -0
  248. package/dist/esm/layouts/FlowArrangement.js.map +1 -0
  249. package/dist/esm/layouts/FlowColumn.d.ts +7 -0
  250. package/dist/esm/layouts/FlowColumn.d.ts.map +1 -0
  251. package/dist/esm/layouts/FlowColumn.js +8 -0
  252. package/dist/esm/layouts/FlowColumn.js.map +1 -0
  253. package/dist/esm/layouts/FlowContainer.d.ts +9 -0
  254. package/dist/esm/layouts/FlowContainer.d.ts.map +1 -0
  255. package/dist/esm/layouts/FlowContainer.js +10 -0
  256. package/dist/esm/layouts/FlowContainer.js.map +1 -0
  257. package/dist/esm/layouts/FlowContainerKind.d.ts +6 -0
  258. package/dist/esm/layouts/FlowContainerKind.d.ts.map +1 -0
  259. package/dist/esm/layouts/FlowContainerKind.js +18 -0
  260. package/dist/esm/layouts/FlowContainerKind.js.map +1 -0
  261. package/dist/esm/layouts/FlowGrid.d.ts +9 -0
  262. package/dist/esm/layouts/FlowGrid.d.ts.map +1 -0
  263. package/dist/esm/layouts/FlowGrid.js +10 -0
  264. package/dist/esm/layouts/FlowGrid.js.map +1 -0
  265. package/dist/esm/layouts/FlowLeaf.d.ts +7 -0
  266. package/dist/esm/layouts/FlowLeaf.d.ts.map +1 -0
  267. package/dist/esm/layouts/FlowLeaf.js +8 -0
  268. package/dist/esm/layouts/FlowLeaf.js.map +1 -0
  269. package/dist/esm/layouts/FlowNode.d.ts +6 -0
  270. package/dist/esm/layouts/FlowNode.d.ts.map +1 -0
  271. package/dist/esm/layouts/FlowNode.js +12 -0
  272. package/dist/esm/layouts/FlowNode.js.map +1 -0
  273. package/dist/esm/layouts/FlowOverride.d.ts +9 -0
  274. package/dist/esm/layouts/FlowOverride.d.ts.map +1 -0
  275. package/dist/esm/layouts/FlowOverride.js +10 -0
  276. package/dist/esm/layouts/FlowOverride.js.map +1 -0
  277. package/dist/esm/layouts/FlowRow.d.ts +7 -0
  278. package/dist/esm/layouts/FlowRow.d.ts.map +1 -0
  279. package/dist/esm/layouts/FlowRow.js +8 -0
  280. package/dist/esm/layouts/FlowRow.js.map +1 -0
  281. package/dist/esm/layouts/FlowSlotLeaf.d.ts +6 -0
  282. package/dist/esm/layouts/FlowSlotLeaf.d.ts.map +1 -0
  283. package/dist/esm/layouts/FlowSlotLeaf.js +8 -0
  284. package/dist/esm/layouts/FlowSlotLeaf.js.map +1 -0
  285. package/dist/esm/layouts/FreeformArrangement.d.ts +7 -0
  286. package/dist/esm/layouts/FreeformArrangement.d.ts.map +1 -0
  287. package/dist/esm/layouts/FreeformArrangement.js +8 -0
  288. package/dist/esm/layouts/FreeformArrangement.js.map +1 -0
  289. package/dist/esm/layouts/FreeformSlotArrangement.d.ts +7 -0
  290. package/dist/esm/layouts/FreeformSlotArrangement.d.ts.map +1 -0
  291. package/dist/esm/layouts/FreeformSlotArrangement.js +8 -0
  292. package/dist/esm/layouts/FreeformSlotArrangement.js.map +1 -0
  293. package/dist/esm/layouts/FreeformSlotVariant.d.ts +8 -0
  294. package/dist/esm/layouts/FreeformSlotVariant.d.ts.map +1 -0
  295. package/dist/esm/layouts/FreeformSlotVariant.js +9 -0
  296. package/dist/esm/layouts/FreeformSlotVariant.js.map +1 -0
  297. package/dist/esm/layouts/FreeformVariant.d.ts +8 -0
  298. package/dist/esm/layouts/FreeformVariant.d.ts.map +1 -0
  299. package/dist/esm/layouts/FreeformVariant.js +9 -0
  300. package/dist/esm/layouts/FreeformVariant.js.map +1 -0
  301. package/dist/esm/layouts/Layout.d.ts +9 -0
  302. package/dist/esm/layouts/Layout.d.ts.map +1 -0
  303. package/dist/esm/layouts/Layout.js +10 -0
  304. package/dist/esm/layouts/Layout.js.map +1 -0
  305. package/dist/esm/layouts/Slot.d.ts +7 -0
  306. package/dist/esm/layouts/Slot.d.ts.map +1 -0
  307. package/dist/esm/layouts/Slot.js +9 -0
  308. package/dist/esm/layouts/Slot.js.map +1 -0
  309. package/dist/esm/layouts/SlotPlacement.d.ts +9 -0
  310. package/dist/esm/layouts/SlotPlacement.d.ts.map +1 -0
  311. package/dist/esm/layouts/SlotPlacement.js +16 -0
  312. package/dist/esm/layouts/SlotPlacement.js.map +1 -0
  313. package/dist/esm/layouts/index.d.ts +20 -0
  314. package/dist/esm/layouts/index.d.ts.map +1 -0
  315. package/dist/esm/layouts/index.js +20 -0
  316. package/dist/esm/layouts/index.js.map +1 -0
  317. package/dist/esm/package.json +3 -0
  318. package/dist/esm/packages/PackageDependency.d.ts +6 -0
  319. package/dist/esm/packages/PackageDependency.d.ts.map +1 -0
  320. package/dist/esm/packages/PackageDependency.js +14 -0
  321. package/dist/esm/packages/PackageDependency.js.map +1 -0
  322. package/dist/esm/packages/PackageKind.d.ts +6 -0
  323. package/dist/esm/packages/PackageKind.d.ts.map +1 -0
  324. package/dist/esm/packages/PackageKind.js +32 -0
  325. package/dist/esm/packages/PackageKind.js.map +1 -0
  326. package/dist/esm/packages/ScenePackage.d.ts +18 -0
  327. package/dist/esm/packages/ScenePackage.d.ts.map +1 -0
  328. package/dist/esm/packages/ScenePackage.js +19 -0
  329. package/dist/esm/packages/ScenePackage.js.map +1 -0
  330. package/dist/esm/packages/index.d.ts +4 -0
  331. package/dist/esm/packages/index.d.ts.map +1 -0
  332. package/dist/esm/packages/index.js +4 -0
  333. package/dist/esm/packages/index.js.map +1 -0
  334. package/dist/esm/profiles/Theme.d.ts +12 -0
  335. package/dist/esm/profiles/Theme.d.ts.map +1 -0
  336. package/dist/esm/profiles/Theme.js +19 -0
  337. package/dist/esm/profiles/Theme.js.map +1 -0
  338. package/dist/esm/profiles/UiProfile.d.ts +9 -0
  339. package/dist/esm/profiles/UiProfile.d.ts.map +1 -0
  340. package/dist/esm/profiles/UiProfile.js +11 -0
  341. package/dist/esm/profiles/UiProfile.js.map +1 -0
  342. package/dist/esm/profiles/index.d.ts +3 -0
  343. package/dist/esm/profiles/index.d.ts.map +1 -0
  344. package/dist/esm/profiles/index.js +3 -0
  345. package/dist/esm/profiles/index.js.map +1 -0
  346. package/dist/esm/screens/DialogTemplate.d.ts +12 -0
  347. package/dist/esm/screens/DialogTemplate.d.ts.map +1 -0
  348. package/dist/esm/screens/DialogTemplate.js +13 -0
  349. package/dist/esm/screens/DialogTemplate.js.map +1 -0
  350. package/dist/esm/screens/Screen.d.ts +13 -0
  351. package/dist/esm/screens/Screen.d.ts.map +1 -0
  352. package/dist/esm/screens/Screen.js +13 -0
  353. package/dist/esm/screens/Screen.js.map +1 -0
  354. package/dist/esm/screens/ScreenTemplate.d.ts +13 -0
  355. package/dist/esm/screens/ScreenTemplate.d.ts.map +1 -0
  356. package/dist/esm/screens/ScreenTemplate.js +14 -0
  357. package/dist/esm/screens/ScreenTemplate.js.map +1 -0
  358. package/dist/esm/screens/index.d.ts +4 -0
  359. package/dist/esm/screens/index.d.ts.map +1 -0
  360. package/dist/esm/screens/index.js +4 -0
  361. package/dist/esm/screens/index.js.map +1 -0
  362. package/dist/esm/sizeClasses/HeightSizeClass.d.ts +5 -0
  363. package/dist/esm/sizeClasses/HeightSizeClass.d.ts.map +1 -0
  364. package/dist/esm/sizeClasses/HeightSizeClass.js +12 -0
  365. package/dist/esm/sizeClasses/HeightSizeClass.js.map +1 -0
  366. package/dist/esm/sizeClasses/SizeClass.d.ts +8 -0
  367. package/dist/esm/sizeClasses/SizeClass.d.ts.map +1 -0
  368. package/dist/esm/sizeClasses/SizeClass.js +9 -0
  369. package/dist/esm/sizeClasses/SizeClass.js.map +1 -0
  370. package/dist/esm/sizeClasses/WidthSizeClass.d.ts +5 -0
  371. package/dist/esm/sizeClasses/WidthSizeClass.d.ts.map +1 -0
  372. package/dist/esm/sizeClasses/WidthSizeClass.js +12 -0
  373. package/dist/esm/sizeClasses/WidthSizeClass.js.map +1 -0
  374. package/dist/esm/sizeClasses/index.d.ts +4 -0
  375. package/dist/esm/sizeClasses/index.d.ts.map +1 -0
  376. package/dist/esm/sizeClasses/index.js +4 -0
  377. package/dist/esm/sizeClasses/index.js.map +1 -0
  378. package/dist/esm/starters/UiStarter.d.ts +8 -0
  379. package/dist/esm/starters/UiStarter.d.ts.map +1 -0
  380. package/dist/esm/starters/UiStarter.js +17 -0
  381. package/dist/esm/starters/UiStarter.js.map +1 -0
  382. package/dist/esm/starters/index.d.ts +2 -0
  383. package/dist/esm/starters/index.d.ts.map +1 -0
  384. package/dist/esm/starters/index.js +2 -0
  385. package/dist/esm/starters/index.js.map +1 -0
  386. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  387. package/elements/ContentControl.ts +14 -0
  388. package/elements/Control.ts +24 -0
  389. package/elements/ExternalComponent.ts +17 -0
  390. package/elements/FrameworkElement.ts +22 -0
  391. package/elements/ItemsControl.ts +16 -0
  392. package/elements/Panel.ts +14 -0
  393. package/elements/SceneElement.ts +13 -0
  394. package/elements/VisualElement.ts +18 -0
  395. package/elements/index.ts +11 -0
  396. package/for_shape/when_checking_the_mirror_matches_the_shared_manifest.ts +32 -0
  397. package/forms/Form.ts +17 -0
  398. package/forms/FormField.ts +16 -0
  399. package/forms/PopulateFromItem.ts +15 -0
  400. package/forms/PopulateSource.ts +7 -0
  401. package/forms/PopulateViaQuery.ts +15 -0
  402. package/forms/index.ts +8 -0
  403. package/index.ts +13 -0
  404. package/layouts/Arrangement.ts +12 -0
  405. package/layouts/ElementPlacement.ts +17 -0
  406. package/layouts/FlowArrangement.ts +26 -0
  407. package/layouts/FlowColumn.ts +14 -0
  408. package/layouts/FlowContainer.ts +21 -0
  409. package/layouts/FlowContainerKind.ts +16 -0
  410. package/layouts/FlowGrid.ts +16 -0
  411. package/layouts/FlowLeaf.ts +14 -0
  412. package/layouts/FlowNode.ts +13 -0
  413. package/layouts/FlowOverride.ts +21 -0
  414. package/layouts/FlowRow.ts +14 -0
  415. package/layouts/FlowSlotLeaf.ts +15 -0
  416. package/layouts/FreeformArrangement.ts +15 -0
  417. package/layouts/FreeformSlotArrangement.ts +17 -0
  418. package/layouts/FreeformSlotVariant.ts +18 -0
  419. package/layouts/FreeformVariant.ts +16 -0
  420. package/layouts/Layout.ts +26 -0
  421. package/layouts/Slot.ts +16 -0
  422. package/layouts/SlotPlacement.ts +17 -0
  423. package/layouts/index.ts +22 -0
  424. package/package.json +39 -0
  425. package/packages/PackageDependency.ts +23 -0
  426. package/packages/PackageKind.ts +35 -0
  427. package/packages/ScenePackage.ts +90 -0
  428. package/packages/index.ts +6 -0
  429. package/profiles/Theme.ts +64 -0
  430. package/profiles/UiProfile.ts +19 -0
  431. package/profiles/index.ts +5 -0
  432. package/screens/DialogTemplate.ts +57 -0
  433. package/screens/Screen.ts +50 -0
  434. package/screens/ScreenTemplate.ts +70 -0
  435. package/screens/index.ts +6 -0
  436. package/sizeClasses/HeightSizeClass.ts +10 -0
  437. package/sizeClasses/SizeClass.ts +16 -0
  438. package/sizeClasses/WidthSizeClass.ts +10 -0
  439. package/sizeClasses/index.ts +6 -0
  440. package/starters/UiStarter.ts +18 -0
  441. package/starters/index.ts +4 -0
package/forms/index.ts ADDED
@@ -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 './Form';
5
+ export * from './FormField';
6
+ export * from './PopulateSource';
7
+ export * from './PopulateViaQuery';
8
+ export * from './PopulateFromItem';
package/index.ts ADDED
@@ -0,0 +1,13 @@
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 './common';
5
+ export * from './sizeClasses';
6
+ export * from './elements';
7
+ export * from './layouts';
8
+ export * from './forms';
9
+ export * from './contributionPoints';
10
+ export * from './profiles';
11
+ export * from './packages';
12
+ export * from './screens';
13
+ export * from './starters';
@@ -0,0 +1,12 @@
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
+ /**
5
+ * How content is arranged: {@link FlowArrangement} (reflowing, computed per size class) or
6
+ * {@link FreeformArrangement}/{@link FreeformSlotArrangement} (one placement variant per size class). Used
7
+ * at two levels - a {@link Layout}'s own `arrangement` positions its named {@link Slot}s relative to each
8
+ * other (leaves reference a slot by name: {@link FlowSlotLeaf}/{@link SlotPlacement}), while a
9
+ * {@link Slot}'s own `arrangement` positions that slot's own filled content elements (leaves carry the
10
+ * element itself: {@link FlowLeaf}/{@link ElementPlacement}).
11
+ */
12
+ export interface Arrangement {}
@@ -0,0 +1,17 @@
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 { SceneElement } from '../elements';
5
+
6
+ /**
7
+ * The absolute position and size of one element within a {@link FreeformVariant}.
8
+ */
9
+ export interface ElementPlacement {
10
+ element: SceneElement;
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+
17
+ export const ElementPlacementPropertyNames: (keyof ElementPlacement)[] = ['element', 'x', 'y', 'width', 'height'];
@@ -0,0 +1,26 @@
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 { Arrangement } from './Arrangement';
5
+ import { FlowNode } from './FlowNode';
6
+ import { FlowOverride } from './FlowOverride';
7
+
8
+ /**
9
+ * Arranges a slot's content by reflowing it with the neutral `flow` primitives ({@link FlowRow},
10
+ * {@link FlowColumn}, {@link FlowGrid}, {@link FlowLeaf}), recomputed against the current size class
11
+ * rather than fixed per breakpoint. Deliberately not CSS-flavored — a renderer maps these primitives to
12
+ * whatever native layout mechanism it has (flexbox/grid in `Scene.React`, something else in a future
13
+ * native renderer).
14
+ */
15
+ export interface FlowArrangement extends Arrangement {
16
+ root: FlowNode;
17
+
18
+ /**
19
+ * Replacements for `root` targeting specific width/height size classes - the most specific match
20
+ * wins (both dimensions targeted beats one), and the last declared wins among equally specific
21
+ * matches. `undefined` or empty when the tree never varies by size class.
22
+ */
23
+ overrides?: FlowOverride[];
24
+ }
25
+
26
+ export const FlowArrangementPropertyNames: (keyof FlowArrangement)[] = ['root', 'overrides'];
@@ -0,0 +1,14 @@
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 { FlowContainer } from './FlowContainer';
5
+ import { FlowContainerKind } from './FlowContainerKind';
6
+
7
+ /**
8
+ * A {@link FlowContainer} that arranges its children vertically.
9
+ */
10
+ export interface FlowColumn extends FlowContainer {
11
+ kind: FlowContainerKind.Column;
12
+ }
13
+
14
+ export const FlowColumnPropertyNames: (keyof FlowColumn)[] = ['kind'];
@@ -0,0 +1,21 @@
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 { FlowContainerKind } from './FlowContainerKind';
5
+ import { FlowNode } from './FlowNode';
6
+
7
+ /**
8
+ * A {@link FlowNode} that arranges child nodes ({@link FlowRow}, {@link FlowColumn} or {@link FlowGrid}).
9
+ */
10
+ export interface FlowContainer extends FlowNode {
11
+ gap: number;
12
+ children: FlowNode[];
13
+
14
+ /**
15
+ * Which way this container arranges its children. Narrowed to a single member by each concrete
16
+ * container, which is what makes them a discriminated union rather than three identical shapes.
17
+ */
18
+ kind: FlowContainerKind;
19
+ }
20
+
21
+ export const FlowContainerPropertyNames: (keyof FlowContainer)[] = ['gap', 'children', 'kind'];
@@ -0,0 +1,16 @@
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
+ /**
5
+ * Which way a {@link FlowContainer} arranges its children.
6
+ *
7
+ * C# distinguishes `FlowRow` from `FlowColumn` by type, but this mirror cannot: interfaces with identical
8
+ * members are the same type, and there are no runtime types to test. A renderer walking an arrangement
9
+ * tree would have no way to tell a row from a column — which is the one thing it most needs to know. This
10
+ * carries that decision as data, so both stacks read it the same way.
11
+ */
12
+ export enum FlowContainerKind {
13
+ Row = 'Row',
14
+ Column = 'Column',
15
+ Grid = 'Grid',
16
+ }
@@ -0,0 +1,16 @@
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 { FlowContainer } from './FlowContainer';
5
+ import { FlowContainerKind } from './FlowContainerKind';
6
+
7
+ /**
8
+ * A {@link FlowContainer} that arranges its children in a grid.
9
+ */
10
+ export interface FlowGrid extends FlowContainer {
11
+ kind: FlowContainerKind.Grid;
12
+ columns?: number;
13
+ rows?: number;
14
+ }
15
+
16
+ export const FlowGridPropertyNames: (keyof FlowGrid)[] = ['kind', 'columns', 'rows'];
@@ -0,0 +1,14 @@
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 { FlowNode } from './FlowNode';
5
+ import { SceneElement } from '../elements';
6
+
7
+ /**
8
+ * A {@link FlowNode} leaf that positions one of the slot's own content elements within the flow tree.
9
+ */
10
+ export interface FlowLeaf extends FlowNode {
11
+ content: SceneElement;
12
+ }
13
+
14
+ export const FlowLeafPropertyNames: (keyof FlowLeaf)[] = ['content'];
@@ -0,0 +1,13 @@
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
+ /**
5
+ * A node in a {@link FlowArrangement}'s tree: a container ({@link FlowRow}, {@link FlowColumn},
6
+ * {@link FlowGrid}) or a leaf positioning one of the slot's own content elements ({@link FlowLeaf}).
7
+ */
8
+ export interface FlowNode {
9
+ grow?: number;
10
+ span?: number;
11
+ }
12
+
13
+ export const FlowNodePropertyNames: (keyof FlowNode)[] = ['grow', 'span'];
@@ -0,0 +1,21 @@
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 { WidthSizeClass, HeightSizeClass } from '../sizeClasses';
5
+ import { FlowNode } from './FlowNode';
6
+
7
+ /**
8
+ * Replaces a {@link FlowArrangement}'s root tree for a targeted width and/or height size class.
9
+ */
10
+ export interface FlowOverride {
11
+ /** The width size class this override targets, or `undefined` to target any width. */
12
+ width?: WidthSizeClass;
13
+
14
+ /** The height size class this override targets, or `undefined` to target any height. */
15
+ height?: HeightSizeClass;
16
+
17
+ /** The replacement tree. */
18
+ root: FlowNode;
19
+ }
20
+
21
+ export const FlowOverridePropertyNames: (keyof FlowOverride)[] = ['width', 'height', 'root'];
@@ -0,0 +1,14 @@
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 { FlowContainer } from './FlowContainer';
5
+ import { FlowContainerKind } from './FlowContainerKind';
6
+
7
+ /**
8
+ * A {@link FlowContainer} that arranges its children horizontally.
9
+ */
10
+ export interface FlowRow extends FlowContainer {
11
+ kind: FlowContainerKind.Row;
12
+ }
13
+
14
+ export const FlowRowPropertyNames: (keyof FlowRow)[] = ['kind'];
@@ -0,0 +1,15 @@
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 { FlowNode } from './FlowNode';
5
+
6
+ /**
7
+ * A {@link FlowNode} leaf that positions one of a {@link Layout}'s own named {@link Slot}s within its
8
+ * macro `arrangement` tree - the counterpart to {@link FlowLeaf}, which positions an element within a
9
+ * single slot's own content instead of positioning a slot within the layout.
10
+ */
11
+ export interface FlowSlotLeaf extends FlowNode {
12
+ slotName: string;
13
+ }
14
+
15
+ export const FlowSlotLeafPropertyNames: (keyof FlowSlotLeaf)[] = ['slotName'];
@@ -0,0 +1,15 @@
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 { Arrangement } from './Arrangement';
5
+ import { FreeformVariant } from './FreeformVariant';
6
+
7
+ /**
8
+ * Arranges a slot's content with one placement variant per size class — the Xcode-storyboard model.
9
+ * The same data/action/form contract is shared across every variant; only placement differs.
10
+ */
11
+ export interface FreeformArrangement extends Arrangement {
12
+ variants: FreeformVariant[];
13
+ }
14
+
15
+ export const FreeformArrangementPropertyNames: (keyof FreeformArrangement)[] = ['variants'];
@@ -0,0 +1,17 @@
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 { Arrangement } from './Arrangement';
5
+ import { FreeformSlotVariant } from './FreeformSlotVariant';
6
+
7
+ /**
8
+ * Arranges a {@link Layout}'s own named {@link Slot}s with one placement variant per size class - the
9
+ * Xcode-storyboard model applied to the layout's slots themselves, rather than to the content of one slot
10
+ * (see {@link FreeformArrangement}). The same slot set is shared across every variant; only placement
11
+ * differs.
12
+ */
13
+ export interface FreeformSlotArrangement extends Arrangement {
14
+ variants: FreeformSlotVariant[];
15
+ }
16
+
17
+ export const FreeformSlotArrangementPropertyNames: (keyof FreeformSlotArrangement)[] = ['variants'];
@@ -0,0 +1,18 @@
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 { SizeClass } from '../sizeClasses';
5
+ import { SlotPlacement } from './SlotPlacement';
6
+
7
+ /**
8
+ * One placement variant of a {@link FreeformSlotArrangement}, targeting a specific size class - the
9
+ * counterpart to {@link FreeformVariant}, which places elements within a single slot instead of placing a
10
+ * layout's own slots. A size class with no matching variant is a compiler/engine warning, never a silent
11
+ * fallback, matching {@link FreeformVariant}.
12
+ */
13
+ export interface FreeformSlotVariant {
14
+ sizeClass: SizeClass;
15
+ placements: SlotPlacement[];
16
+ }
17
+
18
+ export const FreeformSlotVariantPropertyNames: (keyof FreeformSlotVariant)[] = ['sizeClass', 'placements'];
@@ -0,0 +1,16 @@
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 { SizeClass } from '../sizeClasses';
5
+ import { ElementPlacement } from './ElementPlacement';
6
+
7
+ /**
8
+ * One placement variant of a {@link FreeformArrangement}, targeting a specific size class. A size class
9
+ * with no matching variant is a compiler/engine warning, never a silent fallback.
10
+ */
11
+ export interface FreeformVariant {
12
+ sizeClass: SizeClass;
13
+ placements: ElementPlacement[];
14
+ }
15
+
16
+ export const FreeformVariantPropertyNames: (keyof FreeformVariant)[] = ['sizeClass', 'placements'];
@@ -0,0 +1,26 @@
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 { Arrangement } from './Arrangement';
5
+ import { Slot } from './Slot';
6
+
7
+ /**
8
+ * A named template of slots that a {@link Screen} fills with content. Mirrors Screenplay's `layout`
9
+ * construct: a bare layout with plain slots is a special case of a layout whose slots all use the
10
+ * default arrangement.
11
+ */
12
+ export interface Layout {
13
+ name: string;
14
+ slots: Slot[];
15
+
16
+ /**
17
+ * How the layout's own `slots` position relative to each other - a {@link FlowArrangement} (leaves
18
+ * are {@link FlowSlotLeaf}) or {@link FreeformSlotArrangement}, or `undefined` for the slots'
19
+ * declaration order with no further positioning information. Distinct from each {@link Slot}'s own
20
+ * `arrangement`, which positions that one slot's filled content instead of positioning the slots
21
+ * themselves.
22
+ */
23
+ arrangement?: Arrangement;
24
+ }
25
+
26
+ export const LayoutPropertyNames: (keyof Layout)[] = ['name', 'slots', 'arrangement'];
@@ -0,0 +1,16 @@
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 { Arrangement } from './Arrangement';
5
+
6
+ /**
7
+ * A named placeholder within a {@link Layout}, filled with content by a screen and positioned by its
8
+ * {@link Arrangement}. A layout is not uniformly one arrangement mode — `flow` for most slots and
9
+ * `freeform` for one is a valid combination.
10
+ */
11
+ export interface Slot {
12
+ name: string;
13
+ arrangement?: Arrangement;
14
+ }
15
+
16
+ export const SlotPropertyNames: (keyof Slot)[] = ['name', 'arrangement'];
@@ -0,0 +1,17 @@
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
+ /**
5
+ * The absolute position and size of one of a {@link Layout}'s own named {@link Slot}s within a
6
+ * {@link FreeformSlotVariant} - the counterpart to {@link ElementPlacement}, which places an element
7
+ * within a single slot's own content instead of placing a slot within the layout.
8
+ */
9
+ export interface SlotPlacement {
10
+ slotName: string;
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ }
16
+
17
+ export const SlotPlacementPropertyNames: (keyof SlotPlacement)[] = ['slotName', 'x', 'y', 'width', 'height'];
@@ -0,0 +1,22 @@
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 './Layout';
5
+ export * from './Slot';
6
+ export * from './Arrangement';
7
+ export * from './FlowArrangement';
8
+ export * from './FlowOverride';
9
+ export * from './FlowNode';
10
+ export * from './FlowContainer';
11
+ export * from './FlowContainerKind';
12
+ export * from './FlowRow';
13
+ export * from './FlowColumn';
14
+ export * from './FlowGrid';
15
+ export * from './FlowLeaf';
16
+ export * from './FlowSlotLeaf';
17
+ export * from './FreeformArrangement';
18
+ export * from './FreeformVariant';
19
+ export * from './ElementPlacement';
20
+ export * from './FreeformSlotArrangement';
21
+ export * from './FreeformSlotVariant';
22
+ export * from './SlotPlacement';
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@cratis/scene.model",
3
+ "version": "0.1.0",
4
+ "description": "The TypeScript mirror of Cratis.Scene.Model — the platform-agnostic Screen object model.",
5
+ "author": "Cratis",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/Cratis/Scene.git"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "**/*.ts"
17
+ ],
18
+ "main": "dist/cjs/index.js",
19
+ "module": "dist/esm/index.js",
20
+ "types": "dist/esm/index.d.ts",
21
+ "exports": {
22
+ "./package.json": "./package.json",
23
+ ".": {
24
+ "types": "./dist/esm/index.d.ts",
25
+ "require": "./dist/cjs/index.js",
26
+ "import": "./dist/esm/index.js"
27
+ }
28
+ },
29
+ "scripts": {
30
+ "prepare": "yarn g:build",
31
+ "clean": "yarn g:clean",
32
+ "build": "yarn g:build",
33
+ "lint": "yarn g:lint",
34
+ "lint:ci": "yarn g:lint:ci",
35
+ "test": "yarn g:test",
36
+ "ci": "yarn g:ci",
37
+ "up": "yarn g:up"
38
+ }
39
+ }
@@ -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
+ /**
5
+ * One package a {@link ScenePackage} needs present in the same {@link UiProfile} to work.
6
+ * `@cratis/components` is written against PrimeReact and Tailwind, so it declares both - a profile
7
+ * listing it without them is stating something that cannot render, and that has to be visible rather
8
+ * than discovered at runtime.
9
+ */
10
+ export interface PackageDependency {
11
+ /**
12
+ * The name of the package depended on, matching that package's `name`.
13
+ */
14
+ name: string;
15
+
16
+ /**
17
+ * An optional semver range the dependency must satisfy. Left undefined when any version will do -
18
+ * which is the common case, since a profile only ever activates one version of a package.
19
+ */
20
+ versionRange?: string;
21
+ }
22
+
23
+ export const PackageDependencyPropertyNames: (keyof PackageDependency)[] = ['name', 'versionRange'];
@@ -0,0 +1,35 @@
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
+ /**
5
+ * What a {@link ScenePackage} contributes to a {@link UiProfile}. A profile's package list mixes all
6
+ * three kinds freely - the kind says what a package is for, never where it sits in the override-priority
7
+ * order.
8
+ */
9
+ export enum PackageKind {
10
+ /**
11
+ * Declares component names a screen can resolve against. A package with no dependency on another
12
+ * `ComponentLibrary` is a base library (PrimeReact, `core`); one that depends on another layers on
13
+ * top of it.
14
+ */
15
+ ComponentLibrary = 'ComponentLibrary',
16
+
17
+ /**
18
+ * Contributes styling rather than components - a utility CSS system such as Tailwind. A styling
19
+ * package usually declares no components at all; component libraries depend on it to say "my
20
+ * components are written against this styling system".
21
+ */
22
+ Styling = 'Styling',
23
+
24
+ /**
25
+ * Provides the shape of an application: its {@link Layout}s, the {@link ScreenTemplate}s and
26
+ * {@link DialogTemplate}s built on them, and the components that fill their slots. An application
27
+ * selects one blueprint, and gets a coherent set rather than assembling layouts and templates from
28
+ * unrelated sources.
29
+ *
30
+ * A blueprint depends on the component libraries it is built from — the default blueprint is written
31
+ * against PrimeReact and Cratis Components, and says so. That is what makes "which blueprints can I
32
+ * use" answerable from the packages a profile already has.
33
+ */
34
+ Blueprint = 'Blueprint',
35
+ }
@@ -0,0 +1,90 @@
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 { PackageDependency } from './PackageDependency';
5
+ import { PackageKind } from './PackageKind';
6
+
7
+ /**
8
+ * What a {@link UiProfile}'s `packages` entry actually names. A profile lists packages by name only;
9
+ * this is the declaration behind the name - what it contributes, and what else has to be active for it
10
+ * to work.
11
+ */
12
+ export interface ScenePackage {
13
+ /**
14
+ * The name a {@link UiProfile} lists, and the name a {@link PackageDependency} refers to.
15
+ */
16
+ name: string;
17
+
18
+ /**
19
+ * The package's own version, so a {@link PackageDependency.versionRange} has something to check against.
20
+ */
21
+ version: string;
22
+
23
+ /**
24
+ * What the package contributes.
25
+ */
26
+ kind: PackageKind;
27
+
28
+ /**
29
+ * Other packages that must be active in the same profile for this one to work.
30
+ */
31
+ dependencies: PackageDependency[];
32
+
33
+ /**
34
+ * The component names this package declares - the catalog entry {@link UiProfile} resolution walks.
35
+ */
36
+ components: string[];
37
+
38
+ /**
39
+ * The names of the {@link Layout}s this package provides — an application's base navigational shells.
40
+ * Empty for anything that is not a {@link PackageKind.Blueprint}.
41
+ */
42
+ layouts: string[];
43
+
44
+ /**
45
+ * The names of the {@link ScreenTemplate}s this package provides — the shapes that go inside a layout,
46
+ * at module, feature and slice level.
47
+ */
48
+ screenTemplates: string[];
49
+
50
+ /**
51
+ * The names of the {@link DialogTemplate}s this package provides.
52
+ */
53
+ dialogTemplates: string[];
54
+
55
+ /**
56
+ * The names of the {@link Theme}s this package ships, empty for a package that ships none.
57
+ */
58
+ themes: string[];
59
+
60
+ /**
61
+ * A human-readable name for a package picker, falling back to `name` when absent.
62
+ */
63
+ displayName?: string;
64
+
65
+ /**
66
+ * A one-line description for a package picker.
67
+ */
68
+ description?: string;
69
+
70
+ /**
71
+ * The module that implements the package - an npm package name for a web renderer. Design-time
72
+ * tooling needs it to know what to import; the model itself never loads anything.
73
+ */
74
+ module?: string;
75
+ }
76
+
77
+ export const ScenePackagePropertyNames: (keyof ScenePackage)[] = [
78
+ 'name',
79
+ 'version',
80
+ 'kind',
81
+ 'dependencies',
82
+ 'components',
83
+ 'layouts',
84
+ 'screenTemplates',
85
+ 'dialogTemplates',
86
+ 'themes',
87
+ 'displayName',
88
+ 'description',
89
+ 'module',
90
+ ];
@@ -0,0 +1,6 @@
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 './PackageKind';
5
+ export * from './PackageDependency';
6
+ export * from './ScenePackage';