@stackflow/react
Advanced tools
Comparing version 0.15.3 to 0.15.4-alpha.14
@@ -5,3 +5,4 @@ export * from "./ActivityComponentType"; | ||
export * from "./makeActivityId"; | ||
export * from "./makeStepId"; | ||
export * from "./useActivity"; | ||
export * from "./useActivityParams"; |
@@ -1,2 +0,2 @@ | ||
import type { PoppedEvent, PushedEvent, ReplacedEvent } from "@stackflow/core/dist/event-types"; | ||
import type { PoppedEvent, PushedEvent, ReplacedEvent, StepPoppedEvent, StepPushedEvent, StepReplacedEvent } from "@stackflow/core/dist/event-types"; | ||
import type { BaseDomainEvent } from "@stackflow/core/dist/event-types/_base"; | ||
@@ -9,2 +9,5 @@ export declare const useCoreActions: () => { | ||
pop: (params?: Omit<PoppedEvent, keyof BaseDomainEvent>) => void; | ||
stepPush: (params: Omit<StepPushedEvent, keyof BaseDomainEvent>) => void; | ||
stepReplace: (params: Omit<StepReplacedEvent, keyof BaseDomainEvent>) => void; | ||
stepPop: (params?: Omit<StepPoppedEvent, keyof BaseDomainEvent>) => void; | ||
}; |
@@ -9,1 +9,2 @@ export * from "./activity/ActivityComponentType"; | ||
export * from "./useActions"; | ||
export * from "./useStepActions"; |
@@ -1,2 +0,2 @@ | ||
"use strict";var bt=Object.create;var b=Object.defineProperty,Mt=Object.defineProperties,Nt=Object.getOwnPropertyDescriptor,Ut=Object.getOwnPropertyDescriptors,Ft=Object.getOwnPropertyNames,Y=Object.getOwnPropertySymbols,Ht=Object.getPrototypeOf,tt=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable;var Z=(t,o,e)=>o in t?b(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,m=(t,o)=>{for(var e in o||(o={}))tt.call(o,e)&&Z(t,e,o[e]);if(Y)for(var e of Y(o))Vt.call(o,e)&&Z(t,e,o[e]);return t},k=(t,o)=>Mt(t,Ut(o));var qt=(t,o)=>{for(var e in o)b(t,e,{get:o[e],enumerable:!0})},et=(t,o,e,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of Ft(o))!tt.call(t,p)&&p!==e&&b(t,p,{get:()=>o[p],enumerable:!(a=Nt(o,p))||a.enumerable});return t};var d=(t,o,e)=>(e=t!=null?bt(Ht(t)):{},et(o||!t||!t.__esModule?b(e,"default",{value:t,enumerable:!0}):e,t)),Kt=t=>et(b({},"__esModule",{value:!0}),t);var Zt={};qt(Zt,{stackflow:()=>Yt,useActions:()=>N,useActivity:()=>_t,useActivityParams:()=>Gt,useInitContext:()=>M,useStack:()=>Lt});module.exports=Kt(Zt);var rt=require("react");var ot=require("react"),R=(0,ot.createContext)(null);var _t=()=>(0,rt.useContext)(R);var it=require("react");function Gt(){return(0,it.useContext)(R).params}var at=d(require("react"));var nt=require("react"),F=(0,nt.createContext)({});function M(){return at.default.useContext(F)}var st=require("react");var ct=require("react"),H=(0,ct.createContext)(null);var Lt=()=>(0,st.useContext)(H);var C=d(require("react"));var pt=require("react"),V=(0,pt.createContext)(null);var g=require("@stackflow/core"),l=d(require("react")),Ct=d(require("react-fast-compare"));var ft=d(require("react"));var q=require("react"),mt=d(require("react-fast-compare"));function K(t){let o=(0,q.useRef)(t),e=o.current,a=(0,mt.default)(e,t);return(0,q.useEffect)(()=>{a||(o.current=t)}),a?e:t}var ut=({children:t,value:o})=>ft.default.createElement(R.Provider,{value:K(o)},t);var lt=require("@stackflow/core");function T(){return(0,lt.id)()}var vt=d(require("react"));var dt=({children:t,value:o})=>vt.default.createElement(F.Provider,{value:o},t);var Pt=require("react"),_=(0,Pt.createContext)(null);var yt=d(require("react"));var xt=({children:t,value:o})=>yt.default.createElement(_.Provider,{value:o},t);var kt=require("react");function A(){return(0,kt.useContext)(_)}var At=require("react"),G=(0,At.createContext)(null);var Wt=1e3,jt=Wt/60,St=({transitionDuration:t,initialActivity:o,activities:e,children:a})=>{let p=A(),s=M(),r=(0,l.useMemo)(()=>{let x=new Date().getTime()-t,u=o?(0,g.makeEvent)("Pushed",{activityId:T(),activityName:o({initContext:s}),activityParams:{},eventDate:x,skipEnterActiveState:!1}):null,y=p.reduce((U,j)=>{var Q,X;return(X=(Q=j.overrideInitialPushedEvent)==null?void 0:Q.call(j,{pushedEvent:U}))!=null?X:U},u);!!y&&!!u&&y.id!==u.id&&console.warn(`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${u.activityName}" in the "stackflow" is ignored.`);let S=y;S||console.warn("Stackflow - There is no initial activity. If you want to set the initial activity, add the `initialActivity` option of the `stackflow()` function or add a plugin that sets the initial activity. (e.g. `@stackflow/plugin-history-sync`)");let Bt=Object.keys(e).map(U=>(0,g.makeEvent)("ActivityRegistered",{activityName:U,eventDate:x})),J=[(0,g.makeEvent)("Initialized",{transitionDuration:t,eventDate:x}),...Bt];return S&&J.push(S),J},[]),n=(0,l.useMemo)(()=>(0,g.aggregate)(r,new Date().getTime()),[]),[i,c]=(0,l.useState)(()=>n),f=(0,l.useRef)(r),v=(0,l.useRef)(n),P=(0,l.useCallback)(()=>v.current,[v]),w=(0,l.useCallback)((x,u)=>{let y=[...f.current,(0,g.makeEvent)(x,u)],B=new Date().getTime(),S=(0,g.aggregate)(y,B);c(S),f.current=y,v.current=S},[f,c]);return(0,l.useEffect)(()=>{let x=setInterval(()=>{let u=f.current,y=(0,g.aggregate)(u,new Date().getTime());(0,Ct.default)(i,y)||(c(y),v.current=y),y.globalTransitionState==="idle"&&clearInterval(x)},jt);return()=>{clearInterval(x)}},[f,i,c]),l.default.createElement(G.Provider,{value:i},l.default.createElement(V.Provider,{value:(0,l.useMemo)(()=>({getStack:P,dispatchEvent:w}),[P,w])},a))};var E=d(require("react"));var I=()=>{let t=A(),o=M(),{dispatchEvent:e,getStack:a}=E.default.useContext(V),p=(0,E.useCallback)(c=>{let{isPrevented:f,params:v}=i("PUSHED",c);f||e("Pushed",m({},v))},[e]),s=(0,E.useCallback)(c=>{let{isPrevented:f,params:v}=i("REPLACED",c);f||e("Replaced",m({},v))},[e]),r=(0,E.useCallback)(c=>{let f=c!=null?c:{},{isPrevented:v,params:P}=i("POPPED",f);v||e("Popped",m({},P))},[e]),n=(0,E.useMemo)(()=>({dispatchEvent:e,getStack:a,push:p,replace:s,pop:r}),[e,a,p,s,r]),i=(0,E.useCallback)((c,f)=>{let v=!1,P=m({},f),w=()=>{v=!0},x=u=>{P=m(m({},P),u)};return t.forEach(u=>{var y,B,S;switch(c){case"PUSHED":(y=u.onBeforePush)==null||y.call(u,{actionParams:P,actions:k(m({},n),{preventDefault:w,overrideActionParams:x})});break;case"REPLACED":(B=u.onBeforeReplace)==null||B.call(u,{actionParams:P,actions:k(m({},n),{preventDefault:w,overrideActionParams:x})});break;case"POPPED":(S=u.onBeforePop)==null||S.call(u,{actionParams:P,actions:k(m({},n),{preventDefault:w,overrideActionParams:x})});break;default:break}}),{isPrevented:v,params:P}},[t,o]);return n};var gt=d(require("react"));var D=()=>gt.default.useContext(G);var Et=require("@stackflow/core"),h=require("react");var $t=()=>{let t=A(),o=D(),e=I(),a=(0,h.useCallback)(r=>{t.forEach(n=>{var i;(i=n.onInit)==null||i.call(n,r)})},[]),p=(0,h.useCallback)(({actions:r,effect:n})=>{switch(n._TAG){case"PUSHED":{t.forEach(i=>{var c;return(c=i.onPushed)==null?void 0:c.call(i,{actions:r,effect:n})});break}case"POPPED":{t.forEach(i=>{var c;return(c=i.onPopped)==null?void 0:c.call(i,{actions:r,effect:n})});break}case"REPLACED":{t.forEach(i=>{var c;return(c=i.onReplaced)==null?void 0:c.call(i,{actions:r,effect:n})});break}case"%SOMETHING_CHANGED%":{t.forEach(i=>{var c;return(c=i.onChanged)==null?void 0:c.call(i,{actions:r,effect:n})});break}default:break}},[]);(0,h.useEffect)(()=>{a==null||a({actions:e})},[]);let s=(0,h.useRef)(o);return(0,h.useEffect)(()=>{let r=s.current;(r?(0,Et.produceEffects)(r,o):[]).forEach(i=>{p({actions:e,effect:i})}),s.current=m({},o)},[o]),null},ht=$t;var O=d(require("react"));var L=d(require("react"));var wt=d(require("react"));var Rt=({children:t,value:o})=>wt.default.createElement(H.Provider,{value:K(o)},t);var zt=({activities:t,plugin:o})=>{let e=D(),a=A();return o.render({stack:k(m({},e),{render(p){let s=m(m({},e),p);return{activities:s.activities.map(r=>k(m({},r),{key:r.id,render(n){let i=t[r.name],c=L.default.createElement(i,{params:r.params});return a.forEach(f=>{var v,P;c=(P=(v=f.wrapActivity)==null?void 0:v.call(f,{activity:k(m({},r),{render:()=>c})}))!=null?P:c}),L.default.createElement(Rt,{value:s},L.default.createElement(ut,{key:r.id,value:m(m({},r),n)},c))}}))}}})})},Tt=zt;var Jt=({activities:t})=>{let o=D(),e=A(),a=e.filter(s=>!!s.render);(0,O.useEffect)(()=>{a.length===0&&console.warn(`Stackflow - There is no rendering plugin, so "<Stack />" doesn't render anything. If you want to render some UI, use "@stackflow/plugin-renderer-basic" or add another rendering plugin.`)},[a]);let p=O.default.createElement(O.default.Fragment,null,a.map(s=>O.default.createElement(Tt,{activities:t,key:s.key,plugin:s})));return e.forEach(s=>{var r,n;p=(n=(r=s.wrapStack)==null?void 0:r.call(s,{stack:k(m({},o),{render(){return p}})}))!=null?n:p}),p},It=Jt;var z=d(require("react"));var W=d(require("react"));function $(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}var Dt,Qt=(Dt=W.default.useTransition)!=null?Dt:()=>[!1,t=>t()];function N(){let t=I(),[o,e]=Qt();return(0,W.useMemo)(()=>({pending:o,push(a,p,s){let r=T();return e(()=>{t.push({activityId:r,activityName:a,activityParams:p,skipEnterActiveState:$(s).skipActiveState})}),{activityId:r}},replace(a,p,s){let r=T();return e(()=>{var n;t.replace({activityId:(n=s==null?void 0:s.activityId)!=null?n:T(),activityName:a,activityParams:p,skipEnterActiveState:$(s).skipActiveState})}),{activityId:r}},pop(a){e(()=>{t.pop({skipExitActiveState:$(a).skipActiveState})})}}),[t.push,t.replace,t.pop,o,e])}var Xt=z.default.forwardRef((t,o)=>{let{dispatchEvent:e,getStack:a}=I(),{push:p,pop:s,replace:r}=N();return z.default.useImperativeHandle(o,()=>({actions:{dispatchEvent:e,getStack:a,push:p,pop:s,replace:r}})),null}),Ot=Xt;function Yt(t){let o=Object.entries(t.activities).reduce((r,[n,i])=>k(m({},r),{[n]:C.default.memo(i)}),{});typeof window!="undefined"&&window.document.documentElement.style.setProperty("--stackflow-transition-duration",`${t.transitionDuration}ms`);let e={current:null},a=r=>`\`<Stack />\` component has not been mounted. Make sure you include \`<Stack />\` within your React tree. Or, make sure you call \`${r}()\` after it is rendered.`;return{Stack:r=>{var i;let n=(0,C.useMemo)(()=>{var c;return((c=t.plugins)!=null?c:[]).flat(1/0).map(f=>f).map(f=>f({initContext:r.initContext}))},[]);return C.default.createElement(dt,{value:(i=r.initContext)!=null?i:{}},C.default.createElement(xt,{value:n},C.default.createElement(St,{activities:o,initialActivity:t.initialActivity,transitionDuration:t.transitionDuration},C.default.createElement(It,{activities:o}),C.default.createElement(ht,null),C.default.createElement(Ot,{ref:e}))))},useFlow:N,actions:{dispatchEvent(r,n){if(!e.current)throw new Error(a("dispatchEvent"));return e.current.actions.dispatchEvent(r,n)},getStack(){if(!e.current)throw new Error(a("getStack"));return e.current.actions.getStack()},push(r,n,i){if(!e.current)throw new Error(a("push"));return e.current.actions.push(r,n,i)},pop(r){if(!e.current)throw new Error(a("pop"));return e.current.actions.pop(r)},replace(r,n,i){if(!e.current)throw new Error(a("replace"));return e.current.actions.replace(r,n,i)}}}} | ||
"use strict";var _t=Object.create;var _=Object.defineProperty,Ht=Object.defineProperties,Kt=Object.getOwnPropertyDescriptor,Lt=Object.getOwnPropertyDescriptors,Vt=Object.getOwnPropertyNames,ot=Object.getOwnPropertySymbols,qt=Object.getPrototypeOf,it=Object.prototype.hasOwnProperty,Gt=Object.prototype.propertyIsEnumerable;var rt=(t,o,e)=>o in t?_(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,p=(t,o)=>{for(var e in o||(o={}))it.call(o,e)&&rt(t,e,o[e]);if(ot)for(var e of ot(o))Gt.call(o,e)&&rt(t,e,o[e]);return t},S=(t,o)=>Ht(t,Lt(o));var Wt=(t,o)=>{for(var e in o)_(t,e,{get:o[e],enumerable:!0})},nt=(t,o,e,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let c of Vt(o))!it.call(t,c)&&c!==e&&_(t,c,{get:()=>o[c],enumerable:!(n=Kt(o,c))||n.enumerable});return t};var x=(t,o,e)=>(e=t!=null?_t(qt(t)):{},nt(o||!t||!t.__esModule?_(e,"default",{value:t,enumerable:!0}):e,t)),jt=t=>nt(_({},"__esModule",{value:!0}),t);var ne={};Wt(ne,{stackflow:()=>ie,useActions:()=>K,useActivity:()=>$t,useActivityParams:()=>zt,useInitContext:()=>H,useStack:()=>Jt,useStepActions:()=>L});module.exports=jt(ne);var at=require("react");var st=require("react"),I=(0,st.createContext)(null);var $t=()=>(0,at.useContext)(I);var ct=require("react");function zt(){return(0,ct.useContext)(I).params}var mt=x(require("react"));var pt=require("react"),q=(0,pt.createContext)({});function H(){return mt.default.useContext(q)}var ut=require("react");var ft=require("react"),G=(0,ft.createContext)(null);var Jt=()=>(0,ut.useContext)(G);var h=x(require("react"));var vt=require("react"),W=(0,vt.createContext)(null);var w=require("@stackflow/core"),y=x(require("react")),Rt=x(require("react-fast-compare"));var dt=x(require("react"));var j=require("react"),Pt=x(require("react-fast-compare"));function $(t){let o=(0,j.useRef)(t),e=o.current,n=(0,Pt.default)(e,t);return(0,j.useEffect)(()=>{n||(o.current=t)}),n?e:t}var lt=({children:t,value:o})=>dt.default.createElement(I.Provider,{value:$(o)},t);var yt=require("@stackflow/core");function B(){return(0,yt.id)()}var kt=require("@stackflow/core");function Z(){return(0,kt.id)()}var xt=x(require("react"));var St=({children:t,value:o})=>xt.default.createElement(q.Provider,{value:o},t);var At=require("react"),z=(0,At.createContext)(null);var Et=x(require("react"));var Ct=({children:t,value:o})=>Et.default.createElement(z.Provider,{value:o},t);var ht=require("react");function C(){return(0,ht.useContext)(z)}var Tt=require("react"),J=(0,Tt.createContext)(null);var Qt=1e3,Xt=Qt/60,wt=({transitionDuration:t,initialActivity:o,activities:e,children:n})=>{let c=C(),m=H(),r=(0,y.useMemo)(()=>{let v=new Date().getTime()-t,P=o?[(0,w.makeEvent)("Pushed",{activityId:B(),activityName:o({initContext:m}),activityParams:{},eventDate:v,skipEnterActiveState:!1})]:[],l=c.reduce((R,O)=>{var N,F;return(F=(N=O.overrideInitialEvents)==null?void 0:N.call(O,{initialEvents:R}))!=null?F:R},P);!!l&&!!P&&l!==P&&console.warn(`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${P[0].activityName}" in the "stackflow" is ignored.`);let f=l;f.length===0&&console.warn("Stackflow - There is no initial activity. If you want to set the initial activity, add the `initialActivity` option of the `stackflow()` function or add a plugin that sets the initial activity. (e.g. `@stackflow/plugin-history-sync`)");let V=Object.keys(e).map(R=>(0,w.makeEvent)("ActivityRegistered",{activityName:R,eventDate:v})),M=[(0,w.makeEvent)("Initialized",{transitionDuration:t,eventDate:v}),...V];return f.forEach(R=>{M.push(R)}),M},[]),s=(0,y.useMemo)(()=>(0,w.aggregate)(r,new Date().getTime()),[]),[i,a]=(0,y.useState)(()=>s),d=(0,y.useRef)(r),A=(0,y.useRef)(s),u=(0,y.useCallback)(()=>A.current,[A]),k=(0,y.useCallback)((v,P)=>{let l=[...d.current,(0,w.makeEvent)(v,P)],T=new Date().getTime(),f=(0,w.aggregate)(l,T);a(f),d.current=l,A.current=f},[d,a]);return(0,y.useEffect)(()=>{let v=setInterval(()=>{let P=d.current,l=(0,w.aggregate)(P,new Date().getTime());(0,Rt.default)(i,l)||(a(l),A.current=l),l.globalTransitionState==="idle"&&clearInterval(v)},Xt);return()=>{clearInterval(v)}},[d,i,a]),y.default.createElement(J.Provider,{value:i},y.default.createElement(W.Provider,{value:(0,y.useMemo)(()=>({getStack:u,dispatchEvent:k}),[u,k])},n))};var E=x(require("react"));var g=()=>{let t=C(),o=H(),{dispatchEvent:e,getStack:n}=E.default.useContext(W),c=(0,E.useCallback)(u=>{let{isPrevented:k,params:v}=A("PUSHED",u);k||e("Pushed",p({},v))},[e]),m=(0,E.useCallback)(u=>{let{isPrevented:k,params:v}=A("REPLACED",u);k||e("Replaced",p({},v))},[e]),r=(0,E.useCallback)(u=>{let k=u!=null?u:{},{isPrevented:v,params:P}=A("POPPED",k);v||e("Popped",p({},P))},[e]),s=(0,E.useCallback)(u=>{let{isPrevented:k,params:v}=A("STEP_PUSHED",u);k||e("StepPushed",p({},v))},[e]),i=(0,E.useCallback)(u=>{let{isPrevented:k,params:v}=A("STEP_REPLACED",u);k||e("StepReplaced",p({},v))},[e]),a=(0,E.useCallback)(u=>{let k=u!=null?u:{},{isPrevented:v,params:P}=A("STEP_POPPED",k);v||e("StepPopped",p({},P))},[e]),d=(0,E.useMemo)(()=>({dispatchEvent:e,getStack:n,push:c,replace:m,pop:r,stepPush:s,stepReplace:i,stepPop:a}),[e,n,c,m,r,s,i,a]),A=(0,E.useCallback)((u,k)=>{let v=!1,P=p({},k),l=()=>{v=!0},T=f=>{P=p(p({},P),f)};return t.forEach(f=>{var V,M,R,O,N,F;switch(u){case"PUSHED":(V=f.onBeforePush)==null||V.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;case"REPLACED":(M=f.onBeforeReplace)==null||M.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;case"POPPED":(R=f.onBeforePop)==null||R.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;case"STEP_PUSHED":(O=f.onBeforeStepPush)==null||O.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;case"STEP_REPLACED":(N=f.onBeforeStepReplace)==null||N.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;case"STEP_POPPED":(F=f.onBeforeStepPop)==null||F.call(f,{actionParams:P,actions:S(p({},d),{preventDefault:l,overrideActionParams:T})});break;default:break}}),{isPrevented:v,params:P}},[t,o]);return d};var gt=x(require("react"));var b=()=>gt.default.useContext(J);var Dt=require("@stackflow/core"),D=require("react");var Yt=()=>{let t=C(),o=b(),e=g(),n=(0,D.useCallback)(r=>{t.forEach(s=>{var i;(i=s.onInit)==null||i.call(s,r)})},[]),c=(0,D.useCallback)(({actions:r,effect:s})=>{switch(s._TAG){case"PUSHED":{t.forEach(i=>{var a;return(a=i.onPushed)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"REPLACED":{t.forEach(i=>{var a;return(a=i.onReplaced)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"POPPED":{t.forEach(i=>{var a;return(a=i.onPopped)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"STEP_PUSHED":{t.forEach(i=>{var a;return(a=i.onStepPushed)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"STEP_REPLACED":{t.forEach(i=>{var a;return(a=i.onStepReplaced)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"STEP_POPPED":{t.forEach(i=>{var a;return(a=i.onStepPopped)==null?void 0:a.call(i,{actions:r,effect:s})});break}case"%SOMETHING_CHANGED%":{t.forEach(i=>{var a;return(a=i.onChanged)==null?void 0:a.call(i,{actions:r,effect:s})});break}default:break}},[]);(0,D.useEffect)(()=>{n==null||n({actions:e})},[]);let m=(0,D.useRef)(o);return(0,D.useEffect)(()=>{let r=m.current;(r?(0,Dt.produceEffects)(r,o):[]).forEach(i=>{c({actions:e,effect:i})}),m.current=p({},o)},[o]),null},Ot=Yt;var U=x(require("react"));var Q=x(require("react"));var It=x(require("react"));var Bt=({children:t,value:o})=>It.default.createElement(G.Provider,{value:$(o)},t);var Zt=({activities:t,plugin:o})=>{let e=b(),n=C();return o.render({stack:S(p({},e),{render(c){let m=p(p({},e),c);return{activities:m.activities.map(r=>S(p({},r),{key:r.id,render(s){let i=t[r.name],a=Q.default.createElement(i,{params:r.params});return n.forEach(d=>{var A,u;a=(u=(A=d.wrapActivity)==null?void 0:A.call(d,{activity:S(p({},r),{render:()=>a})}))!=null?u:a}),Q.default.createElement(Bt,{value:m},Q.default.createElement(lt,{key:r.id,value:p(p({},r),s)},a))}}))}}})})},bt=Zt;var te=({activities:t})=>{let o=b(),e=C(),n=e.filter(m=>!!m.render);(0,U.useEffect)(()=>{n.length===0&&console.warn(`Stackflow - There is no rendering plugin, so "<Stack />" doesn't render anything. If you want to render some UI, use "@stackflow/plugin-renderer-basic" or add another rendering plugin.`)},[n]);let c=U.default.createElement(U.default.Fragment,null,n.map(m=>U.default.createElement(bt,{activities:t,key:m.key,plugin:m})));return e.forEach(m=>{var r,s;c=(s=(r=m.wrapStack)==null?void 0:r.call(m,{stack:S(p({},o),{render(){return c}})}))!=null?s:c}),c},Ut=te;var et=x(require("react"));var X=x(require("react"));function tt(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}var Mt,ee=(Mt=X.default.useTransition)!=null?Mt:()=>[!1,t=>t()];function K(){let t=g(),[o,e]=ee();return(0,X.useMemo)(()=>({pending:o,push(n,c,m){let r=B();return e(()=>{t.push({activityId:r,activityName:n,activityParams:c,skipEnterActiveState:tt(m).skipActiveState})}),{activityId:r}},replace(n,c,m){let r=B();return e(()=>{var s;t.replace({activityId:(s=m==null?void 0:m.activityId)!=null?s:B(),activityName:n,activityParams:c,skipEnterActiveState:tt(m).skipActiveState})}),{activityId:r}},pop(n){e(()=>{t.pop({skipExitActiveState:tt(n).skipActiveState})})}}),[t.push,t.replace,t.pop,o,e])}var Y=x(require("react"));var Nt,oe=(Nt=Y.default.useTransition)!=null?Nt:()=>[!1,t=>t()],L=()=>{let t=g(),[o,e]=oe();return(0,Y.useMemo)(()=>({pending:o,stepPush(n){let c=Z();e(()=>{t.stepPush({stepId:c,stepParams:n})})},stepReplace(n){let c=Z();e(()=>{t.stepReplace({stepId:c,stepParams:n})})},stepPop(){e(()=>{t.stepPop({})})}}),[t.stepPush,t.stepReplace,t.stepPop,o,e])};var re=et.default.forwardRef((t,o)=>{let{dispatchEvent:e,getStack:n}=g(),{push:c,pop:m,replace:r}=K(),{stepPush:s,stepPop:i,stepReplace:a}=L("");return et.default.useImperativeHandle(o,()=>({actions:{dispatchEvent:e,getStack:n,push:c,pop:m,replace:r,stepPush:s,stepPop:i,stepReplace:a}})),null}),Ft=re;function ie(t){let o=Object.entries(t.activities).reduce((r,[s,i])=>S(p({},r),{[s]:h.default.memo(i)}),{});typeof window!="undefined"&&window.document.documentElement.style.setProperty("--stackflow-transition-duration",`${t.transitionDuration}ms`);let e={current:null},n=r=>`\`<Stack />\` component has not been mounted. Make sure you include \`<Stack />\` within your React tree. Or, make sure you call \`${r}()\` after it is rendered.`;return{Stack:r=>{var i;let s=(0,h.useMemo)(()=>{var a;return((a=t.plugins)!=null?a:[]).flat(1/0).map(d=>d).map(d=>d({initContext:r.initContext}))},[]);return h.default.createElement(St,{value:(i=r.initContext)!=null?i:{}},h.default.createElement(Ct,{value:s},h.default.createElement(wt,{activities:o,initialActivity:t.initialActivity,transitionDuration:t.transitionDuration},h.default.createElement(Ut,{activities:o}),h.default.createElement(Ot,null),h.default.createElement(Ft,{ref:e}))))},useFlow:K,useStepFlow:L,actions:{dispatchEvent(r,s){if(!e.current)throw new Error(n("dispatchEvent"));return e.current.actions.dispatchEvent(r,s)},getStack(){if(!e.current)throw new Error(n("getStack"));return e.current.actions.getStack()},push(r,s,i){if(!e.current)throw new Error(n("push"));return e.current.actions.push(r,s,i)},pop(r){if(!e.current)throw new Error(n("pop"));return e.current.actions.pop(r)},replace(r,s,i){if(!e.current)throw new Error(n("replace"));return e.current.actions.replace(r,s,i)},stepPush(r){if(!e.current)throw new Error(n("stepPush"));return e.current.actions.stepPush(r)},stepReplace(r){if(!e.current)throw new Error(n("stepReplace"));return e.current.actions.stepReplace(r)},stepPop(){if(!e.current)throw new Error(n("stepPop"));return e.current.actions.stepPop()}}}} | ||
//# sourceMappingURL=index.js.map |
@@ -7,2 +7,3 @@ import type { StackflowPluginActions } from "@stackflow/core"; | ||
import type { UseActionsOutputType } from "./useActions"; | ||
import type { UseStepActions, UseStepActionsOutputType } from "./useStepActions"; | ||
export interface StackProps { | ||
@@ -48,5 +49,9 @@ /** | ||
/** | ||
* Created `useStepFlow()` hooks | ||
*/ | ||
useStepFlow: UseStepActions<T>; | ||
/** | ||
* Created action triggers | ||
*/ | ||
actions: Pick<StackflowPluginActions, "dispatchEvent" | "getStack"> & Pick<UseActionsOutputType<T>, "push" | "pop" | "replace">; | ||
actions: Pick<StackflowPluginActions, "dispatchEvent" | "getStack"> & Pick<UseActionsOutputType<T>, "push" | "pop" | "replace"> & Pick<UseStepActionsOutputType<{}>, "stepPush" | "stepReplace" | "stepPop">; | ||
}; | ||
@@ -53,0 +58,0 @@ /** |
@@ -5,6 +5,7 @@ import type { StackflowPluginActions } from "@stackflow/core"; | ||
import type { UseActionsOutputType } from "./useActions"; | ||
import type { UseStepActionsOutputType } from "./useStepActions"; | ||
export declare type StackRefCurrentType<T extends BaseActivities> = { | ||
actions: Pick<StackflowPluginActions, "dispatchEvent" | "getStack"> & Pick<UseActionsOutputType<T>, "push" | "pop" | "replace">; | ||
actions: Pick<StackflowPluginActions, "dispatchEvent" | "getStack"> & Pick<UseActionsOutputType<T>, "push" | "pop" | "replace"> & Pick<UseStepActionsOutputType<{}>, "stepPush" | "stepReplace" | "stepPop">; | ||
}; | ||
declare const StackRefManager: React.ForwardRefExoticComponent<React.RefAttributes<StackRefCurrentType<BaseActivities>>>; | ||
export default StackRefManager; |
{ | ||
"name": "@stackflow/react", | ||
"version": "0.15.3", | ||
"version": "0.15.4-alpha.14+df2a2363", | ||
"license": "MIT", | ||
@@ -30,3 +30,3 @@ "exports": { | ||
"devDependencies": { | ||
"@stackflow/core": "^0.15.1", | ||
"@stackflow/core": "^0.15.2-alpha.33+df2a2363", | ||
"@stackflow/esbuild-config": "^0.15.0", | ||
@@ -53,3 +53,3 @@ "@types/react": "^18.0.9", | ||
}, | ||
"gitHead": "3a6532ace70f6738cf90f617e777ae25c367c3b2" | ||
"gitHead": "df2a2363c3e48a6a5fc09a567a66e9d52e956eb6" | ||
} |
@@ -5,3 +5,4 @@ export * from "./ActivityComponentType"; | ||
export * from "./makeActivityId"; | ||
export * from "./makeStepId"; | ||
export * from "./useActivity"; | ||
export * from "./useActivityParams"; |
@@ -6,2 +6,5 @@ import type { Effect } from "@stackflow/core"; | ||
ReplacedEvent, | ||
StepPoppedEvent, | ||
StepPushedEvent, | ||
StepReplacedEvent, | ||
} from "@stackflow/core/dist/event-types"; | ||
@@ -72,2 +75,53 @@ import type { BaseDomainEvent } from "@stackflow/core/dist/event-types/_base"; | ||
const stepPush = useCallback( | ||
(params: Omit<StepPushedEvent, keyof BaseDomainEvent>) => { | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"STEP_PUSHED", | ||
params, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("StepPushed", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const stepReplace = useCallback( | ||
(params: Omit<StepReplacedEvent, keyof BaseDomainEvent>) => { | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"STEP_REPLACED", | ||
params, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("StepReplaced", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const stepPop = useCallback( | ||
(params?: Omit<StepPoppedEvent, keyof BaseDomainEvent>) => { | ||
const initialParams = params ?? {}; | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"STEP_POPPED", | ||
initialParams, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("StepPopped", { ...eventParams }); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const coreActions = useMemo( | ||
@@ -80,4 +134,16 @@ () => ({ | ||
pop, | ||
stepPush, | ||
stepReplace, | ||
stepPop, | ||
}), | ||
[dispatchEvent, getStack, push, replace, pop], | ||
[ | ||
dispatchEvent, | ||
getStack, | ||
push, | ||
replace, | ||
pop, | ||
stepPush, | ||
stepReplace, | ||
stepPop, | ||
], | ||
); | ||
@@ -134,2 +200,32 @@ | ||
break; | ||
case "STEP_PUSHED": | ||
plugin.onBeforeStepPush?.({ | ||
actionParams, | ||
actions: { | ||
...coreActions, | ||
preventDefault, | ||
overrideActionParams, | ||
}, | ||
}); | ||
break; | ||
case "STEP_REPLACED": | ||
plugin.onBeforeStepReplace?.({ | ||
actionParams, | ||
actions: { | ||
...coreActions, | ||
preventDefault, | ||
overrideActionParams, | ||
}, | ||
}); | ||
break; | ||
case "STEP_POPPED": | ||
plugin.onBeforeStepPop?.({ | ||
actionParams, | ||
actions: { | ||
...coreActions, | ||
preventDefault, | ||
overrideActionParams, | ||
}, | ||
}); | ||
break; | ||
default: | ||
@@ -136,0 +232,0 @@ break; |
@@ -9,1 +9,2 @@ export * from "./activity/ActivityComponentType"; | ||
export * from "./useActions"; | ||
export * from "./useStepActions"; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
179852
85
1566
1