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