@stackflow/react
Advanced tools
Comparing version 0.6.0 to 0.6.1-alpha.1
@@ -1,5 +0,6 @@ | ||
import { ActivityParams } from "@stackflow/core"; | ||
import React from "react"; | ||
export declare type ActivityComponentType<T extends ActivityParams<T> = {}> = React.ComponentType<{ | ||
export declare type ActivityComponentType<T extends { | ||
[K in keyof T]: string | undefined; | ||
} = {}> = React.ComponentType<{ | ||
params: T; | ||
}>; |
@@ -7,1 +7,2 @@ export * from "./ActivityComponentType"; | ||
export * from "./useActivityParams"; | ||
export * from "./useActivityPreloadRef"; |
@@ -1,5 +0,6 @@ | ||
import { ActivityParams } from "@stackflow/core"; | ||
/** | ||
* Get current activity parameters | ||
*/ | ||
export declare function useActivityParams<T extends ActivityParams<T> = ActivityParams>(): T; | ||
export declare function useActivityParams<T extends { | ||
[key in keyof T]: string | undefined; | ||
}>(): T; |
@@ -7,3 +7,3 @@ import React from "react"; | ||
initialActivity?: (args: { | ||
context: any; | ||
initContext: any; | ||
}) => string; | ||
@@ -10,0 +10,0 @@ children: React.ReactNode; |
@@ -0,23 +1,9 @@ | ||
import { PoppedEvent, PushedEvent, ReplacedEvent } from "@stackflow/core/dist/event-types"; | ||
import { BaseDomainEvent } from "@stackflow/core/dist/event-types/_base"; | ||
export declare const useCoreActions: () => { | ||
dispatchEvent: import("@stackflow/core").DispatchEvent; | ||
getStack: () => import("@stackflow/core").AggregateOutput; | ||
push: ({ activityId, activityName, params, skipEnterActiveState, }: { | ||
activityId: string; | ||
activityName: string; | ||
params: { | ||
[key: string]: string; | ||
}; | ||
skipEnterActiveState?: boolean | undefined; | ||
}) => void; | ||
replace: ({ activityId, activityName, params, skipEnterActiveState, }: { | ||
activityId: string; | ||
activityName: string; | ||
params: { | ||
[key: string]: string; | ||
}; | ||
skipEnterActiveState?: boolean | undefined; | ||
}) => void; | ||
pop: (params?: { | ||
skipExitActiveState?: boolean; | ||
}) => void; | ||
push: (params: Omit<PushedEvent, keyof BaseDomainEvent>) => void; | ||
replace: (params: Omit<ReplacedEvent, keyof BaseDomainEvent>) => void; | ||
pop: (params?: Omit<PoppedEvent, keyof BaseDomainEvent>) => void; | ||
}; |
export * from "./activity/ActivityComponentType"; | ||
export * from "./activity/useActivity"; | ||
export * from "./activity/useActivityParams"; | ||
export * from "./activity/useActivityPreloadRef"; | ||
export * from "./init-context/useInitContext"; | ||
export * from "./stack/useStack"; | ||
@@ -5,0 +7,0 @@ export * from "./stackflow"; |
@@ -1,2 +0,2 @@ | ||
var Ot=Object.create;var b=Object.defineProperty,Nt=Object.defineProperties,It=Object.getOwnPropertyDescriptor,Bt=Object.getOwnPropertyDescriptors,Mt=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,Vt=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable;var X=(t,e,o)=>e in t?b(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,v=(t,e)=>{for(var o in e||(e={}))Y.call(e,o)&&X(t,o,e[o]);if(Q)for(var o of Q(e))Ft.call(e,o)&&X(t,o,e[o]);return t},h=(t,e)=>Nt(t,Bt(e));var Ut=(t,e)=>{for(var o in e)b(t,o,{get:e[o],enumerable:!0})},Z=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Mt(e))!Y.call(t,a)&&a!==o&&b(t,a,{get:()=>e[a],enumerable:!(i=It(e,a))||i.enumerable});return t};var d=(t,e,o)=>(o=t!=null?Ot(Vt(t)):{},Z(e||!t||!t.__esModule?b(o,"default",{value:t,enumerable:!0}):o,t)),Ht=t=>Z(b({},"__esModule",{value:!0}),t);var Qt={};Ut(Qt,{stackflow:()=>Kt,useActions:()=>J,useActivity:()=>qt,useActivityParams:()=>Gt,useStack:()=>Lt});module.exports=Ht(Qt);var et=require("react");var tt=require("react"),T=(0,tt.createContext)(null);var qt=()=>(0,et.useContext)(T);var ot=require("react");function Gt(){return(0,ot.useContext)(T).params}var it=require("react");var rt=require("react"),N=(0,rt.createContext)(null);var Lt=()=>(0,it.useContext)(N);var E=d(require("react"));var nt=require("react"),I=(0,nt.createContext)({});var at=d(require("react"));var st=({children:t,value:e})=>at.default.createElement(I.Provider,{value:e},t);var ct=d(require("react"));function B(){return ct.default.useContext(I)}var S=require("@stackflow/core"),l=d(require("react")),At=d(require("react-fast-compare"));var pt=d(require("react"));var M=require("react"),mt=d(require("react-fast-compare"));function V(t){let e=(0,M.useRef)(t),o=e.current,i=(0,mt.default)(o,t);return(0,M.useEffect)(()=>{i||(e.current=t)}),i?o:t}var ft=({children:t,value:e})=>pt.default.createElement(T.Provider,{value:V(e)},t);var ut=require("@stackflow/core");function O(){return(0,ut.id)()}var vt=require("react"),F=(0,vt.createContext)(null);var lt=d(require("react"));var dt=({children:t,value:e})=>lt.default.createElement(F.Provider,{value:e},t);var xt=require("react");function k(){return(0,xt.useContext)(F)}var Pt=require("react"),U=(0,Pt.createContext)(null);var Ct=require("react"),H=(0,Ct.createContext)(null);var Wt=1e3,_t=Wt/60,kt=({transitionDuration:t,initialActivity:e,activities:o,children:i})=>{let a=k(),c=B(),n=(0,l.useMemo)(()=>{let p=new Date().getTime()-t,C=a.reduce((W,_)=>{var $,K;return(K=($=_.initialPushedEvent)==null?void 0:$.call(_))!=null?K:W},null),P=e?(0,S.makeEvent)("Pushed",{activityId:O(),activityName:e({context:c}),params:{},eventDate:p,skipEnterActiveState:!1}):null;C&&P&&console.warn(`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${P.activityName}" in the "stackflow" is ignored.`);let y=C!=null?C:P;y||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(o).map(W=>(0,S.makeEvent)("ActivityRegistered",{activityName:W,eventDate:p})),z=[(0,S.makeEvent)("Initialized",{transitionDuration:t,eventDate:p}),...bt];return y&&z.push(y),z},[]),m=(0,l.useMemo)(()=>(0,S.aggregate)(n,new Date().getTime()),[]),[r,s]=(0,l.useState)(()=>m),f=(0,l.useRef)(n),u=(0,l.useRef)(m),x=(0,l.useCallback)(()=>u.current,[u]),A=(0,l.useCallback)((p,C)=>{let P=(0,S.makeEvent)(p,C),y=[...f.current,P];f.current=y,s((0,S.aggregate)(y,new Date().getTime()))},[f,s]);return(0,l.useEffect)(()=>{let p=setInterval(()=>{let C=f.current,P=(0,S.aggregate)(C,new Date().getTime());(0,At.default)(r,P)||(s(P),u.current=P),P.globalTransitionState==="idle"&&clearInterval(p)},_t);return()=>{clearInterval(p)}},[f,r,s]),l.default.createElement(H.Provider,{value:r},l.default.createElement(U.Provider,{value:(0,l.useMemo)(()=>({getStack:x,dispatchEvent:A}),[x,A])},i))};var g=d(require("react"));var yt=t=>JSON.parse(JSON.stringify(t)),q=()=>{let t=k(),e=B(),{dispatchEvent:o,getStack:i}=g.default.useContext(U),a=(0,g.useCallback)((r,s)=>{let f=!1,u=yt(s),x=()=>{f=!0},A=p=>{u=yt(p)};return t.forEach(p=>{var C,P,y;switch(r){case"PUSHED":(C=p.onBeforePush)==null||C.call(p,{actionParams:u,actions:{dispatchEvent:o,getStack:i,preventDefault:x,overrideActionParams:A}});break;case"REPLACED":(P=p.onBeforeReplace)==null||P.call(p,{actionParams:u,actions:{dispatchEvent:o,getStack:i,preventDefault:x,overrideActionParams:A}});break;case"POPPED":(y=p.onBeforePop)==null||y.call(p,{actionParams:u,actions:{dispatchEvent:o,getStack:i,preventDefault:x,overrideActionParams:A}});break;default:break}}),{isPrevented:f,params:u}},[t,o,i,e]),c=(0,g.useCallback)(({activityId:r,activityName:s,params:f,skipEnterActiveState:u})=>{let{isPrevented:x,params:A}=a("PUSHED",{activityId:r,activityName:s,params:f,skipEnterActiveState:u});x||o("Pushed",v({},A))},[o]),n=(0,g.useCallback)(({activityId:r,activityName:s,params:f,skipEnterActiveState:u})=>{let{isPrevented:x,params:A}=a("REPLACED",{activityId:r,activityName:s,params:f,skipEnterActiveState:u});x||o("Replaced",v({},A))},[o]),m=(0,g.useCallback)(r=>{let s=r!=null?r:{},{isPrevented:f,params:u}=a("POPPED",s);f||o("Popped",v({},u))},[o]);return(0,g.useMemo)(()=>({dispatchEvent:o,getStack:i,push:c,replace:n,pop:m}),[o,i,c,n,m])};var St=d(require("react"));var w=()=>St.default.useContext(H);var gt=require("@stackflow/core"),R=require("react");var jt=()=>{let t=k(),e=w(),o=q(),i=(0,R.useCallback)(n=>{t.forEach(m=>{var r;(r=m.onInit)==null||r.call(m,n)})},[]),a=(0,R.useCallback)(({actions:n,effect:m})=>{switch(m._TAG){case"PUSHED":{t.forEach(r=>{var s;return(s=r.onPushed)==null?void 0:s.call(r,{actions:n,effect:m})});break}case"POPPED":{t.forEach(r=>{var s;return(s=r.onPopped)==null?void 0:s.call(r,{actions:n,effect:m})});break}case"REPLACED":{t.forEach(r=>{var s;return(s=r.onReplaced)==null?void 0:s.call(r,{actions:n,effect:m})});break}case"%SOMETHING_CHANGED%":{t.forEach(r=>{var s;return(s=r.onChanged)==null?void 0:s.call(r,{actions:n,effect:m})});break}default:break}},[]);(0,R.useEffect)(()=>{i==null||i({actions:{dispatchEvent:o.dispatchEvent,getStack:o.getStack}})},[]);let c=(0,R.useRef)(e);return(0,R.useEffect)(()=>{let n=c.current;(n?(0,gt.produceEffects)(n,e):[]).forEach(r=>{a({actions:{dispatchEvent:o.dispatchEvent,getStack:o.getStack},effect:r})}),c.current=v({},e)},[e]),null},Et=jt;var D=d(require("react"));var G=d(require("react"));var ht=d(require("react"));var Rt=({children:t,value:e})=>ht.default.createElement(N.Provider,{value:V(e)},t);var Jt=({activities:t,plugin:e})=>{let o=w(),i=k();return e.render({stack:h(v({},o),{render(a){let c=v(v({},o),a);return{activities:c.activities.map(n=>h(v({},n),{key:n.id,render(m){let r=t[n.name],s=G.default.createElement(r,{params:n.params});return i.forEach(f=>{var u,x;s=(x=(u=f.wrapActivity)==null?void 0:u.call(f,{activity:h(v({},n),{render:()=>s})}))!=null?x:s}),G.default.createElement(Rt,{value:c},G.default.createElement(ft,{key:n.id,value:v(v({},n),m)},s))}}))}}})})},Tt=Jt;var zt=({activities:t})=>{let e=w(),o=k(),i=o.filter(c=>!!c.render);(0,D.useEffect)(()=>{i.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.`)},[i]);let a=D.default.createElement(D.default.Fragment,null,i.map(c=>D.default.createElement(Tt,{activities:t,key:c.key,plugin:c})));return o.forEach(c=>{var n,m;a=(m=(n=c.wrapStack)==null?void 0:n.call(c,{stack:h(v({},e),{render(){return a}})}))!=null?m:a}),a},wt=zt;var L=d(require("react"));function j(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}var Dt,$t=(Dt=L.default.useTransition)!=null?Dt:()=>[!1,t=>t()];function J(){let t=q(),[e,o]=$t();return(0,L.useMemo)(()=>({pending:e,push(i,a,c){e||o(()=>{t.push({activityId:O(),activityName:i,params:a,skipEnterActiveState:j(c).skipActiveState})})},replace(i,a,c){e||o(()=>{t.replace({activityId:O(),activityName:i,params:a,skipEnterActiveState:j(c).skipActiveState})})},pop(i){e||o(()=>{t.pop({skipExitActiveState:j(i).skipActiveState})})}}),[t.push,t.replace,t.pop,e,o])}function Kt(t){let e=Object.entries(t.activities).reduce((o,[i,a])=>h(v({},o),{[i]:E.default.memo(a)}),{});return{Stack(o){var a;let i=(0,E.useMemo)(()=>{var c;return((c=t.plugins)!=null?c:[]).reduce((n,m)=>[...n,...Array.isArray(m)?m:[m]],[]).map(n=>n({context:o.context}))},[]);return E.default.createElement(st,{value:(a=o.context)!=null?a:{}},E.default.createElement(dt,{value:i},E.default.createElement(kt,{activities:e,initialActivity:t.initialActivity,transitionDuration:t.transitionDuration},E.default.createElement(wt,{activities:e}),E.default.createElement(Et,null))))},useFlow:J}} | ||
var Bt=Object.create;var O=Object.defineProperty,Nt=Object.defineProperties,Mt=Object.getOwnPropertyDescriptor,Ft=Object.getOwnPropertyDescriptors,Ut=Object.getOwnPropertyNames,X=Object.getOwnPropertySymbols,Ht=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty,Vt=Object.prototype.propertyIsEnumerable;var Y=(t,e,o)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,p=(t,e)=>{for(var o in e||(e={}))Z.call(e,o)&&Y(t,o,e[o]);if(X)for(var o of X(e))Vt.call(e,o)&&Y(t,o,e[o]);return t},A=(t,e)=>Nt(t,Ft(e));var qt=(t,e)=>{for(var o in e)O(t,o,{get:e[o],enumerable:!0})},tt=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ut(e))!Z.call(t,s)&&s!==o&&O(t,s,{get:()=>e[s],enumerable:!(i=Mt(e,s))||i.enumerable});return t};var l=(t,e,o)=>(o=t!=null?Bt(Ht(t)):{},tt(e||!t||!t.__esModule?O(o,"default",{value:t,enumerable:!0}):o,t)),Kt=t=>tt(O({},"__esModule",{value:!0}),t);var Zt={};qt(Zt,{stackflow:()=>Yt,useActions:()=>J,useActivity:()=>Gt,useActivityParams:()=>Lt,useActivityPreloadRef:()=>Wt,useInitContext:()=>b,useStack:()=>_t});module.exports=Kt(Zt);var ot=require("react");var et=require("react"),g=(0,et.createContext)(null);var Gt=()=>(0,ot.useContext)(g);var rt=require("react");function Lt(){return(0,rt.useContext)(g).params}var it=require("react");function Wt(){return(0,it.useContext)(g).preloadRef}var at=l(require("react"));var nt=require("react"),M=(0,nt.createContext)({});function b(){return at.default.useContext(M)}var ct=require("react");var st=require("react"),F=(0,st.createContext)(null);var _t=()=>(0,ct.useContext)(F);var S=l(require("react"));var k=require("@stackflow/core"),v=l(require("react")),kt=l(require("react-fast-compare"));var pt=l(require("react"));var U=require("react"),mt=l(require("react-fast-compare"));function H(t){let e=(0,U.useRef)(t),o=e.current,i=(0,mt.default)(o,t);return(0,U.useEffect)(()=>{i||(e.current=t)}),i?o:t}var ft=({children:t,value:e})=>pt.default.createElement(g.Provider,{value:H(e)},t);var ut=require("@stackflow/core");function B(){return(0,ut.id)()}var vt=l(require("react"));var dt=({children:t,value:e})=>vt.default.createElement(M.Provider,{value:e},t);var lt=require("react"),V=(0,lt.createContext)(null);var xt=l(require("react"));var Pt=({children:t,value:e})=>xt.default.createElement(V.Provider,{value:e},t);var Ct=require("react");function y(){return(0,Ct.useContext)(V)}var At=require("react"),q=(0,At.createContext)(null);var yt=require("react"),K=(0,yt.createContext)(null);var jt=1e3,Jt=jt/60,Et=({transitionDuration:t,initialActivity:e,activities:o,children:i})=>{let s=y(),m=b(),n=(0,v.useMemo)(()=>{let C=new Date().getTime()-t,f=e?(0,k.makeEvent)("Pushed",{activityId:B(),activityName:e({initContext:m}),params:{},eventDate:C,skipEnterActiveState:!1}):null,P=s.reduce((N,_)=>{var $,Q;return(Q=($=_.overrideInitialPushedEvent)==null?void 0:$.call(_,{pushedEvent:N}))!=null?Q:N},f);!!P&&!!f&&P.id!==f.id&&console.warn(`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${f.activityName}" in the "stackflow" is ignored.`);let w=P;w||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(o).map(N=>(0,k.makeEvent)("ActivityRegistered",{activityName:N,eventDate:C})),z=[(0,k.makeEvent)("Initialized",{transitionDuration:t,eventDate:C}),...bt];return w&&z.push(w),z},[]),c=(0,v.useMemo)(()=>(0,k.aggregate)(n,new Date().getTime()),[]),[a,r]=(0,v.useState)(()=>c),u=(0,v.useRef)(n),d=(0,v.useRef)(c),x=(0,v.useCallback)(()=>d.current,[d]),R=(0,v.useCallback)((C,f)=>{let P=(0,k.makeEvent)(C,f),T=[...u.current,P];u.current=T,r((0,k.aggregate)(T,new Date().getTime()))},[u,r]);return(0,v.useEffect)(()=>{let C=setInterval(()=>{let f=u.current,P=(0,k.aggregate)(f,new Date().getTime());(0,kt.default)(a,P)||(r(P),d.current=P),P.globalTransitionState==="idle"&&clearInterval(C)},Jt);return()=>{clearInterval(C)}},[u,a,r]),v.default.createElement(K.Provider,{value:a},v.default.createElement(q.Provider,{value:(0,v.useMemo)(()=>({getStack:x,dispatchEvent:R}),[x,R])},i))};var E=l(require("react"));var St=t=>JSON.parse(JSON.stringify(t)),G=()=>{let t=y(),e=b(),{dispatchEvent:o,getStack:i}=E.default.useContext(q),s=(0,E.useCallback)(r=>{let{isPrevented:u,params:d}=a("PUSHED",r);u||o("Pushed",p({},d))},[o]),m=(0,E.useCallback)(r=>{let{isPrevented:u,params:d}=a("REPLACED",r);u||o("Replaced",p({},d))},[o]),n=(0,E.useCallback)(r=>{let u=r!=null?r:{},{isPrevented:d,params:x}=a("POPPED",u);d||o("Popped",p({},x))},[o]),c=(0,E.useMemo)(()=>({dispatchEvent:o,getStack:i,push:s,replace:m,pop:n}),[o,i,s,m,n]),a=(0,E.useCallback)((r,u)=>{let d=!1,x=St(u),R=()=>{d=!0},C=f=>{x=St(f)};return t.forEach(f=>{var P,T,w;switch(r){case"PUSHED":(P=f.onBeforePush)==null||P.call(f,{actionParams:x,actions:A(p({},c),{preventDefault:R,overrideActionParams:C})});break;case"REPLACED":(T=f.onBeforeReplace)==null||T.call(f,{actionParams:x,actions:A(p({},c),{preventDefault:R,overrideActionParams:C})});break;case"POPPED":(w=f.onBeforePop)==null||w.call(f,{actionParams:x,actions:A(p({},c),{preventDefault:R,overrideActionParams:C})});break;default:break}}),{isPrevented:d,params:x}},[t,e]);return c};var gt=l(require("react"));var D=()=>gt.default.useContext(K);var ht=require("@stackflow/core"),h=require("react");var zt=()=>{let t=y(),e=D(),o=G(),i=(0,h.useCallback)(n=>{t.forEach(c=>{var a;(a=c.onInit)==null||a.call(c,n)})},[]),s=(0,h.useCallback)(({actions:n,effect:c})=>{switch(c._TAG){case"PUSHED":{t.forEach(a=>{var r;return(r=a.onPushed)==null?void 0:r.call(a,{actions:n,effect:c})});break}case"POPPED":{t.forEach(a=>{var r;return(r=a.onPopped)==null?void 0:r.call(a,{actions:n,effect:c})});break}case"REPLACED":{t.forEach(a=>{var r;return(r=a.onReplaced)==null?void 0:r.call(a,{actions:n,effect:c})});break}case"%SOMETHING_CHANGED%":{t.forEach(a=>{var r;return(r=a.onChanged)==null?void 0:r.call(a,{actions:n,effect:c})});break}default:break}},[]);(0,h.useEffect)(()=>{i==null||i({actions:o})},[]);let m=(0,h.useRef)(e);return(0,h.useEffect)(()=>{let n=m.current;(n?(0,ht.produceEffects)(n,e):[]).forEach(a=>{s({actions:o,effect:a})}),m.current=p({},e)},[e]),null},Rt=zt;var I=l(require("react"));var L=l(require("react"));var Tt=l(require("react"));var wt=({children:t,value:e})=>Tt.default.createElement(F.Provider,{value:H(e)},t);var $t=({activities:t,plugin:e})=>{let o=D(),i=y();return e.render({stack:A(p({},o),{render(s){let m=p(p({},o),s);return{activities:m.activities.map(n=>A(p({},n),{key:n.id,render(c){let a=t[n.name],r=L.default.createElement(a,{params:n.params});return i.forEach(u=>{var d,x;r=(x=(d=u.wrapActivity)==null?void 0:d.call(u,{activity:A(p({},n),{render:()=>r})}))!=null?x:r}),L.default.createElement(wt,{value:m},L.default.createElement(ft,{key:n.id,value:p(p({},n),c)},r))}}))}}})})},Dt=$t;var Qt=({activities:t})=>{let e=D(),o=y(),i=o.filter(m=>!!m.render);(0,I.useEffect)(()=>{i.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.`)},[i]);let s=I.default.createElement(I.default.Fragment,null,i.map(m=>I.default.createElement(Dt,{activities:t,key:m.key,plugin:m})));return o.forEach(m=>{var n,c;s=(c=(n=m.wrapStack)==null?void 0:n.call(m,{stack:A(p({},e),{render(){return s}})}))!=null?c:s}),s},It=Qt;var W=l(require("react"));function j(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}var Ot,Xt=(Ot=W.default.useTransition)!=null?Ot:()=>[!1,t=>t()];function J(){let t=G(),[e,o]=Xt();return(0,W.useMemo)(()=>({pending:e,push(i,s,m){e||o(()=>{t.push({activityId:B(),activityName:i,params:s,skipEnterActiveState:j(m).skipActiveState})})},replace(i,s,m){e||o(()=>{t.replace({activityId:B(),activityName:i,params:s,skipEnterActiveState:j(m).skipActiveState})})},pop(i){e||o(()=>{t.pop({skipExitActiveState:j(i).skipActiveState})})}}),[t.push,t.replace,t.pop,e,o])}function Yt(t){let e=Object.entries(t.activities).reduce((o,[i,s])=>A(p({},o),{[i]:S.default.memo(s)}),{});return{Stack(o){var s;let i=(0,S.useMemo)(()=>{var m;return((m=t.plugins)!=null?m:[]).reduce((n,c)=>[...n,...Array.isArray(c)?c:[c]],[]).map(n=>n({initContext:o.initContext}))},[]);return S.default.createElement(dt,{value:(s=o.initContext)!=null?s:{}},S.default.createElement(Pt,{value:i},S.default.createElement(Et,{activities:e,initialActivity:t.initialActivity,transitionDuration:t.transitionDuration},S.default.createElement(It,{activities:e}),S.default.createElement(Rt,null))))},useFlow:J}} | ||
//# sourceMappingURL=index.js.map |
@@ -9,3 +9,3 @@ import React from "react"; | ||
*/ | ||
context?: C; | ||
initContext?: C; | ||
}; | ||
@@ -27,3 +27,3 @@ export declare type StackComponentType = React.FC<StackProps>; | ||
initialActivity?: (args: { | ||
context: any; | ||
initContext: any; | ||
}) => Extract<keyof T, string>; | ||
@@ -30,0 +30,0 @@ /** |
import { Activity, AggregateOutput, StackflowPlugin } from "@stackflow/core"; | ||
import React from "react"; | ||
export declare type StackflowReactPlugin<T = never> = (args: { | ||
context: any; | ||
initContext: any; | ||
}) => { | ||
@@ -6,0 +6,0 @@ /** |
@@ -11,3 +11,3 @@ import { ActivityComponentType } from "./activity"; | ||
*/ | ||
push: <V extends Extract<keyof T, string>>(activityName: V, params: T[V] extends ActivityComponentType<infer U> ? U : {}, options?: { | ||
push: <K extends Extract<keyof T, string>>(activityName: K, params: T[K] extends ActivityComponentType<infer U> ? U : {}, options?: { | ||
animate?: boolean; | ||
@@ -18,3 +18,3 @@ }) => void; | ||
*/ | ||
replace: <V extends Extract<keyof T, string>>(activityName: V, params: T[V] extends ActivityComponentType<infer U> ? U : {}, options?: { | ||
replace: <K extends Extract<keyof T, string>>(activityName: K, params: T[K] extends ActivityComponentType<infer U> ? U : {}, options?: { | ||
animate?: boolean; | ||
@@ -21,0 +21,0 @@ }) => void; |
{ | ||
"name": "@stackflow/react", | ||
"version": "0.6.0", | ||
"version": "0.6.1-alpha.1+1e3a00c", | ||
"license": "MIT", | ||
@@ -30,3 +30,3 @@ "exports": { | ||
"devDependencies": { | ||
"@stackflow/core": "^0.4.1", | ||
"@stackflow/core": "^0.4.2-alpha.15+1e3a00c", | ||
"@types/react": "^18.0.9", | ||
@@ -51,3 +51,3 @@ "react": "^18.1.0", | ||
}, | ||
"gitHead": "eea1cc8ddc1488ada45121a834cfc0a397ba5355" | ||
"gitHead": "1e3a00c4625a6416659fb96e321c01792a3a015b" | ||
} |
@@ -7,1 +7,2 @@ export * from "./ActivityComponentType"; | ||
export * from "./useActivityParams"; | ||
export * from "./useActivityPreloadRef"; |
@@ -1,2 +0,1 @@ | ||
import { ActivityParams } from "@stackflow/core"; | ||
import { useContext } from "react"; | ||
@@ -10,5 +9,5 @@ | ||
export function useActivityParams< | ||
T extends ActivityParams<T> = ActivityParams, | ||
T extends { [key in keyof T]: string | undefined }, | ||
>(): T { | ||
return useContext(ActivityContext).params as any; | ||
return useContext(ActivityContext).params as T; | ||
} |
import { Effect } from "@stackflow/core"; | ||
import { | ||
PoppedEvent, | ||
PushedEvent, | ||
ReplacedEvent, | ||
} from "@stackflow/core/dist/event-types"; | ||
import { BaseDomainEvent } from "@stackflow/core/dist/event-types/_base"; | ||
import React, { useCallback, useMemo } from "react"; | ||
import { useContext } from "../context"; | ||
import { useInitContext } from "../init-context"; | ||
import { usePlugins } from "../plugins"; | ||
@@ -12,6 +18,68 @@ import { CoreActionsContext } from "./CoreActionsContext"; | ||
const plugins = usePlugins(); | ||
const context = useContext(); | ||
const initContext = useInitContext(); | ||
const { dispatchEvent, getStack } = React.useContext(CoreActionsContext); | ||
const push = useCallback( | ||
(params: Omit<PushedEvent, keyof BaseDomainEvent>) => { | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"PUSHED", | ||
params, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Pushed", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const replace = useCallback( | ||
(params: Omit<ReplacedEvent, keyof BaseDomainEvent>) => { | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"REPLACED", | ||
params, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Replaced", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const pop = useCallback( | ||
(params?: Omit<PoppedEvent, keyof BaseDomainEvent>) => { | ||
const initialParams = params ?? {}; | ||
// eslint-disable-next-line no-use-before-define | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"POPPED", | ||
initialParams, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Popped", { ...eventParams }); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const coreActions = useMemo( | ||
() => ({ | ||
dispatchEvent, | ||
getStack, | ||
push, | ||
replace, | ||
pop, | ||
}), | ||
[dispatchEvent, getStack, push, replace, pop], | ||
); | ||
const triggerPreEffectHook = useCallback( | ||
@@ -35,4 +103,3 @@ (preEffect: Effect["_TAG"], initialActionParams: unknown) => { | ||
actions: { | ||
dispatchEvent, | ||
getStack, | ||
...coreActions, | ||
preventDefault, | ||
@@ -47,4 +114,3 @@ overrideActionParams, | ||
actions: { | ||
dispatchEvent, | ||
getStack, | ||
...coreActions, | ||
preventDefault, | ||
@@ -59,4 +125,3 @@ overrideActionParams, | ||
actions: { | ||
dispatchEvent, | ||
getStack, | ||
...coreActions, | ||
preventDefault, | ||
@@ -77,92 +142,6 @@ overrideActionParams, | ||
}, | ||
[plugins, dispatchEvent, getStack, context], | ||
[plugins, initContext], | ||
); | ||
const push = useCallback( | ||
({ | ||
activityId, | ||
activityName, | ||
params, | ||
skipEnterActiveState, | ||
}: { | ||
activityId: string; | ||
activityName: string; | ||
params: { [key: string]: string }; | ||
skipEnterActiveState?: boolean; | ||
}) => { | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"PUSHED", | ||
{ | ||
activityId, | ||
activityName, | ||
params, | ||
skipEnterActiveState, | ||
}, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Pushed", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const replace = useCallback( | ||
({ | ||
activityId, | ||
activityName, | ||
params, | ||
skipEnterActiveState, | ||
}: { | ||
activityId: string; | ||
activityName: string; | ||
params: { [key: string]: string }; | ||
skipEnterActiveState?: boolean; | ||
}) => { | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"REPLACED", | ||
{ | ||
activityId, | ||
activityName, | ||
params, | ||
skipEnterActiveState, | ||
}, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Replaced", { | ||
...eventParams, | ||
}); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
const pop = useCallback( | ||
(params?: { skipExitActiveState?: boolean }) => { | ||
const initialParams = params ?? {}; | ||
const { isPrevented, params: eventParams } = triggerPreEffectHook( | ||
"POPPED", | ||
initialParams, | ||
); | ||
if (!isPrevented) { | ||
dispatchEvent("Popped", { ...eventParams }); | ||
} | ||
}, | ||
[dispatchEvent], | ||
); | ||
return useMemo( | ||
() => ({ | ||
dispatchEvent, | ||
getStack, | ||
push, | ||
replace, | ||
pop, | ||
}), | ||
[dispatchEvent, getStack, push, replace, pop], | ||
); | ||
return coreActions; | ||
}; |
export * from "./activity/ActivityComponentType"; | ||
export * from "./activity/useActivity"; | ||
export * from "./activity/useActivityParams"; | ||
export * from "./activity/useActivityPreloadRef"; | ||
export * from "./init-context/useInitContext"; | ||
export * from "./stack/useStack"; | ||
@@ -5,0 +7,0 @@ export * from "./stackflow"; |
import { Activity, AggregateOutput, StackflowPlugin } from "@stackflow/core"; | ||
import React from "react"; | ||
export type StackflowReactPlugin<T = never> = (args: { context: any }) => { | ||
export type StackflowReactPlugin<T = never> = (args: { initContext: any }) => { | ||
/** | ||
@@ -6,0 +6,0 @@ * Determine how to render by using the stack state |
@@ -30,5 +30,5 @@ import React, { useMemo } from "react"; | ||
*/ | ||
push: <V extends Extract<keyof T, string>>( | ||
activityName: V, | ||
params: T[V] extends ActivityComponentType<infer U> ? U : {}, | ||
push: <K extends Extract<keyof T, string>>( | ||
activityName: K, | ||
params: T[K] extends ActivityComponentType<infer U> ? U : {}, | ||
options?: { | ||
@@ -42,5 +42,5 @@ animate?: boolean; | ||
*/ | ||
replace: <V extends Extract<keyof T, string>>( | ||
activityName: V, | ||
params: T[V] extends ActivityComponentType<infer U> ? U : {}, | ||
replace: <K extends Extract<keyof T, string>>( | ||
activityName: K, | ||
params: T[K] extends ActivityComponentType<infer U> ? U : {}, | ||
options?: { | ||
@@ -47,0 +47,0 @@ animate?: boolean; |
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
122973
88
1214
1