@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.
Files changed (48) hide show
  1. package/dist/_virtual/preload-helper.js +1 -0
  2. package/dist/component.d.ts +3 -3
  3. package/dist/form/index.d.ts +16 -2
  4. package/dist/form/index.js +1 -1
  5. package/dist/hooks/field.d.ts +0 -5
  6. package/dist/hooks/step.d.ts +8 -8
  7. package/dist/hooks/step.js +1 -1
  8. package/dist/plugins/devtools/DevToolsExperience.svelte +173 -25
  9. package/dist/plugins/devtools/PickedIcon.svelte +19 -0
  10. package/dist/plugins/devtools/components/ExperienceInstanceListItem.svelte +1 -1
  11. package/dist/plugins/devtools/components/ExperienceInstancesTable.svelte +14 -10
  12. package/dist/plugins/devtools/plugin.d.ts +12 -4
  13. package/dist/plugins/devtools/plugin.js +1 -1
  14. package/dist/plugins/devtools/screens/components/ComponentsListScreen.svelte +17 -13
  15. package/dist/plugins/devtools/screens/events/EventsTable.svelte +24 -20
  16. package/dist/plugins/devtools/screens/experience-instances/ExperienceInstancesListScreen.svelte +1 -3
  17. package/dist/plugins/devtools/screens/experiences/ExperienceDetailsScreen.svelte +29 -25
  18. package/dist/plugins/devtools/screens/experiences/ExperienceExperienceInstancesListScreen.svelte +1 -3
  19. package/dist/plugins/devtools/screens/experiences/ExperienceTreeScreen.svelte +2 -2
  20. package/dist/plugins/devtools/screens/features/FeaturesListScreen.svelte +11 -9
  21. package/dist/plugins/devtools/screens/frameworks/FrameworksListScreen.svelte +16 -12
  22. package/dist/plugins/devtools/screens/history/HistoryEntriesTable.svelte +14 -10
  23. package/dist/plugins/devtools/screens/predicates/PredicatesListScreen.svelte +16 -12
  24. package/dist/plugins/devtools/screens/project/ProjectScreen.svelte +47 -1
  25. package/dist/plugins/devtools/screens/responses/ResponseTableRow.svelte +9 -10
  26. package/dist/plugins/devtools/screens/responses/ResponsesTable.svelte +26 -24
  27. package/dist/plugins/devtools/ui/actions/Button.svelte +4 -0
  28. package/dist/plugins/devtools/ui/data/DataTable.svelte +13 -3
  29. package/dist/render/browser.js +1 -1
  30. package/dist/render/server.js +1 -1
  31. package/package.json +2 -2
  32. package/dist/form/build-responses.d.ts +0 -13
  33. package/dist/form/build-responses.js +0 -1
  34. package/dist/form/create-field-evaluator.d.ts +0 -17
  35. package/dist/form/create-field-evaluator.js +0 -1
  36. package/dist/form/create-field-validation.d.ts +0 -41
  37. package/dist/form/create-field-validation.js +0 -1
  38. package/dist/form/create-form.js +0 -1
  39. package/dist/form/create-form.svelte.d.ts +0 -41
  40. package/dist/form/create-form.svelte.js +0 -1
  41. package/dist/form/create-submit-pipeline.js +0 -1
  42. package/dist/form/create-submit-pipeline.svelte.d.ts +0 -53
  43. package/dist/form/create-submit-pipeline.svelte.js +0 -1
  44. package/dist/form/get-form.d.ts +0 -16
  45. package/dist/form/get-form.js +0 -1
  46. package/dist/plugins/devtools/experience.d.ts +0 -1
  47. package/dist/plugins/devtools/experience.js +0 -1
  48. 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';
@@ -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 {};
@@ -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};