@gorilla-engine-sdk/ge-dialogs-lib 0.5.7

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 (47) hide show
  1. package/LICENSE.md +64 -0
  2. package/README.md +376 -0
  3. package/dist/Dialogs.d.ts +8 -0
  4. package/dist/Dialogs.js +51 -0
  5. package/dist/DialogsStyleState.d.ts +127 -0
  6. package/dist/DialogsStyleState.js +97 -0
  7. package/dist/ErrorBoundary.d.ts +13 -0
  8. package/dist/ErrorBoundary.js +58 -0
  9. package/dist/dialogsDefaultStyle.d.ts +2 -0
  10. package/dist/dialogsDefaultStyle.js +87 -0
  11. package/dist/index.d.ts +13 -0
  12. package/dist/index.js +32 -0
  13. package/dist/modals/MessageModal.d.ts +7 -0
  14. package/dist/modals/MessageModal.js +55 -0
  15. package/dist/modals/ModalContext.d.ts +18 -0
  16. package/dist/modals/ModalContext.js +52 -0
  17. package/dist/modals/ModalProvider.d.ts +25 -0
  18. package/dist/modals/ModalProvider.js +75 -0
  19. package/dist/modals/ModalRoot.d.ts +30 -0
  20. package/dist/modals/ModalRoot.js +64 -0
  21. package/dist/modals/components/FooterButtons.d.ts +15 -0
  22. package/dist/modals/components/FooterButtons.js +59 -0
  23. package/dist/modals/components/Modal.d.ts +27 -0
  24. package/dist/modals/components/Modal.js +124 -0
  25. package/dist/modals/useModal.d.ts +12 -0
  26. package/dist/modals/useModal.js +55 -0
  27. package/dist/notifications/DefaultNotification.d.ts +10 -0
  28. package/dist/notifications/DefaultNotification.js +87 -0
  29. package/dist/notifications/NotificationContext.d.ts +18 -0
  30. package/dist/notifications/NotificationContext.js +52 -0
  31. package/dist/notifications/NotificationProvider.d.ts +17 -0
  32. package/dist/notifications/NotificationProvider.js +73 -0
  33. package/dist/notifications/NotificationRoot.d.ts +30 -0
  34. package/dist/notifications/NotificationRoot.js +71 -0
  35. package/dist/notifications/useNotification.d.ts +19 -0
  36. package/dist/notifications/useNotification.js +98 -0
  37. package/dist/tooltips/DefaultToolTip.d.ts +9 -0
  38. package/dist/tooltips/DefaultToolTip.js +119 -0
  39. package/dist/tooltips/ToolTipContext.d.ts +18 -0
  40. package/dist/tooltips/ToolTipContext.js +52 -0
  41. package/dist/tooltips/ToolTipProvider.d.ts +25 -0
  42. package/dist/tooltips/ToolTipProvider.js +92 -0
  43. package/dist/tooltips/ToolTipRoot.d.ts +30 -0
  44. package/dist/tooltips/ToolTipRoot.js +61 -0
  45. package/dist/tooltips/useToolTip.d.ts +14 -0
  46. package/dist/tooltips/useToolTip.js +102 -0
  47. package/package.json +44 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ModalRoot = void 0;
37
+ const react_1 = require("react");
38
+ const React = __importStar(require("react"));
39
+ const DialogsStyleState_1 = require("../DialogsStyleState");
40
+ const __1 = require("..");
41
+ /**
42
+ * Component responsible for rendering the modal.
43
+ *
44
+ * The identity of `Component` may change dependeing on the inputs passed to
45
+ * `useModal`. If we simply rendered `<Component />` then the modal would be
46
+ * susceptible to rerenders whenever one of the inputs change.
47
+ */
48
+ const ModalRenderer = (0, react_1.memo)(({ component, width, height, backgroundColor, ...rest }) => {
49
+ console.debug(`${__1.GE_DIALOGS_LIB} ModalRenderer: ${width} ${height}`);
50
+ return (React.createElement("geLabel", { x: 0, y: 0, width: width, height: height, interceptsMouseClicks: false }, component(rest)));
51
+ });
52
+ /**
53
+ * Modal Root
54
+ *
55
+ * Renders modals using react portal.
56
+ */
57
+ exports.ModalRoot = (0, react_1.memo)(({ modals, container, component: RootComponent = React.Fragment, }) => {
58
+ const [mountNode, setMountNode] = (0, react_1.useState)(undefined);
59
+ const stylesState = (0, DialogsStyleState_1.useDialogsStylesState)();
60
+ return (React.createElement(RootComponent, null, Object.keys(modals).map((key) => {
61
+ return (React.createElement(ModalRenderer, { key: key, component: modals[key], width: stylesState.pluginWidth, height: stylesState.pluginHeight, backgroundColor: "33000000" }));
62
+ })));
63
+ });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kYWxSb290LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGFscy9Nb2RhbFJvb3QudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlDQUFrRDtBQUNsRCw2Q0FBK0I7QUFFL0IsNERBQWdGO0FBQ2hGLDBCQUFvQztBQXdDcEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBQSxZQUFJLEVBQ3hCLENBQUMsRUFDQyxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBQ2YsR0FBRyxJQUFJLEVBQ1ksRUFBRSxFQUFFO0lBQ3ZCLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxrQkFBYyxtQkFBbUIsS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckUsT0FBTyxDQUNMLGlDQUNFLENBQUMsRUFBRSxDQUFDLEVBQ0osQ0FBQyxFQUFFLENBQUMsRUFDSixLQUFLLEVBQUUsS0FBSyxFQUNaLE1BQU0sRUFBRSxNQUFNLEVBQ2QscUJBQXFCLEVBQUUsS0FBSyxJQUUzQixTQUFTLENBQUMsSUFBSSxDQUFDLENBQ1IsQ0FDWCxDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUM7QUFFRjs7OztHQUlHO0FBQ1UsUUFBQSxTQUFTLEdBQUcsSUFBQSxZQUFJLEVBQzNCLENBQUMsRUFDQyxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFBRSxhQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsR0FDMUIsRUFBRSxFQUFFO0lBQ25CLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFzQixTQUFTLENBQUMsQ0FBQztJQUMzRSxNQUFNLFdBQVcsR0FBc0IsSUFBQSx5Q0FBcUIsR0FBRSxDQUFDO0lBRS9ELE9BQU8sQ0FDTCxvQkFBQyxhQUFhLFFBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMvQixPQUFPLENBQ0wsb0JBQUMsYUFBYSxJQUNaLEdBQUcsRUFBRSxHQUFHLEVBQ1IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFDdEIsS0FBSyxFQUFFLFdBQVcsQ0FBQyxXQUFXLEVBQzlCLE1BQU0sRUFBRSxXQUFXLENBQUMsWUFBWSxFQUNoQyxlQUFlLEVBQUUsVUFBVSxHQUMzQixDQUNILENBQUM7SUFDSixDQUFDLENBQUMsQ0FDWSxDQUNqQixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQUMifQ==
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ type FooterButtonsProps = {
3
+ modalWidth: number;
4
+ modalHeight: number;
5
+ cancelTrigger?: boolean;
6
+ cancelTriggerEnabled?: boolean;
7
+ cancelTriggerLabel?: string;
8
+ onCancelTrigger?(): any;
9
+ approveTrigger?: boolean;
10
+ approveTriggerEnabled?: boolean;
11
+ approveTriggerLabel?: string;
12
+ onApproveTrigger?(): any;
13
+ };
14
+ export declare function FooterButtons(props: FooterButtonsProps): React.JSX.Element;
15
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.FooterButtons = FooterButtons;
37
+ const React = __importStar(require("react"));
38
+ const DialogsStyleState_1 = require("../../DialogsStyleState");
39
+ const dialogsDefaultStyle_1 = require("../../dialogsDefaultStyle");
40
+ const ErrorBoundary_1 = require("../../ErrorBoundary");
41
+ function FooterButtons(props) {
42
+ const stylesState = (0, DialogsStyleState_1.useDialogsStylesState)();
43
+ const modalStyle = stylesState.modal ?? dialogsDefaultStyle_1.dialogsDefaultStyle.modal;
44
+ const space = 20;
45
+ const footerHeight = 70;
46
+ return (React.createElement(ErrorBoundary_1.ErrorBoundary, null,
47
+ React.createElement("geLabel", { x: 0, y: props.modalHeight - footerHeight, width: props.modalWidth, height: footerHeight },
48
+ props.cancelTrigger === true && (React.createElement("geButton", { text: props.cancelTriggerLabel, enabled: props.cancelTriggerEnabled === false ? false : true, onClick: () => {
49
+ if (props.onCancelTrigger)
50
+ props.onCancelTrigger();
51
+ }, x: props.approveTrigger
52
+ ? props.modalWidth - 220 - modalStyle.horizontalContentMargin
53
+ : props.modalWidth - 100 - modalStyle.horizontalContentMargin, y: space, width: 100, height: 30, ...modalStyle.cancelButton })),
54
+ props.approveTrigger === true && (React.createElement("geButton", { text: props.approveTriggerLabel, enabled: props.approveTriggerEnabled === false ? false : true, onClick: () => {
55
+ if (props.onApproveTrigger)
56
+ props.onApproveTrigger();
57
+ }, x: props.modalWidth - 100 - modalStyle.horizontalContentMargin, y: space, width: 100, height: 30, ...modalStyle.approveButton })))));
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9vdGVyQnV0dG9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RhbHMvY29tcG9uZW50cy9Gb290ZXJCdXR0b25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQSxzQ0FtREM7QUEvRUQsNkNBQStCO0FBQy9CLCtEQUFtRjtBQUNuRixtRUFBZ0U7QUFDaEUsdURBQW9EO0FBeUJwRCxTQUFnQixhQUFhLENBQUMsS0FBeUI7SUFDckQsTUFBTSxXQUFXLEdBQXNCLElBQUEseUNBQXFCLEdBQUUsQ0FBQztJQUMvRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxJQUFJLHlDQUFtQixDQUFDLEtBQU0sQ0FBQztJQUVuRSxNQUFNLEtBQUssR0FBVyxFQUFFLENBQUM7SUFDekIsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBRXhCLE9BQU8sQ0FDTCxvQkFBQyw2QkFBYTtRQUNaLGlDQUNFLENBQUMsRUFBRSxDQUFDLEVBQ0osQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLEdBQUcsWUFBWSxFQUNuQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFDdkIsTUFBTSxFQUFFLFlBQVk7WUFFbkIsS0FBSyxDQUFDLGFBQWEsS0FBSyxJQUFJLElBQUksQ0FDL0Isa0NBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsRUFDOUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUM1RCxPQUFPLEVBQUUsR0FBRyxFQUFFO29CQUNaLElBQUksS0FBSyxDQUFDLGVBQWU7d0JBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyRCxDQUFDLEVBQ0QsQ0FBQyxFQUNDLEtBQUssQ0FBQyxjQUFjO29CQUNsQixDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDLHVCQUF1QjtvQkFDN0QsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLFVBQVUsQ0FBQyx1QkFBdUIsRUFFakUsQ0FBQyxFQUFFLEtBQUssRUFDUixLQUFLLEVBQUUsR0FBRyxFQUNWLE1BQU0sRUFBRSxFQUFFLEtBQ04sVUFBVSxDQUFDLFlBQVksR0FDM0IsQ0FDSDtZQUVBLEtBQUssQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLENBQ2hDLGtDQUNFLElBQUksRUFBRSxLQUFLLENBQUMsbUJBQW1CLEVBQy9CLE9BQU8sRUFBRSxLQUFLLENBQUMscUJBQXFCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDN0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDWixJQUFJLEtBQUssQ0FBQyxnQkFBZ0I7d0JBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3ZELENBQUMsRUFDRCxDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDLHVCQUF1QixFQUM5RCxDQUFDLEVBQUUsS0FBSyxFQUNSLEtBQUssRUFBRSxHQUFHLEVBQ1YsTUFBTSxFQUFFLEVBQUUsS0FDTixVQUFVLENBQUMsYUFBYSxHQUM1QixDQUNILENBQ08sQ0FDSSxDQUNqQixDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { ModalsStyle } from '../../DialogsStyleState';
3
+ export type ModalProps = {
4
+ /** a style for this modal, if not set global modal style is used */
5
+ modalStyle?: ModalsStyle;
6
+ isBlocking?: boolean;
7
+ isBlockingClosable?: boolean;
8
+ blockingBackgroundColor?: string;
9
+ /** if set it is used instad of style positioning */
10
+ x?: number;
11
+ /** if set it is used instad of style positioning */
12
+ y?: number;
13
+ modalWidth?: number;
14
+ modalHeight?: number;
15
+ title: string;
16
+ closeTrigger?: boolean;
17
+ cancelTrigger?: boolean;
18
+ cancelTriggerEnabled?: boolean;
19
+ cancelTriggerLabel?: string;
20
+ onCancelTrigger?(): any;
21
+ approveTrigger?: boolean;
22
+ approveTriggerEnabled?: boolean;
23
+ approveTriggerLabel?: string;
24
+ onApproveTrigger?(): any;
25
+ children?: any;
26
+ };
27
+ export declare function Modal(props: ModalProps): React.JSX.Element;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Modal = Modal;
37
+ const React = __importStar(require("react"));
38
+ const FooterButtons_1 = require("./FooterButtons");
39
+ const DialogsStyleState_1 = require("../../DialogsStyleState");
40
+ const dialogsDefaultStyle_1 = require("../../dialogsDefaultStyle");
41
+ const ErrorBoundary_1 = require("../../ErrorBoundary");
42
+ function Modal(props) {
43
+ const stylesState = (0, DialogsStyleState_1.useDialogsStylesState)();
44
+ /** if props.modalStyle is supplied, otherwise global modalStyle */
45
+ const modalStyle = React.useMemo(() => props.modalStyle ?? stylesState.modal ?? dialogsDefaultStyle_1.dialogsDefaultStyle.modal, [props.modalStyle, stylesState.modal]);
46
+ /** if props.modalWidth is supplied, otherwise from global modalStyle */
47
+ const [modalWidth] = React.useState(typeof props.modalWidth === 'number' ? props.modalWidth : modalStyle.modalWidth);
48
+ /** if props.modalHeight is supplied, otherwise from global modalStyle */
49
+ const [modalHeight] = React.useState(typeof props.modalHeight === 'number' ? props.modalHeight : modalStyle.modalHeight);
50
+ const horizontalMargin = modalStyle.horizontalContentMargin;
51
+ /** if footer buttons exist in props */
52
+ const [showFooter] = React.useState(!!(props.approveTrigger || props.cancelTrigger));
53
+ const closeButtonPosition = React.useMemo(() => {
54
+ const closeButtonWidth = typeof modalStyle.closeButton.width === 'number' ? modalStyle.closeButton.width : 20;
55
+ return {
56
+ x: typeof modalStyle.closeButton.x === 'number'
57
+ ? modalStyle.closeButton.x
58
+ : modalStyle.closeButtonPosition?.position === 'left'
59
+ ? modalStyle.closeButtonPosition?.space
60
+ : modalStyle.closeButtonPosition?.position === 'right'
61
+ ? modalWidth - closeButtonWidth - modalStyle.closeButtonPosition?.space
62
+ : 10,
63
+ y: typeof modalStyle.closeButton.y === 'number'
64
+ ? modalStyle.closeButton.y
65
+ : modalStyle.closeButtonPosition?.space
66
+ ? modalStyle.closeButtonPosition?.space
67
+ : 10,
68
+ };
69
+ }, [modalStyle, modalWidth]);
70
+ const xyPositions = React.useMemo(() => {
71
+ let xPos = -1000;
72
+ let yPos = -1000;
73
+ const horizontalOffset = modalStyle.horizontalOffset ?? 0;
74
+ const verticalOffset = modalStyle.verticalOffset ?? 0;
75
+ if (modalStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.LEFT) {
76
+ xPos = 0 + horizontalOffset;
77
+ }
78
+ else if (modalStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.CENTER) {
79
+ xPos = Math.round(stylesState.pluginWidth / 2 - modalWidth / 2) + horizontalOffset;
80
+ }
81
+ else if (modalStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.RIGHT) {
82
+ xPos = stylesState.pluginWidth - modalWidth + horizontalOffset;
83
+ }
84
+ if (modalStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.TOP) {
85
+ yPos = 0 + verticalOffset;
86
+ }
87
+ else if (modalStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.CENTER) {
88
+ yPos = Math.round(stylesState.pluginHeight / 2 - modalHeight / 2) + verticalOffset;
89
+ }
90
+ else if (modalStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.BOTTOM) {
91
+ yPos = stylesState.pluginHeight - modalHeight + verticalOffset;
92
+ }
93
+ const position = {
94
+ x: typeof props.x === 'number' ? props.x : xPos,
95
+ y: typeof props.y === 'number' ? props.y : yPos,
96
+ };
97
+ return position;
98
+ }, [modalStyle, modalWidth, modalHeight, props.x, props.y, stylesState]);
99
+ return (React.createElement(React.Fragment, null,
100
+ React.createElement(ErrorBoundary_1.ErrorBoundary, null,
101
+ React.createElement("geLabel", { x: 0, y: 0, width: stylesState.pluginWidth, height: stylesState.pluginHeight, interceptsMouseClicks: props.isBlocking ? props.isBlocking : false, backgroundColor: props.isBlocking
102
+ ? props.blockingBackgroundColor
103
+ ? props.blockingBackgroundColor
104
+ : modalStyle.blockingBackgroundColor
105
+ : '00ff0000' }, props.isBlockingClosable && props.onCancelTrigger && (React.createElement("geButton", { width: stylesState.pluginWidth, height: stylesState.pluginHeight, onClick: () => {
106
+ props.onCancelTrigger?.();
107
+ } }))),
108
+ React.createElement("geLabel", { width: modalWidth, height: modalHeight, ...modalStyle.modal, ...xyPositions },
109
+ React.createElement("geLabel", { x: 0, y: 0, width: modalWidth, height: 50, text: props.title, ...modalStyle.title }),
110
+ modalStyle.dividerLine && (React.createElement("geLabel", { x: 0, y: modalStyle.headerHeight - 1, width: modalWidth, ...modalStyle.dividerLine })),
111
+ React.createElement("geLabel", { x: horizontalMargin, y: modalStyle.headerHeight, width: modalWidth - 2 * horizontalMargin, height: modalHeight - modalStyle.headerHeight }, props.children),
112
+ showFooter && (React.createElement(FooterButtons_1.FooterButtons, { modalWidth: modalWidth, modalHeight: modalHeight, cancelTrigger: props.cancelTrigger, cancelTriggerEnabled: props.cancelTriggerEnabled, cancelTriggerLabel: props.cancelTriggerLabel, onCancelTrigger: () => {
113
+ if (props.onCancelTrigger)
114
+ props.onCancelTrigger();
115
+ }, approveTrigger: props.approveTrigger, approveTriggerEnabled: props.approveTriggerEnabled, approveTriggerLabel: props.approveTriggerLabel, onApproveTrigger: () => {
116
+ if (props.onApproveTrigger)
117
+ props.onApproveTrigger();
118
+ } })),
119
+ props.closeTrigger && (React.createElement("geButton", { ...modalStyle.closeButton, ...closeButtonPosition, onClick: () => {
120
+ if (props.onCancelTrigger)
121
+ props.onCancelTrigger();
122
+ } }))))));
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kYWxzL2NvbXBvbmVudHMvTW9kYWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOENBLHNCQTJLQztBQXpORCw2Q0FBK0I7QUFFL0IsbURBQWdEO0FBQ2hELCtEQU1pQztBQUNqQyxtRUFBZ0U7QUFDaEUsdURBQW9EO0FBbUNwRCxTQUFnQixLQUFLLENBQUMsS0FBaUI7SUFDckMsTUFBTSxXQUFXLEdBQXNCLElBQUEseUNBQXFCLEdBQUUsQ0FBQztJQUUvRCxtRUFBbUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FDOUIsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLHlDQUFtQixDQUFDLEtBQU0sRUFDekUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FDdEMsQ0FBQztJQUVGLHdFQUF3RTtJQUN4RSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FDakMsT0FBTyxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FDaEYsQ0FBQztJQUNGLHlFQUF5RTtJQUN6RSxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FDbEMsT0FBTyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FDbkYsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQVcsVUFBVSxDQUFDLHVCQUF1QixDQUFDO0lBRXBFLHVDQUF1QztJQUN2QyxNQUFNLENB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
@@ -0,0 +1,12 @@
1
+ import { DependencyList } from "react";
2
+ import { ModalType } from "./ModalContext";
3
+ /**
4
+ * Callback types provided for descriptive type-hints
5
+ */
6
+ type ShowModal = () => void;
7
+ type HideModal = () => void;
8
+ /**
9
+ * React hook for showing modal windows
10
+ */
11
+ export declare const useModal: (component: ModalType, inputs?: DependencyList, isBlocking?: boolean, zIndex?: string) => [ShowModal, HideModal];
12
+ export {};
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useModal = void 0;
4
+ const react_1 = require("react");
5
+ const ModalContext_1 = require("./ModalContext");
6
+ /**
7
+ * Utility function to generate unique number per component instance
8
+ */
9
+ const generateModalKey = (() => {
10
+ let count = 0;
11
+ return () => `${++count}`;
12
+ })();
13
+ /**
14
+ * Check whether the argument is a stateless component.
15
+ *
16
+ * We take advantage of the stateless nature of functional components to be
17
+ * inline the rendering of the modal component as part of another immutable
18
+ * component.
19
+ *
20
+ * This is necessary for allowing the modal to update based on the inputs passed
21
+ * as the second argument to useModal without unmounting the previous version of
22
+ * the modal component.
23
+ */
24
+ const isFunctionalComponent = (Component) => {
25
+ const prototype = Component.prototype;
26
+ return !prototype || !prototype.isReactComponent;
27
+ };
28
+ /**
29
+ * React hook for showing modal windows
30
+ */
31
+ const useModal = (component, inputs = [], isBlocking = true, zIndex) => {
32
+ if (!isFunctionalComponent(component)) {
33
+ throw new Error("Only stateless components can be used as an argument to useModal. You have probably passed a class component where a function was expected.");
34
+ }
35
+ const key = zIndex ? zIndex : (0, react_1.useMemo)(generateModalKey, []);
36
+ //const key = useMemo(generateModalKey, []);
37
+ const modal = (0, react_1.useMemo)(() => component, inputs);
38
+ const context = (0, react_1.useContext)(ModalContext_1.ModalContext);
39
+ const [isShown, setShown] = (0, react_1.useState)(false);
40
+ const showModal = (0, react_1.useCallback)(() => setShown(true), []);
41
+ const hideModal = (0, react_1.useCallback)(() => setShown(false), []);
42
+ (0, react_1.useEffect)(() => {
43
+ if (isShown) {
44
+ context.showModal(key, modal, isBlocking);
45
+ }
46
+ else {
47
+ context.hideModal(key);
48
+ }
49
+ // Hide modal when parent component unmounts
50
+ return () => context.hideModal(key);
51
+ }, [modal, isShown]);
52
+ return [showModal, hideModal];
53
+ };
54
+ exports.useModal = useModal;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kYWxzL3VzZU1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQU9lO0FBQ2YsaURBQXlEO0FBUXpEOztHQUVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUM3QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDLENBQUMsRUFBRSxDQUFDO0FBRUw7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxTQUFtQixFQUFFLEVBQUU7SUFDcEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUN0QyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxRQUFRLEdBQUcsQ0FDdEIsU0FBb0IsRUFDcEIsU0FBeUIsRUFBRSxFQUMzQixhQUFzQixJQUFJLEVBQzFCLE1BQWUsRUFDUyxFQUFFO0lBQzFCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNklBQTZJLENBQzlJLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUEsZUFBTyxFQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVELDRDQUE0QztJQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFBLGVBQU8sRUFBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBVSxFQUFDLDJCQUFZLENBQUMsQ0FBQztJQUN6QyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUEsZ0JBQVEsRUFBVSxLQUFLLENBQUMsQ0FBQztJQUVyRCxNQUFNLFNBQVMsR0FBRyxJQUFBLG1CQUFXLEVBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUEsbUJBQVcsRUFBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekQsSUFBQSxpQkFBUyxFQUFDLEdBQUcsRUFBRTtRQUNiLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCw0Q0FBNEM7UUFDNUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXJCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBakNXLFFBQUEsUUFBUSxZQWlDbkIifQ==
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import { NotificationsStyle } from '../DialogsStyleState';
3
+ type DefaultNotificationProps = {
4
+ message: string;
5
+ notificationStyle?: NotificationsStyle;
6
+ x?: number;
7
+ y?: number;
8
+ };
9
+ declare function DefaultNotification(props: DefaultNotificationProps): React.JSX.Element;
10
+ export default DefaultNotification;
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const React = __importStar(require("react"));
37
+ const ErrorBoundary_1 = require("../ErrorBoundary");
38
+ const DialogsStyleState_1 = require("../DialogsStyleState");
39
+ const dialogsDefaultStyle_1 = require("../dialogsDefaultStyle");
40
+ function DefaultNotification(props) {
41
+ const stylesState = (0, DialogsStyleState_1.useDialogsStylesState)();
42
+ const notificationStyle = React.useMemo(() => props.notificationStyle ?? stylesState.notification ?? dialogsDefaultStyle_1.dialogsDefaultStyle.notification, [props.notificationStyle, stylesState.notification]);
43
+ const getXYPositions = () => {
44
+ if (props.x && props.y)
45
+ return { x: props.x, y: props.y };
46
+ let xPos = -1000;
47
+ let yPos = -1000;
48
+ const horizontalOffset = notificationStyle.horizontalOffset ?? 0;
49
+ const verticalOffset = notificationStyle.verticalOffset ?? 0;
50
+ const containerWidth = typeof notificationStyle.container.width === 'number'
51
+ ? notificationStyle.container.width
52
+ : 300;
53
+ const containerHeight = typeof notificationStyle.container.height === 'number'
54
+ ? notificationStyle.container.height
55
+ : 40;
56
+ if (notificationStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.LEFT) {
57
+ xPos = 0 + horizontalOffset;
58
+ }
59
+ else if (notificationStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.CENTER) {
60
+ xPos = Math.round(stylesState.pluginWidth / 2 - containerWidth / 2);
61
+ }
62
+ else if (notificationStyle.horizontalAlign === DialogsStyleState_1.DialogHorizontalAlign.RIGHT) {
63
+ xPos = stylesState.pluginWidth - containerWidth + horizontalOffset;
64
+ }
65
+ if (notificationStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.TOP) {
66
+ yPos = 0 + verticalOffset;
67
+ }
68
+ else if (notificationStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.CENTER) {
69
+ yPos = Math.round(stylesState.pluginHeight / 2 - containerHeight / 2) + verticalOffset;
70
+ }
71
+ else if (notificationStyle.verticalAlign === DialogsStyleState_1.DialogVerticalAlign.BOTTOM) {
72
+ yPos = stylesState.pluginHeight - containerHeight + verticalOffset;
73
+ }
74
+ const position = { x: xPos, y: yPos };
75
+ return position;
76
+ };
77
+ return (React.createElement(React.Fragment, null,
78
+ React.createElement(ErrorBoundary_1.ErrorBoundary, null,
79
+ React.createElement("geLabel", { ...notificationStyle.container, ...getXYPositions() },
80
+ React.createElement("geLabel", { width: typeof notificationStyle.container.width === 'number'
81
+ ? notificationStyle.container.width
82
+ : 300, height: typeof notificationStyle.container.height === 'number'
83
+ ? notificationStyle.container.height
84
+ : 40, ...notificationStyle.label, text: props.message })))));
85
+ }
86
+ exports.default = DefaultNotification;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdE5vdGlmaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb25zL0RlZmF1bHROb3RpZmljYXRpb24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBRy9CLG9EQUFpRDtBQUNqRCw0REFNOEI7QUFDOUIsZ0VBQTZEO0FBUzdELFNBQVMsbUJBQW1CLENBQUMsS0FBK0I7SUFDMUQsTUFBTSxXQUFXLEdBQXNCLElBQUEseUNBQXFCLEdBQUUsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQ3JDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxXQUFXLENBQUMsWUFBWSxJQUFJLHlDQUFtQixDQUFDLFlBQWEsRUFDOUYsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUNwRCxDQUFDO0lBRUYsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO1FBQzFCLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFELElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDN0QsTUFBTSxjQUFjLEdBQ2xCLE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRO1lBQ25ELENBQUMs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
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Notifications are represented as react components
4
+ *
5
+ * This is what gets passed to useNotification as the first argument.
6
+ */
7
+ export type NotificationType = React.FunctionComponent<any>;
8
+ /**
9
+ * The shape of the Notification context
10
+ */
11
+ export interface NotificationContextType {
12
+ showNotification(key: string, component: NotificationType): void;
13
+ hideNotification(key: string): void;
14
+ }
15
+ /**
16
+ * Notification Context Object
17
+ */
18
+ export declare const NotificationContext: React.Context<NotificationContextType>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NotificationContext = void 0;
37
+ const React = __importStar(require("react"));
38
+ /**
39
+ * Throw error when NotificationContext is used outside of context provider
40
+ */
41
+ const invariantViolation = () => {
42
+ throw new Error("Attempted to call useNotification outside of Notification context. Make sure your app is rendered inside NotificationProvider.");
43
+ };
44
+ /**
45
+ * Notification Context Object
46
+ */
47
+ exports.NotificationContext = React.createContext({
48
+ showNotification: invariantViolation,
49
+ hideNotification: invariantViolation,
50
+ });
51
+ exports.NotificationContext.displayName = "NotificationContext";
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm90aWZpY2F0aW9uQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBaUIvQjs7R0FFRztBQUNILE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0lBQWdJLENBQ2pJLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FDcEQ7SUFDRSxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsZ0JBQWdCLEVBQUUsa0JBQWtCO0NBQ3JDLENBQ0YsQ0FBQztBQUNGLDJCQUFtQixDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyJ9
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Notification Provider Props
4
+ */
5
+ export interface NotificationProviderProps {
6
+ styleState: any;
7
+ /**
8
+ * Subtree that will receive Notification context
9
+ */
10
+ children: React.ReactNode;
11
+ }
12
+ /**
13
+ * Notification Provider
14
+ *
15
+ * Provides Notification context and renders NotificationRoot.
16
+ */
17
+ export declare const NotificationProvider: ({ styleState, children, }: NotificationProviderProps) => React.JSX.Element;