@cratis/scene.model 4.7.0 → 4.9.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 (147) hide show
  1. package/common/BindingExpression.ts +47 -3
  2. package/common/BindingMode.ts +13 -0
  3. package/common/BindingNullBehavior.ts +16 -0
  4. package/common/BindingSourceKind.ts +19 -0
  5. package/common/DestinationKind.ts +11 -0
  6. package/common/DestinationReference.ts +33 -6
  7. package/common/index.ts +4 -0
  8. package/contributionPoints/NavigationItem.ts +19 -2
  9. package/descriptors/ComponentDescriptor.ts +11 -1
  10. package/descriptors/DesignTimeActionDescriptor.ts +28 -0
  11. package/descriptors/DesignTimeActionPlacement.ts +11 -0
  12. package/descriptors/PackageDesignTimeMetadata.ts +26 -0
  13. package/descriptors/PropertyDescriptor.ts +11 -0
  14. package/descriptors/index.ts +3 -0
  15. package/dist/cjs/common/BindingExpression.js +10 -5
  16. package/dist/cjs/common/BindingExpression.js.map +1 -1
  17. package/dist/cjs/common/BindingMode.js +14 -0
  18. package/dist/cjs/common/BindingMode.js.map +1 -0
  19. package/dist/cjs/common/BindingNullBehavior.js +15 -0
  20. package/dist/cjs/common/BindingNullBehavior.js.map +1 -0
  21. package/dist/cjs/common/BindingSourceKind.js +16 -0
  22. package/dist/cjs/common/BindingSourceKind.js.map +1 -0
  23. package/dist/cjs/common/DestinationKind.js +15 -0
  24. package/dist/cjs/common/DestinationKind.js.map +1 -0
  25. package/dist/cjs/common/DestinationReference.js +7 -0
  26. package/dist/cjs/common/DestinationReference.js.map +1 -1
  27. package/dist/cjs/contributionPoints/NavigationItem.js +4 -0
  28. package/dist/cjs/contributionPoints/NavigationItem.js.map +1 -1
  29. package/dist/cjs/descriptors/ComponentDescriptor.js +4 -1
  30. package/dist/cjs/descriptors/ComponentDescriptor.js.map +1 -1
  31. package/dist/cjs/descriptors/DesignTimeActionDescriptor.js +14 -0
  32. package/dist/cjs/descriptors/DesignTimeActionDescriptor.js.map +1 -0
  33. package/dist/cjs/descriptors/DesignTimeActionPlacement.js +15 -0
  34. package/dist/cjs/descriptors/DesignTimeActionPlacement.js.map +1 -0
  35. package/dist/cjs/descriptors/PackageDesignTimeMetadata.js +16 -0
  36. package/dist/cjs/descriptors/PackageDesignTimeMetadata.js.map +1 -0
  37. package/dist/cjs/descriptors/PropertyDescriptor.js +4 -1
  38. package/dist/cjs/descriptors/PropertyDescriptor.js.map +1 -1
  39. package/dist/cjs/index.js +19 -0
  40. package/dist/cjs/index.js.map +1 -1
  41. package/dist/cjs/layouts/Layout.js +3 -1
  42. package/dist/cjs/layouts/Layout.js.map +1 -1
  43. package/dist/cjs/packages/ScenePackage.js +4 -1
  44. package/dist/cjs/packages/ScenePackage.js.map +1 -1
  45. package/dist/cjs/screens/DialogTemplate.js +2 -1
  46. package/dist/cjs/screens/DialogTemplate.js.map +1 -1
  47. package/dist/cjs/screens/Outlet.js +13 -0
  48. package/dist/cjs/screens/Outlet.js.map +1 -0
  49. package/dist/cjs/screens/ScreenTemplate.js +3 -1
  50. package/dist/cjs/screens/ScreenTemplate.js.map +1 -1
  51. package/dist/cjs/screens/TemplateMetadata.js +21 -0
  52. package/dist/cjs/screens/TemplateMetadata.js.map +1 -0
  53. package/dist/esm/common/BindingExpression.d.ts +12 -0
  54. package/dist/esm/common/BindingExpression.d.ts.map +1 -1
  55. package/dist/esm/common/BindingExpression.js +10 -5
  56. package/dist/esm/common/BindingExpression.js.map +1 -1
  57. package/dist/esm/common/BindingMode.d.ts +5 -0
  58. package/dist/esm/common/BindingMode.d.ts.map +1 -0
  59. package/dist/esm/common/BindingMode.js +12 -0
  60. package/dist/esm/common/BindingMode.js.map +1 -0
  61. package/dist/esm/common/BindingNullBehavior.d.ts +6 -0
  62. package/dist/esm/common/BindingNullBehavior.d.ts.map +1 -0
  63. package/dist/esm/common/BindingNullBehavior.js +13 -0
  64. package/dist/esm/common/BindingNullBehavior.js.map +1 -0
  65. package/dist/esm/common/BindingSourceKind.d.ts +7 -0
  66. package/dist/esm/common/BindingSourceKind.d.ts.map +1 -0
  67. package/dist/esm/common/BindingSourceKind.js +14 -0
  68. package/dist/esm/common/BindingSourceKind.js.map +1 -0
  69. package/dist/esm/common/DestinationKind.d.ts +6 -0
  70. package/dist/esm/common/DestinationKind.d.ts.map +1 -0
  71. package/dist/esm/common/DestinationKind.js +13 -0
  72. package/dist/esm/common/DestinationKind.js.map +1 -0
  73. package/dist/esm/common/DestinationReference.d.ts +9 -1
  74. package/dist/esm/common/DestinationReference.d.ts.map +1 -1
  75. package/dist/esm/common/DestinationReference.js +7 -0
  76. package/dist/esm/common/DestinationReference.js.map +1 -1
  77. package/dist/esm/common/index.d.ts +4 -0
  78. package/dist/esm/common/index.d.ts.map +1 -1
  79. package/dist/esm/common/index.js +4 -0
  80. package/dist/esm/common/index.js.map +1 -1
  81. package/dist/esm/contributionPoints/NavigationItem.d.ts +5 -1
  82. package/dist/esm/contributionPoints/NavigationItem.d.ts.map +1 -1
  83. package/dist/esm/contributionPoints/NavigationItem.js +4 -0
  84. package/dist/esm/contributionPoints/NavigationItem.js.map +1 -1
  85. package/dist/esm/descriptors/ComponentDescriptor.d.ts +4 -0
  86. package/dist/esm/descriptors/ComponentDescriptor.d.ts.map +1 -1
  87. package/dist/esm/descriptors/ComponentDescriptor.js +4 -1
  88. package/dist/esm/descriptors/ComponentDescriptor.js.map +1 -1
  89. package/dist/esm/descriptors/DesignTimeActionDescriptor.d.ts +10 -0
  90. package/dist/esm/descriptors/DesignTimeActionDescriptor.d.ts.map +1 -0
  91. package/dist/esm/descriptors/DesignTimeActionDescriptor.js +12 -0
  92. package/dist/esm/descriptors/DesignTimeActionDescriptor.js.map +1 -0
  93. package/dist/esm/descriptors/DesignTimeActionPlacement.d.ts +6 -0
  94. package/dist/esm/descriptors/DesignTimeActionPlacement.d.ts.map +1 -0
  95. package/dist/esm/descriptors/DesignTimeActionPlacement.js +13 -0
  96. package/dist/esm/descriptors/DesignTimeActionPlacement.js.map +1 -0
  97. package/dist/esm/descriptors/PackageDesignTimeMetadata.d.ts +9 -0
  98. package/dist/esm/descriptors/PackageDesignTimeMetadata.d.ts.map +1 -0
  99. package/dist/esm/descriptors/PackageDesignTimeMetadata.js +14 -0
  100. package/dist/esm/descriptors/PackageDesignTimeMetadata.js.map +1 -0
  101. package/dist/esm/descriptors/PropertyDescriptor.d.ts +4 -0
  102. package/dist/esm/descriptors/PropertyDescriptor.d.ts.map +1 -1
  103. package/dist/esm/descriptors/PropertyDescriptor.js +4 -1
  104. package/dist/esm/descriptors/PropertyDescriptor.js.map +1 -1
  105. package/dist/esm/descriptors/index.d.ts +3 -0
  106. package/dist/esm/descriptors/index.d.ts.map +1 -1
  107. package/dist/esm/descriptors/index.js +3 -0
  108. package/dist/esm/descriptors/index.js.map +1 -1
  109. package/dist/esm/index.js +9 -0
  110. package/dist/esm/index.js.map +1 -1
  111. package/dist/esm/layouts/Layout.d.ts +4 -0
  112. package/dist/esm/layouts/Layout.d.ts.map +1 -1
  113. package/dist/esm/layouts/Layout.js +3 -1
  114. package/dist/esm/layouts/Layout.js.map +1 -1
  115. package/dist/esm/packages/ScenePackage.d.ts +4 -0
  116. package/dist/esm/packages/ScenePackage.d.ts.map +1 -1
  117. package/dist/esm/packages/ScenePackage.js +4 -1
  118. package/dist/esm/packages/ScenePackage.js.map +1 -1
  119. package/dist/esm/screens/DialogTemplate.d.ts +2 -0
  120. package/dist/esm/screens/DialogTemplate.d.ts.map +1 -1
  121. package/dist/esm/screens/DialogTemplate.js +2 -1
  122. package/dist/esm/screens/DialogTemplate.js.map +1 -1
  123. package/dist/esm/screens/Outlet.d.ts +6 -0
  124. package/dist/esm/screens/Outlet.d.ts.map +1 -0
  125. package/dist/esm/screens/Outlet.js +11 -0
  126. package/dist/esm/screens/Outlet.js.map +1 -0
  127. package/dist/esm/screens/ScreenTemplate.d.ts +4 -0
  128. package/dist/esm/screens/ScreenTemplate.d.ts.map +1 -1
  129. package/dist/esm/screens/ScreenTemplate.js +3 -1
  130. package/dist/esm/screens/ScreenTemplate.js.map +1 -1
  131. package/dist/esm/screens/TemplateMetadata.d.ts +14 -0
  132. package/dist/esm/screens/TemplateMetadata.d.ts.map +1 -0
  133. package/dist/esm/screens/TemplateMetadata.js +18 -0
  134. package/dist/esm/screens/TemplateMetadata.js.map +1 -0
  135. package/dist/esm/screens/index.d.ts +2 -0
  136. package/dist/esm/screens/index.d.ts.map +1 -1
  137. package/dist/esm/screens/index.js +2 -0
  138. package/dist/esm/screens/index.js.map +1 -1
  139. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  140. package/layouts/Layout.ts +9 -1
  141. package/package.json +1 -1
  142. package/packages/ScenePackage.ts +13 -0
  143. package/screens/DialogTemplate.ts +5 -0
  144. package/screens/Outlet.ts +15 -0
  145. package/screens/ScreenTemplate.ts +10 -0
  146. package/screens/TemplateMetadata.ts +26 -0
  147. package/screens/index.ts +2 -0
package/layouts/Layout.ts CHANGED
@@ -4,6 +4,8 @@
4
4
  import { Arrangement } from './Arrangement';
5
5
  import { Slot } from './Slot';
6
6
  import { Behavior } from '../interactions';
7
+ import { Outlet } from '../screens/Outlet';
8
+ import { TemplateMetadata } from '../screens/TemplateMetadata';
7
9
 
8
10
  /**
9
11
  * A named template of slots that a {@link Screen} fills with content. Mirrors Screenplay's `layout`
@@ -27,6 +29,12 @@ export interface Layout {
27
29
  * attached further out or further in.
28
30
  */
29
31
  behaviors?: Behavior[];
32
+
33
+ /** Named routed replacement surfaces this layout owns. Static slots remain template composition surfaces. */
34
+ outlets?: Outlet[];
35
+
36
+ /** Optional browse metadata; ApplicationShell retains this existing Layout role. */
37
+ metadata?: TemplateMetadata;
30
38
  }
31
39
 
32
- export const LayoutPropertyNames: (keyof Layout)[] = ['name', 'slots', 'arrangement', 'behaviors'];
40
+ export const LayoutPropertyNames: (keyof Layout)[] = ['name', 'slots', 'arrangement', 'behaviors', 'outlets', 'metadata'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/scene.model",
3
- "version": "4.7.0",
3
+ "version": "4.9.0",
4
4
  "description": "The TypeScript mirror of Cratis.Scene.Model — the platform-agnostic Screen object model.",
5
5
  "keywords": [
6
6
  "cratis",
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
+ import { PackageDesignTimeMetadata } from '../descriptors';
4
5
  import { IconLibrary } from '../icons';
5
6
  import { PackageDependency } from './PackageDependency';
6
7
  import { PackageKind } from './PackageKind';
@@ -92,6 +93,15 @@ export interface ScenePackage {
92
93
  * What the package declares about its icons. Present exactly for a {@link PackageKind.IconLibrary}.
93
94
  */
94
95
  iconLibrary?: IconLibrary;
96
+
97
+ /** Optional design-time extensions carried as metadata; runtime hosts do not load them unless approved. */
98
+ designTime?: PackageDesignTimeMetadata;
99
+
100
+ /** Asset URLs or package-relative asset entries (CSS, fonts, images) required by a web renderer. */
101
+ assets?: string[];
102
+
103
+ /** Runtime singleton dependency names that must not be duplicated across approved bundles. */
104
+ runtimeSingletons?: string[];
95
105
  }
96
106
 
97
107
  export const ScenePackagePropertyNames: (keyof ScenePackage)[] = [
@@ -110,4 +120,7 @@ export const ScenePackagePropertyNames: (keyof ScenePackage)[] = [
110
120
  'license',
111
121
  'licenseUrl',
112
122
  'iconLibrary',
123
+ 'designTime',
124
+ 'assets',
125
+ 'runtimeSingletons',
113
126
  ];
@@ -4,6 +4,7 @@
4
4
  import { SceneElement } from '../elements';
5
5
  import { Arrangement, Slot } from '../layouts';
6
6
  import { Behavior } from '../interactions';
7
+ import { TemplateMetadata } from './TemplateMetadata';
7
8
 
8
9
  /**
9
10
  * A reusable dialog structure — the same idea as a {@link ScreenTemplate}, for content that opens over an
@@ -51,6 +52,9 @@ export interface DialogTemplate {
51
52
  * attached further out or further in.
52
53
  */
53
54
  behaviors?: Behavior[];
55
+
56
+ /** Optional semantic type, browse category and scope restrictions. */
57
+ metadata?: TemplateMetadata;
54
58
  }
55
59
 
56
60
  export const DialogTemplatePropertyNames: (keyof DialogTemplate)[] = [
@@ -61,4 +65,5 @@ export const DialogTemplatePropertyNames: (keyof DialogTemplate)[] = [
61
65
  'displayName',
62
66
  'description',
63
67
  'behaviors',
68
+ 'metadata',
64
69
  ];
@@ -0,0 +1,15 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ /**
5
+ * A named replacement surface for routed or nested screen content.
6
+ */
7
+ export interface Outlet {
8
+ /** Stable outlet name used by destinations. */
9
+ name: string;
10
+
11
+ /** Optional description for designers. */
12
+ description?: string;
13
+ }
14
+
15
+ export const OutletPropertyNames: (keyof Outlet)[] = ['name', 'description'];
@@ -4,6 +4,8 @@
4
4
  import { SceneElement } from '../elements';
5
5
  import { Arrangement, Slot } from '../layouts';
6
6
  import { Behavior } from '../interactions';
7
+ import { Outlet } from './Outlet';
8
+ import { TemplateMetadata } from './TemplateMetadata';
7
9
 
8
10
  /**
9
11
  * A reusable screen structure that fills a named slot on whatever contains it, and offers slots of its
@@ -63,6 +65,12 @@ export interface ScreenTemplate {
63
65
  * attached further out or further in.
64
66
  */
65
67
  behaviors?: Behavior[];
68
+
69
+ /** Named routed replacement surfaces this template owns. Static slots remain composition surfaces. */
70
+ outlets?: Outlet[];
71
+
72
+ /** Optional semantic type, browse category and scope restrictions. */
73
+ metadata?: TemplateMetadata;
66
74
  }
67
75
 
68
76
  export const ScreenTemplatePropertyNames: (keyof ScreenTemplate)[] = [
@@ -74,4 +82,6 @@ export const ScreenTemplatePropertyNames: (keyof ScreenTemplate)[] = [
74
82
  'displayName',
75
83
  'description',
76
84
  'behaviors',
85
+ 'outlets',
86
+ 'metadata',
77
87
  ];
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ /** The application hierarchy at which a reusable template is selected. */
5
+ export enum TemplateScope {
6
+ Application = 'Application',
7
+ Module = 'Module',
8
+ Feature = 'Feature',
9
+ Subfeature = 'Subfeature',
10
+ Slice = 'Slice',
11
+ }
12
+
13
+ /**
14
+ * Optional semantic and browsing metadata. Type and category are open strings so packages can
15
+ * introduce their own vocabulary without a Scene release. Category never determines applicability.
16
+ */
17
+ export interface TemplateMetadata {
18
+ /** Semantic role; built-in roles are ApplicationShell, Workspace, List, Detail, Form and Dialog. */
19
+ type?: string;
20
+ /** A package-defined browse category, preserved even when the host does not recognize it. */
21
+ category?: string;
22
+ /** Explicit scope restriction. Absent uses the structural role; an empty list allows no scope. */
23
+ scopes?: TemplateScope[];
24
+ }
25
+
26
+ export const TemplateMetadataPropertyNames: (keyof TemplateMetadata)[] = ['type', 'category', 'scopes'];
package/screens/index.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
+ export * from './Outlet';
4
5
  export * from './Screen';
5
6
  export * from './ScreenTemplate';
6
7
  export * from './DialogTemplate';
8
+ export * from './TemplateMetadata';