@picked/react 0.0.1-dev.1780446300503 → 0.0.1-dev.1780464669265

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Experience.d.ts","sourceRoot":"","sources":["../../src/experience/Experience.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAoB,MAAM,OAAO,CAAA;AAQxC,UAAU,eAAe;IACvB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAmED;;;;;;;;;;;;;;GAcG;AACH,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2ChE;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"Experience.d.ts","sourceRoot":"","sources":["../../src/experience/Experience.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAoB,MAAM,OAAO,CAAA;AAQxC,UAAU,eAAe;IACvB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAmFD;;;;;;;;;;;;;;GAcG;AACH,iBAAS,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2ChE;AAED,eAAe,UAAU,CAAA"}
@@ -1 +1 @@
1
- import{usePicked as e}from"../hooks/client.js";import"../hooks/index.js";import t from"./ExperienceHost.js";import{useEffect as n}from"react";import{supportsWindow as r}from"@picked/client";import{evaluateConditionMemo as i,hashRule as a}from"@picked/client/server";import{Fragment as o,jsx as s}from"react/jsx-runtime";import{useUnit as c}from"effector-react";var l=[`before`,`prepend`,`append`,`after`];function u(e){let t=l.indexOf(e);return t===-1?l.length:t}function d(e,t){let n=e.configStore.getState(),r=n.targetSelectors.find(e=>e.selector===t);return r?{experience:e,placement:r.placement,condition:n.decisionLogic,hash:a(n.decisionLogic)}:null}function f(){let{href:e,pathname:t,search:n,hostname:r,origin:i,protocol:a,port:o,host:s,hash:c}=window.location;return{href:e,pathname:t,search:n,hostname:r,origin:i,protocol:a,port:o,host:s,hash:c}}function p({name:a}){let l=e(),p=`.picked-slot-${a}`,m=c(l.experiences.listStore);c(l.conditionResults.store);let h=m.map(e=>d(e,p)).filter(e=>e!==null).sort((e,t)=>u(e.placement)-u(t.placement)),g=h.filter(e=>l.conditionResults.peek(e.hash)===!0);return n(()=>{if(r())for(let e of h)l.conditionResults.peek(e.hash)===void 0&&i(l,e.condition,{context:{location:f()}})}),s(o,{children:g.map(e=>s(t,{experience:e.experience,client:l},e.experience.id))})}export{p as default};
1
+ import{usePicked as e}from"../hooks/client.js";import{useStoreGlobal as t}from"../hooks/use-store-global.js";import"../hooks/index.js";import n from"./ExperienceHost.js";import{useEffect as r}from"react";import{supportsWindow as i}from"@picked/client";import{evaluateConditionMemo as a,hashRule as o,ruleReferencesAction as s}from"@picked/client/server";import{Fragment as c,jsx as l}from"react/jsx-runtime";var u=[`before`,`prepend`,`append`,`after`];function d(e){let t=u.indexOf(e);return t===-1?u.length:t}function f(e,t){let n=e.configStore.getState(),r=n.targetSelectors.find(e=>e.selector===t);return!r||r.placement===`replace`||s(n.decisionLogic)?null:{experience:e,placement:r.placement,condition:n.decisionLogic,hash:o(n.decisionLogic)}}function p(){let{href:e,pathname:t,search:n,hostname:r,origin:i,protocol:a,port:o,host:s,hash:c}=globalThis.location;return{href:e,pathname:t,search:n,hostname:r,origin:i,protocol:a,port:o,host:s,hash:c}}function m({name:o}){let s=e(),u=`.picked-slot-${o}`,m=t(s.experiences.listStore);t(s.conditionResults.store);let h=m.map(e=>f(e,u)).filter(e=>e!==null).sort((e,t)=>d(e.placement)-d(t.placement)),g=h.filter(e=>s.conditionResults.peek(e.hash)===!0);return r(()=>{if(i())for(let e of h)s.conditionResults.peek(e.hash)===void 0&&a(s,e.condition,{context:{location:p()}})}),l(c,{children:g.map(e=>l(n,{experience:e.experience,client:s},e.experience.id))})}export{m as default};
@@ -1 +1 @@
1
- {"version":3,"file":"ExperienceHost.d.ts","sourceRoot":"","sources":["../../src/experience/ExperienceHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAA+C,MAAM,OAAO,CAAA;AAGnE,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAMjF,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAsD7F;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"ExperienceHost.d.ts","sourceRoot":"","sources":["../../src/experience/ExperienceHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAsB,eAAe,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAOjF,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,iBAAS,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAyD7F;AAED,eAAe,cAAc,CAAA"}
@@ -1 +1 @@
1
- import{isValidAdaptedComponent as e}from"../component.js";import{ExperienceProvider as t}from"../context.js";import n,{Suspense as r,useEffect as i,useMemo as a,useRef as o}from"react";import{isLazyLoader as s,supportsWindow as c}from"@picked/client";import{createExperienceInstance as l}from"@picked/client/server";import{jsx as u}from"react/jsx-runtime";import{useUnit as d}from"effector-react";function f(e){return typeof e==`function`&&!s(e)&&!(e instanceof Promise)}function p({experience:p,client:m}){let h=o(null);h.current??=l({client:m,experience:p});let g=h.current,_=d(g.componentAndFrameworkStore),v=d(m.readyStore);i(()=>{v&&c()&&p.prepareExperienceContentFx()},[v,p]);let y=_?.component.component,b=y&&e(y)?y.component:void 0,x=a(()=>s(b)?n.lazy(()=>b.load()):b instanceof Promise?n.lazy(()=>b):null,[b]);return f(b)?u(t,{value:g,children:u(b,{client:m,experience:g})}):x?u(t,{value:g,children:u(r,{fallback:null,children:u(x,{client:m,experience:g})})}):null}export{p as default};
1
+ import{isValidAdaptedComponent as e}from"../component.js";import{ExperienceProvider as t}from"../context.js";import{useStoreGlobal as n}from"../hooks/use-store-global.js";import r,{Suspense as i,useEffect as a,useMemo as o,useRef as s}from"react";import{isLazyLoader as c,supportsWindow as l}from"@picked/client";import{createExperienceInstance as u}from"@picked/client/server";import{jsx as d}from"react/jsx-runtime";function f(e){return typeof e==`function`&&!c(e)&&!(e instanceof Promise)}function p({experience:p,client:m}){let h=s(null);h.current??=u({client:m,experience:p});let g=h.current,_=n(g.componentAndFrameworkStore),v=n(m.readyStore);a(()=>{v&&l()&&p.prepareExperienceContentFx().catch(()=>void 0)},[v,p]);let y=_?.component.component,b=y&&e(y)?y.component:void 0,x=o(()=>c(b)?r.lazy(()=>b.load()):b instanceof Promise?r.lazy(()=>b):null,[b]);return f(b)?d(t,{value:g,children:d(b,{client:m,experience:g})}):x?d(t,{value:g,children:d(i,{fallback:null,children:d(x,{client:m,experience:g})})}):null}export{p as default};
@@ -1 +1 @@
1
- import{usePicked as e}from"./client.js";import{useUnit as t}from"effector-react";import{attach as n,createEffect as r,createEvent as i,createStore as a,sample as o}from"effector";function s(n,r){return t(e().actions.getEvokableAction(n,r))}function c(s,c){let l=e().actions.getEvokableAction(s,c),u=a(void 0,{skipVoid:!1}),d=i(),f=n({source:l,mapParams:(e,t)=>t,effect:r(async e=>{if(e)return await e()})});return o({clock:d,target:f}),o({clock:f.doneData,target:u}),d(),o({clock:l,target:d}),t(u)}export{s as useAction,c as useActionResult};
1
+ import{usePicked as e}from"./client.js";import{useStoreGlobal as t}from"./use-store-global.js";import{attach as n,createEffect as r,createEvent as i,createStore as a,sample as o}from"effector";function s(n,r){return t(e().actions.getEvokableAction(n,r))}function c(s,c){let l=e().actions.getEvokableAction(s,c),u=a(void 0,{skipVoid:!1}),d=i(),f=n({source:l,mapParams:(e,t)=>t,effect:r(async e=>{if(e)return await e()})});return o({clock:d,target:f}),o({clock:f.doneData,target:u}),d(),o({clock:l,target:d}),t(u)}export{s as useAction,c as useActionResult};
@@ -1 +1 @@
1
- import{usePicked as e}from"./client.js";import{useUnit as t}from"effector-react";import{attach as n,createEffect as r,createEvent as i,createStore as a,sample as o}from"effector";function s(t){return e().features.getEvokableFeature(t)}function c(e){return t(s(e))}function l(e){let c=s(e),l=a(void 0,{skipVoid:!1}),u=i(),d=n({source:c,mapParams:(e,t)=>t,effect:r(async e=>await e())});return o({clock:u,target:d}),o({clock:d.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:l}),u(),o({clock:c,target:u}),t(l)}export{c as useFeature,l as useFeatureResult};
1
+ import{usePicked as e}from"./client.js";import{useStoreGlobal as t}from"./use-store-global.js";import{attach as n,createEffect as r,createEvent as i,createStore as a,sample as o}from"effector";function s(t){return e().features.getEvokableFeature(t)}function c(e){return t(s(e))}function l(e){let c=s(e),l=a(void 0,{skipVoid:!1}),u=i(),d=n({source:c,mapParams:(e,t)=>t,effect:r(async e=>await e())});return o({clock:u,target:d}),o({clock:d.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:l}),u(),o({clock:c,target:u}),t(l)}export{c as useFeature,l as useFeatureResult};
@@ -39,17 +39,16 @@ export declare function useStep(): StepContext;
39
39
  */
40
40
  export declare function useSetStepContext(stepKey: string): StepContext;
41
41
  /**
42
- * Returns the current step's resolved CMS content data, or `null` when no content is
43
- * registered for the step's `layoutContentId`. Subscribes to `useStep().layoutContentStore`
44
- * via Effector's `useUnit`, so the component re-renders on content updates.
42
+ * Returns the current step's resolved CMS content data, or `null` when no content is registered.
43
+ *
44
+ * Reads `StepContextProvider` when present (the `StepRouter`/`Step` path); when absent (the slot
45
+ * render path, where only an `ExperienceProvider` is mounted) it falls back to resolving the
46
+ * experience's layout content, so slot-rendered components read content without crashing.
47
+ * Subscribes via `useStoreGlobal`, so the component re-renders on content updates.
45
48
  *
46
49
  * @returns {Record<string, unknown> | null} The Content record's `data`, or `null`.
47
- * @throws {Error} When called outside `StepContextProvider`.
48
50
  * @example
49
- * ```tsx
50
51
  * const content = useStepContent()
51
- * return <Layout headline={content?.headline as string ?? ''} />
52
- * ```
53
52
  */
54
53
  export declare function useStepContent(): Record<string, unknown> | null;
55
54
  //# sourceMappingURL=step.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/hooks/step.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAGjE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAC3B,kFAAkF;IAClF,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;IAC/B;;;;;OAKG;IACH,kBAAkB,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;CAC3B;AAED,eAAO,MAAM,mBAAmB,6CAA0C,CAAA;AAE1E;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,WAAW,CAOrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA6D9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAI/D"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/hooks/step.ts"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAIjE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAA;IAC3B,kFAAkF;IAClF,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;IAC/B;;;;;OAKG;IACH,kBAAkB,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACzC,QAAQ,EAAE,OAAO,CAAA;IACjB,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;CAC3B;AAED,eAAO,MAAM,mBAAmB,6CAA0C,CAAA;AAE1E;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,WAAW,CAOrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA6D9D;AAgCD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAM/D"}
@@ -1 +1 @@
1
- import{useExperience as e,usePicked as t}from"./client.js";import{useForm as n}from"../form/index.js";import{useStepRouter as r}from"../router/context.js";import{createContext as i,useContext as a,useMemo as o}from"react";import{useUnit as s}from"effector-react";import{combine as c}from"effector";var l=i(null);function u(){let e=a(l);if(!e)throw Error(`useStep must be used within a StepContextProvider`);return e}function d(i){let a=e(),s=t(),{activeStep:l}=r(),u=o(()=>l?.key===i,[l?.key,i]),d=o(()=>a.treeStore.map(e=>e.steps.find(e=>e.key===i)??{id:i,key:i,name:``,fieldKeys:[]},{skipVoid:!1}),[a,i]),{form:f,fields:p}=n(i,o(()=>d.map(e=>e.name,{skipVoid:!1}),[d]),o(()=>d.map(e=>e.fieldKeys,{skipVoid:!1}),[d]));return{step:d,fields:p,layoutContentStore:o(()=>c(d,s.contents.indexStore,(e,t)=>e.layoutContentId?t[e.layoutContentId]??null:null,{skipVoid:!1}),[d,s]),isActive:u,isActiveStep:u,form:f}}function f(){let{layoutContentStore:e}=u();return s(e)?.data??null}export{l as StepContextProvider,d as useSetStepContext,u as useStep,f as useStepContent};
1
+ import{useExperience as e,usePicked as t}from"./client.js";import{useForm as n}from"../form/index.js";import{useStepRouter as r}from"../router/context.js";import{useStoreGlobal as i}from"./use-store-global.js";import{createContext as a,useContext as o,useMemo as s}from"react";import{combine as c}from"effector";var l=a(null);function u(){let e=o(l);if(!e)throw Error(`useStep must be used within a StepContextProvider`);return e}function d(i){let a=e(),o=t(),{activeStep:l}=r(),u=s(()=>l?.key===i,[l?.key,i]),d=s(()=>a.treeStore.map(e=>e.steps.find(e=>e.key===i)??{id:i,key:i,name:``,fieldKeys:[]},{skipVoid:!1}),[a,i]),{form:f,fields:p}=n(i,s(()=>d.map(e=>e.name,{skipVoid:!1}),[d]),s(()=>d.map(e=>e.fieldKeys,{skipVoid:!1}),[d]));return{step:d,fields:p,layoutContentStore:s(()=>c(d,o.contents.indexStore,(e,t)=>e.layoutContentId?t[e.layoutContentId]??null:null,{skipVoid:!1}),[d,o]),isActive:u,isActiveStep:u,form:f}}function f(){let n=e(),r=t();return s(()=>c(n.treeStore,r.contents.indexStore,(e,t)=>{let n=e.steps.find(e=>e.layoutContentId);return n?.layoutContentId?t[n.layoutContentId]??null:null}),[n,r])}function p(){let e=o(l),t=f();return i(e?.layoutContentStore??t)?.data??null}export{l as StepContextProvider,d as useSetStepContext,u as useStep,p as useStepContent};
@@ -0,0 +1,18 @@
1
+ import { Store } from 'effector';
2
+ /**
3
+ * Reads an effector store's global value, independent of any effector scope a host app may have
4
+ * installed via `effector-react`'s `<Provider>`.
5
+ *
6
+ * The Picked client is a global singleton (SSR isolation comes from per-request client instances,
7
+ * not effector `fork()` scopes), so its stores must be read scope-agnostically. Reading them through
8
+ * scope-aware `useUnit` inside a host `fork()` scope pins the value to the empty fork-time snapshot
9
+ * and misses post-`start()` updates, leaving slot components frozen and empty.
10
+ *
11
+ * @template T - The store's value type.
12
+ * @param {Store<T>} store - The Picked client store to read globally.
13
+ * @returns {T} The store's current global value, re-rendering on global updates.
14
+ * @example
15
+ * const experiences = useStoreGlobal(client.experiences.listStore)
16
+ */
17
+ export declare function useStoreGlobal<T>(store: Store<T>): T;
18
+ //# sourceMappingURL=use-store-global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-store-global.d.ts","sourceRoot":"","sources":["../../src/hooks/use-store-global.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAgCrC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAMpD"}
@@ -0,0 +1 @@
1
+ import{useSyncExternalStore as e}from"react";var t=new WeakMap;function n(e){let n=t.get(e);if(n)return n;let r=t=>{let n=e.watch(()=>t());return()=>n.unsubscribe()};return t.set(e,r),r}function r(t){return e(n(t),()=>t.getState(),()=>t.getState())}export{r as useStoreGlobal};
@@ -5,11 +5,12 @@ interface StepRouterProps {
5
5
  /**
6
6
  * Manages step registration and renders children within a step router context.
7
7
  *
8
- * @param props - The router props containing children to render.
9
- * @param props.children
8
+ * @param {StepRouterProps} props - The router props.
9
+ * @param {React.ReactNode} props.children - The steps to register and render.
10
+ * @returns {React.JSX.Element | null} The step router context wrapping its children, or null until the current step is known.
10
11
  * @example
11
12
  * <StepRouter><Step key="welcome" /></StepRouter>
12
13
  */
13
- declare function StepRouter({ children }: StepRouterProps): import("react/jsx-runtime").JSX.Element | null;
14
+ declare function StepRouter({ children }: StepRouterProps): React.JSX.Element | null;
14
15
  export default StepRouter;
15
16
  //# sourceMappingURL=StepRouter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StepRouter.d.ts","sourceRoot":"","sources":["../../src/router/StepRouter.tsx"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAiD,MAAM,OAAO,CAAA;AAMrE,UAAU,eAAe;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC;AAED;;;;;;;GAOG;AACH,iBAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,kDAiDhD;AAED,eAAe,UAAU,CAAA"}
1
+ {"version":3,"file":"StepRouter.d.ts","sourceRoot":"","sources":["../../src/router/StepRouter.tsx"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,KAAiD,MAAM,OAAO,CAAA;AAMrE,UAAU,eAAe;IACvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC;AAED;;;;;;;;GAQG;AACH,iBAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAiD3E;AAED,eAAe,UAAU,CAAA"}
@@ -1 +1 @@
1
- import{useExperience as e}from"../hooks/client.js";import{StepRouterProvider as t}from"./context.js";import"../hooks/index.js";import{useCallback as n,useMemo as r,useRef as i,useState as a}from"react";import{supportsWindow as o}from"@picked/client";import{jsx as s}from"react/jsx-runtime";import{useUnit as c}from"effector-react";function l({children:l}){let{currentStepStore:u}=e(),d=c(u),f=i(!1),[p,m]=a([]),[h,g]=a(null),_=n(e=>{if(o())m(t=>[...t,e]);else{if(f.current)return;e.key===d?.key&&(g(e),f.current=!0)}},[d?.key]),v=n(e=>{m(t=>t.filter(t=>t!==e))},[]),y=r(()=>h??p.find(e=>e.key===d?.key)??null,[h,p,d?.key]),b=r(()=>({activeStep:y,registerStep:_,unregisterStep:v}),[y,_,v]);return d?.key?s(t,{value:b,children:l}):null}export{l as default};
1
+ import{useExperience as e}from"../hooks/client.js";import{StepRouterProvider as t}from"./context.js";import{useStoreGlobal as n}from"../hooks/use-store-global.js";import"../hooks/index.js";import{useCallback as r,useMemo as i,useRef as a,useState as o}from"react";import{supportsWindow as s}from"@picked/client";import{jsx as c}from"react/jsx-runtime";function l({children:l}){let{currentStepStore:u}=e(),d=n(u),f=a(!1),[p,m]=o([]),[h,g]=o(null),_=r(e=>{if(s())m(t=>[...t,e]);else{if(f.current)return;e.key===d?.key&&(g(e),f.current=!0)}},[d?.key]),v=r(e=>{m(t=>t.filter(t=>t!==e))},[]),y=i(()=>h??p.find(e=>e.key===d?.key)??null,[h,p,d?.key]),b=i(()=>({activeStep:y,registerStep:_,unregisterStep:v}),[y,_,v]);return d?.key?c(t,{value:b,children:l}):null}export{l as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@picked/react",
3
- "version": "0.0.1-dev.1780446300503",
3
+ "version": "0.0.1-dev.1780464669265",
4
4
  "devDependencies": {
5
5
  "@picked/client": "workspace:*",
6
6
  "@repo/eslint-config": "workspace:*",
@@ -11,7 +11,7 @@
11
11
  "@types/react": "19.2.4",
12
12
  "@types/react-dom": "19.2.3",
13
13
  "@vitejs/plugin-react": "^6.0.1",
14
- "@vitest/coverage-v8": "^4.1.0",
14
+ "@vitest/coverage-v8": "^4.1.8",
15
15
  "effector": "^23.3.0",
16
16
  "effector-react": "^23.3.0",
17
17
  "fast-glob": "^3.3.3",
@@ -21,7 +21,7 @@
21
21
  "typedoc-plugin-markdown": "^4.6.3",
22
22
  "vite": "^8.0.8",
23
23
  "vite-plugin-dts": "^4.5.4",
24
- "vitest": "^4.1.0"
24
+ "vitest": "^4.1.8"
25
25
  },
26
26
  "exports": {
27
27
  ".": {
@@ -85,9 +85,8 @@
85
85
  },
86
86
  "module": "./dist/index.js",
87
87
  "peerDependencies": {
88
- "@picked/client": "0.0.1-dev.1780446300503",
88
+ "@picked/client": "0.0.1-dev.1780464669265",
89
89
  "effector": "^23.3.0",
90
- "effector-react": "^23.3.0",
91
90
  "react": "19.2.2",
92
91
  "react-dom": "19.2.2"
93
92
  },