@deskwork/studio 0.12.1 → 0.14.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/components/scrapbook-item.d.ts +9 -1
- package/dist/components/scrapbook-item.d.ts.map +1 -1
- package/dist/components/scrapbook-item.js +11 -2
- package/dist/components/scrapbook-item.js.map +1 -1
- package/dist/data/glossary.json +62 -0
- package/dist/lib/glossary-helper.d.ts +16 -0
- package/dist/lib/glossary-helper.d.ts.map +1 -0
- package/dist/lib/glossary-helper.js +26 -0
- package/dist/lib/glossary-helper.js.map +1 -0
- package/dist/pages/chrome.d.ts +24 -13
- package/dist/pages/chrome.d.ts.map +1 -1
- package/dist/pages/chrome.js +25 -24
- package/dist/pages/chrome.js.map +1 -1
- package/dist/pages/chrome.ts +38 -27
- package/dist/pages/content-detail.d.ts.map +1 -1
- package/dist/pages/content-detail.js +6 -5
- package/dist/pages/content-detail.js.map +1 -1
- package/dist/pages/content-detail.ts +6 -5
- package/dist/pages/content.d.ts.map +1 -1
- package/dist/pages/content.js +4 -6
- package/dist/pages/content.js.map +1 -1
- package/dist/pages/content.ts +4 -6
- package/dist/pages/dashboard/affordances.d.ts +6 -1
- package/dist/pages/dashboard/affordances.d.ts.map +1 -1
- package/dist/pages/dashboard/affordances.js +17 -2
- package/dist/pages/dashboard/affordances.js.map +1 -1
- package/dist/pages/dashboard/affordances.ts +18 -2
- package/dist/pages/dashboard/header.js +2 -2
- package/dist/pages/dashboard/header.ts +2 -2
- package/dist/pages/dashboard/section.d.ts +2 -2
- package/dist/pages/dashboard/section.d.ts.map +1 -1
- package/dist/pages/dashboard/section.js +5 -5
- package/dist/pages/dashboard/section.js.map +1 -1
- package/dist/pages/dashboard/section.ts +9 -5
- package/dist/pages/dashboard.d.ts.map +1 -1
- package/dist/pages/dashboard.js +3 -2
- package/dist/pages/dashboard.js.map +1 -1
- package/dist/pages/dashboard.ts +3 -2
- package/dist/pages/entry-review/data.d.ts +54 -0
- package/dist/pages/entry-review/data.d.ts.map +1 -0
- package/dist/pages/entry-review/data.js +116 -0
- package/dist/pages/entry-review/data.js.map +1 -0
- package/dist/pages/entry-review/decision-strip.d.ts +37 -0
- package/dist/pages/entry-review/decision-strip.d.ts.map +1 -0
- package/dist/pages/entry-review/decision-strip.js +137 -0
- package/dist/pages/entry-review/decision-strip.js.map +1 -0
- package/dist/pages/entry-review/edit-panes.d.ts +12 -0
- package/dist/pages/entry-review/edit-panes.d.ts.map +1 -0
- package/dist/pages/entry-review/edit-panes.js +28 -0
- package/dist/pages/entry-review/edit-panes.js.map +1 -0
- package/dist/pages/entry-review/edit-toolbar.d.ts +20 -0
- package/dist/pages/entry-review/edit-toolbar.d.ts.map +1 -0
- package/dist/pages/entry-review/edit-toolbar.js +46 -0
- package/dist/pages/entry-review/edit-toolbar.js.map +1 -0
- package/dist/pages/entry-review/index.d.ts +50 -0
- package/dist/pages/entry-review/index.d.ts.map +1 -0
- package/dist/pages/entry-review/index.js +219 -0
- package/dist/pages/entry-review/index.js.map +1 -0
- package/dist/pages/entry-review/marginalia.d.ts +28 -0
- package/dist/pages/entry-review/marginalia.d.ts.map +1 -0
- package/dist/pages/entry-review/marginalia.js +67 -0
- package/dist/pages/entry-review/marginalia.js.map +1 -0
- package/dist/pages/entry-review/not-found.d.ts +9 -0
- package/dist/pages/entry-review/not-found.d.ts.map +1 -0
- package/dist/pages/entry-review/not-found.js +34 -0
- package/dist/pages/entry-review/not-found.js.map +1 -0
- package/dist/pages/entry-review/outline-drawer.d.ts +12 -0
- package/dist/pages/entry-review/outline-drawer.d.ts.map +1 -0
- package/dist/pages/entry-review/outline-drawer.js +28 -0
- package/dist/pages/entry-review/outline-drawer.js.map +1 -0
- package/dist/pages/entry-review/shortcuts.d.ts +14 -0
- package/dist/pages/entry-review/shortcuts.d.ts.map +1 -0
- package/dist/pages/entry-review/shortcuts.js +36 -0
- package/dist/pages/entry-review/shortcuts.js.map +1 -0
- package/dist/pages/entry-review/version-strip.d.ts +33 -0
- package/dist/pages/entry-review/version-strip.d.ts.map +1 -0
- package/dist/pages/entry-review/version-strip.js +81 -0
- package/dist/pages/entry-review/version-strip.js.map +1 -0
- package/dist/pages/entry-review.d.ts +6 -21
- package/dist/pages/entry-review.d.ts.map +1 -1
- package/dist/pages/entry-review.js +6 -144
- package/dist/pages/entry-review.js.map +1 -1
- package/dist/pages/entry-review.ts +11 -181
- package/dist/pages/html.d.ts +2 -0
- package/dist/pages/html.d.ts.map +1 -1
- package/dist/pages/html.js +2 -0
- package/dist/pages/html.js.map +1 -1
- package/dist/pages/html.ts +4 -0
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/pages/index.js +6 -10
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/index.ts +6 -10
- package/dist/pages/layout.d.ts.map +1 -1
- package/dist/pages/layout.js +6 -0
- package/dist/pages/layout.js.map +1 -1
- package/dist/pages/layout.ts +7 -0
- package/dist/pages/review-scrapbook-drawer.d.ts +7 -0
- package/dist/pages/review-scrapbook-drawer.d.ts.map +1 -1
- package/dist/pages/review-scrapbook-drawer.js +45 -6
- package/dist/pages/review-scrapbook-drawer.js.map +1 -1
- package/dist/pages/review-scrapbook-drawer.ts +50 -6
- package/dist/pages/review.d.ts.map +1 -1
- package/dist/pages/review.js +168 -41
- package/dist/pages/review.js.map +1 -1
- package/dist/pages/review.ts +192 -41
- package/dist/pages/scrapbook.d.ts +7 -14
- package/dist/pages/scrapbook.d.ts.map +1 -1
- package/dist/pages/scrapbook.js +548 -192
- package/dist/pages/scrapbook.js.map +1 -1
- package/dist/pages/scrapbook.ts +588 -221
- package/dist/pages/shortform-review.d.ts +32 -0
- package/dist/pages/shortform-review.d.ts.map +1 -0
- package/dist/pages/shortform-review.js +270 -0
- package/dist/pages/shortform-review.js.map +1 -0
- package/dist/pages/shortform-review.ts +342 -0
- package/dist/pages/shortform.js +1 -1
- package/dist/pages/shortform.js.map +1 -1
- package/dist/pages/shortform.ts +1 -1
- package/dist/routes/api.d.ts +8 -0
- package/dist/routes/api.d.ts.map +1 -1
- package/dist/routes/api.js +115 -0
- package/dist/routes/api.js.map +1 -1
- package/dist/routes/entry-annotation-body.d.ts +26 -0
- package/dist/routes/entry-annotation-body.d.ts.map +1 -0
- package/dist/routes/entry-annotation-body.js +152 -0
- package/dist/routes/entry-annotation-body.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +56 -196
- package/dist/server.js.map +1 -1
- package/package.json +4 -4
|
@@ -103,6 +103,14 @@ export declare function renderReadOnlyScrapbookRow(address: ScrapbookAddress, it
|
|
|
103
103
|
* Render an empty-state row for a scrapbook drawer / panel that has
|
|
104
104
|
* no items. Shown faded so the operator still sees the section exists
|
|
105
105
|
* for this node.
|
|
106
|
+
*
|
|
107
|
+
* Issue 6 — the empty state now invites action: it points the operator
|
|
108
|
+
* at the scrapbook viewer for THIS node so they can drop research notes
|
|
109
|
+
* directly. When `address` is supplied (drawer + content-detail
|
|
110
|
+
* callsites both have one in scope), the link resolves to the per-entry
|
|
111
|
+
* viewer URL `/dev/scrapbook/<site>/<slug>`. With no address, we fall
|
|
112
|
+
* back to the scrapbook index `/dev/scrapbook/` — used only by callers
|
|
113
|
+
* that haven't been threaded site/slug yet.
|
|
106
114
|
*/
|
|
107
|
-
export declare function renderEmptyScrapbookRow(): RawHtml;
|
|
115
|
+
export declare function renderEmptyScrapbookRow(address?: ScrapbookAddress): RawHtml;
|
|
108
116
|
//# sourceMappingURL=scrapbook-item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrapbook-item.d.ts","sourceRoot":"","sources":["../../src/components/scrapbook-item.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAM9D,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,KACb,MAAM,GAAG,IAAI,CAAC;AAEnB,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;CACxC;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,MAAM,CAQR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAIpE;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CA8DT;AAED
|
|
1
|
+
{"version":3,"file":"scrapbook-item.d.ts","sourceRoot":"","sources":["../../src/components/scrapbook-item.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAM9D,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,KACb,MAAM,GAAG,IAAI,CAAC;AAEnB,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;CACxC;AASD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,MAAM,CAQR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAIpE;AA+DD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,aAAa,EACnB,IAAI,GAAE,4BAAiC,GACtC,OAAO,CA8DT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAMT"}
|
|
@@ -195,11 +195,20 @@ export function renderReadOnlyScrapbookRow(address, item, opts = {}) {
|
|
|
195
195
|
* Render an empty-state row for a scrapbook drawer / panel that has
|
|
196
196
|
* no items. Shown faded so the operator still sees the section exists
|
|
197
197
|
* for this node.
|
|
198
|
+
*
|
|
199
|
+
* Issue 6 — the empty state now invites action: it points the operator
|
|
200
|
+
* at the scrapbook viewer for THIS node so they can drop research notes
|
|
201
|
+
* directly. When `address` is supplied (drawer + content-detail
|
|
202
|
+
* callsites both have one in scope), the link resolves to the per-entry
|
|
203
|
+
* viewer URL `/dev/scrapbook/<site>/<slug>`. With no address, we fall
|
|
204
|
+
* back to the scrapbook index `/dev/scrapbook/` — used only by callers
|
|
205
|
+
* that haven't been threaded site/slug yet.
|
|
198
206
|
*/
|
|
199
|
-
export function renderEmptyScrapbookRow() {
|
|
207
|
+
export function renderEmptyScrapbookRow(address) {
|
|
208
|
+
const href = address ? scrapbookViewerUrl(address) : '/dev/scrapbook/';
|
|
200
209
|
return unsafe(html `
|
|
201
210
|
<div class="scrap scrap--empty" data-state="empty">
|
|
202
|
-
<span class="scrap__empty-text">
|
|
211
|
+
<span class="scrap__empty-text">No items yet. <a class="scrap__empty-link" href="${href}">Drop research notes →</a></span>
|
|
203
212
|
</div>`);
|
|
204
213
|
}
|
|
205
214
|
//# sourceMappingURL=scrapbook-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrapbook-item.js","sourceRoot":"","sources":["../../src/components/scrapbook-item.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scrapbook-item.js","sourceRoot":"","sources":["../../src/components/scrapbook-item.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"press-check": {
|
|
3
|
+
"term": "press-check",
|
|
4
|
+
"gloss": "The final pre-print review of a galley proof. In the studio, the longform-review surface where margin notes are added before approval.",
|
|
5
|
+
"seeAlso": ["galley", "proof"]
|
|
6
|
+
},
|
|
7
|
+
"galley": {
|
|
8
|
+
"term": "galley",
|
|
9
|
+
"gloss": "A column-proof of typeset copy. In the studio, the rendered article under review.",
|
|
10
|
+
"seeAlso": ["proof", "press-check"]
|
|
11
|
+
},
|
|
12
|
+
"compositor": {
|
|
13
|
+
"term": "compositor",
|
|
14
|
+
"gloss": "The typesetter at the press. In the studio, the operator-and-agent pair driving the editorial workflow.",
|
|
15
|
+
"seeAlso": []
|
|
16
|
+
},
|
|
17
|
+
"proof": {
|
|
18
|
+
"term": "proof",
|
|
19
|
+
"gloss": "A draft printed for review. In the studio, the document state passed between pipeline stages.",
|
|
20
|
+
"seeAlso": ["galley", "press-check"]
|
|
21
|
+
},
|
|
22
|
+
"marginalia": {
|
|
23
|
+
"term": "margin notes",
|
|
24
|
+
"gloss": "Notes written in the margins of a proof. In the studio, the comments left on the longform-review surface.",
|
|
25
|
+
"seeAlso": ["press-check"]
|
|
26
|
+
},
|
|
27
|
+
"stamp": {
|
|
28
|
+
"term": "stamp",
|
|
29
|
+
"gloss": "A status badge on a proof — approved, iterating, applied, etc.",
|
|
30
|
+
"seeAlso": []
|
|
31
|
+
},
|
|
32
|
+
"kicker": {
|
|
33
|
+
"term": "kicker",
|
|
34
|
+
"gloss": "A small label above the title of an article — typographic context for what's about to be read.",
|
|
35
|
+
"seeAlso": []
|
|
36
|
+
},
|
|
37
|
+
"flat-plan": {
|
|
38
|
+
"term": "flat plan",
|
|
39
|
+
"gloss": "An editorial layout-planning document showing what runs where. In the studio, the dashboard.",
|
|
40
|
+
"seeAlso": []
|
|
41
|
+
},
|
|
42
|
+
"desk-inset": {
|
|
43
|
+
"term": "desk inset",
|
|
44
|
+
"gloss": "A clipboard view of a single entry under inspection — the entry-review surface.",
|
|
45
|
+
"seeAlso": []
|
|
46
|
+
},
|
|
47
|
+
"dispatch": {
|
|
48
|
+
"term": "dispatch",
|
|
49
|
+
"gloss": "Moving a proof through pipeline stages. In the studio, the approve / iterate / publish actions.",
|
|
50
|
+
"seeAlso": ["proof"]
|
|
51
|
+
},
|
|
52
|
+
"stet": {
|
|
53
|
+
"term": "stet",
|
|
54
|
+
"gloss": "A proofreading mark meaning 'let it stand' — undoes a previous correction.",
|
|
55
|
+
"seeAlso": []
|
|
56
|
+
},
|
|
57
|
+
"scrapbook": {
|
|
58
|
+
"term": "scrapbook",
|
|
59
|
+
"gloss": "Research material kept alongside an article — clippings, screenshots, drafts. In the studio, the per-entry research store.",
|
|
60
|
+
"seeAlso": []
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import glossary from '../data/glossary.json';
|
|
2
|
+
import { type RawHtml } from '../pages/html.ts';
|
|
3
|
+
interface GlossaryEntry {
|
|
4
|
+
term: string;
|
|
5
|
+
gloss: string;
|
|
6
|
+
seeAlso?: string[];
|
|
7
|
+
}
|
|
8
|
+
type GlossaryKey = Extract<keyof typeof glossary, string>;
|
|
9
|
+
/**
|
|
10
|
+
* Emit markup for inline glossary terms.
|
|
11
|
+
*
|
|
12
|
+
* Returns a `RawHtml` marker so the html template tag inlines it without escaping.
|
|
13
|
+
*/
|
|
14
|
+
export declare function gloss(key: GlossaryKey): RawHtml;
|
|
15
|
+
export type { GlossaryKey, GlossaryEntry };
|
|
16
|
+
//# sourceMappingURL=glossary-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary-helper.d.ts","sourceRoot":"","sources":["../../src/lib/glossary-helper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,uBAAuB,CAAuB;AACnE,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAExD,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,KAAK,WAAW,GAAG,OAAO,CAAC,MAAM,OAAO,QAAQ,EAAE,MAAM,CAAC,CAAC;AAc1D;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAS/C;AAED,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import glossary from '../data/glossary.json' with { type: 'json' };
|
|
2
|
+
import { unsafe } from "../pages/html.js";
|
|
3
|
+
function isKey(s) {
|
|
4
|
+
return Object.prototype.hasOwnProperty.call(glossary, s);
|
|
5
|
+
}
|
|
6
|
+
function escapeAttr(s) {
|
|
7
|
+
return s
|
|
8
|
+
.replaceAll('&', '&')
|
|
9
|
+
.replaceAll('<', '<')
|
|
10
|
+
.replaceAll('>', '>')
|
|
11
|
+
.replaceAll('"', '"');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Emit markup for inline glossary terms.
|
|
15
|
+
*
|
|
16
|
+
* Returns a `RawHtml` marker so the html template tag inlines it without escaping.
|
|
17
|
+
*/
|
|
18
|
+
export function gloss(key) {
|
|
19
|
+
if (!isKey(key)) {
|
|
20
|
+
throw new Error(`unknown glossary term: ${String(key)}`);
|
|
21
|
+
}
|
|
22
|
+
const entry = glossary[key];
|
|
23
|
+
const k = escapeAttr(key);
|
|
24
|
+
return unsafe(`<span class="er-gloss" data-term="${k}" tabindex="0" role="button" aria-describedby="glossary-${k}">${escapeAttr(entry.term)}</span>`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=glossary-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glossary-helper.js","sourceRoot":"","sources":["../../src/lib/glossary-helper.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,EAAE,MAAM,EAAgB,MAAM,kBAAkB,CAAC;AAUxD,SAAS,KAAK,CAAC,CAAS;IACtB,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC;SACL,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;SACvB,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,GAAgB;IACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,KAAK,GAAkB,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,MAAM,CACX,qCAAqC,CAAC,2DAA2D,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CACvI,CAAC;AACJ,CAAC"}
|
package/dist/pages/chrome.d.ts
CHANGED
|
@@ -3,24 +3,35 @@
|
|
|
3
3
|
* surface (dashboard, longform review, shortform, content view, scrapbook,
|
|
4
4
|
* help, and the studio index).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Single component, every consumer. Markup intentionally flat (no
|
|
7
|
+
* inner wrapper) so the folio can flex its three children — wordmark,
|
|
8
|
+
* spine, nav — directly. The active surface is marked with a red-pencil
|
|
9
|
+
* underline drawn via `::after` in editorial-nav.css.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* Layout invariant: the folio is `position: fixed; top: 0` and other
|
|
12
|
+
* fixed chrome (the review surface's `.er-strip`) sits BELOW it at
|
|
13
|
+
* `top: var(--er-folio-h)`. Earlier versions used `position: sticky` +
|
|
14
|
+
* a lower z-index, which left the folio eclipsed by the longform
|
|
15
|
+
* review's strip — the user couldn't see the global nav at all on
|
|
16
|
+
* review pages.
|
|
16
17
|
*/
|
|
17
18
|
import { type RawHtml } from './html.ts';
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* The set of values callers can pass as the active key. The first five
|
|
21
|
+
* map to a nav-item that gets `class="active"`; `'longform'` is a
|
|
22
|
+
* special "no nav match" key for the longform review surface — it
|
|
23
|
+
* carries an active context (we ARE inside a review) but no nav-item
|
|
24
|
+
* represents that destination, so none gets highlighted. Issue 4 fixed
|
|
25
|
+
* the prior behaviour where the longform review highlighted the
|
|
26
|
+
* shortform nav-item by prefix-matching, which was misleading.
|
|
27
|
+
*/
|
|
28
|
+
export type ChromeActiveLink = 'index' | 'dashboard' | 'content' | 'shortform' | 'manual' | 'longform';
|
|
19
29
|
/**
|
|
20
30
|
* Render the folio strip. `spineLabel` is the page-specific subtitle
|
|
21
|
-
* shown
|
|
22
|
-
* "
|
|
23
|
-
*
|
|
31
|
+
* shown to the right of the wordmark ("press-check", "the shape of the
|
|
32
|
+
* work", "longform · <slug>", etc.). When omitted the spine renders
|
|
33
|
+
* empty (an `aria-hidden` placeholder so the flex layout stays balanced
|
|
34
|
+
* across pages).
|
|
24
35
|
*/
|
|
25
36
|
export declare function renderEditorialFolio(active: ChromeActiveLink, spineLabel?: string): RawHtml;
|
|
26
37
|
//# sourceMappingURL=chrome.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/pages/chrome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/pages/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,UAAU,CAAC;AAgBf;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAmBT"}
|
package/dist/pages/chrome.js
CHANGED
|
@@ -3,48 +3,49 @@
|
|
|
3
3
|
* surface (dashboard, longform review, shortform, content view, scrapbook,
|
|
4
4
|
* help, and the studio index).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Single component, every consumer. Markup intentionally flat (no
|
|
7
|
+
* inner wrapper) so the folio can flex its three children — wordmark,
|
|
8
|
+
* spine, nav — directly. The active surface is marked with a red-pencil
|
|
9
|
+
* underline drawn via `::after` in editorial-nav.css.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* Layout invariant: the folio is `position: fixed; top: 0` and other
|
|
12
|
+
* fixed chrome (the review surface's `.er-strip`) sits BELOW it at
|
|
13
|
+
* `top: var(--er-folio-h)`. Earlier versions used `position: sticky` +
|
|
14
|
+
* a lower z-index, which left the folio eclipsed by the longform
|
|
15
|
+
* review's strip — the user couldn't see the global nav at all on
|
|
16
|
+
* review pages.
|
|
16
17
|
*/
|
|
17
18
|
import { html, unsafe } from "./html.js";
|
|
18
19
|
const NAV_LINKS = [
|
|
19
20
|
{ key: 'index', href: '/dev/', label: 'Index' },
|
|
20
21
|
{ key: 'dashboard', href: '/dev/editorial-studio', label: 'Dashboard' },
|
|
21
22
|
{ key: 'content', href: '/dev/content', label: 'Content' },
|
|
22
|
-
{ key: '
|
|
23
|
+
{ key: 'shortform', href: '/dev/editorial-review-shortform', label: 'Shortform' },
|
|
23
24
|
{ key: 'manual', href: '/dev/editorial-help', label: 'Manual' },
|
|
24
25
|
];
|
|
25
26
|
/**
|
|
26
27
|
* Render the folio strip. `spineLabel` is the page-specific subtitle
|
|
27
|
-
* shown
|
|
28
|
-
* "
|
|
29
|
-
*
|
|
28
|
+
* shown to the right of the wordmark ("press-check", "the shape of the
|
|
29
|
+
* work", "longform · <slug>", etc.). When omitted the spine renders
|
|
30
|
+
* empty (an `aria-hidden` placeholder so the flex layout stays balanced
|
|
31
|
+
* across pages).
|
|
30
32
|
*/
|
|
31
33
|
export function renderEditorialFolio(active, spineLabel) {
|
|
32
34
|
const links = NAV_LINKS.map((link) => {
|
|
33
35
|
const cls = link.key === active ? 'active' : '';
|
|
34
|
-
|
|
36
|
+
const aria = link.key === active ? ' aria-current="page"' : '';
|
|
37
|
+
return html `<a class="${cls}" href="${link.href}"${unsafe(aria)}>${link.label}</a>`;
|
|
35
38
|
}).join('');
|
|
36
39
|
const spine = spineLabel
|
|
37
|
-
? html `<
|
|
38
|
-
: '<
|
|
40
|
+
? html `<span class="er-folio-spine">${spineLabel}</span>`
|
|
41
|
+
: '<span class="er-folio-spine" aria-hidden="true"></span>';
|
|
39
42
|
return unsafe(html `
|
|
40
|
-
<header class="er-folio">
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
${unsafe(spine)}
|
|
47
|
-
</div>
|
|
43
|
+
<header class="er-folio" role="banner">
|
|
44
|
+
<span class="er-folio-mark">deskwork</span>
|
|
45
|
+
${unsafe(spine)}
|
|
46
|
+
<nav class="er-folio-nav" aria-label="Studio sections">
|
|
47
|
+
${unsafe(links)}
|
|
48
|
+
</nav>
|
|
48
49
|
</header>`);
|
|
49
50
|
}
|
|
50
51
|
//# sourceMappingURL=chrome.js.map
|
package/dist/pages/chrome.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/pages/chrome.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/pages/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAgB,MAAM,WAAW,CAAC;AAyBvD,MAAM,SAAS,GAAyB;IACtC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAC/C,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,WAAW,EAAE;IACvE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1D,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,WAAW,EAAE;IACjF,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE;CAChE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwB,EACxB,UAAmB;IAEnB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAA,aAAa,GAAG,WAAW,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,MAAM,CAAC;IACtF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,IAAI,CAAA,gCAAgC,UAAU,SAAS;QACzD,CAAC,CAAC,yDAAyD,CAAC;IAE9D,OAAO,MAAM,CAAC,IAAI,CAAA;;;QAGZ,MAAM,CAAC,KAAK,CAAC;;UAEX,MAAM,CAAC,KAAK,CAAC;;cAET,CAAC,CAAC;AAChB,CAAC"}
|
package/dist/pages/chrome.ts
CHANGED
|
@@ -3,29 +3,40 @@
|
|
|
3
3
|
* surface (dashboard, longform review, shortform, content view, scrapbook,
|
|
4
4
|
* help, and the studio index).
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Single component, every consumer. Markup intentionally flat (no
|
|
7
|
+
* inner wrapper) so the folio can flex its three children — wordmark,
|
|
8
|
+
* spine, nav — directly. The active surface is marked with a red-pencil
|
|
9
|
+
* underline drawn via `::after` in editorial-nav.css.
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
11
|
+
* Layout invariant: the folio is `position: fixed; top: 0` and other
|
|
12
|
+
* fixed chrome (the review surface's `.er-strip`) sits BELOW it at
|
|
13
|
+
* `top: var(--er-folio-h)`. Earlier versions used `position: sticky` +
|
|
14
|
+
* a lower z-index, which left the folio eclipsed by the longform
|
|
15
|
+
* review's strip — the user couldn't see the global nav at all on
|
|
16
|
+
* review pages.
|
|
16
17
|
*/
|
|
17
18
|
|
|
18
19
|
import { html, unsafe, type RawHtml } from './html.ts';
|
|
19
20
|
|
|
21
|
+
/**
|
|
22
|
+
* The set of values callers can pass as the active key. The first five
|
|
23
|
+
* map to a nav-item that gets `class="active"`; `'longform'` is a
|
|
24
|
+
* special "no nav match" key for the longform review surface — it
|
|
25
|
+
* carries an active context (we ARE inside a review) but no nav-item
|
|
26
|
+
* represents that destination, so none gets highlighted. Issue 4 fixed
|
|
27
|
+
* the prior behaviour where the longform review highlighted the
|
|
28
|
+
* shortform nav-item by prefix-matching, which was misleading.
|
|
29
|
+
*/
|
|
20
30
|
export type ChromeActiveLink =
|
|
21
31
|
| 'index'
|
|
22
32
|
| 'dashboard'
|
|
23
33
|
| 'content'
|
|
24
|
-
| '
|
|
25
|
-
| 'manual'
|
|
34
|
+
| 'shortform'
|
|
35
|
+
| 'manual'
|
|
36
|
+
| 'longform';
|
|
26
37
|
|
|
27
38
|
interface FolioLink {
|
|
28
|
-
key: ChromeActiveLink
|
|
39
|
+
key: Exclude<ChromeActiveLink, 'longform'>;
|
|
29
40
|
href: string;
|
|
30
41
|
label: string;
|
|
31
42
|
}
|
|
@@ -34,15 +45,16 @@ const NAV_LINKS: readonly FolioLink[] = [
|
|
|
34
45
|
{ key: 'index', href: '/dev/', label: 'Index' },
|
|
35
46
|
{ key: 'dashboard', href: '/dev/editorial-studio', label: 'Dashboard' },
|
|
36
47
|
{ key: 'content', href: '/dev/content', label: 'Content' },
|
|
37
|
-
{ key: '
|
|
48
|
+
{ key: 'shortform', href: '/dev/editorial-review-shortform', label: 'Shortform' },
|
|
38
49
|
{ key: 'manual', href: '/dev/editorial-help', label: 'Manual' },
|
|
39
50
|
];
|
|
40
51
|
|
|
41
52
|
/**
|
|
42
53
|
* Render the folio strip. `spineLabel` is the page-specific subtitle
|
|
43
|
-
* shown
|
|
44
|
-
* "
|
|
45
|
-
*
|
|
54
|
+
* shown to the right of the wordmark ("press-check", "the shape of the
|
|
55
|
+
* work", "longform · <slug>", etc.). When omitted the spine renders
|
|
56
|
+
* empty (an `aria-hidden` placeholder so the flex layout stays balanced
|
|
57
|
+
* across pages).
|
|
46
58
|
*/
|
|
47
59
|
export function renderEditorialFolio(
|
|
48
60
|
active: ChromeActiveLink,
|
|
@@ -50,21 +62,20 @@ export function renderEditorialFolio(
|
|
|
50
62
|
): RawHtml {
|
|
51
63
|
const links = NAV_LINKS.map((link) => {
|
|
52
64
|
const cls = link.key === active ? 'active' : '';
|
|
53
|
-
|
|
65
|
+
const aria = link.key === active ? ' aria-current="page"' : '';
|
|
66
|
+
return html`<a class="${cls}" href="${link.href}"${unsafe(aria)}>${link.label}</a>`;
|
|
54
67
|
}).join('');
|
|
55
68
|
|
|
56
69
|
const spine = spineLabel
|
|
57
|
-
? html`<
|
|
58
|
-
: '<
|
|
70
|
+
? html`<span class="er-folio-spine">${spineLabel}</span>`
|
|
71
|
+
: '<span class="er-folio-spine" aria-hidden="true"></span>';
|
|
59
72
|
|
|
60
73
|
return unsafe(html`
|
|
61
|
-
<header class="er-folio">
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
${unsafe(spine)}
|
|
68
|
-
</div>
|
|
74
|
+
<header class="er-folio" role="banner">
|
|
75
|
+
<span class="er-folio-mark">deskwork</span>
|
|
76
|
+
${unsafe(spine)}
|
|
77
|
+
<nav class="er-folio-nav" aria-label="Studio sections">
|
|
78
|
+
${unsafe(links)}
|
|
79
|
+
</nav>
|
|
69
80
|
</header>`);
|
|
70
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-detail.d.ts","sourceRoot":"","sources":["../../src/pages/content-detail.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAUvD,wBAAgB,iBAAiB,IAAI,OAAO,CAS3C;AA4ND,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"content-detail.d.ts","sourceRoot":"","sources":["../../src/pages/content-detail.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAUvD,wBAAgB,iBAAiB,IAAI,OAAO,CAS3C;AA4ND,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,OAAO,CAAC,CAyElB"}
|
|
@@ -122,7 +122,7 @@ function makeInlineTextLoaderForNode(ctx, site, node, index) {
|
|
|
122
122
|
}
|
|
123
123
|
function renderScrapbookList(site, slug, summary, loader) {
|
|
124
124
|
if (!summary || (summary.items.length === 0 && summary.secretItems.length === 0)) {
|
|
125
|
-
return renderEmptyScrapbookRow();
|
|
125
|
+
return renderEmptyScrapbookRow({ site, path: slug });
|
|
126
126
|
}
|
|
127
127
|
const itemRows = summary.items.map((item) => renderReadOnlyScrapbookRow({ site, path: slug }, item, {
|
|
128
128
|
inlinePreviewLoader: loader,
|
|
@@ -200,13 +200,14 @@ function loadDetailRender(ctx, site, node, index) {
|
|
|
200
200
|
export async function renderNodeDetail(ctx, site, node, index) {
|
|
201
201
|
const detail = loadDetailRender(ctx, site, node, index);
|
|
202
202
|
const fmCount = Object.keys(detail.frontmatter).length;
|
|
203
|
-
// Phase
|
|
204
|
-
//
|
|
205
|
-
//
|
|
203
|
+
// Phase 34a: review URL is entry-keyed. Entries without an id stamped
|
|
204
|
+
// (legacy migration state) have no working review URL after the slug
|
|
205
|
+
// catch-all retirement; renderTreeRowActions guards on `entry !== null`,
|
|
206
|
+
// and modern entries carry ids via the doctor enforcement.
|
|
206
207
|
const reviewKey = node.entry !== null && node.entry.id !== undefined && node.entry.id !== ''
|
|
207
208
|
? node.entry.id
|
|
208
209
|
: (node.slug ?? node.path);
|
|
209
|
-
const reviewHref = `/dev/editorial-review/${encodeURI(reviewKey)}?site=${site}`;
|
|
210
|
+
const reviewHref = `/dev/editorial-review/entry/${encodeURI(reviewKey)}?site=${site}`;
|
|
210
211
|
// Scrapbook viewer addresses by fs path — every node has a
|
|
211
212
|
// deterministic on-disk scrapbook location at `<path>/scrapbook/`.
|
|
212
213
|
const scrapHref = scrapbookViewerUrl({ site, path: node.path });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-detail.js","sourceRoot":"","sources":["../../src/pages/content-detail.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"content-detail.js","sourceRoot":"","sources":["../../src/pages/content-detail.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,7 +164,7 @@ function renderScrapbookList(
|
|
|
164
164
|
loader: InlineTextLoader,
|
|
165
165
|
): RawHtml {
|
|
166
166
|
if (!summary || (summary.items.length === 0 && summary.secretItems.length === 0)) {
|
|
167
|
-
return renderEmptyScrapbookRow();
|
|
167
|
+
return renderEmptyScrapbookRow({ site, path: slug });
|
|
168
168
|
}
|
|
169
169
|
const itemRows = summary.items.map((item) =>
|
|
170
170
|
renderReadOnlyScrapbookRow({ site, path: slug }, item, {
|
|
@@ -270,14 +270,15 @@ export async function renderNodeDetail(
|
|
|
270
270
|
): Promise<RawHtml> {
|
|
271
271
|
const detail = loadDetailRender(ctx, site, node, index);
|
|
272
272
|
const fmCount = Object.keys(detail.frontmatter).length;
|
|
273
|
-
// Phase
|
|
274
|
-
//
|
|
275
|
-
//
|
|
273
|
+
// Phase 34a: review URL is entry-keyed. Entries without an id stamped
|
|
274
|
+
// (legacy migration state) have no working review URL after the slug
|
|
275
|
+
// catch-all retirement; renderTreeRowActions guards on `entry !== null`,
|
|
276
|
+
// and modern entries carry ids via the doctor enforcement.
|
|
276
277
|
const reviewKey =
|
|
277
278
|
node.entry !== null && node.entry.id !== undefined && node.entry.id !== ''
|
|
278
279
|
? node.entry.id
|
|
279
280
|
: (node.slug ?? node.path);
|
|
280
|
-
const reviewHref = `/dev/editorial-review/${encodeURI(reviewKey)}?site=${site}`;
|
|
281
|
+
const reviewHref = `/dev/editorial-review/entry/${encodeURI(reviewKey)}?site=${site}`;
|
|
281
282
|
// Scrapbook viewer addresses by fs path — every node has a
|
|
282
283
|
// deterministic on-disk scrapbook location at `<path>/scrapbook/`.
|
|
283
284
|
const scrapHref = scrapbookViewerUrl({ site, path: node.path });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAqJzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,WAAW,GACrB,MAAM,CA2CR;
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/pages/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;AAqJzD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,QAAQ,CAAC,EAAE,WAAW,GACrB,MAAM,CA2CR;AAgMD,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,QAAQ,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuE3C"}
|
package/dist/pages/content.js
CHANGED
|
@@ -253,15 +253,13 @@ function renderTreeRowMeta(node) {
|
|
|
253
253
|
return unsafe(meta.join(''));
|
|
254
254
|
}
|
|
255
255
|
function renderTreeRowActions(node, site) {
|
|
256
|
-
// Phase
|
|
257
|
-
//
|
|
258
|
-
//
|
|
259
|
-
// nodes) when no id is stamped — that's the legacy migration shape;
|
|
260
|
-
// server.ts 302-redirects it to the canonical URL.
|
|
256
|
+
// Phase 34a: review URL is entry-keyed. The slug catch-all is retired;
|
|
257
|
+
// entries without an id stamped (legacy migration state) have no
|
|
258
|
+
// working review URL. Modern entries carry ids via the doctor.
|
|
261
259
|
const reviewKey = node.entry !== null && node.entry.id !== undefined && node.entry.id !== ''
|
|
262
260
|
? node.entry.id
|
|
263
261
|
: (node.slug ?? node.path);
|
|
264
|
-
const reviewHref = `/dev/editorial-review/${encodeURI(reviewKey)}?site=${site}`;
|
|
262
|
+
const reviewHref = `/dev/editorial-review/entry/${encodeURI(reviewKey)}?site=${site}`;
|
|
265
263
|
// Scrapbook addressing uses fs path — every node, tracked or not,
|
|
266
264
|
// has a deterministic on-disk scrapbook location at `<path>/scrapbook/`.
|
|
267
265
|
const scrapHref = scrapbookViewerUrl({ site, path: node.path });
|