@niibase/bottom-sheet-manager 1.1.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.
Files changed (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +147 -0
  3. package/lib/commonjs/events.js +35 -0
  4. package/lib/commonjs/events.js.map +1 -0
  5. package/lib/commonjs/index.js +85 -0
  6. package/lib/commonjs/index.js.map +1 -0
  7. package/lib/commonjs/manager.js +171 -0
  8. package/lib/commonjs/manager.js.map +1 -0
  9. package/lib/commonjs/provider.js +229 -0
  10. package/lib/commonjs/provider.js.map +1 -0
  11. package/lib/commonjs/router/index.js +100 -0
  12. package/lib/commonjs/router/index.js.map +1 -0
  13. package/lib/commonjs/router/router.js +72 -0
  14. package/lib/commonjs/router/router.js.map +1 -0
  15. package/lib/commonjs/router/types.js +6 -0
  16. package/lib/commonjs/router/types.js.map +1 -0
  17. package/lib/commonjs/router/view.js +180 -0
  18. package/lib/commonjs/router/view.js.map +1 -0
  19. package/lib/commonjs/sheet.js +240 -0
  20. package/lib/commonjs/sheet.js.map +1 -0
  21. package/lib/commonjs/types.js +6 -0
  22. package/lib/commonjs/types.js.map +1 -0
  23. package/lib/module/events.js +29 -0
  24. package/lib/module/events.js.map +1 -0
  25. package/lib/module/index.js +6 -0
  26. package/lib/module/index.js.map +1 -0
  27. package/lib/module/manager.js +165 -0
  28. package/lib/module/manager.js.map +1 -0
  29. package/lib/module/provider.js +210 -0
  30. package/lib/module/provider.js.map +1 -0
  31. package/lib/module/router/index.js +79 -0
  32. package/lib/module/router/index.js.map +1 -0
  33. package/lib/module/router/router.js +65 -0
  34. package/lib/module/router/router.js.map +1 -0
  35. package/lib/module/router/types.js +2 -0
  36. package/lib/module/router/types.js.map +1 -0
  37. package/lib/module/router/view.js +173 -0
  38. package/lib/module/router/view.js.map +1 -0
  39. package/lib/module/sheet.js +232 -0
  40. package/lib/module/sheet.js.map +1 -0
  41. package/lib/module/types.js +2 -0
  42. package/lib/module/types.js.map +1 -0
  43. package/lib/typescript/events.d.ts +16 -0
  44. package/lib/typescript/events.d.ts.map +1 -0
  45. package/lib/typescript/index.d.ts +6 -0
  46. package/lib/typescript/index.d.ts.map +1 -0
  47. package/lib/typescript/manager.d.ts +78 -0
  48. package/lib/typescript/manager.d.ts.map +1 -0
  49. package/lib/typescript/provider.d.ts +69 -0
  50. package/lib/typescript/provider.d.ts.map +1 -0
  51. package/lib/typescript/router/index.d.ts +59 -0
  52. package/lib/typescript/router/index.d.ts.map +1 -0
  53. package/lib/typescript/router/router.d.ts +47 -0
  54. package/lib/typescript/router/router.d.ts.map +1 -0
  55. package/lib/typescript/router/types.d.ts +46 -0
  56. package/lib/typescript/router/types.d.ts.map +1 -0
  57. package/lib/typescript/router/view.d.ts +11 -0
  58. package/lib/typescript/router/view.d.ts.map +1 -0
  59. package/lib/typescript/sheet.d.ts +19 -0
  60. package/lib/typescript/sheet.d.ts.map +1 -0
  61. package/lib/typescript/types.d.ts +125 -0
  62. package/lib/typescript/types.d.ts.map +1 -0
  63. package/package.json +102 -0
  64. package/src/events.ts +40 -0
  65. package/src/index.ts +11 -0
  66. package/src/manager.ts +223 -0
  67. package/src/provider.tsx +293 -0
  68. package/src/router/index.tsx +130 -0
  69. package/src/router/router.ts +94 -0
  70. package/src/router/types.ts +117 -0
  71. package/src/router/view.tsx +265 -0
  72. package/src/sheet.tsx +350 -0
  73. package/src/types.ts +153 -0
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _bottomSheet = _interopRequireWildcard(require("@gorhom/bottom-sheet"));
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeReanimated = require("react-native-reanimated");
10
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
11
+ var _native = require("@react-navigation/native");
12
+ var _react = _interopRequireDefault(require("react"));
13
+ var _provider = require("./provider");
14
+ var _manager = require("./manager");
15
+ var _events = require("./events");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
18
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
19
+ const useSheetManager = ({
20
+ id,
21
+ onHide,
22
+ onBeforeShow,
23
+ onContextUpdate
24
+ }) => {
25
+ const [visible, setVisible] = _react.default.useState(false);
26
+ const currentContext = (0, _provider.useProviderContext)();
27
+ _react.default.useEffect(() => {
28
+ if (!id) return undefined;
29
+ const subscriptions = [_events.eventManager.subscribe(`show_${id}`, (data, context) => {
30
+ if (currentContext !== context || visible) return;
31
+ onContextUpdate?.();
32
+ onBeforeShow?.(data);
33
+ setVisible(true);
34
+ }), _events.eventManager.subscribe(`hide_${id}`, (data, context, dismiss) => {
35
+ if (currentContext !== context) return;
36
+ onHide?.(data, dismiss);
37
+ })];
38
+ return () => {
39
+ subscriptions.forEach(s => s?.unsubscribe?.());
40
+ };
41
+ }, [id, onHide, onBeforeShow, onContextUpdate, currentContext]);
42
+ return {
43
+ visible,
44
+ setVisible
45
+ };
46
+ };
47
+ const BottomSheetComponent = /*#__PURE__*/_react.default.forwardRef(({
48
+ children,
49
+ snapPoints,
50
+ onClose,
51
+ onBeforeShow,
52
+ stackBehavior = "switch",
53
+ hardwareBackPressToClose = true,
54
+ enableDynamicSizing = false,
55
+ handleIndicatorStyle,
56
+ iosModalSheetTypeOfAnimation: pageAnimation,
57
+ backgroundStyle,
58
+ handleStyle,
59
+ clickThrough,
60
+ fullScreen,
61
+ opacity,
62
+ ...props
63
+ }, ref) => {
64
+ const currentSheetRef = (0, _provider.useSheetRef)();
65
+ const currentCtx = (0, _provider.useProviderContext)();
66
+ const {
67
+ isFullScreen,
68
+ iosModalSheetTypeOfAnimation
69
+ } = (0, _provider.useSheetAnimationContext)();
70
+ const animatedIndex = (0, _reactNativeReanimated.useSharedValue)(0);
71
+ const {
72
+ colors
73
+ } = (0, _native.useTheme)();
74
+ const {
75
+ top
76
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
77
+ const themeBackgroundStyle = _react.default.useMemo(() => ({
78
+ backgroundColor: colors.card
79
+ }), [colors.card]);
80
+ const themeHandleIndicatorStyle = _react.default.useMemo(() => ({
81
+ backgroundColor: colors.border,
82
+ height: 5,
83
+ width: 50
84
+ }), [colors.border]);
85
+ const valueRef = _react.default.useRef(null);
86
+ const bottomSheetRef = _react.default.useRef(null);
87
+ const hardwareBackPressEvent = _react.default.useRef(null);
88
+ const id = (0, _provider.useSheetIDContext)();
89
+ const sheetId = props.id || id;
90
+ useSheetManager({
91
+ id: sheetId,
92
+ onHide: (data, dismiss) => hideSheet(data, true, dismiss),
93
+ onBeforeShow: data => {
94
+ onBeforeShow?.(data);
95
+ valueRef.current = undefined;
96
+ currentSheetRef.current = getInstance();
97
+ },
98
+ onContextUpdate: () => {
99
+ if (sheetId) {
100
+ _manager.PrivateManager.add(sheetId, currentCtx);
101
+ _manager.PrivateManager.registerRef(sheetId, currentCtx, {
102
+ current: getInstance()
103
+ });
104
+ }
105
+ }
106
+ });
107
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => {
108
+ if (!!iosModalSheetTypeOfAnimation || !!pageAnimation) {
109
+ isFullScreen.value = 0;
110
+ }
111
+ return animatedIndex.value;
112
+ }, index => {
113
+ "worklet";
114
+
115
+ const points = ["%100", "100%"];
116
+ const checkFullScreen = fullScreen ? -1 : snapPoints instanceof Array ? snapPoints.findIndex(p => points.includes(p)) : snapPoints?.value?.findIndex(p => points.includes(p)) || -1;
117
+ if (-1 !== checkFullScreen && (!!iosModalSheetTypeOfAnimation || !!pageAnimation)) {
118
+ isFullScreen.value = (0, _reactNativeReanimated.interpolate)(index, [checkFullScreen - 1, checkFullScreen], [0, 1]);
119
+ }
120
+ }, [snapPoints]);
121
+ const hideSheet = _react.default.useCallback((data, isSheetManagerOrRef, dismiss) => {
122
+ const value = data ?? valueRef.current;
123
+ if (!dismiss || stackBehavior !== "push") {
124
+ hardwareBackPressEvent.current?.remove();
125
+ bottomSheetRef.current?.close();
126
+ onClose?.(value);
127
+ }
128
+ if (sheetId) {
129
+ _manager.PrivateManager.remove(sheetId, currentCtx);
130
+ if (dismiss && stackBehavior === "push") return;
131
+ const history = _manager.PrivateManager.history.length >= 1;
132
+ _events.eventManager.publish(`onclose_${sheetId}`, value, currentCtx, history || dismiss);
133
+ if (stackBehavior === "replace") return;
134
+ if (dismiss) {
135
+ _manager.PrivateManager.history.push({
136
+ id: sheetId,
137
+ context: currentCtx
138
+ });
139
+ } else if (history) {
140
+ const {
141
+ id,
142
+ context
143
+ } = _manager.PrivateManager.history.pop();
144
+ _events.eventManager.publish(`show_wrap_${id}`, undefined, context, true);
145
+ }
146
+ }
147
+ if (isSheetManagerOrRef) valueRef.current = data;
148
+ }, [sheetId, currentCtx, onClose]);
149
+ const getInstance = _react.default.useCallback(() => ({
150
+ close(options = {}) {
151
+ valueRef.current = options.value;
152
+ bottomSheetRef.current?.close(options?.animationConfigs);
153
+ },
154
+ expand(animationConfigs) {
155
+ bottomSheetRef.current?.expand(animationConfigs);
156
+ },
157
+ collapse(animationConfigs) {
158
+ bottomSheetRef.current?.collapse(animationConfigs);
159
+ },
160
+ snapToIndex(index, animationConfigs) {
161
+ bottomSheetRef.current?.snapToIndex(index, animationConfigs);
162
+ },
163
+ snapToPosition(position, animationConfigs) {
164
+ bottomSheetRef.current?.snapToPosition(position, animationConfigs);
165
+ }
166
+ }), []);
167
+ _react.default.useEffect(() => {
168
+ if (sheetId) {
169
+ _manager.PrivateManager.registerRef(sheetId, currentCtx, {
170
+ current: getInstance()
171
+ });
172
+ }
173
+ currentSheetRef.current = getInstance();
174
+ }, [currentCtx, getInstance, sheetId, currentSheetRef]);
175
+ _react.default.useEffect(() => {
176
+ if (_reactNative.Platform.OS === "android" && hardwareBackPressToClose) {
177
+ hardwareBackPressEvent.current = _reactNative.BackHandler.addEventListener("hardwareBackPress", () => {
178
+ bottomSheetRef.current?.close();
179
+ return true;
180
+ });
181
+ }
182
+ return () => hardwareBackPressEvent.current?.remove();
183
+ }, [hardwareBackPressToClose]);
184
+ _react.default.useImperativeHandle(ref, getInstance, [getInstance]);
185
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
186
+ pointerEvents: "box-none",
187
+ style: [_reactNative.StyleSheet.absoluteFill, {
188
+ zIndex: sheetId && stackBehavior === "push" ? _manager.PrivateManager.zIndex(sheetId, currentCtx) : 0
189
+ }]
190
+ }, /*#__PURE__*/_react.default.createElement(_bottomSheet.default, _extends({
191
+ enableDynamicSizing: enableDynamicSizing,
192
+ animationConfigs: {
193
+ duration: 400,
194
+ easing: _reactNativeReanimated.Easing.bezier(0.25, 0.1, 0.25, 1)
195
+ },
196
+ backdropComponent: props => /*#__PURE__*/_react.default.createElement(_bottomSheet.BottomSheetBackdrop, _extends({
197
+ enableTouchThrough: !!clickThrough,
198
+ opacity: opacity || 0.45,
199
+ disappearsOnIndex: -1,
200
+ appearsOnIndex: 0
201
+ }, props))
202
+ }, props, {
203
+ ref: bottomSheetRef,
204
+ onClose: hideSheet,
205
+ animatedIndex: animatedIndex,
206
+ topInset: fullScreen ? 0 : top + (iosModalSheetTypeOfAnimation || pageAnimation ? 20 : 5),
207
+ snapPoints: enableDynamicSizing ? undefined : snapPoints ?? ["66%"],
208
+ handleIndicatorStyle: [themeHandleIndicatorStyle, handleIndicatorStyle],
209
+ backgroundStyle: [themeBackgroundStyle, backgroundStyle],
210
+ handleStyle: [themeBackgroundStyle, handleStyle]
211
+ }), children));
212
+ });
213
+ const BottomSheet = /*#__PURE__*/_react.default.memo(BottomSheetComponent);
214
+ BottomSheet.displayName = "BottomSheet";
215
+ BottomSheet.View = _bottomSheet.BottomSheetView;
216
+ BottomSheet.ScrollView = _bottomSheet.BottomSheetScrollView;
217
+ BottomSheet.FlatList = _bottomSheet.BottomSheetFlatList;
218
+ BottomSheet.SectionList = _bottomSheet.BottomSheetSectionList;
219
+ BottomSheet.VirtualizedList = _bottomSheet.BottomSheetVirtualizedList;
220
+ BottomSheet.Handle = _bottomSheet.BottomSheetHandle;
221
+ BottomSheet.Footer = _bottomSheet.BottomSheetFooter;
222
+ BottomSheet.FooterContainer = _bottomSheet.BottomSheetFooterContainer;
223
+ BottomSheet.Backdrop = _bottomSheet.BottomSheetBackdrop;
224
+ BottomSheet.TextInput = _bottomSheet.BottomSheetTextInput;
225
+ try {
226
+ const {
227
+ cssInterop
228
+ } = require("nativewind");
229
+ cssInterop(BottomSheet, {
230
+ handleIndicatorClassName: "handleIndicatorStyle",
231
+ backgroundClassName: "backgroundStyle",
232
+ containerClassName: "containerStyle",
233
+ handleClassName: "handleStyle",
234
+ className: "style"
235
+ });
236
+ } catch (e) {
237
+ // Ignore error
238
+ }
239
+ var _default = exports.default = BottomSheet;
240
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_bottomSheet","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_reactNativeSafeAreaContext","_native","_react","_interopRequireDefault","_provider","_manager","_events","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","useSheetManager","id","onHide","onBeforeShow","onContextUpdate","visible","setVisible","React","useState","currentContext","useProviderContext","useEffect","undefined","subscriptions","eventManager","subscribe","data","context","dismiss","forEach","s","unsubscribe","BottomSheetComponent","forwardRef","children","snapPoints","onClose","stackBehavior","hardwareBackPressToClose","enableDynamicSizing","handleIndicatorStyle","iosModalSheetTypeOfAnimation","pageAnimation","backgroundStyle","handleStyle","clickThrough","fullScreen","opacity","props","ref","currentSheetRef","useSheetRef","currentCtx","isFullScreen","useSheetAnimationContext","animatedIndex","useSharedValue","colors","useTheme","top","useSafeAreaInsets","themeBackgroundStyle","useMemo","backgroundColor","card","themeHandleIndicatorStyle","border","height","width","valueRef","useRef","bottomSheetRef","hardwareBackPressEvent","useSheetIDContext","sheetId","hideSheet","current","getInstance","PrivateManager","add","registerRef","useAnimatedReaction","value","index","points","checkFullScreen","Array","findIndex","p","includes","interpolate","useCallback","isSheetManagerOrRef","remove","close","history","publish","push","pop","options","animationConfigs","expand","collapse","snapToIndex","snapToPosition","position","Platform","OS","BackHandler","addEventListener","useImperativeHandle","createElement","View","pointerEvents","style","StyleSheet","absoluteFill","zIndex","duration","easing","Easing","bezier","backdropComponent","BottomSheetBackdrop","enableTouchThrough","disappearsOnIndex","appearsOnIndex","topInset","BottomSheet","memo","displayName","BottomSheetView","ScrollView","BottomSheetScrollView","FlatList","BottomSheetFlatList","SectionList","BottomSheetSectionList","VirtualizedList","BottomSheetVirtualizedList","Handle","BottomSheetHandle","Footer","BottomSheetFooter","FooterContainer","BottomSheetFooterContainer","Backdrop","TextInput","BottomSheetTextInput","cssInterop","handleIndicatorClassName","backgroundClassName","containerClassName","handleClassName","className","_default","exports"],"sourceRoot":"../../src","sources":["sheet.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import { DeviceEventEmitter, NativeAppEventEmitter, Platform } from "react-native";
2
+
3
+ /* eslint-disable curly */
4
+
5
+ export default class EventManager {
6
+ constructor() {
7
+ this._registry = Platform.select({
8
+ ios: NativeAppEventEmitter,
9
+ android: DeviceEventEmitter
10
+ });
11
+ }
12
+ subscribe(name, handler) {
13
+ if (!name || !handler) throw new Error("name and handler are required.");
14
+ const event = this._registry?.addListener(name, handler);
15
+ return {
16
+ unsubscribe: () => event?.remove()
17
+ };
18
+ }
19
+ publish(name, ...args) {
20
+ this._registry?.emit(name, ...args);
21
+ }
22
+ remove(...names) {
23
+ for (const eventType of names) {
24
+ this._registry?.removeAllListeners(eventType);
25
+ }
26
+ }
27
+ }
28
+ export const eventManager = new EventManager();
29
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DeviceEventEmitter","NativeAppEventEmitter","Platform","EventManager","constructor","_registry","select","ios","android","subscribe","name","handler","Error","event","addListener","unsubscribe","remove","publish","args","emit","names","eventType","removeAllListeners","eventManager"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":"AAAA,SACIA,kBAAkB,EAClBC,qBAAqB,EAErBC,QAAQ,QACL,cAAc;;AAErB;;AAMA,eAAe,MAAMC,YAAY,CAAC;EAE9BC,WAAWA,CAAA,EAAG;IACV,IAAI,CAACC,SAAS,GAAGH,QAAQ,CAACI,MAAM,CAAC;MAC7BC,GAAG,EAAEN,qBAAqB;MAC1BO,OAAO,EAAER;IACb,CAAC,CAAC;EACN;EAEAS,SAASA,CAACC,IAAY,EAAEC,OAAqB,EAAE;IAC3C,IAAI,CAACD,IAAI,IAAI,CAACC,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;IACxE,MAAMC,KAAK,GAAG,IAAI,CAACR,SAAS,EAAES,WAAW,CAACJ,IAAI,EAAEC,OAAO,CAAC;IACxD,OAAO;MAAEI,WAAW,EAAEA,CAAA,KAAMF,KAAK,EAAEG,MAAM,CAAC;IAAE,CAAC;EACjD;EAEAC,OAAOA,CAACP,IAAY,EAAE,GAAGQ,IAAW,EAAE;IAClC,IAAI,CAACb,SAAS,EAAEc,IAAI,CAACT,IAAI,EAAE,GAAGQ,IAAI,CAAC;EACvC;EAEAF,MAAMA,CAAC,GAAGI,KAAe,EAAE;IACvB,KAAK,MAAMC,SAAS,IAAID,KAAK,EAAE;MAC3B,IAAI,CAACf,SAAS,EAAEiB,kBAAkB,CAACD,SAAS,CAAC;IACjD;EACJ;AACJ;AAEA,OAAO,MAAME,YAAY,GAAG,IAAIpB,YAAY,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ export { default as BottomSheet } from "./sheet";
2
+ export { SheetManager } from "./manager";
3
+ export * from "./router";
4
+ export * from "./types";
5
+ export { SheetProvider, useSheetPayload, useSheetRef, useOnSheet, registerSheet } from "./provider";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","BottomSheet","SheetManager","SheetProvider","useSheetPayload","useSheetRef","useOnSheet","registerSheet"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAAW,QAAQ,SAAS;AAChD,SAASC,YAAY,QAAQ,WAAW;AACxC,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,SACIC,aAAa,EACbC,eAAe,EACfC,WAAW,EACXC,UAAU,EACVC,aAAa,QACV,YAAY","ignoreList":[]}
@@ -0,0 +1,165 @@
1
+ import { eventManager } from "./events";
2
+ import { providerRegistryStack, sheetsRegistry } from "./provider";
3
+ // Array of all the ids of Sheets currently rendered in the app.
4
+ const ids = [];
5
+ const keys = [];
6
+ const refs = {};
7
+ const DEFAULT_Z_INDEX = 999;
8
+ const makeKey = (id, context) => `${id}:${context}`;
9
+ export const PrivateManager = {
10
+ // Return to the previous sheet when the current sheet is closed.
11
+ history: [],
12
+ context(options) {
13
+ if (!options) options = {};
14
+ if (!options?.context) {
15
+ // If no context is provided, use to current top most context
16
+ // to render the sheet.
17
+ for (const context of providerRegistryStack.slice().reverse()) {
18
+ // We only automatically select nested sheet providers.
19
+ if (context.startsWith("$$-auto") && !context.includes(options?.id)) {
20
+ options.context = context;
21
+ break;
22
+ }
23
+ }
24
+ }
25
+ return options.context;
26
+ },
27
+ registerRef: (id, context, instance) => {
28
+ const key = makeKey(id, context);
29
+ refs[key] = instance;
30
+ keys.push(key);
31
+ },
32
+ /**
33
+ *
34
+ * Get internal ref of a sheet by the given id.
35
+ *
36
+ * @param id Id of the sheet
37
+ * @param context Context in which the sheet is rendered. Normally this function returns the top most rendered sheet ref automatically.
38
+ */
39
+ get: (id, context) => {
40
+ if (!context) {
41
+ for (let ctx of providerRegistryStack.slice().reverse()) {
42
+ for (let _id in sheetsRegistry[ctx]) {
43
+ if (_id === id) {
44
+ context = ctx;
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ }
50
+ return refs[makeKey(id, context)];
51
+ },
52
+ add: (id, context) => {
53
+ if (ids.indexOf(id) < 0) {
54
+ ids[ids.length] = makeKey(id, context);
55
+ }
56
+ },
57
+ remove: (id, context) => {
58
+ if (ids.indexOf(makeKey(id, context)) > -1) {
59
+ ids.splice(ids.indexOf(makeKey(id, context)));
60
+ }
61
+ },
62
+ zIndex: (id, context = "global") => {
63
+ const index = keys.indexOf(makeKey(id, context));
64
+ return index > -1 ? DEFAULT_Z_INDEX + index + 1 : DEFAULT_Z_INDEX;
65
+ },
66
+ stack: () => ids.map(id => {
67
+ return {
68
+ id: id.split(":")[0],
69
+ context: id.split(":")?.[1] || "global"
70
+ };
71
+ })
72
+ };
73
+ class _SheetManager {
74
+ /**
75
+ * Show the Modal Sheet with an id.
76
+ *
77
+ * @param id id of the Sheet to show
78
+ * @param options
79
+ */
80
+ async show(id, options) {
81
+ return new Promise(resolve => {
82
+ const currentContext = PrivateManager.context({
83
+ ...options,
84
+ id: id
85
+ });
86
+ const handler = (data, context = "global") => {
87
+ if (context !== "global" && currentContext && currentContext !== context) return;
88
+ options?.onClose?.(data);
89
+ sub?.unsubscribe();
90
+ resolve(data);
91
+ };
92
+ var sub = eventManager.subscribe(`onclose_${id}`, handler);
93
+ PrivateManager.stack().forEach(({
94
+ id,
95
+ context
96
+ }) => {
97
+ eventManager.publish(`hide_${id}`, undefined, context, true);
98
+ });
99
+
100
+ // Check if the sheet is registered with any `SheetProviders`.
101
+ let isRegisteredWithSheetProvider = false;
102
+ for (let ctx in sheetsRegistry) {
103
+ for (let _id in sheetsRegistry[ctx]) {
104
+ if (_id === id) {
105
+ isRegisteredWithSheetProvider = true;
106
+ }
107
+ }
108
+ }
109
+ eventManager.publish(isRegisteredWithSheetProvider ? `show_wrap_${id}` : `show_${id}`, options?.payload, currentContext || "global");
110
+ });
111
+ }
112
+
113
+ /**
114
+ * An async hide function. This is useful when you want to show one Sheet after closing another.
115
+ *
116
+ * @param id id of the Sheet to show
117
+ * @param data
118
+ */
119
+ async hide(id, options) {
120
+ let currentContext = PrivateManager.context({
121
+ ...options,
122
+ id: id
123
+ });
124
+ return new Promise(resolve => {
125
+ let isRegisteredWithSheetProvider = false;
126
+ // Check if the sheet is registered with any `SheetProviders`
127
+ // and select the nearest context where sheet is registered.
128
+
129
+ for (const _id of ids) {
130
+ if (_id === `${id}:${currentContext}`) {
131
+ isRegisteredWithSheetProvider = true;
132
+ break;
133
+ }
134
+ }
135
+ const hideHandler = (data, context = "global") => {
136
+ if (context !== "global" && currentContext && currentContext !== context) return;
137
+ sub?.unsubscribe();
138
+ resolve(data);
139
+ };
140
+ var sub = eventManager.subscribe(`onclose_${id}`, hideHandler);
141
+ eventManager.publish(isRegisteredWithSheetProvider ? `hide_wrap_${id}` : `hide_${id}`, options?.payload, !isRegisteredWithSheetProvider ? "global" : currentContext);
142
+ });
143
+ }
144
+
145
+ /**
146
+ * Hide all the opened Sheets.
147
+ *
148
+ * @param id Hide all sheets for the specific id.
149
+ */
150
+ hideAll(id) {
151
+ PrivateManager.stack().forEach(({
152
+ id: _id,
153
+ context
154
+ }) => {
155
+ if (id && !_id.startsWith(id)) return;
156
+ eventManager.publish(`hide_${_id}`, undefined, context);
157
+ });
158
+ }
159
+ }
160
+
161
+ /**
162
+ * SheetManager is used to imperatively show/hide any sheet with a unique id prop.
163
+ */
164
+ export const SheetManager = new _SheetManager();
165
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["eventManager","providerRegistryStack","sheetsRegistry","ids","keys","refs","DEFAULT_Z_INDEX","makeKey","id","context","PrivateManager","history","options","slice","reverse","startsWith","includes","registerRef","instance","key","push","get","ctx","_id","add","indexOf","length","remove","splice","zIndex","index","stack","map","split","_SheetManager","show","Promise","resolve","currentContext","handler","data","onClose","sub","unsubscribe","subscribe","forEach","publish","undefined","isRegisteredWithSheetProvider","payload","hide","hideHandler","hideAll","SheetManager"],"sourceRoot":"../../src","sources":["manager.ts"],"mappings":"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","ignoreList":[]}