@jamwidgets/core 0.3.4 → 0.5.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/README.md +12 -3
- package/dist/beacon.d.ts +2 -2
- package/dist/gallery-elements.d.ts +38 -0
- package/dist/gallery-elements.d.ts.map +1 -0
- package/dist/gallery-elements.js +354 -0
- package/dist/index.d.ts +94 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -3
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Note:** This repo is a read-only mirror. Source lives in a private monorepo.
|
|
4
4
|
> For issues/PRs, please open them here and we'll sync changes back.
|
|
5
5
|
|
|
6
|
-
Framework-agnostic API client, types, and headless controllers for [
|
|
6
|
+
Framework-agnostic API client, types, and headless controllers for [Jamwidgets](https://jamwidgets.com) widgets.
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
@@ -13,6 +13,15 @@ npm install @jamwidgets/core
|
|
|
13
13
|
|
|
14
14
|
This is the base package used by `@jamwidgets/astro`, `@jamwidgets/react`, and `@jamwidgets/solid`. Use it directly when building custom integrations or with any JavaScript framework.
|
|
15
15
|
|
|
16
|
+
## Gallery elements
|
|
17
|
+
|
|
18
|
+
```html
|
|
19
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@jamwidgets/core@0.5.0/dist/gallery-elements.js"></script>
|
|
20
|
+
<jamwidgets-gallery-index site-key="your-key" deep-link></jamwidgets-gallery-index>
|
|
21
|
+
<jamwidgets-gallery site-key="your-key" slug="field-notes" tag="portraits"></jamwidgets-gallery>
|
|
22
|
+
<jamwidgets-random-photo site-key="your-key" slug="field-notes" seed="homepage"></jamwidgets-random-photo>
|
|
23
|
+
```
|
|
24
|
+
|
|
16
25
|
## API Functions
|
|
17
26
|
|
|
18
27
|
### Comments
|
|
@@ -261,10 +270,10 @@ All types are exported for TypeScript users:
|
|
|
261
270
|
|
|
262
271
|
```ts
|
|
263
272
|
import type {
|
|
264
|
-
|
|
273
|
+
JamwidgetsConfig,
|
|
265
274
|
Comment,
|
|
266
275
|
ReactionCounts,
|
|
267
|
-
|
|
276
|
+
JamwidgetsPost,
|
|
268
277
|
Poll,
|
|
269
278
|
Announcement,
|
|
270
279
|
FeedbackType,
|
package/dist/beacon.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export interface TrackPageviewOptions extends Partial<
|
|
1
|
+
import { type JamwidgetsConfig } from "./index.js";
|
|
2
|
+
export interface TrackPageviewOptions extends Partial<JamwidgetsConfig> {
|
|
3
3
|
/** Path to record. Defaults to `location.pathname`. */
|
|
4
4
|
path?: string;
|
|
5
5
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
declare const HTMLElementBase: typeof HTMLElement;
|
|
2
|
+
declare abstract class GalleryElement extends HTMLElementBase {
|
|
3
|
+
protected root?: ShadowRoot;
|
|
4
|
+
private generation;
|
|
5
|
+
static get observedAttributes(): string[];
|
|
6
|
+
connectedCallback(): void;
|
|
7
|
+
disconnectedCallback(): void;
|
|
8
|
+
attributeChangedCallback(name: string, previous: string | null, value: string | null): void;
|
|
9
|
+
protected reload(): void;
|
|
10
|
+
protected advanceGeneration(): number;
|
|
11
|
+
protected get currentGeneration(): number;
|
|
12
|
+
protected isCurrent(generation: number): boolean;
|
|
13
|
+
protected get siteKey(): string;
|
|
14
|
+
protected get endpoint(): string | undefined;
|
|
15
|
+
protected abstract load(generation: number): Promise<void>;
|
|
16
|
+
frame(): HTMLElement;
|
|
17
|
+
protected loading(): void;
|
|
18
|
+
protected fail(error: unknown): void;
|
|
19
|
+
brand(frame: HTMLElement): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export declare class JamwidgetsGalleryElement extends GalleryElement {
|
|
22
|
+
protected load(generation: number): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare class JamwidgetsGalleryIndexElement extends GalleryElement {
|
|
25
|
+
private galleries;
|
|
26
|
+
private loaded;
|
|
27
|
+
private readonly navigate;
|
|
28
|
+
connectedCallback(): void;
|
|
29
|
+
disconnectedCallback(): void;
|
|
30
|
+
protected load(generation: number): Promise<void>;
|
|
31
|
+
private showIndex;
|
|
32
|
+
private showGallery;
|
|
33
|
+
}
|
|
34
|
+
export declare class JamwidgetsRandomPhotoElement extends GalleryElement {
|
|
35
|
+
protected load(generation: number): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=gallery-elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gallery-elements.d.ts","sourceRoot":"","sources":["../src/gallery-elements.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,eAAe,EAA2C,OAAO,WAAW,CAAC;AAkBnF,uBAAe,cAAe,SAAQ,eAAe;IACnD,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAK;IAEvB,MAAM,KAAK,kBAAkB,aAE5B;IAED,iBAAiB;IAIjB,oBAAoB;IAGpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAGpF,SAAS,CAAC,MAAM;IAKhB,SAAS,CAAC,iBAAiB;IAC3B,SAAS,KAAK,iBAAiB,WAA8B;IAC7D,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;IAEtC,SAAS,KAAK,OAAO,WAAkD;IACvE,SAAS,KAAK,QAAQ,uBAAyD;IAC/E,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,KAAK,IAAI,WAAW;IAOpB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW;CAS/B;AAyDD,qBAAa,wBAAyB,SAAQ,cAAc;cAC1C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC;AAED,qBAAa,6BAA8B,SAAQ,cAAc;IAC/D,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAUvB;IAEF,iBAAiB;IAIjB,oBAAoB;cAKJ,IAAI,CAAC,UAAU,EAAE,MAAM;YAazB,SAAS;YAYT,WAAW;CAsB1B;AAED,qBAAa,4BAA6B,SAAQ,cAAc;cAC9C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { fetchGalleries, fetchGallery, fetchRandomPhoto, fetchSiteConfig, POWERED_BY_LABEL, POWERED_BY_URL, } from "./index.js";
|
|
2
|
+
const styles = `
|
|
3
|
+
:host{display:block;color:inherit;font:inherit;--jw-gap:clamp(.55rem,1.5vw,1rem)}
|
|
4
|
+
*{box-sizing:border-box}.state{padding:2rem;text-align:center;color:color-mix(in srgb,currentColor 60%,transparent)}
|
|
5
|
+
.error{color:#b42318}.head{margin-bottom:1rem}.head h2{margin:0;font:700 clamp(1.4rem,3vw,2rem)/1.15 inherit}
|
|
6
|
+
.head p{margin:.4rem 0 0;color:color-mix(in srgb,currentColor 66%,transparent)}
|
|
7
|
+
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--jw-gap)}
|
|
8
|
+
figure{margin:0}.photo{position:relative;overflow:hidden;border:0;border-radius:.8rem;background:#eee;cursor:zoom-in;padding:0;width:100%}
|
|
9
|
+
.photo img,.cover img,.random img{display:block;width:100%;height:auto;aspect-ratio:var(--ratio,4/3);object-fit:var(--fit,cover)}
|
|
10
|
+
figcaption{padding:.45rem .15rem 0;font-size:.875rem;color:color-mix(in srgb,currentColor 72%,transparent)}
|
|
11
|
+
.tags{display:flex;gap:.4rem;overflow:auto;margin:0 0 1rem;padding:.1rem}.tag,.back{border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:999px;background:transparent;color:inherit;padding:.4rem .75rem;cursor:pointer}
|
|
12
|
+
.tag[aria-pressed=true]{background:currentColor;color:Canvas}.index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--jw-gap)}
|
|
13
|
+
.card{border:1px solid color-mix(in srgb,currentColor 15%,transparent);border-radius:1rem;overflow:hidden;background:transparent;color:inherit;text-align:left;padding:0;cursor:pointer}
|
|
14
|
+
.card-copy{display:block;padding:.85rem}.card strong{display:block;font-size:1.05rem}.card small{display:block;margin-top:.2rem;color:color-mix(in srgb,currentColor 60%,transparent)}
|
|
15
|
+
dialog{border:0;border-radius:1rem;padding:0;max-width:min(94vw,72rem);max-height:92vh;background:#111;color:#fff}dialog::backdrop{background:#000b}
|
|
16
|
+
dialog img{display:block;max-width:92vw;max-height:84vh;width:auto;height:auto}.close{position:absolute;right:.6rem;top:.6rem;width:2.4rem;height:2.4rem;border:0;border-radius:50%;background:#000a;color:#fff;font-size:1.5rem;cursor:pointer}
|
|
17
|
+
.viewer-caption{padding:.7rem 1rem}.powered{margin-top:.8rem;text-align:center;font-size:.75rem}.powered a{color:color-mix(in srgb,currentColor 55%,transparent);text-decoration:none}
|
|
18
|
+
`;
|
|
19
|
+
const HTMLElementBase = (globalThis.HTMLElement ?? class {
|
|
20
|
+
});
|
|
21
|
+
function image(photo, className) {
|
|
22
|
+
const img = document.createElement("img");
|
|
23
|
+
const variants = [...photo.variants].sort((a, b) => a.width - b.width);
|
|
24
|
+
const fallback = variants.at(-1);
|
|
25
|
+
img.src = fallback?.url ?? "";
|
|
26
|
+
img.srcset = variants.map((variant) => `${variant.url} ${variant.width}w`).join(", ");
|
|
27
|
+
img.sizes = "(min-width: 72rem) 25vw, (min-width: 40rem) 50vw, 100vw";
|
|
28
|
+
img.alt = photo.decorative ? "" : (photo.altText ?? "");
|
|
29
|
+
img.loading = "lazy";
|
|
30
|
+
img.decoding = "async";
|
|
31
|
+
if (photo.width)
|
|
32
|
+
img.width = photo.width;
|
|
33
|
+
if (photo.height)
|
|
34
|
+
img.height = photo.height;
|
|
35
|
+
if (className)
|
|
36
|
+
img.className = className;
|
|
37
|
+
return img;
|
|
38
|
+
}
|
|
39
|
+
class GalleryElement extends HTMLElementBase {
|
|
40
|
+
root;
|
|
41
|
+
generation = 0;
|
|
42
|
+
static get observedAttributes() {
|
|
43
|
+
return ["site-key", "endpoint", "slug", "tag", "seed", "deep-link"];
|
|
44
|
+
}
|
|
45
|
+
connectedCallback() {
|
|
46
|
+
this.root ??= this.attachShadow({ mode: "open" });
|
|
47
|
+
this.reload();
|
|
48
|
+
}
|
|
49
|
+
disconnectedCallback() {
|
|
50
|
+
this.generation += 1;
|
|
51
|
+
}
|
|
52
|
+
attributeChangedCallback(name, previous, value) {
|
|
53
|
+
if (previous !== value && this.isConnected && this.root)
|
|
54
|
+
this.reload();
|
|
55
|
+
}
|
|
56
|
+
reload() {
|
|
57
|
+
const generation = this.advanceGeneration();
|
|
58
|
+
this.loading();
|
|
59
|
+
void this.load(generation);
|
|
60
|
+
}
|
|
61
|
+
advanceGeneration() { return ++this.generation; }
|
|
62
|
+
get currentGeneration() { return this.generation; }
|
|
63
|
+
isCurrent(generation) { return this.isConnected && generation === this.generation; }
|
|
64
|
+
get siteKey() { return this.getAttribute("site-key") ?? ""; }
|
|
65
|
+
get endpoint() { return this.getAttribute("endpoint") ?? undefined; }
|
|
66
|
+
frame() {
|
|
67
|
+
const frame = document.createElement("section");
|
|
68
|
+
const style = document.createElement("style");
|
|
69
|
+
style.textContent = styles;
|
|
70
|
+
this.root?.replaceChildren(style, frame);
|
|
71
|
+
return frame;
|
|
72
|
+
}
|
|
73
|
+
loading() { const frame = this.frame(); frame.className = "state"; frame.textContent = "Loading gallery…"; }
|
|
74
|
+
fail(error) { const frame = this.frame(); frame.className = "state error"; frame.textContent = error instanceof Error ? error.message : "Gallery unavailable"; }
|
|
75
|
+
async brand(frame) {
|
|
76
|
+
try {
|
|
77
|
+
const config = await fetchSiteConfig({ siteKey: this.siteKey, endpoint: this.endpoint });
|
|
78
|
+
if (!config?.showPoweredBy || !frame.isConnected)
|
|
79
|
+
return;
|
|
80
|
+
const footer = document.createElement("footer");
|
|
81
|
+
footer.className = "powered";
|
|
82
|
+
const link = document.createElement("a");
|
|
83
|
+
link.href = POWERED_BY_URL;
|
|
84
|
+
link.target = "_blank";
|
|
85
|
+
link.rel = "noopener noreferrer";
|
|
86
|
+
link.textContent = POWERED_BY_LABEL;
|
|
87
|
+
footer.append(link);
|
|
88
|
+
frame.append(footer);
|
|
89
|
+
}
|
|
90
|
+
catch { /* Paid sites must never be branded on an uncertain response. */ }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async function fetchAllGalleries(siteKey, endpoint) {
|
|
94
|
+
const galleries = [];
|
|
95
|
+
let after;
|
|
96
|
+
do {
|
|
97
|
+
const page = await fetchGalleries({ siteKey, endpoint, limit: 100, after });
|
|
98
|
+
galleries.push(...page.galleries);
|
|
99
|
+
after = page.nextCursor;
|
|
100
|
+
} while (after);
|
|
101
|
+
return galleries;
|
|
102
|
+
}
|
|
103
|
+
function renderGallery(host, gallery, initialTag) {
|
|
104
|
+
const frame = host.frame();
|
|
105
|
+
const head = document.createElement("header");
|
|
106
|
+
head.className = "head";
|
|
107
|
+
const title = document.createElement("h2");
|
|
108
|
+
title.textContent = gallery.title;
|
|
109
|
+
head.append(title);
|
|
110
|
+
if (gallery.description) {
|
|
111
|
+
const description = document.createElement("p");
|
|
112
|
+
description.textContent = gallery.description;
|
|
113
|
+
head.append(description);
|
|
114
|
+
}
|
|
115
|
+
frame.append(head);
|
|
116
|
+
const allTags = [...new Set(gallery.photos.flatMap((photo) => photo.tags))].sort();
|
|
117
|
+
const grid = document.createElement("div");
|
|
118
|
+
grid.className = "grid";
|
|
119
|
+
let active = initialTag ?? "";
|
|
120
|
+
const draw = () => {
|
|
121
|
+
grid.replaceChildren();
|
|
122
|
+
for (const photo of gallery.photos.filter((item) => !active || item.tags.includes(active))) {
|
|
123
|
+
const figure = document.createElement("figure");
|
|
124
|
+
const button = document.createElement("button");
|
|
125
|
+
button.type = "button";
|
|
126
|
+
button.className = "photo";
|
|
127
|
+
button.append(image(photo));
|
|
128
|
+
button.addEventListener("click", () => openViewer(frame, photo));
|
|
129
|
+
figure.append(button);
|
|
130
|
+
if (photo.caption) {
|
|
131
|
+
const caption = document.createElement("figcaption");
|
|
132
|
+
caption.textContent = photo.caption;
|
|
133
|
+
figure.append(caption);
|
|
134
|
+
}
|
|
135
|
+
grid.append(figure);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
if (allTags.length) {
|
|
139
|
+
const tags = document.createElement("nav");
|
|
140
|
+
tags.className = "tags";
|
|
141
|
+
tags.setAttribute("aria-label", "Filter photos");
|
|
142
|
+
for (const value of ["", ...allTags]) {
|
|
143
|
+
const button = document.createElement("button");
|
|
144
|
+
button.type = "button";
|
|
145
|
+
button.className = "tag";
|
|
146
|
+
button.textContent = value || "All";
|
|
147
|
+
button.setAttribute("aria-pressed", String(active === value));
|
|
148
|
+
button.addEventListener("click", () => { active = value; for (const item of tags.querySelectorAll("button"))
|
|
149
|
+
item.setAttribute("aria-pressed", String(item === button)); draw(); });
|
|
150
|
+
tags.append(button);
|
|
151
|
+
}
|
|
152
|
+
frame.append(tags);
|
|
153
|
+
}
|
|
154
|
+
frame.append(grid);
|
|
155
|
+
draw();
|
|
156
|
+
return frame;
|
|
157
|
+
}
|
|
158
|
+
function openViewer(frame, photo) {
|
|
159
|
+
const dialog = document.createElement("dialog");
|
|
160
|
+
const close = document.createElement("button");
|
|
161
|
+
close.type = "button";
|
|
162
|
+
close.className = "close";
|
|
163
|
+
close.ariaLabel = "Close photo";
|
|
164
|
+
close.textContent = "×";
|
|
165
|
+
close.addEventListener("click", () => dialog.close());
|
|
166
|
+
const full = image(photo);
|
|
167
|
+
full.loading = "eager";
|
|
168
|
+
full.sizes = "100vw";
|
|
169
|
+
dialog.append(close, full);
|
|
170
|
+
if (photo.caption) {
|
|
171
|
+
const caption = document.createElement("div");
|
|
172
|
+
caption.className = "viewer-caption";
|
|
173
|
+
caption.textContent = photo.caption;
|
|
174
|
+
dialog.append(caption);
|
|
175
|
+
}
|
|
176
|
+
dialog.addEventListener("click", (event) => { if (event.target === dialog)
|
|
177
|
+
dialog.close(); });
|
|
178
|
+
dialog.addEventListener("close", () => dialog.remove());
|
|
179
|
+
frame.append(dialog);
|
|
180
|
+
dialog.showModal();
|
|
181
|
+
}
|
|
182
|
+
export class JamwidgetsGalleryElement extends GalleryElement {
|
|
183
|
+
async load(generation) {
|
|
184
|
+
try {
|
|
185
|
+
const slug = this.getAttribute("slug");
|
|
186
|
+
if (!slug || !this.siteKey)
|
|
187
|
+
throw new Error("site-key and slug are required");
|
|
188
|
+
const tag = this.getAttribute("tag") ?? undefined;
|
|
189
|
+
const gallery = await fetchGallery({ siteKey: this.siteKey, endpoint: this.endpoint, slug, tag });
|
|
190
|
+
if (!this.isCurrent(generation))
|
|
191
|
+
return;
|
|
192
|
+
if (!gallery)
|
|
193
|
+
throw new Error("Gallery not found");
|
|
194
|
+
const frame = renderGallery(this, gallery, tag);
|
|
195
|
+
await this.brand(frame);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (this.isCurrent(generation))
|
|
199
|
+
this.fail(error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
export class JamwidgetsGalleryIndexElement extends GalleryElement {
|
|
204
|
+
galleries = [];
|
|
205
|
+
loaded = false;
|
|
206
|
+
navigate = () => {
|
|
207
|
+
if (!this.hasAttribute("deep-link"))
|
|
208
|
+
return;
|
|
209
|
+
if (!this.loaded) {
|
|
210
|
+
this.reload();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const slug = new URL(location.href).searchParams.get("gallery");
|
|
214
|
+
const generation = this.advanceGeneration();
|
|
215
|
+
if (slug)
|
|
216
|
+
void this.showGallery(slug, this.galleries, false, generation);
|
|
217
|
+
else
|
|
218
|
+
void this.showIndex(this.galleries, generation);
|
|
219
|
+
};
|
|
220
|
+
connectedCallback() {
|
|
221
|
+
super.connectedCallback();
|
|
222
|
+
globalThis.addEventListener?.("popstate", this.navigate);
|
|
223
|
+
}
|
|
224
|
+
disconnectedCallback() {
|
|
225
|
+
globalThis.removeEventListener?.("popstate", this.navigate);
|
|
226
|
+
super.disconnectedCallback();
|
|
227
|
+
}
|
|
228
|
+
async load(generation) {
|
|
229
|
+
try {
|
|
230
|
+
this.loaded = false;
|
|
231
|
+
if (!this.siteKey)
|
|
232
|
+
throw new Error("site-key is required");
|
|
233
|
+
const galleries = await fetchAllGalleries(this.siteKey, this.endpoint);
|
|
234
|
+
if (!this.isCurrent(generation))
|
|
235
|
+
return;
|
|
236
|
+
this.galleries = galleries;
|
|
237
|
+
this.loaded = true;
|
|
238
|
+
const linked = this.hasAttribute("deep-link") ? new URL(location.href).searchParams.get("gallery") : null;
|
|
239
|
+
if (linked)
|
|
240
|
+
await this.showGallery(linked, galleries, false, generation);
|
|
241
|
+
else
|
|
242
|
+
await this.showIndex(galleries, generation);
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
if (this.isCurrent(generation))
|
|
246
|
+
this.fail(error);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
async showIndex(galleries, expectedGeneration = this.currentGeneration) {
|
|
250
|
+
if (!this.isCurrent(expectedGeneration))
|
|
251
|
+
return;
|
|
252
|
+
const frame = this.frame();
|
|
253
|
+
const index = document.createElement("div");
|
|
254
|
+
index.className = "index";
|
|
255
|
+
for (const gallery of galleries) {
|
|
256
|
+
const card = document.createElement("button");
|
|
257
|
+
card.type = "button";
|
|
258
|
+
card.className = "card";
|
|
259
|
+
if (gallery.cover) {
|
|
260
|
+
const cover = document.createElement("span");
|
|
261
|
+
cover.className = "cover";
|
|
262
|
+
cover.append(image(gallery.cover));
|
|
263
|
+
card.append(cover);
|
|
264
|
+
}
|
|
265
|
+
const copy = document.createElement("span");
|
|
266
|
+
copy.className = "card-copy";
|
|
267
|
+
const title = document.createElement("strong");
|
|
268
|
+
title.textContent = gallery.title;
|
|
269
|
+
const count = document.createElement("small");
|
|
270
|
+
count.textContent = `${gallery.photoCount} photo${gallery.photoCount === 1 ? "" : "s"}`;
|
|
271
|
+
copy.append(title, count);
|
|
272
|
+
card.append(copy);
|
|
273
|
+
card.addEventListener("click", () => void this.showGallery(gallery.slug, galleries, true, this.advanceGeneration()));
|
|
274
|
+
index.append(card);
|
|
275
|
+
}
|
|
276
|
+
frame.append(index);
|
|
277
|
+
await this.brand(frame);
|
|
278
|
+
}
|
|
279
|
+
async showGallery(slug, galleries, updateHistory, expectedGeneration) {
|
|
280
|
+
try {
|
|
281
|
+
const gallery = await fetchGallery({ siteKey: this.siteKey, endpoint: this.endpoint, slug });
|
|
282
|
+
if (expectedGeneration !== undefined && !this.isCurrent(expectedGeneration))
|
|
283
|
+
return;
|
|
284
|
+
if (!gallery) {
|
|
285
|
+
if (this.hasAttribute("deep-link")) {
|
|
286
|
+
const url = new URL(location.href);
|
|
287
|
+
url.searchParams.delete("gallery");
|
|
288
|
+
history.replaceState({}, "", url);
|
|
289
|
+
}
|
|
290
|
+
await this.showIndex(galleries, expectedGeneration);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
const frame = renderGallery(this, gallery);
|
|
294
|
+
const back = document.createElement("button");
|
|
295
|
+
back.type = "button";
|
|
296
|
+
back.className = "back";
|
|
297
|
+
back.textContent = "← All galleries";
|
|
298
|
+
back.addEventListener("click", () => { if (this.hasAttribute("deep-link")) {
|
|
299
|
+
const url = new URL(location.href);
|
|
300
|
+
url.searchParams.delete("gallery");
|
|
301
|
+
history.pushState({}, "", url);
|
|
302
|
+
} void this.showIndex(galleries, this.advanceGeneration()); });
|
|
303
|
+
frame.prepend(back);
|
|
304
|
+
if (updateHistory && this.hasAttribute("deep-link")) {
|
|
305
|
+
const url = new URL(location.href);
|
|
306
|
+
url.searchParams.set("gallery", slug);
|
|
307
|
+
history.pushState({}, "", url);
|
|
308
|
+
}
|
|
309
|
+
await this.brand(frame);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
if (expectedGeneration === undefined || this.isCurrent(expectedGeneration))
|
|
313
|
+
this.fail(error);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
export class JamwidgetsRandomPhotoElement extends GalleryElement {
|
|
318
|
+
async load(generation) {
|
|
319
|
+
try {
|
|
320
|
+
const slug = this.getAttribute("slug");
|
|
321
|
+
if (!slug || !this.siteKey)
|
|
322
|
+
throw new Error("site-key and slug are required");
|
|
323
|
+
const seed = this.getAttribute("seed") ?? globalThis.crypto?.randomUUID?.() ?? String(Date.now());
|
|
324
|
+
const photo = await fetchRandomPhoto({ siteKey: this.siteKey, endpoint: this.endpoint, slug, tag: this.getAttribute("tag") ?? undefined, seed });
|
|
325
|
+
if (!this.isCurrent(generation))
|
|
326
|
+
return;
|
|
327
|
+
if (!photo)
|
|
328
|
+
throw new Error("No matching photo");
|
|
329
|
+
const frame = this.frame();
|
|
330
|
+
const figure = document.createElement("figure");
|
|
331
|
+
figure.className = "random";
|
|
332
|
+
figure.append(image(photo));
|
|
333
|
+
if (photo.caption) {
|
|
334
|
+
const caption = document.createElement("figcaption");
|
|
335
|
+
caption.textContent = photo.caption;
|
|
336
|
+
figure.append(caption);
|
|
337
|
+
}
|
|
338
|
+
frame.append(figure);
|
|
339
|
+
await this.brand(frame);
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
if (this.isCurrent(generation))
|
|
343
|
+
this.fail(error);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (globalThis.customElements) {
|
|
348
|
+
if (!customElements.get("jamwidgets-gallery"))
|
|
349
|
+
customElements.define("jamwidgets-gallery", JamwidgetsGalleryElement);
|
|
350
|
+
if (!customElements.get("jamwidgets-gallery-index"))
|
|
351
|
+
customElements.define("jamwidgets-gallery-index", JamwidgetsGalleryIndexElement);
|
|
352
|
+
if (!customElements.get("jamwidgets-random-photo"))
|
|
353
|
+
customElements.define("jamwidgets-random-photo", JamwidgetsRandomPhotoElement);
|
|
354
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,14 +8,14 @@ export declare const DEFAULT_ENDPOINT = "https://jamwidgets.com";
|
|
|
8
8
|
export declare const API_PATH = "/api/v1";
|
|
9
9
|
export declare const VISITOR_STORAGE_KEY = "jamwidgets_visitor_id";
|
|
10
10
|
export { getAttributionHeaders, getSessionId } from "./attribution.js";
|
|
11
|
-
export interface
|
|
11
|
+
export interface JamwidgetsConfig {
|
|
12
12
|
/** Your site key (required) */
|
|
13
13
|
siteKey: string;
|
|
14
14
|
/** Base URL of your Jamwidgets instance (default: 'https://jamwidgets.com') */
|
|
15
15
|
endpoint?: string;
|
|
16
16
|
}
|
|
17
|
-
/** @deprecated Use
|
|
18
|
-
export type SeriphConfig =
|
|
17
|
+
/** @deprecated Use JamwidgetsConfig instead */
|
|
18
|
+
export type SeriphConfig = JamwidgetsConfig;
|
|
19
19
|
export interface Comment {
|
|
20
20
|
id: string;
|
|
21
21
|
pageId: string;
|
|
@@ -52,6 +52,42 @@ export interface JamwidgetsPost {
|
|
|
52
52
|
tags: string[];
|
|
53
53
|
publishedAt: string;
|
|
54
54
|
}
|
|
55
|
+
export interface GalleryPhotoVariant {
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
url: string;
|
|
59
|
+
fileSize: number;
|
|
60
|
+
}
|
|
61
|
+
export interface GalleryPhoto {
|
|
62
|
+
id: string;
|
|
63
|
+
filename: string;
|
|
64
|
+
width?: number;
|
|
65
|
+
height?: number;
|
|
66
|
+
variants: GalleryPhotoVariant[];
|
|
67
|
+
altText?: string;
|
|
68
|
+
decorative: boolean;
|
|
69
|
+
caption?: string;
|
|
70
|
+
tags: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface JamwidgetsGallery {
|
|
73
|
+
id: string;
|
|
74
|
+
title: string;
|
|
75
|
+
slug: string;
|
|
76
|
+
description?: string;
|
|
77
|
+
sortOrder: "manual" | "newest" | "oldest";
|
|
78
|
+
coverPhotoId?: string;
|
|
79
|
+
photos: GalleryPhoto[];
|
|
80
|
+
publishedAt?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface GallerySummary {
|
|
83
|
+
id: string;
|
|
84
|
+
title: string;
|
|
85
|
+
slug: string;
|
|
86
|
+
description?: string;
|
|
87
|
+
cover?: GalleryPhoto;
|
|
88
|
+
photoCount: number;
|
|
89
|
+
publishedAt: string;
|
|
90
|
+
}
|
|
55
91
|
/** @deprecated Use JamwidgetsPost instead */
|
|
56
92
|
export type SeriphPost = JamwidgetsPost;
|
|
57
93
|
/** Build full API URL from endpoint and path */
|
|
@@ -79,9 +115,9 @@ export declare function getConfigFromMeta(): {
|
|
|
79
115
|
endpoint?: string;
|
|
80
116
|
} | null;
|
|
81
117
|
/** Get site key from config, with fallback to meta tag */
|
|
82
|
-
export declare function getSiteKey(config:
|
|
118
|
+
export declare function getSiteKey(config: JamwidgetsConfig): string;
|
|
83
119
|
/** Resolve full config, merging props with meta tag fallbacks */
|
|
84
|
-
export declare function resolveConfig(config: Partial<
|
|
120
|
+
export declare function resolveConfig(config: Partial<JamwidgetsConfig>): JamwidgetsConfig;
|
|
85
121
|
/** Generate a random UUID v4 */
|
|
86
122
|
export declare function generateUUID(): string;
|
|
87
123
|
/**
|
|
@@ -99,29 +135,29 @@ export declare function getVisitorId(): string;
|
|
|
99
135
|
export interface SiteConfig {
|
|
100
136
|
name: string;
|
|
101
137
|
slug: string;
|
|
102
|
-
/**
|
|
103
|
-
|
|
138
|
+
/** True on Free; render the "Powered by Jamwidgets" attribution. */
|
|
139
|
+
showPoweredBy: boolean;
|
|
104
140
|
}
|
|
105
|
-
/** Where the
|
|
141
|
+
/** Where the powered-by footer links. */
|
|
106
142
|
export declare const POWERED_BY_URL = "https://jamwidgets.com/?utm_source=powered_by";
|
|
107
|
-
export declare const POWERED_BY_LABEL = "Powered by
|
|
143
|
+
export declare const POWERED_BY_LABEL = "Powered by Jamwidgets";
|
|
108
144
|
/**
|
|
109
145
|
* Fetch (and cache, per endpoint+key) the site config. Returns null on failure.
|
|
110
|
-
* Used by rendered widgets to decide whether to show the
|
|
146
|
+
* Used by rendered widgets to decide whether to show the powered-by footer.
|
|
111
147
|
*/
|
|
112
|
-
export declare function fetchSiteConfig(options:
|
|
113
|
-
export interface SubmitFormOptions extends
|
|
148
|
+
export declare function fetchSiteConfig(options: JamwidgetsConfig): Promise<SiteConfig | null>;
|
|
149
|
+
export interface SubmitFormOptions extends JamwidgetsConfig {
|
|
114
150
|
formSlug: string;
|
|
115
151
|
data: Record<string, unknown>;
|
|
116
152
|
/** Form load timestamp for spam detection (auto-set if not provided) */
|
|
117
153
|
formLoadTime?: number;
|
|
118
154
|
}
|
|
119
155
|
export declare function submitForm(options: SubmitFormOptions): Promise<FormSubmitResponse>;
|
|
120
|
-
export interface FetchCommentsOptions extends
|
|
156
|
+
export interface FetchCommentsOptions extends JamwidgetsConfig {
|
|
121
157
|
pageId: string;
|
|
122
158
|
}
|
|
123
159
|
export declare function fetchComments(options: FetchCommentsOptions): Promise<Comment[]>;
|
|
124
|
-
export interface PostCommentOptions extends
|
|
160
|
+
export interface PostCommentOptions extends JamwidgetsConfig {
|
|
125
161
|
pageId: string;
|
|
126
162
|
authorName: string;
|
|
127
163
|
authorEmail?: string;
|
|
@@ -129,7 +165,7 @@ export interface PostCommentOptions extends JamWidgetsConfig {
|
|
|
129
165
|
parentId?: string;
|
|
130
166
|
}
|
|
131
167
|
export declare function postComment(options: PostCommentOptions): Promise<Comment>;
|
|
132
|
-
export interface FetchReactionsOptions extends
|
|
168
|
+
export interface FetchReactionsOptions extends JamwidgetsConfig {
|
|
133
169
|
pageId: string;
|
|
134
170
|
}
|
|
135
171
|
export interface FetchReactionsResponse extends ReactionCounts {
|
|
@@ -137,7 +173,7 @@ export interface FetchReactionsResponse extends ReactionCounts {
|
|
|
137
173
|
userReactions: string[];
|
|
138
174
|
}
|
|
139
175
|
export declare function fetchReactions(options: FetchReactionsOptions): Promise<FetchReactionsResponse>;
|
|
140
|
-
export interface AddReactionOptions extends
|
|
176
|
+
export interface AddReactionOptions extends JamwidgetsConfig {
|
|
141
177
|
pageId: string;
|
|
142
178
|
reactionType?: string;
|
|
143
179
|
}
|
|
@@ -145,7 +181,7 @@ export declare function addReaction(options: AddReactionOptions): Promise<{
|
|
|
145
181
|
reactionType: string;
|
|
146
182
|
count: number;
|
|
147
183
|
}>;
|
|
148
|
-
export interface RemoveReactionOptions extends
|
|
184
|
+
export interface RemoveReactionOptions extends JamwidgetsConfig {
|
|
149
185
|
pageId: string;
|
|
150
186
|
reactionType?: string;
|
|
151
187
|
}
|
|
@@ -153,23 +189,45 @@ export declare function removeReaction(options: RemoveReactionOptions): Promise<
|
|
|
153
189
|
reactionType: string;
|
|
154
190
|
count: number;
|
|
155
191
|
}>;
|
|
156
|
-
export interface SubscribeOptions extends
|
|
192
|
+
export interface SubscribeOptions extends JamwidgetsConfig {
|
|
157
193
|
email: string;
|
|
158
194
|
}
|
|
159
195
|
export declare function subscribe(options: SubscribeOptions): Promise<SubscribeResponse>;
|
|
160
|
-
export interface FetchPostsOptions extends
|
|
196
|
+
export interface FetchPostsOptions extends JamwidgetsConfig {
|
|
161
197
|
/** Filter posts by tag */
|
|
162
198
|
tag?: string;
|
|
163
199
|
/** Maximum number of posts to fetch (default: 500) */
|
|
164
200
|
limit?: number;
|
|
165
201
|
}
|
|
166
202
|
export declare function fetchPosts(options: FetchPostsOptions): Promise<JamwidgetsPost[]>;
|
|
167
|
-
export interface FetchPostOptions extends
|
|
203
|
+
export interface FetchPostOptions extends JamwidgetsConfig {
|
|
168
204
|
/** The post slug to fetch */
|
|
169
205
|
slug: string;
|
|
170
206
|
}
|
|
171
207
|
export declare function fetchPost(options: FetchPostOptions): Promise<JamwidgetsPost | null>;
|
|
172
|
-
export interface
|
|
208
|
+
export interface FetchGalleriesOptions extends JamwidgetsConfig {
|
|
209
|
+
after?: string;
|
|
210
|
+
limit?: number;
|
|
211
|
+
/** Site origin sent by build-time loaders for allowed-origin validation. */
|
|
212
|
+
origin?: string;
|
|
213
|
+
}
|
|
214
|
+
export interface GalleryPage {
|
|
215
|
+
galleries: GallerySummary[];
|
|
216
|
+
nextCursor?: string;
|
|
217
|
+
}
|
|
218
|
+
export declare function fetchGalleries(options: FetchGalleriesOptions): Promise<GalleryPage>;
|
|
219
|
+
export interface FetchGalleryOptions extends JamwidgetsConfig {
|
|
220
|
+
slug: string;
|
|
221
|
+
tag?: string;
|
|
222
|
+
/** Site origin sent by build-time loaders for allowed-origin validation. */
|
|
223
|
+
origin?: string;
|
|
224
|
+
}
|
|
225
|
+
export declare function fetchGallery(options: FetchGalleryOptions): Promise<JamwidgetsGallery | null>;
|
|
226
|
+
export interface FetchRandomPhotoOptions extends FetchGalleryOptions {
|
|
227
|
+
seed?: string;
|
|
228
|
+
}
|
|
229
|
+
export declare function fetchRandomPhoto(options: FetchRandomPhotoOptions): Promise<GalleryPhoto | null>;
|
|
230
|
+
export interface JoinWaitlistOptions extends JamwidgetsConfig {
|
|
173
231
|
email: string;
|
|
174
232
|
name?: string;
|
|
175
233
|
/** Where the signup came from (e.g., "homepage", "blog") */
|
|
@@ -182,7 +240,7 @@ export interface JoinWaitlistResponse {
|
|
|
182
240
|
position?: number;
|
|
183
241
|
}
|
|
184
242
|
export declare function joinWaitlist(options: JoinWaitlistOptions): Promise<JoinWaitlistResponse>;
|
|
185
|
-
export interface ViewCountsOptions extends
|
|
243
|
+
export interface ViewCountsOptions extends JamwidgetsConfig {
|
|
186
244
|
pageId: string;
|
|
187
245
|
}
|
|
188
246
|
export interface ViewCounts {
|
|
@@ -196,7 +254,7 @@ export interface RecordViewResponse extends ViewCounts {
|
|
|
196
254
|
export declare function getViewCounts(options: ViewCountsOptions): Promise<ViewCounts>;
|
|
197
255
|
export declare function recordView(options: ViewCountsOptions): Promise<RecordViewResponse>;
|
|
198
256
|
export type FeedbackType = "bug" | "feature" | "general";
|
|
199
|
-
export interface SubmitFeedbackOptions extends
|
|
257
|
+
export interface SubmitFeedbackOptions extends JamwidgetsConfig {
|
|
200
258
|
type: FeedbackType;
|
|
201
259
|
content: string;
|
|
202
260
|
email?: string;
|
|
@@ -231,11 +289,11 @@ export interface PollWithResults extends Poll {
|
|
|
231
289
|
/** Options the current visitor has voted for */
|
|
232
290
|
userVotes?: string[];
|
|
233
291
|
}
|
|
234
|
-
export interface FetchPollOptions extends
|
|
292
|
+
export interface FetchPollOptions extends JamwidgetsConfig {
|
|
235
293
|
slug: string;
|
|
236
294
|
}
|
|
237
295
|
export declare function fetchPoll(options: FetchPollOptions): Promise<PollWithResults>;
|
|
238
|
-
export interface VotePollOptions extends
|
|
296
|
+
export interface VotePollOptions extends JamwidgetsConfig {
|
|
239
297
|
slug: string;
|
|
240
298
|
selectedOptions: string[];
|
|
241
299
|
}
|
|
@@ -254,10 +312,10 @@ export interface Announcement {
|
|
|
254
312
|
linkText?: string;
|
|
255
313
|
isDismissible: boolean;
|
|
256
314
|
}
|
|
257
|
-
export interface FetchAnnouncementsOptions extends
|
|
315
|
+
export interface FetchAnnouncementsOptions extends JamwidgetsConfig {
|
|
258
316
|
}
|
|
259
317
|
export declare function fetchAnnouncements(options: FetchAnnouncementsOptions): Promise<Announcement[]>;
|
|
260
|
-
export interface DismissAnnouncementOptions extends
|
|
318
|
+
export interface DismissAnnouncementOptions extends JamwidgetsConfig {
|
|
261
319
|
announcementId: number;
|
|
262
320
|
}
|
|
263
321
|
export declare function dismissAnnouncement(options: DismissAnnouncementOptions): Promise<void>;
|
|
@@ -312,7 +370,7 @@ export declare class SubscribeController {
|
|
|
312
370
|
private config;
|
|
313
371
|
private listeners;
|
|
314
372
|
private _state;
|
|
315
|
-
constructor(config:
|
|
373
|
+
constructor(config: JamwidgetsConfig);
|
|
316
374
|
/** Get current state */
|
|
317
375
|
getState(): SubscribeState;
|
|
318
376
|
/** Subscribe to state changes */
|
|
@@ -338,7 +396,7 @@ export declare class WaitlistController {
|
|
|
338
396
|
private config;
|
|
339
397
|
private listeners;
|
|
340
398
|
private _state;
|
|
341
|
-
constructor(config:
|
|
399
|
+
constructor(config: JamwidgetsConfig);
|
|
342
400
|
getState(): WaitlistState;
|
|
343
401
|
subscribe(listener: ControllerListener<WaitlistState>): () => void;
|
|
344
402
|
private notify;
|
|
@@ -359,7 +417,7 @@ export declare class FormController {
|
|
|
359
417
|
private listeners;
|
|
360
418
|
private loadTime;
|
|
361
419
|
private _state;
|
|
362
|
-
constructor(config:
|
|
420
|
+
constructor(config: JamwidgetsConfig, formSlug: string);
|
|
363
421
|
getState(): FormState;
|
|
364
422
|
subscribe(listener: ControllerListener<FormState>): () => void;
|
|
365
423
|
private notify;
|
|
@@ -375,7 +433,7 @@ export declare class ReactionsController {
|
|
|
375
433
|
private pageId;
|
|
376
434
|
private listeners;
|
|
377
435
|
private _state;
|
|
378
|
-
constructor(config:
|
|
436
|
+
constructor(config: JamwidgetsConfig, pageId: string);
|
|
379
437
|
getState(): ReactionsState;
|
|
380
438
|
subscribe(listener: ControllerListener<ReactionsState>): () => void;
|
|
381
439
|
private notify;
|
|
@@ -393,7 +451,7 @@ export declare class CommentsController {
|
|
|
393
451
|
private pageId;
|
|
394
452
|
private listeners;
|
|
395
453
|
private _state;
|
|
396
|
-
constructor(config:
|
|
454
|
+
constructor(config: JamwidgetsConfig, pageId: string);
|
|
397
455
|
getState(): CommentsState;
|
|
398
456
|
subscribe(listener: ControllerListener<CommentsState>): () => void;
|
|
399
457
|
private notify;
|
|
@@ -418,7 +476,7 @@ export declare class FeedbackController {
|
|
|
418
476
|
private config;
|
|
419
477
|
private listeners;
|
|
420
478
|
private _state;
|
|
421
|
-
constructor(config:
|
|
479
|
+
constructor(config: JamwidgetsConfig);
|
|
422
480
|
getState(): FeedbackState;
|
|
423
481
|
subscribe(listener: ControllerListener<FeedbackState>): () => void;
|
|
424
482
|
private notify;
|
|
@@ -443,7 +501,7 @@ export declare class PollController {
|
|
|
443
501
|
private slug;
|
|
444
502
|
private listeners;
|
|
445
503
|
private _state;
|
|
446
|
-
constructor(config:
|
|
504
|
+
constructor(config: JamwidgetsConfig, slug: string);
|
|
447
505
|
getState(): PollState;
|
|
448
506
|
subscribe(listener: ControllerListener<PollState>): () => void;
|
|
449
507
|
private notify;
|
|
@@ -469,7 +527,7 @@ export declare class AnnouncementsController {
|
|
|
469
527
|
private config;
|
|
470
528
|
private listeners;
|
|
471
529
|
private _state;
|
|
472
|
-
constructor(config:
|
|
530
|
+
constructor(config: JamwidgetsConfig);
|
|
473
531
|
getState(): AnnouncementsState;
|
|
474
532
|
/** Get visible (non-dismissed) announcements */
|
|
475
533
|
getVisibleAnnouncements(): Announcement[];
|
|
@@ -497,7 +555,7 @@ export declare class ViewCountsController {
|
|
|
497
555
|
private pageId;
|
|
498
556
|
private listeners;
|
|
499
557
|
private _state;
|
|
500
|
-
constructor(config:
|
|
558
|
+
constructor(config: JamwidgetsConfig, pageId: string);
|
|
501
559
|
getState(): ViewCountsState;
|
|
502
560
|
subscribe(listener: ControllerListener<ViewCountsState>): () => void;
|
|
503
561
|
private notify;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -145,13 +145,13 @@ function getHeaders(siteKey, path) {
|
|
|
145
145
|
"X-Seriph-Visitor": visitorId,
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
/** Where the
|
|
148
|
+
/** Where the powered-by footer links. */
|
|
149
149
|
export const POWERED_BY_URL = "https://jamwidgets.com/?utm_source=powered_by";
|
|
150
|
-
export const POWERED_BY_LABEL = "Powered by
|
|
150
|
+
export const POWERED_BY_LABEL = "Powered by Jamwidgets";
|
|
151
151
|
const siteConfigCache = new Map();
|
|
152
152
|
/**
|
|
153
153
|
* Fetch (and cache, per endpoint+key) the site config. Returns null on failure.
|
|
154
|
-
* Used by rendered widgets to decide whether to show the
|
|
154
|
+
* Used by rendered widgets to decide whether to show the powered-by footer.
|
|
155
155
|
*/
|
|
156
156
|
export async function fetchSiteConfig(options) {
|
|
157
157
|
const { endpoint } = options;
|
|
@@ -333,6 +333,60 @@ export async function fetchPost(options) {
|
|
|
333
333
|
const data = await response.json();
|
|
334
334
|
return data.public_post || data;
|
|
335
335
|
}
|
|
336
|
+
export async function fetchGalleries(options) {
|
|
337
|
+
const siteKey = getSiteKey(options);
|
|
338
|
+
const url = new URL(buildUrl(options.endpoint, "/galleries"));
|
|
339
|
+
url.searchParams.set("limit", String(options.limit ?? 100));
|
|
340
|
+
if (options.after)
|
|
341
|
+
url.searchParams.set("after", options.after);
|
|
342
|
+
const response = await fetch(url, {
|
|
343
|
+
headers: {
|
|
344
|
+
...getHeaders(siteKey),
|
|
345
|
+
...(options.origin ? { Origin: options.origin } : {}),
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
if (!response.ok)
|
|
349
|
+
throw new Error(`Failed to fetch galleries: ${response.status}`);
|
|
350
|
+
return response.json();
|
|
351
|
+
}
|
|
352
|
+
export async function fetchGallery(options) {
|
|
353
|
+
const siteKey = getSiteKey(options);
|
|
354
|
+
const url = new URL(buildUrl(options.endpoint, `/galleries/${encodeURIComponent(options.slug)}`));
|
|
355
|
+
if (options.tag)
|
|
356
|
+
url.searchParams.set("tag", options.tag);
|
|
357
|
+
const response = await fetch(url, {
|
|
358
|
+
headers: {
|
|
359
|
+
...getHeaders(siteKey),
|
|
360
|
+
...(options.origin ? { Origin: options.origin } : {}),
|
|
361
|
+
},
|
|
362
|
+
});
|
|
363
|
+
if (response.status === 404)
|
|
364
|
+
return null;
|
|
365
|
+
if (!response.ok)
|
|
366
|
+
throw new Error(`Failed to fetch gallery: ${response.status}`);
|
|
367
|
+
const data = await response.json();
|
|
368
|
+
return data.gallery ?? data;
|
|
369
|
+
}
|
|
370
|
+
export async function fetchRandomPhoto(options) {
|
|
371
|
+
const siteKey = getSiteKey(options);
|
|
372
|
+
const url = new URL(buildUrl(options.endpoint, `/galleries/${encodeURIComponent(options.slug)}/random`));
|
|
373
|
+
if (options.tag)
|
|
374
|
+
url.searchParams.set("tag", options.tag);
|
|
375
|
+
if (options.seed)
|
|
376
|
+
url.searchParams.set("seed", options.seed);
|
|
377
|
+
const response = await fetch(url, {
|
|
378
|
+
headers: {
|
|
379
|
+
...getHeaders(siteKey),
|
|
380
|
+
...(options.origin ? { Origin: options.origin } : {}),
|
|
381
|
+
},
|
|
382
|
+
});
|
|
383
|
+
if (response.status === 404)
|
|
384
|
+
return null;
|
|
385
|
+
if (!response.ok)
|
|
386
|
+
throw new Error(`Failed to fetch random photo: ${response.status}`);
|
|
387
|
+
const data = await response.json();
|
|
388
|
+
return data.gallery_photo ?? data.galleryPhoto ?? data;
|
|
389
|
+
}
|
|
336
390
|
export async function joinWaitlist(options) {
|
|
337
391
|
const { endpoint, email, name, source } = options;
|
|
338
392
|
const siteKey = getSiteKey(options);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jamwidgets/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Framework-agnostic API client and types for Jamwidgets",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
".": {
|
|
19
19
|
"types": "./dist/index.d.ts",
|
|
20
20
|
"import": "./dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./gallery-elements": {
|
|
23
|
+
"types": "./dist/gallery-elements.d.ts",
|
|
24
|
+
"import": "./dist/gallery-elements.js"
|
|
21
25
|
}
|
|
22
26
|
},
|
|
23
27
|
"files": [
|
|
@@ -34,7 +38,8 @@
|
|
|
34
38
|
"comments",
|
|
35
39
|
"reactions",
|
|
36
40
|
"subscribe",
|
|
37
|
-
"widgets"
|
|
41
|
+
"widgets",
|
|
42
|
+
"galleries"
|
|
38
43
|
],
|
|
39
44
|
"license": "MIT",
|
|
40
45
|
"devDependencies": {
|