@picked/react 0.0.1-dev.1773878362211 → 0.0.1-dev.1774224866171

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/component.js CHANGED
@@ -1 +1 @@
1
- const a=(e,t)=>({frameworkName:"react",component:e,style:t}),r=e=>e.frameworkName==="react";export{a as adaptReactComponent,r as isValidAdaptedComponent};
1
+ var e=(e,t)=>({frameworkName:`react`,component:e,style:t}),t=e=>e.frameworkName===`react`;export{e as adaptReactComponent,t as isValidAdaptedComponent};
package/dist/context.js CHANGED
@@ -1 +1 @@
1
- import{createContext as e}from"react";const t=e(null),n=t.Provider,o=e(null),i=o.Provider;export{t as ClientContext,n as ClientProvider,o as ExperienceContext,i as ExperienceProvider};
1
+ import{createContext as e}from"react";var t=e(null),n=t.Provider,r=e(null),i=r.Provider;export{t as ClientContext,n as ClientProvider,r as ExperienceContext,i as ExperienceProvider};
@@ -1 +1 @@
1
- import{useMemo as t,useRef as S,useEffect as a}from"react";import{createStore as p}from"effector";import{createForm as E}from"@picked/client/form";import{usePicked as h,useExperience as l}from"../hooks/client.js";import"../hooks/step.js";import"@picked/client";function P({formId:c,title:n,fieldIds:s}){const u=h(),m=l(),f=t(()=>p(n),[n]),i=t(()=>p(s),[s]),e=t(()=>E({client:u,experienceInstance:m},c,f,i),[u,m,c,f,i]),o=S([]);return a(()=>()=>{o.current.forEach(r=>r()),o.current=[]},[]),{form:t(()=>({...e.form,onSubmit:r=>{o.current.push(e.form.onSubmit(r))},onSuccess:r=>{o.current.push(e.form.onSuccess(r))},onError:r=>{o.current.push(e.form.onError(r))}}),[e]),fields:e.fields}}export{P as useForm};
1
+ import{useExperience as e,usePicked as t}from"../hooks/client.js";import"../hooks/index.js";import{useEffect as n,useMemo as r,useRef as i}from"react";import{createStore as a}from"effector";import{createForm as o}from"@picked/client/form";function s({formId:s,title:c,fieldIds:l}){let u=t(),d=e(),f=r(()=>a(c),[c]),p=r(()=>a(l),[l]),m=r(()=>o({client:u,experienceInstance:d},s,f,p),[u,d,s,f,p]),h=i([]);return n(()=>()=>{h.current.forEach(e=>e()),h.current=[]},[]),{form:r(()=>({...m.form,onSubmit:e=>{h.current.push(m.form.onSubmit(e))},onSuccess:e=>{h.current.push(m.form.onSuccess(e))},onError:e=>{h.current.push(m.form.onError(e))}}),[m]),fields:m.fields}}export{s as useForm};
@@ -1 +1 @@
1
- import{useContext as t}from"react";import{ExperienceContext as n,ClientContext as r}from"../context.js";function i(){const e=t(r);if(!e)throw new Error("usePicked must be used within a ClientProvider");return e}function o(){const e=t(n);if(!e)throw new Error("useExperience must be used within an ExperienceProvider");return e}const u=i,x=o;export{x as getExperience,u as getPicked,o as useExperience,i as usePicked};
1
+ import{ClientContext as e,ExperienceContext as t}from"../context.js";import{useContext as n}from"react";function r(){let t=n(e);if(!t)throw Error(`usePicked must be used within a ClientProvider`);return t}function i(){let e=n(t);if(!e)throw Error(`useExperience must be used within an ExperienceProvider`);return e}var a=r,o=i;export{o as getExperience,a as getPicked,i as useExperience,r as usePicked};
@@ -1 +1 @@
1
- import{getPicked as s}from"./client.js";function r(e){const t=s(),n=t.fields.getById(e),o=t.responses.getByFieldId(e);return{field:n,value:o}}export{r as getField};
1
+ import{getPicked as e}from"./client.js";function t(t){let n=e();return{field:n.fields.getById(t),value:n.responses.getByFieldId(t)}}export{t as getField};
@@ -1 +1 @@
1
- import{getExperience as o,getPicked as r,useExperience as p,usePicked as s}from"./client.js";import{useSetStepContext as i,useStep as u}from"./step.js";import{useLocalStorage as c,useSessionStorage as g}from"./storage.js";import{getField as m}from"./field.js";export{o as getExperience,m as getField,r as getPicked,p as useExperience,c as useLocalStorage,s as usePicked,g as useSessionStorage,i as useSetStepContext,u as useStep};
1
+ import{getExperience as e,getPicked as t,useExperience as n,usePicked as r}from"./client.js";import{useSetStepContext as i,useStep as a}from"./step.js";import{useLocalStorage as o,useSessionStorage as s}from"./storage.js";import{getField as c}from"./field.js";export{e as getExperience,c as getField,t as getPicked,n as useExperience,o as useLocalStorage,r as usePicked,s as useSessionStorage,i as useSetStepContext,a as useStep};
@@ -1 +1 @@
1
- import{createContext as w,useMemo as a,useContext as b}from"react";import{attach as E,createEffect as F,combine as R,createStore as A,sample as P}from"effector";import{evaluateRuleLogic as g}from"@picked/client";import{useUnit as k}from"effector-react";import{useStepRouter as y}from"../router/context.js";import{useExperience as D,usePicked as L}from"./client.js";const M=w(null);function B(){const e=b(M);if(!e)throw new Error("useStep must be used within a StepContextProvider");return{step:e.step,fields:e.fields,isActiveStep:e.isActiveStep??!1}}function G(e){const l=D(),s=L(),{activeStep:p}=y(),m=a(()=>p?.id===e,[p?.id,e]),{stepContext:S}=a(()=>{const o=E({source:R({steps:l.treeStore.map(i=>i.steps),fields:s.fields.listStore,responses:s.responses.listStore}),effect:F(async({steps:i,fields:r,responses:x})=>{const n=i.find(t=>t.id===e);if(!n)throw new Error(`Step with id "${e}" not found in the experience tree.`);const v=r.filter(t=>n.fieldIds.includes(t.id)),c=[];for(const t of v)t.condition?await g(s,t.condition)&&c.push(t):c.push(t);const C=c.map(t=>{const u=x.find(h=>h.fieldId===t.id)?.value;return{...t,value:u}});return{step:{id:n.id,label:n.label},fields:C}})}),f=A({step:{id:e,label:""},fields:[]});return f.on(o.doneData,(i,r)=>r),P({clock:[s.fields.listStore,s.responses.listStore],target:o}),o(),{stepContextFx:o,stepContext:f}},[e,s,l]),d=k(S);return{step:d?.step,fields:d?.fields||[],isActiveStep:m}}export{M as StepContextProvider,G as useSetStepContext,B as useStep};
1
+ import{useExperience as e,usePicked as t}from"./client.js";import{useStepRouter as n}from"../router/context.js";import{createContext as r,useContext as i,useMemo as a}from"react";import{attach as o,combine as s,createEffect as c,createStore as l,sample as u}from"effector";import{evaluateRuleLogic as d}from"@picked/client";import{useUnit as f}from"effector-react";var p=r(null);function m(){let e=i(p);if(!e)throw Error(`useStep must be used within a StepContextProvider`);return{step:e.step,fields:e.fields,isActiveStep:e.isActiveStep??!1}}function h(r){let i=e(),p=t(),{activeStep:m}=n(),h=a(()=>m?.id===r,[m?.id,r]),{stepContext:g}=a(()=>{let e=o({source:s({steps:i.treeStore.map(e=>e.steps),fields:p.fields.listStore,responses:p.responses.listStore}),effect:c(async({steps:e,fields:t,responses:n})=>{let i=e.find(e=>e.id===r);if(!i)throw Error(`Step with id "${r}" not found in the experience tree.`);let a=t.filter(e=>i.fieldIds.includes(e.id)),o=[];for(let e of a)e.condition?await d(p,e.condition)&&o.push(e):o.push(e);let s=o.map(e=>{let t=n.find(t=>t.fieldId===e.id)?.value;return{...e,value:t}});return{step:{id:i.id,label:i.label},fields:s}})}),t=l({step:{id:r,label:``},fields:[]});return t.on(e.doneData,(e,t)=>t),u({clock:[p.fields.listStore,p.responses.listStore],target:e}),e(),{stepContextFx:e,stepContext:t}},[r,p,i]),_=f(g);return{step:_?.step,fields:_?.fields||[],isActiveStep:h}}export{p as StepContextProvider,h as useSetStepContext,m as useStep};
@@ -1 +1 @@
1
- import{useState as x,useEffect as a,useCallback as d}from"react";import{createStorageKey as k,sessionStore as v,localStore as E,supportsSessionStorage as K,supportsLocalStorage as L}from"@picked/client";import{useExperience as h}from"./client.js";const y={fallback:null,scope:"global"};function u(o,n,l){const{fallback:i,scope:f}={...y,...l},p=h(),s=o==="session"?v:E,r=o==="session"?K:L,[S,c]=x(i??null),t=k(n,f,p);a(()=>{if(r()){const e=s.get(t).text();e!==null&&c(e)}},[s,t,r]),a(()=>{if(!r())return;const e=m=>{c(m.text())},b=s.subscribe(t,e);return()=>{b()}},[s,t,r]);const g=d(e=>{c(e),r()&&(e?s.set(t,e):s.remove(t))},[s,t,r]);return[S,g]}function j(o,n){return u("session",o,n)}function q(o,n){return u("local",o,n)}export{q as useLocalStorage,j as useSessionStorage};
1
+ import{useExperience as e}from"./client.js";import{useCallback as t,useEffect as n,useState as r}from"react";import{createStorageKey as i,localStore as a,sessionStore as o,supportsLocalStorage as s,supportsSessionStorage as c}from"@picked/client";var l={fallback:null,scope:`global`};function u(u,d,f){let{fallback:p,scope:m}={...l,...f},h=e(),g=u===`session`?o:a,_=u===`session`?c:s,[v,y]=r(p??null),b=i(d,m,h);return n(()=>{if(_()){let e=g.get(b).text();e!==null&&y(e)}},[g,b,_]),n(()=>{if(!_())return;let e=g.subscribe(b,e=>{y(e.text())});return()=>{e()}},[g,b,_]),[v,t(e=>{y(e),_()&&(e?g.set(b,e):g.remove(b))},[g,b,_])]}function d(e,t){return u(`session`,e,t)}function f(e,t){return u(`local`,e,t)}export{f as useLocalStorage,d as useSessionStorage};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{adaptReactComponent as a,isValidAdaptedComponent as e}from"./component.js";export{a as adaptReactComponent,e as isValidAdaptedComponent};
1
+ import{adaptReactComponent as e,isValidAdaptedComponent as t}from"./component.js";export{e as adaptReactComponent,t as isValidAdaptedComponent};
@@ -1 +1 @@
1
- import{reactFrameworkPlugin as o}from"./plugin.js";export{o as reactFrameworkPlugin};
1
+ import{reactFrameworkPlugin as e}from"./plugin.js";export{e as reactFrameworkPlugin};
@@ -1 +1 @@
1
- import{adaptReactComponent as o}from"../../component.js";import{renderReactComponent as m}from"../../render/browser.js";const a=e=>({name:"react-framework",setup:t=>{t.registerFramework({name:"react",render(...n){return m(...n,{stylesheets:e.stylesheets,css:e.css})}});const r=e.components.experience;r&&t.registerComponent("experience",o(r.component,r.style))}});export{a as reactFrameworkPlugin};
1
+ import{adaptReactComponent as e}from"../../component.js";import{renderReactComponent as t}from"../../render/browser.js";var n=n=>({name:`react-framework`,setup:r=>{r.registerFramework({name:`react`,render(...e){return t(...e,{stylesheets:n.stylesheets,css:n.css})}});let i=n.components.experience;i&&r.registerComponent(`experience`,e(i.component,i.style))}});export{n as reactFrameworkPlugin};
@@ -1 +1 @@
1
- import o from"react";import{createRoot as y}from"react-dom/client";import{isLazyLoader as E}from"@picked/client";import{isValidAdaptedComponent as h}from"../component.js";import{ClientProvider as C,ExperienceProvider as A}from"../context.js";import{mergeArrays as u}from"../utils/array.js";const i=new WeakMap,j=async(r,e,c,l,a)=>{if(!h(e))throw new Error("The component is invalid.");const m=u(e.style?.sheets,a.stylesheets),d=u(e.style?.css,a.css);m.length&&m.forEach(s=>{const t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("href",s),t.setAttribute("type","text/css"),t.setAttribute("picked-injected","true"),r.appendChild(t)}),d.length&&d.forEach(s=>{const t=document.createElement("style");t.textContent=s,t.setAttribute("type","text/css"),t.setAttribute("picked-injected","true"),r.appendChild(t)});const p=document.createElement("div");r.appendChild(p);const f=y(p);i.set(r,f);let n;E(e.component)?n=(await e.component.load()).default:e.component instanceof Promise?n=(await e.component).default:n=e.component,f.render(o.createElement(C,{value:c},o.createElement(A,{value:l},o.createElement(n,{client:c,experience:l}))))},w=r=>{const e=i.get(r);e&&(e.unmount(),i.delete(r))};export{j as renderReactComponent,w as unRenderReactComponent};
1
+ import{isValidAdaptedComponent as e}from"../component.js";import{ClientProvider as t,ExperienceProvider as n}from"../context.js";import{mergeArrays as r}from"../utils/array.js";import i from"react";import{isLazyLoader as a}from"@picked/client";import{createRoot as o}from"react-dom/client";var s=new WeakMap,c=async(c,l,u,d,f)=>{if(!e(l))throw Error(`The component is invalid.`);let p=r(l.style?.sheets,f.stylesheets),m=r(l.style?.css,f.css);p.length&&p.forEach(e=>{let t=document.createElement(`link`);t.setAttribute(`rel`,`stylesheet`),t.setAttribute(`href`,e),t.setAttribute(`type`,`text/css`),t.setAttribute(`picked-injected`,`true`),c.appendChild(t)}),m.length&&m.forEach(e=>{let t=document.createElement(`style`);t.textContent=e,t.setAttribute(`type`,`text/css`),t.setAttribute(`picked-injected`,`true`),c.appendChild(t)});let h=document.createElement(`div`);c.appendChild(h);let g=o(h);s.set(c,g);let _;_=a(l.component)?(await l.component.load()).default:l.component instanceof Promise?(await l.component).default:l.component,g.render(i.createElement(t,{value:u},i.createElement(n,{value:d},i.createElement(_,{client:u,experience:d}))))},l=e=>{let t=s.get(e);t&&(t.unmount(),s.delete(e))};export{c as renderReactComponent,l as unRenderReactComponent};
@@ -1 +1 @@
1
- import r from"react";import{renderToString as d}from"react-dom/server";import{isLazyLoader as f}from"@picked/client";import{isValidAdaptedComponent as p}from"../component.js";import{ClientProvider as y,ExperienceProvider as h}from"../context.js";import{mergeArrays as i}from"../utils/array.js";const R=async(e,s,o,a)=>{if(!p(e))throw new Error("The component is invalid.");const m=i(e.style?.sheets,a.stylesheets),n=i(e.style?.css,a.css),l="";let t;f(e.component)?t=(await e.component.load()).default:e.component instanceof Promise?t=(await e.component).default:t=e.component;const c=d(r.createElement(y,{value:s},r.createElement(h,{value:o},r.createElement(t,{client:s,experience:o}))));return{stylesheets:m,css:n,body:c,head:l}};export{R as staticRenderReactComponent};
1
+ import{isValidAdaptedComponent as e}from"../component.js";import{ClientProvider as t,ExperienceProvider as n}from"../context.js";import{mergeArrays as r}from"../utils/array.js";import i from"react";import{isLazyLoader as a}from"@picked/client";import{renderToString as o}from"react-dom/server";var s=async(s,c,l,u)=>{if(!e(s))throw Error(`The component is invalid.`);let d=r(s.style?.sheets,u.stylesheets),f=r(s.style?.css,u.css),p;return p=a(s.component)?(await s.component.load()).default:s.component instanceof Promise?(await s.component).default:s.component,{stylesheets:d,css:f,body:o(i.createElement(t,{value:c},i.createElement(n,{value:l},i.createElement(p,{client:c,experience:l})))),head:``}};export{s as staticRenderReactComponent};
@@ -1 +1 @@
1
- import{jsx as f}from"react/jsx-runtime";import{useState as c,useEffect as n}from"react";import{useSetStepContext as d,StepContextProvider as p}from"../hooks/step.js";import{useStepRouter as v}from"./context.js";const g=({id:i,component:e,children:S})=>{const r={id:i},{registerStep:s,unregisterStep:o}=v(),[l,u]=c(null),a=d(i);return n(()=>(s(r),()=>o(r)),[s,o,r]),n(()=>{e&&typeof e!="function"?Promise.resolve(e).then(t=>{typeof t=="object"&&"default"in t?u(()=>t.default):u(()=>t)}):typeof e=="function"&&u(()=>e)},[e]),e?l?f(p.Provider,{value:a,children:f(l,{})}):null:f(p.Provider,{value:a,children:S})};export{g as default};
1
+ import{useStepRouter as e}from"./context.js";import{StepContextProvider as t,useSetStepContext as n}from"../hooks/step.js";import{useEffect as r,useState as i}from"react";import{jsx as a}from"react/jsx-runtime";var o=({id:o,component:s,children:c})=>{let l={id:o},{registerStep:u,unregisterStep:d}=e(),[f,p]=i(null),m=n(o);return r(()=>(u(l),()=>d(l)),[u,d,l]),r(()=>{s&&typeof s!=`function`?Promise.resolve(s).then(e=>{typeof e==`object`&&`default`in e?p(()=>e.default):p(()=>e)}):typeof s==`function`&&p(()=>s)},[s]),s?f?a(t.Provider,{value:m,children:a(f,{})}):null:a(t.Provider,{value:m,children:c})};export{o as default};
@@ -1 +1 @@
1
- import{jsx as x}from"react/jsx-runtime";import{useState as c,useRef as g,useCallback as u,useEffect as R}from"react";import{supportsWindow as h}from"@picked/client";import{useUnit as A}from"effector-react";import{useExperience as E}from"../hooks/client.js";import"../hooks/step.js";import{StepRouterProvider as M}from"./context.js";const V=({children:p})=>{const f=E(),{currentStepStore:l}=f,e=A(l),[S,i]=c(null),o=g(!1),[s,n]=c([]),m=u(t=>{if(h())n(r=>[...r,t]);else{if(o.current)return;t.id===e?.id&&(i(t),o.current=!0)}},[e?.id]),a=u(t=>{n(r=>r.filter(v=>v!==t))},[]);R(()=>{i(s.find(t=>t.id===e?.id)||null)},[s,e?.id]);const d={activeStep:S,registerStep:m,unregisterStep:a};return e?.id?x(M,{value:d,children:p}):null};export{V as default};
1
+ import{useExperience as e}from"../hooks/client.js";import{StepRouterProvider as t}from"./context.js";import"../hooks/index.js";import{useCallback as n,useEffect as r,useRef as i,useState as a}from"react";import{supportsWindow as o}from"@picked/client";import{useUnit as s}from"effector-react";import{jsx as c}from"react/jsx-runtime";var l=({children:l})=>{let{currentStepStore:u}=e(),d=s(u),[f,p]=a(null),m=i(!1),[h,g]=a([]),_=n(e=>{if(o())g(t=>[...t,e]);else{if(m.current)return;e.id===d?.id&&(p(e),m.current=!0)}},[d?.id]),v=n(e=>{g(t=>t.filter(t=>t!==e))},[]);r(()=>{p(h.find(e=>e.id===d?.id)||null)},[h,d?.id]);let y={activeStep:f,registerStep:_,unregisterStep:v};return d?.id?c(t,{value:y,children:l}):null};export{l as default};
@@ -1 +1 @@
1
- import{createContext as o,useContext as r}from"react";const e=o(null),u=e.Provider,s=()=>{const t=r(e);if(!t)throw new Error("useStepRouter must be used within a StepRouterProvider");return t};export{u as StepRouterProvider,s as useStepRouter};
1
+ import{createContext as e,useContext as t}from"react";var n=e(null),r=n.Provider,i=()=>{let e=t(n);if(!e)throw Error(`useStepRouter must be used within a StepRouterProvider`);return e};export{r as StepRouterProvider,i as useStepRouter};
@@ -1 +1 @@
1
- import{default as r}from"./StepRouter.js";import{default as p}from"./Step.js";import{StepRouterProvider as f,useStepRouter as a}from"./context.js";export{p as Step,r as StepRouter,f as StepRouterProvider,a as useStepRouter};
1
+ import{StepRouterProvider as e,useStepRouter as t}from"./context.js";import n from"./StepRouter.js";import r from"./Step.js";export{r as Step,n as StepRouter,e as StepRouterProvider,t as useStepRouter};
@@ -1 +1 @@
1
- import{isValidAdaptedComponent as n}from"../component.js";import{staticRenderReactComponent as d}from"../render/server.js";const m={isValidComponent:n,render:async(o,t,r)=>{const e=await d(o,t,r,{});return{head:e.head,body:e.body}}};export{m as renderer};
1
+ import{isValidAdaptedComponent as e}from"../component.js";import{staticRenderReactComponent as t}from"../render/server.js";var n={isValidComponent:e,render:async(e,n,r)=>{let i=await t(e,n,r,{});return{head:i.head,body:i.body}}};export{n as renderer};
@@ -1 +1 @@
1
- const t=(r,e)=>[...r||[],...e||[]];export{t as mergeArrays};
1
+ var e=(e,t)=>[...e||[],...t||[]];export{e as mergeArrays};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/react",
3
- "version": "0.0.1-dev.1773878362211",
3
+ "version": "0.0.1-dev.1774224866171",
4
4
  "devDependencies": {
5
5
  "@picked/client": "workspace:*",
6
6
  "@repo/eslint-config": "workspace:*",
@@ -10,8 +10,8 @@
10
10
  "@types/node": "^22",
11
11
  "@types/react": "19.2.4",
12
12
  "@types/react-dom": "19.2.3",
13
- "@vitejs/plugin-react": "^4.5.2",
14
- "@vitest/coverage-v8": "^4.0.17",
13
+ "@vitejs/plugin-react": "^6.0.1",
14
+ "@vitest/coverage-v8": "^4.1.0",
15
15
  "effector": "^23.3.0",
16
16
  "effector-react": "^23.3.0",
17
17
  "fast-glob": "^3.3.3",
@@ -19,9 +19,9 @@
19
19
  "size-limit": "^12.0.0",
20
20
  "typedoc": "^0.28.5",
21
21
  "typedoc-plugin-markdown": "^4.6.3",
22
- "vite": "^7.3.1",
22
+ "vite": "^8.0.1",
23
23
  "vite-plugin-dts": "^4.5.4",
24
- "vitest": "^4.0.17"
24
+ "vitest": "^4.1.0"
25
25
  },
26
26
  "exports": {
27
27
  ".": {
@@ -63,12 +63,12 @@
63
63
  "knip",
64
64
  "jscpd",
65
65
  "eslint",
66
- "tsc"
66
+ "tsgo"
67
67
  ]
68
68
  },
69
69
  "module": "./dist/index.js",
70
70
  "peerDependencies": {
71
- "@picked/client": "0.0.1-dev.1773878362211",
71
+ "@picked/client": "0.0.1-dev.1774224866171",
72
72
  "effector": "^23.3.0",
73
73
  "effector-react": "^23.3.0",
74
74
  "react": "19.2.2",
@@ -91,7 +91,7 @@
91
91
  "test:coverage": "vitest run --coverage",
92
92
  "test:packaged-types": "attw --pack",
93
93
  "test:watch": "vitest",
94
- "type-check": "tsc -p . --noEmit"
94
+ "type-check": "tsgo -p . --noEmit"
95
95
  },
96
96
  "size-limit": [
97
97
  {