@portel/photon 1.17.6 → 1.19.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.
- package/dist/auto-ui/beam/photon-management.d.ts.map +1 -1
- package/dist/auto-ui/beam/photon-management.js +28 -1
- package/dist/auto-ui/beam/photon-management.js.map +1 -1
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -1
- package/dist/auto-ui/beam/routes/api-marketplace.js +10 -5
- package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +14 -4
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +259 -88
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +2 -0
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js +5 -0
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam-form.bundle.js +5 -3
- package/dist/beam-form.bundle.js.map +2 -2
- package/dist/beam.bundle.js +912 -59
- package/dist/beam.bundle.js.map +3 -3
- package/dist/claude-code-plugin.js +1 -1
- package/dist/cli/commands/beam.d.ts.map +1 -1
- package/dist/cli/commands/beam.js +8 -2
- package/dist/cli/commands/beam.js.map +1 -1
- package/dist/cli/commands/changelog.d.ts +9 -0
- package/dist/cli/commands/changelog.d.ts.map +1 -0
- package/dist/cli/commands/changelog.js +133 -0
- package/dist/cli/commands/changelog.js.map +1 -0
- package/dist/cli/commands/maker.d.ts.map +1 -1
- package/dist/cli/commands/maker.js +23 -2
- package/dist/cli/commands/maker.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +53 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +18 -2
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +1 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/update.d.ts +3 -2
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +50 -43
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli-alias.js +1 -1
- package/dist/cli-alias.js.map +1 -1
- package/dist/context-store.d.ts +23 -33
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +147 -97
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +15 -10
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +37 -13
- package/dist/context.js.map +1 -1
- package/dist/daemon/server.js +4 -2
- package/dist/daemon/server.js.map +1 -1
- package/dist/data-migration.d.ts +27 -0
- package/dist/data-migration.d.ts.map +1 -0
- package/dist/data-migration.js +307 -0
- package/dist/data-migration.js.map +1 -0
- package/dist/editor-support/docblock-tag-catalog.d.ts.map +1 -1
- package/dist/editor-support/docblock-tag-catalog.js +6 -0
- package/dist/editor-support/docblock-tag-catalog.js.map +1 -1
- package/dist/loader.d.ts +10 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +106 -20
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +25 -5
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +56 -19
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.d.ts +1 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -1
- package/dist/photon-doc-extractor.js +6 -0
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/readme-syncer.d.ts.map +1 -1
- package/dist/readme-syncer.js +6 -1
- package/dist/readme-syncer.js.map +1 -1
- package/dist/server.d.ts +40 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +298 -29
- package/dist/server.js.map +1 -1
- package/dist/shared/audit.js +4 -4
- package/dist/shared/audit.js.map +1 -1
- package/dist/tasks/executor.d.ts +47 -0
- package/dist/tasks/executor.d.ts.map +1 -0
- package/dist/tasks/executor.js +180 -0
- package/dist/tasks/executor.js.map +1 -0
- package/dist/tasks/store.d.ts +13 -6
- package/dist/tasks/store.d.ts.map +1 -1
- package/dist/tasks/store.js +56 -11
- package/dist/tasks/store.js.map +1 -1
- package/dist/tasks/types.d.ts +23 -2
- package/dist/tasks/types.d.ts.map +1 -1
- package/dist/tasks/types.js +23 -3
- package/dist/tasks/types.js.map +1 -1
- package/dist/version-notify.d.ts +27 -0
- package/dist/version-notify.d.ts.map +1 -0
- package/dist/version-notify.js +142 -0
- package/dist/version-notify.js.map +1 -0
- package/package.json +5 -4
- package/dist/auto-ui/bridge/openai-shim.d.ts +0 -20
- package/dist/auto-ui/bridge/openai-shim.d.ts.map +0 -1
- package/dist/auto-ui/bridge/openai-shim.js +0 -231
- package/dist/auto-ui/bridge/openai-shim.js.map +0 -1
- package/dist/auto-ui/bridge/photon-app.d.ts +0 -162
- package/dist/auto-ui/bridge/photon-app.d.ts.map +0 -1
- package/dist/auto-ui/bridge/photon-app.js +0 -460
- package/dist/auto-ui/bridge/photon-app.js.map +0 -1
- package/dist/auto-ui/daemon-tools.d.ts +0 -45
- package/dist/auto-ui/daemon-tools.d.ts.map +0 -1
- package/dist/auto-ui/daemon-tools.js +0 -581
- package/dist/auto-ui/daemon-tools.js.map +0 -1
- package/dist/auto-ui/design-system/index.d.ts +0 -21
- package/dist/auto-ui/design-system/index.d.ts.map +0 -1
- package/dist/auto-ui/design-system/index.js +0 -27
- package/dist/auto-ui/design-system/index.js.map +0 -1
- package/dist/auto-ui/design-system/transaction-ui.d.ts +0 -70
- package/dist/auto-ui/design-system/transaction-ui.d.ts.map +0 -1
- package/dist/auto-ui/design-system/transaction-ui.js +0 -982
- package/dist/auto-ui/design-system/transaction-ui.js.map +0 -1
- package/dist/auto-ui/playground-server.d.ts +0 -7
- package/dist/auto-ui/playground-server.d.ts.map +0 -1
- package/dist/auto-ui/playground-server.js +0 -840
- package/dist/auto-ui/playground-server.js.map +0 -1
- package/dist/auto-ui/rendering/components.d.ts +0 -29
- package/dist/auto-ui/rendering/components.d.ts.map +0 -1
- package/dist/auto-ui/rendering/components.js +0 -1341
- package/dist/auto-ui/rendering/components.js.map +0 -1
- package/dist/auto-ui/rendering/field-analyzer.d.ts +0 -104
- package/dist/auto-ui/rendering/field-analyzer.d.ts.map +0 -1
- package/dist/auto-ui/rendering/field-analyzer.js +0 -447
- package/dist/auto-ui/rendering/field-analyzer.js.map +0 -1
- package/dist/auto-ui/rendering/field-renderers.d.ts +0 -64
- package/dist/auto-ui/rendering/field-renderers.d.ts.map +0 -1
- package/dist/auto-ui/rendering/field-renderers.js +0 -317
- package/dist/auto-ui/rendering/field-renderers.js.map +0 -1
- package/dist/auto-ui/rendering/index.d.ts +0 -28
- package/dist/auto-ui/rendering/index.d.ts.map +0 -1
- package/dist/auto-ui/rendering/index.js +0 -60
- package/dist/auto-ui/rendering/index.js.map +0 -1
- package/dist/auto-ui/rendering/layout-selector.d.ts +0 -60
- package/dist/auto-ui/rendering/layout-selector.d.ts.map +0 -1
- package/dist/auto-ui/rendering/layout-selector.js +0 -476
- package/dist/auto-ui/rendering/layout-selector.js.map +0 -1
- package/dist/markdown-utils.d.ts +0 -8
- package/dist/markdown-utils.d.ts.map +0 -1
- package/dist/markdown-utils.js +0 -64
- package/dist/markdown-utils.js.map +0 -1
- package/dist/mcp-client.d.ts +0 -9
- package/dist/mcp-client.d.ts.map +0 -1
- package/dist/mcp-client.js +0 -11
- package/dist/mcp-client.js.map +0 -1
- package/dist/mcp-elicitation.d.ts +0 -32
- package/dist/mcp-elicitation.d.ts.map +0 -1
- package/dist/mcp-elicitation.js +0 -26
- package/dist/mcp-elicitation.js.map +0 -1
- package/dist/photons/builder-compass.photon.d.ts +0 -167
- package/dist/photons/builder-compass.photon.d.ts.map +0 -1
- package/dist/photons/builder-compass.photon.js +0 -816
- package/dist/photons/builder-compass.photon.js.map +0 -1
- package/dist/photons/builder-compass.photon.ts +0 -1129
- package/dist/photons/docs/ui/docs.html +0 -441
- package/dist/photons/docs.photon.d.ts +0 -237
- package/dist/photons/docs.photon.d.ts.map +0 -1
- package/dist/photons/docs.photon.js +0 -483
- package/dist/photons/docs.photon.js.map +0 -1
- package/dist/photons/docs.photon.ts +0 -536
- package/dist/photons/slides.photon.d.ts +0 -212
- package/dist/photons/slides.photon.d.ts.map +0 -1
- package/dist/photons/slides.photon.js +0 -355
- package/dist/photons/slides.photon.js.map +0 -1
- package/dist/photons/slides.photon.ts +0 -370
- package/dist/photons/spreadsheet/ui/spreadsheet.html +0 -779
- package/dist/photons/spreadsheet.photon.d.ts +0 -554
- package/dist/photons/spreadsheet.photon.d.ts.map +0 -1
- package/dist/photons/spreadsheet.photon.js +0 -1050
- package/dist/photons/spreadsheet.photon.js.map +0 -1
- package/dist/photons/spreadsheet.photon.ts +0 -1239
- package/dist/photons/ui/builder-compass.html +0 -1199
- package/dist/photons/ui/builder-compass.photon.html +0 -380
- package/dist/security-scanner.d.ts +0 -52
- package/dist/security-scanner.d.ts.map +0 -1
- package/dist/security-scanner.js +0 -181
- package/dist/security-scanner.js.map +0 -1
- package/dist/shared/performance.d.ts +0 -65
- package/dist/shared/performance.d.ts.map +0 -1
- package/dist/shared/performance.js +0 -136
- package/dist/shared/performance.js.map +0 -1
package/dist/beam.bundle.js
CHANGED
|
@@ -19402,7 +19402,7 @@ ConfirmDialog.styles = [
|
|
|
19402
19402
|
}
|
|
19403
19403
|
|
|
19404
19404
|
.btn-cancel:hover {
|
|
19405
|
-
background: var(--bg-glass-strong
|
|
19405
|
+
background: var(--bg-glass-strong);
|
|
19406
19406
|
}
|
|
19407
19407
|
|
|
19408
19408
|
.btn-confirm {
|
|
@@ -19442,10 +19442,12 @@ ConfirmDialog = __decorateClass([
|
|
|
19442
19442
|
t4("confirm-dialog")
|
|
19443
19443
|
], ConfirmDialog);
|
|
19444
19444
|
async function confirmDialog(message, options) {
|
|
19445
|
-
|
|
19445
|
+
const beamApp = document.querySelector("beam-app");
|
|
19446
|
+
const root = beamApp?.shadowRoot ?? document.body;
|
|
19447
|
+
let dialog = root.querySelector("confirm-dialog");
|
|
19446
19448
|
if (!dialog) {
|
|
19447
19449
|
dialog = document.createElement("confirm-dialog");
|
|
19448
|
-
|
|
19450
|
+
root.appendChild(dialog);
|
|
19449
19451
|
}
|
|
19450
19452
|
return dialog.show(message, options);
|
|
19451
19453
|
}
|
|
@@ -23181,11 +23183,19 @@ var BeamApp = class extends i4 {
|
|
|
23181
23183
|
};
|
|
23182
23184
|
this._handleDeletePhoton = async () => {
|
|
23183
23185
|
this._closeSettingsMenu();
|
|
23184
|
-
if (await confirmDialog(
|
|
23185
|
-
|
|
23186
|
-
|
|
23187
|
-
)) {
|
|
23188
|
-
|
|
23186
|
+
if (await confirmDialog(`Remove "${this._selectedPhoton?.name}"? It will be moved to trash.`, {
|
|
23187
|
+
confirm: "Remove",
|
|
23188
|
+
destructive: true
|
|
23189
|
+
})) {
|
|
23190
|
+
const deletedName = this._selectedPhoton?.name;
|
|
23191
|
+
await this._invokeMakerMethod("delete");
|
|
23192
|
+
if (deletedName) {
|
|
23193
|
+
this._photons = this._photons.filter((p5) => p5.name !== deletedName);
|
|
23194
|
+
this._selectedPhoton = this._photons[0] || null;
|
|
23195
|
+
this._selectedMethod = null;
|
|
23196
|
+
this._lastResult = null;
|
|
23197
|
+
this.requestUpdate();
|
|
23198
|
+
}
|
|
23189
23199
|
}
|
|
23190
23200
|
};
|
|
23191
23201
|
/**
|
|
@@ -24254,15 +24264,15 @@ var BeamApp = class extends i4 {
|
|
|
24254
24264
|
mcpClient.on("progress", (data) => {
|
|
24255
24265
|
this._log("info", data.message || "Processing...");
|
|
24256
24266
|
if (typeof data.progress === "number") {
|
|
24257
|
-
if (data.progress > 0
|
|
24267
|
+
if (data.progress > 0) {
|
|
24258
24268
|
this._progress = {
|
|
24259
24269
|
value: data.total ? data.progress / data.total : data.progress,
|
|
24260
24270
|
message: data.message || "Processing..."
|
|
24261
24271
|
};
|
|
24262
|
-
} else
|
|
24272
|
+
} else {
|
|
24263
24273
|
this._progress = {
|
|
24264
|
-
|
|
24265
|
-
message: data.message
|
|
24274
|
+
value: -1,
|
|
24275
|
+
message: data.message || "Processing..."
|
|
24266
24276
|
};
|
|
24267
24277
|
}
|
|
24268
24278
|
}
|
|
@@ -24335,6 +24345,7 @@ var BeamApp = class extends i4 {
|
|
|
24335
24345
|
"stack",
|
|
24336
24346
|
"columns",
|
|
24337
24347
|
"qr",
|
|
24348
|
+
"guide",
|
|
24338
24349
|
"slides",
|
|
24339
24350
|
"presentation"
|
|
24340
24351
|
]);
|
|
@@ -26785,10 +26796,10 @@ ${photon.errorMessage || "Unknown error"}</pre
|
|
|
26785
26796
|
}
|
|
26786
26797
|
break;
|
|
26787
26798
|
case "remember-values":
|
|
26788
|
-
this.
|
|
26799
|
+
this._toggleRememberValues();
|
|
26789
26800
|
break;
|
|
26790
26801
|
case "verbose-logging":
|
|
26791
|
-
this.
|
|
26802
|
+
this._toggleVerboseLogging();
|
|
26792
26803
|
break;
|
|
26793
26804
|
case "run-tests":
|
|
26794
26805
|
void this._runTests();
|
|
@@ -35462,6 +35473,12 @@ var ResultViewer = class extends i4 {
|
|
|
35462
35473
|
// per-slide bg (color, url, gradient)
|
|
35463
35474
|
this._slidesEffects = /* @__PURE__ */ new Map();
|
|
35464
35475
|
// per-slide element effect
|
|
35476
|
+
this._slidesMoods = /* @__PURE__ */ new Map();
|
|
35477
|
+
// per-slide mood (dramatic, techy, etc.)
|
|
35478
|
+
this._slidesGlobalMood = "";
|
|
35479
|
+
// frontmatter mood default
|
|
35480
|
+
this._slidesBgEffects = /* @__PURE__ */ new Map();
|
|
35481
|
+
// per-slide bg effect (gradient-mesh, etc.)
|
|
35465
35482
|
this._slidesCols = /* @__PURE__ */ new Map();
|
|
35466
35483
|
// per-slide column count
|
|
35467
35484
|
this._slidesBuilds = /* @__PURE__ */ new Map();
|
|
@@ -36265,12 +36282,14 @@ var ResultViewer = class extends i4 {
|
|
|
36265
36282
|
"qr",
|
|
36266
36283
|
"slides",
|
|
36267
36284
|
"checklist",
|
|
36268
|
-
"article"
|
|
36285
|
+
"article",
|
|
36286
|
+
"magazine"
|
|
36269
36287
|
].includes(format)) {
|
|
36270
36288
|
return format;
|
|
36271
36289
|
}
|
|
36272
36290
|
if (format === "md") return "markdown";
|
|
36273
36291
|
if (format === "presentation") return "slides";
|
|
36292
|
+
if (format === "article") return "magazine";
|
|
36274
36293
|
}
|
|
36275
36294
|
const data = this.result;
|
|
36276
36295
|
if (data && typeof data === "object" && !Array.isArray(data) && typeof data._photonType === "string") {
|
|
@@ -36421,9 +36440,11 @@ var ResultViewer = class extends i4 {
|
|
|
36421
36440
|
case "slides":
|
|
36422
36441
|
return typeof data === "string";
|
|
36423
36442
|
case "checklist":
|
|
36443
|
+
case "guide":
|
|
36424
36444
|
return Array.isArray(data);
|
|
36445
|
+
case "magazine":
|
|
36425
36446
|
case "article":
|
|
36426
|
-
return typeof data === "object" && data !== null && typeof data.text === "string";
|
|
36447
|
+
return typeof data === "string" || typeof data === "object" && data !== null && typeof data.text === "string";
|
|
36427
36448
|
default:
|
|
36428
36449
|
return true;
|
|
36429
36450
|
}
|
|
@@ -36452,7 +36473,10 @@ var ResultViewer = class extends i4 {
|
|
|
36452
36473
|
case "tree":
|
|
36453
36474
|
return this._renderTree(filteredData);
|
|
36454
36475
|
case "markdown": {
|
|
36455
|
-
|
|
36476
|
+
if (Array.isArray(filteredData) && filteredData.length > 1) {
|
|
36477
|
+
return this._renderMarkdownStack(filteredData);
|
|
36478
|
+
}
|
|
36479
|
+
const mdData = Array.isArray(filteredData) ? filteredData[0] : filteredData;
|
|
36456
36480
|
return this._renderMarkdown(mdData);
|
|
36457
36481
|
}
|
|
36458
36482
|
case "html":
|
|
@@ -36489,8 +36513,11 @@ var ResultViewer = class extends i4 {
|
|
|
36489
36513
|
return this._renderSlides(filteredData);
|
|
36490
36514
|
case "checklist":
|
|
36491
36515
|
return this._renderChecklist(filteredData);
|
|
36516
|
+
case "guide":
|
|
36517
|
+
return this._renderGuide(filteredData);
|
|
36518
|
+
case "magazine":
|
|
36492
36519
|
case "article":
|
|
36493
|
-
return this.
|
|
36520
|
+
return this._renderMagazine(filteredData);
|
|
36494
36521
|
case "json":
|
|
36495
36522
|
default:
|
|
36496
36523
|
return this._renderJson(filteredData);
|
|
@@ -36991,10 +37018,34 @@ ${rows}`);
|
|
|
36991
37018
|
}
|
|
36992
37019
|
return { body, table: tables.length ? tables.join("\n\n") + "\n\n" : "" };
|
|
36993
37020
|
}
|
|
37021
|
+
_renderMarkdownStack(rawItems) {
|
|
37022
|
+
const items = rawItems.filter((s5) => s5 && s5.trim());
|
|
37023
|
+
const marked2 = window.marked;
|
|
37024
|
+
return b2`
|
|
37025
|
+
<div style="display:flex; flex-direction:column; gap:0;">
|
|
37026
|
+
<span
|
|
37027
|
+
style="font-size:12px; color:var(--t-muted); padding-bottom:12px; border-bottom:1px solid var(--border-glass); margin-bottom:4px;"
|
|
37028
|
+
>
|
|
37029
|
+
${items.length} results
|
|
37030
|
+
</span>
|
|
37031
|
+
${items.map((item, i7) => {
|
|
37032
|
+
const htmlContent = marked2 ? marked2.parse(item, { breaks: false, gfm: true }) : item;
|
|
37033
|
+
return b2`
|
|
37034
|
+
<div
|
|
37035
|
+
class="markdown-content"
|
|
37036
|
+
style="padding:12px 0; ${i7 < items.length - 1 ? "border-bottom:1px solid var(--border-glass);" : ""}"
|
|
37037
|
+
>
|
|
37038
|
+
${o5(htmlContent)}
|
|
37039
|
+
</div>
|
|
37040
|
+
`;
|
|
37041
|
+
})}
|
|
37042
|
+
</div>
|
|
37043
|
+
`;
|
|
37044
|
+
}
|
|
36994
37045
|
_renderMarkdown(filteredData) {
|
|
36995
37046
|
const data = filteredData !== void 0 ? filteredData : this.result;
|
|
36996
37047
|
const marked2 = window.marked;
|
|
36997
|
-
if (Array.isArray(this.result) && this.result.length > 1 && marked2) {
|
|
37048
|
+
if (Array.isArray(this.result) && this.result.length > 1 && marked2 && !this.outputFormat) {
|
|
36998
37049
|
const query = this._filterQuery?.trim().toLowerCase() || "";
|
|
36999
37050
|
const allMermaidBlocks = [];
|
|
37000
37051
|
const allCodeBlocks = [];
|
|
@@ -37396,6 +37447,8 @@ ${code}</pre>`;
|
|
|
37396
37447
|
this._slidesTransitions.clear();
|
|
37397
37448
|
this._slidesBackgrounds.clear();
|
|
37398
37449
|
this._slidesEffects.clear();
|
|
37450
|
+
this._slidesMoods.clear();
|
|
37451
|
+
this._slidesBgEffects.clear();
|
|
37399
37452
|
this._slidesCols.clear();
|
|
37400
37453
|
this._slidesBuilds.clear();
|
|
37401
37454
|
slides.forEach((slide, i7) => {
|
|
@@ -37405,10 +37458,15 @@ ${code}</pre>`;
|
|
|
37405
37458
|
if (bgMatch) this._slidesBackgrounds.set(i7, bgMatch[1].trim());
|
|
37406
37459
|
const fxMatch = slide.match(/<!--\s*effect:\s*(\S+)\s*-->/);
|
|
37407
37460
|
if (fxMatch) this._slidesEffects.set(i7, fxMatch[1].trim());
|
|
37461
|
+
const moodMatch = slide.match(/<!--\s*mood:\s*(\w+)\s*-->/);
|
|
37462
|
+
if (moodMatch) this._slidesMoods.set(i7, moodMatch[1].trim());
|
|
37463
|
+
const bgFxMatch = slide.match(/<!--\s*background:\s*(\S+)\s*-->/);
|
|
37464
|
+
if (bgFxMatch) this._slidesBgEffects.set(i7, bgFxMatch[1].trim());
|
|
37408
37465
|
const colMatch = slide.match(/<!--\s*cols:\s*(\d+)\s*-->/);
|
|
37409
37466
|
if (colMatch) this._slidesCols.set(i7, Math.min(Math.max(parseInt(colMatch[1], 10), 2), 4));
|
|
37410
37467
|
if (/<!--\s*build\s*-->/.test(slide)) this._slidesBuilds.set(i7, true);
|
|
37411
37468
|
});
|
|
37469
|
+
this._slidesGlobalMood = config3.mood || "";
|
|
37412
37470
|
const defaultTheme2 = "auto";
|
|
37413
37471
|
return { slides, theme: config3.theme || defaultTheme2, config: config3 };
|
|
37414
37472
|
}
|
|
@@ -37460,7 +37518,7 @@ ${code}</pre>`;
|
|
|
37460
37518
|
return this._slidesBridgeScript || "";
|
|
37461
37519
|
}
|
|
37462
37520
|
/** Build an iframe srcdoc for a slide with the bridge loaded */
|
|
37463
|
-
_buildSlideSrcdoc(slideHtml, codeBlocks, headerText, footerText, pageNum, slideBg, slideEffect) {
|
|
37521
|
+
_buildSlideSrcdoc(slideHtml, codeBlocks, headerText, footerText, pageNum, slideBg, slideEffect, slideBgEffect) {
|
|
37464
37522
|
const bridge = this._slidesBridgeScript || "";
|
|
37465
37523
|
const photonPrefix = this.photonName ? this.photonName + "/" : "";
|
|
37466
37524
|
let html = slideHtml;
|
|
@@ -37485,11 +37543,15 @@ ${code}</pre>`;
|
|
|
37485
37543
|
}
|
|
37486
37544
|
}
|
|
37487
37545
|
const themeClass = this._slidesThemeClass || "slides-theme-default";
|
|
37546
|
+
const themeName = themeClass.replace("slides-theme-", "");
|
|
37547
|
+
const fontSpec = ResultViewer._THEME_FONTS[themeName];
|
|
37548
|
+
const fontLink = fontSpec ? `<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=${fontSpec}&display=swap">` : "";
|
|
37488
37549
|
return `<!doctype html>
|
|
37489
37550
|
<html lang="en" class="${themeClass}">
|
|
37490
37551
|
<head>
|
|
37491
37552
|
<meta charset="UTF-8">
|
|
37492
37553
|
<meta name="photon-template" content="true">
|
|
37554
|
+
${fontLink}
|
|
37493
37555
|
${bridge}
|
|
37494
37556
|
<style>
|
|
37495
37557
|
/* reveal.js-style scaling: fixed design canvas + transform:scale() */
|
|
@@ -37547,6 +37609,20 @@ ${bridge}
|
|
|
37547
37609
|
[data-enter="flip-in"] { animation: motion-flip-in 0.5s cubic-bezier(0.16,1,0.3,1) both; }
|
|
37548
37610
|
[data-enter="fade-in"] { animation: motion-fade-in 0.3s cubic-bezier(0.16,1,0.3,1) both; }
|
|
37549
37611
|
[data-enter="drop-in"] { animation: motion-drop-in 0.5s cubic-bezier(0.16,1,0.3,1) both; }
|
|
37612
|
+
[data-enter="mood-dramatic"] { animation: mood-dramatic 0.6s ease both; }
|
|
37613
|
+
[data-enter="mood-techy"] { animation: mood-techy 0.3s ease-out both; }
|
|
37614
|
+
[data-enter="mood-playful"] { animation: mood-playful 0.4s ease both; }
|
|
37615
|
+
[data-enter="mood-calm"] { animation: mood-calm 0.8s ease-in-out both; }
|
|
37616
|
+
/* Hide slide children initially, auto-reveal after 1.5s fallback if stagger doesn't fire */
|
|
37617
|
+
.slide-body > :not(.slide-content-area):not([data-enter]) {
|
|
37618
|
+
opacity: 0;
|
|
37619
|
+
animation: stagger-fallback 0.3s ease 1.5s both;
|
|
37620
|
+
}
|
|
37621
|
+
.slide-content-area > :not([data-enter]) {
|
|
37622
|
+
opacity: 0;
|
|
37623
|
+
animation: stagger-fallback 0.3s ease 1.5s both;
|
|
37624
|
+
}
|
|
37625
|
+
@keyframes stagger-fallback { to { opacity: 1; } }
|
|
37550
37626
|
@media (prefers-reduced-motion: reduce) {
|
|
37551
37627
|
[data-enter] { animation: none !important; opacity: 1 !important; }
|
|
37552
37628
|
}
|
|
@@ -37677,6 +37753,8 @@ ${bridge}
|
|
|
37677
37753
|
/* Full-bleed image */
|
|
37678
37754
|
.hero { width: 100%; border-radius: var(--radius-lg, 14px);
|
|
37679
37755
|
box-shadow: var(--shadow-lg, 0 24px 60px rgba(0,0,0,0.28)); }
|
|
37756
|
+
/* Theme presets (shared with outer shadow DOM) */
|
|
37757
|
+
${ResultViewer._BRIDGE_THEME_CSS}
|
|
37680
37758
|
</style>
|
|
37681
37759
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js"><\/script>
|
|
37682
37760
|
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-typescript.min.js"><\/script>
|
|
@@ -37695,7 +37773,8 @@ ${bridge}
|
|
|
37695
37773
|
</head>
|
|
37696
37774
|
<body>
|
|
37697
37775
|
${this._buildSlideBgHtml(slideBg || "")}
|
|
37698
|
-
|
|
37776
|
+
${slideBgEffect ? `<div style="position:absolute;inset:0;pointer-events:none;z-index:0;${slideBgEffect === "gradient-mesh" ? "background:radial-gradient(ellipse at 20% 50%,rgba(120,80,255,0.15) 0%,transparent 50%),radial-gradient(ellipse at 80% 20%,rgba(255,100,80,0.12) 0%,transparent 50%),radial-gradient(ellipse at 50% 80%,rgba(80,200,255,0.1) 0%,transparent 50%);animation:bgdrift 12s ease-in-out infinite alternate;" : slideBgEffect === "noise" ? "opacity:0.06;background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27200%27 height=%27200%27%3E%3Cfilter id=%27n%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%270.75%27 numOctaves=%274%27 stitchTiles=%27stitch%27/%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url(%23n)%27/%3E%3C/svg%3E");" : slideBgEffect === "grid" ? "background-image:linear-gradient(rgba(255,255,255,0.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.05) 1px,transparent 1px);background-size:32px 32px;" : slideBgEffect === "particles" ? "overflow:hidden;" : ""}"></div>` : ""}
|
|
37777
|
+
<div class="slide-canvas"${slideEffect ? ` data-effect="${slideEffect}"` : ""} style="position:relative;z-index:1;">
|
|
37699
37778
|
${headerText ? `<div class="slide-header">${headerText}</div>` : ""}
|
|
37700
37779
|
<div class="slide-body">${html}</div>
|
|
37701
37780
|
${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</span><span>${pageNum || ""}</span></div>` : ""}
|
|
@@ -37748,6 +37827,74 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37748
37827
|
return document.querySelectorAll('.slide-fragment:not(.visible)').length === 0;
|
|
37749
37828
|
};
|
|
37750
37829
|
<\/script>
|
|
37830
|
+
<script>
|
|
37831
|
+
// Text effects for bridge slides
|
|
37832
|
+
(function() {
|
|
37833
|
+
var canvas = document.querySelector('.slide-canvas');
|
|
37834
|
+
var effect = canvas ? canvas.getAttribute('data-effect') : '';
|
|
37835
|
+
if (!effect) return;
|
|
37836
|
+
var heading = document.querySelector('.slide-body h1, .slide-body h2');
|
|
37837
|
+
if (!heading) return;
|
|
37838
|
+
var text = heading.textContent || '';
|
|
37839
|
+
if (!text) return;
|
|
37840
|
+
|
|
37841
|
+
if (effect === 'typing') {
|
|
37842
|
+
heading.textContent = '';
|
|
37843
|
+
heading.style.borderRight = '2px solid currentColor';
|
|
37844
|
+
var i = 0;
|
|
37845
|
+
function typeChar() {
|
|
37846
|
+
if (i < text.length) {
|
|
37847
|
+
heading.textContent += text[i]; i++;
|
|
37848
|
+
requestAnimationFrame(function() { setTimeout(typeChar, 40 + Math.random() * 30); });
|
|
37849
|
+
} else { setTimeout(function() { heading.style.borderRight = 'none'; }, 800); }
|
|
37850
|
+
}
|
|
37851
|
+
setTimeout(typeChar, 300);
|
|
37852
|
+
} else if (effect === 'scramble') {
|
|
37853
|
+
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
37854
|
+
var revealed = new Array(text.length).fill(false);
|
|
37855
|
+
var iter = 0;
|
|
37856
|
+
function scrambleStep() {
|
|
37857
|
+
var d = '';
|
|
37858
|
+
for (var j = 0; j < text.length; j++) {
|
|
37859
|
+
d += (revealed[j] || text[j] === ' ') ? text[j] : chars[Math.floor(Math.random() * chars.length)];
|
|
37860
|
+
}
|
|
37861
|
+
heading.textContent = d;
|
|
37862
|
+
if (iter > 5) {
|
|
37863
|
+
var ur = []; for (var k = 0; k < revealed.length; k++) { if (!revealed[k] && text[k] !== ' ') ur.push(k); }
|
|
37864
|
+
if (ur.length > 0) revealed[ur[Math.floor(Math.random() * ur.length)]] = true;
|
|
37865
|
+
}
|
|
37866
|
+
iter++;
|
|
37867
|
+
if (ur && ur.length > 0) requestAnimationFrame(scrambleStep);
|
|
37868
|
+
else heading.textContent = text;
|
|
37869
|
+
}
|
|
37870
|
+
setTimeout(scrambleStep, 300);
|
|
37871
|
+
} else if (effect === 'wave') {
|
|
37872
|
+
heading.innerHTML = '';
|
|
37873
|
+
text.split('').forEach(function(ch, idx) {
|
|
37874
|
+
var s = document.createElement('span');
|
|
37875
|
+
s.textContent = ch === ' ' ? '\\u00A0' : ch;
|
|
37876
|
+
s.style.display = 'inline-block';
|
|
37877
|
+
s.style.opacity = '0';
|
|
37878
|
+
s.style.transform = 'translateY(20px)';
|
|
37879
|
+
s.style.transition = 'all 0.4s ease ' + (idx * 30) + 'ms';
|
|
37880
|
+
heading.appendChild(s);
|
|
37881
|
+
requestAnimationFrame(function() { s.style.opacity = '1'; s.style.transform = 'none'; });
|
|
37882
|
+
});
|
|
37883
|
+
} else if (effect === 'fly-in') {
|
|
37884
|
+
heading.innerHTML = '';
|
|
37885
|
+
text.split(' ').forEach(function(word, idx) {
|
|
37886
|
+
var s = document.createElement('span');
|
|
37887
|
+
s.textContent = word + ' ';
|
|
37888
|
+
s.style.display = 'inline-block';
|
|
37889
|
+
s.style.opacity = '0';
|
|
37890
|
+
s.style.transform = 'translate(' + ((Math.random()-0.5)*200) + 'px,' + ((Math.random()-0.5)*100) + 'px)';
|
|
37891
|
+
s.style.transition = 'all 0.6s cubic-bezier(0.16,1,0.3,1) ' + (idx * 80) + 'ms';
|
|
37892
|
+
heading.appendChild(s);
|
|
37893
|
+
requestAnimationFrame(function() { s.style.opacity = '1'; s.style.transform = 'none'; });
|
|
37894
|
+
});
|
|
37895
|
+
}
|
|
37896
|
+
})();
|
|
37897
|
+
<\/script>
|
|
37751
37898
|
</body>
|
|
37752
37899
|
</html>`;
|
|
37753
37900
|
}
|
|
@@ -37824,6 +37971,17 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37824
37971
|
const resolvedTheme = rawTheme === "auto" || rawTheme === "default" ? this.theme === "light" ? "uncover" : "default" : rawTheme;
|
|
37825
37972
|
const themeClass = `slides-theme-${resolvedTheme}`;
|
|
37826
37973
|
this._slidesThemeClass = themeClass;
|
|
37974
|
+
const fontSpec = ResultViewer._THEME_FONTS[resolvedTheme];
|
|
37975
|
+
if (fontSpec) {
|
|
37976
|
+
const linkId = `photon-font-${resolvedTheme}`;
|
|
37977
|
+
if (!document.getElementById(linkId)) {
|
|
37978
|
+
const link2 = document.createElement("link");
|
|
37979
|
+
link2.id = linkId;
|
|
37980
|
+
link2.rel = "stylesheet";
|
|
37981
|
+
link2.href = `https://fonts.googleapis.com/css2?family=${fontSpec}&display=swap`;
|
|
37982
|
+
document.head.appendChild(link2);
|
|
37983
|
+
}
|
|
37984
|
+
}
|
|
37827
37985
|
const bgOverride = config3.backgroundColor ? `background:${config3.backgroundColor};` : "";
|
|
37828
37986
|
const colorOverride = config3.color ? `color:${config3.color};` : "";
|
|
37829
37987
|
const viewportStyle = bgOverride + colorOverride;
|
|
@@ -37833,6 +37991,7 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37833
37991
|
const currentTransition = this._getSlideTransition(idx);
|
|
37834
37992
|
const slideBg = this._slidesBackgrounds.get(idx) || "";
|
|
37835
37993
|
const slideEffect = this._slidesEffects.get(idx) || "";
|
|
37994
|
+
const slideBgEffect = this._slidesBgEffects.get(idx) || "";
|
|
37836
37995
|
const slideBgStyle = this._buildSlideBgStyle(slideBg);
|
|
37837
37996
|
const isVideoBg = /\.(mp4|webm|mov)(\?|$)/i.test(slideBg) || slideBg.startsWith("video:");
|
|
37838
37997
|
return b2`
|
|
@@ -37855,6 +38014,7 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37855
38014
|
loop
|
|
37856
38015
|
playsinline
|
|
37857
38016
|
></video>` : b2`<div class="slides-bg-layer" style="${slideBgStyle}"></div>` : ""}
|
|
38017
|
+
${slideBgEffect ? b2`<div class="slides-bgfx slides-bgfx-${slideBgEffect}"></div>` : ""}
|
|
37858
38018
|
<div class="slides-content">
|
|
37859
38019
|
${this._slidesBridgeScript ? b2`<iframe
|
|
37860
38020
|
class="slide-bridge-frame"
|
|
@@ -37865,7 +38025,8 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37865
38025
|
footerText,
|
|
37866
38026
|
showPaginate ? `${idx + 1} / ${total}` : "",
|
|
37867
38027
|
slideBg,
|
|
37868
|
-
slideEffect
|
|
38028
|
+
slideEffect,
|
|
38029
|
+
slideBgEffect
|
|
37869
38030
|
)}
|
|
37870
38031
|
sandbox="allow-scripts allow-same-origin allow-popups"
|
|
37871
38032
|
frameborder="0"
|
|
@@ -37943,8 +38104,6 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37943
38104
|
position: relative;
|
|
37944
38105
|
border-radius: var(--radius-md, 8px);
|
|
37945
38106
|
outline: none;
|
|
37946
|
-
background: #1a1a2e;
|
|
37947
|
-
color: #e5e5e5;
|
|
37948
38107
|
font-family:
|
|
37949
38108
|
system-ui,
|
|
37950
38109
|
-apple-system,
|
|
@@ -37959,14 +38118,14 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
37959
38118
|
display: flex;
|
|
37960
38119
|
align-items: center;
|
|
37961
38120
|
justify-content: center;
|
|
37962
|
-
padding: 48px 64px;
|
|
38121
|
+
padding: clamp(24px, 4vw, 48px) clamp(32px, 5vw, 64px);
|
|
37963
38122
|
overflow: hidden;
|
|
37964
38123
|
position: relative;
|
|
37965
38124
|
}
|
|
37966
38125
|
.slides-container:fullscreen .slides-viewport {
|
|
37967
38126
|
flex: 1;
|
|
37968
38127
|
aspect-ratio: auto;
|
|
37969
|
-
padding: 64px 120px;
|
|
38128
|
+
padding: clamp(32px, 5vh, 64px) clamp(48px, 8vw, 120px);
|
|
37970
38129
|
}
|
|
37971
38130
|
.slides-container:fullscreen .slides-viewport:has(.slide-bridge-frame) {
|
|
37972
38131
|
padding: 0;
|
|
@@ -38021,26 +38180,26 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38021
38180
|
z-index: -1;
|
|
38022
38181
|
}
|
|
38023
38182
|
.slides-content h1 {
|
|
38024
|
-
font-size:
|
|
38183
|
+
font-size: clamp(1.8rem, 5vw, 3.5rem);
|
|
38025
38184
|
margin: 0 0 0.4em;
|
|
38026
38185
|
font-weight: 800;
|
|
38027
38186
|
letter-spacing: -0.02em;
|
|
38028
38187
|
line-height: 1.15;
|
|
38029
38188
|
}
|
|
38030
38189
|
.slides-content h2 {
|
|
38031
|
-
font-size: 1.
|
|
38190
|
+
font-size: clamp(1.4rem, 3.5vw, 2.4rem);
|
|
38032
38191
|
margin: 0 0 0.4em;
|
|
38033
38192
|
font-weight: 700;
|
|
38034
38193
|
letter-spacing: -0.01em;
|
|
38035
38194
|
}
|
|
38036
38195
|
.slides-content h3 {
|
|
38037
|
-
font-size: 1.
|
|
38196
|
+
font-size: clamp(1.1rem, 2.5vw, 1.6rem);
|
|
38038
38197
|
margin: 0 0 0.3em;
|
|
38039
38198
|
font-weight: 600;
|
|
38040
38199
|
}
|
|
38041
38200
|
.slides-content p {
|
|
38042
38201
|
margin: 0.5em 0;
|
|
38043
|
-
font-size: 1.
|
|
38202
|
+
font-size: clamp(0.95rem, 1.8vw, 1.25rem);
|
|
38044
38203
|
line-height: 1.65;
|
|
38045
38204
|
}
|
|
38046
38205
|
.slides-content ul,
|
|
@@ -38345,6 +38504,300 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38345
38504
|
background: #191a21;
|
|
38346
38505
|
}
|
|
38347
38506
|
|
|
38507
|
+
/* ═══ AUTO THEME — inherits MCP client colors ═══ */
|
|
38508
|
+
.slides-theme-auto {
|
|
38509
|
+
background: var(--bg-panel, #1a1a2e);
|
|
38510
|
+
color: var(--t-primary, #e0e0e0);
|
|
38511
|
+
}
|
|
38512
|
+
.slides-theme-auto .slides-content h1,
|
|
38513
|
+
.slides-theme-auto .slides-content h2 {
|
|
38514
|
+
color: var(--accent, #6366f1);
|
|
38515
|
+
}
|
|
38516
|
+
.slides-theme-auto .slides-controls {
|
|
38517
|
+
background: var(--bg-glass, rgba(0, 0, 0, 0.4));
|
|
38518
|
+
}
|
|
38519
|
+
|
|
38520
|
+
/* ═══ NEON THEME ═══ */
|
|
38521
|
+
.slides-theme-neon {
|
|
38522
|
+
background: #0a0a1a;
|
|
38523
|
+
color: #e0e0ff;
|
|
38524
|
+
font-family: 'JetBrains Mono', var(--font-mono), monospace;
|
|
38525
|
+
}
|
|
38526
|
+
.slides-theme-neon .slides-content h1,
|
|
38527
|
+
.slides-theme-neon .slides-content h2 {
|
|
38528
|
+
color: #00f0ff;
|
|
38529
|
+
text-shadow:
|
|
38530
|
+
0 0 10px rgba(0, 240, 255, 0.5),
|
|
38531
|
+
0 0 40px rgba(0, 240, 255, 0.2);
|
|
38532
|
+
}
|
|
38533
|
+
.slides-theme-neon .slides-content blockquote {
|
|
38534
|
+
border-left: 3px solid #00f0ff;
|
|
38535
|
+
box-shadow: -4px 0 20px rgba(0, 240, 255, 0.15);
|
|
38536
|
+
}
|
|
38537
|
+
.slides-theme-neon .slides-content pre {
|
|
38538
|
+
border: 1px solid rgba(0, 240, 255, 0.2);
|
|
38539
|
+
box-shadow: 0 0 15px rgba(0, 240, 255, 0.1);
|
|
38540
|
+
}
|
|
38541
|
+
.slides-theme-neon .slides-viewport::after {
|
|
38542
|
+
content: '';
|
|
38543
|
+
position: absolute;
|
|
38544
|
+
inset: 0;
|
|
38545
|
+
pointer-events: none;
|
|
38546
|
+
background: repeating-linear-gradient(
|
|
38547
|
+
0deg,
|
|
38548
|
+
transparent,
|
|
38549
|
+
transparent 2px,
|
|
38550
|
+
rgba(0, 240, 255, 0.015) 2px,
|
|
38551
|
+
rgba(0, 240, 255, 0.015) 4px
|
|
38552
|
+
);
|
|
38553
|
+
z-index: 2;
|
|
38554
|
+
}
|
|
38555
|
+
.slides-theme-neon .slides-controls {
|
|
38556
|
+
background: #050510;
|
|
38557
|
+
}
|
|
38558
|
+
|
|
38559
|
+
/* ═══ EDITORIAL THEME ═══ */
|
|
38560
|
+
.slides-theme-editorial,
|
|
38561
|
+
.slides-theme-editorial .slides-viewport {
|
|
38562
|
+
background: #faf8f5;
|
|
38563
|
+
color: #2c2c2c;
|
|
38564
|
+
font-family: Georgia, 'Times New Roman', serif;
|
|
38565
|
+
}
|
|
38566
|
+
.slides-theme-editorial .slides-content h1,
|
|
38567
|
+
.slides-theme-editorial .slides-content h2 {
|
|
38568
|
+
font-family: 'Cormorant Garamond', Georgia, serif;
|
|
38569
|
+
color: #1a1a1a;
|
|
38570
|
+
font-weight: 600;
|
|
38571
|
+
}
|
|
38572
|
+
.slides-theme-editorial .slides-content h1 {
|
|
38573
|
+
letter-spacing: -0.03em;
|
|
38574
|
+
}
|
|
38575
|
+
.slides-theme-editorial .slides-content p:first-of-type::first-letter {
|
|
38576
|
+
float: left;
|
|
38577
|
+
font-size: 3.4em;
|
|
38578
|
+
line-height: 0.8;
|
|
38579
|
+
padding-right: 8px;
|
|
38580
|
+
padding-top: 4px;
|
|
38581
|
+
font-weight: 700;
|
|
38582
|
+
color: #c0392b;
|
|
38583
|
+
font-family: 'Cormorant Garamond', Georgia, serif;
|
|
38584
|
+
}
|
|
38585
|
+
.slides-theme-editorial .slides-content blockquote {
|
|
38586
|
+
border-left: 2px solid #c0392b;
|
|
38587
|
+
font-style: italic;
|
|
38588
|
+
font-size: 1.15em;
|
|
38589
|
+
color: #555;
|
|
38590
|
+
}
|
|
38591
|
+
.slides-theme-editorial .slides-content hr {
|
|
38592
|
+
border: none;
|
|
38593
|
+
height: 1px;
|
|
38594
|
+
background: linear-gradient(to right, transparent, #ccc, transparent);
|
|
38595
|
+
margin: 1.5em 0;
|
|
38596
|
+
}
|
|
38597
|
+
.slides-theme-editorial .slides-controls {
|
|
38598
|
+
background: #f0ece6;
|
|
38599
|
+
color: #666;
|
|
38600
|
+
}
|
|
38601
|
+
|
|
38602
|
+
/* ═══ BOLD-SIGNAL THEME ═══ */
|
|
38603
|
+
.slides-theme-bold-signal {
|
|
38604
|
+
background: linear-gradient(135deg, #0f0c29, #1a1a3e, #24243e);
|
|
38605
|
+
color: #e8e8f0;
|
|
38606
|
+
font-family: 'Space Grotesk', var(--font-sans), sans-serif;
|
|
38607
|
+
}
|
|
38608
|
+
.slides-theme-bold-signal .slides-content h1 {
|
|
38609
|
+
color: #ff6b35;
|
|
38610
|
+
font-weight: 700;
|
|
38611
|
+
}
|
|
38612
|
+
.slides-theme-bold-signal .slides-content h2 {
|
|
38613
|
+
color: #ffd166;
|
|
38614
|
+
}
|
|
38615
|
+
.slides-theme-bold-signal .slides-content blockquote {
|
|
38616
|
+
background: rgba(255, 107, 53, 0.1);
|
|
38617
|
+
border-left: 4px solid #ff6b35;
|
|
38618
|
+
border-radius: 0 8px 8px 0;
|
|
38619
|
+
padding: 16px 20px;
|
|
38620
|
+
}
|
|
38621
|
+
.slides-theme-bold-signal .slides-controls {
|
|
38622
|
+
background: #0a0820;
|
|
38623
|
+
}
|
|
38624
|
+
|
|
38625
|
+
/* ═══ SWISS THEME ═══ */
|
|
38626
|
+
.slides-theme-swiss,
|
|
38627
|
+
.slides-theme-swiss .slides-viewport {
|
|
38628
|
+
background: #ffffff;
|
|
38629
|
+
color: #1a1a1a;
|
|
38630
|
+
font-family: 'Helvetica Neue', 'Inter', Arial, sans-serif;
|
|
38631
|
+
}
|
|
38632
|
+
.slides-theme-swiss .slides-viewport::before {
|
|
38633
|
+
content: '';
|
|
38634
|
+
position: absolute;
|
|
38635
|
+
inset: 0;
|
|
38636
|
+
pointer-events: none;
|
|
38637
|
+
background-image:
|
|
38638
|
+
linear-gradient(rgba(0, 0, 0, 0.04) 1px, transparent 1px),
|
|
38639
|
+
linear-gradient(90deg, rgba(0, 0, 0, 0.04) 1px, transparent 1px);
|
|
38640
|
+
background-size: 40px 40px;
|
|
38641
|
+
z-index: 0;
|
|
38642
|
+
}
|
|
38643
|
+
.slides-theme-swiss .slides-content {
|
|
38644
|
+
position: relative;
|
|
38645
|
+
z-index: 1;
|
|
38646
|
+
}
|
|
38647
|
+
.slides-theme-swiss .slides-content h1 {
|
|
38648
|
+
color: #e63946;
|
|
38649
|
+
text-transform: uppercase;
|
|
38650
|
+
letter-spacing: 0.05em;
|
|
38651
|
+
font-weight: 900;
|
|
38652
|
+
}
|
|
38653
|
+
.slides-theme-swiss .slides-content h2 {
|
|
38654
|
+
color: #1d3557;
|
|
38655
|
+
font-weight: 700;
|
|
38656
|
+
}
|
|
38657
|
+
.slides-theme-swiss .slides-controls {
|
|
38658
|
+
background: #f1f1f1;
|
|
38659
|
+
color: #333;
|
|
38660
|
+
}
|
|
38661
|
+
|
|
38662
|
+
/* ═══ NOTEBOOK THEME ═══ */
|
|
38663
|
+
.slides-theme-notebook {
|
|
38664
|
+
background: #1a1a2e;
|
|
38665
|
+
color: #3c3c3c;
|
|
38666
|
+
}
|
|
38667
|
+
.slides-theme-notebook .slides-viewport {
|
|
38668
|
+
background: #fdf6e3;
|
|
38669
|
+
border-radius: 8px;
|
|
38670
|
+
margin: 12px;
|
|
38671
|
+
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.3);
|
|
38672
|
+
border-left: 5px solid #e74c3c;
|
|
38673
|
+
}
|
|
38674
|
+
.slides-theme-notebook .slides-content h1,
|
|
38675
|
+
.slides-theme-notebook .slides-content h2 {
|
|
38676
|
+
font-family: 'Caveat', cursive, sans-serif;
|
|
38677
|
+
color: #2c3e50;
|
|
38678
|
+
}
|
|
38679
|
+
.slides-theme-notebook .slides-content h1 {
|
|
38680
|
+
font-size: clamp(2rem, 6vw, 4rem);
|
|
38681
|
+
}
|
|
38682
|
+
.slides-theme-notebook .slides-controls {
|
|
38683
|
+
background: #f5edd6;
|
|
38684
|
+
color: #666;
|
|
38685
|
+
}
|
|
38686
|
+
|
|
38687
|
+
/* ═══ MOOD KEYFRAMES ═══ */
|
|
38688
|
+
@keyframes mood-dramatic {
|
|
38689
|
+
from {
|
|
38690
|
+
opacity: 0;
|
|
38691
|
+
transform: scale(0.95) translateY(10px);
|
|
38692
|
+
}
|
|
38693
|
+
to {
|
|
38694
|
+
opacity: 1;
|
|
38695
|
+
transform: none;
|
|
38696
|
+
}
|
|
38697
|
+
}
|
|
38698
|
+
@keyframes mood-techy {
|
|
38699
|
+
0% {
|
|
38700
|
+
opacity: 0;
|
|
38701
|
+
transform: translateY(8px);
|
|
38702
|
+
filter: blur(4px);
|
|
38703
|
+
}
|
|
38704
|
+
50% {
|
|
38705
|
+
opacity: 1;
|
|
38706
|
+
filter: blur(0);
|
|
38707
|
+
}
|
|
38708
|
+
100% {
|
|
38709
|
+
transform: none;
|
|
38710
|
+
}
|
|
38711
|
+
}
|
|
38712
|
+
@keyframes mood-playful {
|
|
38713
|
+
0% {
|
|
38714
|
+
opacity: 0;
|
|
38715
|
+
transform: translateY(20px);
|
|
38716
|
+
}
|
|
38717
|
+
60% {
|
|
38718
|
+
transform: translateY(-4px);
|
|
38719
|
+
}
|
|
38720
|
+
80% {
|
|
38721
|
+
transform: translateY(2px);
|
|
38722
|
+
}
|
|
38723
|
+
100% {
|
|
38724
|
+
opacity: 1;
|
|
38725
|
+
transform: none;
|
|
38726
|
+
}
|
|
38727
|
+
}
|
|
38728
|
+
@keyframes mood-calm {
|
|
38729
|
+
from {
|
|
38730
|
+
opacity: 0;
|
|
38731
|
+
}
|
|
38732
|
+
to {
|
|
38733
|
+
opacity: 1;
|
|
38734
|
+
}
|
|
38735
|
+
}
|
|
38736
|
+
|
|
38737
|
+
/* ═══ BACKGROUND EFFECTS ═══ */
|
|
38738
|
+
.slides-bgfx {
|
|
38739
|
+
position: absolute;
|
|
38740
|
+
inset: 0;
|
|
38741
|
+
pointer-events: none;
|
|
38742
|
+
z-index: 0;
|
|
38743
|
+
}
|
|
38744
|
+
.slides-bgfx-gradient-mesh {
|
|
38745
|
+
background:
|
|
38746
|
+
radial-gradient(ellipse at 20% 50%, rgba(120, 80, 255, 0.15) 0%, transparent 50%),
|
|
38747
|
+
radial-gradient(ellipse at 80% 20%, rgba(255, 100, 80, 0.12) 0%, transparent 50%),
|
|
38748
|
+
radial-gradient(ellipse at 50% 80%, rgba(80, 200, 255, 0.1) 0%, transparent 50%);
|
|
38749
|
+
animation: bgfx-drift 12s ease-in-out infinite alternate;
|
|
38750
|
+
}
|
|
38751
|
+
@keyframes bgfx-drift {
|
|
38752
|
+
0% {
|
|
38753
|
+
transform: translate(0, 0) scale(1);
|
|
38754
|
+
}
|
|
38755
|
+
50% {
|
|
38756
|
+
transform: translate(5%, -3%) scale(1.05);
|
|
38757
|
+
}
|
|
38758
|
+
100% {
|
|
38759
|
+
transform: translate(-3%, 4%) scale(1.02);
|
|
38760
|
+
}
|
|
38761
|
+
}
|
|
38762
|
+
.slides-bgfx-noise {
|
|
38763
|
+
opacity: 0.06;
|
|
38764
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
38765
|
+
}
|
|
38766
|
+
.slides-bgfx-grid {
|
|
38767
|
+
background-image:
|
|
38768
|
+
linear-gradient(rgba(255, 255, 255, 0.05) 1px, transparent 1px),
|
|
38769
|
+
linear-gradient(90deg, rgba(255, 255, 255, 0.05) 1px, transparent 1px);
|
|
38770
|
+
background-size: 32px 32px;
|
|
38771
|
+
}
|
|
38772
|
+
.slides-bgfx-particles::before,
|
|
38773
|
+
.slides-bgfx-particles::after {
|
|
38774
|
+
content: '';
|
|
38775
|
+
position: absolute;
|
|
38776
|
+
width: 4px;
|
|
38777
|
+
height: 4px;
|
|
38778
|
+
border-radius: 50%;
|
|
38779
|
+
background: rgba(255, 255, 255, 0.2);
|
|
38780
|
+
box-shadow:
|
|
38781
|
+
40px 80px 0 rgba(255, 255, 255, 0.15),
|
|
38782
|
+
120px 40px 0 rgba(255, 255, 255, 0.1),
|
|
38783
|
+
200px 120px 0 rgba(255, 255, 255, 0.12),
|
|
38784
|
+
300px 60px 0 rgba(255, 255, 255, 0.08),
|
|
38785
|
+
400px 140px 0 rgba(255, 255, 255, 0.15);
|
|
38786
|
+
animation: bgfx-float 8s ease-in-out infinite alternate;
|
|
38787
|
+
}
|
|
38788
|
+
.slides-bgfx-particles::after {
|
|
38789
|
+
animation-delay: -4s;
|
|
38790
|
+
animation-direction: alternate-reverse;
|
|
38791
|
+
}
|
|
38792
|
+
@keyframes bgfx-float {
|
|
38793
|
+
from {
|
|
38794
|
+
transform: translateY(0);
|
|
38795
|
+
}
|
|
38796
|
+
to {
|
|
38797
|
+
transform: translateY(-15px);
|
|
38798
|
+
}
|
|
38799
|
+
}
|
|
38800
|
+
|
|
38348
38801
|
/* ═══ VIEW TRANSITIONS ═══ */
|
|
38349
38802
|
.slides-content {
|
|
38350
38803
|
view-transition-name: slide-content;
|
|
@@ -38660,11 +39113,14 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38660
39113
|
{ once: true }
|
|
38661
39114
|
);
|
|
38662
39115
|
}
|
|
38663
|
-
/** Trigger stagger-in animation on slide content children after transition.
|
|
38664
|
-
* Uses the universal data-enter attribute from the motion system. */
|
|
38665
39116
|
_slidesStaggerIn() {
|
|
38666
|
-
const
|
|
38667
|
-
const
|
|
39117
|
+
const idx = this._slidesCurrentIndex;
|
|
39118
|
+
const mood = this._slidesMoods.get(idx) || this._slidesGlobalMood;
|
|
39119
|
+
const moodCfg = ResultViewer._MOOD_CONFIG[mood];
|
|
39120
|
+
const slideEffect = this._slidesEffects.get(idx) || "";
|
|
39121
|
+
const enterValue = moodCfg ? moodCfg.enter : ResultViewer._EFFECT_MAP[slideEffect] || (slideEffect ? slideEffect : "slide-up");
|
|
39122
|
+
const delayMs = moodCfg?.delayMs ?? 60;
|
|
39123
|
+
const durationMs = moodCfg?.durationMs ?? 300;
|
|
38668
39124
|
const CHILD_SELECTOR = ":scope > h1, :scope > h2, :scope > h3, :scope > p, :scope > ul, :scope > ol, :scope > table, :scope > blockquote, :scope > pre, :scope > div:not(.slide-header):not(.slide-footer), :scope > figure, :scope > img, :scope > .slide-content-area";
|
|
38669
39125
|
const applyToChildren = (container) => {
|
|
38670
39126
|
const children = container.querySelectorAll(CHILD_SELECTOR);
|
|
@@ -38673,7 +39129,8 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38673
39129
|
htmlEl.removeAttribute("data-enter");
|
|
38674
39130
|
void htmlEl.offsetWidth;
|
|
38675
39131
|
htmlEl.setAttribute("data-enter", enterValue);
|
|
38676
|
-
htmlEl.style.animationDelay = `${i7 *
|
|
39132
|
+
htmlEl.style.animationDelay = `${i7 * delayMs}ms`;
|
|
39133
|
+
htmlEl.style.animationDuration = `${durationMs}ms`;
|
|
38677
39134
|
});
|
|
38678
39135
|
};
|
|
38679
39136
|
const iframe = this.shadowRoot?.querySelector(".slide-bridge-frame");
|
|
@@ -38693,6 +39150,97 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38693
39150
|
const content2 = this.shadowRoot?.querySelector(".slides-content");
|
|
38694
39151
|
if (content2) applyToChildren(content2);
|
|
38695
39152
|
}
|
|
39153
|
+
_slidesApplyTextEffect() {
|
|
39154
|
+
const effect = this._slidesEffects.get(this._slidesCurrentIndex) || "";
|
|
39155
|
+
if (!ResultViewer._PRETEXT_EFFECTS.has(effect)) return;
|
|
39156
|
+
const content2 = this.shadowRoot?.querySelector(".slides-content");
|
|
39157
|
+
if (!content2) return;
|
|
39158
|
+
const heading2 = content2.querySelector("h1, h2");
|
|
39159
|
+
if (!heading2) return;
|
|
39160
|
+
const text = heading2.textContent || "";
|
|
39161
|
+
if (!text) return;
|
|
39162
|
+
switch (effect) {
|
|
39163
|
+
case "typing": {
|
|
39164
|
+
heading2.textContent = "";
|
|
39165
|
+
heading2.style.borderRight = "2px solid currentColor";
|
|
39166
|
+
let i7 = 0;
|
|
39167
|
+
const type = () => {
|
|
39168
|
+
if (i7 < text.length) {
|
|
39169
|
+
heading2.textContent += text[i7];
|
|
39170
|
+
i7++;
|
|
39171
|
+
requestAnimationFrame(() => setTimeout(type, 40 + Math.random() * 30));
|
|
39172
|
+
} else {
|
|
39173
|
+
setTimeout(() => {
|
|
39174
|
+
heading2.style.borderRight = "none";
|
|
39175
|
+
}, 800);
|
|
39176
|
+
}
|
|
39177
|
+
};
|
|
39178
|
+
setTimeout(type, 200);
|
|
39179
|
+
break;
|
|
39180
|
+
}
|
|
39181
|
+
case "scramble": {
|
|
39182
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%&";
|
|
39183
|
+
const revealed = new Array(text.length).fill(false);
|
|
39184
|
+
let iterations = 0;
|
|
39185
|
+
const scramble = () => {
|
|
39186
|
+
let display = "";
|
|
39187
|
+
for (let j2 = 0; j2 < text.length; j2++) {
|
|
39188
|
+
if (revealed[j2] || text[j2] === " ") {
|
|
39189
|
+
display += text[j2];
|
|
39190
|
+
} else {
|
|
39191
|
+
display += chars[Math.floor(Math.random() * chars.length)];
|
|
39192
|
+
}
|
|
39193
|
+
}
|
|
39194
|
+
heading2.textContent = display;
|
|
39195
|
+
if (iterations > 5) {
|
|
39196
|
+
const unrevealed = revealed.map((r7, idx) => !r7 && text[idx] !== " " ? idx : -1).filter((x3) => x3 >= 0);
|
|
39197
|
+
if (unrevealed.length > 0) {
|
|
39198
|
+
const pick2 = unrevealed[Math.floor(Math.random() * unrevealed.length)];
|
|
39199
|
+
revealed[pick2] = true;
|
|
39200
|
+
}
|
|
39201
|
+
}
|
|
39202
|
+
iterations++;
|
|
39203
|
+
if (revealed.some((r7) => !r7) && revealed.filter((r7) => r7).length < text.length) {
|
|
39204
|
+
requestAnimationFrame(scramble);
|
|
39205
|
+
} else {
|
|
39206
|
+
heading2.textContent = text;
|
|
39207
|
+
}
|
|
39208
|
+
};
|
|
39209
|
+
setTimeout(scramble, 200);
|
|
39210
|
+
break;
|
|
39211
|
+
}
|
|
39212
|
+
case "wave": {
|
|
39213
|
+
heading2.innerHTML = "";
|
|
39214
|
+
const chars = text.split("");
|
|
39215
|
+
chars.forEach((char, i7) => {
|
|
39216
|
+
const span = document.createElement("span");
|
|
39217
|
+
span.textContent = char === " " ? "\xA0" : char;
|
|
39218
|
+
span.style.display = "inline-block";
|
|
39219
|
+
span.style.animation = `mood-playful 0.5s ease ${i7 * 30}ms both`;
|
|
39220
|
+
heading2.appendChild(span);
|
|
39221
|
+
});
|
|
39222
|
+
break;
|
|
39223
|
+
}
|
|
39224
|
+
case "fly-in": {
|
|
39225
|
+
heading2.innerHTML = "";
|
|
39226
|
+
const words = text.split(" ");
|
|
39227
|
+
words.forEach((word, i7) => {
|
|
39228
|
+
const span = document.createElement("span");
|
|
39229
|
+
span.textContent = word + " ";
|
|
39230
|
+
span.style.display = "inline-block";
|
|
39231
|
+
span.style.opacity = "0";
|
|
39232
|
+
span.style.transform = `translate(${(Math.random() - 0.5) * 200}px, ${(Math.random() - 0.5) * 100}px)`;
|
|
39233
|
+
span.style.transition = `all 0.6s cubic-bezier(0.16, 1, 0.3, 1) ${i7 * 80}ms`;
|
|
39234
|
+
heading2.appendChild(span);
|
|
39235
|
+
requestAnimationFrame(() => {
|
|
39236
|
+
span.style.opacity = "1";
|
|
39237
|
+
span.style.transform = "none";
|
|
39238
|
+
});
|
|
39239
|
+
});
|
|
39240
|
+
break;
|
|
39241
|
+
}
|
|
39242
|
+
}
|
|
39243
|
+
}
|
|
38696
39244
|
/** Advance the next hidden build fragment. Returns true if a fragment was revealed. */
|
|
38697
39245
|
_slidesAdvanceBuild() {
|
|
38698
39246
|
const hasBuild = this._slidesBuilds.get(this._slidesCurrentIndex);
|
|
@@ -38757,6 +39305,7 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
38757
39305
|
this._afterSlideRender();
|
|
38758
39306
|
}
|
|
38759
39307
|
this._slidesStaggerIn();
|
|
39308
|
+
this._slidesApplyTextEffect();
|
|
38760
39309
|
};
|
|
38761
39310
|
if (transition === "none" || !("startViewTransition" in document) || this._slidesBridgeScript) {
|
|
38762
39311
|
this._slidesCurrentIndex = newIndex;
|
|
@@ -39632,7 +40181,116 @@ ${footerText || pageNum ? `<div class="slide-footer"><span>${footerText || ""}</
|
|
|
39632
40181
|
</div>
|
|
39633
40182
|
`;
|
|
39634
40183
|
}
|
|
39635
|
-
// ──
|
|
40184
|
+
// ── Guide Renderer — horizontal stepper for multi-step flows ──
|
|
40185
|
+
_renderGuide(data) {
|
|
40186
|
+
const steps2 = Array.isArray(data) ? data : [];
|
|
40187
|
+
if (steps2.length === 0) {
|
|
40188
|
+
return b2`<div class="empty-state">No steps</div>`;
|
|
40189
|
+
}
|
|
40190
|
+
return b2`
|
|
40191
|
+
<div
|
|
40192
|
+
style="display: flex; align-items: flex-start; gap: 0; padding: 16px 8px; overflow-x: auto;"
|
|
40193
|
+
>
|
|
40194
|
+
${steps2.map((step, i7) => {
|
|
40195
|
+
const status = step.status || "pending";
|
|
40196
|
+
const isDone = status === "done";
|
|
40197
|
+
const isActive = status === "active";
|
|
40198
|
+
const circleColor = isDone ? "var(--accent-primary, #3b82f6)" : isActive ? "var(--accent-primary, #3b82f6)" : "var(--bg-tertiary, #374151)";
|
|
40199
|
+
const circleBorder = isActive ? "2px solid var(--accent-primary, #3b82f6)" : "none";
|
|
40200
|
+
const circleText = isDone ? "#fff" : isActive ? "var(--accent-primary, #3b82f6)" : "var(--t-muted, #9ca3af)";
|
|
40201
|
+
const circleBg = isDone ? circleColor : isActive ? "transparent" : circleColor;
|
|
40202
|
+
const labelColor = isDone || isActive ? "var(--t-primary, #f5f5f5)" : "var(--t-muted, #9ca3af)";
|
|
40203
|
+
const lineColor = isDone ? "var(--accent-primary, #3b82f6)" : "var(--bg-tertiary, #374151)";
|
|
40204
|
+
return b2`
|
|
40205
|
+
<div style="display: flex; align-items: flex-start; flex: 1; min-width: 0;">
|
|
40206
|
+
<div
|
|
40207
|
+
style="display: flex; flex-direction: column; align-items: center; flex-shrink: 0; width: 100%;"
|
|
40208
|
+
>
|
|
40209
|
+
<div
|
|
40210
|
+
style="
|
|
40211
|
+
width: 28px; height: 28px; border-radius: 50%;
|
|
40212
|
+
background: ${circleBg}; border: ${circleBorder};
|
|
40213
|
+
display: flex; align-items: center; justify-content: center;
|
|
40214
|
+
font-size: 12px; font-weight: 600; color: ${circleText};
|
|
40215
|
+
transition: all 0.2s ease;
|
|
40216
|
+
"
|
|
40217
|
+
>
|
|
40218
|
+
${isDone ? b2`<svg
|
|
40219
|
+
width="14"
|
|
40220
|
+
height="14"
|
|
40221
|
+
viewBox="0 0 12 12"
|
|
40222
|
+
fill="none"
|
|
40223
|
+
stroke="currentColor"
|
|
40224
|
+
stroke-width="2"
|
|
40225
|
+
stroke-linecap="round"
|
|
40226
|
+
>
|
|
40227
|
+
<path d="M2.5 6l2.5 2.5 4.5-5" />
|
|
40228
|
+
</svg>` : i7 + 1}
|
|
40229
|
+
</div>
|
|
40230
|
+
<div
|
|
40231
|
+
style="margin-top: 6px; font-size: 12px; font-weight: ${isActive ? "600" : "500"}; color: ${labelColor}; text-align: center; line-height: 1.3; padding: 0 4px;"
|
|
40232
|
+
>
|
|
40233
|
+
${step.label}
|
|
40234
|
+
</div>
|
|
40235
|
+
${step.detail ? b2`<div
|
|
40236
|
+
style="margin-top: 2px; font-size: 11px; color: var(--t-muted, #9ca3af); text-align: center; padding: 0 4px;"
|
|
40237
|
+
>
|
|
40238
|
+
${step.detail}
|
|
40239
|
+
</div>` : ""}
|
|
40240
|
+
</div>
|
|
40241
|
+
${i7 < steps2.length - 1 ? b2`<div
|
|
40242
|
+
style="
|
|
40243
|
+
position: relative; top: 14px;
|
|
40244
|
+
flex: 1; height: 2px; min-width: 20px;
|
|
40245
|
+
background: ${lineColor};
|
|
40246
|
+
transition: background 0.2s ease;
|
|
40247
|
+
"
|
|
40248
|
+
></div>` : ""}
|
|
40249
|
+
</div>
|
|
40250
|
+
`;
|
|
40251
|
+
})}
|
|
40252
|
+
</div>
|
|
40253
|
+
`;
|
|
40254
|
+
}
|
|
40255
|
+
// ── Magazine Renderer — markdown-powered multi-column layout ──
|
|
40256
|
+
_renderMagazine(data) {
|
|
40257
|
+
const text = typeof data === "string" ? data : data?.text || "";
|
|
40258
|
+
const images = (typeof data === "object" && !Array.isArray(data) ? data?.images : null) || [];
|
|
40259
|
+
if (!text) {
|
|
40260
|
+
return b2`<div class="empty-state">No content</div>`;
|
|
40261
|
+
}
|
|
40262
|
+
const columnCount = Math.min(4, Math.max(1, parseInt(this.layoutHints?.columns || "2", 10)));
|
|
40263
|
+
const marked2 = window.marked;
|
|
40264
|
+
if (!marked2) return this._renderText(text);
|
|
40265
|
+
const { html: bodyHtml, mermaidBlocks, codeBlocks } = this._parseRichMarkdown(text);
|
|
40266
|
+
const effectiveCols = columnCount;
|
|
40267
|
+
let finalHtml = bodyHtml;
|
|
40268
|
+
if (images.length > 0) {
|
|
40269
|
+
const paragraphs = finalHtml.split(/(?=<(?:p|h[23456]|blockquote)[\s>])/i);
|
|
40270
|
+
const interval = Math.max(2, Math.floor(paragraphs.length / (images.length + 1)));
|
|
40271
|
+
for (let i7 = images.length - 1; i7 >= 0; i7--) {
|
|
40272
|
+
const img = images[i7];
|
|
40273
|
+
const pos = img.position || (i7 % 2 === 0 ? "right" : "left");
|
|
40274
|
+
const maxW = pos === "full" ? "100%" : img.width ? Math.min(img.width, 280) + "px" : "280px";
|
|
40275
|
+
const imgHtml = `<div class="magazine-float ${pos}" style="max-width:${maxW}"><img src="${img.url}" alt="" loading="lazy" />${img.caption ? `<div class="caption">${img.caption}</div>` : ""}</div>`;
|
|
40276
|
+
const insertIdx = Math.min((i7 + 1) * interval, paragraphs.length - 1);
|
|
40277
|
+
paragraphs.splice(insertIdx, 0, imgHtml);
|
|
40278
|
+
}
|
|
40279
|
+
finalHtml = paragraphs.join("");
|
|
40280
|
+
}
|
|
40281
|
+
if (mermaidBlocks.length > 0) {
|
|
40282
|
+
this._pendingMermaidBlocks = mermaidBlocks;
|
|
40283
|
+
}
|
|
40284
|
+
if (codeBlocks.length > 0) {
|
|
40285
|
+
this._pendingCodeBlocks = codeBlocks;
|
|
40286
|
+
}
|
|
40287
|
+
return b2`
|
|
40288
|
+
<div class="magazine-layout markdown-content" style="column-count: ${effectiveCols}">
|
|
40289
|
+
${o5(finalHtml)}
|
|
40290
|
+
</div>
|
|
40291
|
+
`;
|
|
40292
|
+
}
|
|
40293
|
+
// ── Legacy Article Renderer (kept for backward compat, delegates to magazine) ──
|
|
39636
40294
|
_renderArticle(data) {
|
|
39637
40295
|
if (!data || typeof data.text !== "string") {
|
|
39638
40296
|
return b2`<div class="empty-state">No article content</div>`;
|
|
@@ -40612,23 +41270,20 @@ ${str}</pre
|
|
|
40612
41270
|
`;
|
|
40613
41271
|
}
|
|
40614
41272
|
return b2`
|
|
40615
|
-
<div style="max-height: 200px; overflow-y: auto;
|
|
40616
|
-
|
|
41273
|
+
<div class="dash-mini-list" style="max-height: 200px; overflow-y: auto;">
|
|
41274
|
+
<table style="width:100%; border-collapse:collapse; font-size:12px;">
|
|
41275
|
+
${value.slice(0, 5).map(
|
|
40617
41276
|
(item) => b2`
|
|
40618
|
-
|
|
40619
|
-
|
|
40620
|
-
|
|
40621
|
-
${Object.entries(item).slice(0, 3).map(
|
|
40622
|
-
([, v2]) => b2`<span
|
|
40623
|
-
style="flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;"
|
|
40624
|
-
>${String(v2)}</span
|
|
40625
|
-
>`
|
|
41277
|
+
<tr style="border-bottom: 1px solid var(--border-glass);">
|
|
41278
|
+
${Object.entries(item).slice(0, 5).map(
|
|
41279
|
+
([, v2]) => b2`<td style="padding:5px 6px; white-space:nowrap;">${String(v2)}</td>`
|
|
40626
41280
|
)}
|
|
40627
|
-
|
|
40628
|
-
|
|
41281
|
+
</tr>
|
|
41282
|
+
`
|
|
40629
41283
|
)}
|
|
41284
|
+
</table>
|
|
40630
41285
|
${value.length > 5 ? b2`<div
|
|
40631
|
-
style="padding:6px 8px;color:var(--t-muted);text-align:center;font-style:italic;"
|
|
41286
|
+
style="padding:6px 8px;color:var(--t-muted);text-align:center;font-style:italic;font-size:12px;"
|
|
40632
41287
|
>
|
|
40633
41288
|
+${value.length - 5} more
|
|
40634
41289
|
</div>` : ""}
|
|
@@ -41805,6 +42460,115 @@ ResultViewer.styles = [
|
|
|
41805
42460
|
animation: article-fade-in 0.3s ease both;
|
|
41806
42461
|
}
|
|
41807
42462
|
|
|
42463
|
+
/* Magazine: override flex/height constraints so CSS columns work */
|
|
42464
|
+
.container:has(.magazine-layout) {
|
|
42465
|
+
display: block;
|
|
42466
|
+
height: auto;
|
|
42467
|
+
overflow: auto;
|
|
42468
|
+
}
|
|
42469
|
+
|
|
42470
|
+
.container:has(.magazine-layout) > .content {
|
|
42471
|
+
flex: none;
|
|
42472
|
+
overflow: visible;
|
|
42473
|
+
}
|
|
42474
|
+
|
|
42475
|
+
/* Magazine Layout — markdown-powered multi-column */
|
|
42476
|
+
.magazine-layout {
|
|
42477
|
+
line-height: 1.7;
|
|
42478
|
+
font-size: 15px;
|
|
42479
|
+
color: var(--t-primary);
|
|
42480
|
+
column-gap: 32px;
|
|
42481
|
+
column-rule: 1px solid color-mix(in srgb, var(--border-glass) 50%, transparent);
|
|
42482
|
+
animation: article-fade-in 0.3s ease both;
|
|
42483
|
+
}
|
|
42484
|
+
|
|
42485
|
+
.magazine-layout h1 {
|
|
42486
|
+
column-span: all;
|
|
42487
|
+
margin-top: 0.6em;
|
|
42488
|
+
margin-bottom: 0.3em;
|
|
42489
|
+
}
|
|
42490
|
+
|
|
42491
|
+
.magazine-layout h1:first-child {
|
|
42492
|
+
margin-top: 0;
|
|
42493
|
+
}
|
|
42494
|
+
|
|
42495
|
+
.magazine-layout h2 {
|
|
42496
|
+
margin-top: 0.8em;
|
|
42497
|
+
margin-bottom: 0.3em;
|
|
42498
|
+
break-after: avoid;
|
|
42499
|
+
}
|
|
42500
|
+
|
|
42501
|
+
.magazine-layout > p:first-of-type::first-letter {
|
|
42502
|
+
float: left;
|
|
42503
|
+
font-size: 3.2em;
|
|
42504
|
+
line-height: 0.8;
|
|
42505
|
+
padding-right: 8px;
|
|
42506
|
+
padding-top: 4px;
|
|
42507
|
+
font-weight: 600;
|
|
42508
|
+
color: var(--accent);
|
|
42509
|
+
}
|
|
42510
|
+
|
|
42511
|
+
.magazine-float {
|
|
42512
|
+
break-inside: avoid;
|
|
42513
|
+
margin-bottom: 12px;
|
|
42514
|
+
border-radius: var(--radius-sm);
|
|
42515
|
+
overflow: hidden;
|
|
42516
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
42517
|
+
}
|
|
42518
|
+
|
|
42519
|
+
.magazine-float.left {
|
|
42520
|
+
float: left;
|
|
42521
|
+
margin: 0 20px 12px 0;
|
|
42522
|
+
max-width: 45%;
|
|
42523
|
+
shape-outside: margin-box;
|
|
42524
|
+
}
|
|
42525
|
+
|
|
42526
|
+
.magazine-float.right {
|
|
42527
|
+
float: right;
|
|
42528
|
+
margin: 0 0 12px 20px;
|
|
42529
|
+
max-width: 45%;
|
|
42530
|
+
shape-outside: margin-box;
|
|
42531
|
+
}
|
|
42532
|
+
|
|
42533
|
+
.magazine-float.full {
|
|
42534
|
+
column-span: all;
|
|
42535
|
+
width: 100%;
|
|
42536
|
+
float: none;
|
|
42537
|
+
margin: 1em 0;
|
|
42538
|
+
}
|
|
42539
|
+
|
|
42540
|
+
.magazine-float img {
|
|
42541
|
+
width: 100%;
|
|
42542
|
+
display: block;
|
|
42543
|
+
}
|
|
42544
|
+
|
|
42545
|
+
.magazine-float .caption {
|
|
42546
|
+
padding: 6px 10px;
|
|
42547
|
+
font-size: 11px;
|
|
42548
|
+
font-style: italic;
|
|
42549
|
+
color: var(--t-muted);
|
|
42550
|
+
background: var(--bg-glass);
|
|
42551
|
+
}
|
|
42552
|
+
|
|
42553
|
+
.magazine-layout p,
|
|
42554
|
+
.magazine-layout blockquote,
|
|
42555
|
+
.magazine-layout ul,
|
|
42556
|
+
.magazine-layout ol,
|
|
42557
|
+
.magazine-layout pre {
|
|
42558
|
+
break-inside: avoid;
|
|
42559
|
+
}
|
|
42560
|
+
|
|
42561
|
+
.magazine-layout blockquote {
|
|
42562
|
+
border-left: 3px solid var(--accent);
|
|
42563
|
+
padding-left: 16px;
|
|
42564
|
+
margin: 0.8em 0;
|
|
42565
|
+
color: var(--t-secondary);
|
|
42566
|
+
}
|
|
42567
|
+
|
|
42568
|
+
.magazine-layout pre {
|
|
42569
|
+
column-span: all;
|
|
42570
|
+
}
|
|
42571
|
+
|
|
41808
42572
|
.status-badge {
|
|
41809
42573
|
padding: 2px 8px;
|
|
41810
42574
|
border-radius: var(--radius-full);
|
|
@@ -42984,6 +43748,8 @@ ResultViewer.styles = [
|
|
|
42984
43748
|
border: 1px solid var(--border-glass);
|
|
42985
43749
|
border-radius: var(--radius-md);
|
|
42986
43750
|
overflow: hidden;
|
|
43751
|
+
display: flex;
|
|
43752
|
+
flex-direction: column;
|
|
42987
43753
|
}
|
|
42988
43754
|
|
|
42989
43755
|
.dashboard-panel-header {
|
|
@@ -42997,11 +43763,25 @@ ResultViewer.styles = [
|
|
|
42997
43763
|
}
|
|
42998
43764
|
|
|
42999
43765
|
.dashboard-panel-content {
|
|
43000
|
-
padding: var(--space-
|
|
43766
|
+
padding: var(--space-sm);
|
|
43001
43767
|
display: flex;
|
|
43768
|
+
flex-direction: column;
|
|
43002
43769
|
align-items: center;
|
|
43003
43770
|
justify-content: center;
|
|
43004
43771
|
text-align: center;
|
|
43772
|
+
flex: 1;
|
|
43773
|
+
min-height: 120px;
|
|
43774
|
+
}
|
|
43775
|
+
|
|
43776
|
+
/* Metrics center their big number + label */
|
|
43777
|
+
.dashboard-panel-content > .metric-card,
|
|
43778
|
+
.dashboard-panel-content > .gauge-container {
|
|
43779
|
+
display: flex;
|
|
43780
|
+
flex-direction: column;
|
|
43781
|
+
align-items: center;
|
|
43782
|
+
justify-content: center;
|
|
43783
|
+
width: 100%;
|
|
43784
|
+
flex: 1;
|
|
43005
43785
|
}
|
|
43006
43786
|
|
|
43007
43787
|
.dashboard-panel .chart-container {
|
|
@@ -43012,8 +43792,11 @@ ResultViewer.styles = [
|
|
|
43012
43792
|
align-items: center;
|
|
43013
43793
|
}
|
|
43014
43794
|
|
|
43015
|
-
|
|
43795
|
+
/* Tables and lists take full width, left-aligned */
|
|
43796
|
+
.dashboard-panel .table-wrapper,
|
|
43797
|
+
.dashboard-panel .dash-mini-list {
|
|
43016
43798
|
width: 100%;
|
|
43799
|
+
text-align: left;
|
|
43017
43800
|
}
|
|
43018
43801
|
|
|
43019
43802
|
.dashboard-panel .chart-container canvas {
|
|
@@ -43022,11 +43805,14 @@ ResultViewer.styles = [
|
|
|
43022
43805
|
}
|
|
43023
43806
|
|
|
43024
43807
|
.dashboard-panel .metric-container {
|
|
43025
|
-
padding: var(--space-
|
|
43808
|
+
padding: var(--space-md);
|
|
43809
|
+
flex: 1;
|
|
43810
|
+
justify-content: center;
|
|
43026
43811
|
}
|
|
43027
43812
|
|
|
43028
43813
|
.dashboard-panel .metric-value {
|
|
43029
|
-
font-size:
|
|
43814
|
+
font-size: 2rem;
|
|
43815
|
+
font-weight: 700;
|
|
43030
43816
|
}
|
|
43031
43817
|
|
|
43032
43818
|
/* ═══════════════════════════════════════════════════════════════
|
|
@@ -43328,6 +44114,52 @@ ResultViewer._TIMESTAMP_FIELDS = [
|
|
|
43328
44114
|
// ReactiveArray auto-stamp (fallback for creation)
|
|
43329
44115
|
];
|
|
43330
44116
|
// Map slide effect directives to universal motion data-enter values
|
|
44117
|
+
// Shared theme CSS injected into both shadow DOM styles and bridge srcdoc
|
|
44118
|
+
ResultViewer._BRIDGE_THEME_CSS = `
|
|
44119
|
+
.slides-theme-default { background: #1a1a2e; color: #e6e6e6; }
|
|
44120
|
+
.slides-theme-default h1, .slides-theme-default h2 { color: #a5b4fc; }
|
|
44121
|
+
.slides-theme-uncover { background: #f8f8f8; color: #333; }
|
|
44122
|
+
.slides-theme-uncover h1, .slides-theme-uncover h2 { color: #1a1a1a; }
|
|
44123
|
+
.slides-theme-gaia { background: #1a472a; color: #e0f0e0; }
|
|
44124
|
+
.slides-theme-gaia h1, .slides-theme-gaia h2 { color: #66bb6a; }
|
|
44125
|
+
.slides-theme-rose { background: #2d1b2e; color: #f0e0e8; }
|
|
44126
|
+
.slides-theme-rose h1, .slides-theme-rose h2 { color: #f48fb1; }
|
|
44127
|
+
.slides-theme-dracula { background: #282a36; color: #f8f8f2; }
|
|
44128
|
+
.slides-theme-dracula h1, .slides-theme-dracula h2 { color: #bd93f9; }
|
|
44129
|
+
.slides-theme-auto { background: var(--bg-panel, #1a1a2e); color: var(--t-primary, #e0e0e0); }
|
|
44130
|
+
.slides-theme-auto h1, .slides-theme-auto h2 { color: var(--accent, #6366f1); }
|
|
44131
|
+
.slides-theme-neon { background: #0a0a1a; color: #e0e0ff; font-family: 'JetBrains Mono', monospace; }
|
|
44132
|
+
.slides-theme-neon h1, .slides-theme-neon h2 { color: #00f0ff; text-shadow: 0 0 10px rgba(0,240,255,0.5), 0 0 40px rgba(0,240,255,0.2); }
|
|
44133
|
+
.slides-theme-editorial { background: #faf8f5; color: #2c2c2c; font-family: Georgia, 'Times New Roman', serif; }
|
|
44134
|
+
.slides-theme-editorial h1, .slides-theme-editorial h2 { font-family: 'Cormorant Garamond', Georgia, serif; color: #1a1a1a; }
|
|
44135
|
+
.slides-theme-bold-signal { background: linear-gradient(135deg, #0f0c29, #1a1a3e, #24243e); color: #e8e8f0; font-family: 'Space Grotesk', sans-serif; }
|
|
44136
|
+
.slides-theme-bold-signal h1 { color: #ff6b35; }
|
|
44137
|
+
.slides-theme-bold-signal h2 { color: #ffd166; }
|
|
44138
|
+
.slides-theme-swiss { background: #ffffff; color: #1a1a1a; font-family: 'Helvetica Neue', 'Inter', Arial, sans-serif; }
|
|
44139
|
+
.slides-theme-swiss h1 { color: #e63946; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
44140
|
+
.slides-theme-swiss h2 { color: #1d3557; }
|
|
44141
|
+
.slides-theme-notebook { background: #1a1a2e; color: #3c3c3c; }
|
|
44142
|
+
.slides-theme-notebook .slide-canvas { background: #fdf6e3; border-left: 5px solid #e74c3c; border-radius: 8px; }
|
|
44143
|
+
.slides-theme-notebook h1, .slides-theme-notebook h2 { font-family: 'Caveat', cursive; color: #2c3e50; }
|
|
44144
|
+
@keyframes mood-dramatic { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: none; } }
|
|
44145
|
+
@keyframes mood-techy { 0% { opacity: 0; transform: translateY(8px); filter: blur(4px); } 50% { opacity: 1; filter: blur(0); } 100% { transform: none; } }
|
|
44146
|
+
@keyframes mood-playful { 0% { opacity: 0; transform: translateY(20px); } 60% { transform: translateY(-4px); } 80% { transform: translateY(2px); } 100% { opacity: 1; transform: none; } }
|
|
44147
|
+
@keyframes mood-calm { from { opacity: 0; } to { opacity: 1; } }
|
|
44148
|
+
@keyframes bgdrift { 0% { transform: translate(0,0) scale(1); } 50% { transform: translate(5%,-3%) scale(1.05); } 100% { transform: translate(-3%,4%) scale(1.02); } }
|
|
44149
|
+
.slides-theme-neon body::after { content: ''; position: fixed; inset: 0; pointer-events: none; background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,240,255,0.015) 2px, rgba(0,240,255,0.015) 4px); z-index: 100; }
|
|
44150
|
+
.slides-theme-neon .slide-body blockquote { border-left: 3px solid #00f0ff; box-shadow: -4px 0 20px rgba(0,240,255,0.15); }
|
|
44151
|
+
.slides-theme-neon .slide-body pre { border: 1px solid rgba(0,240,255,0.2); box-shadow: 0 0 15px rgba(0,240,255,0.1); }
|
|
44152
|
+
.slides-theme-editorial .slide-body p:first-of-type::first-letter { float: left; font-size: 3.4em; line-height: 0.8; padding-right: 8px; padding-top: 4px; font-weight: 700; color: #c0392b; font-family: 'Cormorant Garamond', Georgia, serif; }
|
|
44153
|
+
.slides-theme-editorial .slide-body blockquote { border-left: 2px solid #c0392b; font-style: italic; color: #555; }
|
|
44154
|
+
.slides-theme-bold-signal .slide-body blockquote { background: rgba(255,107,53,0.1); border-left: 4px solid #ff6b35; border-radius: 0 8px 8px 0; padding: 16px 20px; }
|
|
44155
|
+
.slides-theme-swiss body::before { content: ''; position: fixed; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(0,0,0,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(0,0,0,0.04) 1px, transparent 1px); background-size: 40px 40px; z-index: 0; }
|
|
44156
|
+
`;
|
|
44157
|
+
// Google Fonts per theme
|
|
44158
|
+
ResultViewer._THEME_FONTS = {
|
|
44159
|
+
editorial: "Cormorant+Garamond:wght@400;600;700",
|
|
44160
|
+
"bold-signal": "Space+Grotesk:wght@500;700",
|
|
44161
|
+
notebook: "Caveat:wght@400;700"
|
|
44162
|
+
};
|
|
43331
44163
|
ResultViewer._EFFECT_MAP = {
|
|
43332
44164
|
"fade-up": "slide-up",
|
|
43333
44165
|
"fade-down": "slide-down",
|
|
@@ -43346,6 +44178,18 @@ ResultViewer._EFFECT_MAP = {
|
|
|
43346
44178
|
"scale-up": "scale-up",
|
|
43347
44179
|
"flip-in": "flip-in"
|
|
43348
44180
|
};
|
|
44181
|
+
/** Trigger stagger-in animation on slide content children after transition.
|
|
44182
|
+
* Uses the universal data-enter attribute from the motion system. */
|
|
44183
|
+
// Mood → animation config
|
|
44184
|
+
ResultViewer._MOOD_CONFIG = {
|
|
44185
|
+
dramatic: { enter: "mood-dramatic", delayMs: 100, durationMs: 600 },
|
|
44186
|
+
techy: { enter: "mood-techy", delayMs: 40, durationMs: 300 },
|
|
44187
|
+
playful: { enter: "mood-playful", delayMs: 80, durationMs: 400 },
|
|
44188
|
+
professional: { enter: "fade-in", delayMs: 30, durationMs: 200 },
|
|
44189
|
+
calm: { enter: "mood-calm", delayMs: 120, durationMs: 800 }
|
|
44190
|
+
};
|
|
44191
|
+
// Pretext-powered text effects: typing, scramble, wave, fly-in
|
|
44192
|
+
ResultViewer._PRETEXT_EFFECTS = /* @__PURE__ */ new Set(["typing", "scramble", "wave", "fly-in"]);
|
|
43349
44193
|
__decorateClass([
|
|
43350
44194
|
n4({ type: Object })
|
|
43351
44195
|
], ResultViewer.prototype, "result", 2);
|
|
@@ -92087,6 +92931,12 @@ function buildPhotonDocblockTagCatalog(runtimeVersion) {
|
|
|
92087
92931
|
apply: "@stateful true",
|
|
92088
92932
|
type: "keyword"
|
|
92089
92933
|
},
|
|
92934
|
+
{
|
|
92935
|
+
label: "@channel",
|
|
92936
|
+
detail: "Channel support \u2014 sends messages into client conversations (e.g. @channel claude)",
|
|
92937
|
+
apply: "@channel claude",
|
|
92938
|
+
type: "keyword"
|
|
92939
|
+
},
|
|
92090
92940
|
{
|
|
92091
92941
|
label: "@idleTimeout",
|
|
92092
92942
|
detail: "Idle timeout in ms",
|
|
@@ -96086,6 +96936,7 @@ var ElicitationModal = class extends i4 {
|
|
|
96086
96936
|
case "confirm":
|
|
96087
96937
|
return this._renderConfirm();
|
|
96088
96938
|
case "oauth":
|
|
96939
|
+
case "url":
|
|
96089
96940
|
return this._renderOAuth();
|
|
96090
96941
|
case "form":
|
|
96091
96942
|
return this._renderForm();
|
|
@@ -96270,17 +97121,19 @@ var ElicitationModal = class extends i4 {
|
|
|
96270
97121
|
};
|
|
96271
97122
|
const provider = this.data?.provider || "OAuth";
|
|
96272
97123
|
const icon2 = providerIcons[provider.toLowerCase()] || providerIcons.default;
|
|
96273
|
-
const scopes = (this.data?.scopes || []).join(", ")
|
|
97124
|
+
const scopes = (this.data?.scopes || []).join(", ");
|
|
97125
|
+
const customMessage = this.data?.message;
|
|
97126
|
+
const buttonLabel = customMessage ? "Open" : `Authorize ${provider}`;
|
|
96274
97127
|
return b2`
|
|
96275
97128
|
<div class="oauth-content">
|
|
96276
97129
|
<div class="oauth-icon">${icon2}</div>
|
|
96277
|
-
<p class="oauth-message">
|
|
96278
|
-
|
|
97130
|
+
<p class="oauth-message">
|
|
97131
|
+
${customMessage || `Authorization is required to access ${provider}.`}
|
|
97132
|
+
</p>
|
|
97133
|
+
${scopes ? b2`<p class="oauth-scopes">Requested permissions: ${scopes}</p>` : ""}
|
|
96279
97134
|
<div class="actions" style="justify-content: center;">
|
|
96280
97135
|
<button class="btn-secondary" @click=${() => this._cancel()}>Cancel</button>
|
|
96281
|
-
<button class="btn-primary" @click=${() => this._startOAuth()}>
|
|
96282
|
-
Authorize ${provider}
|
|
96283
|
-
</button>
|
|
97136
|
+
<button class="btn-primary" @click=${() => this._startOAuth()}>${buttonLabel}</button>
|
|
96284
97137
|
</div>
|
|
96285
97138
|
</div>
|
|
96286
97139
|
`;
|