one 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/headless/__tests__/useStack.test.cjs +79 -0
- package/dist/cjs/headless/__tests__/useStack.test.native.js +85 -0
- package/dist/cjs/headless/__tests__/useStack.test.native.js.map +1 -0
- package/dist/cjs/headless/useStack.cjs +2 -1
- package/dist/cjs/headless/useStack.native.js +2 -1
- package/dist/cjs/headless/useStack.native.js.map +1 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/Stack.cjs +12 -9
- package/dist/cjs/layouts/Stack.native.js +13 -10
- package/dist/cjs/layouts/Stack.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackScreen.cjs +6 -3
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js +7 -4
- package/dist/cjs/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/cjs/layouts/stack-utils/StackToolbar.cjs +124 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.native.js +129 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.native.js.map +1 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.cjs +57 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js +61 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.shared.native.js.map +1 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.cjs +18 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js +21 -0
- package/dist/cjs/layouts/stack-utils/StackToolbar.types.native.js.map +1 -0
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.cjs +39 -0
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js +41 -0
- package/dist/cjs/layouts/stack-utils/StackToolbarImplementation.native.js.map +1 -0
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.cjs +66 -0
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js +99 -0
- package/dist/cjs/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +1 -0
- package/dist/cjs/layouts/stack-utils/index.cjs +2 -0
- package/dist/cjs/layouts/stack-utils/index.native.js +2 -0
- package/dist/cjs/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.cjs +9 -3
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js +9 -4
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.test.cjs +84 -0
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.test.native.js +91 -0
- package/dist/cjs/metro-config/buildOneMetroResolverOverrides.test.native.js.map +1 -0
- package/dist/cjs/router/router.native.js.map +1 -1
- package/dist/cjs/router/useInitializeOneRouter.cjs +2 -2
- package/dist/cjs/router/useInitializeOneRouter.native.js +2 -2
- package/dist/cjs/router/useInitializeOneRouter.native.js.map +1 -1
- package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.cjs +1 -1
- package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.native.js +1 -1
- package/dist/cjs/router/useInitializeOneRouter.preview-lifecycle.test.native.js.map +1 -1
- package/dist/cjs/stack-toolbar-implementation.cjs +30 -0
- package/dist/cjs/stack-toolbar-implementation.native.js +33 -0
- package/dist/cjs/stack-toolbar-implementation.native.js.map +1 -0
- package/dist/esm/headless/__tests__/useStack.test.mjs +56 -0
- package/dist/esm/headless/__tests__/useStack.test.mjs.map +1 -0
- package/dist/esm/headless/__tests__/useStack.test.native.js +59 -0
- package/dist/esm/headless/__tests__/useStack.test.native.js.map +1 -0
- package/dist/esm/headless/useStack.mjs +2 -1
- package/dist/esm/headless/useStack.mjs.map +1 -1
- package/dist/esm/headless/useStack.native.js +2 -1
- package/dist/esm/headless/useStack.native.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/Stack.mjs +13 -10
- package/dist/esm/layouts/Stack.mjs.map +1 -1
- package/dist/esm/layouts/Stack.native.js +14 -11
- package/dist/esm/layouts/Stack.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.mjs +6 -3
- package/dist/esm/layouts/stack-utils/StackScreen.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/StackScreen.native.js +7 -4
- package/dist/esm/layouts/stack-utils/StackScreen.native.js.map +1 -1
- package/dist/esm/layouts/stack-utils/StackToolbar.mjs +89 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.mjs.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.native.js +92 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs +31 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.mjs.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js +32 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.shared.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs +2 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.types.mjs.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js +2 -0
- package/dist/esm/layouts/stack-utils/StackToolbar.types.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs +12 -0
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.mjs.map +1 -0
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js +12 -0
- package/dist/esm/layouts/stack-utils/StackToolbarImplementation.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs +67 -0
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.mjs.map +1 -0
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js +73 -0
- package/dist/esm/layouts/stack-utils/__tests__/StackToolbar.test.native.js.map +1 -0
- package/dist/esm/layouts/stack-utils/index.mjs +2 -1
- package/dist/esm/layouts/stack-utils/index.mjs.map +1 -1
- package/dist/esm/layouts/stack-utils/index.native.js +2 -1
- package/dist/esm/layouts/stack-utils/index.native.js.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs +9 -3
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.mjs.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js +9 -4
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.native.js.map +1 -1
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.test.mjs +61 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.test.mjs.map +1 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.test.native.js +65 -0
- package/dist/esm/metro-config/buildOneMetroResolverOverrides.test.native.js.map +1 -0
- package/dist/esm/router/useInitializeOneRouter.mjs +1 -1
- package/dist/esm/router/useInitializeOneRouter.mjs.map +1 -1
- package/dist/esm/router/useInitializeOneRouter.native.js +1 -1
- package/dist/esm/router/useInitializeOneRouter.preview-lifecycle.test.mjs +1 -1
- package/dist/esm/router/useInitializeOneRouter.preview-lifecycle.test.mjs.map +1 -1
- package/dist/esm/router/useInitializeOneRouter.preview-lifecycle.test.native.js +1 -1
- package/dist/esm/router/useInitializeOneRouter.preview-lifecycle.test.native.js.map +1 -1
- package/dist/esm/stack-toolbar-implementation.mjs +3 -0
- package/dist/esm/stack-toolbar-implementation.mjs.map +1 -0
- package/dist/esm/stack-toolbar-implementation.native.js +3 -0
- package/dist/esm/stack-toolbar-implementation.native.js.map +1 -0
- package/package.json +26 -20
- package/src/headless/__tests__/useStack.test.tsx +54 -0
- package/src/headless/types.ts +2 -1
- package/src/headless/useStack.ts +2 -1
- package/src/index.ts +12 -0
- package/src/layouts/Stack.tsx +33 -8
- package/src/layouts/stack-utils/README.md +1 -0
- package/src/layouts/stack-utils/StackScreen.tsx +26 -5
- package/src/layouts/stack-utils/StackToolbar.shared.ts +44 -0
- package/src/layouts/stack-utils/StackToolbar.tsx +134 -0
- package/src/layouts/stack-utils/StackToolbar.types.ts +100 -0
- package/src/layouts/stack-utils/StackToolbarImplementation.tsx +39 -0
- package/src/layouts/stack-utils/__tests__/StackToolbar.test.tsx +70 -0
- package/src/layouts/stack-utils/index.tsx +17 -0
- package/src/metro-config/buildOneMetroResolverOverrides.test.ts +88 -0
- package/src/metro-config/buildOneMetroResolverOverrides.ts +20 -8
- package/src/router/router.ts +5 -5
- package/src/router/useInitializeOneRouter.preview-lifecycle.test.ts +1 -1
- package/src/router/useInitializeOneRouter.ts +2 -2
- package/src/stack-toolbar-implementation.ts +8 -0
- package/types/fork/useLinking.native.d.ts +4 -4
- package/types/headless/types.d.ts +4 -1
- package/types/headless/types.d.ts.map +1 -1
- package/types/headless/useStack.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/layouts/Drawer.d.ts +54 -54
- package/types/layouts/Stack.d.ts +58 -46
- package/types/layouts/Stack.d.ts.map +1 -1
- package/types/layouts/Tabs.d.ts +46 -46
- package/types/layouts/stack-utils/StackScreen.d.ts +2 -1
- package/types/layouts/stack-utils/StackScreen.d.ts.map +1 -1
- package/types/layouts/stack-utils/StackToolbar.d.ts +28 -0
- package/types/layouts/stack-utils/StackToolbar.d.ts.map +1 -0
- package/types/layouts/stack-utils/StackToolbar.shared.d.ts +5 -0
- package/types/layouts/stack-utils/StackToolbar.shared.d.ts.map +1 -0
- package/types/layouts/stack-utils/StackToolbar.types.d.ts +83 -0
- package/types/layouts/stack-utils/StackToolbar.types.d.ts.map +1 -0
- package/types/layouts/stack-utils/StackToolbarImplementation.d.ts +12 -0
- package/types/layouts/stack-utils/StackToolbarImplementation.d.ts.map +1 -0
- package/types/layouts/stack-utils/index.d.ts +3 -1
- package/types/layouts/stack-utils/index.d.ts.map +1 -1
- package/types/metro-config/buildOneMetroResolverOverrides.d.ts +2 -1
- package/types/metro-config/buildOneMetroResolverOverrides.d.ts.map +1 -1
- package/types/metro-config/buildOneMetroResolverOverrides.test.d.ts +2 -0
- package/types/metro-config/buildOneMetroResolverOverrides.test.d.ts.map +1 -0
- package/types/router/router.d.ts +1 -1
- package/types/router/router.d.ts.map +1 -1
- package/types/stack-toolbar-implementation.d.ts +3 -0
- package/types/stack-toolbar-implementation.d.ts.map +1 -0
- package/types/ui/TabContext.d.ts +15 -23
- package/types/ui/TabContext.d.ts.map +1 -1
- package/types/ui/TabRouter.d.ts +5 -5
- package/types/ui/Tabs.shared.d.ts +22 -22
- package/types/ui/Tabs.shared.d.ts.map +1 -1
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import { Children, isValidElement, useMemo } from "react";
|
|
4
4
|
import { NAVIGATOR_CONFIG } from "../../headless/children.mjs";
|
|
5
5
|
import { StackHeaderComponent, appendStackHeaderPropsToOptions } from "./StackHeaderComponent.mjs";
|
|
6
|
+
import { StackToolbar, appendStackToolbarPropsToOptions } from "./StackToolbar.mjs";
|
|
7
|
+
import { getStackToolbarImplementation } from "./StackToolbarImplementation.mjs";
|
|
6
8
|
import { Screen } from "../../views/Screen.mjs";
|
|
7
9
|
import { jsx } from "react/jsx-runtime";
|
|
8
10
|
function StackScreen({
|
|
@@ -10,9 +12,10 @@ function StackScreen({
|
|
|
10
12
|
options,
|
|
11
13
|
...rest
|
|
12
14
|
}) {
|
|
15
|
+
const toolbarImplementation = getStackToolbarImplementation();
|
|
13
16
|
const updatedOptions = useMemo(() => appendScreenStackPropsToOptions(options ?? {}, {
|
|
14
17
|
children
|
|
15
|
-
}), [options, children]);
|
|
18
|
+
}, toolbarImplementation), [options, children, toolbarImplementation]);
|
|
16
19
|
return /* @__PURE__ */jsx(Screen, {
|
|
17
20
|
...rest,
|
|
18
21
|
options: updatedOptions
|
|
@@ -27,14 +30,14 @@ function validateStackPresentation(options) {
|
|
|
27
30
|
};
|
|
28
31
|
return options;
|
|
29
32
|
}
|
|
30
|
-
function appendScreenStackPropsToOptions(options, props) {
|
|
33
|
+
function appendScreenStackPropsToOptions(options, props, toolbarImplementation) {
|
|
31
34
|
let updatedOptions = {
|
|
32
35
|
...options,
|
|
33
36
|
...props.options
|
|
34
37
|
};
|
|
35
38
|
updatedOptions = validateStackPresentation(updatedOptions);
|
|
36
39
|
function appendChildOptions(child, options2) {
|
|
37
|
-
if (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);else console.warn(`Warning: Unknown child element passed to Stack.Screen: ${child.type.name ?? child.type}`);
|
|
40
|
+
if (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);else if (child.type === StackToolbar) return appendStackToolbarPropsToOptions(options2, child.props, toolbarImplementation);else console.warn(`Warning: Unknown child element passed to Stack.Screen: ${child.type.name ?? child.type}`);
|
|
38
41
|
return options2;
|
|
39
42
|
}
|
|
40
43
|
Children.forEach(props.children, child => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Children","isValidElement","useMemo","NAVIGATOR_CONFIG","StackHeaderComponent","appendStackHeaderPropsToOptions","Screen","jsx","StackScreen","children","options","rest","updatedOptions","appendScreenStackPropsToOptions","Object","assign","validateStackPresentation","args","props","appendChildOptions","child","options2","type","console","warn","name","forEach"],"sources":["StackScreen.mjs"],"sourcesContent":["\"use client\";\n\nimport { Children, isValidElement, useMemo } from \"react\";\nimport { NAVIGATOR_CONFIG } from \"../../headless/children\";\nimport { StackHeaderComponent, appendStackHeaderPropsToOptions } from \"./StackHeaderComponent\";\nimport { Screen } from \"../../views/Screen\";\nimport { jsx } from \"react/jsx-runtime\";\n\nfunction StackScreen({ children, options, ...rest }) {\n\tconst updatedOptions = useMemo(() => appendScreenStackPropsToOptions(options ?? {}, { children }), [
|
|
1
|
+
{"version":3,"names":["Children","isValidElement","useMemo","NAVIGATOR_CONFIG","StackHeaderComponent","appendStackHeaderPropsToOptions","StackToolbar","appendStackToolbarPropsToOptions","getStackToolbarImplementation","Screen","jsx","StackScreen","children","options","rest","toolbarImplementation","updatedOptions","appendScreenStackPropsToOptions","Object","assign","validateStackPresentation","args","props","appendChildOptions","child","options2","type","console","warn","name","forEach"],"sources":["StackScreen.mjs"],"sourcesContent":["\"use client\";\n\nimport { Children, isValidElement, useMemo } from \"react\";\nimport { NAVIGATOR_CONFIG } from \"../../headless/children\";\nimport { StackHeaderComponent, appendStackHeaderPropsToOptions } from \"./StackHeaderComponent\";\nimport { StackToolbar, appendStackToolbarPropsToOptions } from \"./StackToolbar\";\nimport { getStackToolbarImplementation } from \"./StackToolbarImplementation\";\nimport { Screen } from \"../../views/Screen\";\nimport { jsx } from \"react/jsx-runtime\";\n\nfunction StackScreen({ children, options, ...rest }) {\n\tconst toolbarImplementation = getStackToolbarImplementation();\n\tconst updatedOptions = useMemo(() => appendScreenStackPropsToOptions(options ?? {}, { children }, toolbarImplementation), [\n\t\toptions,\n\t\tchildren,\n\t\ttoolbarImplementation\n\t]);\n\treturn /* @__PURE__ */ jsx(Screen, {\n\t\t...rest,\n\t\toptions: updatedOptions\n\t});\n}\nObject.assign(StackScreen, { [NAVIGATOR_CONFIG]: true });\nfunction validateStackPresentation(options) {\n\tif (typeof options === \"function\") return (...args) => {\n\t\treturn validateStackPresentation(options(...args));\n\t};\n\treturn options;\n}\nfunction appendScreenStackPropsToOptions(options, props, toolbarImplementation) {\n\tlet updatedOptions = {\n\t\t...options,\n\t\t...props.options\n\t};\n\tupdatedOptions = validateStackPresentation(updatedOptions);\n\tfunction appendChildOptions(child, options2) {\n\t\tif (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);\n\t\telse if (child.type === StackToolbar) return appendStackToolbarPropsToOptions(options2, child.props, toolbarImplementation);\n\t\telse console.warn(`Warning: Unknown child element passed to Stack.Screen: ${child.type.name ?? child.type}`);\n\t\treturn options2;\n\t}\n\tChildren.forEach(props.children, (child) => {\n\t\tif (isValidElement(child)) updatedOptions = appendChildOptions(child, updatedOptions);\n\t});\n\treturn updatedOptions;\n}\n\nexport { StackScreen, appendScreenStackPropsToOptions, validateStackPresentation };"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,QAAQ,EAAEC,cAAc,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,gBAAgB,QAAQ,6BAAyB;AAC1D,SAASC,oBAAoB,EAAEC,+BAA+B,QAAQ,4BAAwB;AAC9F,SAASC,YAAY,EAAEC,gCAAgC,QAAQ,oBAAgB;AAC/E,SAASC,6BAA6B,QAAQ,kCAA8B;AAC5E,SAASC,MAAM,QAAQ,wBAAoB;AAC3C,SAASC,GAAG,QAAQ,mBAAmB;AAEvC,SAASC,WAAWA,CAAC;EAAEC,QAAQ;EAAEC,OAAO;EAAE,GAAGC;AAAK,CAAC,EAAE;EACpD,MAAMC,qBAAqB,GAAGP,6BAA6B,CAAC,CAAC;EAC7D,MAAMQ,cAAc,GAAGd,OAAO,CAAC,MAAMe,+BAA+B,CAACJ,OAAO,IAAI,CAAC,CAAC,EAAE;IAAED;EAAS,CAAC,EAAEG,qBAAqB,CAAC,EAAE,CACzHF,OAAO,EACPD,QAAQ,EACRG,qBAAqB,CACrB,CAAC;EACF,OAAO,eAAgBL,GAAG,CAACD,MAAM,EAAE;IAClC,GAAGK,IAAI;IACPD,OAAO,EAAEG;EACV,CAAC,CAAC;AACH;AACAE,MAAM,CAACC,MAAM,CAACR,WAAW,EAAE;EAAE,CAACR,gBAAgB,GAAG;AAAK,CAAC,CAAC;AACxD,SAASiB,yBAAyBA,CAACP,OAAO,EAAE;EAC3C,IAAI,OAAOA,OAAO,KAAK,UAAU,EAAE,OAAO,CAAC,GAAGQ,IAAI,KAAK;IACtD,OAAOD,yBAAyB,CAACP,OAAO,CAAC,GAAGQ,IAAI,CAAC,CAAC;EACnD,CAAC;EACD,OAAOR,OAAO;AACf;AACA,SAASI,+BAA+BA,CAACJ,OAAO,EAAES,KAAK,EAAEP,qBAAqB,EAAE;EAC/E,IAAIC,cAAc,GAAG;IACpB,GAAGH,OAAO;IACV,GAAGS,KAAK,CAACT;EACV,CAAC;EACDG,cAAc,GAAGI,yBAAyB,CAACJ,cAAc,CAAC;EAC1D,SAASO,kBAAkBA,CAACC,KAAK,EAAEC,QAAQ,EAAE;IAC5C,IAAID,KAAK,CAACE,IAAI,KAAKtB,oBAAoB,EAAE,OAAOC,+BAA+B,CAACoB,QAAQ,EAAED,KAAK,CAACF,KAAK,CAAC,CAAC,KAClG,IAAIE,KAAK,CAACE,IAAI,KAAKpB,YAAY,EAAE,OAAOC,gCAAgC,CAACkB,QAAQ,EAAED,KAAK,CAACF,KAAK,EAAEP,qBAAqB,CAAC,CAAC,KACvHY,OAAO,CAACC,IAAI,CAAC,0DAA0DJ,KAAK,CAACE,IAAI,CAACG,IAAI,IAAIL,KAAK,CAACE,IAAI,EAAE,CAAC;IAC5G,OAAOD,QAAQ;EAChB;EACAzB,QAAQ,CAAC8B,OAAO,CAACR,KAAK,CAACV,QAAQ,EAAGY,KAAK,IAAK;IAC3C,IAAIvB,cAAc,CAACuB,KAAK,CAAC,EAAER,cAAc,GAAGO,kBAAkB,CAACC,KAAK,EAAER,cAAc,CAAC;EACtF,CAAC,CAAC;EACF,OAAOA,cAAc;AACtB;AAEA,SAASL,WAAW,EAAEM,+BAA+B,EAAEG,yBAAyB","ignoreList":[]}
|
|
@@ -4,6 +4,8 @@ import { jsx } from "react/jsx-runtime";
|
|
|
4
4
|
import { Children, isValidElement, useMemo } from "react";
|
|
5
5
|
import { NAVIGATOR_CONFIG } from "../../headless/children.native.js";
|
|
6
6
|
import { StackHeaderComponent, appendStackHeaderPropsToOptions } from "./StackHeaderComponent.native.js";
|
|
7
|
+
import { StackToolbar, appendStackToolbarPropsToOptions } from "./StackToolbar.native.js";
|
|
8
|
+
import { getStackToolbarImplementation } from "./StackToolbarImplementation.native.js";
|
|
7
9
|
import { Screen } from "../../views/Screen.native.js";
|
|
8
10
|
function StackScreen(param) {
|
|
9
11
|
var {
|
|
@@ -11,11 +13,12 @@ function StackScreen(param) {
|
|
|
11
13
|
options,
|
|
12
14
|
...rest
|
|
13
15
|
} = param;
|
|
16
|
+
var toolbarImplementation = getStackToolbarImplementation();
|
|
14
17
|
var updatedOptions = useMemo(function () {
|
|
15
18
|
return appendScreenStackPropsToOptions(options !== null && options !== void 0 ? options : {}, {
|
|
16
19
|
children
|
|
17
|
-
});
|
|
18
|
-
}, [options, children]);
|
|
20
|
+
}, toolbarImplementation);
|
|
21
|
+
}, [options, children, toolbarImplementation]);
|
|
19
22
|
return /* @__PURE__ */jsx(Screen, {
|
|
20
23
|
...rest,
|
|
21
24
|
options: updatedOptions
|
|
@@ -40,14 +43,14 @@ function validateStackPresentation(options) {
|
|
|
40
43
|
presentation: "modal"
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
|
-
function appendScreenStackPropsToOptions(options, props) {
|
|
46
|
+
function appendScreenStackPropsToOptions(options, props, toolbarImplementation) {
|
|
44
47
|
var updatedOptions = {
|
|
45
48
|
...options,
|
|
46
49
|
...props.options
|
|
47
50
|
};
|
|
48
51
|
updatedOptions = validateStackPresentation(updatedOptions);
|
|
49
52
|
function appendChildOptions(child, options2) {
|
|
50
|
-
if (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);else {
|
|
53
|
+
if (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);else if (child.type === StackToolbar) return appendStackToolbarPropsToOptions(options2, child.props, toolbarImplementation);else {
|
|
51
54
|
var _child_type_name;
|
|
52
55
|
console.warn(`Warning: Unknown child element passed to Stack.Screen: ${(_child_type_name = child.type.name) !== null && _child_type_name !== void 0 ? _child_type_name : child.type}`);
|
|
53
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","Children","isValidElement","useMemo","NAVIGATOR_CONFIG","StackHeaderComponent","appendStackHeaderPropsToOptions","Screen","StackScreen","param","children","options","rest","updatedOptions","appendScreenStackPropsToOptions","Object","assign","NATIVE_PRESENTATIONS","validateStackPresentation","_len","arguments","length","args","Array","_key","presentation","includes","props","appendChildOptions","child","options2","type","_child_type_name","console","warn","name","forEach"],"sources":["StackScreen.native.js"],"sourcesContent":["\"use client\";\n\nimport { jsx } from \"react/jsx-runtime\";\nimport { Children, isValidElement, useMemo } from \"react\";\nimport { NAVIGATOR_CONFIG } from \"../../headless/children\";\nimport { StackHeaderComponent, appendStackHeaderPropsToOptions } from \"./StackHeaderComponent\";\nimport { Screen } from \"../../views/Screen\";\n\nfunction StackScreen(param) {\n\tvar { children, options, ...rest } = param;\n\tvar updatedOptions = useMemo(function() {\n\t\treturn appendScreenStackPropsToOptions(options !== null && options !== void 0 ? options : {}, { children });\n\t}, [
|
|
1
|
+
{"version":3,"names":["jsx","Children","isValidElement","useMemo","NAVIGATOR_CONFIG","StackHeaderComponent","appendStackHeaderPropsToOptions","StackToolbar","appendStackToolbarPropsToOptions","getStackToolbarImplementation","Screen","StackScreen","param","children","options","rest","toolbarImplementation","updatedOptions","appendScreenStackPropsToOptions","Object","assign","NATIVE_PRESENTATIONS","validateStackPresentation","_len","arguments","length","args","Array","_key","presentation","includes","props","appendChildOptions","child","options2","type","_child_type_name","console","warn","name","forEach"],"sources":["StackScreen.native.js"],"sourcesContent":["\"use client\";\n\nimport { jsx } from \"react/jsx-runtime\";\nimport { Children, isValidElement, useMemo } from \"react\";\nimport { NAVIGATOR_CONFIG } from \"../../headless/children\";\nimport { StackHeaderComponent, appendStackHeaderPropsToOptions } from \"./StackHeaderComponent\";\nimport { StackToolbar, appendStackToolbarPropsToOptions } from \"./StackToolbar\";\nimport { getStackToolbarImplementation } from \"./StackToolbarImplementation\";\nimport { Screen } from \"../../views/Screen\";\n\nfunction StackScreen(param) {\n\tvar { children, options, ...rest } = param;\n\tvar toolbarImplementation = getStackToolbarImplementation();\n\tvar updatedOptions = useMemo(function() {\n\t\treturn appendScreenStackPropsToOptions(options !== null && options !== void 0 ? options : {}, { children }, toolbarImplementation);\n\t}, [\n\t\toptions,\n\t\tchildren,\n\t\ttoolbarImplementation\n\t]);\n\treturn /* @__PURE__ */ jsx(Screen, {\n\t\t...rest,\n\t\toptions: updatedOptions\n\t});\n}\nObject.assign(StackScreen, { [NAVIGATOR_CONFIG]: true });\nvar NATIVE_PRESENTATIONS = [\n\t\"card\",\n\t\"modal\",\n\t\"transparentModal\",\n\t\"containedModal\",\n\t\"containedTransparentModal\",\n\t\"fullScreenModal\",\n\t\"formSheet\",\n\t\"pageSheet\"\n];\nfunction validateStackPresentation(options) {\n\tif (typeof options === \"function\") return function() {\n\t\tfor (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n\t\treturn validateStackPresentation(options(...args));\n\t};\n\tif (!options.presentation) return options;\n\tif (options.presentation === \"sheet\") return {\n\t\t...options,\n\t\tpresentation: \"formSheet\"\n\t};\n\treturn NATIVE_PRESENTATIONS.includes(options.presentation) ? options : {\n\t\t...options,\n\t\tpresentation: \"modal\"\n\t};\n}\nfunction appendScreenStackPropsToOptions(options, props, toolbarImplementation) {\n\tvar updatedOptions = {\n\t\t...options,\n\t\t...props.options\n\t};\n\tupdatedOptions = validateStackPresentation(updatedOptions);\n\tfunction appendChildOptions(child, options2) {\n\t\tif (child.type === StackHeaderComponent) return appendStackHeaderPropsToOptions(options2, child.props);\n\t\telse if (child.type === StackToolbar) return appendStackToolbarPropsToOptions(options2, child.props, toolbarImplementation);\n\t\telse {\n\t\t\tvar _child_type_name;\n\t\t\tconsole.warn(`Warning: Unknown child element passed to Stack.Screen: ${(_child_type_name = child.type.name) !== null && _child_type_name !== void 0 ? _child_type_name : child.type}`);\n\t\t}\n\t\treturn options2;\n\t}\n\tChildren.forEach(props.children, function(child) {\n\t\tif (/* @__PURE__ */ isValidElement(child)) updatedOptions = appendChildOptions(child, updatedOptions);\n\t});\n\treturn updatedOptions;\n}\n\nexport { StackScreen, appendScreenStackPropsToOptions, validateStackPresentation };"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
|
|
5
|
+
import { NAVIGATOR_CONFIG } from "../../headless/children.mjs";
|
|
6
|
+
import { useNavigation } from "../../router/useNavigation.mjs";
|
|
7
|
+
import { STACK_TOOLBAR_CHILD, getStackToolbarImplementation } from "./StackToolbarImplementation.mjs";
|
|
8
|
+
import { appendStackToolbarConfig } from "./StackToolbar.shared.mjs";
|
|
9
|
+
function appendStackToolbarPropsToOptions(options, props, implementation) {
|
|
10
|
+
const optionsWithConfig = appendStackToolbarConfig(options, props);
|
|
11
|
+
return implementation ? implementation.appendPropsToOptions(optionsWithConfig, props) : optionsWithConfig;
|
|
12
|
+
}
|
|
13
|
+
function StackToolbarComponent(props) {
|
|
14
|
+
const navigation = useNavigation();
|
|
15
|
+
const implementation = getStackToolbarImplementation();
|
|
16
|
+
const options = useMemo(() => appendStackToolbarPropsToOptions({}, props, implementation), [implementation, props.placement, props.asChild, props.children, props.disableImePadding, props.tintColor, props.backgroundColor]);
|
|
17
|
+
useIsomorphicLayoutEffect(() => {
|
|
18
|
+
navigation.setOptions(options);
|
|
19
|
+
}, [navigation, options]);
|
|
20
|
+
return implementation?.render(props) ?? null;
|
|
21
|
+
}
|
|
22
|
+
function StackToolbarButton(_props) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function StackToolbarMenu(_props) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function StackToolbarMenuAction(_props) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
function StackToolbarSpacer(_props) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function StackToolbarSearchBarSlot(_props) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function StackToolbarView(_props) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function StackToolbarLabel(_props) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
function StackToolbarIcon(_props) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function StackToolbarBadge(_props) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
Object.assign(StackToolbarButton, {
|
|
50
|
+
[STACK_TOOLBAR_CHILD]: "button"
|
|
51
|
+
});
|
|
52
|
+
Object.assign(StackToolbarMenu, {
|
|
53
|
+
[STACK_TOOLBAR_CHILD]: "menu"
|
|
54
|
+
});
|
|
55
|
+
Object.assign(StackToolbarMenuAction, {
|
|
56
|
+
[STACK_TOOLBAR_CHILD]: "menuAction"
|
|
57
|
+
});
|
|
58
|
+
Object.assign(StackToolbarSpacer, {
|
|
59
|
+
[STACK_TOOLBAR_CHILD]: "spacer"
|
|
60
|
+
});
|
|
61
|
+
Object.assign(StackToolbarSearchBarSlot, {
|
|
62
|
+
[STACK_TOOLBAR_CHILD]: "searchBarSlot"
|
|
63
|
+
});
|
|
64
|
+
Object.assign(StackToolbarView, {
|
|
65
|
+
[STACK_TOOLBAR_CHILD]: "view"
|
|
66
|
+
});
|
|
67
|
+
Object.assign(StackToolbarLabel, {
|
|
68
|
+
[STACK_TOOLBAR_CHILD]: "label"
|
|
69
|
+
});
|
|
70
|
+
Object.assign(StackToolbarIcon, {
|
|
71
|
+
[STACK_TOOLBAR_CHILD]: "icon"
|
|
72
|
+
});
|
|
73
|
+
Object.assign(StackToolbarBadge, {
|
|
74
|
+
[STACK_TOOLBAR_CHILD]: "badge"
|
|
75
|
+
});
|
|
76
|
+
const StackToolbar = Object.assign(StackToolbarComponent, {
|
|
77
|
+
[NAVIGATOR_CONFIG]: true,
|
|
78
|
+
Button: StackToolbarButton,
|
|
79
|
+
Menu: StackToolbarMenu,
|
|
80
|
+
MenuAction: StackToolbarMenuAction,
|
|
81
|
+
Spacer: StackToolbarSpacer,
|
|
82
|
+
SearchBarSlot: StackToolbarSearchBarSlot,
|
|
83
|
+
View: StackToolbarView,
|
|
84
|
+
Label: StackToolbarLabel,
|
|
85
|
+
Icon: StackToolbarIcon,
|
|
86
|
+
Badge: StackToolbarBadge
|
|
87
|
+
});
|
|
88
|
+
export { StackToolbar, StackToolbarBadge, StackToolbarButton, StackToolbarIcon, StackToolbarLabel, StackToolbarMenu, StackToolbarMenuAction, StackToolbarSearchBarSlot, StackToolbarSpacer, StackToolbarView, appendStackToolbarPropsToOptions };
|
|
89
|
+
//# sourceMappingURL=StackToolbar.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useIsomorphicLayoutEffect","NAVIGATOR_CONFIG","useNavigation","STACK_TOOLBAR_CHILD","getStackToolbarImplementation","appendStackToolbarConfig","appendStackToolbarPropsToOptions","options","props","implementation","optionsWithConfig","appendPropsToOptions","StackToolbarComponent","navigation","placement","asChild","children","disableImePadding","tintColor","backgroundColor","setOptions","render","StackToolbarButton","_props","StackToolbarMenu","StackToolbarMenuAction","StackToolbarSpacer","StackToolbarSearchBarSlot","StackToolbarView","StackToolbarLabel","StackToolbarIcon","StackToolbarBadge","Object","assign","StackToolbar","Button","Menu","MenuAction","Spacer","SearchBarSlot","View","Label","Icon","Badge"],"sources":["../../../../src/layouts/stack-utils/StackToolbar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { useIsomorphicLayoutEffect } from "@vxrn/use-isomorphic-layout-effect";
|
|
5
|
+
import { NAVIGATOR_CONFIG } from "../../headless/children.native.js";
|
|
6
|
+
import { useNavigation } from "../../router/useNavigation.native.js";
|
|
7
|
+
import { STACK_TOOLBAR_CHILD, getStackToolbarImplementation } from "./StackToolbarImplementation.native.js";
|
|
8
|
+
import { appendStackToolbarConfig } from "./StackToolbar.shared.native.js";
|
|
9
|
+
function appendStackToolbarPropsToOptions(options, props, implementation) {
|
|
10
|
+
var optionsWithConfig = appendStackToolbarConfig(options, props);
|
|
11
|
+
return implementation ? implementation.appendPropsToOptions(optionsWithConfig, props) : optionsWithConfig;
|
|
12
|
+
}
|
|
13
|
+
function StackToolbarComponent(props) {
|
|
14
|
+
var _ref;
|
|
15
|
+
var navigation = useNavigation();
|
|
16
|
+
var implementation = getStackToolbarImplementation();
|
|
17
|
+
var options = useMemo(function () {
|
|
18
|
+
return appendStackToolbarPropsToOptions({}, props, implementation);
|
|
19
|
+
}, [implementation, props.placement, props.asChild, props.children, props.disableImePadding, props.tintColor, props.backgroundColor]);
|
|
20
|
+
useIsomorphicLayoutEffect(function () {
|
|
21
|
+
navigation.setOptions(options);
|
|
22
|
+
}, [navigation, options]);
|
|
23
|
+
return (_ref = implementation === null || implementation === void 0 ? void 0 : implementation.render(props)) !== null && _ref !== void 0 ? _ref : null;
|
|
24
|
+
}
|
|
25
|
+
function StackToolbarButton(_props) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
function StackToolbarMenu(_props) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
function StackToolbarMenuAction(_props) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function StackToolbarSpacer(_props) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function StackToolbarSearchBarSlot(_props) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
function StackToolbarView(_props) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
function StackToolbarLabel(_props) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function StackToolbarIcon(_props) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function StackToolbarBadge(_props) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
Object.assign(StackToolbarButton, {
|
|
53
|
+
[STACK_TOOLBAR_CHILD]: "button"
|
|
54
|
+
});
|
|
55
|
+
Object.assign(StackToolbarMenu, {
|
|
56
|
+
[STACK_TOOLBAR_CHILD]: "menu"
|
|
57
|
+
});
|
|
58
|
+
Object.assign(StackToolbarMenuAction, {
|
|
59
|
+
[STACK_TOOLBAR_CHILD]: "menuAction"
|
|
60
|
+
});
|
|
61
|
+
Object.assign(StackToolbarSpacer, {
|
|
62
|
+
[STACK_TOOLBAR_CHILD]: "spacer"
|
|
63
|
+
});
|
|
64
|
+
Object.assign(StackToolbarSearchBarSlot, {
|
|
65
|
+
[STACK_TOOLBAR_CHILD]: "searchBarSlot"
|
|
66
|
+
});
|
|
67
|
+
Object.assign(StackToolbarView, {
|
|
68
|
+
[STACK_TOOLBAR_CHILD]: "view"
|
|
69
|
+
});
|
|
70
|
+
Object.assign(StackToolbarLabel, {
|
|
71
|
+
[STACK_TOOLBAR_CHILD]: "label"
|
|
72
|
+
});
|
|
73
|
+
Object.assign(StackToolbarIcon, {
|
|
74
|
+
[STACK_TOOLBAR_CHILD]: "icon"
|
|
75
|
+
});
|
|
76
|
+
Object.assign(StackToolbarBadge, {
|
|
77
|
+
[STACK_TOOLBAR_CHILD]: "badge"
|
|
78
|
+
});
|
|
79
|
+
var StackToolbar = Object.assign(StackToolbarComponent, {
|
|
80
|
+
[NAVIGATOR_CONFIG]: true,
|
|
81
|
+
Button: StackToolbarButton,
|
|
82
|
+
Menu: StackToolbarMenu,
|
|
83
|
+
MenuAction: StackToolbarMenuAction,
|
|
84
|
+
Spacer: StackToolbarSpacer,
|
|
85
|
+
SearchBarSlot: StackToolbarSearchBarSlot,
|
|
86
|
+
View: StackToolbarView,
|
|
87
|
+
Label: StackToolbarLabel,
|
|
88
|
+
Icon: StackToolbarIcon,
|
|
89
|
+
Badge: StackToolbarBadge
|
|
90
|
+
});
|
|
91
|
+
export { StackToolbar, StackToolbarBadge, StackToolbarButton, StackToolbarIcon, StackToolbarLabel, StackToolbarMenu, StackToolbarMenuAction, StackToolbarSearchBarSlot, StackToolbarSpacer, StackToolbarView, appendStackToolbarPropsToOptions };
|
|
92
|
+
//# sourceMappingURL=StackToolbar.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","useIsomorphicLayoutEffect","NAVIGATOR_CONFIG","useNavigation","STACK_TOOLBAR_CHILD","getStackToolbarImplementation","appendStackToolbarConfig","appendStackToolbarPropsToOptions","options","props","implementation","optionsWithConfig","appendPropsToOptions","StackToolbarComponent","_ref","navigation","placement","asChild","children","disableImePadding","tintColor","backgroundColor","setOptions","render","StackToolbarButton","_props","StackToolbarMenu","StackToolbarMenuAction","StackToolbarSpacer","StackToolbarSearchBarSlot","StackToolbarView","StackToolbarLabel","StackToolbarIcon","StackToolbarBadge","Object","assign"],"sources":["../../../../src/layouts/stack-utils/StackToolbar.tsx"],"sourcesContent":[null],"mappings":";;AAGA,SAASA,OAAA,QAAe;AAExB,SAASC,yBAAA,QAAiC;AAC1C,SAASC,gBAAA,QAAwB;AACjC,SAASC,aAAA,QAAqB;AAC9B,SAAAC,mBAAA,EAAAC,6BAAA;AAAA,SACEC,wBAAA;AAAA,SACAC,iCAAAC,OAAA,EAAAC,KAAA,EAAAC,cAAA;EAAA,IAAAC,iBAEK,GAAAL,wBAAA,CAAAE,OAAA,EAAAC,KAAA;EACP,OAASC,cAAA,GAAAA,cAAA,CAAgCE,oBAAA,CAAAD,iBAAA,EAAAF,KAAA,IAAAE,iBAAA;AAclC;AAKL,SAAME,qBAAoBA,CAAAJ,KAAA;EAC1B,IAAAK,IAAO;EAGT,IAAAC,UAAA,GAAAZ,aAAA;EAEA,IAAAO,cAAS,GAAAL,6BAAgD;EACvD,IAAAG,OAAM,GAAAR,OAAa,aAAc;IACjC,OAAMO,gCAAiB,KAAAE,KAAA,EAA8BC,cAAA;EACrD,IACEA,cAAM,EACND,KAAA,CAAAO,SAAA,EAAAP,KACE,CAAAQ,OAAA,EAAAR,KACA,CAAAS,QAAM,EAAAT,KACN,CAAAU,iBAAM,EAAAV,KACN,CAAAW,SAAM,EAAAX,KACN,CAAAY,eAAM;EACApB,yBACA;IACRc,UAAA,CAAAO,UAAA,CAAAd,OAAA;EACF,IAEAO,UAAA,EACEP,OAAA,CACF;EAEA,OAAO,CAAAM,IAAA,GAAAJ,cAAgB,KAAO,IAAK,IAAKA,cAAA,uBAAAA,cAAA,CAAAa,MAAA,CAAAd,KAAA,eAAAK,IAAA,cAAAA,IAAA;AAC1C;AAEO,SAASU,mBAAmBC,MAAA,EAAiC;EAClE,OAAO;AACT;AAEO,SAASC,iBAAiBD,MAAA,EAA+B;EAC9D,OAAO;AACT;AAEO,SAASE,uBAAuBF,MAAA,EAAqC;EAC1E,OAAO;AACT;AAEO,SAASG,mBAAmBH,MAAA,EAAiC;EAClE,OAAO;AACT;AAEO,SAASI,0BAA0BJ,MAAA,EAAwC;EAChF,OAAO;AACT;AAEO,SAASK,iBAAiBL,MAAA,EAA+B;EAC9D,OAAO;AACT;AAEO,SAASM,kBAAkBN,MAAA,EAAgC;EAChE,OAAO;AACT;AAEO,SAASO,iBAAiBP,MAAA,EAA+B;EAC9D,OAAO;AACT;AAEO,SAASQ,kBAAkBR,MAAA,EAAgC;EAChE,OAAO;AACT;AAEAS,MAAA,CAAOC,MAAA,CAAOX,kBAAA,EAAoB;EAClC,CAAApB,mBAAc;AACd;AACA8B,MAAA,CAAOC,MAAA,CAAOT,gBAAA;EACd,CAAAtB,mBAAc;AACd;AACA8B,MAAA,CAAOC,MAAA,CAAOR,sBAAsB;EACpC,CAAAvB,mBAAc;AACd;AAEO8B,MAAM,CAAAC,MAAA,CAAAP,kBAAsB;EACjC,CAACxB,mBAAmB;AAAA,EACpB;AAAQ8B,MACR,CAAAC,MAAM,CAAAN,yBAAA;EACN,CAAAzB,mBAAY;AAAA,EACZ;AAAQ8B,MACR,CAAAC,MAAA,CAAAL,gBAAe;EACf,CAAA1B,mBAAM;AAAA,EACN;AAAO8B,MACP,CAAAC,MAAM,CAAAJ,iBAAA;EACN,CAAA3B,mBAAO;AACT,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const optionKeys = {
|
|
2
|
+
left: "__oneStackToolbarLeft",
|
|
3
|
+
right: "__oneStackToolbarRight",
|
|
4
|
+
bottom: "__oneStackToolbarBottom"
|
|
5
|
+
};
|
|
6
|
+
function appendStackToolbarConfig(options, props) {
|
|
7
|
+
return {
|
|
8
|
+
...options,
|
|
9
|
+
[optionKeys[props.placement ?? "bottom"]]: props
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function exposeStackToolbarConfig(options) {
|
|
13
|
+
const toolbar = {
|
|
14
|
+
left: options[optionKeys.left],
|
|
15
|
+
right: options[optionKeys.right],
|
|
16
|
+
bottom: options[optionKeys.bottom]
|
|
17
|
+
};
|
|
18
|
+
if (!toolbar.left && !toolbar.right && !toolbar.bottom) return options;
|
|
19
|
+
const {
|
|
20
|
+
[optionKeys.left]: _left,
|
|
21
|
+
[optionKeys.right]: _right,
|
|
22
|
+
[optionKeys.bottom]: _bottom,
|
|
23
|
+
...publicOptions
|
|
24
|
+
} = options;
|
|
25
|
+
return {
|
|
26
|
+
...publicOptions,
|
|
27
|
+
toolbar
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export { appendStackToolbarConfig, exposeStackToolbarConfig };
|
|
31
|
+
//# sourceMappingURL=StackToolbar.shared.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["optionKeys","left","right","bottom","appendStackToolbarConfig","options","props","placement","exposeStackToolbarConfig","toolbar","_left","_right","_bottom","publicOptions"],"sources":["../../../../src/layouts/stack-utils/StackToolbar.shared.ts"],"sourcesContent":[null],"mappings":"AAQA,MAAMA,UAAA,GAAa;EACjBC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,MAAA,EAAQ;AACV;AAEO,SAASC,yBACdC,OAAA,EACAC,KAAA,EAC8B;EAC9B,OAAO;IACL,GAAGD,OAAA;IACH,CAACL,UAAA,CAAWM,KAAA,CAAMC,SAAA,IAAa,QAAQ,CAAC,GAAGD;EAC7C;AACF;AAEO,SAASE,yBACdH,OAAA,EACqB;EACrB,MAAMI,OAAA,GAA8B;IAClCR,IAAA,EAAMI,OAAA,CAAQL,UAAA,CAAWC,IAAI;IAC7BC,KAAA,EAAOG,OAAA,CAAQL,UAAA,CAAWE,KAAK;IAC/BC,MAAA,EAAQE,OAAA,CAAQL,UAAA,CAAWG,MAAM;EACnC;EAEA,IAAI,CAACM,OAAA,CAAQR,IAAA,IAAQ,CAACQ,OAAA,CAAQP,KAAA,IAAS,CAACO,OAAA,CAAQN,MAAA,EAAQ,OAAOE,OAAA;EAE/D,MAAM;IACJ,CAACL,UAAA,CAAWC,IAAI,GAAGS,KAAA;IACnB,CAACV,UAAA,CAAWE,KAAK,GAAGS,MAAA;IACpB,CAACX,UAAA,CAAWG,MAAM,GAAGS,OAAA;IACrB,GAAGC;EACL,IAAIR,OAAA;EAEJ,OAAO;IAAE,GAAGQ,aAAA;IAAeJ;EAAQ;AACrC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var optionKeys = {
|
|
2
|
+
left: "__oneStackToolbarLeft",
|
|
3
|
+
right: "__oneStackToolbarRight",
|
|
4
|
+
bottom: "__oneStackToolbarBottom"
|
|
5
|
+
};
|
|
6
|
+
function appendStackToolbarConfig(options, props) {
|
|
7
|
+
var _props_placement;
|
|
8
|
+
return {
|
|
9
|
+
...options,
|
|
10
|
+
[optionKeys[(_props_placement = props.placement) !== null && _props_placement !== void 0 ? _props_placement : "bottom"]]: props
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function exposeStackToolbarConfig(options) {
|
|
14
|
+
var toolbar = {
|
|
15
|
+
left: options[optionKeys.left],
|
|
16
|
+
right: options[optionKeys.right],
|
|
17
|
+
bottom: options[optionKeys.bottom]
|
|
18
|
+
};
|
|
19
|
+
if (!toolbar.left && !toolbar.right && !toolbar.bottom) return options;
|
|
20
|
+
var {
|
|
21
|
+
[optionKeys.left]: _left,
|
|
22
|
+
[optionKeys.right]: _right,
|
|
23
|
+
[optionKeys.bottom]: _bottom,
|
|
24
|
+
...publicOptions
|
|
25
|
+
} = options;
|
|
26
|
+
return {
|
|
27
|
+
...publicOptions,
|
|
28
|
+
toolbar
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export { appendStackToolbarConfig, exposeStackToolbarConfig };
|
|
32
|
+
//# sourceMappingURL=StackToolbar.shared.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["optionKeys","left","right","bottom","appendStackToolbarConfig","options","props","_props_placement","placement","exposeStackToolbarConfig","toolbar","_left","_right","_bottom","publicOptions"],"sources":["../../../../src/layouts/stack-utils/StackToolbar.shared.ts"],"sourcesContent":[null],"mappings":"AAQA,IAAAA,UAAM;EACJC,IAAA,EAAM;EACNC,KAAA,EAAO;EACPC,MAAA,EAAQ;AACV;AAEO,SAASC,yBACdC,OAAA,EACAC,KAAA,EAC8B;EAC9B,IAAAC,gBAAO;EAAA,OACF;IACH,GAACF,OAAA;IACH,CAAAL,UAAA,EAAAO,gBAAA,GAAAD,KAAA,CAAAE,SAAA,cAAAD,gBAAA,cAAAA,gBAAA,eAAAD;EACF;AAEO;AAGL,SAAMG,wBAA8BA,CAAAJ,OAAA;EAAA,IAClCK,OAAM;IACNT,IAAA,EAAAI,OAAO,CAAAL,UAAQ,CAAAC,IAAW;IAC1BC,KAAA,EAAAG,OAAQ,CAAAL,UAAQ,CAAAE,KAAW;IAC7BC,MAAA,EAAAE,OAAA,CAAAL,UAAA,CAAAG,MAAA;EAEA;EAEA,KAAAO,OAAM,CAAAT,IAAA,KAAAS,OAAA,CAAAR,KAAA,KAAAQ,OAAA,CAAAP,MAAA,SAAAE,OAAA;EAAA,IACH;IAAA,CAAAL,UAAW,CAAIC,IAAG,GAAAU,KAAA;IAAA,CAAAX,UAAA,CAAAE,KAAA,GAAAU,MAAA;IAAA,CAAAZ,UAAA,CAAAG,MAAA,GAAAU,OAAA;IAAA,GAAAC;EAAA,IAAAT,OAAA;EAAA,OAClB;IACD,GAACS,aAAW;IACZJ;EACF;AAEA;AACF,S","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
const STACK_TOOLBAR_CHILD = /* @__PURE__ */Symbol.for("one.stack-toolbar.child");
|
|
4
|
+
let stackToolbarImplementation = null;
|
|
5
|
+
function registerStackToolbarImplementation(implementation) {
|
|
6
|
+
stackToolbarImplementation = implementation;
|
|
7
|
+
}
|
|
8
|
+
function getStackToolbarImplementation() {
|
|
9
|
+
return stackToolbarImplementation;
|
|
10
|
+
}
|
|
11
|
+
export { STACK_TOOLBAR_CHILD, getStackToolbarImplementation, registerStackToolbarImplementation };
|
|
12
|
+
//# sourceMappingURL=StackToolbarImplementation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["STACK_TOOLBAR_CHILD","Symbol","for","stackToolbarImplementation","registerStackToolbarImplementation","implementation","getStackToolbarImplementation"],"sources":["../../../../src/layouts/stack-utils/StackToolbarImplementation.tsx"],"sourcesContent":[null],"mappings":";;AAOO,MAAMA,mBAAA,GAAsB,eAAAC,MAAA,CAAOC,GAAA,CAAI,yBAAyB;AAqBvE,IAAIC,0BAAA,GAAgE;AAE7D,SAASC,mCACdC,cAAA,EACA;EACAF,0BAAA,GAA6BE,cAAA;AAC/B;AAEO,SAASC,8BAAA,EAAgC;EAC9C,OAAOH,0BAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
var STACK_TOOLBAR_CHILD = /* @__PURE__ */Symbol.for("one.stack-toolbar.child");
|
|
4
|
+
var stackToolbarImplementation = null;
|
|
5
|
+
function registerStackToolbarImplementation(implementation) {
|
|
6
|
+
stackToolbarImplementation = implementation;
|
|
7
|
+
}
|
|
8
|
+
function getStackToolbarImplementation() {
|
|
9
|
+
return stackToolbarImplementation;
|
|
10
|
+
}
|
|
11
|
+
export { STACK_TOOLBAR_CHILD, getStackToolbarImplementation, registerStackToolbarImplementation };
|
|
12
|
+
//# sourceMappingURL=StackToolbarImplementation.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["STACK_TOOLBAR_CHILD","Symbol","for","stackToolbarImplementation","registerStackToolbarImplementation","implementation","getStackToolbarImplementation"],"sources":["../../../../src/layouts/stack-utils/StackToolbarImplementation.tsx"],"sourcesContent":[null],"mappings":";;AAOO,IAAAA,mBAAM,kBAAsBC,MAAA,CAAAC,GAAO,0BAAI;AAqB9C,IAAIC,0BAAA,GAAgE;AAE7D,SAASC,mCACdC,cAAA,EACA;EACAF,0BAAA,GAA6BE,cAAA;AAC/B;AAEO,SAASC,8BAAA,EAAgC;EAC9C,OAAOH,0BAAA;AACT","ignoreList":[]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { StackToolbar } from "../StackToolbar.mjs";
|
|
3
|
+
import { STACK_TOOLBAR_CHILD } from "../StackToolbarImplementation.mjs";
|
|
4
|
+
import { exposeStackToolbarConfig } from "../StackToolbar.shared.mjs";
|
|
5
|
+
import { appendScreenStackPropsToOptions } from "../StackScreen.mjs";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
describe("Stack.Toolbar headless config", () => {
|
|
8
|
+
it("marks declaration children for installed implementations", () => {
|
|
9
|
+
expect(StackToolbar.Button[STACK_TOOLBAR_CHILD]).toBe("button");
|
|
10
|
+
expect(StackToolbar.MenuAction[STACK_TOOLBAR_CHILD]).toBe("menuAction");
|
|
11
|
+
});
|
|
12
|
+
it("preserves every placement for the headless stack implementation", () => {
|
|
13
|
+
const options = appendScreenStackPropsToOptions({
|
|
14
|
+
title: "Inbox"
|
|
15
|
+
}, {
|
|
16
|
+
children: [/* @__PURE__ */jsx(StackToolbar, {
|
|
17
|
+
placement: "left",
|
|
18
|
+
children: /* @__PURE__ */jsx(StackToolbar.Button, {
|
|
19
|
+
icon: "sidebar.left"
|
|
20
|
+
})
|
|
21
|
+
}, "left"), /* @__PURE__ */jsx(StackToolbar, {
|
|
22
|
+
placement: "right",
|
|
23
|
+
children: /* @__PURE__ */jsx(StackToolbar.Button, {
|
|
24
|
+
icon: "square.and.arrow.up"
|
|
25
|
+
})
|
|
26
|
+
}, "right")]
|
|
27
|
+
});
|
|
28
|
+
expect(exposeStackToolbarConfig(options)).toMatchObject({
|
|
29
|
+
title: "Inbox",
|
|
30
|
+
toolbar: {
|
|
31
|
+
left: {
|
|
32
|
+
placement: "left"
|
|
33
|
+
},
|
|
34
|
+
right: {
|
|
35
|
+
placement: "right"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
it("hands toolbar declarations to an installed implementation", () => {
|
|
41
|
+
const appendPropsToOptions = vi.fn(options2 => ({
|
|
42
|
+
...options2,
|
|
43
|
+
headerShown: true
|
|
44
|
+
}));
|
|
45
|
+
const implementation = {
|
|
46
|
+
appendPropsToOptions,
|
|
47
|
+
render: () => null
|
|
48
|
+
};
|
|
49
|
+
const toolbar = /* @__PURE__ */jsx(StackToolbar, {
|
|
50
|
+
placement: "right",
|
|
51
|
+
children: /* @__PURE__ */jsx(StackToolbar.Button, {
|
|
52
|
+
icon: "square.and.arrow.up",
|
|
53
|
+
children: "Share"
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
const options = appendScreenStackPropsToOptions({
|
|
57
|
+
title: "Inbox"
|
|
58
|
+
}, {
|
|
59
|
+
children: toolbar
|
|
60
|
+
}, implementation);
|
|
61
|
+
expect(options.headerShown).toBe(true);
|
|
62
|
+
expect(appendPropsToOptions).toHaveBeenCalledOnce();
|
|
63
|
+
expect(appendPropsToOptions.mock.calls[0]?.[1]).toBe(toolbar.props);
|
|
64
|
+
expect(exposeStackToolbarConfig(options).toolbar.right).toBe(toolbar.props);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=StackToolbar.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","it","vi","StackToolbar","STACK_TOOLBAR_CHILD","exposeStackToolbarConfig","appendScreenStackPropsToOptions","jsx","Button","toBe","MenuAction","options","title","children","placement","icon","toMatchObject","toolbar","left","right","appendPropsToOptions","fn","headerShown","implementation","render","toHaveBeenCalledOnce","mock","calls","props"],"sources":["../../../../../src/layouts/stack-utils/__tests__/StackToolbar.test.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,QAAA,EAAUC,MAAA,EAAQC,EAAA,EAAIC,EAAA,QAAU;AAGzC,SAASC,YAAA,QAAoB;AAC7B,SAASC,mBAAA,QAA2B;AACpC,SAASC,wBAAA,QAAgC;AACzC,SAASC,+BAAA,QAAuC;AAkBpC,SAAAC,GAAA;AAhBZR,QAAA,CAAS,iCAAiC,MAAM;EAC9CE,EAAA,CAAG,4DAA4D,MAAM;IACnED,MAAA,CACGG,YAAA,CAAaK,MAAA,CAA6CJ,mBAAmB,CAChF,EAAEK,IAAA,CAAK,QAAQ;IACfT,MAAA,CACGG,YAAA,CAAaO,UAAA,CAAiDN,mBAAmB,CACpF,EAAEK,IAAA,CAAK,YAAY;EACrB,CAAC;EAEDR,EAAA,CAAG,mEAAmE,MAAM;IAC1E,MAAMU,OAAA,GAAUL,+BAAA,CACd;MAAEM,KAAA,EAAO;IAAQ,GACjB;MACEC,QAAA,EAAU,CACR,eAAAN,GAAA,CAACJ,YAAA;QAAwBW,SAAA,EAAU;QACjCD,QAAA,iBAAAN,GAAA,CAACJ,YAAA,CAAaK,MAAA,EAAb;UAAoBO,IAAA,EAAK;QAAA,CAAe;MAAA,GADzB,MAElB,GACA,eAAAR,GAAA,CAACJ,YAAA;QAAyBW,SAAA,EAAU;QAClCD,QAAA,iBAAAN,GAAA,CAACJ,YAAA,CAAaK,MAAA,EAAb;UAAoBO,IAAA,EAAK;QAAA,CAAsB;MAAA,GADhC,OAElB;IAEJ,CACF;IAEAf,MAAA,CAAOK,wBAAA,CAAyBM,OAAO,CAAC,EAAEK,aAAA,CAAc;MACtDJ,KAAA,EAAO;MACPK,OAAA,EAAS;QACPC,IAAA,EAAM;UAAEJ,SAAA,EAAW;QAAO;QAC1BK,KAAA,EAAO;UAAEL,SAAA,EAAW;QAAQ;MAC9B;IACF,CAAC;EACH,CAAC;EAEDb,EAAA,CAAG,6DAA6D,MAAM;IACpE,MAAMmB,oBAAA,GAAuBlB,EAAA,CAAGmB,EAAA,CAAIV,QAAA,KAAa;MAC/C,GAAGA,QAAA;MACHW,WAAA,EAAa;IACf,EAAE;IACF,MAAMC,cAAA,GAA6C;MACjDH,oBAAA;MACAI,MAAA,EAAQA,CAAA,KAAM;IAChB;IACA,MAAMP,OAAA,GACJ,eAAAV,GAAA,CAACJ,YAAA;MAAaW,SAAA,EAAU;MACtBD,QAAA,iBAAAN,GAAA,CAACJ,YAAA,CAAaK,MAAA,EAAb;QAAoBO,IAAA,EAAK;QAAsBF,QAAA;MAAA,CAAK;IAAA,CACvD;IAGF,MAAMF,OAAA,GAAUL,+BAAA,CACd;MAAEM,KAAA,EAAO;IAAQ,GACjB;MAAEC,QAAA,EAAUI;IAAQ,GACpBM,cACF;IAEAvB,MAAA,CAAOW,OAAA,CAAQW,WAAW,EAAEb,IAAA,CAAK,IAAI;IACrCT,MAAA,CAAOoB,oBAAoB,EAAEK,oBAAA,CAAqB;IAClDzB,MAAA,CAAOoB,oBAAA,CAAqBM,IAAA,CAAKC,KAAA,CAAM,CAAC,IAAI,CAAC,CAAC,EAAElB,IAAA,CAAKQ,OAAA,CAAQW,KAAK;IAClE5B,MAAA,CAAOK,wBAAA,CAAyBM,OAAO,EAAEM,OAAA,CAAQE,KAAK,EAAEV,IAAA,CAAKQ,OAAA,CAAQW,KAAK;EAC5E,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { StackToolbar } from "../StackToolbar.native.js";
|
|
5
|
+
import { STACK_TOOLBAR_CHILD } from "../StackToolbarImplementation.native.js";
|
|
6
|
+
import { exposeStackToolbarConfig } from "../StackToolbar.shared.native.js";
|
|
7
|
+
import { appendScreenStackPropsToOptions } from "../StackScreen.native.js";
|
|
8
|
+
describe("Stack.Toolbar headless config", function () {
|
|
9
|
+
it("marks declaration children for installed implementations", function () {
|
|
10
|
+
expect(StackToolbar.Button[STACK_TOOLBAR_CHILD]).toBe("button");
|
|
11
|
+
expect(StackToolbar.MenuAction[STACK_TOOLBAR_CHILD]).toBe("menuAction");
|
|
12
|
+
});
|
|
13
|
+
it("preserves every placement for the headless stack implementation", function () {
|
|
14
|
+
var options = appendScreenStackPropsToOptions({
|
|
15
|
+
title: "Inbox"
|
|
16
|
+
}, {
|
|
17
|
+
children: [/* @__PURE__ */_jsx(StackToolbar, {
|
|
18
|
+
placement: "left",
|
|
19
|
+
children: /* @__PURE__ */_jsx(StackToolbar.Button, {
|
|
20
|
+
icon: "sidebar.left"
|
|
21
|
+
})
|
|
22
|
+
}, "left"), /* @__PURE__ */_jsx(StackToolbar, {
|
|
23
|
+
placement: "right",
|
|
24
|
+
children: /* @__PURE__ */_jsx(StackToolbar.Button, {
|
|
25
|
+
icon: "square.and.arrow.up"
|
|
26
|
+
})
|
|
27
|
+
}, "right")]
|
|
28
|
+
});
|
|
29
|
+
expect(exposeStackToolbarConfig(options)).toMatchObject({
|
|
30
|
+
title: "Inbox",
|
|
31
|
+
toolbar: {
|
|
32
|
+
left: {
|
|
33
|
+
placement: "left"
|
|
34
|
+
},
|
|
35
|
+
right: {
|
|
36
|
+
placement: "right"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it("hands toolbar declarations to an installed implementation", function () {
|
|
42
|
+
var _appendPropsToOptions_mock_calls_;
|
|
43
|
+
var appendPropsToOptions = vi.fn(function (options2) {
|
|
44
|
+
return {
|
|
45
|
+
...options2,
|
|
46
|
+
headerShown: true
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
var implementation = {
|
|
50
|
+
appendPropsToOptions,
|
|
51
|
+
render: function () {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var toolbar = /* @__PURE__ */_jsx(StackToolbar, {
|
|
56
|
+
placement: "right",
|
|
57
|
+
children: /* @__PURE__ */_jsx(StackToolbar.Button, {
|
|
58
|
+
icon: "square.and.arrow.up",
|
|
59
|
+
children: "Share"
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
var options = appendScreenStackPropsToOptions({
|
|
63
|
+
title: "Inbox"
|
|
64
|
+
}, {
|
|
65
|
+
children: toolbar
|
|
66
|
+
}, implementation);
|
|
67
|
+
expect(options.headerShown).toBe(true);
|
|
68
|
+
expect(appendPropsToOptions).toHaveBeenCalledOnce();
|
|
69
|
+
expect((_appendPropsToOptions_mock_calls_ = appendPropsToOptions.mock.calls[0]) === null || _appendPropsToOptions_mock_calls_ === void 0 ? void 0 : _appendPropsToOptions_mock_calls_[1]).toBe(toolbar.props);
|
|
70
|
+
expect(exposeStackToolbarConfig(options).toolbar.right).toBe(toolbar.props);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=StackToolbar.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","React","describe","expect","it","vi","StackToolbar","STACK_TOOLBAR_CHILD","exposeStackToolbarConfig","appendScreenStackPropsToOptions","Button","toBe","MenuAction","options","title","children","placement","icon","toMatchObject","toolbar","left","right","_appendPropsToOptions_mock_calls_","appendPropsToOptions","fn","options2","headerShown","implementation","render"],"sources":["../../../../../src/layouts/stack-utils/__tests__/StackToolbar.test.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAAC,IAAU,QAAQ,mBAAc;AAGzC,OAAAC,KAAS;AACT,SAASC,QAAA,EAAAC,MAAA,EAAAC,EAAA,EAAAC,EAAA,QAA2B;AACpC,SAASC,YAAA,mCAAgC;AACzC,SAASC,mBAAA,iDAAuC;AAkBpC,SAAAC,wBAAA;AAhBZ,SAASC,+BAAA,QAAuC;AAC9CP,QAAG;EACDE,EAAA;IAAAD,MACG,CAAAG,YAAa,CAAAI,MAA6C,CAAAH,mBAAmB,GAAAI,IAAA;IAChFR,MAAE,CAAKG,YAAQ,CAAAM,UAAA,CAAAL,mBAAA,GAAAI,IAAA;EACf;EAAAP,EAAA,kEACoF;IACpF,IAAES,OAAK,GAAAJ,+BAAY;MACpBK,KAAA;IAED,CAAG;MACDC,QAAM,GACF,eAAef,IAAA,CAAAM,YAAA;QACjBU,SAAA;QACED,QAAU,iBAAAf,IAAA,CAAAM,YAAA,CAAAI,MAAA;UACRO,IAAA;QAGA;MAGF,YACF,eAAAjB,IAAA,CAAAM,YAAA;QACFU,SAAA;QAEAD,QAAO,iBAAyBf,IAAA,CAAAM,YAAU,CAAAI,MAAc;UACtDO,IAAO;QACP;MACE,UAAQ;IACoB,EAC9B;IACFd,MAAC,CAAAK,wBAAA,CAAAK,OAAA,GAAAK,aAAA;MACFJ,KAAA;MAEEK,OAAA;QACDC,IAAM;UACDJ,SAAA;QACH;QACAK,KAAA;UACIL,SAAA;QACJ;MACA;IACF;EACA;EAMAZ,EAAA,4DAAgB;IAAA,IACZkB,iCAAe;IAAA,IACfC,oBAAkB,GAAAlB,EAAA,CAAAmB,EAAA,WAAAC,QAAA;MACpB;QACF,GAAAA,QAAA;QAEAC,WAAe;MACf;IACA;IACA,IAAAC,cAAO;MACRJ,oBAAA;MACFK,MAAA,WAAAA,CAAA","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import { StackHeaderLeft } from "./StackHeaderLeft.mjs";
|
|
|
4
4
|
import { StackHeaderRight } from "./StackHeaderRight.mjs";
|
|
5
5
|
import { StackHeaderSearchBar } from "./StackHeaderSearchBar.mjs";
|
|
6
6
|
import { StackHeaderTitle } from "./StackHeaderTitle.mjs";
|
|
7
|
+
import { StackToolbar } from "./StackToolbar.mjs";
|
|
7
8
|
import { NAVIGATOR_CONFIG } from "../../headless/children.mjs";
|
|
8
9
|
import { StackScreen, appendScreenStackPropsToOptions, validateStackPresentation } from "./StackScreen.mjs";
|
|
9
10
|
const StackHeader = Object.assign(StackHeaderComponent, {
|
|
@@ -14,5 +15,5 @@ const StackHeader = Object.assign(StackHeaderComponent, {
|
|
|
14
15
|
Title: StackHeaderTitle,
|
|
15
16
|
SearchBar: StackHeaderSearchBar
|
|
16
17
|
});
|
|
17
|
-
export { StackHeader, StackHeaderBackButton, StackHeaderComponent, StackHeaderLeft, StackHeaderRight, StackHeaderSearchBar, StackHeaderTitle, StackScreen, appendScreenStackPropsToOptions, validateStackPresentation };
|
|
18
|
+
export { StackHeader, StackHeaderBackButton, StackHeaderComponent, StackHeaderLeft, StackHeaderRight, StackHeaderSearchBar, StackHeaderTitle, StackScreen, StackToolbar, appendScreenStackPropsToOptions, validateStackPresentation };
|
|
18
19
|
//# sourceMappingURL=index.mjs.map
|