@telia-ace/widget-core 1.0.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 (83) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +3 -0
  3. package/lib/action-resolver.d.ts +8 -0
  4. package/lib/action-resolver.js +19 -0
  5. package/lib/component-platform/actions-controller.d.ts +40 -0
  6. package/lib/component-platform/actions-controller.js +119 -0
  7. package/lib/component-platform/changeset-provider.d.ts +8 -0
  8. package/lib/component-platform/changeset-provider.js +2 -0
  9. package/lib/component-platform/component-controller.d.ts +38 -0
  10. package/lib/component-platform/component-controller.js +119 -0
  11. package/lib/component-platform/component-node-collection.d.ts +18 -0
  12. package/lib/component-platform/component-node-collection.js +51 -0
  13. package/lib/component-platform/component-node.d.ts +63 -0
  14. package/lib/component-platform/component-node.js +190 -0
  15. package/lib/component-platform/component-platform.d.ts +50 -0
  16. package/lib/component-platform/component-platform.js +209 -0
  17. package/lib/component-platform/component-query.d.ts +16 -0
  18. package/lib/component-platform/component-query.js +35 -0
  19. package/lib/component-platform/create-component-model.d.ts +19 -0
  20. package/lib/component-platform/create-component-model.js +126 -0
  21. package/lib/component-platform/descriptor.d.ts +8 -0
  22. package/lib/component-platform/descriptor.js +12 -0
  23. package/lib/component-platform/extend-component.d.ts +8 -0
  24. package/lib/component-platform/extend-component.js +57 -0
  25. package/lib/component-platform/index.d.ts +16 -0
  26. package/lib/component-platform/index.js +24 -0
  27. package/lib/component-platform/queries.d.ts +6 -0
  28. package/lib/component-platform/queries.js +53 -0
  29. package/lib/component-platform/state-processor.d.ts +12 -0
  30. package/lib/component-platform/state-processor.js +209 -0
  31. package/lib/component-resolver.d.ts +14 -0
  32. package/lib/component-resolver.js +49 -0
  33. package/lib/event-subscriber.d.ts +7 -0
  34. package/lib/event-subscriber.js +22 -0
  35. package/lib/index.d.ts +8 -0
  36. package/lib/index.js +39 -0
  37. package/lib/types/configuration.d.ts +86 -0
  38. package/lib/types/configuration.js +16 -0
  39. package/lib/types/index.d.ts +2 -0
  40. package/lib/types/index.js +18 -0
  41. package/lib/types/ui.d.ts +55 -0
  42. package/lib/types/ui.js +2 -0
  43. package/lib-esm/action-resolver.d.ts +8 -0
  44. package/lib-esm/action-resolver.js +17 -0
  45. package/lib-esm/component-platform/actions-controller.d.ts +40 -0
  46. package/lib-esm/component-platform/actions-controller.js +116 -0
  47. package/lib-esm/component-platform/changeset-provider.d.ts +8 -0
  48. package/lib-esm/component-platform/changeset-provider.js +1 -0
  49. package/lib-esm/component-platform/component-controller.d.ts +38 -0
  50. package/lib-esm/component-platform/component-controller.js +116 -0
  51. package/lib-esm/component-platform/component-node-collection.d.ts +18 -0
  52. package/lib-esm/component-platform/component-node-collection.js +48 -0
  53. package/lib-esm/component-platform/component-node.d.ts +63 -0
  54. package/lib-esm/component-platform/component-node.js +187 -0
  55. package/lib-esm/component-platform/component-platform.d.ts +50 -0
  56. package/lib-esm/component-platform/component-platform.js +206 -0
  57. package/lib-esm/component-platform/component-query.d.ts +16 -0
  58. package/lib-esm/component-platform/component-query.js +32 -0
  59. package/lib-esm/component-platform/create-component-model.d.ts +19 -0
  60. package/lib-esm/component-platform/create-component-model.js +121 -0
  61. package/lib-esm/component-platform/descriptor.d.ts +8 -0
  62. package/lib-esm/component-platform/descriptor.js +8 -0
  63. package/lib-esm/component-platform/extend-component.d.ts +8 -0
  64. package/lib-esm/component-platform/extend-component.js +53 -0
  65. package/lib-esm/component-platform/index.d.ts +16 -0
  66. package/lib-esm/component-platform/index.js +9 -0
  67. package/lib-esm/component-platform/queries.d.ts +6 -0
  68. package/lib-esm/component-platform/queries.js +46 -0
  69. package/lib-esm/component-platform/state-processor.d.ts +12 -0
  70. package/lib-esm/component-platform/state-processor.js +205 -0
  71. package/lib-esm/component-resolver.d.ts +14 -0
  72. package/lib-esm/component-resolver.js +47 -0
  73. package/lib-esm/event-subscriber.d.ts +7 -0
  74. package/lib-esm/event-subscriber.js +18 -0
  75. package/lib-esm/index.d.ts +8 -0
  76. package/lib-esm/index.js +5 -0
  77. package/lib-esm/types/configuration.d.ts +86 -0
  78. package/lib-esm/types/configuration.js +13 -0
  79. package/lib-esm/types/index.d.ts +2 -0
  80. package/lib-esm/types/index.js +2 -0
  81. package/lib-esm/types/ui.d.ts +55 -0
  82. package/lib-esm/types/ui.js +1 -0
  83. package/package.json +33 -0
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extendComponent = void 0;
4
+ var widget_utilities_1 = require("@telia-ace/widget-utilities");
5
+ var component_controller_1 = require("./component-controller");
6
+ var component_platform_1 = require("./component-platform");
7
+ var component_query_1 = require("./component-query");
8
+ var extendComponent = function (container, typeOrQuery, handler, ns, options) {
9
+ if (ns === void 0) { ns = (0, widget_utilities_1.uuid)(); }
10
+ if (options === void 0) { options = {}; }
11
+ return container.getAsync('components').then(function (components) {
12
+ var target;
13
+ if (typeof typeOrQuery === 'string') {
14
+ var collection = new component_query_1.ComponentQuery(components);
15
+ collection.ofType(typeOrQuery);
16
+ target = collection;
17
+ }
18
+ else {
19
+ target = typeOrQuery;
20
+ }
21
+ var managedInstances = {};
22
+ var getOrCreateController = function (node) {
23
+ var existing = managedInstances[node.id];
24
+ if (existing) {
25
+ return Promise.resolve(existing.controller);
26
+ }
27
+ return component_platform_1.ComponentPlatform.getInstance(container).then(function (platform) {
28
+ return new component_controller_1.ComponentNodeController(platform, node, ns);
29
+ });
30
+ };
31
+ components.events.subscribe('components:node-enter', function (event, _a) {
32
+ var node = _a.node;
33
+ if (target.match(node)) {
34
+ getOrCreateController(node).then(function (controller) {
35
+ Promise.resolve(handler(controller)).then(function (dispose) {
36
+ managedInstances[node.id] = {
37
+ dispose: dispose,
38
+ controller: controller,
39
+ };
40
+ });
41
+ });
42
+ }
43
+ });
44
+ components.events.subscribe('components:node-exit', function (event, _a) {
45
+ var node = _a.node;
46
+ var instance = managedInstances[node.id];
47
+ if (instance) {
48
+ instance.dispose && instance.dispose();
49
+ if (!options.reuseController) {
50
+ instance.controller.dispose();
51
+ delete managedInstances[node.id];
52
+ }
53
+ }
54
+ });
55
+ });
56
+ };
57
+ exports.extendComponent = extendComponent;
@@ -0,0 +1,16 @@
1
+ export { ActionsController } from './actions-controller';
2
+ export type { WatchActionDelegate } from './actions-controller';
3
+ export type { ChangesetProvider } from './changeset-provider';
4
+ export { AbstractComponentController, ComponentNodeController } from './component-controller';
5
+ export { ComponentNode } from './component-node';
6
+ export type { ChangesetOptions, ComponentNodeAttributes, ComponentNodeContext, ComponentNodeLayout, ComponentNodeProperties, ComponentNodeSettings, Size, } from './component-node';
7
+ export { ComponentPlatform } from './component-platform';
8
+ export type { SwitchMap } from './component-platform';
9
+ export { ComponentQuery } from './component-query';
10
+ export type { ComponentQueryRule } from './component-query';
11
+ export { createComponentModel } from './create-component-model';
12
+ export { asDescriptor } from './descriptor';
13
+ export type { ComponentDescriptor } from './descriptor';
14
+ export { extendComponent } from './extend-component';
15
+ export type { ExtendComponentHandler, ExtendComponentOptions } from './extend-component';
16
+ export { findComponent, findVisibleComponents, traverseComponents } from './queries';
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.traverseComponents = exports.findVisibleComponents = exports.findComponent = exports.extendComponent = exports.asDescriptor = exports.createComponentModel = exports.ComponentQuery = exports.ComponentPlatform = exports.ComponentNode = exports.ComponentNodeController = exports.AbstractComponentController = exports.ActionsController = void 0;
4
+ var actions_controller_1 = require("./actions-controller");
5
+ Object.defineProperty(exports, "ActionsController", { enumerable: true, get: function () { return actions_controller_1.ActionsController; } });
6
+ var component_controller_1 = require("./component-controller");
7
+ Object.defineProperty(exports, "AbstractComponentController", { enumerable: true, get: function () { return component_controller_1.AbstractComponentController; } });
8
+ Object.defineProperty(exports, "ComponentNodeController", { enumerable: true, get: function () { return component_controller_1.ComponentNodeController; } });
9
+ var component_node_1 = require("./component-node");
10
+ Object.defineProperty(exports, "ComponentNode", { enumerable: true, get: function () { return component_node_1.ComponentNode; } });
11
+ var component_platform_1 = require("./component-platform");
12
+ Object.defineProperty(exports, "ComponentPlatform", { enumerable: true, get: function () { return component_platform_1.ComponentPlatform; } });
13
+ var component_query_1 = require("./component-query");
14
+ Object.defineProperty(exports, "ComponentQuery", { enumerable: true, get: function () { return component_query_1.ComponentQuery; } });
15
+ var create_component_model_1 = require("./create-component-model");
16
+ Object.defineProperty(exports, "createComponentModel", { enumerable: true, get: function () { return create_component_model_1.createComponentModel; } });
17
+ var descriptor_1 = require("./descriptor");
18
+ Object.defineProperty(exports, "asDescriptor", { enumerable: true, get: function () { return descriptor_1.asDescriptor; } });
19
+ var extend_component_1 = require("./extend-component");
20
+ Object.defineProperty(exports, "extendComponent", { enumerable: true, get: function () { return extend_component_1.extendComponent; } });
21
+ var queries_1 = require("./queries");
22
+ Object.defineProperty(exports, "findComponent", { enumerable: true, get: function () { return queries_1.findComponent; } });
23
+ Object.defineProperty(exports, "findVisibleComponents", { enumerable: true, get: function () { return queries_1.findVisibleComponents; } });
24
+ Object.defineProperty(exports, "traverseComponents", { enumerable: true, get: function () { return queries_1.traverseComponents; } });
@@ -0,0 +1,6 @@
1
+ import { ComponentNode } from './component-node';
2
+ import { SwitchMap } from './component-platform';
3
+ export declare const traverseComponents: (root: ComponentNode, switches: SwitchMap, fn: (node: ComponentNode) => boolean | void) => void;
4
+ export declare const findVisibleComponents: (root: ComponentNode, switches: SwitchMap) => ComponentNode[];
5
+ export declare const findComponent: (root: ComponentNode, switches: SwitchMap, fn: (node: ComponentNode) => boolean) => ComponentNode | undefined;
6
+ export declare const getAncestors: (node: ComponentNode) => ComponentNode[];
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAncestors = exports.findComponent = exports.findVisibleComponents = exports.traverseComponents = void 0;
4
+ var traverseComponentsRecursive = function (nodes, switches, fn) {
5
+ for (var i = 0, y = nodes.length; i < y; i++) {
6
+ if (fn(nodes[i]) === true) {
7
+ break;
8
+ }
9
+ var branch = switches[nodes[i].id] || 'default';
10
+ var children = nodes[i].getChildren(branch);
11
+ traverseComponentsRecursive(children, switches, fn);
12
+ }
13
+ };
14
+ var traverseComponents = function (root, switches, fn) {
15
+ if (fn(root) !== true) {
16
+ var branch = switches[root.id] || 'default';
17
+ var children = root.children[branch];
18
+ traverseComponentsRecursive(children, switches, fn);
19
+ }
20
+ };
21
+ exports.traverseComponents = traverseComponents;
22
+ var findVisibleComponents = function (root, switches) {
23
+ var nodes = [];
24
+ (0, exports.traverseComponents)(root, switches, function (node) {
25
+ nodes.push(node);
26
+ });
27
+ return nodes;
28
+ };
29
+ exports.findVisibleComponents = findVisibleComponents;
30
+ var findComponent = function (root, switches, fn) {
31
+ var matched;
32
+ (0, exports.traverseComponents)(root, switches, function (node) {
33
+ if (fn(node)) {
34
+ matched = node;
35
+ return true;
36
+ }
37
+ });
38
+ return matched;
39
+ };
40
+ exports.findComponent = findComponent;
41
+ var getAncestors = function (node) {
42
+ if (!node.parent) {
43
+ return [];
44
+ }
45
+ var tree = [];
46
+ var currentNode = node.parent;
47
+ while (currentNode) {
48
+ tree.unshift(currentNode);
49
+ currentNode = currentNode.parent;
50
+ }
51
+ return tree;
52
+ };
53
+ exports.getAncestors = getAncestors;
@@ -0,0 +1,12 @@
1
+ import { ComponentPlatform } from '.';
2
+ import { ComponentNode } from './component-node';
3
+ export declare type ProcessOptions = {
4
+ context?: boolean;
5
+ properties?: boolean;
6
+ layout?: boolean;
7
+ recursive?: boolean;
8
+ };
9
+ export declare type StateProcessor = (node: ComponentNode, options: ProcessOptions) => void;
10
+ export declare type ProcessResult = Map<ComponentNode, ProcessOptions>;
11
+ export declare type ProcessReportCallback = (report: ProcessResult) => void;
12
+ export declare const createStateProcessor: (platform: ComponentPlatform, callback: ProcessReportCallback) => StateProcessor;
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.createStateProcessor = void 0;
29
+ var calculateNodeIndex = function (node) {
30
+ var currentNode = node;
31
+ var index = 0;
32
+ while (currentNode.parent) {
33
+ index = index + 1;
34
+ currentNode = currentNode.parent;
35
+ }
36
+ return index;
37
+ };
38
+ var sortQueue = function (queue) {
39
+ var mapped = queue.map(function (_a) {
40
+ var _b = __read(_a, 2), node = _b[0], options = _b[1];
41
+ return [calculateNodeIndex(node), node, options];
42
+ });
43
+ return mapped
44
+ .sort(function (_a, _b) {
45
+ var _c = __read(_a, 1), a = _c[0];
46
+ var _d = __read(_b, 1), b = _d[0];
47
+ return a - b;
48
+ })
49
+ .map(function (_a) {
50
+ var _b = __read(_a, 3), node = _b[1], options = _b[2];
51
+ return [node, options];
52
+ });
53
+ };
54
+ var isObject = function (item) {
55
+ return item && typeof item === 'object' && !Array.isArray(item);
56
+ };
57
+ var mergeDeep = function (target) {
58
+ var _a, _b;
59
+ var sources = [];
60
+ for (var _i = 1; _i < arguments.length; _i++) {
61
+ sources[_i - 1] = arguments[_i];
62
+ }
63
+ if (!sources.length)
64
+ return target;
65
+ var source = sources.shift();
66
+ if (isObject(target) && isObject(source)) {
67
+ for (var key in source) {
68
+ if (isObject(source[key])) {
69
+ if (!target[key])
70
+ Object.assign(target, (_a = {}, _a[key] = {}, _a));
71
+ mergeDeep(target[key], source[key]);
72
+ }
73
+ else {
74
+ Object.assign(target, (_b = {}, _b[key] = source[key], _b));
75
+ }
76
+ }
77
+ }
78
+ return mergeDeep.apply(void 0, __spreadArray([target], __read(sources), false));
79
+ };
80
+ var matchesBreakpoint = function (b1, b2) {
81
+ if (!b1 || b1 === 'all') {
82
+ return true;
83
+ }
84
+ return b1.some(function (b1) { return b2.indexOf(b1) > -1; });
85
+ };
86
+ var createStateProcessor = function (platform, callback) {
87
+ var nodeQueue = [];
88
+ var optionsQueue = [];
89
+ var timeout;
90
+ var flush = function () {
91
+ if (process.env.NODE_ENV !== 'production') {
92
+ console.time('state-processor.flush');
93
+ }
94
+ var processHistory = new Map();
95
+ var sortedQueue = sortQueue(nodeQueue.map(function (node, i) { return [node, optionsQueue[i]]; }));
96
+ var processNode = function (node, options) {
97
+ var _a;
98
+ var history = processHistory.get(node) || {};
99
+ // todo: this doesnt take overrides into account
100
+ var processContext = options.context && !history.context;
101
+ var processProperties = options.properties && !history.properties;
102
+ var processLayout = options.layout && !history.layout;
103
+ processHistory.set(node, {
104
+ context: history.context || processContext,
105
+ properties: history.properties || processProperties,
106
+ layout: history.layout || processLayout,
107
+ });
108
+ if (processProperties) {
109
+ node.attributes.properties = {};
110
+ }
111
+ if (processLayout) {
112
+ node.attributes.layout = {};
113
+ }
114
+ if (processContext) {
115
+ node.attributes.context = mergeDeep({}, (_a = node.parent) === null || _a === void 0 ? void 0 : _a.attributes.context);
116
+ }
117
+ var propertyResolvers = [];
118
+ var layoutResolvers = [];
119
+ var contextResolvers = [];
120
+ node.changesets.forEach(function (changeset) {
121
+ var _a = __read(changeset, 2), change = _a[0], options = _a[1];
122
+ if (matchesBreakpoint(options.breakpoints, platform.breakpoints)) {
123
+ if (processProperties) {
124
+ if (typeof change.properties === 'function') {
125
+ propertyResolvers.push(change.properties);
126
+ }
127
+ else {
128
+ mergeDeep(node.attributes.properties, change.properties);
129
+ }
130
+ }
131
+ if (processLayout) {
132
+ if (typeof change.layout === 'function') {
133
+ layoutResolvers.push(change.layout);
134
+ }
135
+ else {
136
+ mergeDeep(node.attributes.layout, change.layout);
137
+ }
138
+ }
139
+ if (processContext) {
140
+ if (typeof change.context === 'function') {
141
+ contextResolvers.push(change.context);
142
+ }
143
+ else {
144
+ mergeDeep(node.attributes.context, change.context);
145
+ }
146
+ }
147
+ }
148
+ });
149
+ propertyResolvers.forEach(function (resolver) {
150
+ mergeDeep(node.attributes.properties, resolver(node.attributes.properties));
151
+ });
152
+ layoutResolvers.forEach(function (resolver) {
153
+ mergeDeep(node.attributes.layout, resolver(node.attributes.layout));
154
+ });
155
+ contextResolvers.forEach(function (resolver) {
156
+ mergeDeep(node.attributes.context, resolver(node.attributes.context));
157
+ });
158
+ if (processContext || options.recursive) {
159
+ var branch = platform.getBranch(node);
160
+ var childOptions_1 = options.recursive
161
+ ? options
162
+ : {
163
+ context: !!processContext,
164
+ };
165
+ node.getChildren(branch).forEach(function (child) {
166
+ processNode(child, childOptions_1);
167
+ });
168
+ }
169
+ };
170
+ if (process.env.NODE_ENV !== 'production') {
171
+ console.timeEnd('state-processor.flush');
172
+ }
173
+ sortedQueue.forEach(function (_a) {
174
+ var _b = __read(_a, 2), node = _b[0], options = _b[1];
175
+ processNode(node, options);
176
+ });
177
+ nodeQueue = [];
178
+ optionsQueue = [];
179
+ callback(processHistory);
180
+ };
181
+ var schedule = function () {
182
+ clearTimeout(timeout);
183
+ timeout = setTimeout(flush, 0);
184
+ };
185
+ return function (node, options) {
186
+ var index = nodeQueue.indexOf(node);
187
+ if (index > -1) {
188
+ // if node already exist in queue, update its options
189
+ var summary = optionsQueue[index];
190
+ if (options.context) {
191
+ summary.context = true;
192
+ }
193
+ if (options.properties) {
194
+ summary.properties = true;
195
+ }
196
+ if (options.layout) {
197
+ summary.layout = true;
198
+ }
199
+ if (options.recursive) {
200
+ summary.recursive = true;
201
+ }
202
+ return schedule();
203
+ }
204
+ nodeQueue.push(node);
205
+ optionsQueue.push(options);
206
+ return schedule();
207
+ };
208
+ };
209
+ exports.createStateProcessor = createStateProcessor;
@@ -0,0 +1,14 @@
1
+ import { Logger } from '@telia-ace/widget-utilities';
2
+ import { Container, EventManager, EventSubscriptionCancellation } from '@webprovisions/platform';
3
+ export declare type ReactComponent = any | null;
4
+ export default class ComponentResolver {
5
+ aliases: Map<string, string>;
6
+ components: Map<string, any>;
7
+ events: EventManager;
8
+ logger: Logger;
9
+ constructor(container: Container);
10
+ getComponent(key: string): ReactComponent;
11
+ registerComponent(key: string, component: ReactComponent): EventSubscriptionCancellation;
12
+ registerResolver(key: string, fn: (component: ReactComponent) => void): EventSubscriptionCancellation;
13
+ registerAlias(alias: string, key: string): EventSubscriptionCancellation;
14
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var widget_utilities_1 = require("@telia-ace/widget-utilities");
4
+ var ComponentResolver = /** @class */ (function () {
5
+ function ComponentResolver(container) {
6
+ this.aliases = new Map();
7
+ this.components = new Map();
8
+ this.logger = new widget_utilities_1.Logger();
9
+ var events = container.get('$widget').events;
10
+ this.events = events;
11
+ }
12
+ ComponentResolver.prototype.getComponent = function (key) {
13
+ var alias = this.aliases.get(key);
14
+ var component = this.components.get(alias || key) || null;
15
+ if (process.env.NODE_ENV !== 'production') {
16
+ if (!component) {
17
+ this.logger.warn(alias || key, "Unable to resolve component: \"".concat(alias || key, "\". You most likely forgot to register the required plugin for: ").concat(alias || key, "."));
18
+ }
19
+ }
20
+ return component;
21
+ };
22
+ ComponentResolver.prototype.registerComponent = function (key, component) {
23
+ var _this = this;
24
+ this.components.set(key, component);
25
+ this.events.dispatch('component-resolver:resolve', key);
26
+ return function () {
27
+ _this.components.delete(key);
28
+ };
29
+ };
30
+ ComponentResolver.prototype.registerResolver = function (key, fn) {
31
+ var _this = this;
32
+ return this.events.subscribe('component-resolver:resolve', function (e, data) {
33
+ if (data === key) {
34
+ var component = _this.getComponent(key);
35
+ fn(component);
36
+ }
37
+ });
38
+ };
39
+ ComponentResolver.prototype.registerAlias = function (alias, key) {
40
+ var _this = this;
41
+ this.aliases.set(alias, key);
42
+ this.events.dispatch('component-resolver:resolve', alias);
43
+ return function () {
44
+ _this.aliases.delete(alias);
45
+ };
46
+ };
47
+ return ComponentResolver;
48
+ }());
49
+ exports.default = ComponentResolver;
@@ -0,0 +1,7 @@
1
+ import { EventListener, EventManager, EventSubscriptionCancellation } from '@webprovisions/platform';
2
+ export declare type SubscribeDelegate = (type: string, listener: EventListener) => void;
3
+ /**
4
+ * Creates s subscriber for the specified `EventManager` and provides a single cancellation
5
+ * function for all registered subscriptions.
6
+ */
7
+ export declare const createEventSubscriber: (events: EventManager) => [SubscribeDelegate, EventSubscriptionCancellation];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEventSubscriber = void 0;
4
+ /**
5
+ * Creates s subscriber for the specified `EventManager` and provides a single cancellation
6
+ * function for all registered subscriptions.
7
+ */
8
+ var createEventSubscriber = function (events) {
9
+ var subs = [];
10
+ var subscribe = function (type, listener) {
11
+ subs.push(events.subscribe(type, listener));
12
+ };
13
+ return [
14
+ subscribe,
15
+ function () {
16
+ subs.forEach(function (sub) {
17
+ sub();
18
+ });
19
+ },
20
+ ];
21
+ };
22
+ exports.createEventSubscriber = createEventSubscriber;
package/lib/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export { default as ActionResolver } from './action-resolver';
2
+ export { ActionsController, asDescriptor, ComponentNode, ComponentNodeController, ComponentPlatform, ComponentQuery, createComponentModel, extendComponent, findComponent, findVisibleComponents, traverseComponents, } from './component-platform';
3
+ export type { ChangesetOptions, ChangesetProvider, ComponentDescriptor, ComponentNodeAttributes, ComponentNodeContext, ComponentNodeLayout, ComponentNodeProperties, ComponentNodeSettings, ComponentQueryRule, ExtendComponentHandler, ExtendComponentOptions, Size, SwitchMap, WatchActionDelegate, } from './component-platform';
4
+ export { default as ComponentResolver } from './component-resolver';
5
+ export type { ReactComponent } from './component-resolver';
6
+ export { createEventSubscriber } from './event-subscriber';
7
+ export type { SubscribeDelegate } from './event-subscriber';
8
+ export * from './types';
package/lib/index.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.createEventSubscriber = exports.ComponentResolver = exports.traverseComponents = exports.findVisibleComponents = exports.findComponent = exports.extendComponent = exports.createComponentModel = exports.ComponentQuery = exports.ComponentPlatform = exports.ComponentNodeController = exports.ComponentNode = exports.asDescriptor = exports.ActionsController = exports.ActionResolver = void 0;
21
+ var action_resolver_1 = require("./action-resolver");
22
+ Object.defineProperty(exports, "ActionResolver", { enumerable: true, get: function () { return __importDefault(action_resolver_1).default; } });
23
+ var component_platform_1 = require("./component-platform");
24
+ Object.defineProperty(exports, "ActionsController", { enumerable: true, get: function () { return component_platform_1.ActionsController; } });
25
+ Object.defineProperty(exports, "asDescriptor", { enumerable: true, get: function () { return component_platform_1.asDescriptor; } });
26
+ Object.defineProperty(exports, "ComponentNode", { enumerable: true, get: function () { return component_platform_1.ComponentNode; } });
27
+ Object.defineProperty(exports, "ComponentNodeController", { enumerable: true, get: function () { return component_platform_1.ComponentNodeController; } });
28
+ Object.defineProperty(exports, "ComponentPlatform", { enumerable: true, get: function () { return component_platform_1.ComponentPlatform; } });
29
+ Object.defineProperty(exports, "ComponentQuery", { enumerable: true, get: function () { return component_platform_1.ComponentQuery; } });
30
+ Object.defineProperty(exports, "createComponentModel", { enumerable: true, get: function () { return component_platform_1.createComponentModel; } });
31
+ Object.defineProperty(exports, "extendComponent", { enumerable: true, get: function () { return component_platform_1.extendComponent; } });
32
+ Object.defineProperty(exports, "findComponent", { enumerable: true, get: function () { return component_platform_1.findComponent; } });
33
+ Object.defineProperty(exports, "findVisibleComponents", { enumerable: true, get: function () { return component_platform_1.findVisibleComponents; } });
34
+ Object.defineProperty(exports, "traverseComponents", { enumerable: true, get: function () { return component_platform_1.traverseComponents; } });
35
+ var component_resolver_1 = require("./component-resolver");
36
+ Object.defineProperty(exports, "ComponentResolver", { enumerable: true, get: function () { return __importDefault(component_resolver_1).default; } });
37
+ var event_subscriber_1 = require("./event-subscriber");
38
+ Object.defineProperty(exports, "createEventSubscriber", { enumerable: true, get: function () { return event_subscriber_1.createEventSubscriber; } });
39
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,86 @@
1
+ import { ComponentNodeLayout } from '../component-platform';
2
+ export declare type ComponentSettings = {
3
+ type: string;
4
+ context?: Context;
5
+ properties?: Properties;
6
+ layout?: ComponentNodeLayout;
7
+ tags?: string[];
8
+ children?: ComponentReference[];
9
+ };
10
+ declare enum HistoryMode {
11
+ scopedHash = "scopedHash",
12
+ hash = "hash",
13
+ browser = "browser",
14
+ memory = "memory"
15
+ }
16
+ export declare type RoutingSettings = {
17
+ initialPath: string;
18
+ mode: HistoryMode;
19
+ basePath?: string;
20
+ };
21
+ export declare type ComponentReference = string | [string, ...ComponentReferenceOverride[]];
22
+ export declare type Properties = {
23
+ [key: string]: any;
24
+ };
25
+ export declare type Context = {
26
+ [key: string]: any;
27
+ };
28
+ export declare type ViewDefinition = {
29
+ path: string | string[];
30
+ entry: ComponentReference;
31
+ };
32
+ export declare type Breakpoints = 'all' | string[];
33
+ export declare type ComponentReferenceOverride = {
34
+ breakpoints?: Breakpoints;
35
+ size?: number | 'full' | 'none';
36
+ indent?: number;
37
+ tags?: string[];
38
+ context?: Context;
39
+ properties?: Properties;
40
+ };
41
+ export declare type ComponentDefinitionMap = {
42
+ [name: string]: ComponentSettings;
43
+ };
44
+ export declare type WidgetSettings = {
45
+ data: {
46
+ projection: string;
47
+ site?: 'current' | 'referrer';
48
+ forceHttps?: boolean;
49
+ };
50
+ components: ComponentDefinitionMap;
51
+ entry: ComponentReference;
52
+ breakpoints: {
53
+ [name: string]: string;
54
+ };
55
+ routing: RoutingSettings;
56
+ views: {
57
+ [name: string]: ViewDefinition;
58
+ };
59
+ integrationResources: {
60
+ path: string;
61
+ mediaQueriesSupported: boolean;
62
+ }[];
63
+ trigger?: {
64
+ symbol?: Symbol;
65
+ label?: string;
66
+ action?: string;
67
+ };
68
+ activate?: boolean | null;
69
+ plugins?: {
70
+ [key: string]: any;
71
+ };
72
+ };
73
+ export declare type MinMax = {
74
+ min: string;
75
+ max: string;
76
+ };
77
+ declare type Symbol = {
78
+ type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;
79
+ content: string;
80
+ };
81
+ export declare enum WidgetRenderState {
82
+ open = "open",
83
+ closed = "closed",
84
+ hidden = "hidden"
85
+ }
86
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WidgetRenderState = void 0;
4
+ var HistoryMode;
5
+ (function (HistoryMode) {
6
+ HistoryMode["scopedHash"] = "scopedHash";
7
+ HistoryMode["hash"] = "hash";
8
+ HistoryMode["browser"] = "browser";
9
+ HistoryMode["memory"] = "memory";
10
+ })(HistoryMode || (HistoryMode = {}));
11
+ var WidgetRenderState;
12
+ (function (WidgetRenderState) {
13
+ WidgetRenderState["open"] = "open";
14
+ WidgetRenderState["closed"] = "closed";
15
+ WidgetRenderState["hidden"] = "hidden";
16
+ })(WidgetRenderState = exports.WidgetRenderState || (exports.WidgetRenderState = {}));
@@ -0,0 +1,2 @@
1
+ export * from './configuration';
2
+ export * from './ui';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./configuration"), exports);
18
+ __exportStar(require("./ui"), exports);