@cratis/scene.model 4.20.0 → 4.22.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 (39) hide show
  1. package/contributionPoints/NavigationItem.ts +7 -1
  2. package/descriptors/CollectionItemDescriptor.ts +8 -1
  3. package/descriptors/PropertyEditorKind.ts +28 -0
  4. package/descriptors/index.ts +1 -0
  5. package/dist/cjs/contributionPoints/NavigationItem.js +2 -1
  6. package/dist/cjs/contributionPoints/NavigationItem.js.map +1 -1
  7. package/dist/cjs/descriptors/CollectionItemDescriptor.js +2 -1
  8. package/dist/cjs/descriptors/CollectionItemDescriptor.js.map +1 -1
  9. package/dist/cjs/descriptors/PropertyEditorKind.js +20 -0
  10. package/dist/cjs/descriptors/PropertyEditorKind.js.map +1 -0
  11. package/dist/cjs/index.js +2 -0
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/screens/Screen.js +2 -1
  14. package/dist/cjs/screens/Screen.js.map +1 -1
  15. package/dist/esm/contributionPoints/NavigationItem.d.ts +1 -0
  16. package/dist/esm/contributionPoints/NavigationItem.d.ts.map +1 -1
  17. package/dist/esm/contributionPoints/NavigationItem.js +2 -1
  18. package/dist/esm/contributionPoints/NavigationItem.js.map +1 -1
  19. package/dist/esm/descriptors/CollectionItemDescriptor.d.ts +1 -0
  20. package/dist/esm/descriptors/CollectionItemDescriptor.d.ts.map +1 -1
  21. package/dist/esm/descriptors/CollectionItemDescriptor.js +2 -1
  22. package/dist/esm/descriptors/CollectionItemDescriptor.js.map +1 -1
  23. package/dist/esm/descriptors/PropertyEditorKind.d.ts +9 -0
  24. package/dist/esm/descriptors/PropertyEditorKind.d.ts.map +1 -0
  25. package/dist/esm/descriptors/PropertyEditorKind.js +18 -0
  26. package/dist/esm/descriptors/PropertyEditorKind.js.map +1 -0
  27. package/dist/esm/descriptors/index.d.ts +1 -0
  28. package/dist/esm/descriptors/index.d.ts.map +1 -1
  29. package/dist/esm/descriptors/index.js +1 -0
  30. package/dist/esm/descriptors/index.js.map +1 -1
  31. package/dist/esm/index.js +1 -0
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/screens/Screen.d.ts +1 -0
  34. package/dist/esm/screens/Screen.d.ts.map +1 -1
  35. package/dist/esm/screens/Screen.js +2 -1
  36. package/dist/esm/screens/Screen.js.map +1 -1
  37. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/screens/Screen.ts +9 -1
@@ -31,8 +31,14 @@ export interface NavigationItem {
31
31
 
32
32
  order?: number;
33
33
  group?: string;
34
+
35
+ /**
36
+ * The modules and features, outermost first, the item was declared in. A host lays navigation out as that
37
+ * hierarchy - a group per module and per feature - instead of one flat list.
38
+ */
39
+ hierarchy?: string[];
34
40
  }
35
41
 
36
42
  export const NavigationItemPropertyNames: (keyof NavigationItem)[] = [
37
- 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group',
43
+ 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group', 'hierarchy',
38
44
  ];
@@ -21,6 +21,13 @@ export interface CollectionItemDescriptor {
21
21
  * field the descriptor does not describe is refused.
22
22
  */
23
23
  open?: boolean;
24
+
25
+ /**
26
+ * The items are plain records that carry no `id`: they are the authored data of a control - a chart's datasets, a tree's nodes -
27
+ * and are told apart by their position, as they are wherever else that data is written. Without it every item needs a unique
28
+ * `id` of its own. An item that has an `id` keeps it.
29
+ */
30
+ positional?: boolean;
24
31
  }
25
32
 
26
- export const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open'];
33
+ export const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open', 'positional'];
@@ -0,0 +1,28 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ /**
5
+ * The editor kinds for values that have no fields to describe, so a host can edit them without asking for JSON text.
6
+ *
7
+ * A list of plain values is a `json` property - Scene keeps the array exactly as authored - whose `editorKind` says what
8
+ * its entries are. A record whose keys are the author's own (a row of data, keyed by column) is an `object` property
9
+ * with no `properties` and the `stringMap` kind. A host that does not know a kind falls back to its default editor.
10
+ */
11
+ export const PropertyEditorKind = {
12
+ /** An ordered list of words. */
13
+ StringList: 'stringList',
14
+
15
+ /** An ordered list of numbers. */
16
+ NumberList: 'numberList',
17
+
18
+ /** One word, or an ordered list of words: a chart colour is one colour for the series or one for each point. */
19
+ StringOrList: 'stringOrList',
20
+
21
+ /** One word, number or flag - a value whose type the author chooses, such as the selected value of a control whose options carry any of them. */
22
+ Scalar: 'scalar',
23
+
24
+ /** A record of words, numbers and flags under names the author chooses. */
25
+ StringMap: 'stringMap',
26
+ } as const;
27
+
28
+ export type PropertyEditorKind = (typeof PropertyEditorKind)[keyof typeof PropertyEditorKind];
@@ -2,6 +2,7 @@
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
 
4
4
  export * from './PropertyValueType';
5
+ export * from './PropertyEditorKind';
5
6
  export * from './PropertyChoice';
6
7
  export * from './PropertyConstraints';
7
8
  export * from './CollectionItemDescriptor';
@@ -11,7 +11,8 @@ const NavigationItemPropertyNames = [
11
11
  'routeParameterBindings',
12
12
  'destination',
13
13
  'order',
14
- 'group'
14
+ 'group',
15
+ 'hierarchy'
15
16
  ];
16
17
 
17
18
  exports.NavigationItemPropertyNames = NavigationItemPropertyNames;
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationItem.js","sources":["../../../contributionPoints/NavigationItem.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 { BindingExpression, DestinationReference } from '../common';\n\n/**\n * A contribution to the built-in `Navigation` contribution point. How `navigate to <Screen>` becomes a\n * concrete route (URL path, query string, or native deep link) is owned by the renderer's NavBar widget,\n * not this record — this only carries the declared shape.\n */\nexport interface NavigationItem {\n /** Stable identity for this contribution, independent of the label. */\n id?: string;\n\n label: string;\n\n /** Qualified icon reference (`library:name`) for toolbar/navigation chrome. */\n icon?: string;\n\n /** Whether chrome shows icon, text, or both. */\n presentation?: string;\n\n /** Legacy screen target; prefer `destination` for new content. */\n targetScreen: string;\n\n /** Legacy parameter bindings; prefer `destination.routeParameterBindings` for new content. */\n routeParameterBindings: Record<string, BindingExpression>;\n\n /** The typed destination this item activates. */\n destination?: DestinationReference;\n\n order?: number;\n group?: string;\n}\n\nexport const NavigationItemPropertyNames: (keyof NavigationItem)[] = [\n 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group',\n];\n"],"names":["NavigationItemPropertyNames"],"mappings":";;AAAA;AACA;MAkCaA,2BAAAA,GAAwD;AACjE,IAAA,IAAA;AAAM,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,cAAA;AAAgB,IAAA,wBAAA;AAA0B,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA;;;"}
1
+ {"version":3,"file":"NavigationItem.js","sources":["../../../contributionPoints/NavigationItem.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 { BindingExpression, DestinationReference } from '../common';\n\n/**\n * A contribution to the built-in `Navigation` contribution point. How `navigate to <Screen>` becomes a\n * concrete route (URL path, query string, or native deep link) is owned by the renderer's NavBar widget,\n * not this record — this only carries the declared shape.\n */\nexport interface NavigationItem {\n /** Stable identity for this contribution, independent of the label. */\n id?: string;\n\n label: string;\n\n /** Qualified icon reference (`library:name`) for toolbar/navigation chrome. */\n icon?: string;\n\n /** Whether chrome shows icon, text, or both. */\n presentation?: string;\n\n /** Legacy screen target; prefer `destination` for new content. */\n targetScreen: string;\n\n /** Legacy parameter bindings; prefer `destination.routeParameterBindings` for new content. */\n routeParameterBindings: Record<string, BindingExpression>;\n\n /** The typed destination this item activates. */\n destination?: DestinationReference;\n\n order?: number;\n group?: string;\n\n /**\n * The modules and features, outermost first, the item was declared in. A host lays navigation out as that\n * hierarchy - a group per module and per feature - instead of one flat list.\n */\n hierarchy?: string[];\n}\n\nexport const NavigationItemPropertyNames: (keyof NavigationItem)[] = [\n 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group', 'hierarchy',\n];\n"],"names":["NavigationItemPropertyNames"],"mappings":";;AAAA;AACA;MAwCaA,2BAAAA,GAAwD;AACjE,IAAA,IAAA;AAAM,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,cAAA;AAAgB,IAAA,wBAAA;AAA0B,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA;;;"}
@@ -5,7 +5,8 @@
5
5
  const CollectionItemDescriptorPropertyNames = [
6
6
  'label',
7
7
  'properties',
8
- 'open'
8
+ 'open',
9
+ 'positional'
9
10
  ];
10
11
 
11
12
  exports.CollectionItemDescriptorPropertyNames = CollectionItemDescriptorPropertyNames;
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionItemDescriptor.js","sources":["../../../descriptors/CollectionItemDescriptor.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 type { PropertyDescriptor } from './PropertyDescriptor';\n\n/**\n * Describes the items of a `Collection` property.\n *\n * An item is a record with a stable `id` (assigned by whoever creates it, never an array index) plus the fields\n * `properties` describes. Field paths are relative to the item and are single names.\n */\nexport interface CollectionItemDescriptor {\n /** What one item is called, for a host's \"add ...\" affordance. */\n label?: string;\n\n /** The fields of one item. */\n properties: PropertyDescriptor[];\n\n /**\n * An item may carry fields `properties` does not describe. They are kept as they are and never edited. Without it a\n * field the descriptor does not describe is refused.\n */\n open?: boolean;\n}\n\nexport const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open'];\n"],"names":["CollectionItemDescriptorPropertyNames"],"mappings":";;AAAA;AACA;MAwBaA,qCAAAA,GAA4E;AAAC,IAAA,OAAA;AAAS,IAAA,YAAA;AAAc,IAAA;;;"}
1
+ {"version":3,"file":"CollectionItemDescriptor.js","sources":["../../../descriptors/CollectionItemDescriptor.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 type { PropertyDescriptor } from './PropertyDescriptor';\n\n/**\n * Describes the items of a `Collection` property.\n *\n * An item is a record with a stable `id` (assigned by whoever creates it, never an array index) plus the fields\n * `properties` describes. Field paths are relative to the item and are single names.\n */\nexport interface CollectionItemDescriptor {\n /** What one item is called, for a host's \"add ...\" affordance. */\n label?: string;\n\n /** The fields of one item. */\n properties: PropertyDescriptor[];\n\n /**\n * An item may carry fields `properties` does not describe. They are kept as they are and never edited. Without it a\n * field the descriptor does not describe is refused.\n */\n open?: boolean;\n\n /**\n * The items are plain records that carry no `id`: they are the authored data of a control - a chart's datasets, a tree's nodes -\n * and are told apart by their position, as they are wherever else that data is written. Without it every item needs a unique\n * `id` of its own. An item that has an `id` keeps it.\n */\n positional?: boolean;\n}\n\nexport const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open', 'positional'];\n"],"names":["CollectionItemDescriptorPropertyNames"],"mappings":";;AAAA;AACA;MA+BaA,qCAAAA,GAA4E;AAAC,IAAA,OAAA;AAAS,IAAA,YAAA;AAAc,IAAA,MAAA;AAAQ,IAAA;;;"}
@@ -0,0 +1,20 @@
1
+ 'use strict';
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
+ /**
6
+ * The editor kinds for values that have no fields to describe, so a host can edit them without asking for JSON text.
7
+ *
8
+ * A list of plain values is a `json` property - Scene keeps the array exactly as authored - whose `editorKind` says what
9
+ * its entries are. A record whose keys are the author's own (a row of data, keyed by column) is an `object` property
10
+ * with no `properties` and the `stringMap` kind. A host that does not know a kind falls back to its default editor.
11
+ */ const PropertyEditorKind = {
12
+ /** An ordered list of words. */ StringList: 'stringList',
13
+ /** An ordered list of numbers. */ NumberList: 'numberList',
14
+ /** One word, or an ordered list of words: a chart colour is one colour for the series or one for each point. */ StringOrList: 'stringOrList',
15
+ /** One word, number or flag - a value whose type the author chooses, such as the selected value of a control whose options carry any of them. */ Scalar: 'scalar',
16
+ /** A record of words, numbers and flags under names the author chooses. */ StringMap: 'stringMap'
17
+ };
18
+
19
+ exports.PropertyEditorKind = PropertyEditorKind;
20
+ //# sourceMappingURL=PropertyEditorKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyEditorKind.js","sources":["../../../descriptors/PropertyEditorKind.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\n/**\n * The editor kinds for values that have no fields to describe, so a host can edit them without asking for JSON text.\n *\n * A list of plain values is a `json` property - Scene keeps the array exactly as authored - whose `editorKind` says what\n * its entries are. A record whose keys are the author's own (a row of data, keyed by column) is an `object` property\n * with no `properties` and the `stringMap` kind. A host that does not know a kind falls back to its default editor.\n */\nexport const PropertyEditorKind = {\n /** An ordered list of words. */\n StringList: 'stringList',\n\n /** An ordered list of numbers. */\n NumberList: 'numberList',\n\n /** One word, or an ordered list of words: a chart colour is one colour for the series or one for each point. */\n StringOrList: 'stringOrList',\n\n /** One word, number or flag - a value whose type the author chooses, such as the selected value of a control whose options carry any of them. */\n Scalar: 'scalar',\n\n /** A record of words, numbers and flags under names the author chooses. */\n StringMap: 'stringMap',\n} as const;\n\nexport type PropertyEditorKind = (typeof PropertyEditorKind)[keyof typeof PropertyEditorKind];\n"],"names":["PropertyEditorKind","StringList","NumberList","StringOrList","Scalar","StringMap"],"mappings":";;AAAA;AACA;AAEA;;;;;;UAOaA,kBAAAA,GAAqB;AAC9B,qCACAC,UAAAA,EAAY,YAAA;AAEZ,uCACAC,UAAAA,EAAY,YAAA;AAEZ,qHACAC,YAAAA,EAAc,cAAA;AAEd,sJACAC,MAAAA,EAAQ,QAAA;AAER,gFACAC,SAAAA,EAAW;AACf;;"}
package/dist/cjs/index.js CHANGED
@@ -115,6 +115,7 @@ var QueryArgumentBinding = require('./queries/QueryArgumentBinding.js');
115
115
  var QueryResultBinding = require('./queries/QueryResultBinding.js');
116
116
  var QueryBinding = require('./queries/QueryBinding.js');
117
117
  var PropertyValueType = require('./descriptors/PropertyValueType.js');
118
+ var PropertyEditorKind = require('./descriptors/PropertyEditorKind.js');
118
119
  var PropertyChoice = require('./descriptors/PropertyChoice.js');
119
120
  var PropertyConstraints = require('./descriptors/PropertyConstraints.js');
120
121
  var CollectionItemDescriptor = require('./descriptors/CollectionItemDescriptor.js');
@@ -287,6 +288,7 @@ exports.QueryArgumentBindingPropertyNames = QueryArgumentBinding.QueryArgumentBi
287
288
  exports.QueryResultBindingPropertyNames = QueryResultBinding.QueryResultBindingPropertyNames;
288
289
  exports.QueryBindingPropertyNames = QueryBinding.QueryBindingPropertyNames;
289
290
  exports.PropertyValueType = PropertyValueType.PropertyValueType;
291
+ exports.PropertyEditorKind = PropertyEditorKind.PropertyEditorKind;
290
292
  exports.PropertyChoicePropertyNames = PropertyChoice.PropertyChoicePropertyNames;
291
293
  exports.PropertyConstraintsPropertyNames = PropertyConstraints.PropertyConstraintsPropertyNames;
292
294
  exports.CollectionItemDescriptorPropertyNames = CollectionItemDescriptor.CollectionItemDescriptorPropertyNames;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,7 +9,8 @@ const ScreenPropertyNames = [
9
9
  'forms',
10
10
  'contributions',
11
11
  'screenTemplate',
12
- 'behaviors'
12
+ 'behaviors',
13
+ 'path'
13
14
  ];
14
15
 
15
16
  exports.ScreenPropertyNames = ScreenPropertyNames;
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.js","sources":["../../../screens/Screen.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 { SceneElement } from '../elements';\nimport { Form } from '../forms';\nimport { Contribution } from '../contributionPoints';\nimport { Behavior } from '../interactions';\n\n/**\n * A named screen: the structure it fills, the content that fills it, the forms it hosts, and whatever it\n * contributes to contribution points elsewhere in the tree.\n *\n * A screen is an instance, not a shape. The shape comes from either the application's {@link Layout} — for\n * a screen that sits directly in the application shell — or a {@link ScreenTemplate}, for one nested\n * inside a module, feature or slice. Both declare slots; a screen only ever fills them.\n */\nexport interface Screen {\n /**\n * The screen's name.\n */\n name: string;\n\n /**\n * The resolved name of the application {@link Layout} this screen ultimately renders inside.\n */\n layout: string;\n\n /**\n * The content filling each slot, keyed by slot name.\n */\n slotContent: Record<string, SceneElement[]>;\n\n /**\n * The forms this screen hosts.\n */\n forms: Form[];\n\n /**\n * What this screen contributes to contribution points elsewhere in the tree.\n */\n contributions: Contribution[];\n\n /**\n * The resolved name of the {@link ScreenTemplate} this screen fills, or undefined when it fills the\n * `layout`'s own slots directly. The template's `fitsSlot` is what decides where it lands, so a screen\n * never has to state its own position.\n */\n screenTemplate?: string;\n /**\n * The behaviors attached here - what happens when someone interacts with it. Additive with whatever is\n * attached further out or further in.\n */\n behaviors?: Behavior[];\n}\n\nexport const ScreenPropertyNames: (keyof Screen)[] = ['name', 'layout', 'slotContent', 'forms', 'contributions', 'screenTemplate', 'behaviors'];\n"],"names":["ScreenPropertyNames"],"mappings":";;AAAA;AACA;MAsDaA,mBAAAA,GAAwC;AAAC,IAAA,MAAA;AAAQ,IAAA,QAAA;AAAU,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,eAAA;AAAiB,IAAA,gBAAA;AAAkB,IAAA;;;"}
1
+ {"version":3,"file":"Screen.js","sources":["../../../screens/Screen.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 { SceneElement } from '../elements';\nimport { Form } from '../forms';\nimport { Contribution } from '../contributionPoints';\nimport { Behavior } from '../interactions';\n\n/**\n * A named screen: the structure it fills, the content that fills it, the forms it hosts, and whatever it\n * contributes to contribution points elsewhere in the tree.\n *\n * A screen is an instance, not a shape. The shape comes from either the application's {@link Layout} — for\n * a screen that sits directly in the application shell — or a {@link ScreenTemplate}, for one nested\n * inside a module, feature or slice. Both declare slots; a screen only ever fills them.\n */\nexport interface Screen {\n /**\n * The screen's name.\n */\n name: string;\n\n /**\n * The resolved name of the application {@link Layout} this screen ultimately renders inside.\n */\n layout: string;\n\n /**\n * The content filling each slot, keyed by slot name.\n */\n slotContent: Record<string, SceneElement[]>;\n\n /**\n * The forms this screen hosts.\n */\n forms: Form[];\n\n /**\n * What this screen contributes to contribution points elsewhere in the tree.\n */\n contributions: Contribution[];\n\n /**\n * The resolved name of the {@link ScreenTemplate} this screen fills, or undefined when it fills the\n * `layout`'s own slots directly. The template's `fitsSlot` is what decides where it lands, so a screen\n * never has to state its own position.\n */\n screenTemplate?: string;\n /**\n * The behaviors attached here - what happens when someone interacts with it. Additive with whatever is\n * attached further out or further in.\n */\n behaviors?: Behavior[];\n\n /**\n * The modules and features, outermost first, the screen was declared in - its place in the application\n * hierarchy. It is what a destination's `module`/`feature` identity resolves against, and what a host\n * groups an unlisted screen under, so the hierarchy no longer has to be reconstructed from the\n * contributions that happen to list it. Absent or empty for a screen that sits outside any module.\n */\n path?: string[];\n}\n\nexport const ScreenPropertyNames: (keyof Screen)[] = ['name', 'layout', 'slotContent', 'forms', 'contributions', 'screenTemplate', 'behaviors', 'path'];\n"],"names":["ScreenPropertyNames"],"mappings":";;AAAA;AACA;MA8DaA,mBAAAA,GAAwC;AAAC,IAAA,MAAA;AAAQ,IAAA,QAAA;AAAU,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,eAAA;AAAiB,IAAA,gBAAA;AAAkB,IAAA,WAAA;AAAa,IAAA;;;"}
@@ -9,6 +9,7 @@ export interface NavigationItem {
9
9
  destination?: DestinationReference;
10
10
  order?: number;
11
11
  group?: string;
12
+ hierarchy?: string[];
12
13
  }
13
14
  export declare const NavigationItemPropertyNames: (keyof NavigationItem)[];
14
15
  //# sourceMappingURL=NavigationItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationItem.d.ts","sourceRoot":"","sources":["../../../contributionPoints/NavigationItem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAOpE,MAAM,WAAW,cAAc;IAE3B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,EAAE,MAAM,CAAC;IAGrB,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAG1D,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,2BAA2B,EAAE,CAAC,MAAM,cAAc,CAAC,EAE/D,CAAC"}
1
+ {"version":3,"file":"NavigationItem.d.ts","sourceRoot":"","sources":["../../../contributionPoints/NavigationItem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAOpE,MAAM,WAAW,cAAc;IAE3B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,YAAY,EAAE,MAAM,CAAC;IAGrB,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAG1D,WAAW,CAAC,EAAE,oBAAoB,CAAC;IAEnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,EAAE,CAAC,MAAM,cAAc,CAAC,EAE/D,CAAC"}
@@ -9,7 +9,8 @@ const NavigationItemPropertyNames = [
9
9
  'routeParameterBindings',
10
10
  'destination',
11
11
  'order',
12
- 'group'
12
+ 'group',
13
+ 'hierarchy'
13
14
  ];
14
15
 
15
16
  export { NavigationItemPropertyNames };
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationItem.js","sources":["../../../contributionPoints/NavigationItem.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 { BindingExpression, DestinationReference } from '../common';\n\n/**\n * A contribution to the built-in `Navigation` contribution point. How `navigate to <Screen>` becomes a\n * concrete route (URL path, query string, or native deep link) is owned by the renderer's NavBar widget,\n * not this record — this only carries the declared shape.\n */\nexport interface NavigationItem {\n /** Stable identity for this contribution, independent of the label. */\n id?: string;\n\n label: string;\n\n /** Qualified icon reference (`library:name`) for toolbar/navigation chrome. */\n icon?: string;\n\n /** Whether chrome shows icon, text, or both. */\n presentation?: string;\n\n /** Legacy screen target; prefer `destination` for new content. */\n targetScreen: string;\n\n /** Legacy parameter bindings; prefer `destination.routeParameterBindings` for new content. */\n routeParameterBindings: Record<string, BindingExpression>;\n\n /** The typed destination this item activates. */\n destination?: DestinationReference;\n\n order?: number;\n group?: string;\n}\n\nexport const NavigationItemPropertyNames: (keyof NavigationItem)[] = [\n 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group',\n];\n"],"names":["NavigationItemPropertyNames"],"mappings":"AAAA;AACA;MAkCaA,2BAAAA,GAAwD;AACjE,IAAA,IAAA;AAAM,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,cAAA;AAAgB,IAAA,wBAAA;AAA0B,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA;;;"}
1
+ {"version":3,"file":"NavigationItem.js","sources":["../../../contributionPoints/NavigationItem.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 { BindingExpression, DestinationReference } from '../common';\n\n/**\n * A contribution to the built-in `Navigation` contribution point. How `navigate to <Screen>` becomes a\n * concrete route (URL path, query string, or native deep link) is owned by the renderer's NavBar widget,\n * not this record — this only carries the declared shape.\n */\nexport interface NavigationItem {\n /** Stable identity for this contribution, independent of the label. */\n id?: string;\n\n label: string;\n\n /** Qualified icon reference (`library:name`) for toolbar/navigation chrome. */\n icon?: string;\n\n /** Whether chrome shows icon, text, or both. */\n presentation?: string;\n\n /** Legacy screen target; prefer `destination` for new content. */\n targetScreen: string;\n\n /** Legacy parameter bindings; prefer `destination.routeParameterBindings` for new content. */\n routeParameterBindings: Record<string, BindingExpression>;\n\n /** The typed destination this item activates. */\n destination?: DestinationReference;\n\n order?: number;\n group?: string;\n\n /**\n * The modules and features, outermost first, the item was declared in. A host lays navigation out as that\n * hierarchy - a group per module and per feature - instead of one flat list.\n */\n hierarchy?: string[];\n}\n\nexport const NavigationItemPropertyNames: (keyof NavigationItem)[] = [\n 'id', 'label', 'icon', 'presentation', 'targetScreen', 'routeParameterBindings', 'destination', 'order', 'group', 'hierarchy',\n];\n"],"names":["NavigationItemPropertyNames"],"mappings":"AAAA;AACA;MAwCaA,2BAAAA,GAAwD;AACjE,IAAA,IAAA;AAAM,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA,cAAA;AAAgB,IAAA,cAAA;AAAgB,IAAA,wBAAA;AAA0B,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA;;;"}
@@ -3,6 +3,7 @@ export interface CollectionItemDescriptor {
3
3
  label?: string;
4
4
  properties: PropertyDescriptor[];
5
5
  open?: boolean;
6
+ positional?: boolean;
6
7
  }
7
8
  export declare const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[];
8
9
  //# sourceMappingURL=CollectionItemDescriptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionItemDescriptor.d.ts","sourceRoot":"","sources":["../../../descriptors/CollectionItemDescriptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ/D,MAAM,WAAW,wBAAwB;IAErC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAMjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,qCAAqC,EAAE,CAAC,MAAM,wBAAwB,CAAC,EAAoC,CAAC"}
1
+ {"version":3,"file":"CollectionItemDescriptor.d.ts","sourceRoot":"","sources":["../../../descriptors/CollectionItemDescriptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAQ/D,MAAM,WAAW,wBAAwB;IAErC,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,UAAU,EAAE,kBAAkB,EAAE,CAAC;IAMjC,IAAI,CAAC,EAAE,OAAO,CAAC;IAOf,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,qCAAqC,EAAE,CAAC,MAAM,wBAAwB,CAAC,EAAkD,CAAC"}
@@ -3,7 +3,8 @@
3
3
  const CollectionItemDescriptorPropertyNames = [
4
4
  'label',
5
5
  'properties',
6
- 'open'
6
+ 'open',
7
+ 'positional'
7
8
  ];
8
9
 
9
10
  export { CollectionItemDescriptorPropertyNames };
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionItemDescriptor.js","sources":["../../../descriptors/CollectionItemDescriptor.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 type { PropertyDescriptor } from './PropertyDescriptor';\n\n/**\n * Describes the items of a `Collection` property.\n *\n * An item is a record with a stable `id` (assigned by whoever creates it, never an array index) plus the fields\n * `properties` describes. Field paths are relative to the item and are single names.\n */\nexport interface CollectionItemDescriptor {\n /** What one item is called, for a host's \"add ...\" affordance. */\n label?: string;\n\n /** The fields of one item. */\n properties: PropertyDescriptor[];\n\n /**\n * An item may carry fields `properties` does not describe. They are kept as they are and never edited. Without it a\n * field the descriptor does not describe is refused.\n */\n open?: boolean;\n}\n\nexport const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open'];\n"],"names":["CollectionItemDescriptorPropertyNames"],"mappings":"AAAA;AACA;MAwBaA,qCAAAA,GAA4E;AAAC,IAAA,OAAA;AAAS,IAAA,YAAA;AAAc,IAAA;;;"}
1
+ {"version":3,"file":"CollectionItemDescriptor.js","sources":["../../../descriptors/CollectionItemDescriptor.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 type { PropertyDescriptor } from './PropertyDescriptor';\n\n/**\n * Describes the items of a `Collection` property.\n *\n * An item is a record with a stable `id` (assigned by whoever creates it, never an array index) plus the fields\n * `properties` describes. Field paths are relative to the item and are single names.\n */\nexport interface CollectionItemDescriptor {\n /** What one item is called, for a host's \"add ...\" affordance. */\n label?: string;\n\n /** The fields of one item. */\n properties: PropertyDescriptor[];\n\n /**\n * An item may carry fields `properties` does not describe. They are kept as they are and never edited. Without it a\n * field the descriptor does not describe is refused.\n */\n open?: boolean;\n\n /**\n * The items are plain records that carry no `id`: they are the authored data of a control - a chart's datasets, a tree's nodes -\n * and are told apart by their position, as they are wherever else that data is written. Without it every item needs a unique\n * `id` of its own. An item that has an `id` keeps it.\n */\n positional?: boolean;\n}\n\nexport const CollectionItemDescriptorPropertyNames: (keyof CollectionItemDescriptor)[] = ['label', 'properties', 'open', 'positional'];\n"],"names":["CollectionItemDescriptorPropertyNames"],"mappings":"AAAA;AACA;MA+BaA,qCAAAA,GAA4E;AAAC,IAAA,OAAA;AAAS,IAAA,YAAA;AAAc,IAAA,MAAA;AAAQ,IAAA;;;"}
@@ -0,0 +1,9 @@
1
+ export declare const PropertyEditorKind: {
2
+ readonly StringList: 'stringList';
3
+ readonly NumberList: 'numberList';
4
+ readonly StringOrList: 'stringOrList';
5
+ readonly Scalar: 'scalar';
6
+ readonly StringMap: 'stringMap';
7
+ };
8
+ export type PropertyEditorKind = (typeof PropertyEditorKind)[keyof typeof PropertyEditorKind];
9
+ //# sourceMappingURL=PropertyEditorKind.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyEditorKind.d.ts","sourceRoot":"","sources":["../../../descriptors/PropertyEditorKind.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,kBAAkB;aAE3B,UAAU,EAAE,YAAY;aAGxB,UAAU,EAAE,YAAY;aAGxB,YAAY,EAAE,cAAc;aAG5B,MAAM,EAAE,QAAQ;aAGhB,SAAS,EAAE,WAAW;CAChB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * The editor kinds for values that have no fields to describe, so a host can edit them without asking for JSON text.
5
+ *
6
+ * A list of plain values is a `json` property - Scene keeps the array exactly as authored - whose `editorKind` says what
7
+ * its entries are. A record whose keys are the author's own (a row of data, keyed by column) is an `object` property
8
+ * with no `properties` and the `stringMap` kind. A host that does not know a kind falls back to its default editor.
9
+ */ const PropertyEditorKind = {
10
+ /** An ordered list of words. */ StringList: 'stringList',
11
+ /** An ordered list of numbers. */ NumberList: 'numberList',
12
+ /** One word, or an ordered list of words: a chart colour is one colour for the series or one for each point. */ StringOrList: 'stringOrList',
13
+ /** One word, number or flag - a value whose type the author chooses, such as the selected value of a control whose options carry any of them. */ Scalar: 'scalar',
14
+ /** A record of words, numbers and flags under names the author chooses. */ StringMap: 'stringMap'
15
+ };
16
+
17
+ export { PropertyEditorKind };
18
+ //# sourceMappingURL=PropertyEditorKind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropertyEditorKind.js","sources":["../../../descriptors/PropertyEditorKind.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\n/**\n * The editor kinds for values that have no fields to describe, so a host can edit them without asking for JSON text.\n *\n * A list of plain values is a `json` property - Scene keeps the array exactly as authored - whose `editorKind` says what\n * its entries are. A record whose keys are the author's own (a row of data, keyed by column) is an `object` property\n * with no `properties` and the `stringMap` kind. A host that does not know a kind falls back to its default editor.\n */\nexport const PropertyEditorKind = {\n /** An ordered list of words. */\n StringList: 'stringList',\n\n /** An ordered list of numbers. */\n NumberList: 'numberList',\n\n /** One word, or an ordered list of words: a chart colour is one colour for the series or one for each point. */\n StringOrList: 'stringOrList',\n\n /** One word, number or flag - a value whose type the author chooses, such as the selected value of a control whose options carry any of them. */\n Scalar: 'scalar',\n\n /** A record of words, numbers and flags under names the author chooses. */\n StringMap: 'stringMap',\n} as const;\n\nexport type PropertyEditorKind = (typeof PropertyEditorKind)[keyof typeof PropertyEditorKind];\n"],"names":["PropertyEditorKind","StringList","NumberList","StringOrList","Scalar","StringMap"],"mappings":"AAAA;AACA;AAEA;;;;;;UAOaA,kBAAAA,GAAqB;AAC9B,qCACAC,UAAAA,EAAY,YAAA;AAEZ,uCACAC,UAAAA,EAAY,YAAA;AAEZ,qHACAC,YAAAA,EAAc,cAAA;AAEd,sJACAC,MAAAA,EAAQ,QAAA;AAER,gFACAC,SAAAA,EAAW;AACf;;"}
@@ -1,4 +1,5 @@
1
1
  export * from './PropertyValueType';
2
+ export * from './PropertyEditorKind';
2
3
  export * from './PropertyChoice';
3
4
  export * from './PropertyConstraints';
4
5
  export * from './CollectionItemDescriptor';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../descriptors/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../descriptors/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './PropertyValueType';
2
+ export * from './PropertyEditorKind';
2
3
  export * from './PropertyChoice';
3
4
  export * from './PropertyConstraints';
4
5
  export * from './CollectionItemDescriptor';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../descriptors/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../descriptors/index.ts"],"names":[],"mappings":"AAGA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
package/dist/esm/index.js CHANGED
@@ -113,6 +113,7 @@ export { QueryArgumentBindingPropertyNames } from './queries/QueryArgumentBindin
113
113
  export { QueryResultBindingPropertyNames } from './queries/QueryResultBinding.js';
114
114
  export { QueryBindingPropertyNames } from './queries/QueryBinding.js';
115
115
  export { PropertyValueType } from './descriptors/PropertyValueType.js';
116
+ export { PropertyEditorKind } from './descriptors/PropertyEditorKind.js';
116
117
  export { PropertyChoicePropertyNames } from './descriptors/PropertyChoice.js';
117
118
  export { PropertyConstraintsPropertyNames } from './descriptors/PropertyConstraints.js';
118
119
  export { CollectionItemDescriptorPropertyNames } from './descriptors/CollectionItemDescriptor.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -10,6 +10,7 @@ export interface Screen {
10
10
  contributions: Contribution[];
11
11
  screenTemplate?: string;
12
12
  behaviors?: Behavior[];
13
+ path?: string[];
13
14
  }
14
15
  export declare const ScreenPropertyNames: (keyof Screen)[];
15
16
  //# sourceMappingURL=Screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../screens/Screen.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAU3C,MAAM,WAAW,MAAM;IAInB,IAAI,EAAE,MAAM,CAAC;IAKb,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAK5C,KAAK,EAAE,IAAI,EAAE,CAAC;IAKd,aAAa,EAAE,YAAY,EAAE,CAAC;IAO9B,cAAc,CAAC,EAAE,MAAM,CAAC;IAKxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,MAAM,CAAC,EAA+F,CAAC"}
1
+ {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../screens/Screen.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAU3C,MAAM,WAAW,MAAM;IAInB,IAAI,EAAE,MAAM,CAAC;IAKb,MAAM,EAAE,MAAM,CAAC;IAKf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAK5C,KAAK,EAAE,IAAI,EAAE,CAAC;IAKd,aAAa,EAAE,YAAY,EAAE,CAAC;IAO9B,cAAc,CAAC,EAAE,MAAM,CAAC;IAKxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IAQvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB,EAAE,CAAC,MAAM,MAAM,CAAC,EAAuG,CAAC"}
@@ -7,7 +7,8 @@ const ScreenPropertyNames = [
7
7
  'forms',
8
8
  'contributions',
9
9
  'screenTemplate',
10
- 'behaviors'
10
+ 'behaviors',
11
+ 'path'
11
12
  ];
12
13
 
13
14
  export { ScreenPropertyNames };
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.js","sources":["../../../screens/Screen.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 { SceneElement } from '../elements';\nimport { Form } from '../forms';\nimport { Contribution } from '../contributionPoints';\nimport { Behavior } from '../interactions';\n\n/**\n * A named screen: the structure it fills, the content that fills it, the forms it hosts, and whatever it\n * contributes to contribution points elsewhere in the tree.\n *\n * A screen is an instance, not a shape. The shape comes from either the application's {@link Layout} — for\n * a screen that sits directly in the application shell — or a {@link ScreenTemplate}, for one nested\n * inside a module, feature or slice. Both declare slots; a screen only ever fills them.\n */\nexport interface Screen {\n /**\n * The screen's name.\n */\n name: string;\n\n /**\n * The resolved name of the application {@link Layout} this screen ultimately renders inside.\n */\n layout: string;\n\n /**\n * The content filling each slot, keyed by slot name.\n */\n slotContent: Record<string, SceneElement[]>;\n\n /**\n * The forms this screen hosts.\n */\n forms: Form[];\n\n /**\n * What this screen contributes to contribution points elsewhere in the tree.\n */\n contributions: Contribution[];\n\n /**\n * The resolved name of the {@link ScreenTemplate} this screen fills, or undefined when it fills the\n * `layout`'s own slots directly. The template's `fitsSlot` is what decides where it lands, so a screen\n * never has to state its own position.\n */\n screenTemplate?: string;\n /**\n * The behaviors attached here - what happens when someone interacts with it. Additive with whatever is\n * attached further out or further in.\n */\n behaviors?: Behavior[];\n}\n\nexport const ScreenPropertyNames: (keyof Screen)[] = ['name', 'layout', 'slotContent', 'forms', 'contributions', 'screenTemplate', 'behaviors'];\n"],"names":["ScreenPropertyNames"],"mappings":"AAAA;AACA;MAsDaA,mBAAAA,GAAwC;AAAC,IAAA,MAAA;AAAQ,IAAA,QAAA;AAAU,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,eAAA;AAAiB,IAAA,gBAAA;AAAkB,IAAA;;;"}
1
+ {"version":3,"file":"Screen.js","sources":["../../../screens/Screen.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 { SceneElement } from '../elements';\nimport { Form } from '../forms';\nimport { Contribution } from '../contributionPoints';\nimport { Behavior } from '../interactions';\n\n/**\n * A named screen: the structure it fills, the content that fills it, the forms it hosts, and whatever it\n * contributes to contribution points elsewhere in the tree.\n *\n * A screen is an instance, not a shape. The shape comes from either the application's {@link Layout} — for\n * a screen that sits directly in the application shell — or a {@link ScreenTemplate}, for one nested\n * inside a module, feature or slice. Both declare slots; a screen only ever fills them.\n */\nexport interface Screen {\n /**\n * The screen's name.\n */\n name: string;\n\n /**\n * The resolved name of the application {@link Layout} this screen ultimately renders inside.\n */\n layout: string;\n\n /**\n * The content filling each slot, keyed by slot name.\n */\n slotContent: Record<string, SceneElement[]>;\n\n /**\n * The forms this screen hosts.\n */\n forms: Form[];\n\n /**\n * What this screen contributes to contribution points elsewhere in the tree.\n */\n contributions: Contribution[];\n\n /**\n * The resolved name of the {@link ScreenTemplate} this screen fills, or undefined when it fills the\n * `layout`'s own slots directly. The template's `fitsSlot` is what decides where it lands, so a screen\n * never has to state its own position.\n */\n screenTemplate?: string;\n /**\n * The behaviors attached here - what happens when someone interacts with it. Additive with whatever is\n * attached further out or further in.\n */\n behaviors?: Behavior[];\n\n /**\n * The modules and features, outermost first, the screen was declared in - its place in the application\n * hierarchy. It is what a destination's `module`/`feature` identity resolves against, and what a host\n * groups an unlisted screen under, so the hierarchy no longer has to be reconstructed from the\n * contributions that happen to list it. Absent or empty for a screen that sits outside any module.\n */\n path?: string[];\n}\n\nexport const ScreenPropertyNames: (keyof Screen)[] = ['name', 'layout', 'slotContent', 'forms', 'contributions', 'screenTemplate', 'behaviors', 'path'];\n"],"names":["ScreenPropertyNames"],"mappings":"AAAA;AACA;MA8DaA,mBAAAA,GAAwC;AAAC,IAAA,MAAA;AAAQ,IAAA,QAAA;AAAU,IAAA,aAAA;AAAe,IAAA,OAAA;AAAS,IAAA,eAAA;AAAiB,IAAA,gBAAA;AAAkB,IAAA,WAAA;AAAa,IAAA;;;"}