@embeddables/cli 0.15.0-beta.0 → 0.15.1-beta.1
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/.prompts/custom/build-funnel.md +1 -1
- package/.prompts/embeddables-cli.md +1 -1
- package/.prompts/short-rule-body.md +2 -2
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +3 -0
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +24 -16
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +20 -59
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/save.js +8 -1
- package/dist/commands/save.js.map +1 -1
- package/dist/commands/update-project-files.d.ts.map +1 -1
- package/dist/commands/update-project-files.js +45 -26
- package/dist/commands/update-project-files.js.map +1 -1
- package/dist/compiler/errors.d.ts +13 -0
- package/dist/compiler/errors.d.ts.map +1 -1
- package/dist/compiler/errors.js +16 -0
- package/dist/compiler/errors.js.map +1 -1
- package/dist/compiler/reverse.d.ts.map +1 -1
- package/dist/compiler/reverse.js +8 -7
- package/dist/compiler/reverse.js.map +1 -1
- package/dist/constants.d.ts +8 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +9 -1
- package/dist/constants.js.map +1 -1
- package/dist/helpers/reverseCompileWithRetry.d.ts +60 -0
- package/dist/helpers/reverseCompileWithRetry.d.ts.map +1 -0
- package/dist/helpers/reverseCompileWithRetry.js +96 -0
- package/dist/helpers/reverseCompileWithRetry.js.map +1 -0
- package/dist/proxy/injectWorkbench.d.ts +4 -0
- package/dist/proxy/injectWorkbench.d.ts.map +1 -1
- package/dist/proxy/injectWorkbench.js +5 -1
- package/dist/proxy/injectWorkbench.js.map +1 -1
- package/dist/proxy/server.d.ts +1 -0
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/server.js +12 -0
- package/dist/proxy/server.js.map +1 -1
- package/dist/workbench/FeedbackPanel.d.ts +4 -0
- package/dist/workbench/FeedbackPanel.d.ts.map +1 -1
- package/dist/workbench/FeedbackPanel.js +924 -57
- package/dist/workbench/FeedbackPanel.js.map +1 -1
- package/dist/workbench/FieldEditorPanel.d.ts.map +1 -1
- package/dist/workbench/FieldEditorPanel.js +3 -2
- package/dist/workbench/FieldEditorPanel.js.map +1 -1
- package/dist/workbench/InspectorPanel.d.ts.map +1 -1
- package/dist/workbench/InspectorPanel.js +3 -172
- package/dist/workbench/InspectorPanel.js.map +1 -1
- package/dist/workbench/MediaLightbox.d.ts +20 -0
- package/dist/workbench/MediaLightbox.d.ts.map +1 -0
- package/dist/workbench/MediaLightbox.js +76 -0
- package/dist/workbench/MediaLightbox.js.map +1 -0
- package/dist/workbench/PageThumbnailStrip.d.ts +14 -1
- package/dist/workbench/PageThumbnailStrip.d.ts.map +1 -1
- package/dist/workbench/PageThumbnailStrip.js +227 -47
- package/dist/workbench/PageThumbnailStrip.js.map +1 -1
- package/dist/workbench/WorkbenchApp.d.ts +8 -1
- package/dist/workbench/WorkbenchApp.d.ts.map +1 -1
- package/dist/workbench/WorkbenchApp.js +14 -5
- package/dist/workbench/WorkbenchApp.js.map +1 -1
- package/dist/workbench/WorkbenchModalOverlay.d.ts +20 -0
- package/dist/workbench/WorkbenchModalOverlay.d.ts.map +1 -0
- package/dist/workbench/WorkbenchModalOverlay.js +45 -0
- package/dist/workbench/WorkbenchModalOverlay.js.map +1 -0
- package/dist/workbench/cloudflare/public/_headers +4 -0
- package/dist/workbench/cloudflare/public/workbench.css +2148 -0
- package/dist/workbench/cloudflare/public/workbench.js +709 -0
- package/dist/workbench/cloudflare/wrangler.jsonc +9 -0
- package/dist/workbench/conditionEvaluator.d.ts +6 -0
- package/dist/workbench/conditionEvaluator.d.ts.map +1 -0
- package/dist/workbench/conditionEvaluator.js +111 -0
- package/dist/workbench/conditionEvaluator.js.map +1 -0
- package/dist/workbench/feedbackSessionsStorage.d.ts +24 -0
- package/dist/workbench/feedbackSessionsStorage.d.ts.map +1 -0
- package/dist/workbench/feedbackSessionsStorage.js +80 -0
- package/dist/workbench/feedbackSessionsStorage.js.map +1 -0
- package/dist/workbench/index.d.ts +4 -0
- package/dist/workbench/index.d.ts.map +1 -1
- package/dist/workbench/index.js +42 -2
- package/dist/workbench/index.js.map +1 -1
- package/dist/workbench/pageKeyDisplay.d.ts +9 -0
- package/dist/workbench/pageKeyDisplay.d.ts.map +1 -0
- package/dist/workbench/pageKeyDisplay.js +18 -0
- package/dist/workbench/pageKeyDisplay.js.map +1 -0
- package/dist/workbench/stringUtils.d.ts +6 -0
- package/dist/workbench/stringUtils.d.ts.map +1 -0
- package/dist/workbench/stringUtils.js +24 -0
- package/dist/workbench/stringUtils.js.map +1 -0
- package/dist/workbench/types.d.ts +4 -0
- package/dist/workbench/types.d.ts.map +1 -1
- package/dist/workbench/workbench.css +542 -8
- package/dist/workbench/workbench.js +644 -12
- package/dist/workbench/workbenchShadowPortal.d.ts +4 -0
- package/dist/workbench/workbenchShadowPortal.d.ts.map +1 -0
- package/dist/workbench/workbenchShadowPortal.js +18 -0
- package/dist/workbench/workbenchShadowPortal.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditionEvaluator.d.ts","sourceRoot":"","sources":["../../src/workbench/conditionEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,qBAAqB,CAAA;AAqBpE,wBAAgB,yBAAyB,CAAC,EACxC,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,CAAC,EAAE,SAAS,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,GAAG,OAAO,CAwGV"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const TRUE = '_true';
|
|
2
|
+
const FALSE = '_false';
|
|
3
|
+
const NO_VALUE = '_no_value';
|
|
4
|
+
function exists(value) {
|
|
5
|
+
return value !== undefined && value !== null;
|
|
6
|
+
}
|
|
7
|
+
function valueMapper(v) {
|
|
8
|
+
switch (v) {
|
|
9
|
+
case TRUE:
|
|
10
|
+
return [true];
|
|
11
|
+
case FALSE:
|
|
12
|
+
return [false];
|
|
13
|
+
default:
|
|
14
|
+
return [v];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function doesElementPassConditions({ conditions, userData, }) {
|
|
18
|
+
if (!conditions)
|
|
19
|
+
return true;
|
|
20
|
+
if (!userData)
|
|
21
|
+
return false;
|
|
22
|
+
let conditionsList = conditions;
|
|
23
|
+
if (!Array.isArray(conditionsList))
|
|
24
|
+
conditionsList = [conditionsList];
|
|
25
|
+
let conditionCompliance = true;
|
|
26
|
+
for (let i = 0; i < conditionsList.length; i++) {
|
|
27
|
+
try {
|
|
28
|
+
const condition = conditionsList[i];
|
|
29
|
+
const { key, operator, values } = condition;
|
|
30
|
+
const seenValues = new Set((values || []).reduce((acc, v) => {
|
|
31
|
+
acc.push(...valueMapper(v));
|
|
32
|
+
return acc;
|
|
33
|
+
}, []));
|
|
34
|
+
const valuesInCondition = Array.from(seenValues);
|
|
35
|
+
const selectedValues = userData[key];
|
|
36
|
+
switch (operator) {
|
|
37
|
+
case '==': {
|
|
38
|
+
conditionCompliance = Array.isArray(selectedValues)
|
|
39
|
+
? valuesInCondition.some((value) => selectedValues.includes(value) ||
|
|
40
|
+
(value === NO_VALUE && selectedValues.some((v) => !exists(v))))
|
|
41
|
+
: (valuesInCondition && valuesInCondition.includes(selectedValues)) ||
|
|
42
|
+
(valuesInCondition.includes(NO_VALUE) && !exists(selectedValues));
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
case '!=': {
|
|
46
|
+
conditionCompliance = Array.isArray(selectedValues)
|
|
47
|
+
? !valuesInCondition.some((value) => (selectedValues && selectedValues.includes(value)) ||
|
|
48
|
+
(value === NO_VALUE && selectedValues.every((v) => exists(v))))
|
|
49
|
+
: !valuesInCondition ||
|
|
50
|
+
(!valuesInCondition.includes(selectedValues) &&
|
|
51
|
+
(valuesInCondition.includes(NO_VALUE) ? exists(selectedValues) : true));
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case 'exists': {
|
|
55
|
+
conditionCompliance = Array.isArray(selectedValues)
|
|
56
|
+
? Boolean(selectedValues.filter(exists).length)
|
|
57
|
+
: exists(selectedValues);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case '!exists': {
|
|
61
|
+
conditionCompliance = Array.isArray(selectedValues)
|
|
62
|
+
? selectedValues.filter(exists).length === 0
|
|
63
|
+
: !exists(selectedValues);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case 'is-true': {
|
|
67
|
+
conditionCompliance = selectedValues === true;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'is-not-true': {
|
|
71
|
+
conditionCompliance = selectedValues !== true;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case 'is-false': {
|
|
75
|
+
conditionCompliance = selectedValues === false;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'is-not-false': {
|
|
79
|
+
conditionCompliance = selectedValues !== false;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case 'is-empty': {
|
|
83
|
+
conditionCompliance =
|
|
84
|
+
selectedValues === undefined ||
|
|
85
|
+
selectedValues === null ||
|
|
86
|
+
(Array.isArray(selectedValues) && selectedValues.length === 0) ||
|
|
87
|
+
(typeof selectedValues === 'string' && selectedValues.trim() === '');
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case 'is-not-empty': {
|
|
91
|
+
conditionCompliance =
|
|
92
|
+
selectedValues !== undefined &&
|
|
93
|
+
selectedValues !== null &&
|
|
94
|
+
((Array.isArray(selectedValues) && selectedValues.length !== 0) ||
|
|
95
|
+
(typeof selectedValues === 'string' && selectedValues.trim() !== ''));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
default:
|
|
99
|
+
conditionCompliance = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error(error);
|
|
104
|
+
conditionCompliance = false;
|
|
105
|
+
}
|
|
106
|
+
if (!conditionCompliance)
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
return conditionCompliance;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=conditionEvaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditionEvaluator.js","sourceRoot":"","sources":["../../src/workbench/conditionEvaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type StoredFeedbackSessionRef = {
|
|
2
|
+
reviewId: string;
|
|
3
|
+
projectId: string;
|
|
4
|
+
embeddableId: string;
|
|
5
|
+
addedAt: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function readMyFeedbackSessionRefs(): StoredFeedbackSessionRef[];
|
|
8
|
+
export declare function readSharedFeedbackSessionRefs(): StoredFeedbackSessionRef[];
|
|
9
|
+
export declare function appendMyFeedbackSession(entry: {
|
|
10
|
+
reviewId: string;
|
|
11
|
+
projectId: string;
|
|
12
|
+
embeddableId: string;
|
|
13
|
+
}): void;
|
|
14
|
+
/** Remove a session from the local "My" list only (does not delete remote storage). */
|
|
15
|
+
export declare function removeMyFeedbackSession(reviewId: string, projectId: string): void;
|
|
16
|
+
export declare function appendSharedFeedbackSession(entry: {
|
|
17
|
+
reviewId: string;
|
|
18
|
+
projectId: string;
|
|
19
|
+
embeddableId: string;
|
|
20
|
+
}): void;
|
|
21
|
+
/** Remove a session from the local "Shared with me" list only (does not delete remote storage). */
|
|
22
|
+
export declare function removeSharedFeedbackSession(reviewId: string, projectId: string): void;
|
|
23
|
+
export declare function openFeedbackSessionInPageUrl(reviewId: string, projectId: string): void;
|
|
24
|
+
//# sourceMappingURL=feedbackSessionsStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbackSessionsStorage.d.ts","sourceRoot":"","sources":["../../src/workbench/feedbackSessionsStorage.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AA8CD,wBAAgB,yBAAyB,IAAI,wBAAwB,EAAE,CAEtE;AAED,wBAAgB,6BAA6B,IAAI,wBAAwB,EAAE,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,IAAI,CAMP;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB,GAAG,IAAI,CAMP;AAED,mGAAmG;AACnG,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIrF;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKtF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const LS_MY = 'embeddables:feedback:sessions:my';
|
|
2
|
+
const LS_SHARED = 'embeddables:feedback:sessions:shared';
|
|
3
|
+
function isValidRef(x) {
|
|
4
|
+
if (!x || typeof x !== 'object')
|
|
5
|
+
return false;
|
|
6
|
+
const o = x;
|
|
7
|
+
return (typeof o.reviewId === 'string' &&
|
|
8
|
+
typeof o.projectId === 'string' &&
|
|
9
|
+
typeof o.embeddableId === 'string' &&
|
|
10
|
+
typeof o.addedAt === 'string');
|
|
11
|
+
}
|
|
12
|
+
function readList(key) {
|
|
13
|
+
try {
|
|
14
|
+
const raw = window.localStorage.getItem(key);
|
|
15
|
+
if (!raw)
|
|
16
|
+
return [];
|
|
17
|
+
const parsed = JSON.parse(raw);
|
|
18
|
+
if (!Array.isArray(parsed))
|
|
19
|
+
return [];
|
|
20
|
+
return parsed.filter(isValidRef);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function writeList(key, list) {
|
|
27
|
+
try {
|
|
28
|
+
window.localStorage.setItem(key, JSON.stringify(list));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// ignore quota / private mode
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function refKey(r) {
|
|
35
|
+
return `${r.reviewId}\0${r.projectId}`;
|
|
36
|
+
}
|
|
37
|
+
function upsertFront(list, entry) {
|
|
38
|
+
const k = refKey(entry);
|
|
39
|
+
const filtered = list.filter((r) => refKey(r) !== k);
|
|
40
|
+
return [entry, ...filtered];
|
|
41
|
+
}
|
|
42
|
+
export function readMyFeedbackSessionRefs() {
|
|
43
|
+
return readList(LS_MY);
|
|
44
|
+
}
|
|
45
|
+
export function readSharedFeedbackSessionRefs() {
|
|
46
|
+
return readList(LS_SHARED);
|
|
47
|
+
}
|
|
48
|
+
export function appendMyFeedbackSession(entry) {
|
|
49
|
+
const row = {
|
|
50
|
+
...entry,
|
|
51
|
+
addedAt: new Date().toISOString(),
|
|
52
|
+
};
|
|
53
|
+
writeList(LS_MY, upsertFront(readList(LS_MY), row));
|
|
54
|
+
}
|
|
55
|
+
/** Remove a session from the local "My" list only (does not delete remote storage). */
|
|
56
|
+
export function removeMyFeedbackSession(reviewId, projectId) {
|
|
57
|
+
const k = refKey({ reviewId, projectId });
|
|
58
|
+
const list = readList(LS_MY).filter((r) => refKey(r) !== k);
|
|
59
|
+
writeList(LS_MY, list);
|
|
60
|
+
}
|
|
61
|
+
export function appendSharedFeedbackSession(entry) {
|
|
62
|
+
const row = {
|
|
63
|
+
...entry,
|
|
64
|
+
addedAt: new Date().toISOString(),
|
|
65
|
+
};
|
|
66
|
+
writeList(LS_SHARED, upsertFront(readList(LS_SHARED), row));
|
|
67
|
+
}
|
|
68
|
+
/** Remove a session from the local "Shared with me" list only (does not delete remote storage). */
|
|
69
|
+
export function removeSharedFeedbackSession(reviewId, projectId) {
|
|
70
|
+
const k = refKey({ reviewId, projectId });
|
|
71
|
+
const list = readList(LS_SHARED).filter((r) => refKey(r) !== k);
|
|
72
|
+
writeList(LS_SHARED, list);
|
|
73
|
+
}
|
|
74
|
+
export function openFeedbackSessionInPageUrl(reviewId, projectId) {
|
|
75
|
+
const url = new URL(window.location.href);
|
|
76
|
+
url.searchParams.set('feedbackReview', reviewId);
|
|
77
|
+
url.searchParams.set('feedbackProject', projectId);
|
|
78
|
+
window.location.assign(url.toString());
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=feedbackSessionsStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbackSessionsStorage.js","sourceRoot":"","sources":["../../src/workbench/feedbackSessionsStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workbench/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workbench/index.tsx"],"names":[],"mappings":"AAKA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,iCAAiC,CAAC,EAAE,CAAC,MAAM,EAAE;YAC3C,YAAY,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;YAClB,eAAe,CAAC,EAAE,OAAO,CAAA;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;YACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;YAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;SACnB,KAAK,IAAI,CAAA;KACX;CACF"}
|
package/dist/workbench/index.js
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { createRoot } from 'react-dom/client';
|
|
3
3
|
import { WorkbenchApp } from './WorkbenchApp.js';
|
|
4
|
+
import { WORKBENCH_SHADOW_PORTAL_ID } from './workbenchShadowPortal.js';
|
|
4
5
|
let workbenchRoot = null;
|
|
6
|
+
/**
|
|
7
|
+
* Merge `feedbackReview` / `feedbackProject` / `project` / `feedback=true` from the page URL into
|
|
8
|
+
* bootstrap config. The inline `onload` bootstrap only receives injected `__EMBEDDABLES_WORKBENCH`
|
|
9
|
+
* values, so shared links that rely on query params must be merged here or the Feedback tab and
|
|
10
|
+
* props are lost on the second render.
|
|
11
|
+
*/
|
|
12
|
+
function mergeFeedbackParamsFromWindow(config) {
|
|
13
|
+
if (typeof window === 'undefined')
|
|
14
|
+
return config;
|
|
15
|
+
const params = new URLSearchParams(window.location.search);
|
|
16
|
+
const feedbackReviewId = config.feedbackReviewId ?? params.get('feedbackReview') ?? undefined;
|
|
17
|
+
const feedbackProjectId = config.feedbackProjectId ?? params.get('feedbackProject') ?? undefined;
|
|
18
|
+
const projectId = config.projectId ?? params.get('project') ?? undefined;
|
|
19
|
+
const openFeedbackTab = config.openFeedbackTab || params.get('feedback') === 'true';
|
|
20
|
+
return {
|
|
21
|
+
...config,
|
|
22
|
+
feedbackReviewId,
|
|
23
|
+
feedbackProjectId,
|
|
24
|
+
projectId,
|
|
25
|
+
openFeedbackTab,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
5
28
|
// Derive CSS URL from script's URL so it works when script is loaded from a different origin (e.g. CDN)
|
|
6
29
|
const scriptEl = typeof document !== 'undefined' ? document.currentScript : null;
|
|
7
30
|
const WORKBENCH_CSS_URL = scriptEl?.src?.replace(/\.js(\?.*)?$/i, '.css$1') ??
|
|
@@ -30,16 +53,33 @@ async function bootstrapWorkbench(config) {
|
|
|
30
53
|
});
|
|
31
54
|
const mountPoint = document.createElement('div');
|
|
32
55
|
shadowRoot.appendChild(mountPoint);
|
|
56
|
+
const portalMount = document.createElement('div');
|
|
57
|
+
portalMount.id = WORKBENCH_SHADOW_PORTAL_ID;
|
|
58
|
+
shadowRoot.appendChild(portalMount);
|
|
33
59
|
workbenchRoot = createRoot(mountPoint);
|
|
34
60
|
}
|
|
35
61
|
if (workbenchRoot) {
|
|
36
|
-
|
|
62
|
+
const merged = mergeFeedbackParamsFromWindow(config);
|
|
63
|
+
// Open feedback tab when ?feedback=true or ?feedbackReview=id (URL merged above).
|
|
64
|
+
const initialTab = merged.openFeedbackTab || merged.feedbackReviewId
|
|
65
|
+
? 'feedback'
|
|
66
|
+
: undefined;
|
|
67
|
+
// Shared feedback links include both IDs — expand the workbench so Feedback mode is visible.
|
|
68
|
+
const initialExpanded = !!(merged.feedbackReviewId && merged.feedbackProjectId);
|
|
69
|
+
workbenchRoot.render(_jsx(WorkbenchApp, { embeddableId: merged.embeddableId, localDev: merged.localDev ?? false, initialTab: initialTab, initialExpanded: initialExpanded, feedbackReviewId: merged.feedbackReviewId, feedbackProjectId: merged.feedbackProjectId, projectId: merged.projectId }));
|
|
37
70
|
}
|
|
38
71
|
}
|
|
39
72
|
window.__embeddables_bootstrap_workbench = bootstrapWorkbench;
|
|
40
73
|
// Auto-bootstrap if config is already available (fallback if onload handler doesn't fire)
|
|
41
74
|
if (typeof window !== 'undefined' && window.__EMBEDDABLES_WORKBENCH?.embeddableId) {
|
|
42
75
|
const config = window.__EMBEDDABLES_WORKBENCH;
|
|
43
|
-
bootstrapWorkbench({
|
|
76
|
+
bootstrapWorkbench(mergeFeedbackParamsFromWindow({
|
|
77
|
+
embeddableId: config.embeddableId,
|
|
78
|
+
localDev: config.localDev,
|
|
79
|
+
openFeedbackTab: config.openFeedbackTab,
|
|
80
|
+
feedbackReviewId: config.feedbackReviewId,
|
|
81
|
+
feedbackProjectId: config.feedbackProjectId,
|
|
82
|
+
projectId: config.projectId,
|
|
83
|
+
}));
|
|
44
84
|
}
|
|
45
85
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workbench/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workbench/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a long page key for compact UI: show start and end with an ellipsis in the middle
|
|
3
|
+
* (e.g. `authed_heal…_micro` instead of only truncating the tail).
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatPageKeyMiddleEllipsis({ key, maxChars, }: {
|
|
6
|
+
key: string;
|
|
7
|
+
maxChars: number;
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=pageKeyDisplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageKeyDisplay.d.ts","sourceRoot":"","sources":["../../src/workbench/pageKeyDisplay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,GAAG,EACH,QAAQ,GACT,EAAE;IACD,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,MAAM,CAYT"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats a long page key for compact UI: show start and end with an ellipsis in the middle
|
|
3
|
+
* (e.g. `authed_heal…_micro` instead of only truncating the tail).
|
|
4
|
+
*/
|
|
5
|
+
export function formatPageKeyMiddleEllipsis({ key, maxChars, }) {
|
|
6
|
+
if (maxChars < 5) {
|
|
7
|
+
return key.slice(0, Math.max(0, maxChars));
|
|
8
|
+
}
|
|
9
|
+
if (key.length <= maxChars) {
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
const ellipsis = '…';
|
|
13
|
+
const inner = maxChars - ellipsis.length;
|
|
14
|
+
const leftLen = Math.ceil(inner / 2);
|
|
15
|
+
const rightLen = Math.floor(inner / 2);
|
|
16
|
+
return key.slice(0, leftLen) + ellipsis + key.slice(-rightLen);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=pageKeyDisplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageKeyDisplay.js","sourceRoot":"","sources":["../../src/workbench/pageKeyDisplay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAC1C,GAAG,EACH,QAAQ,GAIT;IACC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5C,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAA;IACpB,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAA;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IACtC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAA;AAChE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format a component type for display: PascalCase → Title Case.
|
|
3
|
+
* Spaced phrases (e.g. "Multiple Types") are normalized to title case per word.
|
|
4
|
+
*/
|
|
5
|
+
export declare function pascalCaseToTitleCase(raw: string): string;
|
|
6
|
+
//# sourceMappingURL=stringUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.d.ts","sourceRoot":"","sources":["../../src/workbench/stringUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiBzD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format a component type for display: PascalCase → Title Case.
|
|
3
|
+
* Spaced phrases (e.g. "Multiple Types") are normalized to title case per word.
|
|
4
|
+
*/
|
|
5
|
+
export function pascalCaseToTitleCase(raw) {
|
|
6
|
+
const s = raw.trim();
|
|
7
|
+
if (!s)
|
|
8
|
+
return s;
|
|
9
|
+
if (/\s/.test(s)) {
|
|
10
|
+
return s
|
|
11
|
+
.split(/\s+/)
|
|
12
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())
|
|
13
|
+
.join(' ');
|
|
14
|
+
}
|
|
15
|
+
const spaced = s
|
|
16
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
17
|
+
.replace(/([a-z\d])([A-Z])/g, '$1 $2');
|
|
18
|
+
return spaced
|
|
19
|
+
.split(/\s+/)
|
|
20
|
+
.filter(Boolean)
|
|
21
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())
|
|
22
|
+
.join(' ');
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=stringUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringUtils.js","sourceRoot":"","sources":["../../src/workbench/stringUtils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IAChB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC;aACL,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAChE,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IACD,MAAM,MAAM,GAAG,CAAC;SACb,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC;SACzC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAA;IACxC,OAAO,MAAM;SACV,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAChE,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workbench/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAG,MAAM,GAC9B,OAAO,UAAU,GAAG;IAClB,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAA;QAC9C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAA;QAClD,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;QAClE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;QAC/C,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;QACnC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;KACpC,CAAA;CACF,CAAA;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/workbench/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAG,MAAM,GAC9B,OAAO,UAAU,GAAG;IAClB,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAAA;QAC9C,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAA;QAClD,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;QAClE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;QAC/C,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;QACnC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;KACpC,CAAA;CACF,CAAA;AAEH,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA"}
|