@syntrologie/runtime-sdk 2.1.0-canary.8 → 2.1.0-canary.9

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 (36) hide show
  1. package/CAPABILITIES.md +273 -22
  2. package/dist/adaptives/faq/index.js +5 -5
  3. package/dist/adaptives/faq/index.js.map +4 -4
  4. package/dist/blocks/data/ComparisonBlock.js +9 -9
  5. package/dist/blocks/data/ComparisonBlock.js.map +1 -1
  6. package/dist/blocks/data/StatsBlock.js +10 -10
  7. package/dist/blocks/data/StatsBlock.js.map +1 -1
  8. package/dist/blocks/interactive/ChecklistBlock.js +12 -12
  9. package/dist/blocks/interactive/ChecklistBlock.js.map +1 -1
  10. package/dist/blocks/interactive/RatingBlock.js +12 -14
  11. package/dist/blocks/interactive/RatingBlock.js.map +1 -1
  12. package/dist/blocks/notification/NotificationBlock.js +23 -23
  13. package/dist/blocks/notification/NotificationBlock.js.map +1 -1
  14. package/dist/bootstrap.js +13 -21
  15. package/dist/bootstrap.js.map +1 -1
  16. package/dist/components/ShadowCanvasOverlay.js +23 -22
  17. package/dist/components/ShadowCanvasOverlay.js.map +1 -1
  18. package/dist/components/TileCard.js +23 -22
  19. package/dist/components/TileCard.js.map +1 -1
  20. package/dist/components/TileWheel.js +23 -1
  21. package/dist/components/TileWheel.js.map +1 -1
  22. package/dist/editorLoader.d.ts +19 -9
  23. package/dist/editorLoader.js +91 -94
  24. package/dist/editorLoader.js.map +1 -1
  25. package/dist/smart-canvas.esm.js +61 -49
  26. package/dist/smart-canvas.esm.js.map +4 -4
  27. package/dist/smart-canvas.js +21757 -24175
  28. package/dist/smart-canvas.js.map +4 -4
  29. package/dist/smart-canvas.min.js +61 -49
  30. package/dist/smart-canvas.min.js.map +4 -4
  31. package/dist/theme/defaultTheme.d.ts +2 -3
  32. package/dist/theme/defaultTheme.js +60 -51
  33. package/dist/theme/defaultTheme.js.map +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +17 -12
@@ -1,5 +1,4 @@
1
1
  import { debug, warn } from './logger';
2
- export const DEFAULT_EDITOR_URL = 'https://cdn.syntrologie.com/editor-sdk/latest/editor-sdk.js';
3
2
  /**
4
3
  * Allowed hosts for loading the editor SDK.
5
4
  * Only scripts from these hosts will be loaded.
@@ -13,6 +12,45 @@ const ALLOWED_EDITOR_HOSTS = [
13
12
  // Allow any .syntrologie.com subdomain for dev/staging
14
13
  '.syntrologie.com',
15
14
  ];
15
+ /**
16
+ * Decode a base64url-encoded JSON param from the URL.
17
+ * Returns null if param missing or malformed.
18
+ */
19
+ function decodeParam(paramName) {
20
+ if (typeof window === 'undefined')
21
+ return null;
22
+ const params = new URLSearchParams(window.location.search);
23
+ const raw = params.get(paramName);
24
+ if (!raw)
25
+ return null;
26
+ try {
27
+ const b64 = raw.replace(/-/g, '+').replace(/_/g, '/');
28
+ return JSON.parse(atob(b64));
29
+ }
30
+ catch (e) {
31
+ warn('Syntro Runtime', `Failed to decode ${paramName}:`, e);
32
+ return null;
33
+ }
34
+ }
35
+ let _cachedSource;
36
+ let _cachedConf;
37
+ /** Get decoded editor_source from URL (cached). */
38
+ export function getEditorSource() {
39
+ if (_cachedSource === undefined) {
40
+ _cachedSource = decodeParam('editor_source');
41
+ }
42
+ return _cachedSource;
43
+ }
44
+ /** Get decoded editor_conf from URL (cached). */
45
+ export function getEditorConf() {
46
+ if (_cachedConf === undefined) {
47
+ _cachedConf = decodeParam('editor_conf');
48
+ }
49
+ return _cachedConf;
50
+ }
51
+ // =============================================================================
52
+ // URL validation
53
+ // =============================================================================
16
54
  /**
17
55
  * Validates that an editor URL is from an allowed host.
18
56
  * Requires HTTPS for non-localhost URLs.
@@ -21,36 +59,22 @@ const ALLOWED_EDITOR_HOSTS = [
21
59
  function validateEditorUrl(url) {
22
60
  debug('Syntro Runtime', 'Validating editor URL:', url);
23
61
  try {
24
- // Allow relative URLs (same-origin) - they start with /
25
62
  if (url.startsWith('/')) {
26
63
  debug('Syntro Runtime', '✓ Relative URL allowed (same-origin):', url);
27
64
  return true;
28
65
  }
29
66
  const parsed = new URL(url);
30
67
  const isLocalhost = /^(localhost|127\.0\.0\.1)$/.test(parsed.hostname);
31
- debug('Syntro Runtime', 'Parsed URL:', {
32
- hostname: parsed.hostname,
33
- protocol: parsed.protocol,
34
- isLocalhost,
35
- });
36
- // Require HTTPS for non-localhost
37
68
  if (parsed.protocol !== 'https:' && !isLocalhost) {
38
69
  warn('Syntro Runtime', '❌ Editor URL must use HTTPS:', url);
39
70
  return false;
40
71
  }
41
- // Check against allowlist - handle both exact match and suffix match
42
72
  const isAllowed = ALLOWED_EDITOR_HOSTS.some((host) => {
43
73
  if (host.startsWith('.')) {
44
- // Suffix match for wildcards like '.syntrologie.com'
45
74
  return parsed.hostname.endsWith(host) || parsed.hostname === host.slice(1);
46
75
  }
47
76
  return parsed.hostname === host;
48
77
  });
49
- debug('Syntro Runtime', 'Host allowlist check:', {
50
- hostname: parsed.hostname,
51
- allowedHosts: ALLOWED_EDITOR_HOSTS,
52
- isAllowed,
53
- });
54
78
  if (!isAllowed) {
55
79
  warn('Syntro Runtime', '❌ Editor URL host not in allowlist:', parsed.hostname);
56
80
  return false;
@@ -63,103 +87,79 @@ function validateEditorUrl(url) {
63
87
  return false;
64
88
  }
65
89
  }
90
+ // =============================================================================
91
+ // Mode detection
92
+ // =============================================================================
66
93
  /**
67
- * Checks if the editor should be loaded based on URL query parameters.
68
- * Requires editor_token parameter for security (not just syntro_editor flag).
94
+ * Checks if the editor should be loaded.
95
+ * Requires editor_source + editor_conf encoded params with mode === 'editor'.
69
96
  */
70
97
  export const shouldLoadEditor = () => {
71
- var _a;
72
98
  debug('Syntro Runtime', '====== EDITOR LOAD CHECK ======');
73
- if (typeof window === 'undefined') {
74
- debug('Syntro Runtime', 'Not in browser - skipping editor');
99
+ if (typeof window === 'undefined')
75
100
  return false;
76
- }
77
- const params = new URLSearchParams(window.location.search);
78
- debug('Syntro Runtime', 'URL:', window.location.href);
79
- debug('Syntro Runtime', 'Search params:', window.location.search);
80
- // Require editor_token for security - prevents arbitrary editor activation
81
- const hasEditorFlag = params.has('syntro_editor') || params.has('syntro-editor');
82
- const hasEditorToken = params.has('editor_token');
83
- debug('Syntro Runtime', 'Editor flags:', {
84
- hasEditorFlag,
85
- hasEditorToken,
86
- syntro_editor: params.get('syntro_editor'),
87
- 'syntro-editor': params.get('syntro-editor'),
88
- editor_token: hasEditorToken ? `${(_a = params.get('editor_token')) === null || _a === void 0 ? void 0 : _a.slice(0, 10)}...` : 'none',
89
- });
90
- if (hasEditorFlag && !hasEditorToken) {
91
- warn('Syntro Runtime', '❌ Editor activation requires editor_token parameter');
101
+ const source = getEditorSource();
102
+ const conf = getEditorConf();
103
+ if (!(source === null || source === void 0 ? void 0 : source.token) || !conf) {
104
+ debug('Syntro Runtime', 'No encoded params found');
92
105
  debug('Syntro Runtime', '================================');
93
106
  return false;
94
107
  }
95
- const shouldLoad = hasEditorFlag && hasEditorToken;
96
- debug('Syntro Runtime', 'Should load editor:', shouldLoad);
108
+ const should = conf.mode === 'editor';
109
+ debug('Syntro Runtime', `mode: ${conf.mode}, shouldLoad: ${should}`);
97
110
  debug('Syntro Runtime', '================================');
98
- return shouldLoad;
111
+ return should;
99
112
  };
100
113
  /**
101
- * Checks if audit mode should be activated based on URL query parameters.
102
- * Audit mode enables element marking for product touring.
103
- * Requires audit_token parameter for security.
114
+ * Checks if audit mode should be activated.
115
+ * Requires editor_source + editor_conf encoded params with mode === 'audit'.
104
116
  */
105
117
  export const isAuditMode = () => {
106
- var _a;
107
118
  debug('Syntro Runtime', '====== AUDIT MODE CHECK ======');
108
- if (typeof window === 'undefined') {
109
- debug('Syntro Runtime', 'Not in browser - skipping audit');
110
- return false;
111
- }
112
- const params = new URLSearchParams(window.location.search);
113
- const hasAuditFlag = params.has('syntro_audit');
114
- const hasAuditToken = params.has('audit_token');
115
- const auditSessionId = params.get('audit_session_id');
116
- debug('Syntro Runtime', 'Audit flags:', {
117
- hasAuditFlag,
118
- hasAuditToken,
119
- auditSessionId: auditSessionId ? `${auditSessionId.slice(0, 8)}...` : 'none',
120
- audit_token: hasAuditToken ? `${(_a = params.get('audit_token')) === null || _a === void 0 ? void 0 : _a.slice(0, 10)}...` : 'none',
121
- });
122
- // Require syntro_audit flag to activate audit mode
123
- if (!hasAuditFlag) {
124
- debug('Syntro Runtime', 'No syntro_audit param - not in audit mode');
125
- debug('Syntro Runtime', '================================');
119
+ if (typeof window === 'undefined')
126
120
  return false;
127
- }
128
- // Require audit_token for security - prevents arbitrary audit activation
129
- if (!hasAuditToken) {
130
- warn('Syntro Runtime', ' Audit activation requires audit_token parameter');
121
+ const source = getEditorSource();
122
+ const conf = getEditorConf();
123
+ if (!(source === null || source === void 0 ? void 0 : source.token) || !conf) {
124
+ debug('Syntro Runtime', 'No encoded params found');
131
125
  debug('Syntro Runtime', '================================');
132
126
  return false;
133
127
  }
134
- debug('Syntro Runtime', '✓ Audit mode active');
128
+ const isAudit = conf.mode === 'audit';
129
+ debug('Syntro Runtime', `mode: ${conf.mode}, isAudit: ${isAudit}`);
135
130
  debug('Syntro Runtime', '================================');
136
- return true;
131
+ return isAudit;
137
132
  };
138
133
  /**
139
134
  * Checks if any SDK mode (editor or audit) should be loaded.
140
135
  * Returns the mode type if active, or null if neither.
141
136
  */
142
137
  export const getActiveSdkMode = () => {
143
- if (shouldLoadEditor())
144
- return 'editor';
145
- if (isAuditMode())
146
- return 'audit';
138
+ const conf = getEditorConf();
139
+ const source = getEditorSource();
140
+ if (!(source === null || source === void 0 ? void 0 : source.token) || !conf)
141
+ return null;
142
+ if (conf.mode === 'editor' || conf.mode === 'audit')
143
+ return conf.mode;
147
144
  return null;
148
145
  };
149
146
  /**
150
- * Gets the token from URL params (editor_token or audit_token).
151
- * Returns the token value or null if not found.
147
+ * Gets the auth token from editor_source encoded param.
152
148
  */
153
- function getTokenFromUrl() {
154
- if (typeof window === 'undefined')
155
- return null;
156
- const params = new URLSearchParams(window.location.search);
157
- return params.get('editor_token') || params.get('audit_token');
149
+ function getToken() {
150
+ var _a, _b;
151
+ return (_b = (_a = getEditorSource()) === null || _a === void 0 ? void 0 : _a.token) !== null && _b !== void 0 ? _b : null;
152
+ }
153
+ /**
154
+ * Gets the api_base from editor_source encoded param.
155
+ */
156
+ function getApiBase() {
157
+ var _a, _b;
158
+ return (_b = (_a = getEditorSource()) === null || _a === void 0 ? void 0 : _a.api_base) !== null && _b !== void 0 ? _b : null;
158
159
  }
159
160
  /**
160
161
  * Dynamically loads the Editor SDK script.
161
162
  * Validates URL against allowlist and supports SRI integrity checking.
162
- * Requires a valid token (editor_token or audit_token) in URL params.
163
163
  */
164
164
  export const loadEditorSdk = async (editorUrlOrOptions) => {
165
165
  debug('Syntro Runtime', '====== LOAD EDITOR SDK ======');
@@ -171,22 +171,22 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
171
171
  debug('Syntro Runtime', 'Editor SDK already loaded (window.SyntroEditor exists)');
172
172
  return;
173
173
  }
174
- // Handle both legacy string arg and new options object
175
174
  const options = typeof editorUrlOrOptions === 'string'
176
175
  ? { editorUrl: editorUrlOrOptions }
177
176
  : (editorUrlOrOptions !== null && editorUrlOrOptions !== void 0 ? editorUrlOrOptions : {});
178
- // Check for editor SDK URL override in query params
179
- const params = new URLSearchParams(window.location.search);
180
- const urlParamEditorSdk = params.get('syntro_editor_sdk_url');
181
- // If api_base is provided, derive editor SDK URL from it
182
- const apiBase = params.get('api_base');
177
+ // Derive editor SDK URL from api_base in editor_source
178
+ const apiBase = getApiBase();
183
179
  const derivedEditorSdk = apiBase ? `${apiBase}/api/editor/sdk/editor-sdk.js` : null;
184
- // Priority: URL param > api_base derived > options > CDN default
185
- const baseEditorUrl = urlParamEditorSdk || derivedEditorSdk || options.editorUrl || DEFAULT_EDITOR_URL;
186
- // Get token from URL params (required for SDK access)
187
- const token = getTokenFromUrl();
180
+ // Priority: api_base derived > options
181
+ const baseEditorUrl = derivedEditorSdk || options.editorUrl;
182
+ if (!baseEditorUrl) {
183
+ warn('Syntro Runtime', '❌ No editor SDK URL available (no api_base, no editorUrl option)');
184
+ debug('Syntro Runtime', '================================');
185
+ return;
186
+ }
187
+ const token = getToken();
188
188
  if (!token) {
189
- warn('Syntro Runtime', '❌ No token found in URL params. SDK requires editor_token or audit_token.');
189
+ warn('Syntro Runtime', '❌ No token found in editor_source.');
190
190
  debug('Syntro Runtime', '================================');
191
191
  return;
192
192
  }
@@ -195,7 +195,7 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
195
195
  debug('Syntro Runtime', 'Editor URL:', editorUrl);
196
196
  debug('Syntro Runtime', 'Options:', {
197
197
  hasIntegrity: !!options.integrity,
198
- isDefault: baseEditorUrl === DEFAULT_EDITOR_URL,
198
+ hasEditorUrl: !!baseEditorUrl,
199
199
  hasApiBase: !!apiBase,
200
200
  tokenPrefix: `${token.slice(0, 10)}...`,
201
201
  });
@@ -210,7 +210,6 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
210
210
  const script = document.createElement('script');
211
211
  script.src = editorUrl;
212
212
  script.async = true;
213
- // Add SRI integrity check if provided
214
213
  if (options.integrity) {
215
214
  script.integrity = options.integrity;
216
215
  script.crossOrigin = 'anonymous';
@@ -218,14 +217,12 @@ export const loadEditorSdk = async (editorUrlOrOptions) => {
218
217
  }
219
218
  script.onload = () => {
220
219
  debug('Syntro Runtime', '✓ Editor SDK script loaded successfully');
221
- debug('Syntro Runtime', 'window.SyntroEditor:', !!window.SyntroEditor);
222
220
  debug('Syntro Runtime', '================================');
223
221
  resolve();
224
222
  };
225
223
  script.onerror = (err) => {
226
224
  console.error('[Syntro Runtime] ❌ Failed to load Editor SDK:', err);
227
225
  console.error('[Syntro Runtime] URL attempted:', editorUrl);
228
- console.error('[Syntro Runtime] Check: Is the URL accessible? CORS? Network? Token valid?');
229
226
  debug('Syntro Runtime', '================================');
230
227
  reject(err);
231
228
  };
@@ -1 +1 @@
1
- {"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEhG;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,WAAW;IACX,WAAW;IACX,uDAAuD;IACvD,kBAAkB;CACnB,CAAC;AAEF;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,KAAK,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,wDAAwD;QACxD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,gBAAgB,EAAE,uCAAuC,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvE,KAAK,CAAC,gBAAgB,EAAE,aAAa,EAAE;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW;SACZ,CAAC,CAAC;QAEH,kCAAkC;QAClC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,CAAC,gBAAgB,EAAE,8BAA8B,EAAE,GAAG,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,qDAAqD;gBACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,gBAAgB,EAAE,uBAAuB,EAAE;YAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,oBAAoB;YAClC,SAAS;SACV,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,gBAAgB,EAAE,qCAAqC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/E,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,gBAAgB,EAAE,wBAAwB,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,gBAAgB,EAAE,yBAAyB,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAY,EAAE;;IAC5C,KAAK,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;IAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAElE,2EAA2E;IAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAElD,KAAK,CAAC,gBAAgB,EAAE,eAAe,EAAE;QACvC,aAAa;QACb,cAAc;QACd,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAC1C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QAC5C,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAA,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;KACzF,CAAC,CAAC;IAEH,IAAI,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,CAAC,gBAAgB,EAAE,qDAAqD,CAAC,CAAC;QAC9E,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,IAAI,cAAc,CAAC;IACnD,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,CAAC,CAAC;IAC3D,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;IAC5D,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAY,EAAE;;IACvC,KAAK,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,CAAC;IAC1D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,KAAK,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEtD,KAAK,CAAC,gBAAgB,EAAE,cAAc,EAAE;QACtC,YAAY;QACZ,aAAa;QACb,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;QAC5E,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAA,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,0CAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;KACtF,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,KAAK,CAAC,gBAAgB,EAAE,2CAA2C,CAAC,CAAC;QACrE,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yEAAyE;IACzE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,EAAE,mDAAmD,CAAC,CAAC;QAC5E,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;IAC/C,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAA8B,EAAE;IAC9D,IAAI,gBAAgB,EAAE;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,WAAW,EAAE;QAAE,OAAO,OAAO,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AASF;;;GAGG;AACH,SAAS,eAAe;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,kBAA+C,EAChC,EAAE;IACjB,KAAK,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;IAEzD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,KAAK,CAAC,gBAAgB,EAAE,2CAA2C,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,IAAK,MAAc,CAAC,YAAY,EAAE,CAAC;QACjC,KAAK,CAAC,gBAAgB,EAAE,wDAAwD,CAAC,CAAC;QAClF,OAAO;IACT,CAAC;IAED,uDAAuD;IACvD,MAAM,OAAO,GACX,OAAO,kBAAkB,KAAK,QAAQ;QACpC,CAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE;QACnC,CAAC,CAAC,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,CAAC,CAAC;IAEjC,oDAAoD;IACpD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAE9D,yDAAyD;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC;IAEpF,iEAAiE;IACjE,MAAM,aAAa,GACjB,iBAAiB,IAAI,gBAAgB,IAAI,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAEnF,sDAAsD;IACtD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CACF,gBAAgB,EAChB,2EAA2E,CAC5E,CAAC;QACF,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,6CAA6C;IAC7C,MAAM,SAAS,GAAG,GAAG,aAAa,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAExE,KAAK,CAAC,gBAAgB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAClD,KAAK,CAAC,gBAAgB,EAAE,UAAU,EAAE;QAClC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS;QACjC,SAAS,EAAE,aAAa,KAAK,kBAAkB;QAC/C,UAAU,EAAE,CAAC,CAAC,OAAO;QACrB,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;KACxC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,wDAAwD,EAAE,aAAa,CAAC,CAAC;QACvF,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,KAAK,CAAC,gBAAgB,EAAE,0CAA0C,CAAC,CAAC;IAEpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QAEpB,sCAAsC;QACtC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACrC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;YACjC,KAAK,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;YACnB,KAAK,CAAC,gBAAgB,EAAE,yCAAyC,CAAC,CAAC;YACnE,KAAK,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,CAAC,CAAE,MAAc,CAAC,YAAY,CAAC,CAAC;YAChF,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,SAAS,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;YAC5F,KAAK,CAAC,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"editorLoader.js","sourceRoot":"","sources":["../src/editorLoader.ts"],"names":[],"mappings":"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"}