@cratis/scene.engine 4.2.0 → 4.3.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 (310) hide show
  1. package/dist/cjs/editing/DescriptorCatalog.js +42 -0
  2. package/dist/cjs/editing/DescriptorCatalog.js.map +1 -0
  3. package/dist/cjs/editing/EditSession.js +44 -0
  4. package/dist/cjs/editing/EditSession.js.map +1 -0
  5. package/dist/cjs/editing/applyEdit.js +83 -0
  6. package/dist/cjs/editing/applyEdit.js.map +1 -0
  7. package/dist/cjs/editing/applyEffectiveConfiguration.js +62 -0
  8. package/dist/cjs/editing/applyEffectiveConfiguration.js.map +1 -0
  9. package/dist/cjs/editing/collectComponents.js +34 -0
  10. package/dist/cjs/editing/collectComponents.js.map +1 -0
  11. package/dist/cjs/editing/describeNode.js +63 -0
  12. package/dist/cjs/editing/describeNode.js.map +1 -0
  13. package/dist/cjs/editing/diagnostics.js +36 -0
  14. package/dist/cjs/editing/diagnostics.js.map +1 -0
  15. package/dist/cjs/editing/documentPaths.js +45 -0
  16. package/dist/cjs/editing/documentPaths.js.map +1 -0
  17. package/dist/cjs/editing/exposureEdits.js +106 -0
  18. package/dist/cjs/editing/exposureEdits.js.map +1 -0
  19. package/dist/cjs/editing/exposureGrants.js +115 -0
  20. package/dist/cjs/editing/exposureGrants.js.map +1 -0
  21. package/dist/cjs/editing/indexDocument.js +400 -0
  22. package/dist/cjs/editing/indexDocument.js.map +1 -0
  23. package/dist/cjs/editing/inspect.js +127 -0
  24. package/dist/cjs/editing/inspect.js.map +1 -0
  25. package/dist/cjs/editing/instanceEdits.js +255 -0
  26. package/dist/cjs/editing/instanceEdits.js.map +1 -0
  27. package/dist/cjs/editing/layoutTypeDescriptors.js +425 -0
  28. package/dist/cjs/editing/layoutTypeDescriptors.js.map +1 -0
  29. package/dist/cjs/editing/layoutTypeEdits.js +141 -0
  30. package/dist/cjs/editing/layoutTypeEdits.js.map +1 -0
  31. package/dist/cjs/editing/nodeIds.js +115 -0
  32. package/dist/cjs/editing/nodeIds.js.map +1 -0
  33. package/dist/cjs/editing/pathAccess.js +53 -0
  34. package/dist/cjs/editing/pathAccess.js.map +1 -0
  35. package/dist/cjs/editing/propertyEdits.js +118 -0
  36. package/dist/cjs/editing/propertyEdits.js.map +1 -0
  37. package/dist/cjs/editing/resolveEffectiveConfiguration.js +200 -0
  38. package/dist/cjs/editing/resolveEffectiveConfiguration.js.map +1 -0
  39. package/dist/cjs/editing/resolveTemplateChain.js +100 -0
  40. package/dist/cjs/editing/resolveTemplateChain.js.map +1 -0
  41. package/dist/cjs/editing/structureEdits.js +231 -0
  42. package/dist/cjs/editing/structureEdits.js.map +1 -0
  43. package/dist/cjs/editing/validateBinding.js +111 -0
  44. package/dist/cjs/editing/validateBinding.js.map +1 -0
  45. package/dist/cjs/editing/validateValue.js +114 -0
  46. package/dist/cjs/editing/validateValue.js.map +1 -0
  47. package/dist/cjs/index.js +51 -0
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/esm/editing/DescriptorCatalog.d.ts +9 -0
  50. package/dist/esm/editing/DescriptorCatalog.d.ts.map +1 -0
  51. package/dist/esm/editing/DescriptorCatalog.js +38 -0
  52. package/dist/esm/editing/DescriptorCatalog.js.map +1 -0
  53. package/dist/esm/editing/DocumentIndex.d.ts +31 -0
  54. package/dist/esm/editing/DocumentIndex.d.ts.map +1 -0
  55. package/dist/esm/editing/DocumentIndex.js +2 -0
  56. package/dist/esm/editing/DocumentIndex.js.map +1 -0
  57. package/dist/esm/editing/EditOutcome.d.ts +7 -0
  58. package/dist/esm/editing/EditOutcome.d.ts.map +1 -0
  59. package/dist/esm/editing/EditOutcome.js +2 -0
  60. package/dist/esm/editing/EditOutcome.js.map +1 -0
  61. package/dist/esm/editing/EditSession.d.ts +20 -0
  62. package/dist/esm/editing/EditSession.d.ts.map +1 -0
  63. package/dist/esm/editing/EditSession.js +42 -0
  64. package/dist/esm/editing/EditSession.js.map +1 -0
  65. package/dist/esm/editing/EditingContext.d.ts +8 -0
  66. package/dist/esm/editing/EditingContext.d.ts.map +1 -0
  67. package/dist/esm/editing/EditingContext.js +2 -0
  68. package/dist/esm/editing/EditingContext.js.map +1 -0
  69. package/dist/esm/editing/TemplateChain.d.ts +13 -0
  70. package/dist/esm/editing/TemplateChain.d.ts.map +1 -0
  71. package/dist/esm/editing/TemplateChain.js +2 -0
  72. package/dist/esm/editing/TemplateChain.js.map +1 -0
  73. package/dist/esm/editing/applyEdit.d.ts +5 -0
  74. package/dist/esm/editing/applyEdit.d.ts.map +1 -0
  75. package/dist/esm/editing/applyEdit.js +81 -0
  76. package/dist/esm/editing/applyEdit.js.map +1 -0
  77. package/dist/esm/editing/applyEffectiveConfiguration.d.ts +3 -0
  78. package/dist/esm/editing/applyEffectiveConfiguration.d.ts.map +1 -0
  79. package/dist/esm/editing/applyEffectiveConfiguration.js +60 -0
  80. package/dist/esm/editing/applyEffectiveConfiguration.js.map +1 -0
  81. package/dist/esm/editing/collectComponents.d.ts +3 -0
  82. package/dist/esm/editing/collectComponents.d.ts.map +1 -0
  83. package/dist/esm/editing/collectComponents.js +32 -0
  84. package/dist/esm/editing/collectComponents.js.map +1 -0
  85. package/dist/esm/editing/describeNode.d.ts +11 -0
  86. package/dist/esm/editing/describeNode.d.ts.map +1 -0
  87. package/dist/esm/editing/describeNode.js +60 -0
  88. package/dist/esm/editing/describeNode.js.map +1 -0
  89. package/dist/esm/editing/diagnostics.d.ts +6 -0
  90. package/dist/esm/editing/diagnostics.d.ts.map +1 -0
  91. package/dist/esm/editing/diagnostics.js +32 -0
  92. package/dist/esm/editing/diagnostics.js.map +1 -0
  93. package/dist/esm/editing/documentPaths.d.ts +8 -0
  94. package/dist/esm/editing/documentPaths.d.ts.map +1 -0
  95. package/dist/esm/editing/documentPaths.js +41 -0
  96. package/dist/esm/editing/documentPaths.js.map +1 -0
  97. package/dist/esm/editing/exposureEdits.d.ts +5 -0
  98. package/dist/esm/editing/exposureEdits.d.ts.map +1 -0
  99. package/dist/esm/editing/exposureEdits.js +103 -0
  100. package/dist/esm/editing/exposureEdits.js.map +1 -0
  101. package/dist/esm/editing/exposureGrants.d.ts +21 -0
  102. package/dist/esm/editing/exposureGrants.d.ts.map +1 -0
  103. package/dist/esm/editing/exposureGrants.js +112 -0
  104. package/dist/esm/editing/exposureGrants.js.map +1 -0
  105. package/dist/esm/editing/given/a_layout_document.d.ts +14 -0
  106. package/dist/esm/editing/given/a_layout_document.d.ts.map +1 -0
  107. package/dist/esm/editing/given/a_layout_document.js +67 -0
  108. package/dist/esm/editing/given/a_layout_document.js.map +1 -0
  109. package/dist/esm/editing/given/a_scene_document.d.ts +20 -0
  110. package/dist/esm/editing/given/a_scene_document.d.ts.map +1 -0
  111. package/dist/esm/editing/given/a_scene_document.js +110 -0
  112. package/dist/esm/editing/given/a_scene_document.js.map +1 -0
  113. package/dist/esm/editing/index.d.ts +19 -0
  114. package/dist/esm/editing/index.d.ts.map +1 -0
  115. package/dist/esm/editing/index.js +19 -0
  116. package/dist/esm/editing/index.js.map +1 -0
  117. package/dist/esm/editing/indexDocument.d.ts +6 -0
  118. package/dist/esm/editing/indexDocument.d.ts.map +1 -0
  119. package/dist/esm/editing/indexDocument.js +396 -0
  120. package/dist/esm/editing/indexDocument.js.map +1 -0
  121. package/dist/esm/editing/inspect.d.ts +8 -0
  122. package/dist/esm/editing/inspect.d.ts.map +1 -0
  123. package/dist/esm/editing/inspect.js +124 -0
  124. package/dist/esm/editing/inspect.js.map +1 -0
  125. package/dist/esm/editing/instanceEdits.d.ts +9 -0
  126. package/dist/esm/editing/instanceEdits.d.ts.map +1 -0
  127. package/dist/esm/editing/instanceEdits.js +248 -0
  128. package/dist/esm/editing/instanceEdits.js.map +1 -0
  129. package/dist/esm/editing/layoutTypeDescriptors.d.ts +5 -0
  130. package/dist/esm/editing/layoutTypeDescriptors.d.ts.map +1 -0
  131. package/dist/esm/editing/layoutTypeDescriptors.js +421 -0
  132. package/dist/esm/editing/layoutTypeDescriptors.js.map +1 -0
  133. package/dist/esm/editing/layoutTypeEdits.d.ts +4 -0
  134. package/dist/esm/editing/layoutTypeEdits.d.ts.map +1 -0
  135. package/dist/esm/editing/layoutTypeEdits.js +139 -0
  136. package/dist/esm/editing/layoutTypeEdits.js.map +1 -0
  137. package/dist/esm/editing/nodeIds.d.ts +14 -0
  138. package/dist/esm/editing/nodeIds.d.ts.map +1 -0
  139. package/dist/esm/editing/nodeIds.js +102 -0
  140. package/dist/esm/editing/nodeIds.js.map +1 -0
  141. package/dist/esm/editing/pathAccess.d.ts +7 -0
  142. package/dist/esm/editing/pathAccess.d.ts.map +1 -0
  143. package/dist/esm/editing/pathAccess.js +48 -0
  144. package/dist/esm/editing/pathAccess.js.map +1 -0
  145. package/dist/esm/editing/propertyEdits.d.ts +15 -0
  146. package/dist/esm/editing/propertyEdits.d.ts.map +1 -0
  147. package/dist/esm/editing/propertyEdits.js +113 -0
  148. package/dist/esm/editing/propertyEdits.js.map +1 -0
  149. package/dist/esm/editing/resolveEffectiveConfiguration.d.ts +5 -0
  150. package/dist/esm/editing/resolveEffectiveConfiguration.d.ts.map +1 -0
  151. package/dist/esm/editing/resolveEffectiveConfiguration.js +198 -0
  152. package/dist/esm/editing/resolveEffectiveConfiguration.js.map +1 -0
  153. package/dist/esm/editing/resolveTemplateChain.d.ts +4 -0
  154. package/dist/esm/editing/resolveTemplateChain.d.ts.map +1 -0
  155. package/dist/esm/editing/resolveTemplateChain.js +98 -0
  156. package/dist/esm/editing/resolveTemplateChain.js.map +1 -0
  157. package/dist/esm/editing/structureEdits.d.ts +6 -0
  158. package/dist/esm/editing/structureEdits.d.ts.map +1 -0
  159. package/dist/esm/editing/structureEdits.js +227 -0
  160. package/dist/esm/editing/structureEdits.js.map +1 -0
  161. package/dist/esm/editing/validateBinding.d.ts +7 -0
  162. package/dist/esm/editing/validateBinding.d.ts.map +1 -0
  163. package/dist/esm/editing/validateBinding.js +108 -0
  164. package/dist/esm/editing/validateBinding.js.map +1 -0
  165. package/dist/esm/editing/validateValue.d.ts +8 -0
  166. package/dist/esm/editing/validateValue.d.ts.map +1 -0
  167. package/dist/esm/editing/validateValue.js +111 -0
  168. package/dist/esm/editing/validateValue.js.map +1 -0
  169. package/dist/esm/index.d.ts +1 -0
  170. package/dist/esm/index.d.ts.map +1 -1
  171. package/dist/esm/index.js +14 -0
  172. package/dist/esm/index.js.map +1 -1
  173. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  174. package/editing/DescriptorCatalog.ts +51 -0
  175. package/editing/DocumentIndex.ts +73 -0
  176. package/editing/EditOutcome.ts +21 -0
  177. package/editing/EditSession.ts +50 -0
  178. package/editing/EditingContext.ts +23 -0
  179. package/editing/TemplateChain.ts +36 -0
  180. package/editing/applyEdit.ts +69 -0
  181. package/editing/applyEffectiveConfiguration.ts +53 -0
  182. package/editing/collectComponents.ts +36 -0
  183. package/editing/describeNode.ts +61 -0
  184. package/editing/diagnostics.ts +30 -0
  185. package/editing/documentPaths.ts +40 -0
  186. package/editing/exposureEdits.ts +119 -0
  187. package/editing/exposureGrants.ts +159 -0
  188. package/editing/given/a_layout_document.ts +88 -0
  189. package/editing/given/a_scene_document.ts +135 -0
  190. package/editing/index.ts +21 -0
  191. package/editing/indexDocument.ts +237 -0
  192. package/editing/inspect.ts +142 -0
  193. package/editing/instanceEdits.ts +243 -0
  194. package/editing/layoutTypeDescriptors.ts +191 -0
  195. package/editing/layoutTypeEdits.ts +135 -0
  196. package/editing/nodeIds.ts +111 -0
  197. package/editing/pathAccess.ts +81 -0
  198. package/editing/propertyEdits.ts +119 -0
  199. package/editing/resolveEffectiveConfiguration.ts +202 -0
  200. package/editing/resolveTemplateChain.ts +109 -0
  201. package/editing/structureEdits.ts +234 -0
  202. package/editing/validateBinding.ts +103 -0
  203. package/editing/validateValue.ts +130 -0
  204. package/index.ts +1 -0
  205. package/package.json +5 -4
  206. package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.d.ts +0 -2
  207. package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.d.ts.map +0 -1
  208. package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.js +0 -23
  209. package/dist/esm/for_aggregateContributions/when_aggregating_by_contribution_point.js.map +0 -1
  210. package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
  211. package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
  212. package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.js +0 -16
  213. package/dist/esm/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
  214. package/dist/esm/for_computeSizeClass/when_computing_the_size_class.d.ts +0 -2
  215. package/dist/esm/for_computeSizeClass/when_computing_the_size_class.d.ts.map +0 -1
  216. package/dist/esm/for_computeSizeClass/when_computing_the_size_class.js +0 -17
  217. package/dist/esm/for_computeSizeClass/when_computing_the_size_class.js.map +0 -1
  218. package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
  219. package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
  220. package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -43
  221. package/dist/esm/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
  222. package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
  223. package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
  224. package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -46
  225. package/dist/esm/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
  226. package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts +0 -2
  227. package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.d.ts.map +0 -1
  228. package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.js +0 -25
  229. package/dist/esm/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.js.map +0 -1
  230. package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
  231. package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
  232. package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.js +0 -17
  233. package/dist/esm/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
  234. package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.d.ts +0 -2
  235. package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.d.ts.map +0 -1
  236. package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.js +0 -22
  237. package/dist/esm/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.js.map +0 -1
  238. package/dist/esm/for_packageDependencies/fixtures.d.ts +0 -38
  239. package/dist/esm/for_packageDependencies/fixtures.d.ts.map +0 -1
  240. package/dist/esm/for_packageDependencies/fixtures.js +0 -5
  241. package/dist/esm/for_packageDependencies/fixtures.js.map +0 -1
  242. package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
  243. package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
  244. package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.js +0 -29
  245. package/dist/esm/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
  246. package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
  247. package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
  248. package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.js +0 -10
  249. package/dist/esm/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
  250. package/dist/esm/for_panelKind/when_telling_the_panels_apart.d.ts +0 -2
  251. package/dist/esm/for_panelKind/when_telling_the_panels_apart.d.ts.map +0 -1
  252. package/dist/esm/for_panelKind/when_telling_the_panels_apart.js +0 -38
  253. package/dist/esm/for_panelKind/when_telling_the_panels_apart.js.map +0 -1
  254. package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.d.ts +0 -2
  255. package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.d.ts.map +0 -1
  256. package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.js +0 -46
  257. package/dist/esm/for_renderElement/when_rendering_a_mixed_tree.js.map +0 -1
  258. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts +0 -2
  259. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.d.ts.map +0 -1
  260. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js +0 -68
  261. package/dist/esm/for_resolveBehaviors/when_resolving_additive_attachments.js.map +0 -1
  262. package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
  263. package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
  264. package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.js +0 -20
  265. package/dist/esm/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
  266. package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.d.ts +0 -2
  267. package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.d.ts.map +0 -1
  268. package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.js +0 -30
  269. package/dist/esm/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.js.map +0 -1
  270. package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.d.ts +0 -2
  271. package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.d.ts.map +0 -1
  272. package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.js +0 -69
  273. package/dist/esm/for_resolveStrings/when_resolving_a_strings_reference.js.map +0 -1
  274. package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts +0 -21
  275. package/dist/esm/for_runActions/given/a_recording_dispatcher.d.ts.map +0 -1
  276. package/dist/esm/for_runActions/given/a_recording_dispatcher.js +0 -45
  277. package/dist/esm/for_runActions/given/a_recording_dispatcher.js.map +0 -1
  278. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts +0 -2
  279. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.d.ts.map +0 -1
  280. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js +0 -126
  281. package/dist/esm/for_runActions/when_running_a_sequence_of_actions.js.map +0 -1
  282. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts +0 -2
  283. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.d.ts.map +0 -1
  284. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js +0 -61
  285. package/dist/esm/for_runActions/when_running_against_the_shared_fixture_corpus.js.map +0 -1
  286. package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.d.ts +0 -2
  287. package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.d.ts.map +0 -1
  288. package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.js +0 -18
  289. package/dist/esm/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.js.map +0 -1
  290. package/for_aggregateContributions/when_aggregating_by_contribution_point.ts +0 -31
  291. package/for_buildStarterProfile/when_checking_against_the_shared_fixture_corpus.ts +0 -32
  292. package/for_computeSizeClass/when_computing_the_size_class.ts +0 -23
  293. package/for_evaluateFlowArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -67
  294. package/for_evaluateFreeformArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -68
  295. package/for_evaluateFreeformSlotArrangement/when_evaluating_against_the_shared_fixture_corpus.ts +0 -47
  296. package/for_incompatibleStarterThemes/when_checking_against_the_shared_fixture_corpus.ts +0 -34
  297. package/for_packageCatalog/when_querying_against_the_shared_fixture_corpus.ts +0 -26
  298. package/for_packageDependencies/fixtures.ts +0 -44
  299. package/for_packageDependencies/when_resolving_against_the_shared_fixture_corpus.ts +0 -39
  300. package/for_packageVersionRange/when_checking_against_the_shared_fixture_corpus.ts +0 -13
  301. package/for_panelKind/when_telling_the_panels_apart.ts +0 -47
  302. package/for_renderElement/when_rendering_a_mixed_tree.ts +0 -58
  303. package/for_resolveBehaviors/when_resolving_additive_attachments.ts +0 -100
  304. package/for_resolveComponentName/when_resolving_against_the_shared_fixture_corpus.ts +0 -36
  305. package/for_resolveScreenTemplates/when_resolving_against_the_shared_fixture_corpus.ts +0 -49
  306. package/for_resolveStrings/when_resolving_a_strings_reference.ts +0 -85
  307. package/for_runActions/given/a_recording_dispatcher.ts +0 -72
  308. package/for_runActions/when_running_a_sequence_of_actions.ts +0 -226
  309. package/for_runActions/when_running_against_the_shared_fixture_corpus.ts +0 -124
  310. package/for_themeCompatibility/when_checking_against_the_shared_fixture_corpus.ts +0 -37
@@ -0,0 +1,421 @@
1
+ import { PropertyValueType, Visibility, LayoutChildPlacement, LayoutType, HorizontalAlignment, VerticalAlignment, Orientation } from '@cratis/scene.model';
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
+ function choices(enumObject) {
6
+ return Object.values(enumObject).map((value)=>({
7
+ value,
8
+ label: value
9
+ }));
10
+ }
11
+ const spacing = (path, label, group)=>({
12
+ path,
13
+ label,
14
+ group,
15
+ valueType: PropertyValueType.Number,
16
+ default: 0,
17
+ constraints: {
18
+ minimum: 0
19
+ }
20
+ });
21
+ const flowNodeProperties = [
22
+ {
23
+ path: 'grow',
24
+ label: 'Grow',
25
+ group: 'Layout',
26
+ valueType: PropertyValueType.Number,
27
+ description: 'How much of the free space in its container this node takes, relative to its siblings.',
28
+ constraints: {
29
+ minimum: 0
30
+ }
31
+ },
32
+ {
33
+ path: 'span',
34
+ label: 'Span',
35
+ group: 'Layout',
36
+ valueType: PropertyValueType.Number,
37
+ description: 'How many grid columns this node spans. Only meaningful inside a grid.',
38
+ constraints: {
39
+ minimum: 1,
40
+ integer: true
41
+ }
42
+ }
43
+ ];
44
+ const flowContainerProperties = [
45
+ spacing('gap', 'Gap', 'Layout'),
46
+ ...flowNodeProperties
47
+ ];
48
+ const panelProperties = [
49
+ {
50
+ path: 'name',
51
+ label: 'Name',
52
+ group: 'General',
53
+ valueType: PropertyValueType.String
54
+ },
55
+ {
56
+ path: 'visibility',
57
+ label: 'Visibility',
58
+ group: 'General',
59
+ valueType: PropertyValueType.Enum,
60
+ choices: choices(Visibility),
61
+ default: Visibility.Visible
62
+ },
63
+ {
64
+ path: 'isEnabled',
65
+ label: 'Enabled',
66
+ group: 'General',
67
+ valueType: PropertyValueType.Boolean,
68
+ default: true
69
+ },
70
+ {
71
+ path: 'opacity',
72
+ label: 'Opacity',
73
+ group: 'General',
74
+ valueType: PropertyValueType.Number,
75
+ default: 1,
76
+ constraints: {
77
+ minimum: 0,
78
+ maximum: 1
79
+ }
80
+ },
81
+ {
82
+ path: 'horizontalAlignment',
83
+ label: 'Horizontal alignment',
84
+ group: 'Layout',
85
+ valueType: PropertyValueType.Enum,
86
+ choices: choices(HorizontalAlignment)
87
+ },
88
+ {
89
+ path: 'verticalAlignment',
90
+ label: 'Vertical alignment',
91
+ group: 'Layout',
92
+ valueType: PropertyValueType.Enum,
93
+ choices: choices(VerticalAlignment)
94
+ },
95
+ {
96
+ path: 'zIndex',
97
+ label: 'Stacking order',
98
+ group: 'Layout',
99
+ valueType: PropertyValueType.Number,
100
+ default: 0,
101
+ constraints: {
102
+ integer: true
103
+ }
104
+ }
105
+ ];
106
+ const orientation = {
107
+ path: 'orientation',
108
+ label: 'Orientation',
109
+ group: 'Layout',
110
+ valueType: PropertyValueType.Enum,
111
+ choices: choices(Orientation)
112
+ };
113
+ const panelChildren = {
114
+ acceptsChildren: true,
115
+ childPlacement: LayoutChildPlacement.Ordered,
116
+ supportsSizeClassVariants: false
117
+ };
118
+ /**
119
+ * The layout type -> capability matrix, as data. Every {@link LayoutType} has exactly one entry; the
120
+ * documentation's matrix is this table.
121
+ */ const layoutTypeDescriptors = [
122
+ {
123
+ type: LayoutType.FlowRow,
124
+ label: 'Row',
125
+ description: 'Reflows its children horizontally.',
126
+ capabilities: {
127
+ acceptsChildren: true,
128
+ childPlacement: LayoutChildPlacement.Ordered,
129
+ supportsGridSpan: false,
130
+ supportsSizeClassVariants: true,
131
+ convertibleTo: [
132
+ LayoutType.FlowColumn,
133
+ LayoutType.FlowGrid
134
+ ]
135
+ },
136
+ properties: flowContainerProperties
137
+ },
138
+ {
139
+ type: LayoutType.FlowColumn,
140
+ label: 'Column',
141
+ description: 'Reflows its children vertically.',
142
+ capabilities: {
143
+ acceptsChildren: true,
144
+ childPlacement: LayoutChildPlacement.Ordered,
145
+ supportsGridSpan: false,
146
+ supportsSizeClassVariants: true,
147
+ convertibleTo: [
148
+ LayoutType.FlowRow,
149
+ LayoutType.FlowGrid
150
+ ]
151
+ },
152
+ properties: flowContainerProperties
153
+ },
154
+ {
155
+ type: LayoutType.FlowGrid,
156
+ label: 'Grid',
157
+ description: 'Arranges its children in a grid; children can span columns.',
158
+ capabilities: {
159
+ acceptsChildren: true,
160
+ childPlacement: LayoutChildPlacement.Ordered,
161
+ supportsGridSpan: true,
162
+ supportsSizeClassVariants: true,
163
+ convertibleTo: [
164
+ LayoutType.FlowRow,
165
+ LayoutType.FlowColumn
166
+ ]
167
+ },
168
+ properties: [
169
+ ...flowContainerProperties,
170
+ {
171
+ path: 'columns',
172
+ label: 'Columns',
173
+ group: 'Layout',
174
+ valueType: PropertyValueType.Number,
175
+ constraints: {
176
+ minimum: 1,
177
+ integer: true
178
+ }
179
+ },
180
+ {
181
+ path: 'rows',
182
+ label: 'Rows',
183
+ group: 'Layout',
184
+ valueType: PropertyValueType.Number,
185
+ constraints: {
186
+ minimum: 1,
187
+ integer: true
188
+ }
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ type: LayoutType.FlowLeaf,
194
+ label: 'Content',
195
+ description: 'Positions one element within a flow.',
196
+ capabilities: {
197
+ acceptsChildren: false,
198
+ maximumChildren: 1,
199
+ childPlacement: LayoutChildPlacement.None,
200
+ supportsGridSpan: true,
201
+ supportsSizeClassVariants: false,
202
+ convertibleTo: []
203
+ },
204
+ properties: flowNodeProperties
205
+ },
206
+ {
207
+ type: LayoutType.FlowSlotLeaf,
208
+ label: 'Slot',
209
+ description: 'Positions one of the layout\'s own named slots within its arrangement.',
210
+ capabilities: {
211
+ acceptsChildren: false,
212
+ childPlacement: LayoutChildPlacement.None,
213
+ supportsGridSpan: true,
214
+ supportsSizeClassVariants: false,
215
+ convertibleTo: []
216
+ },
217
+ properties: [
218
+ {
219
+ path: 'slotName',
220
+ label: 'Slot',
221
+ group: 'Layout',
222
+ valueType: PropertyValueType.String,
223
+ constraints: {
224
+ required: true
225
+ }
226
+ },
227
+ ...flowNodeProperties
228
+ ]
229
+ },
230
+ {
231
+ type: LayoutType.Freeform,
232
+ label: 'Freeform',
233
+ description: 'Places each child at its own position and size, one variant per size class.',
234
+ capabilities: {
235
+ acceptsChildren: true,
236
+ childPlacement: LayoutChildPlacement.Positioned,
237
+ supportsGridSpan: false,
238
+ supportsSizeClassVariants: true,
239
+ convertibleTo: []
240
+ },
241
+ properties: []
242
+ },
243
+ {
244
+ type: LayoutType.StackPanel,
245
+ label: 'Stack panel',
246
+ description: 'Stacks its children in one direction with a fixed spacing.',
247
+ capabilities: {
248
+ ...panelChildren,
249
+ supportsGridSpan: false,
250
+ convertibleTo: [
251
+ LayoutType.WrapPanel,
252
+ LayoutType.DockPanel
253
+ ]
254
+ },
255
+ properties: [
256
+ ...panelProperties,
257
+ orientation,
258
+ spacing('spacing', 'Spacing', 'Layout')
259
+ ]
260
+ },
261
+ {
262
+ type: LayoutType.WrapPanel,
263
+ label: 'Wrap panel',
264
+ description: 'Lays children out along a line and wraps to the next when it is full.',
265
+ capabilities: {
266
+ ...panelChildren,
267
+ supportsGridSpan: false,
268
+ convertibleTo: [
269
+ LayoutType.StackPanel,
270
+ LayoutType.DockPanel
271
+ ]
272
+ },
273
+ properties: [
274
+ ...panelProperties,
275
+ orientation,
276
+ {
277
+ path: 'itemWidth',
278
+ label: 'Item width',
279
+ group: 'Layout',
280
+ valueType: PropertyValueType.Number,
281
+ constraints: {
282
+ minimum: 0
283
+ }
284
+ },
285
+ {
286
+ path: 'itemHeight',
287
+ label: 'Item height',
288
+ group: 'Layout',
289
+ valueType: PropertyValueType.Number,
290
+ constraints: {
291
+ minimum: 0
292
+ }
293
+ }
294
+ ]
295
+ },
296
+ {
297
+ type: LayoutType.DockPanel,
298
+ label: 'Dock panel',
299
+ description: 'Docks each child against an edge; the last child can fill what remains.',
300
+ capabilities: {
301
+ ...panelChildren,
302
+ supportsGridSpan: false,
303
+ convertibleTo: [
304
+ LayoutType.StackPanel,
305
+ LayoutType.WrapPanel
306
+ ]
307
+ },
308
+ properties: [
309
+ ...panelProperties,
310
+ {
311
+ path: 'lastChildFill',
312
+ label: 'Last child fills',
313
+ group: 'Layout',
314
+ valueType: PropertyValueType.Boolean,
315
+ default: true
316
+ }
317
+ ]
318
+ },
319
+ {
320
+ type: LayoutType.GridPanel,
321
+ label: 'Grid panel',
322
+ description: 'Positions children in rows and columns defined by the panel.',
323
+ capabilities: {
324
+ ...panelChildren,
325
+ supportsGridSpan: true,
326
+ convertibleTo: []
327
+ },
328
+ properties: [
329
+ ...panelProperties,
330
+ {
331
+ path: 'rows',
332
+ label: 'Rows',
333
+ group: 'Layout',
334
+ valueType: PropertyValueType.Object,
335
+ editorKind: 'gridDefinitions'
336
+ },
337
+ {
338
+ path: 'columns',
339
+ label: 'Columns',
340
+ group: 'Layout',
341
+ valueType: PropertyValueType.Object,
342
+ editorKind: 'gridDefinitions'
343
+ }
344
+ ]
345
+ },
346
+ {
347
+ type: LayoutType.Canvas,
348
+ label: 'Canvas',
349
+ description: 'Places each child at an absolute position.',
350
+ capabilities: {
351
+ acceptsChildren: true,
352
+ childPlacement: LayoutChildPlacement.Positioned,
353
+ supportsGridSpan: false,
354
+ supportsSizeClassVariants: false,
355
+ convertibleTo: []
356
+ },
357
+ properties: [
358
+ ...panelProperties,
359
+ {
360
+ path: 'extent',
361
+ label: 'Extent',
362
+ group: 'Layout',
363
+ valueType: PropertyValueType.Object,
364
+ editorKind: 'size'
365
+ }
366
+ ]
367
+ }
368
+ ];
369
+ /**
370
+ * The editable properties of a placement within a freeform variant - an element's or a slot's position and size.
371
+ */ const placementProperties = [
372
+ {
373
+ path: 'x',
374
+ label: 'Left',
375
+ group: 'Placement',
376
+ valueType: PropertyValueType.Number
377
+ },
378
+ {
379
+ path: 'y',
380
+ label: 'Top',
381
+ group: 'Placement',
382
+ valueType: PropertyValueType.Number
383
+ },
384
+ {
385
+ path: 'width',
386
+ label: 'Width',
387
+ group: 'Placement',
388
+ valueType: PropertyValueType.Number,
389
+ constraints: {
390
+ minimum: 0
391
+ }
392
+ },
393
+ {
394
+ path: 'height',
395
+ label: 'Height',
396
+ group: 'Placement',
397
+ valueType: PropertyValueType.Number,
398
+ constraints: {
399
+ minimum: 0
400
+ }
401
+ }
402
+ ];
403
+ /**
404
+ * The editable properties of a screen template or dialog template itself.
405
+ */ const templateProperties = [
406
+ {
407
+ path: 'displayName',
408
+ label: 'Display name',
409
+ group: 'General',
410
+ valueType: PropertyValueType.String
411
+ },
412
+ {
413
+ path: 'description',
414
+ label: 'Description',
415
+ group: 'General',
416
+ valueType: PropertyValueType.String
417
+ }
418
+ ];
419
+
420
+ export { layoutTypeDescriptors, placementProperties, templateProperties };
421
+ //# sourceMappingURL=layoutTypeDescriptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutTypeDescriptors.js","sources":["../../../editing/layoutTypeDescriptors.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\nimport {\n HorizontalAlignment, LayoutChildPlacement, LayoutType, LayoutTypeDescriptor, Orientation, PropertyChoice,\n PropertyDescriptor, PropertyValueType, VerticalAlignment, Visibility,\n} from '@cratis/scene.model';\n\nfunction choices(enumObject: Record<string, string>): PropertyChoice[] {\n return Object.values(enumObject).map(value => ({ value, label: value }));\n}\n\nconst spacing = (path: string, label: string, group: string): PropertyDescriptor => ({\n path, label, group, valueType: PropertyValueType.Number, default: 0, constraints: { minimum: 0 },\n});\n\nconst flowNodeProperties: PropertyDescriptor[] = [\n {\n path: 'grow', label: 'Grow', group: 'Layout', valueType: PropertyValueType.Number,\n description: 'How much of the free space in its container this node takes, relative to its siblings.',\n constraints: { minimum: 0 },\n },\n {\n path: 'span', label: 'Span', group: 'Layout', valueType: PropertyValueType.Number,\n description: 'How many grid columns this node spans. Only meaningful inside a grid.',\n constraints: { minimum: 1, integer: true },\n },\n];\n\nconst flowContainerProperties: PropertyDescriptor[] = [spacing('gap', 'Gap', 'Layout'), ...flowNodeProperties];\n\nconst panelProperties: PropertyDescriptor[] = [\n { path: 'name', label: 'Name', group: 'General', valueType: PropertyValueType.String },\n { path: 'visibility', label: 'Visibility', group: 'General', valueType: PropertyValueType.Enum, choices: choices(Visibility), default: Visibility.Visible },\n { path: 'isEnabled', label: 'Enabled', group: 'General', valueType: PropertyValueType.Boolean, default: true },\n { path: 'opacity', label: 'Opacity', group: 'General', valueType: PropertyValueType.Number, default: 1, constraints: { minimum: 0, maximum: 1 } },\n { path: 'horizontalAlignment', label: 'Horizontal alignment', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(HorizontalAlignment) },\n { path: 'verticalAlignment', label: 'Vertical alignment', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(VerticalAlignment) },\n { path: 'zIndex', label: 'Stacking order', group: 'Layout', valueType: PropertyValueType.Number, default: 0, constraints: { integer: true } },\n];\n\nconst orientation: PropertyDescriptor = {\n path: 'orientation', label: 'Orientation', group: 'Layout', valueType: PropertyValueType.Enum, choices: choices(Orientation),\n};\n\nconst panelChildren = { acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsSizeClassVariants: false };\n\n/**\n * The layout type -> capability matrix, as data. Every {@link LayoutType} has exactly one entry; the\n * documentation's matrix is this table.\n */\nexport const layoutTypeDescriptors: LayoutTypeDescriptor[] = [\n {\n type: LayoutType.FlowRow,\n label: 'Row',\n description: 'Reflows its children horizontally.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowColumn, LayoutType.FlowGrid],\n },\n properties: flowContainerProperties,\n },\n {\n type: LayoutType.FlowColumn,\n label: 'Column',\n description: 'Reflows its children vertically.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowRow, LayoutType.FlowGrid],\n },\n properties: flowContainerProperties,\n },\n {\n type: LayoutType.FlowGrid,\n label: 'Grid',\n description: 'Arranges its children in a grid; children can span columns.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Ordered, supportsGridSpan: true,\n supportsSizeClassVariants: true, convertibleTo: [LayoutType.FlowRow, LayoutType.FlowColumn],\n },\n properties: [\n ...flowContainerProperties,\n { path: 'columns', label: 'Columns', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 1, integer: true } },\n { path: 'rows', label: 'Rows', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 1, integer: true } },\n ],\n },\n {\n type: LayoutType.FlowLeaf,\n label: 'Content',\n description: 'Positions one element within a flow.',\n capabilities: {\n acceptsChildren: false, maximumChildren: 1, childPlacement: LayoutChildPlacement.None, supportsGridSpan: true,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: flowNodeProperties,\n },\n {\n type: LayoutType.FlowSlotLeaf,\n label: 'Slot',\n description: 'Positions one of the layout\\'s own named slots within its arrangement.',\n capabilities: {\n acceptsChildren: false, childPlacement: LayoutChildPlacement.None, supportsGridSpan: true,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: [\n { path: 'slotName', label: 'Slot', group: 'Layout', valueType: PropertyValueType.String, constraints: { required: true } },\n ...flowNodeProperties,\n ],\n },\n {\n type: LayoutType.Freeform,\n label: 'Freeform',\n description: 'Places each child at its own position and size, one variant per size class.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Positioned, supportsGridSpan: false,\n supportsSizeClassVariants: true, convertibleTo: [],\n },\n properties: [],\n },\n {\n type: LayoutType.StackPanel,\n label: 'Stack panel',\n description: 'Stacks its children in one direction with a fixed spacing.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.WrapPanel, LayoutType.DockPanel] },\n properties: [...panelProperties, orientation, spacing('spacing', 'Spacing', 'Layout')],\n },\n {\n type: LayoutType.WrapPanel,\n label: 'Wrap panel',\n description: 'Lays children out along a line and wraps to the next when it is full.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.StackPanel, LayoutType.DockPanel] },\n properties: [\n ...panelProperties,\n orientation,\n { path: 'itemWidth', label: 'Item width', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n { path: 'itemHeight', label: 'Item height', group: 'Layout', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n ],\n },\n {\n type: LayoutType.DockPanel,\n label: 'Dock panel',\n description: 'Docks each child against an edge; the last child can fill what remains.',\n capabilities: { ...panelChildren, supportsGridSpan: false, convertibleTo: [LayoutType.StackPanel, LayoutType.WrapPanel] },\n properties: [\n ...panelProperties,\n { path: 'lastChildFill', label: 'Last child fills', group: 'Layout', valueType: PropertyValueType.Boolean, default: true },\n ],\n },\n {\n type: LayoutType.GridPanel,\n label: 'Grid panel',\n description: 'Positions children in rows and columns defined by the panel.',\n capabilities: { ...panelChildren, supportsGridSpan: true, convertibleTo: [] },\n properties: [\n ...panelProperties,\n { path: 'rows', label: 'Rows', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'gridDefinitions' },\n { path: 'columns', label: 'Columns', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'gridDefinitions' },\n ],\n },\n {\n type: LayoutType.Canvas,\n label: 'Canvas',\n description: 'Places each child at an absolute position.',\n capabilities: {\n acceptsChildren: true, childPlacement: LayoutChildPlacement.Positioned, supportsGridSpan: false,\n supportsSizeClassVariants: false, convertibleTo: [],\n },\n properties: [\n ...panelProperties,\n { path: 'extent', label: 'Extent', group: 'Layout', valueType: PropertyValueType.Object, editorKind: 'size' },\n ],\n },\n];\n\n/**\n * The editable properties of a placement within a freeform variant - an element's or a slot's position and size.\n */\nexport const placementProperties: PropertyDescriptor[] = [\n { path: 'x', label: 'Left', group: 'Placement', valueType: PropertyValueType.Number },\n { path: 'y', label: 'Top', group: 'Placement', valueType: PropertyValueType.Number },\n { path: 'width', label: 'Width', group: 'Placement', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n { path: 'height', label: 'Height', group: 'Placement', valueType: PropertyValueType.Number, constraints: { minimum: 0 } },\n];\n\n/**\n * The editable properties of a screen template or dialog template itself.\n */\nexport const templateProperties: PropertyDescriptor[] = [\n { path: 'displayName', label: 'Display name', group: 'General', valueType: PropertyValueType.String },\n { path: 'description', label: 'Description', group: 'General', valueType: PropertyValueType.String },\n];\n"],"names":["choices","enumObject","Object","values","map","value","label","spacing","path","group","valueType","PropertyValueType","Number","default","constraints","minimum","flowNodeProperties","description","integer","flowContainerProperties","panelProperties","String","Enum","Visibility","Visible","Boolean","maximum","HorizontalAlignment","VerticalAlignment","orientation","Orientation","panelChildren","acceptsChildren","childPlacement","LayoutChildPlacement","Ordered","supportsSizeClassVariants","layoutTypeDescriptors","type","LayoutType","FlowRow","capabilities","supportsGridSpan","convertibleTo","FlowColumn","FlowGrid","properties","FlowLeaf","maximumChildren","None","FlowSlotLeaf","required","Freeform","Positioned","StackPanel","WrapPanel","DockPanel","GridPanel","editorKind","Canvas","placementProperties","templateProperties"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ChangeLayoutTypeEdit, SceneDiagnostic, SceneDocument } from '@cratis/scene.model';
2
+ import { EditSession } from './EditSession';
3
+ export declare function applyChangeLayoutType(session: EditSession, edit: ChangeLayoutTypeEdit, clone: SceneDocument, diagnostics: SceneDiagnostic[]): void;
4
+ //# sourceMappingURL=layoutTypeEdits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutTypeEdits.d.ts","sourceRoot":"","sources":["../../../editing/layoutTypeEdits.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,oBAAoB,EAA8D,eAAe,EAAE,aAAa,EAEnH,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA4E5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,IAAI,CAgDlJ"}
@@ -0,0 +1,139 @@
1
+ import { LayoutType, FlowContainerKind, DiagnosticCode, SceneNodeKind, Orientation } from '@cratis/scene.model';
2
+ import { errorDiagnostic, warningDiagnostic } from './diagnostics.js';
3
+ import { findLayoutTypeDescriptor } from './DescriptorCatalog.js';
4
+ import { mirroredPaths, getAtPath } from './documentPaths.js';
5
+ import { cloneData } from './pathAccess.js';
6
+
7
+ // Copyright (c) Cratis. All rights reserved.
8
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
9
+ const flowKinds = {
10
+ [LayoutType.FlowRow]: FlowContainerKind.Row,
11
+ [LayoutType.FlowColumn]: FlowContainerKind.Column,
12
+ [LayoutType.FlowGrid]: FlowContainerKind.Grid
13
+ };
14
+ const panelOwnProperties = {
15
+ [LayoutType.StackPanel]: [
16
+ 'orientation',
17
+ 'spacing'
18
+ ],
19
+ [LayoutType.WrapPanel]: [
20
+ 'orientation',
21
+ 'itemWidth',
22
+ 'itemHeight'
23
+ ],
24
+ [LayoutType.DockPanel]: [
25
+ 'lastChildFill'
26
+ ]
27
+ };
28
+ const allPanelOwn = [
29
+ 'orientation',
30
+ 'spacing',
31
+ 'itemWidth',
32
+ 'itemHeight',
33
+ 'lastChildFill'
34
+ ];
35
+ function isSet(node, property) {
36
+ return node[property] !== undefined && !(property === 'spacing' && node[property] === 0);
37
+ }
38
+ function convertFlow(source, to) {
39
+ const result = cloneData(source);
40
+ const lost = [];
41
+ const target = flowKinds[to];
42
+ if (source.kind === FlowContainerKind.Grid && target !== FlowContainerKind.Grid) {
43
+ for (const property of [
44
+ 'columns',
45
+ 'rows'
46
+ ]){
47
+ if (source[property] !== undefined) lost.push(property);
48
+ delete result[property];
49
+ }
50
+ const spans = result.children.filter((child)=>child.span !== undefined);
51
+ if (spans.length > 0) lost.push('span (on children)');
52
+ for (const child of spans)delete child.span;
53
+ }
54
+ result.kind = target;
55
+ return {
56
+ result,
57
+ lost
58
+ };
59
+ }
60
+ function convertPanel(source, to) {
61
+ const result = cloneData(source);
62
+ const keep = panelOwnProperties[to] ?? [];
63
+ const lost = allPanelOwn.filter((property)=>!keep.includes(property) && isSet(source, property));
64
+ for (const property of allPanelOwn.filter((candidate)=>!keep.includes(candidate)))delete result[property];
65
+ if (to === LayoutType.StackPanel) {
66
+ result.orientation ??= Orientation.Vertical;
67
+ result.spacing ??= 0;
68
+ } else if (to === LayoutType.WrapPanel) {
69
+ result.orientation ??= Orientation.Horizontal;
70
+ } else {
71
+ result.lastChildFill ??= true;
72
+ }
73
+ return {
74
+ result,
75
+ lost
76
+ };
77
+ }
78
+ /**
79
+ * Applies a layout type change to a copy of the document.
80
+ *
81
+ * A change must be one the layout type allows. Changes that keep everything - row to column, a dock panel to a
82
+ * stack panel - go ahead. Changes that would drop real values, such as a grid's columns and spans when it becomes a
83
+ * row, are refused with the list of what would be lost unless the edit accepts the loss, and then go ahead with a
84
+ * warning that lists the same.
85
+ */ function applyChangeLayoutType(session, edit, clone, diagnostics) {
86
+ const record = session.index.nodes.get(edit.nodeId);
87
+ if (!record) {
88
+ diagnostics.push(errorDiagnostic(DiagnosticCode.UnknownNode, `There is no node '${edit.nodeId}'.`, {
89
+ nodeId: edit.nodeId
90
+ }));
91
+ return;
92
+ }
93
+ if (record.kind !== SceneNodeKind.FlowNode && record.kind !== SceneNodeKind.Element) {
94
+ diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, {
95
+ nodeId: edit.nodeId
96
+ }));
97
+ return;
98
+ }
99
+ if (!session.isLocal(record)) {
100
+ diagnostics.push(errorDiagnostic(DiagnosticCode.NodeNotEditable, `'${edit.nodeId}' is inherited from '${session.sourceOf(record)}' and cannot be changed here.`, {
101
+ nodeId: edit.nodeId
102
+ }));
103
+ return;
104
+ }
105
+ const descriptor = findLayoutTypeDescriptor(session.context.catalog, record.typeId);
106
+ if (!descriptor) {
107
+ diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, {
108
+ nodeId: edit.nodeId
109
+ }));
110
+ return;
111
+ }
112
+ if (!descriptor.capabilities.convertibleTo.includes(edit.to)) {
113
+ diagnostics.push(errorDiagnostic(DiagnosticCode.LayoutTypeNotConvertible, `A ${descriptor.label.toLowerCase()} cannot be changed into '${edit.to}'.`, {
114
+ nodeId: edit.nodeId
115
+ }));
116
+ return;
117
+ }
118
+ const isFlow = record.kind === SceneNodeKind.FlowNode;
119
+ const conversion = isFlow ? convertFlow(record.value, edit.to) : convertPanel(record.value, edit.to);
120
+ if (conversion.lost.length > 0) {
121
+ const lost = conversion.lost.join(', ');
122
+ if (!edit.acceptLoss) {
123
+ diagnostics.push(errorDiagnostic(DiagnosticCode.LossyConversionNotAccepted, `Changing to '${edit.to}' would drop ${lost}. Accept the loss to go ahead.`, {
124
+ nodeId: edit.nodeId
125
+ }));
126
+ return;
127
+ }
128
+ diagnostics.push(warningDiagnostic(DiagnosticCode.LossyConversion, `Changed to '${edit.to}'; dropped ${lost}.`, {
129
+ nodeId: edit.nodeId
130
+ }));
131
+ }
132
+ for (const path of mirroredPaths(record.mirror, record.path)){
133
+ const holder = getAtPath(clone, path.slice(0, -1));
134
+ holder[path[path.length - 1]] = cloneData(conversion.result);
135
+ }
136
+ }
137
+
138
+ export { applyChangeLayoutType };
139
+ //# sourceMappingURL=layoutTypeEdits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layoutTypeEdits.js","sources":["../../../editing/layoutTypeEdits.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\nimport {\n ChangeLayoutTypeEdit, DiagnosticCode, FlowContainerKind, LayoutType, Orientation, SceneDiagnostic, SceneDocument,\n SceneNodeKind,\n} from '@cratis/scene.model';\nimport { errorDiagnostic, warningDiagnostic } from './diagnostics';\nimport { findLayoutTypeDescriptor } from './DescriptorCatalog';\nimport { getAtPath, mirroredPaths } from './documentPaths';\nimport { EditSession } from './EditSession';\nimport { cloneData } from './pathAccess';\n\ntype Node = Record<string, unknown>;\n\ninterface Conversion {\n result: Node;\n\n /** Properties that held a real value and are gone after the conversion. */\n lost: string[];\n}\n\nconst flowKinds: Partial<Record<LayoutType, FlowContainerKind>> = {\n [LayoutType.FlowRow]: FlowContainerKind.Row,\n [LayoutType.FlowColumn]: FlowContainerKind.Column,\n [LayoutType.FlowGrid]: FlowContainerKind.Grid,\n};\n\nconst panelOwnProperties: Partial<Record<LayoutType, string[]>> = {\n [LayoutType.StackPanel]: ['orientation', 'spacing'],\n [LayoutType.WrapPanel]: ['orientation', 'itemWidth', 'itemHeight'],\n [LayoutType.DockPanel]: ['lastChildFill'],\n};\n\nconst allPanelOwn = ['orientation', 'spacing', 'itemWidth', 'itemHeight', 'lastChildFill'];\n\nfunction isSet(node: Node, property: string): boolean {\n return node[property] !== undefined && !(property === 'spacing' && node[property] === 0);\n}\n\nfunction convertFlow(source: Node, to: LayoutType): Conversion {\n const result = cloneData(source);\n const lost: string[] = [];\n const target = flowKinds[to]!;\n\n if (source.kind === FlowContainerKind.Grid && target !== FlowContainerKind.Grid) {\n for (const property of ['columns', 'rows']) {\n if (source[property] !== undefined) lost.push(property);\n delete result[property];\n }\n\n const spans = (result.children as Node[]).filter(child => child.span !== undefined);\n if (spans.length > 0) lost.push('span (on children)');\n for (const child of spans) delete child.span;\n }\n\n result.kind = target;\n return { result, lost };\n}\n\nfunction convertPanel(source: Node, to: LayoutType): Conversion {\n const result = cloneData(source);\n const keep = panelOwnProperties[to] ?? [];\n const lost = allPanelOwn.filter(property => !keep.includes(property) && isSet(source, property));\n for (const property of allPanelOwn.filter(candidate => !keep.includes(candidate))) delete result[property];\n\n if (to === LayoutType.StackPanel) {\n result.orientation ??= Orientation.Vertical;\n result.spacing ??= 0;\n } else if (to === LayoutType.WrapPanel) {\n result.orientation ??= Orientation.Horizontal;\n } else {\n result.lastChildFill ??= true;\n }\n\n return { result, lost };\n}\n\n/**\n * Applies a layout type change to a copy of the document.\n *\n * A change must be one the layout type allows. Changes that keep everything - row to column, a dock panel to a\n * stack panel - go ahead. Changes that would drop real values, such as a grid's columns and spans when it becomes a\n * row, are refused with the list of what would be lost unless the edit accepts the loss, and then go ahead with a\n * warning that lists the same.\n */\nexport function applyChangeLayoutType(session: EditSession, edit: ChangeLayoutTypeEdit, clone: SceneDocument, diagnostics: SceneDiagnostic[]): void {\n const record = session.index.nodes.get(edit.nodeId);\n if (!record) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.UnknownNode, `There is no node '${edit.nodeId}'.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (record.kind !== SceneNodeKind.FlowNode && record.kind !== SceneNodeKind.Element) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (!session.isLocal(record)) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NodeNotEditable, `'${edit.nodeId}' is inherited from '${session.sourceOf(record)}' and cannot be changed here.`, { nodeId: edit.nodeId }));\n return;\n }\n\n const descriptor = findLayoutTypeDescriptor(session.context.catalog, record.typeId);\n if (!descriptor) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.NotALayoutNode, `'${record.label}' is not a layout node.`, { nodeId: edit.nodeId }));\n return;\n }\n\n if (!descriptor.capabilities.convertibleTo.includes(edit.to as LayoutType)) {\n diagnostics.push(errorDiagnostic(DiagnosticCode.LayoutTypeNotConvertible, `A ${descriptor.label.toLowerCase()} cannot be changed into '${edit.to}'.`, { nodeId: edit.nodeId }));\n return;\n }\n\n const isFlow = record.kind === SceneNodeKind.FlowNode;\n const conversion = isFlow ? convertFlow(record.value as Node, edit.to as LayoutType) : convertPanel(record.value as Node, edit.to as LayoutType);\n\n if (conversion.lost.length > 0) {\n const lost = conversion.lost.join(', ');\n if (!edit.acceptLoss) {\n diagnostics.push(errorDiagnostic(\n DiagnosticCode.LossyConversionNotAccepted,\n `Changing to '${edit.to}' would drop ${lost}. Accept the loss to go ahead.`,\n { nodeId: edit.nodeId }));\n return;\n }\n\n diagnostics.push(warningDiagnostic(DiagnosticCode.LossyConversion, `Changed to '${edit.to}'; dropped ${lost}.`, { nodeId: edit.nodeId }));\n }\n\n for (const path of mirroredPaths(record.mirror, record.path)) {\n const holder = getAtPath(clone, path.slice(0, -1)) as Record<string | number, unknown>;\n holder[path[path.length - 1]] = cloneData(conversion.result);\n }\n}\n"],"names":["flowKinds","LayoutType","FlowRow","FlowContainerKind","Row","FlowColumn","Column","FlowGrid","Grid","panelOwnProperties","StackPanel","WrapPanel","DockPanel","allPanelOwn","isSet","node","property","undefined","convertFlow","source","to","result","cloneData","lost","target","kind","push","spans","children","filter","child","span","length","convertPanel","keep","includes","candidate","orientation","Orientation","Vertical","spacing","Horizontal","lastChildFill","applyChangeLayoutType","session","edit","clone","diagnostics","record","index","nodes","get","nodeId","errorDiagnostic","DiagnosticCode","UnknownNode","SceneNodeKind","FlowNode","Element","NotALayoutNode","label","isLocal","NodeNotEditable","sourceOf","descriptor","findLayoutTypeDescriptor","context","catalog","typeId","capabilities","convertibleTo","LayoutTypeNotConvertible","toLowerCase","isFlow","conversion","value","join","acceptLoss","LossyConversionNotAccepted","warningDiagnostic","LossyConversion","path","mirroredPaths","mirror","holder","getAtPath","slice"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { EditingScope } from '@cratis/scene.model';
2
+ export declare function layoutNodeId(name: string): string;
3
+ export declare function screenTemplateNodeId(name: string): string;
4
+ export declare function dialogTemplateNodeId(name: string): string;
5
+ export declare function screenNodeId(name: string): string;
6
+ export declare function slotNodeId(ownerNodeId: string, slotName: string): string;
7
+ export declare function elementNodeId(elementId: string): string;
8
+ export declare function ownerArrangementId(ownerNodeId: string): string;
9
+ export declare function flowNodeId(holderId: string, variant: string, indexPath: number[]): string;
10
+ export declare function freeformNodeId(holderId: string): string;
11
+ export declare function placementNodeId(holderId: string, variantIndex: number, key: string): string;
12
+ export declare function scopeNodeId(scope: EditingScope): string;
13
+ export declare function scopeInstanceId(scope: EditingScope): string;
14
+ //# sourceMappingURL=nodeIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeIds.d.ts","sourceRoot":"","sources":["../../../editing/nodeIds.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAC;AAWrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAKD,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExE;AAMD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAKD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAUD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzF;AAKD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAKD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3F;AAKD,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAOvD;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAO3D"}