Socket
Socket
Sign inDemoInstall

@stackflow/react

Package Overview
Dependencies
Maintainers
2
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.19.2-alpha.2 to 0.20.0

LICENSE

600

dist/index.js

@@ -1,2 +0,600 @@

"use strict";var wt=Object.create;var R=Object.defineProperty,Et=Object.defineProperties,It=Object.getOwnPropertyDescriptor,bt=Object.getOwnPropertyDescriptors,Ut=Object.getOwnPropertyNames,_=Object.getOwnPropertySymbols,Ot=Object.getPrototypeOf,et=Object.prototype.hasOwnProperty,Dt=Object.prototype.propertyIsEnumerable;var tt=(t,e,i)=>e in t?R(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,u=(t,e)=>{for(var i in e||(e={}))et.call(e,i)&&tt(t,i,e[i]);if(_)for(var i of _(e))Dt.call(e,i)&&tt(t,i,e[i]);return t},y=(t,e)=>Et(t,bt(e));var Mt=(t,e)=>{for(var i in e)R(t,i,{get:e[i],enumerable:!0})},it=(t,e,i,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ut(e))!et.call(t,s)&&s!==i&&R(t,s,{get:()=>e[s],enumerable:!(r=It(e,s))||r.enumerable});return t};var m=(t,e,i)=>(i=t!=null?wt(Ot(t)):{},it(e||!t||!t.__esModule?R(i,"default",{value:t,enumerable:!0}):i,t)),Nt=t=>it(R({},"__esModule",{value:!0}),t);var zt={};Mt(zt,{stackflow:()=>jt,useActions:()=>J,useActiveEffect:()=>$t,useActivity:()=>W,useActivityParams:()=>Bt,useStack:()=>Ft,useStepActions:()=>L});module.exports=Nt(zt);var at=require("react");var b=m(require("react"));function ot(){let t={value:null};function e(){return t.value}function i(r){t.value=r}return[e,i]}var E=require("react"),rt=m(require("react-fast-compare"));function I(t){let e=(0,E.useRef)(t),i=e.current,r=(0,rt.default)(i,t);return(0,E.useEffect)(()=>{r||(e.current=t)}),r?i:t}var w=(0,b.createContext)(null),nt=({children:t,value:e})=>b.default.createElement(w.Provider,{value:I(e)},t);var W=()=>(0,at.useContext)(w);var st=require("react");function Bt(){return(0,st.useContext)(w).params}var pt=require("react");var U=m(require("react"));var j=(0,U.createContext)(null),ct=({children:t,value:e})=>U.default.createElement(j.Provider,{value:I(e)},t);var Ft=()=>(0,pt.useContext)(j);var A=require("@stackflow/core"),d=m(require("react"));var mt=require("@stackflow/core");function v(){return(0,mt.id)()}var ut=require("@stackflow/core");function x(){return(0,ut.id)()}var g=m(require("react"));var lt=m(require("react")),ft,vt=(ft=lt.default.useDeferredValue)!=null?ft:t=>t;var C=m(require("react")),dt,yt=(dt=C.default.useSyncExternalStore)!=null?dt:(t,e)=>{let[i,r]=(0,C.useState)(()=>e());return(0,C.useEffect)(()=>t(()=>{r(()=>e())})),i};var $=(0,g.createContext)(null),z=(0,g.createContext)(null),St=({coreStore:t,children:e})=>{let i=yt(t.subscribe,t.actions.getStack,t.actions.getStack),r=vt(i);return g.default.createElement(z.Provider,{value:r},g.default.createElement($.Provider,{value:t.actions},e))};var At=m(require("react"));var O=()=>At.default.useContext($);var Pt=m(require("react"));var D=()=>Pt.default.useContext(z);var T=m(require("react"));var B=m(require("react"));var M=m(require("react")),G=(0,M.createContext)(null),kt=({children:t,value:e})=>M.default.createElement(G.Provider,{value:e},t);var xt=require("react");function N(){return(0,xt.useContext)(G)}var Kt=({activityComponentMap:t,plugin:e})=>{let i=D(),r=N();return e.render({stack:y(u({},i),{render(s){let p=u(u({},i),s);return{activities:p.activities.map(c=>y(u({},c),{key:c.id,render(f){let V=t[c.name],S=B.default.createElement(V,{params:c.params});return r.forEach(o=>{var n,a;S=(a=(n=o.wrapActivity)==null?void 0:n.call(o,{activity:y(u({},c),{render:()=>S})}))!=null?a:S}),B.default.createElement(ct,{value:p},B.default.createElement(nt,{key:c.id,value:u(u({},c),f)},S))}}))}}})})},Ct=Kt;var Vt=({activityComponentMap:t})=>{let e=D(),i=N(),r=i.filter(p=>!!p.render);(0,T.useEffect)(()=>{r.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.`)},[r]);let s=T.default.createElement(T.default.Fragment,null,r.map(p=>T.default.createElement(Ct,{key:p.key,activityComponentMap:t,plugin:p})));return i.forEach(p=>{var c,f;s=(f=(c=p.wrapStack)==null?void 0:c.call(p,{stack:y(u({},e),{render(){return s}})}))!=null?f:s}),s},gt=Vt;var F=m(require("react"));function H(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}var Tt,qt=(Tt=F.default.useTransition)!=null?Tt:()=>[!1,t=>t()];function J(){let t=O(),[e,i]=qt();return(0,F.useMemo)(()=>({pending:e,push(r,s,p){let c=v();return t.push({activityId:c,activityName:r,activityParams:s,skipEnterActiveState:H(p).skipActiveState}),{activityId:c}},replace(r,s,p){var f;let c=v();return t.replace({activityId:(f=p==null?void 0:p.activityId)!=null?f:v(),activityName:r,activityParams:s,skipEnterActiveState:H(p).skipActiveState}),{activityId:c}},pop(r){t.pop({skipExitActiveState:H(r).skipActiveState})}}),[t.push,t.replace,t.pop,e,i])}var K=m(require("react"));var ht,Wt=(ht=K.default.useTransition)!=null?ht:()=>[!1,t=>t()],L=()=>{let t=O(),[e,i]=Wt();return(0,K.useMemo)(()=>({pending:e,stepPush(r){let s=x();t.stepPush({stepId:s,stepParams:r})},stepReplace(r){let s=x();t.stepReplace({stepId:s,stepParams:r})},stepPop(){t.stepPop({})}}),[t.stepPush,t.stepReplace,t.stepPop,e,i])};function Q(t){return t?t.animate===void 0||t.animate==null?{skipActiveState:!1}:{skipActiveState:!t.animate}:{skipActiveState:!1}}function jt(t){var S;typeof window!="undefined"&&window.document.documentElement.style.setProperty("--stackflow-transition-duration",`${t.transitionDuration}ms`);let e=((S=t.plugins)!=null?S:[]).flat(1/0).map(o=>o),i=e.map(o=>o()),r=Object.entries(t.activities).reduce((o,[n,a])=>y(u({},o),{[n]:"component"in a?d.default.memo(a.component):d.default.memo(a)}),{}),s=()=>new Date().getTime()-t.transitionDuration*2,p=(0,A.makeCoreStore)({initialEvents:[(0,A.makeEvent)("Initialized",{transitionDuration:t.transitionDuration,eventDate:s()}),...Object.entries(t.activities).map(([o,n])=>(0,A.makeEvent)("ActivityRegistered",u({activityName:o,eventDate:s()},"component"in n?{activityParamsSchema:n.paramsSchema}:null)))],plugins:[]}),[c,f]=ot(),V=o=>{let n=(0,d.useMemo)(()=>{let a=t.initialActivity?[(0,A.makeEvent)("Pushed",{activityId:v(),activityName:t.initialActivity(),activityParams:{},eventDate:s(),skipEnterActiveState:!1})]:[],l=i.reduce((h,q)=>{var X,Y,Z;return(Z=(Y=q.overrideInitialEvents)==null?void 0:Y.call(q,{initialEvents:h,initialContext:(X=o.initialContext)!=null?X:{}}))!=null?Z:h},a);l.length>0&&a.length>0&&l!==a&&console.warn(`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${a[0].activityName}" in the "stackflow" is ignored.`),l.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 k=(0,A.makeCoreStore)({initialEvents:[...p.pullEvents(),...l],plugins:e});return typeof window!="undefined"&&k.init(),f(k),k},[]);return d.default.createElement(kt,{value:i},d.default.createElement(St,{coreStore:n},d.default.createElement(gt,{activityComponentMap:r})))};return{activities:t.activities,Stack:V,useFlow:J,useStepFlow:L,addActivity(o){if(c()){console.warn("Stackflow - `addActivity()` API cannot be called after a `<Stack />` component has been rendered");return}r[o.name]=d.default.memo(o.component),p.actions.dispatchEvent("ActivityRegistered",{activityName:o.name,activityParamsSchema:o.paramsSchema,eventDate:s()})},addPlugin(o){if(c()){console.warn("Stackflow - `addPlugin()` API cannot be called after a `<Stack />` component has been rendered");return}[o].flat(1/0).map(n=>n).forEach(n=>{e.push(n),i.push(n())})},actions:{getStack(){var o,n;return(n=(o=c())==null?void 0:o.actions.getStack())!=null?n:p.actions.getStack()},dispatchEvent(o,n){var a;return(a=c())==null?void 0:a.actions.dispatchEvent(o,n)},push(o,n,a){var P;let l=v();return(P=c())==null||P.actions.push({activityId:l,activityName:o,activityParams:n,skipEnterActiveState:Q(a).skipActiveState}),{activityId:l}},replace(o,n,a){var P,k,h;let l=(P=a==null?void 0:a.activityId)!=null?P:v();return(h=c())==null||h.actions.replace({activityId:(k=a==null?void 0:a.activityId)!=null?k:v(),activityName:o,activityParams:n,skipEnterActiveState:Q(a).skipActiveState}),{activityId:l}},pop(o){var n;return(n=c())==null?void 0:n.actions.pop({skipExitActiveState:Q(o).skipActiveState})},stepPush(o){var a;let n=x();return(a=c())==null?void 0:a.actions.stepPush({stepId:n,stepParams:o})},stepReplace(o){var a;let n=x();return(a=c())==null?void 0:a.actions.stepReplace({stepId:n,stepParams:o})},stepPop(){var o;return(o=c())==null?void 0:o.actions.stepPop({})}}}}var Rt=require("react");var $t=t=>{let{isActive:e}=W();(0,Rt.useEffect)(()=>{if(e)return t()},[e])};
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
stackflow: () => stackflow,
useActions: () => useActions,
useActiveEffect: () => useActiveEffect,
useActivity: () => useActivity,
useActivityParams: () => useActivityParams,
useStack: () => useStack,
useStepActions: () => useStepActions
});
module.exports = __toCommonJS(src_exports);
// src/activity/useActivity.ts
var import_react3 = require("react");
// src/activity/ActivityProvider.tsx
var import_react2 = __toESM(require("react"));
// src/utils/makeRef.ts
function makeRef() {
const ref = {
value: null
};
function get() {
return ref.value;
}
function set(value) {
ref.value = value;
}
return [get, set];
}
// src/utils/useMemoDeep.ts
var import_react = require("react");
var import_react_fast_compare = __toESM(require("react-fast-compare"));
function useMemoDeep(next) {
const previousRef = (0, import_react.useRef)(next);
const previous = previousRef.current;
const isEqual = (0, import_react_fast_compare.default)(previous, next);
(0, import_react.useEffect)(() => {
if (!isEqual) {
previousRef.current = next;
}
});
return isEqual ? previous : next;
}
// src/activity/ActivityProvider.tsx
var ActivityContext = (0, import_react2.createContext)(null);
var ActivityProvider = ({
children,
value
}) => /* @__PURE__ */ import_react2.default.createElement(ActivityContext.Provider, {
value: useMemoDeep(value)
}, children);
ActivityProvider.displayName = "ActivityProvider";
// src/activity/useActivity.ts
var useActivity = () => (0, import_react3.useContext)(ActivityContext);
// src/activity/useActivityParams.ts
var import_react4 = require("react");
function useActivityParams() {
return (0, import_react4.useContext)(ActivityContext).params;
}
// src/stack/useStack.ts
var import_react6 = require("react");
// src/stack/StackProvider.tsx
var import_react5 = __toESM(require("react"));
var StackContext = (0, import_react5.createContext)(null);
var StackProvider = ({
children,
value
}) => /* @__PURE__ */ import_react5.default.createElement(StackContext.Provider, {
value: useMemoDeep(value)
}, children);
StackProvider.displayName = "StackProvider";
// src/stack/useStack.ts
var useStack = () => (0, import_react6.useContext)(StackContext);
// src/stackflow.tsx
var import_core7 = require("@stackflow/core");
var import_react18 = __toESM(require("react"));
// src/activity/makeActivityId.ts
var import_core = require("@stackflow/core");
function makeActivityId() {
return (0, import_core.id)();
}
// src/activity/makeStepId.ts
var import_core2 = require("@stackflow/core");
function makeStepId() {
return (0, import_core2.id)();
}
// src/core/CoreProvider.tsx
var import_react9 = __toESM(require("react"));
// src/shims/useDeferredValue.ts
var import_react7 = __toESM(require("react"));
var _a;
var useDeferredValue = (_a = import_react7.default.useDeferredValue) != null ? _a : (value) => value;
// src/shims/useSyncExternalStore.ts
var import_react8 = __toESM(require("react"));
var _a2;
var useSyncExternalStore = (_a2 = import_react8.default.useSyncExternalStore) != null ? _a2 : (subscribe, getSnapshot) => {
const [state, setState] = (0, import_react8.useState)(() => getSnapshot());
(0, import_react8.useEffect)(() => {
const dispose = subscribe(() => {
setState(() => getSnapshot());
});
return dispose;
});
return state;
};
// src/core/CoreProvider.tsx
var CoreActionsContext = (0, import_react9.createContext)(
null
);
var CoreStateContext = (0, import_react9.createContext)(null);
var CoreProvider = ({
coreStore,
children
}) => {
const stack = useSyncExternalStore(
coreStore.subscribe,
coreStore.actions.getStack,
coreStore.actions.getStack
);
const deferredStack = useDeferredValue(stack);
return /* @__PURE__ */ import_react9.default.createElement(CoreStateContext.Provider, {
value: deferredStack
}, /* @__PURE__ */ import_react9.default.createElement(CoreActionsContext.Provider, {
value: coreStore.actions
}, children));
};
CoreProvider.displayName = "CoreProvider";
// src/core/useCoreActions.ts
var import_react10 = __toESM(require("react"));
var useCoreActions = () => import_react10.default.useContext(CoreActionsContext);
// src/core/useCoreState.ts
var import_react11 = __toESM(require("react"));
var useCoreState = () => import_react11.default.useContext(CoreStateContext);
// src/MainRenderer.tsx
var import_react15 = __toESM(require("react"));
// src/PluginRenderer.tsx
var import_react14 = __toESM(require("react"));
// src/plugins/PluginsProvider.tsx
var import_react12 = __toESM(require("react"));
var PluginsContext = (0, import_react12.createContext)(null);
var PluginsProvider = ({
children,
value
}) => /* @__PURE__ */ import_react12.default.createElement(PluginsContext.Provider, {
value
}, children);
PluginsProvider.displayName = "PluginsProvider";
// src/plugins/usePlugins.ts
var import_react13 = require("react");
function usePlugins() {
return (0, import_react13.useContext)(PluginsContext);
}
// src/PluginRenderer.tsx
var PluginRenderer = ({
activityComponentMap,
plugin
}) => {
const coreState = useCoreState();
const plugins = usePlugins();
return plugin.render({
stack: __spreadProps(__spreadValues({}, coreState), {
render(overrideStack) {
const stack = __spreadValues(__spreadValues({}, coreState), overrideStack);
return {
activities: stack.activities.map((activity) => __spreadProps(__spreadValues({}, activity), {
key: activity.id,
render(overrideActivity) {
const Activity = activityComponentMap[activity.name];
let output = /* @__PURE__ */ import_react14.default.createElement(Activity, {
params: activity.params
});
plugins.forEach((p) => {
var _a5, _b;
output = (_b = (_a5 = p.wrapActivity) == null ? void 0 : _a5.call(p, {
activity: __spreadProps(__spreadValues({}, activity), {
render: () => output
})
})) != null ? _b : output;
});
return /* @__PURE__ */ import_react14.default.createElement(StackProvider, {
value: stack
}, /* @__PURE__ */ import_react14.default.createElement(ActivityProvider, {
key: activity.id,
value: __spreadValues(__spreadValues({}, activity), overrideActivity)
}, output));
}
}))
};
}
})
});
};
PluginRenderer.displayName = "PluginRenderer";
var PluginRenderer_default = PluginRenderer;
// src/MainRenderer.tsx
var MainRenderer = ({
activityComponentMap
}) => {
const coreState = useCoreState();
const plugins = usePlugins();
const renderingPlugins = plugins.filter(
(plugin) => !!plugin.render
);
(0, import_react15.useEffect)(() => {
if (renderingPlugins.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.`
);
}
}, [renderingPlugins]);
let output = /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, renderingPlugins.map((plugin) => /* @__PURE__ */ import_react15.default.createElement(PluginRenderer_default, {
key: plugin.key,
activityComponentMap,
plugin
})));
plugins.forEach((plugin) => {
var _a5, _b;
output = (_b = (_a5 = plugin.wrapStack) == null ? void 0 : _a5.call(plugin, {
stack: __spreadProps(__spreadValues({}, coreState), {
render() {
return output;
}
})
})) != null ? _b : output;
});
return output;
};
MainRenderer.displayName = "MainRenderer";
var MainRenderer_default = MainRenderer;
// src/useActions.ts
var import_react16 = __toESM(require("react"));
function parseActionOptions(options) {
if (!options) {
return { skipActiveState: false };
}
const isNullableAnimateOption = options.animate === void 0 || options.animate == null;
if (isNullableAnimateOption) {
return { skipActiveState: false };
}
return { skipActiveState: !options.animate };
}
var _a3;
var useTransition = (_a3 = import_react16.default.useTransition) != null ? _a3 : () => [false, (cb) => cb()];
function useActions() {
const coreActions = useCoreActions();
const [pending] = useTransition();
return (0, import_react16.useMemo)(
() => ({
pending,
push(activityName, activityParams, options) {
const activityId = makeActivityId();
coreActions == null ? void 0 : coreActions.push({
activityId,
activityName,
activityParams,
skipEnterActiveState: parseActionOptions(options).skipActiveState
});
return {
activityId
};
},
replace(activityName, activityParams, options) {
var _a5;
const activityId = makeActivityId();
coreActions == null ? void 0 : coreActions.replace({
activityId: (_a5 = options == null ? void 0 : options.activityId) != null ? _a5 : makeActivityId(),
activityName,
activityParams,
skipEnterActiveState: parseActionOptions(options).skipActiveState
});
return {
activityId
};
},
pop(options) {
coreActions == null ? void 0 : coreActions.pop({
skipExitActiveState: parseActionOptions(options).skipActiveState
});
}
}),
[coreActions == null ? void 0 : coreActions.push, coreActions == null ? void 0 : coreActions.replace, coreActions == null ? void 0 : coreActions.pop, pending]
);
}
// src/useStepActions.ts
var import_react17 = __toESM(require("react"));
var _a4;
var useTransition2 = (_a4 = import_react17.default.useTransition) != null ? _a4 : () => [false, (cb) => cb()];
var useStepActions = () => {
const coreActions = useCoreActions();
const [pending] = useTransition2();
return (0, import_react17.useMemo)(
() => ({
pending,
stepPush(params) {
const stepId = makeStepId();
coreActions == null ? void 0 : coreActions.stepPush({
stepId,
stepParams: params
});
},
stepReplace(params) {
const stepId = makeStepId();
coreActions == null ? void 0 : coreActions.stepReplace({
stepId,
stepParams: params
});
},
stepPop() {
coreActions == null ? void 0 : coreActions.stepPop({});
}
}),
[
coreActions == null ? void 0 : coreActions.stepPush,
coreActions == null ? void 0 : coreActions.stepReplace,
coreActions == null ? void 0 : coreActions.stepPop,
pending
]
);
};
// src/stackflow.tsx
function parseActionOptions2(options) {
if (!options) {
return { skipActiveState: false };
}
const isNullableAnimateOption = options.animate === void 0 || options.animate == null;
if (isNullableAnimateOption) {
return { skipActiveState: false };
}
return { skipActiveState: !options.animate };
}
function stackflow(options) {
var _a5;
if (typeof window !== "undefined") {
const html = window.document.documentElement;
html.style.setProperty(
"--stackflow-transition-duration",
`${options.transitionDuration}ms`
);
}
const plugins = ((_a5 = options.plugins) != null ? _a5 : []).flat(Infinity).map((p) => p);
const pluginInstances = plugins.map((plugin) => plugin());
const activityComponentMap = Object.entries(options.activities).reduce(
(acc, [key, Activity]) => __spreadProps(__spreadValues({}, acc), {
[key]: "component" in Activity ? import_react18.default.memo(Activity.component) : import_react18.default.memo(Activity)
}),
{}
);
const enoughPastTime = () => new Date().getTime() - options.transitionDuration * 2;
const staticCoreStore = (0, import_core7.makeCoreStore)({
initialEvents: [
(0, import_core7.makeEvent)("Initialized", {
transitionDuration: options.transitionDuration,
eventDate: enoughPastTime()
}),
...Object.entries(options.activities).map(
([activityName, Activity]) => (0, import_core7.makeEvent)("ActivityRegistered", __spreadValues({
activityName,
eventDate: enoughPastTime()
}, "component" in Activity ? {
activityParamsSchema: Activity.paramsSchema
} : null))
)
],
plugins: []
});
const [getCoreStore, setCoreStore] = makeRef();
const Stack = (props) => {
const coreStore = (0, import_react18.useMemo)(() => {
const initialPushedEventsByOption = options.initialActivity ? [
(0, import_core7.makeEvent)("Pushed", {
activityId: makeActivityId(),
activityName: options.initialActivity(),
activityParams: {},
eventDate: enoughPastTime(),
skipEnterActiveState: false
})
] : [];
const initialPushedEvents = pluginInstances.reduce(
(initialEvents, pluginInstance) => {
var _a6, _b, _c;
return (_c = (_b = pluginInstance.overrideInitialEvents) == null ? void 0 : _b.call(pluginInstance, {
initialEvents,
initialContext: (_a6 = props.initialContext) != null ? _a6 : {}
})) != null ? _c : initialEvents;
},
initialPushedEventsByOption
);
const isInitialActivityIgnored = initialPushedEvents.length > 0 && initialPushedEventsByOption.length > 0 && initialPushedEvents !== initialPushedEventsByOption;
if (isInitialActivityIgnored) {
console.warn(
`Stackflow - Some plugin overrides an "initialActivity" option. The "initialActivity" option you set to "${initialPushedEventsByOption[0].activityName}" in the "stackflow" is ignored.`
);
}
if (initialPushedEvents.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\`)`
);
}
const store = (0, import_core7.makeCoreStore)({
initialEvents: [
...staticCoreStore.pullEvents(),
...initialPushedEvents
],
plugins
});
if (typeof window !== "undefined") {
store.init();
}
setCoreStore(store);
return store;
}, []);
return /* @__PURE__ */ import_react18.default.createElement(PluginsProvider, {
value: pluginInstances
}, /* @__PURE__ */ import_react18.default.createElement(CoreProvider, {
coreStore
}, /* @__PURE__ */ import_react18.default.createElement(MainRenderer_default, {
activityComponentMap
})));
};
Stack.displayName = "Stack";
return {
activities: options.activities,
Stack,
useFlow: useActions,
useStepFlow: useStepActions,
addActivity(activity) {
if (getCoreStore()) {
console.warn(
`Stackflow - \`addActivity()\` API cannot be called after a \`<Stack />\` component has been rendered`
);
return;
}
activityComponentMap[activity.name] = import_react18.default.memo(activity.component);
staticCoreStore.actions.dispatchEvent("ActivityRegistered", {
activityName: activity.name,
activityParamsSchema: activity.paramsSchema,
eventDate: enoughPastTime()
});
},
addPlugin(plugin) {
if (getCoreStore()) {
console.warn(
`Stackflow - \`addPlugin()\` API cannot be called after a \`<Stack />\` component has been rendered`
);
return;
}
[plugin].flat(Infinity).map((p) => p).forEach((p) => {
plugins.push(p);
pluginInstances.push(p());
});
},
actions: {
getStack() {
var _a6, _b;
return (_b = (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.getStack()) != null ? _b : staticCoreStore.actions.getStack();
},
dispatchEvent(name, parameters) {
var _a6;
return (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.dispatchEvent(name, parameters);
},
push(activityName, activityParams, options2) {
var _a6;
const activityId = makeActivityId();
(_a6 = getCoreStore()) == null ? void 0 : _a6.actions.push({
activityId,
activityName,
activityParams,
skipEnterActiveState: parseActionOptions2(options2).skipActiveState
});
return {
activityId
};
},
replace(activityName, activityParams, options2) {
var _a6, _b, _c;
const activityId = (_a6 = options2 == null ? void 0 : options2.activityId) != null ? _a6 : makeActivityId();
(_c = getCoreStore()) == null ? void 0 : _c.actions.replace({
activityId: (_b = options2 == null ? void 0 : options2.activityId) != null ? _b : makeActivityId(),
activityName,
activityParams,
skipEnterActiveState: parseActionOptions2(options2).skipActiveState
});
return {
activityId
};
},
pop(options2) {
var _a6;
return (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.pop({
skipExitActiveState: parseActionOptions2(options2).skipActiveState
});
},
stepPush(params) {
var _a6;
const stepId = makeStepId();
return (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.stepPush({
stepId,
stepParams: params
});
},
stepReplace(params) {
var _a6;
const stepId = makeStepId();
return (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.stepReplace({
stepId,
stepParams: params
});
},
stepPop() {
var _a6;
return (_a6 = getCoreStore()) == null ? void 0 : _a6.actions.stepPop({});
}
}
};
}
// src/useActiveEffect.ts
var import_react19 = require("react");
var noop = () => {
};
var useActiveEffect = (effect) => {
const { isActive } = useActivity();
(0, import_react19.useEffect)(() => {
if (isActive) {
return effect();
}
return noop;
}, [isActive]);
};
//# sourceMappingURL=index.js.map

11

package.json
{
"name": "@stackflow/react",
"version": "0.19.2-alpha.2",
"version": "0.20.0",
"license": "MIT",

@@ -30,5 +30,5 @@ "exports": {

"devDependencies": {
"@stackflow/core": "^0.19.1",
"@stackflow/esbuild-config": "^0.19.0",
"@stackflow/eslint-config": "^0.19.0",
"@stackflow/core": "^0.20.0",
"@stackflow/esbuild-config": "^0.20.0",
"@stackflow/eslint-config": "^0.20.0",
"@types/react": "^18.0.9",

@@ -64,3 +64,4 @@ "@typescript-eslint/eslint-plugin": "^5.32.0",

]
}
},
"gitHead": "764a17cfd23ebdad801b4b58f67c53505149f4db"
}

@@ -76,3 +76,3 @@ import React, { useMemo } from "react";

const coreActions = useCoreActions();
const [pending, startTransition] = useTransition();
const [pending] = useTransition();

@@ -85,3 +85,3 @@ return useMemo(

coreActions.push({
coreActions?.push({
activityId,

@@ -100,3 +100,3 @@ activityName,

coreActions.replace({
coreActions?.replace({
activityId: options?.activityId ?? makeActivityId(),

@@ -113,3 +113,3 @@ activityName,

pop(options) {
coreActions.pop({
coreActions?.pop({
skipExitActiveState: parseActionOptions(options).skipActiveState,

@@ -119,10 +119,4 @@ });

}),
[
coreActions.push,
coreActions.replace,
coreActions.pop,
pending,
startTransition,
],
[coreActions?.push, coreActions?.replace, coreActions?.pop, pending],
);
}

@@ -5,6 +5,7 @@ import { useEffect } from "react";

const noop = () => {};
export const useActiveEffect = (effect: React.EffectCallback) => {
const { isActive } = useActivity();
// eslint-disable-next-line consistent-return
useEffect(() => {

@@ -14,3 +15,5 @@ if (isActive) {

}
return noop;
}, [isActive]);
};

@@ -32,3 +32,3 @@ import React, { useMemo } from "react";

const coreActions = useCoreActions();
const [pending, startTransition] = useTransition();
const [pending] = useTransition();

@@ -41,3 +41,3 @@ return useMemo(

coreActions.stepPush({
coreActions?.stepPush({
stepId,

@@ -50,3 +50,3 @@ stepParams: params,

coreActions.stepReplace({
coreActions?.stepReplace({
stepId,

@@ -57,13 +57,12 @@ stepParams: params,

stepPop() {
coreActions.stepPop({});
coreActions?.stepPop({});
},
}),
[
coreActions.stepPush,
coreActions.stepReplace,
coreActions.stepPop,
coreActions?.stepPush,
coreActions?.stepReplace,
coreActions?.stepPop,
pending,
startTransition,
],
);
};

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

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