@contello/extension 8.21.3 → 8.21.4

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.
package/dist/index.js CHANGED
@@ -1,326 +1,349 @@
1
- // src/channel.ts
2
- var channelIdIterator = 0;
3
- var requestIdIterator = 0;
1
+ //#region src/channel.ts
2
+ let channelIdIterator = 0;
3
+ let requestIdIterator = 0;
4
4
  var ExtensionChannel = class {
5
- constructor(params) {
6
- this.params = params;
7
- }
8
- handlers = /* @__PURE__ */ new Map();
9
- listeners = /* @__PURE__ */ new Map();
10
- targetWindow;
11
- channelId;
12
- targetOrigin;
13
- isParent;
14
- populateChannelId() {
15
- if (!this.channelId) {
16
- this.channelId = this.createChannelId();
17
- }
18
- return this.channelId;
19
- }
20
- connectParent(targetOrigin, channelId) {
21
- this.channelId = channelId;
22
- this.targetOrigin = targetOrigin;
23
- this.targetWindow = window.parent;
24
- this.isParent = false;
25
- this.connect();
26
- }
27
- connectChild(targetWindow) {
28
- this.populateChannelId();
29
- this.targetWindow = targetWindow;
30
- this.targetOrigin = "*";
31
- this.isParent = true;
32
- this.connect();
33
- }
34
- getChannelId() {
35
- return this.channelId;
36
- }
37
- getIsDebug() {
38
- return this.params.debug;
39
- }
40
- getTargetOrigin() {
41
- return this.targetOrigin;
42
- }
43
- getTargetWindow() {
44
- return this.targetWindow;
45
- }
46
- connect() {
47
- window.addEventListener("message", this.handler);
48
- }
49
- disconnect() {
50
- window.removeEventListener("message", this.handler);
51
- }
52
- handler = (event) => {
53
- if (event.data.channelId !== this.channelId) {
54
- return;
55
- }
56
- if (this.targetOrigin === "*" || event.origin === this.targetOrigin) {
57
- const { channelId: requestChannelId, requestId, method } = event.data;
58
- if (requestChannelId === this.channelId) {
59
- if (this.params.debug) {
60
- console.log(this.isParent ? "Parent received" : "Child received", event.data);
61
- }
62
- if (this.handlers.has(requestId)) {
63
- this.handlers.get(requestId)(event.data);
64
- } else if (this.listeners.has(method)) {
65
- Promise.resolve(this.listeners.get(method)?.(event.data.payload)).then((responsePayload) => this.respond(event.data, responsePayload)).catch((err) => this.respondError(event.data, err));
66
- }
67
- }
68
- }
69
- };
70
- respond(request, payload) {
71
- this.send({ channelId: request.channelId, requestId: request.requestId, method: request.method, payload });
72
- }
73
- respondError(request, error) {
74
- this.send({ channelId: request.channelId, requestId: request.requestId, method: request.method, error });
75
- }
76
- on(method, handler) {
77
- this.listeners.set(method, handler);
78
- }
79
- call(method, message) {
80
- return new Promise((resolve, reject) => {
81
- const requestId = this.createRequestId();
82
- this.send({ channelId: this.channelId, requestId, method, payload: message });
83
- this.handlers.set(requestId, (data) => {
84
- this.handlers.delete(requestId);
85
- if (data.error) {
86
- return reject(data.error);
87
- }
88
- resolve(data.payload);
89
- });
90
- });
91
- }
92
- send(data) {
93
- this.targetWindow?.postMessage(data, this.targetOrigin);
94
- }
95
- createChannelId() {
96
- return `contello-channel-${++channelIdIterator}-${Math.random().toString(36).substring(2)}`;
97
- }
98
- createRequestId() {
99
- return `${this.isParent ? "parent" : "child"}-request-${++requestIdIterator}-${Math.random().toString(36).substring(2)}`;
100
- }
5
+ params;
6
+ targetWindow;
7
+ channelId;
8
+ targetOrigin;
9
+ isParent;
10
+ handler = (event) => {
11
+ if (event.data.channelId !== this.channelId) return;
12
+ if (this.targetOrigin === "*" || event.origin === this.targetOrigin) {
13
+ const { channelId: requestChannelId, requestId, method } = event.data;
14
+ if (requestChannelId === this.channelId) {
15
+ if (this.params.debug) console.log(this.isParent ? "Parent received" : "Child received", event.data);
16
+ if (this.handlers.has(requestId)) this.handlers.get(requestId)(event.data);
17
+ else if (this.listeners.has(method)) (async () => {
18
+ try {
19
+ const responsePayload = await this.listeners.get(method)?.(event.data.payload);
20
+ this.respond(event.data, responsePayload);
21
+ } catch (error) {
22
+ this.respondError(event.data, error);
23
+ }
24
+ })();
25
+ }
26
+ }
27
+ };
28
+ handlers = /* @__PURE__ */ new Map();
29
+ listeners = /* @__PURE__ */ new Map();
30
+ constructor(params) {
31
+ this.params = params;
32
+ }
33
+ connect() {
34
+ window.addEventListener("message", this.handler);
35
+ }
36
+ createChannelId() {
37
+ return `contello-channel-${++channelIdIterator}-${Math.random().toString(36).slice(2)}`;
38
+ }
39
+ createRequestId() {
40
+ return `${this.isParent ? "parent" : "child"}-request-${++requestIdIterator}-${Math.random().toString(36).slice(2)}`;
41
+ }
42
+ populateChannelId() {
43
+ if (!this.channelId) this.channelId = this.createChannelId();
44
+ return this.channelId;
45
+ }
46
+ connectParent(targetOrigin, channelId) {
47
+ this.channelId = channelId;
48
+ this.targetOrigin = targetOrigin;
49
+ this.targetWindow = window.parent;
50
+ this.isParent = false;
51
+ this.connect();
52
+ }
53
+ connectChild(targetWindow) {
54
+ this.populateChannelId();
55
+ this.targetWindow = targetWindow;
56
+ this.targetOrigin = "*";
57
+ this.isParent = true;
58
+ this.connect();
59
+ }
60
+ getChannelId() {
61
+ return this.channelId;
62
+ }
63
+ getIsDebug() {
64
+ return this.params.debug;
65
+ }
66
+ getTargetOrigin() {
67
+ return this.targetOrigin;
68
+ }
69
+ getTargetWindow() {
70
+ return this.targetWindow;
71
+ }
72
+ disconnect() {
73
+ window.removeEventListener("message", this.handler);
74
+ }
75
+ respond(request, payload) {
76
+ this.send({
77
+ channelId: request.channelId,
78
+ requestId: request.requestId,
79
+ method: request.method,
80
+ payload
81
+ });
82
+ }
83
+ respondError(request, error) {
84
+ this.send({
85
+ channelId: request.channelId,
86
+ requestId: request.requestId,
87
+ method: request.method,
88
+ error
89
+ });
90
+ }
91
+ on(method, handler) {
92
+ this.listeners.set(method, handler);
93
+ }
94
+ call(method, message) {
95
+ return new Promise((resolve, reject) => {
96
+ const requestId = this.createRequestId();
97
+ this.send({
98
+ channelId: this.channelId,
99
+ requestId,
100
+ method,
101
+ payload: message
102
+ });
103
+ this.handlers.set(requestId, (data) => {
104
+ this.handlers.delete(requestId);
105
+ if (data.error) return reject(data.error);
106
+ resolve(data.payload);
107
+ });
108
+ });
109
+ }
110
+ send(data) {
111
+ this.targetWindow?.postMessage(data, this.targetOrigin);
112
+ }
101
113
  };
102
-
103
- // src/dialog-ref.ts
114
+ //#endregion
115
+ //#region src/dialog-ref.ts
104
116
  var ContelloDialogRef = class {
105
- _id;
106
- open;
107
- connected;
108
- ready;
109
- complete;
110
- close;
111
- constructor({ channel, options, controller }) {
112
- this.open = channel.call("openDialog", options).then(({ id }) => this._id = id);
113
- this.connected = controller.connected.promise;
114
- this.ready = controller.ready.promise;
115
- this.complete = controller.complete.promise;
116
- this.close = controller.close;
117
- }
118
- get id() {
119
- return this._id;
120
- }
117
+ _id;
118
+ open;
119
+ connected;
120
+ ready;
121
+ complete;
122
+ close;
123
+ constructor({ channel, options, controller }) {
124
+ this.open = (async () => {
125
+ const { id } = await channel.call("openDialog", options);
126
+ this._id = id;
127
+ })();
128
+ this.connected = controller.connected.promise;
129
+ this.ready = controller.ready.promise;
130
+ this.complete = controller.complete.promise;
131
+ this.close = controller.close;
132
+ }
133
+ get id() {
134
+ return this._id;
135
+ }
121
136
  };
122
-
123
- // src/utils.ts
137
+ //#endregion
138
+ //#region src/utils.ts
124
139
  var Deferred = class {
125
- resolve;
126
- reject;
127
- promise = new Promise((resolve, reject) => {
128
- this.resolve = resolve;
129
- this.reject = reject;
130
- });
140
+ resolve;
141
+ reject;
142
+ promise = new Promise((resolve, reject) => {
143
+ this.resolve = resolve;
144
+ this.reject = reject;
145
+ });
131
146
  };
132
-
133
- // src/client.ts
147
+ //#endregion
148
+ //#region src/client.ts
134
149
  var ContelloClient = class {
135
- channel;
136
- projectId;
137
- resizeObserver;
138
- targetOrigin;
139
- data;
140
- dialogs = /* @__PURE__ */ new Map();
141
- constructor(targetOrigin, channelId, projectId, debug) {
142
- this.channel = new ExtensionChannel({ debug });
143
- this.channel.connectParent(targetOrigin, channelId);
144
- this.projectId = projectId;
145
- this.targetOrigin = targetOrigin;
146
- }
147
- connect() {
148
- return this.channel.call("connect").then(({ data }) => {
149
- this.channel.on("dialogConnect", ({ id }) => this.getDialogController(id)?.connected.resolve());
150
- this.channel.on("dialogReady", ({ id }) => this.getDialogController(id)?.ready.resolve());
151
- this.channel.on("dialogComplete", ({ id, value }) => this.getDialogController(id)?.complete.resolve(value));
152
- this.data = data;
153
- });
154
- }
155
- ready() {
156
- this.listenForResize();
157
- return this.channel.call("ready", { height: this.getWindowHeight() });
158
- }
159
- getAuthToken() {
160
- return this.channel.call("getAuthToken").then(({ token }) => token);
161
- }
162
- createProjectUrl() {
163
- return `${this.targetOrigin}/ui/projects/${this.projectId}`;
164
- }
165
- createEntityEntryUrl(referenceName) {
166
- return `${this.createProjectUrl()}/entities/${referenceName}`;
167
- }
168
- createSingletonEntityUrl(referenceName) {
169
- return this.createEntityEntryUrl(referenceName);
170
- }
171
- createEntityDetailUrl(referenceName, params) {
172
- const base = this.createEntityEntryUrl(referenceName);
173
- if (params.mode === "create") {
174
- return `${base}/create`;
175
- }
176
- return `${base}/${params.mode}/${params.id}`;
177
- }
178
- /**
179
- * @deprecated Use createEntityDetailUrl instead
180
- */
181
- createEntityUrl(referenceName, entityId) {
182
- return this.createEntityDetailUrl(referenceName, { mode: "edit", id: entityId });
183
- }
184
- createExtensionUrl(referenceName, params) {
185
- const path = params?.path?.join("/") || "";
186
- const query = new URLSearchParams(params?.query || {}).toString();
187
- return `${this.createProjectUrl()}/extensions/${referenceName}${path ? `/${path}` : ""}${query ? `?${query}` : ""}`;
188
- }
189
- navigate(url) {
190
- return this.channel.call("navigate", { url });
191
- }
192
- displayNotification(type, message) {
193
- return this.channel.call("displayNotification", { type, message });
194
- }
195
- openDialog(options) {
196
- const controller = {
197
- connected: new Deferred(),
198
- ready: new Deferred(),
199
- complete: new Deferred(),
200
- close: () => {
201
- if (!this.channel) {
202
- throw new Error("The channel is not yet initialized");
203
- }
204
- this.channel.call("closeDialog", { id: dialog.id });
205
- this.dialogs.delete(dialog);
206
- }
207
- };
208
- const dialog = new ContelloDialogRef({ channel: this.channel, options, controller });
209
- this.dialogs.set(dialog, controller);
210
- dialog.complete.then(() => this.dialogs.delete(dialog));
211
- return dialog;
212
- }
213
- listenForResize() {
214
- this.resizeObserver = new ResizeObserver(() => {
215
- this.channel.call("resize", { height: this.getWindowHeight() });
216
- });
217
- this.resizeObserver.observe(document.documentElement);
218
- }
219
- getWindowHeight() {
220
- return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.body.clientHeight);
221
- }
222
- getDialogController(id) {
223
- const key = Array.from(this.dialogs.keys()).find((dialog) => dialog.id === id);
224
- if (!key) {
225
- return;
226
- }
227
- return this.dialogs.get(key);
228
- }
150
+ resizeObserver;
151
+ targetOrigin;
152
+ dialogs = /* @__PURE__ */ new Map();
153
+ channel;
154
+ projectId;
155
+ data;
156
+ constructor(targetOrigin, channelId, projectId, debug) {
157
+ this.channel = new ExtensionChannel({ debug });
158
+ this.channel.connectParent(targetOrigin, channelId);
159
+ this.projectId = projectId;
160
+ this.targetOrigin = targetOrigin;
161
+ }
162
+ createEntityEntryUrl(referenceName) {
163
+ return `${this.createProjectUrl()}/entities/${referenceName}`;
164
+ }
165
+ listenForResize() {
166
+ this.resizeObserver = new ResizeObserver(() => {
167
+ this.channel.call("resize", { height: this.getWindowHeight() });
168
+ });
169
+ this.resizeObserver.observe(document.documentElement);
170
+ }
171
+ getWindowHeight() {
172
+ return Math.max(document.body.scrollHeight, document.body.offsetHeight, document.body.clientHeight);
173
+ }
174
+ getDialogController(id) {
175
+ const key = this.dialogs.keys().find((dialog) => dialog.id === id);
176
+ if (!key) return;
177
+ return this.dialogs.get(key);
178
+ }
179
+ async connect() {
180
+ const { data } = await this.channel.call("connect");
181
+ this.channel.on("dialogConnect", ({ id }) => this.getDialogController(id)?.connected.resolve());
182
+ this.channel.on("dialogReady", ({ id }) => this.getDialogController(id)?.ready.resolve());
183
+ this.channel.on("dialogComplete", ({ id, value }) => this.getDialogController(id)?.complete.resolve(value));
184
+ this.data = data;
185
+ }
186
+ ready() {
187
+ this.listenForResize();
188
+ return this.channel.call("ready", { height: this.getWindowHeight() });
189
+ }
190
+ async getAuthToken() {
191
+ const { token } = await this.channel.call("getAuthToken");
192
+ return token;
193
+ }
194
+ createProjectUrl() {
195
+ return `${this.targetOrigin}/ui/projects/${this.projectId}`;
196
+ }
197
+ createSingletonEntityUrl(referenceName) {
198
+ return this.createEntityEntryUrl(referenceName);
199
+ }
200
+ createEntityDetailUrl(referenceName, params) {
201
+ const base = this.createEntityEntryUrl(referenceName);
202
+ if (params.mode === "create") return `${base}/create`;
203
+ return `${base}/${params.mode}/${params.id}`;
204
+ }
205
+ /**
206
+ * @deprecated Use createEntityDetailUrl instead
207
+ */
208
+ createEntityUrl(referenceName, entityId) {
209
+ return this.createEntityDetailUrl(referenceName, {
210
+ mode: "edit",
211
+ id: entityId
212
+ });
213
+ }
214
+ createExtensionUrl(referenceName, params) {
215
+ const path = params?.path?.join("/") || "";
216
+ const query = new URLSearchParams(params?.query || {}).toString();
217
+ return `${this.createProjectUrl()}/extensions/${referenceName}${path ? `/${path}` : ""}${query ? `?${query}` : ""}`;
218
+ }
219
+ navigate(url) {
220
+ return this.channel.call("navigate", { url });
221
+ }
222
+ displayNotification(type, message) {
223
+ return this.channel.call("displayNotification", {
224
+ type,
225
+ message
226
+ });
227
+ }
228
+ openDialog(options) {
229
+ const controller = {
230
+ connected: new Deferred(),
231
+ ready: new Deferred(),
232
+ complete: new Deferred(),
233
+ close: () => {
234
+ if (!this.channel) throw new Error("The channel is not yet initialized");
235
+ this.channel.call("closeDialog", { id: dialog.id });
236
+ this.dialogs.delete(dialog);
237
+ }
238
+ };
239
+ const dialog = new ContelloDialogRef({
240
+ channel: this.channel,
241
+ options,
242
+ controller
243
+ });
244
+ this.dialogs.set(dialog, controller);
245
+ (async () => {
246
+ await dialog.complete;
247
+ this.dialogs.delete(dialog);
248
+ })();
249
+ return dialog;
250
+ }
229
251
  };
230
-
231
- // src/url-parser.ts
252
+ //#endregion
253
+ //#region src/url-parser.ts
232
254
  function parseUrl(trustedOrigins) {
233
- const url = new URL(location.href);
234
- const channelId = url.searchParams.get("channelId");
235
- const targetOrigin = url.searchParams.get("origin");
236
- const applicationId = url.searchParams.get("applicationId");
237
- const debug = url.searchParams.get("debug") === "true";
238
- if (!channelId || !targetOrigin || !applicationId) {
239
- throw new Error("Missing required URL parameters");
240
- }
241
- if (!trustedOrigins?.length) {
242
- throw new Error("No trusted origins provided");
243
- }
244
- if (!trustedOrigins.includes(targetOrigin)) {
245
- throw new Error(`Origin ${targetOrigin} is not trusted`);
246
- }
247
- return { channelId, targetOrigin, applicationId, debug };
255
+ const url = new URL(globalThis.location.href);
256
+ const channelId = url.searchParams.get("channelId");
257
+ const targetOrigin = url.searchParams.get("origin");
258
+ const applicationId = url.searchParams.get("applicationId");
259
+ if (!channelId || !targetOrigin || !applicationId) throw new Error("Missing required URL parameters");
260
+ if (!trustedOrigins?.length) throw new Error("No trusted origins provided");
261
+ if (!trustedOrigins.includes(targetOrigin)) throw new Error(`Origin ${targetOrigin} is not trusted`);
262
+ return {
263
+ channelId,
264
+ targetOrigin,
265
+ applicationId,
266
+ debug: url.searchParams.get("debug") === "true"
267
+ };
248
268
  }
249
-
250
- // src/custom-property.ts
251
- var ContelloCustomProperty = class _ContelloCustomProperty extends ContelloClient {
252
- static connect(options) {
253
- const { targetOrigin, channelId, applicationId, debug } = parseUrl(options.trustedOrigins);
254
- const customProperty = new _ContelloCustomProperty(targetOrigin, channelId, applicationId, debug);
255
- customProperty.validate = options.validator || (() => true);
256
- customProperty.newValue = options.newValue || (() => null);
257
- return customProperty.connect().then(() => customProperty);
258
- }
259
- validate = () => true;
260
- newValue = () => null;
261
- constructor(targetOrigin, channelId, applicationId, debug) {
262
- super(targetOrigin, channelId, applicationId, debug);
263
- this.channel.on("validate", async () => {
264
- const valid = await Promise.resolve(this.validate());
265
- return { valid };
266
- });
267
- this.channel.on("newValue", async (msg) => {
268
- await Promise.resolve(this.newValue(msg.value));
269
- });
270
- }
271
- async getValue() {
272
- const r = await this.channel.call("getValue");
273
- return r.value;
274
- }
275
- async setValue(value) {
276
- const valid = await Promise.resolve(this.validate());
277
- return await this.channel.call("setValue", { value, valid });
278
- }
279
- async getValueByPath(path) {
280
- const r = await this.channel.call("getValueByPath", { path });
281
- return r.value;
282
- }
283
- async setValueByPath(path, value) {
284
- return this.channel.call("setValueByPath", { value, path });
285
- }
269
+ //#endregion
270
+ //#region src/custom-property.ts
271
+ var ContelloCustomProperty = class ContelloCustomProperty extends ContelloClient {
272
+ static async connect(options) {
273
+ const { targetOrigin, channelId, applicationId, debug } = parseUrl(options.trustedOrigins);
274
+ const customProperty = new ContelloCustomProperty(targetOrigin, channelId, applicationId, debug);
275
+ customProperty.validate = options.validator || (() => true);
276
+ customProperty.newValue = options.newValue || (() => null);
277
+ await customProperty.connect();
278
+ return customProperty;
279
+ }
280
+ validate = () => true;
281
+ newValue = () => null;
282
+ constructor(targetOrigin, channelId, applicationId, debug) {
283
+ super(targetOrigin, channelId, applicationId, debug);
284
+ this.channel.on("validate", async () => {
285
+ return { valid: await Promise.resolve(this.validate()) };
286
+ });
287
+ this.channel.on("newValue", async (msg) => {
288
+ await Promise.resolve(this.newValue(msg.value));
289
+ });
290
+ }
291
+ async getValue() {
292
+ return (await this.channel.call("getValue")).value;
293
+ }
294
+ async setValue(value) {
295
+ const valid = await Promise.resolve(this.validate());
296
+ return await this.channel.call("setValue", {
297
+ value,
298
+ valid
299
+ });
300
+ }
301
+ async getValueByPath(path) {
302
+ return (await this.channel.call("getValueByPath", { path })).value;
303
+ }
304
+ async setValueByPath(path, value) {
305
+ return this.channel.call("setValueByPath", {
306
+ value,
307
+ path
308
+ });
309
+ }
286
310
  };
287
-
288
- // src/dialog.ts
289
- var ContelloDialog = class _ContelloDialog extends ContelloClient {
290
- static connect({ trustedOrigins }) {
291
- const { targetOrigin, channelId, applicationId, debug } = parseUrl(trustedOrigins);
292
- const dialog = new _ContelloDialog(targetOrigin, channelId, applicationId, debug);
293
- return dialog.connect().then(() => dialog);
294
- }
295
- constructor(targetOrigin, channelId, applicationId, debug) {
296
- super(targetOrigin, channelId, applicationId, debug);
297
- }
298
- close(value) {
299
- return this.channel.call("complete", { value });
300
- }
301
- };
302
-
303
- // src/extension.ts
304
- var ContelloExtension = class _ContelloExtension extends ContelloClient {
305
- static connect({ trustedOrigins }) {
306
- const { targetOrigin, channelId, applicationId, debug } = parseUrl(trustedOrigins);
307
- const extension = new _ContelloExtension(targetOrigin, channelId, applicationId, debug);
308
- return extension.connect().then(() => extension);
309
- }
310
- constructor(targetOrigin, channelId, applicationId, debug) {
311
- super(targetOrigin, channelId, applicationId, debug);
312
- }
313
- getUrlData() {
314
- return this.channel.call("getUrlData");
315
- }
316
- setBreadcrumbs(breadcrumbs) {
317
- return this.channel.call("setBreadcrumbs", { breadcrumbs });
318
- }
311
+ //#endregion
312
+ //#region src/dialog.ts
313
+ var ContelloDialog = class ContelloDialog extends ContelloClient {
314
+ static async connect({ trustedOrigins }) {
315
+ const { targetOrigin, channelId, applicationId, debug } = parseUrl(trustedOrigins);
316
+ const dialog = new ContelloDialog(targetOrigin, channelId, applicationId, debug);
317
+ await dialog.connect();
318
+ return dialog;
319
+ }
320
+ constructor(targetOrigin, channelId, applicationId, debug) {
321
+ super(targetOrigin, channelId, applicationId, debug);
322
+ }
323
+ close(value) {
324
+ return this.channel.call("complete", { value });
325
+ }
319
326
  };
320
- export {
321
- ContelloCustomProperty,
322
- ContelloDialog,
323
- ContelloDialogRef,
324
- ContelloExtension,
325
- ExtensionChannel
327
+ //#endregion
328
+ //#region src/extension.ts
329
+ var ContelloExtension = class ContelloExtension extends ContelloClient {
330
+ static async connect({ trustedOrigins }) {
331
+ const { targetOrigin, channelId, applicationId, debug } = parseUrl(trustedOrigins);
332
+ const extension = new ContelloExtension(targetOrigin, channelId, applicationId, debug);
333
+ await extension.connect();
334
+ return extension;
335
+ }
336
+ constructor(targetOrigin, channelId, applicationId, debug) {
337
+ super(targetOrigin, channelId, applicationId, debug);
338
+ }
339
+ getUrlData() {
340
+ return this.channel.call("getUrlData");
341
+ }
342
+ setBreadcrumbs(breadcrumbs) {
343
+ return this.channel.call("setBreadcrumbs", { breadcrumbs });
344
+ }
326
345
  };
346
+ //#endregion
347
+ export { ContelloCustomProperty, ContelloDialog, ContelloDialogRef, ContelloExtension, ExtensionChannel };
348
+
349
+ //# sourceMappingURL=index.js.map