Socket
Socket
Sign inDemoInstall

@stackflow/react

Package Overview
Dependencies
Maintainers
1
Versions
91
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@stackflow/react - npm Package Compare versions

Comparing version 0.6.0 to 0.6.1-alpha.1

dist/activity/useActivityPreloadRef.d.ts

5

dist/activity/ActivityComponentType.d.ts

@@ -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;
}>;

1

dist/activity/index.d.ts

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc