@batterai/block-sdk 0.1.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/CHANGELOG.md +6 -0
- package/LICENSE +21 -0
- package/README.md +22 -0
- package/dist/base-element.d.ts +37 -0
- package/dist/base-element.d.ts.map +1 -0
- package/dist/base-element.js +46 -0
- package/dist/base-element.js.map +1 -0
- package/dist/blocks/callout.css +1 -0
- package/dist/blocks/callout.d.ts +13 -0
- package/dist/blocks/callout.d.ts.map +1 -0
- package/dist/blocks/callout.js +106 -0
- package/dist/blocks/callout.js.map +1 -0
- package/dist/blocks/first-party.d.ts +3 -0
- package/dist/blocks/first-party.d.ts.map +1 -0
- package/dist/blocks/first-party.js +7 -0
- package/dist/blocks/first-party.js.map +1 -0
- package/dist/blocks/form.css +1 -0
- package/dist/blocks/form.d.ts +67 -0
- package/dist/blocks/form.d.ts.map +1 -0
- package/dist/blocks/form.js +199 -0
- package/dist/blocks/form.js.map +1 -0
- package/dist/blocks/image.css +1 -0
- package/dist/blocks/image.d.ts +49 -0
- package/dist/blocks/image.d.ts.map +1 -0
- package/dist/blocks/image.js +238 -0
- package/dist/blocks/image.js.map +1 -0
- package/dist/define.d.ts +9 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +12 -0
- package/dist/define.js.map +1 -0
- package/dist/html-package.d.ts +16 -0
- package/dist/html-package.d.ts.map +1 -0
- package/dist/html-package.js +104 -0
- package/dist/html-package.js.map +1 -0
- package/dist/i18n.d.ts +88 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +93 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/render-to-dsd.d.ts +18 -0
- package/dist/render-to-dsd.d.ts.map +1 -0
- package/dist/render-to-dsd.js +72 -0
- package/dist/render-to-dsd.js.map +1 -0
- package/dist/tag.d.ts +14 -0
- package/dist/tag.d.ts.map +1 -0
- package/dist/tag.js +25 -0
- package/dist/tag.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/blocks/image.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAC9D,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,YAAY,EAEjB,KAAK,MAAM,EACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAgDtD,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAa3E;AAED,eAAO,MAAM,aAAa,EAAE,aAAyC,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvD,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;KACnD,CAAC;IACF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD,qBAAa,YAAa,SAAQ,mBAAmB;IACnD,MAAM,CAAC,MAAM,0BA6BX;IAEO,MAAM,IAAI,cAAc;CAyBlC;AA2GD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAOzE;AAED,eAAO,MAAM,YAAY,EAAE,YAAuC,CAAC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* First-party `battery.image` (Tier 1, hydration "none" — 0 kb client JS):
|
|
3
|
+
* a bound image through @batterai/media (plan §8 Phase 7). The block is a pure
|
|
4
|
+
* function of RESOLVED props + host-supplied media data:
|
|
5
|
+
* - `assetId`/`alt`/`caption` props are bindable like any other prop;
|
|
6
|
+
* - the HOST resolves assetId -> src/srcset/dimensions via its MediaStore and
|
|
7
|
+
* injects the result as `config.data.media` (blocks never do I/O — the
|
|
8
|
+
* media lookup is host render machinery, shared by page + fragment +
|
|
9
|
+
* canvas so all three agree, invariant A);
|
|
10
|
+
* - an assetId without media data renders a VISIBLE diagnostic (`be-media-
|
|
11
|
+
* missing`, role=alert) — never a broken <img>, never a silent gap;
|
|
12
|
+
* - alt precedence: bound/authored `alt` prop, else the asset's own alt (the
|
|
13
|
+
* store validates alt at upload, so the floor is never empty).
|
|
14
|
+
*/
|
|
15
|
+
import { css, html, nothing } from "lit";
|
|
16
|
+
import { fieldName, isCssLength, } from "@batterai/contract";
|
|
17
|
+
import { BatteryBlockElement } from "../base-element.js";
|
|
18
|
+
import { defineBlock } from "../define.js";
|
|
19
|
+
import { blockSdkMessage } from "../i18n.js";
|
|
20
|
+
function fields(locale) {
|
|
21
|
+
return [
|
|
22
|
+
{
|
|
23
|
+
name: fieldName("assetId"),
|
|
24
|
+
label: blockSdkMessage(locale, "image.field.assetId.label"),
|
|
25
|
+
valueType: "media",
|
|
26
|
+
cardinality: "one",
|
|
27
|
+
bindable: true,
|
|
28
|
+
constraints: {
|
|
29
|
+
media: {
|
|
30
|
+
view: "single",
|
|
31
|
+
maxCount: 1,
|
|
32
|
+
allowedMimeTypes: ["image/avif", "image/gif", "image/jpeg", "image/png", "image/webp"],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{ name: fieldName("alt"), label: blockSdkMessage(locale, "image.field.alt.label"), valueType: "string", cardinality: "one", bindable: true },
|
|
37
|
+
{ name: fieldName("caption"), label: blockSdkMessage(locale, "image.field.caption.label"), valueType: "string", cardinality: "one", bindable: true },
|
|
38
|
+
{
|
|
39
|
+
name: fieldName("view"),
|
|
40
|
+
label: blockSdkMessage(locale, "image.field.view.label"),
|
|
41
|
+
valueType: "string",
|
|
42
|
+
cardinality: "one",
|
|
43
|
+
bindable: false,
|
|
44
|
+
options: {
|
|
45
|
+
kind: "static",
|
|
46
|
+
items: [
|
|
47
|
+
{ value: "single", label: blockSdkMessage(locale, "image.field.view.single") },
|
|
48
|
+
{ value: "carousel", label: blockSdkMessage(locale, "image.field.view.carousel") },
|
|
49
|
+
{ value: "grid", label: blockSdkMessage(locale, "image.field.view.grid") },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: fieldName("sizes"),
|
|
55
|
+
label: blockSdkMessage(locale, "image.field.sizes.label"),
|
|
56
|
+
help: blockSdkMessage(locale, "image.field.sizes.help"),
|
|
57
|
+
valueType: "string",
|
|
58
|
+
cardinality: "one",
|
|
59
|
+
bindable: false,
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
export function createImageManifest(locale) {
|
|
64
|
+
return {
|
|
65
|
+
type: "battery.image",
|
|
66
|
+
version: "1.0.0",
|
|
67
|
+
source: "battery",
|
|
68
|
+
label: blockSdkMessage(locale, "image.manifest.label"),
|
|
69
|
+
summary: blockSdkMessage(locale, "image.manifest.summary"),
|
|
70
|
+
category: "media",
|
|
71
|
+
icon: "image",
|
|
72
|
+
fields: fields(locale),
|
|
73
|
+
defaultProps: { assetId: "", alt: "", caption: "", view: "single", sizes: "100vw" },
|
|
74
|
+
capabilities: { ssr: true, hydration: "none" },
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export const imageManifest = createImageManifest("en");
|
|
78
|
+
export class BatteryImage extends BatteryBlockElement {
|
|
79
|
+
static styles = css `
|
|
80
|
+
:host { display: block; }
|
|
81
|
+
figure { margin: 0; }
|
|
82
|
+
img { max-width: 100%; height: auto; display: block; }
|
|
83
|
+
.be-image__link { color: inherit; display: block; text-decoration: none; }
|
|
84
|
+
.be-image--carousel {
|
|
85
|
+
display: flex;
|
|
86
|
+
gap: 12px;
|
|
87
|
+
overflow-x: auto;
|
|
88
|
+
overscroll-behavior-inline: contain;
|
|
89
|
+
scroll-snap-type: x mandatory;
|
|
90
|
+
}
|
|
91
|
+
.be-image--carousel .be-image__item {
|
|
92
|
+
flex: 0 0 100%;
|
|
93
|
+
scroll-snap-align: start;
|
|
94
|
+
}
|
|
95
|
+
.be-image--grid {
|
|
96
|
+
display: grid;
|
|
97
|
+
gap: 12px;
|
|
98
|
+
grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
|
|
99
|
+
}
|
|
100
|
+
.be-image__frame {
|
|
101
|
+
overflow: hidden;
|
|
102
|
+
}
|
|
103
|
+
figcaption { font: 14px/1.4 system-ui, sans-serif; color: #555; padding-top: 4px; }
|
|
104
|
+
.be-media-missing {
|
|
105
|
+
font: 14px/1.4 system-ui, sans-serif;
|
|
106
|
+
background: #f7c1c1; padding: 8px 12px; border-radius: 4px;
|
|
107
|
+
}
|
|
108
|
+
`;
|
|
109
|
+
render() {
|
|
110
|
+
const c = this.config;
|
|
111
|
+
if (!c)
|
|
112
|
+
return html `<p class="be-unconfigured">${blockSdkMessage(undefined, "block.unconfigured")}</p>`;
|
|
113
|
+
const assetId = typeof c.props.assetId === "string" ? c.props.assetId : "";
|
|
114
|
+
const data = c.data;
|
|
115
|
+
const images = mediaEntries(data);
|
|
116
|
+
if (images.length === 0) {
|
|
117
|
+
if (assetId) {
|
|
118
|
+
// VISIBLE failure (plan §0 rule 4): the asset didn't resolve.
|
|
119
|
+
return html `<p class="be-media-missing" role="alert">
|
|
120
|
+
${blockSdkMessage(c.context.locale, "image.missing", { assetId })}
|
|
121
|
+
</p>`;
|
|
122
|
+
}
|
|
123
|
+
// Author hasn't picked an image yet — empty placeholder only in editMode.
|
|
124
|
+
return c.context.editMode ? html `<p class="be-media-missing" role="note">${blockSdkMessage(c.context.locale, "image.empty")}</p>` : html ``;
|
|
125
|
+
}
|
|
126
|
+
const view = imageView(data.view ?? c.props.view);
|
|
127
|
+
const caption = typeof c.props.caption === "string" ? c.props.caption : "";
|
|
128
|
+
const altOverride = typeof c.props.alt === "string" && c.props.alt.trim() ? c.props.alt : undefined;
|
|
129
|
+
const sizes = typeof c.props.sizes === "string" && c.props.sizes ? c.props.sizes : "100vw";
|
|
130
|
+
const rendered = (view === "single" ? images.slice(0, 1) : images).map((media) => renderImageItem(media, { altOverride: view === "single" ? altOverride : undefined, caption, sizes }));
|
|
131
|
+
return html `<div class=${`be-image be-image--${view}`} data-image-view=${view}>${rendered}</div>`;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function mediaEntries(data) {
|
|
135
|
+
if (Array.isArray(data.images))
|
|
136
|
+
return data.images.filter(isImageMediaData);
|
|
137
|
+
return isImageMediaData(data.media) ? [data.media] : [];
|
|
138
|
+
}
|
|
139
|
+
function isImageMediaData(value) {
|
|
140
|
+
if (!value || typeof value !== "object")
|
|
141
|
+
return false;
|
|
142
|
+
const item = value;
|
|
143
|
+
return (typeof item.src === "string" &&
|
|
144
|
+
typeof item.width === "number" &&
|
|
145
|
+
typeof item.height === "number" &&
|
|
146
|
+
typeof item.alt === "string");
|
|
147
|
+
}
|
|
148
|
+
function imageView(value) {
|
|
149
|
+
return value === "carousel" || value === "grid" ? value : "single";
|
|
150
|
+
}
|
|
151
|
+
function renderImageItem(media, opts) {
|
|
152
|
+
const caption = media.caption ?? opts.caption;
|
|
153
|
+
const image = html `<img
|
|
154
|
+
src=${media.src}
|
|
155
|
+
srcset=${media.srcset ?? nothing}
|
|
156
|
+
sizes=${media.srcset ? opts.sizes : nothing}
|
|
157
|
+
width=${media.width}
|
|
158
|
+
height=${media.height}
|
|
159
|
+
alt=${opts.altOverride ?? media.alt}
|
|
160
|
+
title=${media.title ?? nothing}
|
|
161
|
+
style=${imageStyle(media)}
|
|
162
|
+
/>`;
|
|
163
|
+
const body = safeHref(media.href) ? html `<a class="be-image__link" href=${media.href}>${image}</a>` : image;
|
|
164
|
+
return html `<figure class="be-image__item">
|
|
165
|
+
<div class="be-image__frame" style=${frameStyle(media)}>${body}</div>
|
|
166
|
+
${caption ? html `<figcaption>${caption}</figcaption>` : nothing}
|
|
167
|
+
</figure>`;
|
|
168
|
+
}
|
|
169
|
+
function frameStyle(media) {
|
|
170
|
+
const styles = [];
|
|
171
|
+
if (isAspectRatio(media.aspectRatio)) {
|
|
172
|
+
styles.push(`aspect-ratio: ${media.aspectRatio}`);
|
|
173
|
+
}
|
|
174
|
+
if (typeof media.sizing?.width === "string" && isCssLength(media.sizing.width)) {
|
|
175
|
+
styles.push(`width: ${media.sizing.width}`);
|
|
176
|
+
}
|
|
177
|
+
if (typeof media.sizing?.height === "string" && isCssLength(media.sizing.height)) {
|
|
178
|
+
styles.push(`height: ${media.sizing.height}`);
|
|
179
|
+
}
|
|
180
|
+
return styles.length > 0 ? styles.join("; ") : nothing;
|
|
181
|
+
}
|
|
182
|
+
function imageStyle(media) {
|
|
183
|
+
const styles = [];
|
|
184
|
+
const focal = validFocal(media.focal);
|
|
185
|
+
const framed = isAspectRatio(media.aspectRatio);
|
|
186
|
+
const objectFit = validObjectFit(media.sizing?.objectFit);
|
|
187
|
+
if (focal) {
|
|
188
|
+
styles.push(`object-position: ${Math.round(focal.x * 100)}% ${Math.round(focal.y * 100)}%`);
|
|
189
|
+
}
|
|
190
|
+
if (framed) {
|
|
191
|
+
styles.push("width: 100%", "height: 100%", `object-fit: ${objectFit ?? "cover"}`);
|
|
192
|
+
}
|
|
193
|
+
else if (objectFit) {
|
|
194
|
+
styles.push(`object-fit: ${objectFit}`);
|
|
195
|
+
}
|
|
196
|
+
if (typeof media.opacity === "number" && Number.isFinite(media.opacity) && media.opacity >= 0 && media.opacity <= 1) {
|
|
197
|
+
styles.push(`opacity: ${media.opacity}`);
|
|
198
|
+
}
|
|
199
|
+
return styles.length > 0 ? styles.join("; ") : nothing;
|
|
200
|
+
}
|
|
201
|
+
function validObjectFit(value) {
|
|
202
|
+
return value === "cover" || value === "contain" || value === "fill" ? value : undefined;
|
|
203
|
+
}
|
|
204
|
+
function validFocal(value) {
|
|
205
|
+
return value &&
|
|
206
|
+
Number.isFinite(value.x) &&
|
|
207
|
+
Number.isFinite(value.y) &&
|
|
208
|
+
value.x >= 0 &&
|
|
209
|
+
value.x <= 1 &&
|
|
210
|
+
value.y >= 0 &&
|
|
211
|
+
value.y <= 1
|
|
212
|
+
? value
|
|
213
|
+
: undefined;
|
|
214
|
+
}
|
|
215
|
+
function isAspectRatio(value) {
|
|
216
|
+
return typeof value === "string" && /^(?:\d+|\d*\.\d+)\s*\/\s*(?:\d+|\d*\.\d+)$/.test(value);
|
|
217
|
+
}
|
|
218
|
+
function safeHref(value) {
|
|
219
|
+
if (typeof value !== "string" || !value.trim())
|
|
220
|
+
return false;
|
|
221
|
+
try {
|
|
222
|
+
const url = new URL(value, "https://battery.local");
|
|
223
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export function createImagePackage(locale) {
|
|
230
|
+
const manifest = createImageManifest(locale);
|
|
231
|
+
return {
|
|
232
|
+
manifest,
|
|
233
|
+
stylesheets: [new URL("./image.css", import.meta.url).href],
|
|
234
|
+
defineElement: defineBlock(manifest, BatteryImage),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
export const imagePackage = createImagePackage("en");
|
|
238
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/blocks/image.ts"],"names":[],"mappings":"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"}
|
package/dist/define.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* defineBlock — the idempotent element-definition helper every BlockPackage
|
|
3
|
+
* uses. Guards double-registration (contract §1: defineElement is idempotent)
|
|
4
|
+
* and stamps identity onto the class for be-ready.
|
|
5
|
+
*/
|
|
6
|
+
import type { BlockManifest } from "@batterai/contract";
|
|
7
|
+
import type { BatteryBlockElement } from "./base-element";
|
|
8
|
+
export declare function defineBlock(manifest: BlockManifest, elementClass: typeof BatteryBlockElement): () => void;
|
|
9
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,wBAAgB,WAAW,CACzB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,OAAO,mBAAmB,GACvC,MAAM,IAAI,CAQZ"}
|
package/dist/define.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { tagFor } from "./tag.js";
|
|
2
|
+
export function defineBlock(manifest, elementClass) {
|
|
3
|
+
const tag = tagFor(manifest.type, manifest.version);
|
|
4
|
+
elementClass.blockType = manifest.type;
|
|
5
|
+
elementClass.blockVersion = manifest.version;
|
|
6
|
+
return function defineElement() {
|
|
7
|
+
if (customElements.get(tag))
|
|
8
|
+
return; // idempotent
|
|
9
|
+
customElements.define(tag, elementClass);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,WAAW,CACzB,QAAuB,EACvB,YAAwC;IAExC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpD,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;IACvC,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC7C,OAAO,SAAS,aAAa;QAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,aAAa;QAClD,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,YAAmD,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BlockConfig, BlockElement, BlockManifest, BlockPackage } from "@batterai/contract";
|
|
2
|
+
export type HtmlBlockRender = (config: BlockConfig) => string;
|
|
3
|
+
export type HtmlBlockPackageOptions = {
|
|
4
|
+
readonly manifest: BlockManifest;
|
|
5
|
+
readonly render: HtmlBlockRender;
|
|
6
|
+
readonly stylesheets: readonly string[];
|
|
7
|
+
readonly renderMode?: "light" | "shadow";
|
|
8
|
+
readonly connect?: (element: BlockElement) => void | (() => void);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Creates the browser custom element and public SSR adapter from one pure HTML
|
|
12
|
+
* render function. This is the canonical factory for framework-neutral blocks:
|
|
13
|
+
* there is no second editor/public renderer to drift.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createHtmlBlockPackage(options: HtmlBlockPackageOptions): BlockPackage;
|
|
16
|
+
//# sourceMappingURL=html-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-package.d.ts","sourceRoot":"","sources":["../src/html-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIjG,MAAM,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC;AAE9D,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;CACnE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAoGrF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { BE_EDIT, BE_INTENT, BE_READY } from "@batterai/contract";
|
|
2
|
+
import { tagFor } from "./tag.js";
|
|
3
|
+
/**
|
|
4
|
+
* Creates the browser custom element and public SSR adapter from one pure HTML
|
|
5
|
+
* render function. This is the canonical factory for framework-neutral blocks:
|
|
6
|
+
* there is no second editor/public renderer to drift.
|
|
7
|
+
*/
|
|
8
|
+
export function createHtmlBlockPackage(options) {
|
|
9
|
+
const { manifest, render, connect, stylesheets } = options;
|
|
10
|
+
const renderMode = options.renderMode ?? "light";
|
|
11
|
+
const tag = tagFor(manifest.type, manifest.version);
|
|
12
|
+
return {
|
|
13
|
+
manifest,
|
|
14
|
+
stylesheets,
|
|
15
|
+
renderMode,
|
|
16
|
+
renderToDSD: render,
|
|
17
|
+
defineElement() {
|
|
18
|
+
if (customElements.get(tag))
|
|
19
|
+
return;
|
|
20
|
+
class HtmlBlockElement extends HTMLElement {
|
|
21
|
+
#config = null;
|
|
22
|
+
#disconnect;
|
|
23
|
+
#root;
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
this.#root = renderMode === "shadow" ? this.attachShadow({ mode: "open" }) : this;
|
|
27
|
+
}
|
|
28
|
+
get config() {
|
|
29
|
+
return this.#config;
|
|
30
|
+
}
|
|
31
|
+
set config(value) {
|
|
32
|
+
this.#config = value;
|
|
33
|
+
this.#render();
|
|
34
|
+
}
|
|
35
|
+
connectedCallback() {
|
|
36
|
+
const attribute = this.getAttribute("config");
|
|
37
|
+
if (!this.#config && attribute) {
|
|
38
|
+
try {
|
|
39
|
+
this.#config = JSON.parse(attribute);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
this.#config = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
this.#render();
|
|
46
|
+
const disconnect = connect?.(this);
|
|
47
|
+
this.#disconnect = typeof disconnect === "function" ? disconnect : undefined;
|
|
48
|
+
this.dispatchEvent(new CustomEvent(BE_READY, {
|
|
49
|
+
bubbles: true,
|
|
50
|
+
composed: true,
|
|
51
|
+
detail: { type: manifest.type, version: manifest.version },
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
disconnectedCallback() {
|
|
55
|
+
this.#disconnect?.();
|
|
56
|
+
this.#disconnect = undefined;
|
|
57
|
+
}
|
|
58
|
+
focusRegion(regionId) {
|
|
59
|
+
const selector = manifest.editableRegions?.find((region) => region.regionId === regionId)?.target;
|
|
60
|
+
const target = selector ? this.#root.querySelector(selector) : null;
|
|
61
|
+
target?.focus();
|
|
62
|
+
}
|
|
63
|
+
#render() {
|
|
64
|
+
if (!this.#config)
|
|
65
|
+
return;
|
|
66
|
+
this.#root.innerHTML = render(this.#config);
|
|
67
|
+
if (!this.#config.context.editMode)
|
|
68
|
+
return;
|
|
69
|
+
for (const region of manifest.editableRegions ?? []) {
|
|
70
|
+
const target = this.#root.querySelector(region.target);
|
|
71
|
+
if (!target)
|
|
72
|
+
continue;
|
|
73
|
+
target.dataset.edit = region.regionId;
|
|
74
|
+
target.addEventListener("click", (event) => {
|
|
75
|
+
const mouse = event;
|
|
76
|
+
this.dispatchEvent(new CustomEvent(BE_INTENT, {
|
|
77
|
+
bubbles: true,
|
|
78
|
+
composed: true,
|
|
79
|
+
detail: {
|
|
80
|
+
action: "edit-region",
|
|
81
|
+
payload: {
|
|
82
|
+
field: region.field,
|
|
83
|
+
regionId: region.regionId,
|
|
84
|
+
clientX: mouse.clientX,
|
|
85
|
+
clientY: mouse.clientY,
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
}));
|
|
89
|
+
});
|
|
90
|
+
target.addEventListener("change", () => {
|
|
91
|
+
this.dispatchEvent(new CustomEvent(BE_EDIT, {
|
|
92
|
+
bubbles: true,
|
|
93
|
+
composed: true,
|
|
94
|
+
detail: { field: region.field, value: target.textContent ?? "" },
|
|
95
|
+
}));
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
customElements.define(tag, HtmlBlockElement);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=html-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-package.js","sourceRoot":"","sources":["../src/html-package.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type Locale, type MessageParams } from "@batterai/contract";
|
|
2
|
+
export declare const BLOCK_SDK_MESSAGES_EN: {
|
|
3
|
+
readonly "block.unconfigured": "missing config";
|
|
4
|
+
readonly "callout.field.title.label": "Title";
|
|
5
|
+
readonly "callout.field.body.label": "Body";
|
|
6
|
+
readonly "callout.manifest.label": "Callout";
|
|
7
|
+
readonly "callout.manifest.summary": "Title + body with an accent bar.";
|
|
8
|
+
readonly "callout.default.title": "New callout";
|
|
9
|
+
readonly "callout.default.body": "Write here...";
|
|
10
|
+
readonly "image.field.assetId.label": "Image";
|
|
11
|
+
readonly "image.field.alt.label": "Alt text";
|
|
12
|
+
readonly "image.field.caption.label": "Caption";
|
|
13
|
+
readonly "image.field.view.label": "View";
|
|
14
|
+
readonly "image.field.view.single": "Single image";
|
|
15
|
+
readonly "image.field.view.carousel": "Carousel";
|
|
16
|
+
readonly "image.field.view.grid": "Grid";
|
|
17
|
+
readonly "image.field.sizes.label": "Sizes";
|
|
18
|
+
readonly "image.field.sizes.help": "The HTML sizes attribute for responsive loading.";
|
|
19
|
+
readonly "image.manifest.label": "Image";
|
|
20
|
+
readonly "image.manifest.summary": "Responsive image from the media library, with bindable caption.";
|
|
21
|
+
readonly "image.missing": "image unavailable: {assetId}";
|
|
22
|
+
readonly "image.empty": "No image selected yet.";
|
|
23
|
+
readonly "form.field.title.label": "Title";
|
|
24
|
+
readonly "form.field.fieldsJson.label": "Fields (JSON)";
|
|
25
|
+
readonly "form.field.fieldsJson.help": "For example [{\"name\":\"message\",\"label\":\"Message\",\"required\":true,\"multiline\":true}]";
|
|
26
|
+
readonly "form.field.submitLabel.label": "Submit button";
|
|
27
|
+
readonly "form.field.successMessage.label": "Success message";
|
|
28
|
+
readonly "form.field.action.label": "Action endpoint";
|
|
29
|
+
readonly "form.field.formId.label": "Form id";
|
|
30
|
+
readonly "form.manifest.label": "Form";
|
|
31
|
+
readonly "form.manifest.summary": "Form that posts to a host action endpoint; the host routes to HostApi.mutate.";
|
|
32
|
+
readonly "form.default.submitLabel": "Submit";
|
|
33
|
+
readonly "form.default.successMessage": "Thanks, your submission has been processed.";
|
|
34
|
+
readonly "form.parse.missing": "fieldsJson is missing";
|
|
35
|
+
readonly "form.parse.list": "fieldsJson must be a list";
|
|
36
|
+
readonly "form.parse.field": "each field needs a name and label";
|
|
37
|
+
readonly "form.parse.invalidJson": "fieldsJson is not valid JSON";
|
|
38
|
+
readonly "form.validation.required": "{label} is required";
|
|
39
|
+
readonly "form.status.processed": "Processed.";
|
|
40
|
+
readonly "form.status.pending": "Sending...";
|
|
41
|
+
readonly "form.status.connectionFailed": "Submit failed. Check the connection and try again.";
|
|
42
|
+
readonly "form.config.invalid": "form misconfigured: {message}";
|
|
43
|
+
};
|
|
44
|
+
export declare const BLOCK_SDK_MESSAGES_NL: {
|
|
45
|
+
readonly "block.unconfigured": "geen config";
|
|
46
|
+
readonly "callout.field.title.label": "Titel";
|
|
47
|
+
readonly "callout.field.body.label": "Tekst";
|
|
48
|
+
readonly "callout.manifest.label": "Callout";
|
|
49
|
+
readonly "callout.manifest.summary": "Titel + tekst met een accentbalk.";
|
|
50
|
+
readonly "callout.default.title": "Nieuwe callout";
|
|
51
|
+
readonly "callout.default.body": "Schrijf hier...";
|
|
52
|
+
readonly "image.field.assetId.label": "Afbeelding";
|
|
53
|
+
readonly "image.field.alt.label": "Alt-tekst";
|
|
54
|
+
readonly "image.field.caption.label": "Bijschrift";
|
|
55
|
+
readonly "image.field.view.label": "Weergave";
|
|
56
|
+
readonly "image.field.view.single": "Enkele afbeelding";
|
|
57
|
+
readonly "image.field.view.carousel": "Carousel";
|
|
58
|
+
readonly "image.field.view.grid": "Grid";
|
|
59
|
+
readonly "image.field.sizes.label": "Sizes";
|
|
60
|
+
readonly "image.field.sizes.help": "Het HTML sizes-attribuut voor responsive laden.";
|
|
61
|
+
readonly "image.manifest.label": "Afbeelding";
|
|
62
|
+
readonly "image.manifest.summary": "Responsive afbeelding uit de mediabibliotheek, met bindbaar bijschrift.";
|
|
63
|
+
readonly "image.missing": "afbeelding niet beschikbaar: {assetId}";
|
|
64
|
+
readonly "image.empty": "Nog geen afbeelding gekozen.";
|
|
65
|
+
readonly "form.field.title.label": "Titel";
|
|
66
|
+
readonly "form.field.fieldsJson.label": "Velden (JSON)";
|
|
67
|
+
readonly "form.field.fieldsJson.help": "Bijv. [{\"name\":\"bericht\",\"label\":\"Bericht\",\"required\":true,\"multiline\":true}]";
|
|
68
|
+
readonly "form.field.submitLabel.label": "Verstuurknop";
|
|
69
|
+
readonly "form.field.successMessage.label": "Succesmelding";
|
|
70
|
+
readonly "form.field.action.label": "Actie-endpoint";
|
|
71
|
+
readonly "form.field.formId.label": "Formulier-id";
|
|
72
|
+
readonly "form.manifest.label": "Formulier";
|
|
73
|
+
readonly "form.manifest.summary": "Formulier dat naar een host action-endpoint post; de host routeert naar HostApi.mutate.";
|
|
74
|
+
readonly "form.default.submitLabel": "Versturen";
|
|
75
|
+
readonly "form.default.successMessage": "Bedankt, je inzending is verwerkt.";
|
|
76
|
+
readonly "form.parse.missing": "fieldsJson ontbreekt";
|
|
77
|
+
readonly "form.parse.list": "fieldsJson moet een lijst zijn";
|
|
78
|
+
readonly "form.parse.field": "elk veld heeft een name en label nodig";
|
|
79
|
+
readonly "form.parse.invalidJson": "fieldsJson is geen geldige JSON";
|
|
80
|
+
readonly "form.validation.required": "{label} is verplicht";
|
|
81
|
+
readonly "form.status.processed": "Verwerkt.";
|
|
82
|
+
readonly "form.status.pending": "Bezig...";
|
|
83
|
+
readonly "form.status.connectionFailed": "Versturen mislukt. Controleer de verbinding en probeer opnieuw.";
|
|
84
|
+
readonly "form.config.invalid": "formulier verkeerd geconfigureerd: {message}";
|
|
85
|
+
};
|
|
86
|
+
export type BlockSdkMessageKey = keyof typeof BLOCK_SDK_MESSAGES_EN;
|
|
87
|
+
export declare function blockSdkMessage(locale: Locale | string | undefined, key: BlockSdkMessageKey, params?: MessageParams): string;
|
|
88
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,MAAM,EAAuB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCC,CAAC;AAEpC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCqC,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAOpE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACnC,GAAG,EAAE,kBAAkB,EACvB,MAAM,CAAC,EAAE,aAAa,GACrB,MAAM,CAER"}
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { resolveMessage } from "@batterai/contract";
|
|
2
|
+
export const BLOCK_SDK_MESSAGES_EN = {
|
|
3
|
+
"block.unconfigured": "missing config",
|
|
4
|
+
"callout.field.title.label": "Title",
|
|
5
|
+
"callout.field.body.label": "Body",
|
|
6
|
+
"callout.manifest.label": "Callout",
|
|
7
|
+
"callout.manifest.summary": "Title + body with an accent bar.",
|
|
8
|
+
"callout.default.title": "New callout",
|
|
9
|
+
"callout.default.body": "Write here...",
|
|
10
|
+
"image.field.assetId.label": "Image",
|
|
11
|
+
"image.field.alt.label": "Alt text",
|
|
12
|
+
"image.field.caption.label": "Caption",
|
|
13
|
+
"image.field.view.label": "View",
|
|
14
|
+
"image.field.view.single": "Single image",
|
|
15
|
+
"image.field.view.carousel": "Carousel",
|
|
16
|
+
"image.field.view.grid": "Grid",
|
|
17
|
+
"image.field.sizes.label": "Sizes",
|
|
18
|
+
"image.field.sizes.help": "The HTML sizes attribute for responsive loading.",
|
|
19
|
+
"image.manifest.label": "Image",
|
|
20
|
+
"image.manifest.summary": "Responsive image from the media library, with bindable caption.",
|
|
21
|
+
"image.missing": "image unavailable: {assetId}",
|
|
22
|
+
"image.empty": "No image selected yet.",
|
|
23
|
+
"form.field.title.label": "Title",
|
|
24
|
+
"form.field.fieldsJson.label": "Fields (JSON)",
|
|
25
|
+
"form.field.fieldsJson.help": 'For example [{"name":"message","label":"Message","required":true,"multiline":true}]',
|
|
26
|
+
"form.field.submitLabel.label": "Submit button",
|
|
27
|
+
"form.field.successMessage.label": "Success message",
|
|
28
|
+
"form.field.action.label": "Action endpoint",
|
|
29
|
+
"form.field.formId.label": "Form id",
|
|
30
|
+
"form.manifest.label": "Form",
|
|
31
|
+
"form.manifest.summary": "Form that posts to a host action endpoint; the host routes to HostApi.mutate.",
|
|
32
|
+
"form.default.submitLabel": "Submit",
|
|
33
|
+
"form.default.successMessage": "Thanks, your submission has been processed.",
|
|
34
|
+
"form.parse.missing": "fieldsJson is missing",
|
|
35
|
+
"form.parse.list": "fieldsJson must be a list",
|
|
36
|
+
"form.parse.field": "each field needs a name and label",
|
|
37
|
+
"form.parse.invalidJson": "fieldsJson is not valid JSON",
|
|
38
|
+
"form.validation.required": "{label} is required",
|
|
39
|
+
"form.status.processed": "Processed.",
|
|
40
|
+
"form.status.pending": "Sending...",
|
|
41
|
+
"form.status.connectionFailed": "Submit failed. Check the connection and try again.",
|
|
42
|
+
"form.config.invalid": "form misconfigured: {message}",
|
|
43
|
+
};
|
|
44
|
+
export const BLOCK_SDK_MESSAGES_NL = {
|
|
45
|
+
"block.unconfigured": "geen config",
|
|
46
|
+
"callout.field.title.label": "Titel",
|
|
47
|
+
"callout.field.body.label": "Tekst",
|
|
48
|
+
"callout.manifest.label": "Callout",
|
|
49
|
+
"callout.manifest.summary": "Titel + tekst met een accentbalk.",
|
|
50
|
+
"callout.default.title": "Nieuwe callout",
|
|
51
|
+
"callout.default.body": "Schrijf hier...",
|
|
52
|
+
"image.field.assetId.label": "Afbeelding",
|
|
53
|
+
"image.field.alt.label": "Alt-tekst",
|
|
54
|
+
"image.field.caption.label": "Bijschrift",
|
|
55
|
+
"image.field.view.label": "Weergave",
|
|
56
|
+
"image.field.view.single": "Enkele afbeelding",
|
|
57
|
+
"image.field.view.carousel": "Carousel",
|
|
58
|
+
"image.field.view.grid": "Grid",
|
|
59
|
+
"image.field.sizes.label": "Sizes",
|
|
60
|
+
"image.field.sizes.help": "Het HTML sizes-attribuut voor responsive laden.",
|
|
61
|
+
"image.manifest.label": "Afbeelding",
|
|
62
|
+
"image.manifest.summary": "Responsive afbeelding uit de mediabibliotheek, met bindbaar bijschrift.",
|
|
63
|
+
"image.missing": "afbeelding niet beschikbaar: {assetId}",
|
|
64
|
+
"image.empty": "Nog geen afbeelding gekozen.",
|
|
65
|
+
"form.field.title.label": "Titel",
|
|
66
|
+
"form.field.fieldsJson.label": "Velden (JSON)",
|
|
67
|
+
"form.field.fieldsJson.help": 'Bijv. [{"name":"bericht","label":"Bericht","required":true,"multiline":true}]',
|
|
68
|
+
"form.field.submitLabel.label": "Verstuurknop",
|
|
69
|
+
"form.field.successMessage.label": "Succesmelding",
|
|
70
|
+
"form.field.action.label": "Actie-endpoint",
|
|
71
|
+
"form.field.formId.label": "Formulier-id",
|
|
72
|
+
"form.manifest.label": "Formulier",
|
|
73
|
+
"form.manifest.summary": "Formulier dat naar een host action-endpoint post; de host routeert naar HostApi.mutate.",
|
|
74
|
+
"form.default.submitLabel": "Versturen",
|
|
75
|
+
"form.default.successMessage": "Bedankt, je inzending is verwerkt.",
|
|
76
|
+
"form.parse.missing": "fieldsJson ontbreekt",
|
|
77
|
+
"form.parse.list": "fieldsJson moet een lijst zijn",
|
|
78
|
+
"form.parse.field": "elk veld heeft een name en label nodig",
|
|
79
|
+
"form.parse.invalidJson": "fieldsJson is geen geldige JSON",
|
|
80
|
+
"form.validation.required": "{label} is verplicht",
|
|
81
|
+
"form.status.processed": "Verwerkt.",
|
|
82
|
+
"form.status.pending": "Bezig...",
|
|
83
|
+
"form.status.connectionFailed": "Versturen mislukt. Controleer de verbinding en probeer opnieuw.",
|
|
84
|
+
"form.config.invalid": "formulier verkeerd geconfigureerd: {message}",
|
|
85
|
+
};
|
|
86
|
+
const BLOCK_SDK_CATALOGS = {
|
|
87
|
+
en: BLOCK_SDK_MESSAGES_EN,
|
|
88
|
+
nl: BLOCK_SDK_MESSAGES_NL,
|
|
89
|
+
};
|
|
90
|
+
export function blockSdkMessage(locale, key, params) {
|
|
91
|
+
return resolveMessage(BLOCK_SDK_CATALOGS, locale ? String(locale) : "en", key, BLOCK_SDK_MESSAGES_EN[key], params);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @batterai/block-sdk — the framework-neutral block boundary (plan §4 L1).
|
|
3
|
+
* Lit-based base element + pure DSD server render + tag scheme + defineBlock.
|
|
4
|
+
* Imports contract + bind-core only (depcruise-enforced).
|
|
5
|
+
*/
|
|
6
|
+
export * from "./tag";
|
|
7
|
+
export * from "./base-element";
|
|
8
|
+
export * from "./define";
|
|
9
|
+
export * from "./i18n";
|
|
10
|
+
export * from "./render-to-dsd";
|
|
11
|
+
export * from "./html-package";
|
|
12
|
+
export * from "./blocks/callout";
|
|
13
|
+
export * from "./blocks/first-party";
|
|
14
|
+
export * from "./blocks/form";
|
|
15
|
+
export * from "./blocks/image";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|