@cratis/scene.model 4.23.0 → 4.25.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 (86) hide show
  1. package/descriptors/ComponentCategory.ts +40 -0
  2. package/descriptors/ComponentDescriptor.ts +22 -1
  3. package/descriptors/ComponentDesignModeDescriptor.ts +76 -0
  4. package/descriptors/PropertyDescriptor.ts +5 -1
  5. package/descriptors/PropertyEditorKind.ts +56 -1
  6. package/descriptors/PropertyEditorOptions.ts +51 -0
  7. package/descriptors/componentIcon.ts +16 -0
  8. package/descriptors/index.ts +4 -0
  9. package/dist/cjs/descriptors/ComponentCategory.js +25 -0
  10. package/dist/cjs/descriptors/ComponentCategory.js.map +1 -0
  11. package/dist/cjs/descriptors/ComponentDescriptor.js +5 -0
  12. package/dist/cjs/descriptors/ComponentDescriptor.js.map +1 -1
  13. package/dist/cjs/descriptors/ComponentDesignModeDescriptor.js +28 -0
  14. package/dist/cjs/descriptors/ComponentDesignModeDescriptor.js.map +1 -0
  15. package/dist/cjs/descriptors/PropertyDescriptor.js +1 -0
  16. package/dist/cjs/descriptors/PropertyDescriptor.js.map +1 -1
  17. package/dist/cjs/descriptors/PropertyEditorKind.js +23 -2
  18. package/dist/cjs/descriptors/PropertyEditorKind.js.map +1 -1
  19. package/dist/cjs/descriptors/PropertyEditorOptions.js +25 -0
  20. package/dist/cjs/descriptors/PropertyEditorOptions.js.map +1 -0
  21. package/dist/cjs/descriptors/componentIcon.js +19 -0
  22. package/dist/cjs/descriptors/componentIcon.js.map +1 -0
  23. package/dist/cjs/editing/DiagnosticCode.js +5 -0
  24. package/dist/cjs/editing/DiagnosticCode.js.map +1 -1
  25. package/dist/cjs/index.js +16 -0
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/screens/TemplateMetadata.js +2 -1
  28. package/dist/cjs/screens/TemplateMetadata.js.map +1 -1
  29. package/dist/cjs/screens/TemplateReference.js +19 -0
  30. package/dist/cjs/screens/TemplateReference.js.map +1 -0
  31. package/dist/esm/descriptors/ComponentCategory.d.ts +13 -0
  32. package/dist/esm/descriptors/ComponentCategory.d.ts.map +1 -0
  33. package/dist/esm/descriptors/ComponentCategory.js +22 -0
  34. package/dist/esm/descriptors/ComponentCategory.js.map +1 -0
  35. package/dist/esm/descriptors/ComponentDescriptor.d.ts +7 -0
  36. package/dist/esm/descriptors/ComponentDescriptor.d.ts.map +1 -1
  37. package/dist/esm/descriptors/ComponentDescriptor.js +5 -0
  38. package/dist/esm/descriptors/ComponentDescriptor.js.map +1 -1
  39. package/dist/esm/descriptors/ComponentDesignModeDescriptor.d.ts +24 -0
  40. package/dist/esm/descriptors/ComponentDesignModeDescriptor.d.ts.map +1 -0
  41. package/dist/esm/descriptors/ComponentDesignModeDescriptor.js +24 -0
  42. package/dist/esm/descriptors/ComponentDesignModeDescriptor.js.map +1 -0
  43. package/dist/esm/descriptors/PropertyDescriptor.d.ts +2 -0
  44. package/dist/esm/descriptors/PropertyDescriptor.d.ts.map +1 -1
  45. package/dist/esm/descriptors/PropertyDescriptor.js +1 -0
  46. package/dist/esm/descriptors/PropertyDescriptor.js.map +1 -1
  47. package/dist/esm/descriptors/PropertyEditorKind.d.ts +17 -0
  48. package/dist/esm/descriptors/PropertyEditorKind.d.ts.map +1 -1
  49. package/dist/esm/descriptors/PropertyEditorKind.js +23 -2
  50. package/dist/esm/descriptors/PropertyEditorKind.js.map +1 -1
  51. package/dist/esm/descriptors/PropertyEditorOptions.d.ts +18 -0
  52. package/dist/esm/descriptors/PropertyEditorOptions.d.ts.map +1 -0
  53. package/dist/esm/descriptors/PropertyEditorOptions.js +22 -0
  54. package/dist/esm/descriptors/PropertyEditorOptions.js.map +1 -0
  55. package/dist/esm/descriptors/componentIcon.d.ts +4 -0
  56. package/dist/esm/descriptors/componentIcon.d.ts.map +1 -0
  57. package/dist/esm/descriptors/componentIcon.js +16 -0
  58. package/dist/esm/descriptors/componentIcon.js.map +1 -0
  59. package/dist/esm/descriptors/index.d.ts +4 -0
  60. package/dist/esm/descriptors/index.d.ts.map +1 -1
  61. package/dist/esm/descriptors/index.js +4 -0
  62. package/dist/esm/descriptors/index.js.map +1 -1
  63. package/dist/esm/editing/DiagnosticCode.d.ts +5 -1
  64. package/dist/esm/editing/DiagnosticCode.d.ts.map +1 -1
  65. package/dist/esm/editing/DiagnosticCode.js +5 -0
  66. package/dist/esm/editing/DiagnosticCode.js.map +1 -1
  67. package/dist/esm/index.js +5 -0
  68. package/dist/esm/index.js.map +1 -1
  69. package/dist/esm/screens/TemplateMetadata.d.ts +2 -0
  70. package/dist/esm/screens/TemplateMetadata.d.ts.map +1 -1
  71. package/dist/esm/screens/TemplateMetadata.js +2 -1
  72. package/dist/esm/screens/TemplateMetadata.js.map +1 -1
  73. package/dist/esm/screens/TemplateReference.d.ts +12 -0
  74. package/dist/esm/screens/TemplateReference.d.ts.map +1 -0
  75. package/dist/esm/screens/TemplateReference.js +16 -0
  76. package/dist/esm/screens/TemplateReference.js.map +1 -0
  77. package/dist/esm/screens/index.d.ts +1 -0
  78. package/dist/esm/screens/index.d.ts.map +1 -1
  79. package/dist/esm/screens/index.js +1 -0
  80. package/dist/esm/screens/index.js.map +1 -1
  81. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  82. package/editing/DiagnosticCode.ts +6 -0
  83. package/package.json +1 -1
  84. package/screens/TemplateMetadata.ts +9 -2
  85. package/screens/TemplateReference.ts +30 -0
  86. package/screens/index.ts +1 -0
@@ -63,4 +63,10 @@ export enum DiagnosticCode {
63
63
  IncompatibleIconLibrary = 'incompatibleIconLibrary',
64
64
  IconCatalogUnavailable = 'iconCatalogUnavailable',
65
65
  IconNotVerified = 'iconNotVerified',
66
+
67
+ // Component metadata
68
+ ComponentCategoryMissing = 'componentCategoryMissing',
69
+ ComponentCategoryUnknown = 'componentCategoryUnknown',
70
+ ComponentDesignModeInvalid = 'componentDesignModeInvalid',
71
+ PropertyEditorOptionsInvalid = 'propertyEditorOptionsInvalid',
66
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/scene.model",
3
- "version": "4.23.0",
3
+ "version": "4.25.0",
4
4
  "description": "The TypeScript mirror of Cratis.Scene.Model — the platform-agnostic Screen object model.",
5
5
  "keywords": [
6
6
  "cratis",
@@ -3,6 +3,7 @@
3
3
 
4
4
  import { TemplateAttribution } from './TemplateAttribution';
5
5
  import { TemplateCompatibility } from './TemplateCompatibility';
6
+ import { SliceKind } from '../structure';
6
7
 
7
8
  /** The application hierarchy at which a reusable template is selected. */
8
9
  export enum TemplateScope {
@@ -14,7 +15,7 @@ export enum TemplateScope {
14
15
  }
15
16
 
16
17
  /**
17
- * Optional semantic and browsing metadata. Type and category are open strings so packages can
18
+ * Semantic and browsing metadata. Category is required for blueprint templates and recommended for own templates. Type and category are open strings so packages can
18
19
  * introduce their own vocabulary without a Scene release. Category never determines applicability.
19
20
  */
20
21
  export interface TemplateMetadata {
@@ -32,8 +33,14 @@ export interface TemplateMetadata {
32
33
  license?: string;
33
34
  /** An absolute `https` URL to the license terms. */
34
35
  licenseUrl?: string;
36
+ /**
37
+ * For a template that applies at {@link TemplateScope.Slice}, the slice kinds it applies to. Absent uses the
38
+ * structural default: a dialog template applies to state change slices, a screen template to every kind that
39
+ * presents something. Declaring slice kinds without scopes makes the default scope Slice.
40
+ */
41
+ sliceKinds?: SliceKind[];
35
42
  }
36
43
 
37
44
  export const TemplateMetadataPropertyNames: (keyof TemplateMetadata)[] = [
38
- 'type', 'category', 'scopes', 'compatibility', 'attribution', 'license', 'licenseUrl',
45
+ 'type', 'category', 'scopes', 'compatibility', 'attribution', 'license', 'licenseUrl', 'sliceKinds',
39
46
  ];
@@ -0,0 +1,30 @@
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
+ /** Where a referenced template comes from. */
5
+ export enum TemplateReferenceSource {
6
+ /** A template the user created in the workspace. */
7
+ Own = 'Own',
8
+ /** A template shipped by a blueprint package, referenced by blueprint name, template name and version range. */
9
+ Blueprint = 'Blueprint',
10
+ }
11
+
12
+ /**
13
+ * How a module, feature or slice refers to the template it uses: an own template by name, or a blueprint
14
+ * template by blueprint, name and the version range of the blueprint it was chosen from.
15
+ */
16
+ export interface TemplateReference {
17
+ /** Whether the template is the user's own or comes from a blueprint. */
18
+ source: TemplateReferenceSource;
19
+ /** The template's name - within the workspace for an own template, within the blueprint for a blueprint template. */
20
+ id: string;
21
+ /** The blueprint package name. Present exactly when `source` is {@link TemplateReferenceSource.Blueprint}. */
22
+ blueprint?: string;
23
+ /**
24
+ * The semver range of the blueprint the reference accepts, such as `^1.2.0`. Defaults to the caret range of the
25
+ * installed blueprint version when a reference is created; absent means any version. Only meaningful for a blueprint reference.
26
+ */
27
+ version?: string;
28
+ }
29
+
30
+ export const TemplateReferencePropertyNames: (keyof TemplateReference)[] = ['source', 'id', 'blueprint', 'version'];
package/screens/index.ts CHANGED
@@ -8,3 +8,4 @@ export * from './DialogTemplate';
8
8
  export * from './TemplateAttribution';
9
9
  export * from './TemplateCompatibility';
10
10
  export * from './TemplateMetadata';
11
+ export * from './TemplateReference';