@refrakt-md/runes 0.12.0 → 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/config.d.ts +36 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +598 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/tags/nav.d.ts +2 -0
- package/dist/tags/nav.d.ts.map +1 -1
- package/dist/tags/nav.js +45 -9
- package/dist/tags/nav.js.map +1 -1
- package/dist/tags/pagination.d.ts +5 -0
- package/dist/tags/pagination.d.ts.map +1 -0
- package/dist/tags/pagination.js +62 -0
- package/dist/tags/pagination.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import Markdoc from '@markdoc/markdoc';
|
|
2
|
+
const { Tag } = Markdoc;
|
|
3
|
+
import { createContentModelSchema, createComponentRenderable } from '../lib/index.js';
|
|
4
|
+
/** Sentinel meta property written by pagination auto mode; consumed by corePipelineHooks.postProcess */
|
|
5
|
+
export const PAGINATION_AUTO_SENTINEL = '__pagination-auto';
|
|
6
|
+
export const pagination = createContentModelSchema({
|
|
7
|
+
attributes: {
|
|
8
|
+
auto: { type: Boolean, required: false, default: false, description: 'Derive prev/next from sibling page order' },
|
|
9
|
+
prev: { type: String, required: false, description: 'Explicit previous page (slug or URL)' },
|
|
10
|
+
next: { type: String, required: false, description: 'Explicit next page (slug or URL)' },
|
|
11
|
+
scope: { type: String, required: false, matches: ['siblings', 'section'], default: 'siblings', description: 'Auto-mode scope: direct siblings, or all pages in the current top-level section' },
|
|
12
|
+
'prev-label': { type: String, required: false, description: 'Override label for the previous link' },
|
|
13
|
+
'next-label': { type: String, required: false, description: 'Override label for the next link' },
|
|
14
|
+
},
|
|
15
|
+
contentModel: { type: 'sequence', fields: [] },
|
|
16
|
+
selfClosing: true,
|
|
17
|
+
transform(_resolved, attrs, _config) {
|
|
18
|
+
if (attrs.auto) {
|
|
19
|
+
const sentinelMeta = new Tag('meta', { 'data-field': PAGINATION_AUTO_SENTINEL, content: 'true' });
|
|
20
|
+
const scopeMeta = attrs.scope
|
|
21
|
+
? new Tag('meta', { 'data-field': 'scope', content: String(attrs.scope) })
|
|
22
|
+
: null;
|
|
23
|
+
const prevLabelMeta = attrs['prev-label']
|
|
24
|
+
? new Tag('meta', { 'data-field': 'prev-label', content: String(attrs['prev-label']) })
|
|
25
|
+
: null;
|
|
26
|
+
const nextLabelMeta = attrs['next-label']
|
|
27
|
+
? new Tag('meta', { 'data-field': 'next-label', content: String(attrs['next-label']) })
|
|
28
|
+
: null;
|
|
29
|
+
const metas = [sentinelMeta, scopeMeta, prevLabelMeta, nextLabelMeta].filter(Boolean);
|
|
30
|
+
return createComponentRenderable({
|
|
31
|
+
rune: 'pagination',
|
|
32
|
+
tag: 'nav',
|
|
33
|
+
children: metas,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const links = [];
|
|
37
|
+
if (attrs.prev) {
|
|
38
|
+
const isUrl = String(attrs.prev).startsWith('/') || /^[a-z]+:\/\//i.test(String(attrs.prev));
|
|
39
|
+
const href = isUrl ? String(attrs.prev) : `__slug:${attrs.prev}`;
|
|
40
|
+
const label = attrs['prev-label'] ?? String(attrs.prev);
|
|
41
|
+
links.push(new Tag('a', { href, 'data-direction': 'prev', 'data-name': 'prev' }, [
|
|
42
|
+
new Tag('span', { 'data-name': 'marker' }, ['←']),
|
|
43
|
+
new Tag('span', { 'data-name': 'label' }, [label]),
|
|
44
|
+
]));
|
|
45
|
+
}
|
|
46
|
+
if (attrs.next) {
|
|
47
|
+
const isUrl = String(attrs.next).startsWith('/') || /^[a-z]+:\/\//i.test(String(attrs.next));
|
|
48
|
+
const href = isUrl ? String(attrs.next) : `__slug:${attrs.next}`;
|
|
49
|
+
const label = attrs['next-label'] ?? String(attrs.next);
|
|
50
|
+
links.push(new Tag('a', { href, 'data-direction': 'next', 'data-name': 'next' }, [
|
|
51
|
+
new Tag('span', { 'data-name': 'label' }, [label]),
|
|
52
|
+
new Tag('span', { 'data-name': 'marker' }, ['→']),
|
|
53
|
+
]));
|
|
54
|
+
}
|
|
55
|
+
return createComponentRenderable({
|
|
56
|
+
rune: 'pagination',
|
|
57
|
+
tag: 'nav',
|
|
58
|
+
children: links,
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/tags/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEtF,wGAAwG;AACxG,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;IAClD,UAAU,EAAE;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,0CAA0C,EAAE;QACjH,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;QAC5F,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,kCAAkC,EAAE;QACxF,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iFAAiF,EAAE;QAC/L,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,sCAAsC,EAAE;QACpG,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,kCAAkC,EAAE;KAChG;IACD,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9C,WAAW,EAAE,IAAI;IACjB,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;QAClC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAClG,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK;gBAC5B,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1E,CAAC,CAAC,IAAI,CAAC;YACR,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;gBACxC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBACvF,CAAC,CAAC,IAAI,CAAC;YACR,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC;gBACxC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBACvF,CAAC,CAAC,IAAI,CAAC;YACR,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,OAAO,CAAU,CAAC;YAC/F,OAAO,yBAAyB,CAAC;gBAChC,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,KAAK;aACf,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAU,EAAE,CAAC;QAExB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,KAAK,GAAI,KAAK,CAAC,YAAY,CAAwB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CACT,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;gBACrE,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACjD,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;aAClD,CAAC,CACF,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,KAAK,GAAI,KAAK,CAAC,YAAY,CAAwB,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CACT,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;gBACrE,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;aACjD,CAAC,CACF,CAAC;QACH,CAAC;QAED,OAAO,yBAAyB,CAAC;YAChC,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,KAAK;YACV,QAAQ,EAAE,KAAK;SACf,CAAC,CAAC;IACJ,CAAC;CACD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@refrakt-md/runes",
|
|
3
3
|
"description": "Semantic Markdoc runes for refrakt.md",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.14.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"build": "tsc"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@refrakt-md/types": "0.
|
|
33
|
-
"@refrakt-md/transform": "0.
|
|
32
|
+
"@refrakt-md/types": "0.14.0",
|
|
33
|
+
"@refrakt-md/transform": "0.14.0",
|
|
34
34
|
"@markdoc/markdoc": "0.4.0",
|
|
35
35
|
"reflect-metadata": "^0.2.0",
|
|
36
36
|
"fast-xml-parser": "4.5.1",
|