@ydtb/public-capture 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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-present Your Digital Toolbox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # @ydtb/public-capture
2
+
3
+ Public Capture client and renderer package for YDTB hosted public pages and external embeds.
4
+
5
+ The package depends on `@ydtb/public-sdk` for shared public-surface primitives and will expose Capture-specific headless helpers, hooks, and a default renderer.
6
+
7
+ Status: `0.1.x` pre-1.0 public beta line.
@@ -0,0 +1,73 @@
1
+ import type { YdtbPublicClient, YdtbPublicSource } from "@ydtb/public-sdk";
2
+ export type CaptureSurface = "form" | "quiz";
3
+ export type CaptureLookup = {
4
+ slug: string;
5
+ publishId?: never;
6
+ } | {
7
+ publishId: string;
8
+ slug?: never;
9
+ };
10
+ export type CapturePublicSource = Extract<YdtbPublicSource, "hosted" | "embed" | "external" | "builder"> | "quiz" | (string & {});
11
+ export type CaptureAnswerValue = string | number | boolean | null | string[];
12
+ export interface CapturePublicPackageInfo {
13
+ packageName: "@ydtb/public-capture";
14
+ version: "0.1.0";
15
+ status: "pre-1.0";
16
+ }
17
+ export interface CaptureFieldDefinition {
18
+ id: string;
19
+ key: string;
20
+ label: string;
21
+ type: string;
22
+ required: boolean;
23
+ options?: string[];
24
+ metadata?: Record<string, unknown>;
25
+ hidden?: boolean;
26
+ visibleWhen?: unknown;
27
+ validationRules?: unknown[];
28
+ }
29
+ export interface CapturePublicForm {
30
+ id: string;
31
+ publicationId: string;
32
+ title: string;
33
+ slug: string;
34
+ fields: CaptureFieldDefinition[];
35
+ document?: unknown;
36
+ security?: {
37
+ minSubmitSeconds?: number;
38
+ honeypotFieldName?: string;
39
+ repeatPolicy?: "allow" | "block" | "update" | string;
40
+ };
41
+ }
42
+ export interface CaptureSubmitInput {
43
+ answers: Record<string, CaptureAnswerValue>;
44
+ respondentKey?: string;
45
+ startedAt?: string;
46
+ honeypot?: string;
47
+ source?: CapturePublicSource;
48
+ }
49
+ export interface CaptureSubmitResult {
50
+ ok: true;
51
+ submissionId: string;
52
+ updated?: boolean;
53
+ outcome?: unknown;
54
+ }
55
+ export interface CaptureClientOptions {
56
+ publicClient: YdtbPublicClient;
57
+ lookup: CaptureLookup;
58
+ source?: CapturePublicSource;
59
+ }
60
+ export interface CaptureClient {
61
+ publicClient: YdtbPublicClient;
62
+ lookup: CaptureLookup;
63
+ source: CapturePublicSource;
64
+ surface: "capture";
65
+ getForm(): Promise<CapturePublicForm>;
66
+ submit(input: CaptureSubmitInput): Promise<CaptureSubmitResult>;
67
+ }
68
+ export declare const capturePublicPackage: CapturePublicPackageInfo;
69
+ export declare function createCaptureClient(options: CaptureClientOptions): CaptureClient;
70
+ export declare function resolveCaptureStorageKey(lookup: CaptureLookup): string;
71
+ export { createYdtbPublicClient, getOrCreateRespondentKey, normalizePublicError, YdtbPublicError } from "@ydtb/public-sdk";
72
+ export type { YdtbPublicClient, YdtbPublicClientOptions, YdtbPublicErrorDetails } from "@ydtb/public-sdk";
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAE1E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAA;AAC5C,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AACrG,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AACjI,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CAAA;AAE5E,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,sBAAsB,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,sBAAsB,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;KACrD,CAAA;CACF;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAA;IACR,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,gBAAgB,CAAA;IAC9B,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,CAAC,EAAE,mBAAmB,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,gBAAgB,CAAA;IAC9B,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAChE;AAED,eAAO,MAAM,oBAAoB,EAAE,wBAIlC,CAAA;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA0BhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEtE;AAED,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC1H,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,37 @@
1
+ export const capturePublicPackage = {
2
+ packageName: "@ydtb/public-capture",
3
+ version: "0.1.0",
4
+ status: "pre-1.0",
5
+ };
6
+ export function createCaptureClient(options) {
7
+ const source = options.source ?? options.publicClient.source;
8
+ return {
9
+ publicClient: options.publicClient,
10
+ lookup: options.lookup,
11
+ source,
12
+ surface: "capture",
13
+ getForm() {
14
+ return options.publicClient.callProcedure({
15
+ routeId: "capture",
16
+ procedurePath: "public/getForm",
17
+ input: options.lookup,
18
+ });
19
+ },
20
+ submit(input) {
21
+ return options.publicClient.callProcedure({
22
+ routeId: "capture",
23
+ procedurePath: "public/submit",
24
+ input: {
25
+ ...options.lookup,
26
+ ...input,
27
+ source: input.source ?? source,
28
+ },
29
+ });
30
+ },
31
+ };
32
+ }
33
+ export function resolveCaptureStorageKey(lookup) {
34
+ return "publishId" in lookup ? `capture:publish:${lookup.publishId}` : `capture:slug:${lookup.slug}`;
35
+ }
36
+ export { createYdtbPublicClient, getOrCreateRespondentKey, normalizePublicError, YdtbPublicError } from "@ydtb/public-sdk";
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAsEA,MAAM,CAAC,MAAM,oBAAoB,GAA6B;IAC5D,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE,SAAS;CAClB,CAAA;AAED,MAAM,UAAU,mBAAmB,CAAC,OAA6B;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAA;IAC5D,OAAO;QACL,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM;QACN,OAAO,EAAE,SAAS;QAClB,OAAO;YACL,OAAO,OAAO,CAAC,YAAY,CAAC,aAAa,CAAoB;gBAC3D,OAAO,EAAE,SAAS;gBAClB,aAAa,EAAE,gBAAgB;gBAC/B,KAAK,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,CAAC,KAAyB;YAC9B,OAAO,OAAO,CAAC,YAAY,CAAC,aAAa,CAAsB;gBAC7D,OAAO,EAAE,SAAS;gBAClB,aAAa,EAAE,eAAe;gBAC9B,KAAK,EAAE;oBACL,GAAG,OAAO,CAAC,MAAM;oBACjB,GAAG,KAAK;oBACR,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;iBAC/B;aACF,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,OAAO,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,IAAI,EAAE,CAAA;AACtG,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,70 @@
1
+ import { type CaptureAnswerValue, type CaptureClient, type CaptureFieldDefinition, type CaptureLookup, type CapturePublicForm, type CapturePublicSource, type CaptureSubmitResult } from "./index.ts";
2
+ export interface CaptureFormProps {
3
+ client?: CaptureClient;
4
+ apiBaseUrl?: string;
5
+ lookup?: CaptureLookup;
6
+ source?: CapturePublicSource;
7
+ className?: string;
8
+ onSubmitted?: (result: CaptureSubmitResult) => void;
9
+ }
10
+ export type CaptureFormStatus = "loading" | "ready" | "submitting" | "submitted" | "unavailable";
11
+ export interface UseCaptureFormResult {
12
+ status: CaptureFormStatus;
13
+ form: CapturePublicForm | null;
14
+ document: ResolvedCaptureDocument | null;
15
+ currentPage: ResolvedCapturePage | null;
16
+ currentPageIndex: number;
17
+ visiblePages: ResolvedCapturePage[];
18
+ answers: Record<string, CaptureAnswerValue>;
19
+ pageError: string | null;
20
+ submitError: string | null;
21
+ honeypot: string;
22
+ isFinalPage: boolean;
23
+ setHoneypot: (value: string) => void;
24
+ setAnswer: (fieldKey: string, value: CaptureAnswerValue) => void;
25
+ goBack: () => void;
26
+ goNext: () => void;
27
+ submit: () => Promise<void>;
28
+ }
29
+ export interface UseCaptureFormOptions {
30
+ client: CaptureClient;
31
+ storage?: Pick<Storage, "getItem" | "setItem">;
32
+ searchParams?: URLSearchParams;
33
+ onSubmitted?: (result: CaptureSubmitResult) => void;
34
+ }
35
+ interface ResolvedCapturePage {
36
+ id: string;
37
+ title?: string;
38
+ description?: string;
39
+ order: number;
40
+ hidden?: boolean;
41
+ visibleWhen?: unknown;
42
+ }
43
+ type ResolvedCaptureItem = ResolvedCaptureInputItem | ResolvedCaptureContentItem;
44
+ interface ResolvedCaptureInputItem extends CaptureFieldDefinition {
45
+ kind: "input";
46
+ pageId: string;
47
+ order: number;
48
+ }
49
+ interface ResolvedCaptureContentItem {
50
+ id: string;
51
+ kind: string;
52
+ pageId: string;
53
+ order: number;
54
+ hidden?: boolean;
55
+ text?: string;
56
+ title?: string;
57
+ body?: string;
58
+ label?: string;
59
+ visibleWhen?: unknown;
60
+ }
61
+ interface ResolvedCaptureDocument {
62
+ pages: ResolvedCapturePage[];
63
+ items: ResolvedCaptureItem[];
64
+ }
65
+ export declare function CaptureForm(props: CaptureFormProps): import("react/jsx-runtime").JSX.Element;
66
+ export declare function useCaptureForm(options: UseCaptureFormOptions): UseCaptureFormResult & {
67
+ currentPageItems: ResolvedCaptureItem[];
68
+ };
69
+ export {};
70
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/react.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,295 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { createYdtbPublicClient, getOrCreateRespondentKey, normalizePublicError } from "@ydtb/public-sdk";
4
+ import { createCaptureClient, resolveCaptureStorageKey, } from "./index.js";
5
+ const DEFAULT_PAGE_ID = "page-default";
6
+ export function CaptureForm(props) {
7
+ const client = useMemo(() => {
8
+ if (props.client)
9
+ return props.client;
10
+ if (!props.lookup)
11
+ return null;
12
+ const publicClient = createYdtbPublicClient({
13
+ apiBaseUrl: props.apiBaseUrl ?? resolveBrowserOrigin(),
14
+ source: props.source ?? "external",
15
+ });
16
+ return createCaptureClient({ publicClient, lookup: props.lookup, source: props.source });
17
+ }, [props.apiBaseUrl, props.client, props.lookup, props.source]);
18
+ if (!client) {
19
+ return (_jsx(CapturePublicShell, { className: props.className, children: _jsx(CaptureStatus, { title: "Capture form is not configured", description: "Provide either a client or an apiBaseUrl plus lookup." }) }));
20
+ }
21
+ return _jsx(CaptureFormWithClient, { client: client, className: props.className, onSubmitted: props.onSubmitted });
22
+ }
23
+ function CaptureFormWithClient({ client, className, onSubmitted }) {
24
+ const state = useCaptureForm({ client, onSubmitted });
25
+ if (state.status === "loading") {
26
+ return (_jsx(CapturePublicShell, { className: className, children: _jsx(CaptureStatus, { title: "Getting the form ready\u2026", description: "We\u2019re loading the latest questions for this form." }) }));
27
+ }
28
+ if (state.status === "unavailable") {
29
+ return (_jsx(CapturePublicShell, { className: className, children: _jsx(CaptureStatus, { title: "This form isn\u2019t available", description: state.submitError ?? "The link may be expired, closed, or no longer accepting responses." }) }));
30
+ }
31
+ if (state.status === "submitted") {
32
+ return (_jsx(CapturePublicShell, { className: className, children: _jsx(CaptureStatus, { title: "Thanks \u2014 your response was submitted.", description: "You\u2019re all set. The form owner can review your response and follow up from there." }) }));
33
+ }
34
+ if (!state.form || !state.document || !state.currentPage) {
35
+ return (_jsx(CapturePublicShell, { className: className, children: _jsx(CaptureStatus, { title: "This form isn\u2019t ready yet", description: "There aren\u2019t any questions to answer right now. Ask the person who sent this link for an updated form." }) }));
36
+ }
37
+ return (_jsx(CapturePublicShell, { className: className, children: _jsxs("form", { className: "ydtb-capture-form", onSubmit: (event) => void handleSubmit(event, state), children: [_jsx("input", { type: "text", name: state.form.security?.honeypotFieldName ?? "website", value: state.honeypot, onChange: (event) => state.setHoneypot(event.target.value), className: "ydtb-capture-honeypot", tabIndex: -1, autoComplete: "off", "aria-hidden": "true" }), _jsxs("div", { className: "ydtb-capture-header", children: [_jsx("p", { className: "ydtb-capture-eyebrow", children: "YDTB Capture" }), _jsx("h1", { children: state.form.title })] }), _jsxs("div", { className: "ydtb-capture-body", children: [state.currentPage.title || state.currentPage.description ? (_jsxs("div", { className: "ydtb-capture-page-header", children: [state.currentPage.title ? _jsx("h2", { children: state.currentPage.title }) : null, state.currentPage.description ? _jsx("p", { children: state.currentPage.description }) : null] })) : null, state.currentPageItems.map((item) => renderItem(item, state))] }), state.pageError ? _jsx("p", { className: "ydtb-capture-error", children: state.pageError }) : null, state.submitError ? _jsx("p", { className: "ydtb-capture-error", children: state.submitError }) : null, _jsxs("div", { className: "ydtb-capture-footer", children: [state.visiblePages.length > 1 ? (_jsx("button", { type: "button", className: "ydtb-capture-button secondary", onClick: state.goBack, disabled: state.currentPageIndex === 0 || state.status === "submitting", children: "Back" })) : _jsx("span", {}), state.isFinalPage ? (_jsx("button", { type: "submit", className: "ydtb-capture-button", disabled: state.status === "submitting", children: state.status === "submitting" ? "Sending…" : "Send response" })) : (_jsx("button", { type: "button", className: "ydtb-capture-button", onClick: state.goNext, disabled: state.status === "submitting", children: "Next" }))] })] }) }));
38
+ }
39
+ export function useCaptureForm(options) {
40
+ const [status, setStatus] = useState("loading");
41
+ const [form, setForm] = useState(null);
42
+ const [answers, setAnswers] = useState({});
43
+ const [honeypot, setHoneypot] = useState("");
44
+ const [currentPageIndex, setCurrentPageIndex] = useState(0);
45
+ const [pageError, setPageError] = useState(null);
46
+ const [submitError, setSubmitError] = useState(null);
47
+ const [respondentKey] = useState(() => getOrCreateRespondentKey({
48
+ storageKey: `ydtb:${resolveCaptureStorageKey(options.client.lookup)}`,
49
+ storage: options.storage ?? resolveBrowserStorage(),
50
+ prefix: "capture",
51
+ }));
52
+ const [startedAt] = useState(() => new Date().toISOString());
53
+ const appliedSearchParamsRef = useRef(false);
54
+ useEffect(() => {
55
+ let cancelled = false;
56
+ setStatus("loading");
57
+ options.client.getForm()
58
+ .then((nextForm) => {
59
+ if (cancelled)
60
+ return;
61
+ setForm(nextForm);
62
+ setSubmitError(null);
63
+ setStatus("ready");
64
+ })
65
+ .catch((error) => {
66
+ if (cancelled)
67
+ return;
68
+ setSubmitError(normalizePublicError(error, "This form is unavailable").message);
69
+ setStatus("unavailable");
70
+ });
71
+ return () => { cancelled = true; };
72
+ }, [options.client]);
73
+ const document = useMemo(() => form ? resolveCaptureDocument(form) : null, [form]);
74
+ const fields = useMemo(() => document ? document.items.filter(isInputItem) : [], [document]);
75
+ const visiblePages = useMemo(() => {
76
+ if (!document)
77
+ return [];
78
+ return document.pages
79
+ .filter((page) => !page.hidden && evaluateCondition(page.visibleWhen, fields, answers))
80
+ .sort((a, b) => a.order - b.order);
81
+ }, [answers, document, fields]);
82
+ const currentPage = visiblePages[currentPageIndex] ?? visiblePages[0] ?? null;
83
+ const currentPageItems = useMemo(() => {
84
+ if (!document || !currentPage)
85
+ return [];
86
+ return document.items
87
+ .filter((item) => item.pageId === currentPage.id)
88
+ .filter((item) => !item.hidden)
89
+ .filter((item) => !isInputItem(item) || item.type !== "hidden" && item.type !== "honeypot")
90
+ .filter((item) => evaluateCondition("visibleWhen" in item ? item.visibleWhen : undefined, fields, answers))
91
+ .sort((a, b) => a.order - b.order);
92
+ }, [answers, currentPage, document, fields]);
93
+ const isFinalPage = currentPageIndex >= visiblePages.length - 1;
94
+ useEffect(() => {
95
+ if (currentPageIndex > Math.max(visiblePages.length - 1, 0))
96
+ setCurrentPageIndex(0);
97
+ }, [currentPageIndex, visiblePages.length]);
98
+ useEffect(() => {
99
+ if (!form || !document || appliedSearchParamsRef.current)
100
+ return;
101
+ const params = options.searchParams ?? resolveBrowserSearchParams();
102
+ if (!params)
103
+ return;
104
+ const nextAnswers = {};
105
+ for (const field of fields) {
106
+ if (!params.has(field.key))
107
+ continue;
108
+ const values = params.getAll(field.key);
109
+ nextAnswers[field.key] = values.length > 1 ? values : values[0] ?? "";
110
+ }
111
+ if (Object.keys(nextAnswers).length > 0)
112
+ setAnswers((current) => ({ ...nextAnswers, ...current }));
113
+ appliedSearchParamsRef.current = true;
114
+ }, [document, fields, form, options.searchParams]);
115
+ const setAnswer = useCallback((fieldKey, value) => {
116
+ setPageError(null);
117
+ setSubmitError(null);
118
+ setAnswers((current) => ({ ...current, [fieldKey]: value }));
119
+ }, []);
120
+ const validateCurrentPage = useCallback(() => {
121
+ const normalized = { ...answers };
122
+ for (const item of currentPageItems.filter(isInputItem)) {
123
+ const value = normalizeAnswer(item, answers[item.key]);
124
+ const error = validateField(item, value);
125
+ if (error) {
126
+ setPageError(error);
127
+ return null;
128
+ }
129
+ normalized[item.key] = value;
130
+ }
131
+ setPageError(null);
132
+ return normalized;
133
+ }, [answers, currentPageItems]);
134
+ const goNext = useCallback(() => {
135
+ if (!validateCurrentPage())
136
+ return;
137
+ setCurrentPageIndex((index) => Math.min(index + 1, visiblePages.length - 1));
138
+ }, [validateCurrentPage, visiblePages.length]);
139
+ const submit = useCallback(async () => {
140
+ if (!form || !document)
141
+ return;
142
+ const normalizedPageAnswers = validateCurrentPage();
143
+ if (!normalizedPageAnswers)
144
+ return;
145
+ setStatus("submitting");
146
+ setSubmitError(null);
147
+ const visiblePageIds = new Set(visiblePages.map((page) => page.id));
148
+ const submitFields = document.items
149
+ .filter(isInputItem)
150
+ .filter((field) => field.type === "hidden" || field.type === "honeypot" || (!field.hidden && visiblePageIds.has(field.pageId) && evaluateCondition(field.visibleWhen, fields, normalizedPageAnswers)));
151
+ const submittedAnswers = Object.fromEntries(submitFields.map((field) => [field.key, normalizedPageAnswers[field.key] ?? null]));
152
+ try {
153
+ const result = await options.client.submit({
154
+ answers: submittedAnswers,
155
+ respondentKey,
156
+ startedAt,
157
+ honeypot,
158
+ });
159
+ setStatus("submitted");
160
+ options.onSubmitted?.(result);
161
+ }
162
+ catch (error) {
163
+ setSubmitError(normalizePublicError(error, "We could not submit this form. Please review your response and try again.").message);
164
+ setStatus("ready");
165
+ }
166
+ }, [document, fields, form, honeypot, options, respondentKey, startedAt, validateCurrentPage, visiblePages]);
167
+ return {
168
+ status,
169
+ form,
170
+ document,
171
+ currentPage,
172
+ currentPageIndex,
173
+ currentPageItems,
174
+ visiblePages,
175
+ answers,
176
+ pageError,
177
+ submitError,
178
+ honeypot,
179
+ isFinalPage,
180
+ setHoneypot,
181
+ setAnswer,
182
+ goBack: () => { setPageError(null); setCurrentPageIndex((index) => Math.max(index - 1, 0)); },
183
+ goNext,
184
+ submit,
185
+ };
186
+ }
187
+ async function handleSubmit(event, state) {
188
+ event.preventDefault();
189
+ if (!state.isFinalPage) {
190
+ state.goNext();
191
+ return;
192
+ }
193
+ await state.submit();
194
+ }
195
+ function renderItem(item, state) {
196
+ if (!isInputItem(item)) {
197
+ if (item.kind === "content.divider")
198
+ return _jsx("hr", { className: "ydtb-capture-divider" }, item.id);
199
+ const title = item.title ?? item.label;
200
+ const text = item.body ?? item.text;
201
+ return (_jsxs("div", { className: "ydtb-capture-content", children: [title ? _jsx("h3", { children: title }) : null, text ? _jsx("p", { children: text }) : null] }, item.id));
202
+ }
203
+ const value = state.answers[item.key];
204
+ if (item.type === "textarea") {
205
+ return (_jsx(CaptureField, { field: item, children: _jsx("textarea", { required: item.required, value: typeof value === "string" ? value : "", onChange: (event) => state.setAnswer(item.key, event.target.value) }) }, item.id));
206
+ }
207
+ if (item.type === "select") {
208
+ return (_jsx(CaptureField, { field: item, children: _jsxs("select", { required: item.required, value: typeof value === "string" ? value : "", onChange: (event) => state.setAnswer(item.key, event.target.value), children: [_jsx("option", { value: "", children: "Choose an option" }), (item.options ?? []).map((option) => _jsx("option", { value: option, children: option }, option))] }) }, item.id));
209
+ }
210
+ if (item.type === "rating") {
211
+ return (_jsx(CaptureField, { field: item, children: _jsx("input", { type: "range", min: 0, max: 5, value: typeof value === "number" ? value : 0, onChange: (event) => state.setAnswer(item.key, Number(event.target.value)) }) }, item.id));
212
+ }
213
+ return (_jsx(CaptureField, { field: item, children: _jsx("input", { required: item.required, type: item.type === "email" ? "email" : item.type === "phone" ? "tel" : "text", value: typeof value === "string" ? value : "", onChange: (event) => state.setAnswer(item.key, event.target.value) }) }, item.id));
214
+ }
215
+ function CaptureField({ field, children }) {
216
+ return (_jsxs("label", { className: "ydtb-capture-field", children: [_jsxs("span", { children: [field.label, field.required ? _jsx("strong", { "aria-label": "required", children: " *" }) : null] }), children] }));
217
+ }
218
+ function CapturePublicShell({ children, className }) {
219
+ return _jsx("main", { className: ["ydtb-capture-shell", className].filter(Boolean).join(" "), children: children });
220
+ }
221
+ function CaptureStatus({ title, description }) {
222
+ return _jsxs("section", { className: "ydtb-capture-status", children: [_jsx("h1", { children: title }), _jsx("p", { children: description })] });
223
+ }
224
+ function resolveCaptureDocument(form) {
225
+ const candidate = form.document;
226
+ if (candidate?.pages?.length && candidate.items?.length) {
227
+ return { pages: candidate.pages, items: candidate.items };
228
+ }
229
+ return {
230
+ pages: [{ id: DEFAULT_PAGE_ID, order: 0 }],
231
+ items: form.fields.map((field, index) => ({ ...field, kind: "input", pageId: DEFAULT_PAGE_ID, order: index })),
232
+ };
233
+ }
234
+ function isInputItem(item) {
235
+ return item.kind === "input";
236
+ }
237
+ function normalizeAnswer(field, value) {
238
+ if (value === undefined)
239
+ return null;
240
+ if (typeof value === "string")
241
+ return value.trim();
242
+ if (field.type === "rating" && value === null)
243
+ return 0;
244
+ return value;
245
+ }
246
+ function validateField(field, value) {
247
+ const empty = value === null || value === undefined || value === "" || (Array.isArray(value) && value.length === 0);
248
+ if (field.required && empty)
249
+ return `${field.label} is required`;
250
+ if (empty)
251
+ return null;
252
+ if (field.type === "email" && typeof value === "string" && !/^\S+@\S+\.\S+$/.test(value))
253
+ return `${field.label} must be a valid email`;
254
+ if (field.type === "rating" && field.required && typeof value === "number" && value <= 0)
255
+ return `${field.label} is required`;
256
+ return null;
257
+ }
258
+ function evaluateCondition(condition, fields, answers) {
259
+ if (!condition || typeof condition !== "object")
260
+ return true;
261
+ const maybeGroup = condition;
262
+ if (Array.isArray(maybeGroup.conditions)) {
263
+ const results = maybeGroup.conditions.map((nested) => evaluateCondition(nested, fields, answers));
264
+ return maybeGroup.logic === "or" ? results.some(Boolean) : results.every(Boolean);
265
+ }
266
+ const simple = condition;
267
+ const field = fields.find((candidate) => candidate.key === simple.fieldKey || candidate.id === simple.fieldId);
268
+ const actual = answers[field?.key ?? simple.fieldKey ?? ""];
269
+ switch (simple.operator) {
270
+ case "equals":
271
+ case "is":
272
+ return actual === simple.value;
273
+ case "notEquals":
274
+ case "is_not":
275
+ return actual !== simple.value;
276
+ case "isEmpty":
277
+ case "is_empty":
278
+ return actual === undefined || actual === null || actual === "";
279
+ case "isNotEmpty":
280
+ case "is_not_empty":
281
+ return actual !== undefined && actual !== null && actual !== "";
282
+ default:
283
+ return true;
284
+ }
285
+ }
286
+ function resolveBrowserOrigin() {
287
+ return typeof window === "undefined" ? "http://localhost" : window.location.origin;
288
+ }
289
+ function resolveBrowserStorage() {
290
+ return typeof window === "undefined" ? undefined : window.localStorage;
291
+ }
292
+ function resolveBrowserSearchParams() {
293
+ return typeof window === "undefined" ? undefined : new URLSearchParams(window.location.search);
294
+ }
295
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../src/react.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@ydtb/public-capture",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "Public Capture client and renderer for YDTB hosted pages and external embeds.",
6
+ "type": "module",
7
+ "license": "UNLICENSED",
8
+ "publishConfig": {
9
+ "access": "public",
10
+ "registry": "https://registry.npmjs.org/"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "dev-src": "./src/index.ts",
15
+ "types": "./dist/src/index.d.ts",
16
+ "default": "./dist/src/index.js"
17
+ },
18
+ "./react": {
19
+ "dev-src": "./src/react.tsx",
20
+ "types": "./dist/src/react.d.ts",
21
+ "default": "./dist/src/react.js"
22
+ },
23
+ "./testing": {
24
+ "dev-src": "./testing/index.ts",
25
+ "types": "./dist/testing/index.d.ts",
26
+ "default": "./dist/testing/index.js"
27
+ }
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "README.md"
32
+ ],
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/yourdigitaltoolbox/tk-scope.git"
36
+ },
37
+ "dependencies": {
38
+ "@ydtb/public-sdk": "0.1.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/react": "^19.2.14",
42
+ "typescript": "^5.9.3",
43
+ "vitest": "^4.1.5"
44
+ },
45
+ "peerDependencies": {
46
+ "react": ">=19.0.0 <20.0.0"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc -b",
50
+ "typecheck": "tsc -b --noEmit",
51
+ "lint": "pnpm exec eslint .",
52
+ "test": "vitest run",
53
+ "clean": "rm -rf dist *.tsbuildinfo"
54
+ }
55
+ }