@cogenta/theme-kit 0.3.3 → 0.5.4
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/chrome.d.ts +7 -0
- package/dist/chrome.d.ts.map +1 -1
- package/dist/chrome.js +31 -30
- package/dist/chrome.js.map +1 -1
- package/dist/contract.d.ts +12 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js.map +1 -1
- package/dist/entry-header.d.ts +10 -1
- package/dist/entry-header.d.ts.map +1 -1
- package/dist/entry-header.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/page.d.ts +25 -0
- package/dist/page.d.ts.map +1 -1
- package/dist/page.js +16 -0
- package/dist/page.js.map +1 -1
- package/dist/rich-text.d.ts +6 -0
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +24 -2
- package/dist/rich-text.js.map +1 -1
- package/dist/widgets.d.ts +226 -0
- package/dist/widgets.d.ts.map +1 -0
- package/dist/widgets.js +241 -0
- package/dist/widgets.js.map +1 -0
- package/package.json +3 -3
package/dist/chrome.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { ImageSource } from './contract.js';
|
|
14
14
|
import { type HtmlElement } from './html.js';
|
|
15
|
+
import type { WidgetAreas } from './widgets.js';
|
|
15
16
|
/**
|
|
16
17
|
* The site's own visual identity, as the appearance screen already stores it
|
|
17
18
|
* — logo, dark-scheme logo, favicon (contract D `theme@1.3`).
|
|
@@ -115,6 +116,12 @@ export interface ChromeInput {
|
|
|
115
116
|
* "Contact"); a theme that ignores it loses nothing a pre-1.4 site had.
|
|
116
117
|
*/
|
|
117
118
|
readonly headerAction?: ChromeLink;
|
|
119
|
+
/**
|
|
120
|
+
* The footer's widget columns, `footer-1` to `footer-4`, resolved for this
|
|
121
|
+
* page (contract D `theme@1.6`, L30). A theme places them above its footer
|
|
122
|
+
* with `renderFooterWidgets`; absent means none to show.
|
|
123
|
+
*/
|
|
124
|
+
readonly widgets?: WidgetAreas;
|
|
118
125
|
}
|
|
119
126
|
export interface ChromeResult {
|
|
120
127
|
readonly header: string;
|
package/dist/chrome.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAmB,KAAK,WAAW,EAAK,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAmB,KAAK,WAAW,EAAK,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,WAAW;IAC1B,wHAAwH;IACxH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,6FAA6F;IAC7F,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACjC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IACrC,oHAAoH;IACpH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iIAAiI;IACjI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,6MAA6M;AAC7M,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAA;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,CAAA;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,GAAG,IAAI,CAef;AA6KD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EACzC,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7E,WAAW,GAAG,IAAI,CAkBpB"}
|
package/dist/chrome.js
CHANGED
|
@@ -39,7 +39,7 @@ export function renderBrandMark(brand, options = {}) {
|
|
|
39
39
|
return (`<picture><source srcset="${escapeAttribute(darkSet)}" media="(prefers-color-scheme: dark)">` +
|
|
40
40
|
`${img}</picture>`);
|
|
41
41
|
}
|
|
42
|
-
/** A circle, as two arcs —
|
|
42
|
+
/** A circle, as two arcs — the primitive-built glyphs below are made from this and `roundedRect`. */
|
|
43
43
|
function circlePath(cx, cy, r) {
|
|
44
44
|
return `M${cx - r} ${cy}A${r} ${r} 0 1 0 ${cx + r} ${cy}A${r} ${r} 0 1 0 ${cx - r} ${cy}Z`;
|
|
45
45
|
}
|
|
@@ -48,6 +48,24 @@ function roundedRect(x, y, w, h, r) {
|
|
|
48
48
|
`A${r} ${r} 0 0 1 ${x + w - r} ${y + h}H${x + r}A${r} ${r} 0 0 1 ${x} ${y + h - r}` +
|
|
49
49
|
`V${y + r}A${r} ${r} 0 0 1 ${x + r} ${y}Z`);
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* The official silhouettes of the platforms a primitive-built glyph could not
|
|
53
|
+
* make recognisable (a head-shaped blob for GitHub, a speech bubble for
|
|
54
|
+
* Mastodon), taken verbatim from Simple Icons 16.31.0, which is CC0-1.0.
|
|
55
|
+
* Each is one path drawn with the default `nonzero` rule, as Simple Icons
|
|
56
|
+
* requires; LinkedIn is not among them because Simple Icons removed it.
|
|
57
|
+
*/
|
|
58
|
+
const BRAND_GLYPHS = {
|
|
59
|
+
github: 'M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12',
|
|
60
|
+
mastodon: 'M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z',
|
|
61
|
+
bluesky: 'M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037-.856 3.061-3.978 3.842-6.755 3.37 4.854.826 6.089 3.562 3.422 6.299-5.065 5.196-7.28-1.304-7.847-2.97-.104-.305-.152-.448-.153-.327 0-.121-.05.022-.153.327-.568 1.666-2.782 8.166-7.847 2.97-2.667-2.737-1.432-5.473 3.422-6.3-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026',
|
|
62
|
+
tiktok: 'M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z',
|
|
63
|
+
threads: 'M18.263 11.097c-.03-3.486-1.92-5.586-5.111-5.586-2.13 0-3.922.963-4.863 2.499l2.062 1.438c.535-.843 1.272-1.543 2.628-1.543 1.528 0 2.318.85 2.544 2.431a15 15 0 0 0-2.236-.173c-4.125 0-6.068 1.867-6.068 4.336s1.943 3.99 4.804 3.99c3.139 0 5.013-2.115 5.781-4.735.798.361 1.348 1.204 1.348 2.47 0 3.387-3.907 5.232-7.22 5.232-4.885 0-8.077-3.207-8.077-8.424 0-6.392 4.223-10.487 9.9-10.487 3.808 0 5.69 1.671 6.97 3.914l2.108-1.475C21.44 2.078 18.331 0 13.663 0 6.227 0 1.168 5.277 1.168 12.934c0 7 4.953 11.066 10.856 11.066 4.878 0 9.809-2.846 9.809-7.716 0-2.545-1.46-4.231-3.569-5.187m-6.33 4.855c-1.077 0-2.026-.512-2.026-1.453 0-1.483 1.822-1.934 3.606-1.934.678 0 1.34.045 1.927.173-.422 1.927-1.671 3.215-3.508 3.214Z',
|
|
64
|
+
pinterest: 'M12.017 0C5.396 0 .029 5.367.029 11.987c0 5.079 3.158 9.417 7.618 11.162-.105-.949-.199-2.403.041-3.439.219-.937 1.406-5.957 1.406-5.957s-.359-.72-.359-1.781c0-1.663.967-2.911 2.168-2.911 1.024 0 1.518.769 1.518 1.688 0 1.029-.653 2.567-.992 3.992-.285 1.193.6 2.165 1.775 2.165 2.128 0 3.768-2.245 3.768-5.487 0-2.861-2.063-4.869-5.008-4.869-3.41 0-5.409 2.562-5.409 5.199 0 1.033.394 2.143.889 2.741.099.12.112.225.085.345-.09.375-.293 1.199-.334 1.363-.053.225-.172.271-.401.165-1.495-.69-2.433-2.878-2.433-4.646 0-3.776 2.748-7.252 7.92-7.252 4.158 0 7.392 2.967 7.392 6.923 0 4.135-2.607 7.462-6.233 7.462-1.214 0-2.354-.629-2.758-1.379l-.749 2.848c-.269 1.045-1.004 2.352-1.498 3.146 1.123.345 2.306.535 3.55.535 6.607 0 11.985-5.365 11.985-11.987C23.97 5.39 18.592.026 11.985.026L12.017 0z',
|
|
65
|
+
};
|
|
66
|
+
function isBrandGlyph(kind) {
|
|
67
|
+
return kind in BRAND_GLYPHS;
|
|
68
|
+
}
|
|
51
69
|
/**
|
|
52
70
|
* One or more **groups** of `d` strings per platform, each group rendered as
|
|
53
71
|
* its own `<path>` element with `fill-rule="evenodd"` — every icon's own
|
|
@@ -55,10 +73,10 @@ function roundedRect(x, y, w, h, r) {
|
|
|
55
73
|
* contour a ring rather than a solid blob: `evenodd` only cancels overlap
|
|
56
74
|
* *within a single path's own subpaths*, never across sibling `<path>`
|
|
57
75
|
* elements. Two contours meant to punch a hole in each other (instagram's
|
|
58
|
-
* frame and lens, YouTube's frame around its play triangle,
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
76
|
+
* frame and lens, YouTube's frame around its play triangle, the generic
|
|
77
|
+
* fallback's two chain-link rings) must be joined into **one** group's `d`;
|
|
78
|
+
* a shape meant to sit solid *beside* another (linkedin's dot, stem and bowl;
|
|
79
|
+
* instagram's own flash dot) stays
|
|
62
80
|
* its own group so it is never accidentally subtracted from a neighbour it
|
|
63
81
|
* happens to overlap.
|
|
64
82
|
*/
|
|
@@ -92,28 +110,6 @@ const SOCIAL_ICON_PATHS = {
|
|
|
92
110
|
// instagram's flash dot above.
|
|
93
111
|
['M10 9l6 3-6 3z'],
|
|
94
112
|
],
|
|
95
|
-
github: [
|
|
96
|
-
[circlePath(12, 11, 7)],
|
|
97
|
-
[
|
|
98
|
-
'M8.3 20v-2.1c-2-.5-3-1.4-3-3.3c0-1 .3-1.7 1-2.4c-.1-.5-.4-1.7.1-2.8c0 0 .9-.3 2.8 1a10 10 0 0 1 5.1 0c1.9-1.3 2.8-1 2.8-1c.5 1.1.2 2.3.1 2.8c.7.7 1 1.4 1 2.4c0 1.9-1 2.8-3 3.3V20',
|
|
99
|
-
],
|
|
100
|
-
],
|
|
101
|
-
mastodon: [['M4 8a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v4a4 4 0 0 1-4 4H10l-3 3v-3H8a4 4 0 0 1-4-4z']],
|
|
102
|
-
bluesky: [
|
|
103
|
-
[
|
|
104
|
-
'M12 9c-1.6-3-4.7-5-7-4c-1 3 .5 6.5 3.4 8c-2.9 1.5-4.4 5-3.4 8c2.3 1 5.4-1 7-4c1.6 3 4.7 5 7 4c1-3-.5-6.5-3.4-8c2.9-1.5 4.4-5 3.4-8c-2.3-1-5.4 1-7 4z',
|
|
105
|
-
],
|
|
106
|
-
],
|
|
107
|
-
tiktok: [
|
|
108
|
-
[circlePath(8, 17, 3)],
|
|
109
|
-
[roundedRect(9.4, 4, 2.4, 13, 1)],
|
|
110
|
-
['M11.8 4c.3 3.2 2.7 5.4 5.7 5.6v3c-2.1-.1-4-.8-5.7-2.1'],
|
|
111
|
-
],
|
|
112
|
-
// The loop: two overlapping, off-centre circles resolved into a crescent
|
|
113
|
-
// ring by `evenodd` — the whole reason this icon needs the technique at
|
|
114
|
-
// all, per this constant's own doc comment.
|
|
115
|
-
threads: [[circlePath(12, 12, 8), circlePath(13, 12, 4)]],
|
|
116
|
-
pinterest: [[roundedRect(10.4, 9, 2.4, 11, 1.2)], [circlePath(12.6, 10, 2.6)]],
|
|
117
113
|
// The generic fallback — two overlapping rounded-rectangle rings, the
|
|
118
114
|
// conventional "chain link" silhouette, each ring its own group (outer
|
|
119
115
|
// minus inner, resolved by `evenodd` within that one path) rather than
|
|
@@ -164,14 +160,19 @@ function socialIconKindFor(href) {
|
|
|
164
160
|
return 'link';
|
|
165
161
|
}
|
|
166
162
|
function socialIcon(kind, className) {
|
|
167
|
-
|
|
163
|
+
const attrs = {
|
|
168
164
|
class: className,
|
|
169
165
|
viewBox: '0 0 24 24',
|
|
170
166
|
fill: 'currentColor',
|
|
171
|
-
'fill-rule': 'evenodd',
|
|
172
167
|
'aria-hidden': 'true',
|
|
173
168
|
focusable: 'false',
|
|
174
|
-
}
|
|
169
|
+
};
|
|
170
|
+
if (isBrandGlyph(kind)) {
|
|
171
|
+
// Simple Icons fill the whole 24-unit box; the primitive glyphs keep a
|
|
172
|
+
// 3-unit margin, so the brand paths are inset to the same optical size.
|
|
173
|
+
return h('svg', attrs, h('path', { d: BRAND_GLYPHS[kind], transform: 'translate(3 3) scale(0.75)' }));
|
|
174
|
+
}
|
|
175
|
+
return h('svg', { ...attrs, 'fill-rule': 'evenodd' }, SOCIAL_ICON_PATHS[kind].map((group) => h('path', { d: group.join(' ') })));
|
|
175
176
|
}
|
|
176
177
|
/**
|
|
177
178
|
* `general.socialLinks` (contract D `theme@1.4`), as a `<ul>` of icon links —
|
package/dist/chrome.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,eAAe,EAAoB,CAAC,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../src/chrome.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.d.ts
CHANGED
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
*/
|
|
30
30
|
import type { ImageOptions, ImageSource } from '@cogenta/render';
|
|
31
31
|
export type { ImageOptions, ImageSource, SkinTokens, ThemeManifest, ThemeRuntime, } from '@cogenta/render';
|
|
32
|
+
import type { HtmlElement } from './html.js';
|
|
32
33
|
export { defineTheme } from '@cogenta/render';
|
|
33
34
|
/**
|
|
34
35
|
* Contract B stores a media field as the media library's identifier, never as
|
|
@@ -93,5 +94,16 @@ export interface RenderContext {
|
|
|
93
94
|
link(target: LinkTargetInput): string;
|
|
94
95
|
/** Read-only content access. The only door to data a theme has. */
|
|
95
96
|
readonly content: ContentClient;
|
|
97
|
+
/**
|
|
98
|
+
* Markup the host has already produced for particular blocks, keyed by the
|
|
99
|
+
* block's contract B `_key` (contract D `theme@1.7`, additive).
|
|
100
|
+
*
|
|
101
|
+
* This is how a block a **plugin** provides reaches the page: the host runs
|
|
102
|
+
* the plugin, in a process of its own, and hands the resulting tree over.
|
|
103
|
+
* A theme that ignores this field is not broken — it renders the block's
|
|
104
|
+
* declared fallback instead, which is the degradation contract B has
|
|
105
|
+
* promised since L3. `providedBlockNode` is the one line that honours it.
|
|
106
|
+
*/
|
|
107
|
+
readonly blockNodes?: Readonly<Record<string, HtmlElement>>;
|
|
96
108
|
}
|
|
97
109
|
//# sourceMappingURL=contract.d.ts.map
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEhE,YAAY,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAcH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/entry-header.d.ts
CHANGED
|
@@ -37,9 +37,18 @@ export interface PageEntryMeta {
|
|
|
37
37
|
readonly author?: PageEntryAuthor;
|
|
38
38
|
/** Every taxonomy field the collection declares, classified terms only. */
|
|
39
39
|
readonly terms?: readonly PageEntryTerm[];
|
|
40
|
-
/** Computed by the host from the entry's `richText` field (~200 words/minute), rounded up. */
|
|
40
|
+
/** Computed by the host from the entry's `richText` field, or its prose blocks (~200 words/minute), rounded up. */
|
|
41
41
|
readonly readingMinutes?: number;
|
|
42
|
+
/**
|
|
43
|
+
* `theme@1.5`: the entry's own plain fields (text, slug, number, boolean,
|
|
44
|
+
* date, datetime, select, color), keyed by field name, so a product page can
|
|
45
|
+
* show its price and stock or a dish its price. Rich text, media, relations,
|
|
46
|
+
* blocks and JSON are never here: they reach a theme already resolved, or
|
|
47
|
+
* through the page's blocks. Absent before `1.5`.
|
|
48
|
+
*/
|
|
49
|
+
readonly fields?: Readonly<Record<string, PageEntryFieldValue>>;
|
|
42
50
|
}
|
|
51
|
+
export type PageEntryFieldValue = string | number | boolean | readonly string[];
|
|
43
52
|
/**
|
|
44
53
|
* The shared way a theme turns `PageContent.entry` into markup — an eyebrow
|
|
45
54
|
* of taxonomy terms, the title, an optional excerpt, a meta line (date,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-header.d.ts","sourceRoot":"","sources":["../src/entry-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAK,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,WAAW,CAAA;AAE/D;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACzC,
|
|
1
|
+
{"version":3,"file":"entry-header.d.ts","sourceRoot":"","sources":["../src/entry-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAK,MAAM,WAAW,CAAA;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,WAAW,CAAA;AAE/D;;;;;;;;GAQG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,gDAAgD;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACzC,mHAAmH;IACnH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAA;CAChE;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,CAAA;AAgD/E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,WAAW,GAAG,IAAI,CAyBpB"}
|
package/dist/entry-header.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-header.js","sourceRoot":"","sources":["../src/entry-header.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,CAAC,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAoB,iBAAiB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"entry-header.js","sourceRoot":"","sources":["../src/entry-header.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA"}
|
package/dist/page.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type BlockRegistry, type BlockVariant, type CollectionListBlock, type U
|
|
|
2
2
|
import type { ContentEntry, QueryRequest } from './contract.js';
|
|
3
3
|
import type { PageEntryMeta } from './entry-header.js';
|
|
4
4
|
import type { HtmlElement } from './html.js';
|
|
5
|
+
import type { WidgetAreas } from './widgets.js';
|
|
5
6
|
export interface PageContent {
|
|
6
7
|
/** The entry's title. Rendered as the `h1` unless a hero already carries one. */
|
|
7
8
|
readonly title: string;
|
|
@@ -15,6 +16,15 @@ export interface PageContent {
|
|
|
15
16
|
* markup.
|
|
16
17
|
*/
|
|
17
18
|
readonly entry?: PageEntryMeta;
|
|
19
|
+
/**
|
|
20
|
+
* The widget areas resolved for this page that the theme declares itself
|
|
21
|
+
* (contract D `theme@1.6`, L30), by area id. The standard `sidebar`,
|
|
22
|
+
* `content-before` and `content-after` areas never arrive here: the host
|
|
23
|
+
* places them in one markup every theme styles (`cg-sidebar-layout`).
|
|
24
|
+
* Absent from a host that predates 1.6, or a page with no such widget.
|
|
25
|
+
* Render with `renderWidgetArea`.
|
|
26
|
+
*/
|
|
27
|
+
readonly widgets?: WidgetAreas;
|
|
18
28
|
}
|
|
19
29
|
/**
|
|
20
30
|
* Entries already fetched for the `collectionList` blocks on the page, by the
|
|
@@ -94,6 +104,21 @@ export declare function withBlockVariant(element: HtmlElement | null, variant: B
|
|
|
94
104
|
* `null` for that one block, never a thrown error that would take the whole
|
|
95
105
|
* page down with it.
|
|
96
106
|
*/
|
|
107
|
+
/**
|
|
108
|
+
* The markup the host already produced for this block, if it produced any.
|
|
109
|
+
*
|
|
110
|
+
* One line at the top of a theme's `renderBlock` is the whole of what
|
|
111
|
+
* contract D `theme@1.7` asks of a theme: a block a plugin provides arrives
|
|
112
|
+
* here, already rendered, already checked by the host against a tag and
|
|
113
|
+
* attribute allowlist. A theme that never calls this renders the block's
|
|
114
|
+
* declared fallback instead — degraded, never blank, exactly as an
|
|
115
|
+
* unimplemented theme block has behaved since L3.
|
|
116
|
+
*/
|
|
117
|
+
export declare function providedBlockNode(block: {
|
|
118
|
+
readonly _key?: unknown;
|
|
119
|
+
}, ctx: {
|
|
120
|
+
readonly blockNodes?: Readonly<Record<string, HtmlElement>>;
|
|
121
|
+
}): HtmlElement | null;
|
|
97
122
|
export declare function resolveBlockForRender(block: VocabularyBlock | UnknownPlacedBlock, knownNames: readonly string[], registry?: BlockRegistry): UnknownPlacedBlock | null;
|
|
98
123
|
/**
|
|
99
124
|
* The `QueryRequest` a `collectionList` block's own fields describe — pure
|
package/dist/page.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAErB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;IAC3C;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAA;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAA;CAC/B;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC,CAAC,CAAA;AAE9E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAE7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAGzF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,OAAO,EAAE,YAAY,GAAG,SAAS,GAChC,WAAW,GAAG,IAAI,CASpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAClC,GAAG,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAA;CAAE,GACnE,WAAW,GAAG,IAAI,CAIpB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,GAAG,kBAAkB,EAC3C,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,QAAQ,GAAE,aAAkC,GAC3C,kBAAkB,GAAG,IAAI,CAwB3B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAQjF"}
|
package/dist/page.js
CHANGED
|
@@ -91,6 +91,22 @@ export function withBlockVariant(element, variant) {
|
|
|
91
91
|
* `null` for that one block, never a thrown error that would take the whole
|
|
92
92
|
* page down with it.
|
|
93
93
|
*/
|
|
94
|
+
/**
|
|
95
|
+
* The markup the host already produced for this block, if it produced any.
|
|
96
|
+
*
|
|
97
|
+
* One line at the top of a theme's `renderBlock` is the whole of what
|
|
98
|
+
* contract D `theme@1.7` asks of a theme: a block a plugin provides arrives
|
|
99
|
+
* here, already rendered, already checked by the host against a tag and
|
|
100
|
+
* attribute allowlist. A theme that never calls this renders the block's
|
|
101
|
+
* declared fallback instead — degraded, never blank, exactly as an
|
|
102
|
+
* unimplemented theme block has behaved since L3.
|
|
103
|
+
*/
|
|
104
|
+
export function providedBlockNode(block, ctx) {
|
|
105
|
+
const key = block._key;
|
|
106
|
+
if (typeof key !== 'string')
|
|
107
|
+
return null;
|
|
108
|
+
return ctx.blockNodes?.[key] ?? null;
|
|
109
|
+
}
|
|
94
110
|
export function resolveBlockForRender(block, knownNames, registry = vocabularyRegistry) {
|
|
95
111
|
if (knownNames.includes(block._type)) {
|
|
96
112
|
// A member of the closed `VocabularyBlock` union does not structurally
|
package/dist/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
|
package/dist/rich-text.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import type { RichTextDocument } from '@cogenta/blocks';
|
|
2
2
|
import type { RenderContext } from './contract.js';
|
|
3
3
|
import { type HtmlNode } from './html.js';
|
|
4
|
+
/**
|
|
5
|
+
* The anchor a heading of running text gets (L30): its text, lower-cased,
|
|
6
|
+
* accents dropped, every other run of characters a dash. Shared with the host
|
|
7
|
+
* so a table of contents widget points at exactly the ids rendered here.
|
|
8
|
+
*/
|
|
9
|
+
export declare function headingAnchor(text: string): string;
|
|
4
10
|
export declare function renderRichText(ctx: RenderContext, document: RichTextDocument): readonly HtmlNode[];
|
|
5
11
|
//# sourceMappingURL=rich-text.d.ts.map
|
package/dist/rich-text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,gBAAgB,EAAsB,MAAM,iBAAiB,CAAA;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"rich-text.d.ts","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,gBAAgB,EAAsB,MAAM,iBAAiB,CAAA;AAC3F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAW,MAAM,WAAW,CAAA;AAsHlD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQlD;AAqBD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,gBAAgB,GACzB,SAAS,QAAQ,EAAE,CA2CrB"}
|
package/dist/rich-text.js
CHANGED
|
@@ -83,16 +83,38 @@ function buildList(ctx, nodes, start, level) {
|
|
|
83
83
|
}
|
|
84
84
|
return { node: h(kind === 'number' ? 'ol' : 'ul', {}, items), next: index };
|
|
85
85
|
}
|
|
86
|
-
|
|
86
|
+
/**
|
|
87
|
+
* The anchor a heading of running text gets (L30): its text, lower-cased,
|
|
88
|
+
* accents dropped, every other run of characters a dash. Shared with the host
|
|
89
|
+
* so a table of contents widget points at exactly the ids rendered here.
|
|
90
|
+
*/
|
|
91
|
+
export function headingAnchor(text) {
|
|
92
|
+
const slug = text
|
|
93
|
+
.normalize('NFKD')
|
|
94
|
+
.replace(/[\u0300-\u036f]/gu, '')
|
|
95
|
+
.toLowerCase()
|
|
96
|
+
.replace(/[^a-z0-9]+/gu, '-')
|
|
97
|
+
.replace(/^-+|-+$/gu, '');
|
|
98
|
+
return slug === '' ? 'section' : slug.slice(0, 80);
|
|
99
|
+
}
|
|
100
|
+
const ANCHORED_HEADINGS = new Set(['h2', 'h3', 'h4']);
|
|
101
|
+
function renderTextBlock(ctx, block, anchors) {
|
|
87
102
|
const children = renderChildren(ctx, block);
|
|
88
103
|
if (block.style === 'blockquote')
|
|
89
104
|
return h('blockquote', {}, h('p', {}, ...children));
|
|
90
105
|
if (block.style === 'normal')
|
|
91
106
|
return h('p', {}, ...children);
|
|
107
|
+
if (ANCHORED_HEADINGS.has(block.style)) {
|
|
108
|
+
const base = headingAnchor(block.children.map((child) => child.text).join(''));
|
|
109
|
+
const seen = anchors.get(base) ?? 0;
|
|
110
|
+
anchors.set(base, seen + 1);
|
|
111
|
+
return h(block.style, { id: seen === 0 ? base : `${base}-${seen + 1}` }, ...children);
|
|
112
|
+
}
|
|
92
113
|
return h(block.style, {}, ...children);
|
|
93
114
|
}
|
|
94
115
|
export function renderRichText(ctx, document) {
|
|
95
116
|
const out = [];
|
|
117
|
+
const anchors = new Map();
|
|
96
118
|
let index = 0;
|
|
97
119
|
while (index < document.length) {
|
|
98
120
|
const node = document[index];
|
|
@@ -117,7 +139,7 @@ export function renderRichText(ctx, document) {
|
|
|
117
139
|
index += 1;
|
|
118
140
|
continue;
|
|
119
141
|
}
|
|
120
|
-
out.push(renderTextBlock(ctx, node));
|
|
142
|
+
out.push(renderTextBlock(ctx, node, anchors));
|
|
121
143
|
index += 1;
|
|
122
144
|
}
|
|
123
145
|
return out;
|
package/dist/rich-text.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAclC,MAAM,WAAW,GAAgC,IAAI,GAAG,CAAC;IACvD,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,uEAAuE;IACvE,+CAA+C;IAC/C,CAAC,eAAe,EAAE,GAAG,CAAC;CACvB,CAAC,CAAA;AAEF,SAAS,SAAS,CAChB,GAAkB,EAClB,IAAY,EACZ,QAAmC,EACnC,KAAe;IAEf,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IAE/C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACxE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,4EAA4E;QAC5E,6CAA6C;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;IACnF,0EAA0E;IAC1E,mEAAmE;IACnE,2EAA2E;IAC3E,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,GAAkB,EAAE,IAAU,EAAE,QAAmC;IACrF,IAAI,IAAI,GAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,sEAAsE;IACtE,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB,EAAE,KAAgB;IAC1D,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,IAA8B;IAChD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAA;AACpF,CAAC;AAED,SAAS,OAAO,CAAC,IAAe;IAC9B,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;AACxB,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAChB,GAAkB,EAClB,KAAuB,EACvB,KAAa,EACb,KAAa;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAA;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC3B,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAK;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,MAAK;QAEtD,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YACtD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;YACxB,KAAK,CAAC,IAAI,CACR,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAC3C,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CACvD,CAAA;YACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;YACnB,SAAQ;QACV,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACrD,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AAC7E,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"rich-text.js","sourceRoot":"","sources":["../src/rich-text.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAclC,MAAM,WAAW,GAAgC,IAAI,GAAG,CAAC;IACvD,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACpB,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,uEAAuE;IACvE,+CAA+C;IAC/C,CAAC,eAAe,EAAE,GAAG,CAAC;CACvB,CAAC,CAAA;AAEF,SAAS,SAAS,CAChB,GAAkB,EAClB,IAAY,EACZ,QAAmC,EACnC,KAAe;IAEf,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IAE/C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IACxE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,4EAA4E;QAC5E,6CAA6C;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;IAChF,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;IACnF,0EAA0E;IAC1E,mEAAmE;IACnE,2EAA2E;IAC3E,0EAA0E;IAC1E,yCAAyC;IACzC,IAAI,QAAQ,KAAK,GAAG;QAAE,OAAO,KAAK,CAAA;IAClC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,GAAkB,EAAE,IAAU,EAAE,QAAmC;IACrF,IAAI,IAAI,GAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,sEAAsE;IACtE,iEAAiE;IACjE,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB,EAAE,KAAgB;IAC1D,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,UAAU,CAAC,IAA8B;IAChD,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAA;AACpF,CAAC;AAED,SAAS,OAAO,CAAC,IAAe;IAC9B,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;AACxB,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAChB,GAAkB,EAClB,KAAuB,EACvB,KAAa,EACb,KAAa;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAA;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC3B,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,KAAK,CAAA;IAEjB,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAK;QAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,MAAK;QAEtD,IAAI,SAAS,GAAG,KAAK,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YACtD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;YACxB,KAAK,CAAC,IAAI,CACR,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAC3C,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC;gBAC1B,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CACvD,CAAA;YACD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;YACnB,SAAQ;QACV,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;QACrD,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AAC7E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI;SACd,SAAS,CAAC,MAAM,CAAC;SACjB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IAC3B,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAE1E,SAAS,eAAe,CACtB,GAAkB,EAClB,KAAgB,EAChB,OAA4B;IAE5B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAA;IACrF,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAA;IAC5D,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAA;QAC3B,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAA;IACvF,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAkB,EAClB,QAA0B;IAE1B,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,IAAI,KAAK,SAAS;YAAE,MAAK;QAE7B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACnB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;YACjB,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CACN,CAAC,CACC,QAAQ,EACR,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAC7B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,EACjE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CACtE,CACF,CAAA;YACD,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACxB,kEAAkE;YAClE,qEAAqE;YACrE,kEAAkE;YAClE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAA;YAC9C,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC7C,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import type { RichTextDocument } from '@cogenta/blocks';
|
|
2
|
+
import type { ChromeLink } from './chrome.js';
|
|
3
|
+
import type { ImageSource, RenderContext } from './contract.js';
|
|
4
|
+
import { type HtmlElement } from './html.js';
|
|
5
|
+
/**
|
|
6
|
+
* Widget areas (contract D `theme@1.6`, L30).
|
|
7
|
+
*
|
|
8
|
+
* The host resolves every widget of an area for the page being rendered —
|
|
9
|
+
* visibility decided, entries and terms fetched, dates formatted, links
|
|
10
|
+
* resolved, strings in the page's language — and hands the theme finished
|
|
11
|
+
* view models. A theme never queries anything to draw a widget, the same rule
|
|
12
|
+
* `FetchedEntries` holds for a `collectionList`.
|
|
13
|
+
*
|
|
14
|
+
* `renderWidgetArea` is the one shared rendering, so every theme draws the
|
|
15
|
+
* same widget with the same semantic markup and only its stylesheet differs:
|
|
16
|
+
* that is what lets a widget placed from the admin show up correctly whatever
|
|
17
|
+
* theme is active. A theme is free to render an area itself instead.
|
|
18
|
+
*
|
|
19
|
+
* Class names: `cg-widget-area`, `cg-widget`, `cg-widget--<type>`,
|
|
20
|
+
* `cg-widget__title`, `cg-widget__body`, and per type the elements listed on
|
|
21
|
+
* each renderer below.
|
|
22
|
+
*/
|
|
23
|
+
export interface WidgetDevices {
|
|
24
|
+
readonly desktop: boolean;
|
|
25
|
+
readonly tablet: boolean;
|
|
26
|
+
readonly mobile: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface WidgetLink {
|
|
29
|
+
readonly label: string;
|
|
30
|
+
readonly href: string;
|
|
31
|
+
readonly newTab: boolean;
|
|
32
|
+
/** The page being rendered is this link's target. */
|
|
33
|
+
readonly current?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface WidgetEntryItem {
|
|
36
|
+
readonly title: string;
|
|
37
|
+
readonly href: string | null;
|
|
38
|
+
/** Already formatted in the page's language. */
|
|
39
|
+
readonly date: string | null;
|
|
40
|
+
/** ISO 8601, for `<time datetime>`. */
|
|
41
|
+
readonly datetime: string | null;
|
|
42
|
+
readonly excerpt: string | null;
|
|
43
|
+
readonly image: ImageSource | null;
|
|
44
|
+
}
|
|
45
|
+
export interface WidgetTermItem {
|
|
46
|
+
readonly label: string;
|
|
47
|
+
readonly href: string | null;
|
|
48
|
+
readonly count: number | null;
|
|
49
|
+
/** 0 for a root term. */
|
|
50
|
+
readonly depth: number;
|
|
51
|
+
readonly current: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface WidgetFormField {
|
|
54
|
+
readonly name: string;
|
|
55
|
+
readonly label: string;
|
|
56
|
+
readonly kind: 'text' | 'email' | 'tel' | 'url' | 'number' | 'date' | 'textarea' | 'select' | 'checkbox';
|
|
57
|
+
readonly required: boolean;
|
|
58
|
+
readonly choices: readonly string[];
|
|
59
|
+
readonly help: string | null;
|
|
60
|
+
}
|
|
61
|
+
interface WidgetBase {
|
|
62
|
+
readonly id: string;
|
|
63
|
+
readonly title: string | null;
|
|
64
|
+
readonly devices: WidgetDevices;
|
|
65
|
+
}
|
|
66
|
+
export type ResolvedWidget = WidgetBase &
|
|
67
|
+
/**
|
|
68
|
+
* A widget type one of the site's plugins provides (L32 step 4, contract
|
|
69
|
+
* D `theme@1.7`). The host ran the plugin in a process of its own and
|
|
70
|
+
* checked the markup it returned; a theme places it exactly like any
|
|
71
|
+
* other widget and needs to know nothing more.
|
|
72
|
+
*/
|
|
73
|
+
({
|
|
74
|
+
readonly type: 'plugin';
|
|
75
|
+
readonly widgetType: string;
|
|
76
|
+
readonly node: HtmlElement;
|
|
77
|
+
} | {
|
|
78
|
+
readonly type: 'text';
|
|
79
|
+
readonly body: RichTextDocument;
|
|
80
|
+
} | {
|
|
81
|
+
readonly type: 'image';
|
|
82
|
+
readonly image: ImageSource;
|
|
83
|
+
readonly caption: string;
|
|
84
|
+
readonly href: string | null;
|
|
85
|
+
} | {
|
|
86
|
+
readonly type: 'gallery';
|
|
87
|
+
readonly images: readonly ImageSource[];
|
|
88
|
+
readonly columns: number;
|
|
89
|
+
} | {
|
|
90
|
+
readonly type: 'embed';
|
|
91
|
+
/** An `https:` URL the host allowed to be framed (a known video or map provider); `null` shows the link only. */
|
|
92
|
+
readonly frameSrc: string | null;
|
|
93
|
+
readonly url: string;
|
|
94
|
+
readonly caption: string;
|
|
95
|
+
} | {
|
|
96
|
+
readonly type: 'quote';
|
|
97
|
+
readonly text: string;
|
|
98
|
+
readonly attribution: string;
|
|
99
|
+
readonly role: string;
|
|
100
|
+
} | {
|
|
101
|
+
readonly type: 'cta';
|
|
102
|
+
readonly heading: string;
|
|
103
|
+
readonly body: string;
|
|
104
|
+
readonly action: WidgetLink;
|
|
105
|
+
} | {
|
|
106
|
+
readonly type: 'links';
|
|
107
|
+
readonly items: readonly WidgetLink[];
|
|
108
|
+
} | {
|
|
109
|
+
readonly type: 'contact';
|
|
110
|
+
readonly address: string;
|
|
111
|
+
readonly phone: string;
|
|
112
|
+
readonly email: string;
|
|
113
|
+
readonly hours: readonly {
|
|
114
|
+
readonly label: string;
|
|
115
|
+
readonly value: string;
|
|
116
|
+
}[];
|
|
117
|
+
} | {
|
|
118
|
+
readonly type: 'about';
|
|
119
|
+
readonly image: ImageSource | null;
|
|
120
|
+
readonly heading: string;
|
|
121
|
+
readonly body: string;
|
|
122
|
+
readonly link: WidgetLink | null;
|
|
123
|
+
} | {
|
|
124
|
+
readonly type: 'entries';
|
|
125
|
+
readonly variant: 'recent' | 'related' | 'popular';
|
|
126
|
+
readonly items: readonly WidgetEntryItem[];
|
|
127
|
+
readonly empty: string;
|
|
128
|
+
} | {
|
|
129
|
+
readonly type: 'terms';
|
|
130
|
+
readonly display: 'list' | 'dropdown';
|
|
131
|
+
readonly items: readonly WidgetTermItem[];
|
|
132
|
+
/** The dropdown's own first option, e.g. "Select a category". */
|
|
133
|
+
readonly prompt: string;
|
|
134
|
+
} | {
|
|
135
|
+
readonly type: 'tagCloud';
|
|
136
|
+
readonly items: readonly (WidgetTermItem & {
|
|
137
|
+
readonly weight: 1 | 2 | 3 | 4 | 5;
|
|
138
|
+
})[];
|
|
139
|
+
} | {
|
|
140
|
+
readonly type: 'archives';
|
|
141
|
+
readonly display: 'list' | 'dropdown';
|
|
142
|
+
readonly items: readonly WidgetTermItem[];
|
|
143
|
+
readonly prompt: string;
|
|
144
|
+
} | {
|
|
145
|
+
readonly type: 'comments';
|
|
146
|
+
readonly items: readonly {
|
|
147
|
+
readonly author: string;
|
|
148
|
+
readonly entryTitle: string;
|
|
149
|
+
readonly href: string | null;
|
|
150
|
+
readonly excerpt: string;
|
|
151
|
+
readonly date: string;
|
|
152
|
+
readonly datetime: string;
|
|
153
|
+
}[];
|
|
154
|
+
readonly empty: string;
|
|
155
|
+
} | {
|
|
156
|
+
readonly type: 'search';
|
|
157
|
+
readonly action: string;
|
|
158
|
+
readonly label: string;
|
|
159
|
+
readonly placeholder: string;
|
|
160
|
+
readonly button: string;
|
|
161
|
+
} | {
|
|
162
|
+
readonly type: 'social';
|
|
163
|
+
readonly items: readonly ChromeLink[];
|
|
164
|
+
} | {
|
|
165
|
+
readonly type: 'form';
|
|
166
|
+
/** A form a widget cannot carry (several steps, a file, a captcha) is a link to its page. */
|
|
167
|
+
readonly link: WidgetLink | null;
|
|
168
|
+
readonly action: string;
|
|
169
|
+
readonly fields: readonly WidgetFormField[];
|
|
170
|
+
readonly hidden: Readonly<Record<string, string>>;
|
|
171
|
+
readonly honeypot: string;
|
|
172
|
+
readonly submit: string;
|
|
173
|
+
} | {
|
|
174
|
+
readonly type: 'toc';
|
|
175
|
+
readonly items: readonly {
|
|
176
|
+
readonly label: string;
|
|
177
|
+
readonly href: string;
|
|
178
|
+
readonly depth: number;
|
|
179
|
+
}[];
|
|
180
|
+
} | {
|
|
181
|
+
readonly type: 'calendar';
|
|
182
|
+
readonly caption: string;
|
|
183
|
+
readonly weekdays: readonly string[];
|
|
184
|
+
/** Six weeks of seven days; `null` outside the month. */
|
|
185
|
+
readonly weeks: readonly (readonly ({
|
|
186
|
+
readonly day: number;
|
|
187
|
+
readonly href: string | null;
|
|
188
|
+
readonly label: string;
|
|
189
|
+
} | null)[])[];
|
|
190
|
+
readonly previous: WidgetLink | null;
|
|
191
|
+
readonly next: WidgetLink | null;
|
|
192
|
+
});
|
|
193
|
+
export interface ResolvedWidgetArea {
|
|
194
|
+
readonly id: string;
|
|
195
|
+
readonly label: string;
|
|
196
|
+
readonly widgets: readonly ResolvedWidget[];
|
|
197
|
+
}
|
|
198
|
+
/** The areas of one page, by id. Absent from a host that predates `theme@1.6`. */
|
|
199
|
+
export type WidgetAreas = Readonly<Record<string, ResolvedWidgetArea>>;
|
|
200
|
+
export interface RenderWidgetAreaOptions {
|
|
201
|
+
/** Added to `cg-widget-area`. */
|
|
202
|
+
readonly className?: string;
|
|
203
|
+
/** A sidebar's widget titles are `h2`; a footer column under a footer heading may want `h3`. */
|
|
204
|
+
readonly headingLevel?: 'h2' | 'h3' | 'h4';
|
|
205
|
+
/**
|
|
206
|
+
* The page's context, when the caller has one (`renderPage` does,
|
|
207
|
+
* `renderChrome` does not). Only a text widget's rich text uses it, for its
|
|
208
|
+
* links; without it links are the hrefs the host already resolved.
|
|
209
|
+
*/
|
|
210
|
+
readonly ctx?: RenderContext;
|
|
211
|
+
}
|
|
212
|
+
/** Whether an area has anything to show on this page. */
|
|
213
|
+
export declare function hasWidgets(area: ResolvedWidgetArea | undefined): area is ResolvedWidgetArea;
|
|
214
|
+
/**
|
|
215
|
+
* One area as an `<aside>`, or `null` when it holds nothing on this page, so
|
|
216
|
+
* a theme can decide its layout on the return value (no sidebar column when
|
|
217
|
+
* there is no sidebar).
|
|
218
|
+
*/
|
|
219
|
+
export declare function renderWidgetArea(area: ResolvedWidgetArea | undefined, options?: RenderWidgetAreaOptions): HtmlElement | null;
|
|
220
|
+
/** The footer's widget columns, in order, as one row; `null` when every column is empty. */
|
|
221
|
+
export declare function renderFooterWidgets(areas: WidgetAreas | undefined, options?: {
|
|
222
|
+
readonly className?: string;
|
|
223
|
+
readonly headingLevel?: 'h2' | 'h3' | 'h4';
|
|
224
|
+
}): HtmlElement | null;
|
|
225
|
+
export {};
|
|
226
|
+
//# sourceMappingURL=widgets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.d.ts","sourceRoot":"","sources":["../src/widgets.ts"],"names":[],"mappings":"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"}
|
package/dist/widgets.js
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { renderSocialLinks } from './chrome.js';
|
|
2
|
+
import { h } from './html.js';
|
|
3
|
+
import { renderIcon } from './icons.js';
|
|
4
|
+
import { renderImageSource } from './media.js';
|
|
5
|
+
import { renderRichText } from './rich-text.js';
|
|
6
|
+
function linkNode(link, className, ...children) {
|
|
7
|
+
return h('a', {
|
|
8
|
+
class: className,
|
|
9
|
+
href: link.href,
|
|
10
|
+
...(link.newTab ? { target: '_blank', rel: 'noopener noreferrer' } : {}),
|
|
11
|
+
...(link.current === true ? { 'aria-current': 'page' } : {}),
|
|
12
|
+
}, ...(children.length === 0 ? [link.label] : children));
|
|
13
|
+
}
|
|
14
|
+
/** Only what rich text reads: link targets. Media nodes are not offered to a text widget. */
|
|
15
|
+
function linksOnlyContext() {
|
|
16
|
+
const unsupported = () => {
|
|
17
|
+
throw new Error('A text widget rendered without a page context cannot resolve this.');
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
link: (target) => (typeof target === 'string' ? target : '#'),
|
|
21
|
+
image: unsupported,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function termList(items, className) {
|
|
25
|
+
return h('ul', { class: className }, items.map((item) => h('li', {
|
|
26
|
+
class: `${className}-item`,
|
|
27
|
+
'data-depth': item.depth,
|
|
28
|
+
...(item.current ? { 'aria-current': 'page' } : {}),
|
|
29
|
+
}, item.href === null
|
|
30
|
+
? h('span', { class: `${className}-label` }, item.label)
|
|
31
|
+
: h('a', { class: `${className}-label`, href: item.href }, item.label), item.count === null ? null : h('span', { class: `${className}-count` }, String(item.count)))));
|
|
32
|
+
}
|
|
33
|
+
function dropdown(items, prompt, label, id) {
|
|
34
|
+
// A plain form that navigates with the select's value: works without any
|
|
35
|
+
// script, the one exception to "a link is an <a>" a dropdown forces.
|
|
36
|
+
return h('form', { class: 'cg-widget__jump', method: 'get', action: '/_cogenta/go' }, h('label', { class: 'cg-visually-hidden', for: `cg-widget-${id}-select` }, label), h('select', { id: `cg-widget-${id}-select`, name: 'to', required: true }, h('option', { value: '' }, prompt), items
|
|
37
|
+
.filter((item) => item.href !== null)
|
|
38
|
+
.map((item) => h('option', { value: item.href ?? '', ...(item.current ? { selected: true } : {}) }, `${' '.repeat(item.depth)}${item.label}${item.count === null ? '' : ` (${item.count})`}`))), h('button', { type: 'submit', class: 'cg-widget__jump-button' }, prompt === '' ? '→' : '→'));
|
|
39
|
+
}
|
|
40
|
+
function body(widget, ctx) {
|
|
41
|
+
switch (widget.type) {
|
|
42
|
+
case 'plugin':
|
|
43
|
+
return widget.node;
|
|
44
|
+
case 'text':
|
|
45
|
+
return h('div', { class: 'cg-widget__text' }, renderRichText(ctx, widget.body));
|
|
46
|
+
case 'image': {
|
|
47
|
+
const picture = renderImageSource(widget.image, {
|
|
48
|
+
className: 'cg-widget__image',
|
|
49
|
+
sizes: '(min-width: 64rem) 22rem, 100vw',
|
|
50
|
+
});
|
|
51
|
+
return h('figure', { class: 'cg-widget__figure' }, widget.href === null ? picture : h('a', { href: widget.href }, picture), widget.caption === ''
|
|
52
|
+
? null
|
|
53
|
+
: h('figcaption', { class: 'cg-widget__caption' }, widget.caption));
|
|
54
|
+
}
|
|
55
|
+
case 'gallery':
|
|
56
|
+
return h('ul', { class: 'cg-widget__gallery', 'data-columns': widget.columns }, widget.images.map((image) => h('li', { class: 'cg-widget__gallery-item' }, renderImageSource(image, { className: 'cg-widget__gallery-image', sizes: '12rem' }))));
|
|
57
|
+
case 'embed':
|
|
58
|
+
return h('figure', { class: 'cg-widget__embed' }, widget.frameSrc === null
|
|
59
|
+
? h('a', { href: widget.url, rel: 'noopener noreferrer' }, widget.caption === '' ? widget.url : widget.caption)
|
|
60
|
+
: h('iframe', {
|
|
61
|
+
class: 'cg-widget__frame',
|
|
62
|
+
src: widget.frameSrc,
|
|
63
|
+
title: widget.caption === '' ? (widget.title ?? widget.url) : widget.caption,
|
|
64
|
+
loading: 'lazy',
|
|
65
|
+
allowfullscreen: true,
|
|
66
|
+
referrerpolicy: 'strict-origin-when-cross-origin',
|
|
67
|
+
}), widget.frameSrc === null || widget.caption === ''
|
|
68
|
+
? null
|
|
69
|
+
: h('figcaption', { class: 'cg-widget__caption' }, widget.caption));
|
|
70
|
+
case 'quote':
|
|
71
|
+
return h('figure', { class: 'cg-widget__quote' }, h('blockquote', { class: 'cg-widget__quote-text' }, h('p', {}, widget.text)), widget.attribution === ''
|
|
72
|
+
? null
|
|
73
|
+
: h('figcaption', { class: 'cg-widget__quote-source' }, h('span', { class: 'cg-widget__quote-name' }, widget.attribution), widget.role === ''
|
|
74
|
+
? null
|
|
75
|
+
: h('span', { class: 'cg-widget__quote-role' }, widget.role)));
|
|
76
|
+
case 'cta':
|
|
77
|
+
return h('div', { class: 'cg-widget__cta' }, h('p', { class: 'cg-widget__cta-heading' }, widget.heading), widget.body === '' ? null : h('p', { class: 'cg-widget__cta-body' }, widget.body), linkNode(widget.action, 'cg-widget__cta-action'));
|
|
78
|
+
case 'links':
|
|
79
|
+
return h('ul', { class: 'cg-widget__links' }, widget.items.map((item) => h('li', { class: 'cg-widget__links-item' }, linkNode(item, 'cg-widget__link'))));
|
|
80
|
+
case 'contact':
|
|
81
|
+
return h('div', { class: 'cg-widget__contact' }, widget.address === ''
|
|
82
|
+
? null
|
|
83
|
+
: h('p', { class: 'cg-widget__contact-line', 'data-kind': 'address' }, renderIcon('map-pin', { className: 'cg-widget__icon', size: 16 }), h('span', {}, widget.address)), widget.phone === ''
|
|
84
|
+
? null
|
|
85
|
+
: h('p', { class: 'cg-widget__contact-line', 'data-kind': 'phone' }, renderIcon('phone', { className: 'cg-widget__icon', size: 16 }), h('a', { href: `tel:${widget.phone.replace(/[^+\d]/gu, '')}` }, widget.phone)), widget.email === ''
|
|
86
|
+
? null
|
|
87
|
+
: h('p', { class: 'cg-widget__contact-line', 'data-kind': 'email' }, renderIcon('mail', { className: 'cg-widget__icon', size: 16 }), h('a', { href: `mailto:${widget.email}` }, widget.email)), widget.hours.length === 0
|
|
88
|
+
? null
|
|
89
|
+
: h('dl', { class: 'cg-widget__hours' }, widget.hours.map((row) => [
|
|
90
|
+
h('dt', { class: 'cg-widget__hours-label' }, row.label),
|
|
91
|
+
h('dd', { class: 'cg-widget__hours-value' }, row.value),
|
|
92
|
+
])));
|
|
93
|
+
case 'about':
|
|
94
|
+
return h('div', { class: 'cg-widget__about' }, widget.image === null
|
|
95
|
+
? null
|
|
96
|
+
: renderImageSource(widget.image, {
|
|
97
|
+
className: 'cg-widget__about-image',
|
|
98
|
+
sizes: '22rem',
|
|
99
|
+
}), widget.heading === ''
|
|
100
|
+
? null
|
|
101
|
+
: h('p', { class: 'cg-widget__about-heading' }, widget.heading), h('p', { class: 'cg-widget__about-body' }, widget.body), widget.link === null ? null : linkNode(widget.link, 'cg-widget__about-link'));
|
|
102
|
+
case 'entries':
|
|
103
|
+
if (widget.items.length === 0)
|
|
104
|
+
return h('p', { class: 'cg-widget__empty' }, widget.empty);
|
|
105
|
+
return h('ol', { class: 'cg-widget__entries', 'data-variant': widget.variant }, widget.items.map((item) => h('li', { class: 'cg-widget__entry', 'data-image': item.image === null ? 'none' : 'image' }, item.image === null
|
|
106
|
+
? null
|
|
107
|
+
: renderImageSource(item.image, {
|
|
108
|
+
className: 'cg-widget__entry-image',
|
|
109
|
+
sizes: '5rem',
|
|
110
|
+
}), h('div', { class: 'cg-widget__entry-text' }, item.href === null
|
|
111
|
+
? h('span', { class: 'cg-widget__entry-title' }, item.title)
|
|
112
|
+
: h('a', { class: 'cg-widget__entry-title', href: item.href }, item.title), item.date === null || item.datetime === null
|
|
113
|
+
? null
|
|
114
|
+
: h('time', { class: 'cg-widget__entry-date', datetime: item.datetime }, item.date), item.excerpt === null
|
|
115
|
+
? null
|
|
116
|
+
: h('p', { class: 'cg-widget__entry-excerpt' }, item.excerpt)))));
|
|
117
|
+
case 'terms':
|
|
118
|
+
return widget.display === 'dropdown'
|
|
119
|
+
? dropdown(widget.items, widget.prompt, widget.title ?? widget.prompt, widget.id)
|
|
120
|
+
: termList(widget.items, 'cg-widget__terms');
|
|
121
|
+
case 'tagCloud':
|
|
122
|
+
return h('ul', { class: 'cg-widget__cloud' }, widget.items.map((item) => h('li', { class: 'cg-widget__cloud-item', 'data-weight': item.weight }, item.href === null
|
|
123
|
+
? h('span', {}, item.label)
|
|
124
|
+
: h('a', { href: item.href, ...(item.current ? { 'aria-current': 'page' } : {}) }, item.label), item.count === null
|
|
125
|
+
? null
|
|
126
|
+
: h('span', { class: 'cg-widget__cloud-count' }, String(item.count)))));
|
|
127
|
+
case 'archives':
|
|
128
|
+
return widget.display === 'dropdown'
|
|
129
|
+
? dropdown(widget.items, widget.prompt, widget.title ?? widget.prompt, widget.id)
|
|
130
|
+
: termList(widget.items, 'cg-widget__archives');
|
|
131
|
+
case 'comments':
|
|
132
|
+
if (widget.items.length === 0)
|
|
133
|
+
return h('p', { class: 'cg-widget__empty' }, widget.empty);
|
|
134
|
+
return h('ol', { class: 'cg-widget__comments' }, widget.items.map((item) => h('li', { class: 'cg-widget__comment' }, h('span', { class: 'cg-widget__comment-author' }, item.author), ' ', item.href === null
|
|
135
|
+
? h('span', { class: 'cg-widget__comment-entry' }, item.entryTitle)
|
|
136
|
+
: h('a', { class: 'cg-widget__comment-entry', href: item.href }, item.entryTitle), h('p', { class: 'cg-widget__comment-excerpt' }, item.excerpt), h('time', { class: 'cg-widget__comment-date', datetime: item.datetime }, item.date))));
|
|
137
|
+
case 'search':
|
|
138
|
+
return h('form', { class: 'cg-widget__search', role: 'search', method: 'get', action: widget.action }, h('label', { class: 'cg-visually-hidden', for: `cg-widget-${widget.id}-q` }, widget.label), h('input', {
|
|
139
|
+
id: `cg-widget-${widget.id}-q`,
|
|
140
|
+
class: 'cg-widget__search-input',
|
|
141
|
+
type: 'search',
|
|
142
|
+
name: 'q',
|
|
143
|
+
placeholder: widget.placeholder,
|
|
144
|
+
required: true,
|
|
145
|
+
}), h('button', { class: 'cg-widget__search-button', type: 'submit' }, widget.button));
|
|
146
|
+
case 'social':
|
|
147
|
+
return renderSocialLinks(widget.items, {
|
|
148
|
+
className: 'cg-widget__social cg-social',
|
|
149
|
+
itemClassName: 'cg-widget__social-item',
|
|
150
|
+
});
|
|
151
|
+
case 'form':
|
|
152
|
+
if (widget.link !== null)
|
|
153
|
+
return linkNode(widget.link, 'cg-widget__form-link');
|
|
154
|
+
return h('form', { class: 'cg-widget__form cg-form', method: 'post', action: widget.action }, widget.fields.map((field) => formField(widget.id, field)), Object.entries(widget.hidden).map(([name, value]) => h('input', { type: 'hidden', name, value })), h('div', { class: 'cg-form__honeypot', 'aria-hidden': 'true' }, h('label', { for: `cg-widget-${widget.id}-hp` }, 'Leave this field empty'), h('input', {
|
|
155
|
+
type: 'text',
|
|
156
|
+
id: `cg-widget-${widget.id}-hp`,
|
|
157
|
+
name: widget.honeypot,
|
|
158
|
+
tabindex: '-1',
|
|
159
|
+
autocomplete: 'off',
|
|
160
|
+
value: '',
|
|
161
|
+
})), h('button', { class: 'cg-widget__form-submit', type: 'submit' }, widget.submit));
|
|
162
|
+
case 'toc':
|
|
163
|
+
return h('ol', { class: 'cg-widget__toc' }, widget.items.map((item) => h('li', { class: 'cg-widget__toc-item', 'data-depth': item.depth }, h('a', { href: item.href }, item.label))));
|
|
164
|
+
case 'calendar':
|
|
165
|
+
return h('div', { class: 'cg-widget__calendar' }, h('table', { class: 'cg-widget__calendar-table' }, h('caption', {}, widget.caption), h('thead', {}, h('tr', {}, widget.weekdays.map((day) => h('th', { scope: 'col', abbr: day }, day.slice(0, 2))))), h('tbody', {}, widget.weeks.map((week) => h('tr', {}, week.map((cell) => cell === null
|
|
166
|
+
? h('td', { class: 'cg-widget__calendar-pad' })
|
|
167
|
+
: h('td', { ...(cell.href === null ? {} : { 'data-posts': 'true' }) }, cell.href === null
|
|
168
|
+
? String(cell.day)
|
|
169
|
+
: h('a', { href: cell.href, 'aria-label': cell.label }, String(cell.day)))))))), widget.previous === null && widget.next === null
|
|
170
|
+
? null
|
|
171
|
+
: h('p', { class: 'cg-widget__calendar-nav' }, widget.previous === null
|
|
172
|
+
? null
|
|
173
|
+
: linkNode(widget.previous, 'cg-widget__calendar-previous'), widget.next === null ? null : linkNode(widget.next, 'cg-widget__calendar-next')));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
function formField(widgetId, field) {
|
|
177
|
+
const id = `cg-widget-${widgetId}-${field.name}`;
|
|
178
|
+
const common = { id, name: field.name, ...(field.required ? { required: true } : {}) };
|
|
179
|
+
let control;
|
|
180
|
+
if (field.kind === 'textarea') {
|
|
181
|
+
control = h('textarea', { ...common, rows: 4 });
|
|
182
|
+
}
|
|
183
|
+
else if (field.kind === 'select') {
|
|
184
|
+
control = h('select', common, h('option', { value: '' }, ''), field.choices.map((choice) => h('option', { value: choice }, choice)));
|
|
185
|
+
}
|
|
186
|
+
else if (field.kind === 'checkbox') {
|
|
187
|
+
return h('div', { class: 'cg-form__field', 'data-kind': 'checkbox' }, h('label', { for: id }, h('input', { ...common, type: 'checkbox', value: 'true' }), ' ', field.label));
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
control = h('input', { ...common, type: field.kind });
|
|
191
|
+
}
|
|
192
|
+
return h('div', { class: 'cg-form__field', 'data-kind': field.kind }, h('label', { for: id }, field.label), control, field.help === null ? null : h('p', { class: 'cg-form__help' }, field.help));
|
|
193
|
+
}
|
|
194
|
+
/** Whether an area has anything to show on this page. */
|
|
195
|
+
export function hasWidgets(area) {
|
|
196
|
+
return area !== undefined && area.widgets.length > 0;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* One area as an `<aside>`, or `null` when it holds nothing on this page, so
|
|
200
|
+
* a theme can decide its layout on the return value (no sidebar column when
|
|
201
|
+
* there is no sidebar).
|
|
202
|
+
*/
|
|
203
|
+
export function renderWidgetArea(area, options = {}) {
|
|
204
|
+
if (!hasWidgets(area))
|
|
205
|
+
return null;
|
|
206
|
+
const level = options.headingLevel ?? 'h2';
|
|
207
|
+
const ctx = options.ctx ?? linksOnlyContext();
|
|
208
|
+
return h('aside', {
|
|
209
|
+
class: options.className === undefined ? 'cg-widget-area' : `cg-widget-area ${options.className}`,
|
|
210
|
+
'data-area': area.id,
|
|
211
|
+
'aria-label': area.label,
|
|
212
|
+
}, area.widgets.map((widget) => h('section', {
|
|
213
|
+
// The plugin's own type name, not the literal `plugin`: a theme
|
|
214
|
+
// styles `cg-widget--openingHours` the way it styles any other.
|
|
215
|
+
class: `cg-widget cg-widget--${widget.type === 'plugin' ? widget.widgetType : widget.type}`,
|
|
216
|
+
'data-widget-id': widget.id,
|
|
217
|
+
...(widget.devices.desktop ? {} : { 'data-hide-desktop': 'true' }),
|
|
218
|
+
...(widget.devices.tablet ? {} : { 'data-hide-tablet': 'true' }),
|
|
219
|
+
...(widget.devices.mobile ? {} : { 'data-hide-mobile': 'true' }),
|
|
220
|
+
}, widget.title === null ? null : h(level, { class: 'cg-widget__title' }, widget.title), h('div', { class: 'cg-widget__body' }, body(widget, ctx)))));
|
|
221
|
+
}
|
|
222
|
+
/** The footer's widget columns, in order, as one row; `null` when every column is empty. */
|
|
223
|
+
export function renderFooterWidgets(areas, options = {}) {
|
|
224
|
+
if (areas === undefined)
|
|
225
|
+
return null;
|
|
226
|
+
const columns = ['footer-1', 'footer-2', 'footer-3', 'footer-4']
|
|
227
|
+
.map((id) => areas[id])
|
|
228
|
+
.filter(hasWidgets);
|
|
229
|
+
if (columns.length === 0)
|
|
230
|
+
return null;
|
|
231
|
+
return h('div', {
|
|
232
|
+
class: options.className === undefined
|
|
233
|
+
? 'cg-footer-widgets'
|
|
234
|
+
: `cg-footer-widgets ${options.className}`,
|
|
235
|
+
'data-columns': columns.length,
|
|
236
|
+
}, columns.map((area) => renderWidgetArea(area, {
|
|
237
|
+
headingLevel: options.headingLevel ?? 'h2',
|
|
238
|
+
className: 'cg-footer-widgets__column',
|
|
239
|
+
})));
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=widgets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widgets.js","sourceRoot":"","sources":["../src/widgets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogenta/theme-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "The shared contract D primitives every Cogenta theme package implements against: RenderContext, the HTML tree, rich text, comments and the twelve-block page shape.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"directory": "packages/theme-kit"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@cogenta/
|
|
31
|
-
"@cogenta/
|
|
30
|
+
"@cogenta/render": "0.3.6",
|
|
31
|
+
"@cogenta/blocks": "1.1.4"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"typescript": "^7.0.2",
|