@picked/svelte 0.0.1-dev.1772073931707 → 0.0.1-dev.1772085077346
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/preload-helper.js +1 -0
- package/dist/component.d.ts +3 -3
- package/dist/form/index.d.ts +16 -2
- package/dist/form/index.js +1 -1
- package/dist/hooks/field.d.ts +0 -5
- package/dist/hooks/step.d.ts +8 -8
- package/dist/hooks/step.js +1 -1
- package/dist/plugins/devtools/DevToolsExperience.svelte +173 -25
- package/dist/plugins/devtools/PickedIcon.svelte +19 -0
- package/dist/plugins/devtools/components/ExperienceInstanceListItem.svelte +1 -1
- package/dist/plugins/devtools/components/ExperienceInstancesTable.svelte +14 -10
- package/dist/plugins/devtools/plugin.d.ts +12 -4
- package/dist/plugins/devtools/plugin.js +1 -1
- package/dist/plugins/devtools/screens/components/ComponentsListScreen.svelte +17 -13
- package/dist/plugins/devtools/screens/events/EventsTable.svelte +24 -20
- package/dist/plugins/devtools/screens/experience-instances/ExperienceInstancesListScreen.svelte +1 -3
- package/dist/plugins/devtools/screens/experiences/ExperienceDetailsScreen.svelte +29 -25
- package/dist/plugins/devtools/screens/experiences/ExperienceExperienceInstancesListScreen.svelte +1 -3
- package/dist/plugins/devtools/screens/experiences/ExperienceTreeScreen.svelte +2 -2
- package/dist/plugins/devtools/screens/features/FeaturesListScreen.svelte +11 -9
- package/dist/plugins/devtools/screens/frameworks/FrameworksListScreen.svelte +16 -12
- package/dist/plugins/devtools/screens/history/HistoryEntriesTable.svelte +14 -10
- package/dist/plugins/devtools/screens/predicates/PredicatesListScreen.svelte +16 -12
- package/dist/plugins/devtools/screens/project/ProjectScreen.svelte +47 -1
- package/dist/plugins/devtools/screens/responses/ResponseTableRow.svelte +9 -10
- package/dist/plugins/devtools/screens/responses/ResponsesTable.svelte +26 -24
- package/dist/plugins/devtools/ui/actions/Button.svelte +4 -0
- package/dist/plugins/devtools/ui/data/DataTable.svelte +13 -3
- package/dist/render/browser.js +1 -1
- package/dist/render/server.js +1 -1
- package/package.json +2 -2
- package/dist/form/build-responses.d.ts +0 -13
- package/dist/form/build-responses.js +0 -1
- package/dist/form/create-field-evaluator.d.ts +0 -17
- package/dist/form/create-field-evaluator.js +0 -1
- package/dist/form/create-field-validation.d.ts +0 -41
- package/dist/form/create-field-validation.js +0 -1
- package/dist/form/create-form.js +0 -1
- package/dist/form/create-form.svelte.d.ts +0 -41
- package/dist/form/create-form.svelte.js +0 -1
- package/dist/form/create-submit-pipeline.js +0 -1
- package/dist/form/create-submit-pipeline.svelte.d.ts +0 -53
- package/dist/form/create-submit-pipeline.svelte.js +0 -1
- package/dist/form/get-form.d.ts +0 -16
- package/dist/form/get-form.js +0 -1
- package/dist/plugins/devtools/experience.d.ts +0 -1
- package/dist/plugins/devtools/experience.js +0 -1
- package/dist/plugins/devtools/ui/tokens.css.js +0 -1
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ExperienceInstance, ExperienceStep, FieldValue, FieldWithStatus, Picked, ValidationError } from '@picked/client';
|
|
2
|
-
import { Event, EventCallable, Store } from 'effector';
|
|
3
|
-
export type SubmitEventWithCurrentTarget = SubmitEvent & {
|
|
4
|
-
currentTarget: EventTarget & HTMLFormElement;
|
|
5
|
-
};
|
|
6
|
-
export type SuccessCallback<TFieldIds extends string = string> = (options: {
|
|
7
|
-
data: Record<TFieldIds, FieldValue>;
|
|
8
|
-
stopNavigation: EventCallable<void>;
|
|
9
|
-
}) => void | Promise<void>;
|
|
10
|
-
export type ErrorCallback = (errors: ValidationError[]) => void | Promise<void>;
|
|
11
|
-
export type SubmitCallback<TFieldIds extends string = string> = (data: Record<TFieldIds, FieldValue>) => Record<TFieldIds, FieldValue> | void | Promise<Record<TFieldIds, FieldValue> | void>;
|
|
12
|
-
export interface SubmitPipelineConfig {
|
|
13
|
-
client: Picked;
|
|
14
|
-
experienceInstance: ExperienceInstance;
|
|
15
|
-
formId: string;
|
|
16
|
-
title: Store<string>;
|
|
17
|
-
stepStore: Store<ExperienceStep | null>;
|
|
18
|
-
fieldsStore: Store<FieldWithStatus[]>;
|
|
19
|
-
goToNextStep: EventCallable<void>;
|
|
20
|
-
}
|
|
21
|
-
export interface SubmitPipeline {
|
|
22
|
-
submitEvent: EventCallable<SubmitEventWithCurrentTarget>;
|
|
23
|
-
isFormSubmitting: Store<boolean>;
|
|
24
|
-
onSubmit: (callback: SubmitCallback) => void;
|
|
25
|
-
onSuccess: (callback: SuccessCallback) => void;
|
|
26
|
-
onError: (callback: ErrorCallback) => void;
|
|
27
|
-
/**
|
|
28
|
-
* Fired when a submit attempt starts — callers use this to clear validation state.
|
|
29
|
-
* Separating this from `submitEvent` keeps the pipeline decoupled from the
|
|
30
|
-
* validation module's internal stores.
|
|
31
|
-
*/
|
|
32
|
-
submitStarted: Event<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Fired when the server returns validation errors — callers write these to
|
|
35
|
-
* `fieldErrorsStore` in the validation module.
|
|
36
|
-
*/
|
|
37
|
-
serverErrorsReceived: Event<ValidationError[]>;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Creates the submit pipeline for a form instance.
|
|
41
|
-
*
|
|
42
|
-
* Manages the full lifecycle of a form submission:
|
|
43
|
-
* - Emitting event bus calls (form_submit, form_submit_success, form_submit_error)
|
|
44
|
-
* - Running onSubmit data-transform callbacks in series
|
|
45
|
-
* - Committing responses to the server
|
|
46
|
-
* - Running onSuccess/onError callbacks in parallel
|
|
47
|
-
* - Navigating to the next step (unless stopNavigation is called)
|
|
48
|
-
*
|
|
49
|
-
* Returns coordination events (`submitStarted`, `serverErrorsReceived`) that the
|
|
50
|
-
* caller wires to the validation module to keep validation state in sync without
|
|
51
|
-
* the pipeline needing direct access to validation stores.
|
|
52
|
-
*/
|
|
53
|
-
export declare function createSubmitPipeline({ client, experienceInstance, formId, title, stepStore, fieldsStore, goToNextStep, }: SubmitPipelineConfig): SubmitPipeline;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './create-submit-pipeline.js';
|
package/dist/form/get-form.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ValidationError } from '@picked/client';
|
|
2
|
-
interface GetFormOptions {
|
|
3
|
-
id: string;
|
|
4
|
-
title: string;
|
|
5
|
-
onSuccess?: () => void | Promise<void>;
|
|
6
|
-
onError?: (errors: ValidationError[]) => void | Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
type SubmitEventWithCurrentTarget = SubmitEvent & {
|
|
9
|
-
currentTarget: EventTarget & HTMLFormElement;
|
|
10
|
-
};
|
|
11
|
-
export declare function getForm({ id: formId, title, onError, onSuccess }: GetFormOptions): {
|
|
12
|
-
form: {
|
|
13
|
-
onsubmit: import('effector').EventCallable<SubmitEventWithCurrentTarget>;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export {};
|
package/dist/form/get-form.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createEvent as _,createEffect as f,attach as v,sample as y,split as k}from"effector";import{getPicked as D,getExperience as F}from"../hooks/client.js";import"@picked/client";import{getStep as B}from"../hooks/step.js";import"svelte";import"svelte/store";import"@picked/analytics";function z({id:m,title:l,onError:b,onSuccess:g}){const a=D(),x=B(),i=F(),{currentStepStore:u}=i,d=_(),h=f(t=>a.responses.commit(t)),E=v({source:{step:u},effect:f(({step:t})=>{a.eventBus({type:"form_submit_success",form:{id:m,title:l},experience:i,step:t??void 0}),g?.()})}),S=v({source:{step:u},mapParams:(t,s)=>({step:s.step,errors:t.errors}),effect:f(({step:t,errors:s})=>{a.eventBus({type:"form_submit_error",form:{id:m,title:l},exception:{reason:s},experience:i,step:t??void 0}),s.forEach(c=>{a.eventBus({type:"field_validation_error",exception:{reason:[c]},experience:i,step:t??void 0})}),b?.(s)})});return y({clock:d,source:{step:u},fn:({step:t})=>({formId:m,title:l,step:t}),target:f(({formId:t,title:s,step:c})=>{a.eventBus({type:"form_submit",form:{id:t,title:s},experience:i,step:c??void 0})})}),y({clock:d,source:{fields:a.fields.listStore,stepFields:x.fields,step:u},fn:({stepFields:t},s)=>{s.preventDefault();const c=new FormData(s.currentTarget),A=Array.from(c.entries()),p={data:{},push(r){const o=r.questionId,e=this.data[o];e?Array.isArray(e)&&Array.isArray(r.value)?Array.isArray(e)&&Array.isArray(r.value)&&(typeof e[0]=="string"?this.data[o]=[...e,...r.value].map(String):typeof e[0]=="number"?this.data[o]=[...e,...r.value].map(Number):typeof e[0]=="boolean"?this.data[o]=[...e,...r.value].map(n=>!!n):this.data[o]=r.value):this.data[o]=r.value:this.data[o]=r.value}};return t.forEach(r=>{const o=A.filter(([e])=>e===r.id);o.length!==0&&o.forEach(([,e])=>{const n=r.id;if(e===""){p.push({questionId:n,value:null});return}switch(r.type){case"text":p.push({questionId:n,value:r.multiple?[String(e)]:String(e)});break;case"number":p.push({questionId:n,value:r.multiple?[Number(e)]:Number(e)});break;case"boolean":p.push({questionId:n,value:r.multiple?[e==="true"]:e==="true"});break}})}),p.data},target:h}),k({source:h.doneData,match:{hasErrors:({errors:t})=>t.length>0},cases:{hasErrors:S,__:E}}),{form:{onsubmit:d}}}export{z as getForm};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const devtoolsExperience: import('@picked/client/plugins/create-experience').SerializableExperience;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{createExperience as e}from"@picked/client/plugins/create-experience";import{adaptSvelteComponent as o}from"../../component.js";import t from"./DevToolsExperience.svelte";import p from"./ui/tokens.css.js";const r=e({id:"svelte-devtools",name:"Picked Devtools",decide:{},targets:[{selector:"body",placement:"append"}],component:o(t,{css:[p]})});r.addStep({label:"Tools"});export{r as devtoolsExperience};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=".devtools{--color-blue-500: #3b82f6;--color-blue-600: #2563eb;--color-blue-700: #1d4ed8;--color-blue-800: #1e40af;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-900: #111827;--color-red-500: #ef4444;--color-red-600: #dc2626;--color-red-700: #b91c1c;--color-red-800: #991b1b;--color-green-100: #dcfce7;--color-green-700: #15803d;--color-green-800: #166534;--color-yellow-100: #fef9c3;--color-yellow-700: #a16207;--color-yellow-800: #854d0e;--color-white: #ffffff;--color-black: #000000;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--space-0: 0;--space-0-5: .125rem;--space-1: .25rem;--space-1-5: .375rem;--space-2: .5rem;--space-2-5: .625rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: .125rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-full: 9999px;--shadow-card: 0 1px 2px 0 rgba(0, 0, 0, .03);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 8px 10px -6px rgba(0, 0, 0, .1);--ring-color: var(--color-blue-500);--ring-width: 2px;--ring-offset: 2px;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--text-sm);line-height:1.5;color:var(--color-gray-900)}.devtools .inline-select,.devtools .inline-input{font-size:var(--text-xs);padding:var(--space-0-5) var(--space-1);border:1px solid var(--color-gray-300);border-radius:var(--radius-sm);font-family:inherit}.devtools .inline-input{width:100%}.devtools .inline-select:focus,.devtools .inline-input:focus{outline:none;box-shadow:0 0 0 var(--ring-width) var(--ring-color)}.devtools textarea{width:100%;min-height:60px;font-family:monospace;font-size:var(--text-xs);padding:var(--space-1);border:1px solid var(--color-gray-300);border-radius:var(--radius-md)}.devtools textarea:focus{outline:none;box-shadow:0 0 0 var(--ring-width) var(--ring-color)}.devtools .details-cell{background-color:var(--color-gray-50);padding:var(--space-4);border-left:3px solid var(--color-blue-500)}.devtools .expand-icon{margin-right:var(--space-2);display:inline-block;width:12px}.devtools .event-row{cursor:pointer}.devtools .include-cell{text-align:center;width:2.5rem}.devtools .option-label{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}";export{e as default};
|