@lionrapid/core 0.1.3-beta.0 → 0.1.4-beta.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.
@@ -22,12 +22,14 @@ export class Sidebar {
22
22
  onProgressUpdate = null;
23
23
  lastFetchTime = 0;
24
24
  lastFlushTime = 0;
25
- constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick) {
25
+ userRole;
26
+ constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick, userRole = '') {
26
27
  this.api = api;
27
28
  this.locale = locale;
28
29
  this.namespace = namespace;
29
30
  this.defaultLocale = defaultLocale;
30
31
  this.onBlockClick = onBlockClick;
32
+ this.userRole = userRole;
31
33
  this.blockExtractor = new BlockExtractor();
32
34
  this.el = document.createElement('div');
33
35
  this.el.className = 'lr-sidebar';
@@ -205,6 +207,12 @@ export class Sidebar {
205
207
  }
206
208
  return previewEl;
207
209
  });
210
+ // Workflow actions (Phase 3) — only on target locales (not source).
211
+ // Visibility per role + state is enforced server-side; we hide buttons
212
+ // the server would refuse so users don't see dead ends.
213
+ if (!isSourceLocale) {
214
+ this.renderWorkflowActions(key, status);
215
+ }
208
216
  // Live preview on input (only if not locked)
209
217
  if (!isLocked) {
210
218
  textarea.addEventListener('input', () => {
@@ -230,6 +238,74 @@ export class Sidebar {
230
238
  setTimeout(() => textarea.focus(), 100);
231
239
  }
232
240
  }
241
+ /**
242
+ * Render Confirm/Reject/Mark-Ready/Unmark-Ready buttons under the preview.
243
+ * Visibility:
244
+ * - Confirm: shown when row is not locked and not already ready
245
+ * - Reject: shown when row is not locked and not already ready (server
246
+ * returns 400 if stage_index is already 0)
247
+ * - Unconfirm: shown when isConfirmed
248
+ * - Mark Ready: PM/admin only, hidden when already ready
249
+ * - Unmark Ready: PM/admin only, only when ready
250
+ * After any successful click we re-fetch status for this key so the UI
251
+ * reflects the new state and the unaffected buttons hide/show themselves.
252
+ */
253
+ renderWorkflowActions(key, status) {
254
+ const isPM = this.userRole === 'project_manager' || this.userRole === 'admin';
255
+ const isReady = !!status?.isReady;
256
+ const isLocked = !!status?.isLocked;
257
+ const isConfirmed = !!status?.isConfirmed;
258
+ const composite = `${this.locale}:${this.namespace}:${key}`;
259
+ const wrap = document.createElement('div');
260
+ wrap.className = 'lr-workflow-actions';
261
+ const addBtn = (label, action, variant = 'secondary') => {
262
+ const btn = document.createElement('button');
263
+ btn.className = `lr-wf-btn lr-wf-${variant}`;
264
+ btn.textContent = label;
265
+ btn.addEventListener('click', async () => {
266
+ btn.disabled = true;
267
+ const result = await this.api.transitionTarget(composite, action);
268
+ btn.disabled = false;
269
+ if (result) {
270
+ // Refresh status for this key so the buttons recompute
271
+ await this.refreshStatusForKey(key);
272
+ }
273
+ });
274
+ wrap.appendChild(btn);
275
+ };
276
+ // Translator-side actions (subject to can_user_edit_row server-side)
277
+ if (!isLocked && !isReady) {
278
+ addBtn('Confirm', 'confirm', 'primary');
279
+ addBtn('Reject', 'reject', 'danger');
280
+ }
281
+ if (isConfirmed && !isLocked && !isReady) {
282
+ addBtn('Unconfirm', 'unconfirm');
283
+ }
284
+ // PM-only actions
285
+ if (isPM) {
286
+ if (!isReady) {
287
+ addBtn('Mark Ready', 'mark-ready', 'primary');
288
+ }
289
+ else {
290
+ addBtn('Unmark Ready', 'unmark-ready', 'danger');
291
+ }
292
+ }
293
+ if (wrap.children.length > 0) {
294
+ this.bodyEl.appendChild(wrap);
295
+ }
296
+ }
297
+ /** Re-fetch status for one key and re-render the current view. */
298
+ async refreshStatusForKey(key) {
299
+ const fresh = await this.api.fetchStatus([key], this.locale, this.namespace);
300
+ for (const [k, s] of Object.entries(fresh)) {
301
+ this.statusMap.set(k, s);
302
+ }
303
+ if (this.current) {
304
+ // Re-render the current key to pick up new status
305
+ this.renderContent(this.current);
306
+ }
307
+ this.emitProgress();
308
+ }
233
309
  addField(label, contentFn) {
234
310
  const field = document.createElement('div');
235
311
  field.className = 'lr-field';
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/browser/editor/sidebar.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,15 @@
7
7
  * viewer mode (?__lr_snapshot={uuid}) where Inspector + Sidebar boot against
8
8
  * the snapshot root instead of document.body.
9
9
  *
10
- * Redaction strategy (block-level; Phase 1):
10
+ * Redaction strategy:
11
11
  * - Remove: <script>, <noscript>, <iframe>, <embed>, <object>, editor host
12
12
  * - Clear all form <input>, <textarea>, <select> values
13
13
  * - Replace [data-pii] / [data-sensitive] text with [REDACTED]
14
14
  * - Strip all inline event handlers (onclick, onmouseover, etc.)
15
- * - Replace text nodes that fully match an email/phone/number/URL with [REDACTED]
15
+ * - Inline PII redaction in text nodes (email / phone / URL / SSN /
16
+ * credit card / IPv4) — see pii-redactor.ts. `[data-no-redact]`
17
+ * subtrees, `<code>`, and `<pre>` are skipped.
16
18
  * - Strip CSRF/CSP meta tags and auth tokens from link/script URLs
17
- *
18
- * Fine-grained text-node redaction (mid-sentence PII) is deferred to Phase 4.
19
19
  */
20
20
  export interface SnapshotTextEntry {
21
21
  /** auto_xxxxxxxxxxxx — 12-char md5 hash, generated BEFORE redaction so it matches the live page */
@@ -7,18 +7,18 @@
7
7
  * viewer mode (?__lr_snapshot={uuid}) where Inspector + Sidebar boot against
8
8
  * the snapshot root instead of document.body.
9
9
  *
10
- * Redaction strategy (block-level; Phase 1):
10
+ * Redaction strategy:
11
11
  * - Remove: <script>, <noscript>, <iframe>, <embed>, <object>, editor host
12
12
  * - Clear all form <input>, <textarea>, <select> values
13
13
  * - Replace [data-pii] / [data-sensitive] text with [REDACTED]
14
14
  * - Strip all inline event handlers (onclick, onmouseover, etc.)
15
- * - Replace text nodes that fully match an email/phone/number/URL with [REDACTED]
15
+ * - Inline PII redaction in text nodes (email / phone / URL / SSN /
16
+ * credit card / IPv4) — see pii-redactor.ts. `[data-no-redact]`
17
+ * subtrees, `<code>`, and `<pre>` are skipped.
16
18
  * - Strip CSRF/CSP meta tags and auth tokens from link/script URLs
17
- *
18
- * Fine-grained text-node redaction (mid-sentence PII) is deferred to Phase 4.
19
19
  */
20
20
  import { BlockExtractor } from '../block-extractor.js';
21
- import { ExcludeFilter } from '../exclude-filter.js';
21
+ import { redactTextNodes } from './pii-redactor.js';
22
22
  const REDACTED = '[REDACTED]';
23
23
  /**
24
24
  * Capture the current page as a redacted snapshot.
@@ -164,28 +164,14 @@ function stripInlineEventHandlers(root) {
164
164
  }
165
165
  }
166
166
  /**
167
- * Walk text nodes and replace any that WHOLLY match a PII pattern (the entire
168
- * trimmed text is an email, phone, URL, or numeric sequence). Mid-sentence
169
- * redaction is deferred to Phase 4 (pii-redactor.ts).
167
+ * Walk text nodes and replace PII matches inline. Phase 4: matches are
168
+ * replaced where they appear ("Contact foo@bar.com today" →
169
+ * "Contact [REDACTED] today") instead of redacting the whole text node.
170
+ * See pii-redactor.ts for pattern details and the data-no-redact escape
171
+ * hatch.
170
172
  */
171
173
  function redactTextNodePII(root) {
172
- const filter = new ExcludeFilter({ emails: true, urls: true, numbers: true, phones: true }, 1);
173
- const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
174
- const nodesToRedact = [];
175
- let node = walker.nextNode();
176
- while (node) {
177
- const trimmed = (node.nodeValue || '').trim();
178
- // Require at least 5 chars to avoid false positives on things like page
179
- // numbers ("1", "23"). ExcludeFilter with minTextLength=1 only flags on
180
- // PII pattern match, not length, so length guard lives here.
181
- if (trimmed.length >= 5 && filter.shouldExclude(trimmed)) {
182
- nodesToRedact.push(node);
183
- }
184
- node = walker.nextNode();
185
- }
186
- for (const textNode of nodesToRedact) {
187
- textNode.nodeValue = REDACTED;
188
- }
174
+ redactTextNodes(root);
189
175
  }
190
176
  /**
191
177
  * Strip meta tags and link/script URLs that commonly carry auth material.
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-capture.js","sourceRoot":"","sources":["../../../src/browser/editor/snapshot-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot-capture.js","sourceRoot":"","sources":["../../../src/browser/editor/snapshot-capture.ts"],"names":[],"mappings":"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"}
@@ -174,6 +174,58 @@ var LionRapidEditor = (() => {
174
174
  cursor: not-allowed;
175
175
  }
176
176
 
177
+ /* Workflow action buttons (Phase 3) */
178
+ .lr-workflow-actions {
179
+ display: flex;
180
+ flex-wrap: wrap;
181
+ gap: 6px;
182
+ margin: 12px 0 4px;
183
+ padding: 8px 0 0;
184
+ border-top: 1px solid #e5e7eb;
185
+ }
186
+
187
+ .lr-wf-btn {
188
+ font-size: 12px;
189
+ font-weight: 500;
190
+ padding: 5px 10px;
191
+ border-radius: 4px;
192
+ border: 1px solid transparent;
193
+ cursor: pointer;
194
+ transition: background-color 0.1s;
195
+ }
196
+
197
+ .lr-wf-btn:disabled {
198
+ opacity: 0.5;
199
+ cursor: not-allowed;
200
+ }
201
+
202
+ .lr-wf-primary {
203
+ background: #2563eb;
204
+ color: white;
205
+ border-color: #2563eb;
206
+ }
207
+ .lr-wf-primary:hover:not(:disabled) {
208
+ background: #1d4ed8;
209
+ }
210
+
211
+ .lr-wf-secondary {
212
+ background: white;
213
+ color: #374151;
214
+ border-color: #d1d5db;
215
+ }
216
+ .lr-wf-secondary:hover:not(:disabled) {
217
+ background: #f3f4f6;
218
+ }
219
+
220
+ .lr-wf-danger {
221
+ background: white;
222
+ color: #b91c1c;
223
+ border-color: #fca5a5;
224
+ }
225
+ .lr-wf-danger:hover:not(:disabled) {
226
+ background: #fef2f2;
227
+ }
228
+
177
229
  /* Snapshot viewer sandbox wrapper */
178
230
  #__lr_snapshot_root {
179
231
  isolation: isolate;
@@ -1274,7 +1326,7 @@ var LionRapidEditor = (() => {
1274
1326
  // src/browser/editor/sidebar.ts
1275
1327
  var htmlSerializer2 = new HTMLSerializer();
1276
1328
  var Sidebar = class {
1277
- constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick) {
1329
+ constructor(shadowRoot, api, locale, namespace, defaultLocale, onBlockClick, userRole = "") {
1278
1330
  __publicField(this, "el");
1279
1331
  __publicField(this, "bodyEl");
1280
1332
  __publicField(this, "statusEl");
@@ -1290,11 +1342,13 @@ var LionRapidEditor = (() => {
1290
1342
  __publicField(this, "onProgressUpdate", null);
1291
1343
  __publicField(this, "lastFetchTime", 0);
1292
1344
  __publicField(this, "lastFlushTime", 0);
1345
+ __publicField(this, "userRole");
1293
1346
  this.api = api;
1294
1347
  this.locale = locale;
1295
1348
  this.namespace = namespace;
1296
1349
  this.defaultLocale = defaultLocale;
1297
1350
  this.onBlockClick = onBlockClick;
1351
+ this.userRole = userRole;
1298
1352
  this.blockExtractor = new BlockExtractor();
1299
1353
  this.el = document.createElement("div");
1300
1354
  this.el.className = "lr-sidebar";
@@ -1448,6 +1502,9 @@ var LionRapidEditor = (() => {
1448
1502
  }
1449
1503
  return previewEl;
1450
1504
  });
1505
+ if (!isSourceLocale) {
1506
+ this.renderWorkflowActions(key, status);
1507
+ }
1451
1508
  if (!isLocked) {
1452
1509
  textarea.addEventListener("input", () => {
1453
1510
  const text = textarea.value;
@@ -1470,6 +1527,69 @@ var LionRapidEditor = (() => {
1470
1527
  setTimeout(() => textarea.focus(), 100);
1471
1528
  }
1472
1529
  }
1530
+ /**
1531
+ * Render Confirm/Reject/Mark-Ready/Unmark-Ready buttons under the preview.
1532
+ * Visibility:
1533
+ * - Confirm: shown when row is not locked and not already ready
1534
+ * - Reject: shown when row is not locked and not already ready (server
1535
+ * returns 400 if stage_index is already 0)
1536
+ * - Unconfirm: shown when isConfirmed
1537
+ * - Mark Ready: PM/admin only, hidden when already ready
1538
+ * - Unmark Ready: PM/admin only, only when ready
1539
+ * After any successful click we re-fetch status for this key so the UI
1540
+ * reflects the new state and the unaffected buttons hide/show themselves.
1541
+ */
1542
+ renderWorkflowActions(key, status) {
1543
+ const isPM = this.userRole === "project_manager" || this.userRole === "admin";
1544
+ const isReady = !!status?.isReady;
1545
+ const isLocked = !!status?.isLocked;
1546
+ const isConfirmed = !!status?.isConfirmed;
1547
+ const composite = `${this.locale}:${this.namespace}:${key}`;
1548
+ const wrap = document.createElement("div");
1549
+ wrap.className = "lr-workflow-actions";
1550
+ const addBtn = (label, action, variant = "secondary") => {
1551
+ const btn = document.createElement("button");
1552
+ btn.className = `lr-wf-btn lr-wf-${variant}`;
1553
+ btn.textContent = label;
1554
+ btn.addEventListener("click", async () => {
1555
+ btn.disabled = true;
1556
+ const result = await this.api.transitionTarget(composite, action);
1557
+ btn.disabled = false;
1558
+ if (result) {
1559
+ await this.refreshStatusForKey(key);
1560
+ }
1561
+ });
1562
+ wrap.appendChild(btn);
1563
+ };
1564
+ if (!isLocked && !isReady) {
1565
+ addBtn("Confirm", "confirm", "primary");
1566
+ addBtn("Reject", "reject", "danger");
1567
+ }
1568
+ if (isConfirmed && !isLocked && !isReady) {
1569
+ addBtn("Unconfirm", "unconfirm");
1570
+ }
1571
+ if (isPM) {
1572
+ if (!isReady) {
1573
+ addBtn("Mark Ready", "mark-ready", "primary");
1574
+ } else {
1575
+ addBtn("Unmark Ready", "unmark-ready", "danger");
1576
+ }
1577
+ }
1578
+ if (wrap.children.length > 0) {
1579
+ this.bodyEl.appendChild(wrap);
1580
+ }
1581
+ }
1582
+ /** Re-fetch status for one key and re-render the current view. */
1583
+ async refreshStatusForKey(key) {
1584
+ const fresh = await this.api.fetchStatus([key], this.locale, this.namespace);
1585
+ for (const [k, s] of Object.entries(fresh)) {
1586
+ this.statusMap.set(k, s);
1587
+ }
1588
+ if (this.current) {
1589
+ this.renderContent(this.current);
1590
+ }
1591
+ this.emitProgress();
1592
+ }
1473
1593
  addField(label, contentFn) {
1474
1594
  const field = document.createElement("div");
1475
1595
  field.className = "lr-field";
@@ -1930,10 +2050,118 @@ var LionRapidEditor = (() => {
1930
2050
  return false;
1931
2051
  }
1932
2052
  }
2053
+ /**
2054
+ * Workflow transitions (Phase 3). Per-key endpoints on the integrations API
2055
+ * that mirror the dashboard's row-level transitions but are addressable by
2056
+ * composite editor key (locale:namespace:auto_xxx).
2057
+ *
2058
+ * Returns the parsed JSON on success, or null on failure (caller usually
2059
+ * shows a toast / re-fetches status).
2060
+ */
2061
+ async transitionTarget(composite, action) {
2062
+ try {
2063
+ const response = await fetch(
2064
+ `${this.apiBase}/api/integrations/targets/${encodeURIComponent(composite)}/${action}`,
2065
+ {
2066
+ method: "POST",
2067
+ headers: { "Authorization": `Bearer ${this.sessionToken}` }
2068
+ }
2069
+ );
2070
+ if (response.status === 401) {
2071
+ this.handleSessionExpired();
2072
+ return null;
2073
+ }
2074
+ if (!response.ok) {
2075
+ this.onStatus("error", `${action} failed: HTTP ${response.status}`);
2076
+ return null;
2077
+ }
2078
+ return await response.json();
2079
+ } catch (err) {
2080
+ this.onStatus("error", `${action} failed: ${err.message}`);
2081
+ return null;
2082
+ }
2083
+ }
1933
2084
  };
1934
2085
 
1935
- // src/browser/editor/snapshot-capture.ts
2086
+ // src/browser/editor/pii-redactor.ts
1936
2087
  var REDACTED = "[REDACTED]";
2088
+ var EMAIL_RE = /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}/gi;
2089
+ var PHONE_RE = /(?:\+\d{1,3}[\s.-]?)?(?:\(\d{3}\)|\d{3})[\s.-]\d{3}[\s.-]\d{4}/g;
2090
+ var SSN_RE = /\b\d{3}[\s-]\d{2}[\s-]\d{4}\b/g;
2091
+ var IPV4_RE = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g;
2092
+ var URL_RE = /\b(?:https?:\/\/|www\.)[^\s<>"']+/gi;
2093
+ var CC_CANDIDATE_RE = /\b\d(?:[ -]?\d){12,18}\b/g;
2094
+ function luhnValid(digits) {
2095
+ if (digits.length < 13 || digits.length > 19) return false;
2096
+ let sum = 0;
2097
+ let alt = false;
2098
+ for (let i = digits.length - 1; i >= 0; i--) {
2099
+ let n = digits.charCodeAt(i) - 48;
2100
+ if (n < 0 || n > 9) return false;
2101
+ if (alt) {
2102
+ n *= 2;
2103
+ if (n > 9) n -= 9;
2104
+ }
2105
+ sum += n;
2106
+ alt = !alt;
2107
+ }
2108
+ return sum % 10 === 0;
2109
+ }
2110
+ function ipv4Valid(match) {
2111
+ const parts = match.split(".");
2112
+ if (parts.length !== 4) return false;
2113
+ for (const p of parts) {
2114
+ const n = Number(p);
2115
+ if (!Number.isInteger(n) || n < 0 || n > 255) return false;
2116
+ }
2117
+ return true;
2118
+ }
2119
+ function redactString(text) {
2120
+ if (!text) return text;
2121
+ let out = text;
2122
+ out = out.replace(URL_RE, REDACTED);
2123
+ out = out.replace(EMAIL_RE, REDACTED);
2124
+ out = out.replace(PHONE_RE, REDACTED);
2125
+ out = out.replace(SSN_RE, REDACTED);
2126
+ out = out.replace(IPV4_RE, (m) => ipv4Valid(m) ? REDACTED : m);
2127
+ out = out.replace(CC_CANDIDATE_RE, (m) => {
2128
+ const digits = m.replace(/[\s-]/g, "");
2129
+ return luhnValid(digits) ? REDACTED : m;
2130
+ });
2131
+ return out;
2132
+ }
2133
+ var SKIP_TAGS3 = /* @__PURE__ */ new Set(["CODE", "PRE", "STYLE", "TEXTAREA"]);
2134
+ function redactTextNodes(root) {
2135
+ const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
2136
+ const toUpdate = [];
2137
+ let node = walker.nextNode();
2138
+ while (node) {
2139
+ if (!isInSkippedSubtree(node)) {
2140
+ const original = node.nodeValue || "";
2141
+ const replaced = redactString(original);
2142
+ if (replaced !== original) {
2143
+ toUpdate.push({ node, value: replaced });
2144
+ }
2145
+ }
2146
+ node = walker.nextNode();
2147
+ }
2148
+ for (const { node: textNode, value } of toUpdate) {
2149
+ textNode.nodeValue = value;
2150
+ }
2151
+ }
2152
+ function isInSkippedSubtree(node) {
2153
+ let cur = node.parentNode;
2154
+ while (cur && cur.nodeType === Node.ELEMENT_NODE) {
2155
+ const el = cur;
2156
+ if (SKIP_TAGS3.has(el.tagName)) return true;
2157
+ if (el.hasAttribute("data-no-redact")) return true;
2158
+ cur = el.parentNode;
2159
+ }
2160
+ return false;
2161
+ }
2162
+
2163
+ // src/browser/editor/snapshot-capture.ts
2164
+ var REDACTED2 = "[REDACTED]";
1937
2165
  function captureSnapshot() {
1938
2166
  const clone = document.documentElement.cloneNode(true);
1939
2167
  const textEntries = extractTextEntries(clone);
@@ -2001,7 +2229,7 @@ var LionRapidEditor = (() => {
2001
2229
  const sensitive = root.querySelectorAll("[data-pii], [data-sensitive]");
2002
2230
  for (let i = 0; i < sensitive.length; i++) {
2003
2231
  const el = sensitive[i];
2004
- el.textContent = REDACTED;
2232
+ el.textContent = REDACTED2;
2005
2233
  const attrs = Array.from(el.attributes);
2006
2234
  for (const attr of attrs) {
2007
2235
  if (attr.name !== "class" && attr.name !== "id" && attr.name !== "style") {
@@ -2024,24 +2252,7 @@ var LionRapidEditor = (() => {
2024
2252
  }
2025
2253
  }
2026
2254
  function redactTextNodePII(root) {
2027
- const filter = new ExcludeFilter(
2028
- { emails: true, urls: true, numbers: true, phones: true },
2029
- 1
2030
- // minTextLength=1 so single-char filler still passes through
2031
- );
2032
- const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
2033
- const nodesToRedact = [];
2034
- let node = walker.nextNode();
2035
- while (node) {
2036
- const trimmed = (node.nodeValue || "").trim();
2037
- if (trimmed.length >= 5 && filter.shouldExclude(trimmed)) {
2038
- nodesToRedact.push(node);
2039
- }
2040
- node = walker.nextNode();
2041
- }
2042
- for (const textNode of nodesToRedact) {
2043
- textNode.nodeValue = REDACTED;
2044
- }
2255
+ redactTextNodes(root);
2045
2256
  }
2046
2257
  function stripSensitiveMetaAndHeaders(root) {
2047
2258
  const sensitiveMetas = root.querySelectorAll(
@@ -2062,7 +2273,7 @@ var LionRapidEditor = (() => {
2062
2273
  let changed = false;
2063
2274
  for (const param of TOKEN_PARAMS) {
2064
2275
  if (url.searchParams.has(param)) {
2065
- url.searchParams.set(param, REDACTED);
2276
+ url.searchParams.set(param, REDACTED2);
2066
2277
  changed = true;
2067
2278
  }
2068
2279
  }
@@ -2306,7 +2517,7 @@ var LionRapidEditor = (() => {
2306
2517
  sidebar.open(resolved);
2307
2518
  inspector.clearHighlight();
2308
2519
  };
2309
- const sidebar = new Sidebar(shadow, api, currentLocale, namespace, defaultLocale, handleBlockSelect);
2520
+ const sidebar = new Sidebar(shadow, api, currentLocale, namespace, defaultLocale, handleBlockSelect, role);
2310
2521
  const inspector = new Inspector(shadow, handleBlockSelect, inspectorRoot, snapshotKeyMap);
2311
2522
  const toolbar = new Toolbar(
2312
2523
  shadow,