flash-notifications 0.0.38 → 0.0.40

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 (36) hide show
  1. package/README.md +66 -1
  2. package/build/container/index.d.ts +12 -0
  3. package/build/container/index.d.ts.map +1 -1
  4. package/build/container/index.js +50 -8
  5. package/build/container/notification.d.ts.map +1 -1
  6. package/build/container/notification.js +5 -2
  7. package/build/flash-notifications.d.ts +2 -2
  8. package/build/flash-notifications.d.ts.map +1 -1
  9. package/build/flash-notifications.js +11 -4
  10. package/build/listener.d.ts.map +1 -1
  11. package/package.json +17 -10
  12. package/.eslintrc.js +0 -12
  13. package/AGENTS.md +0 -3
  14. package/CHANGELOG.md +0 -10
  15. package/android/build.gradle +0 -43
  16. package/android/src/main/AndroidManifest.xml +0 -2
  17. package/android/src/main/java/expo/modules/flashnotifications/FlashNotificationsModule.kt +0 -50
  18. package/android/src/main/java/expo/modules/flashnotifications/FlashNotificationsView.kt +0 -30
  19. package/expo-module.config.json +0 -17
  20. package/ios/FlashNotifications.podspec +0 -29
  21. package/ios/FlashNotificationsModule.swift +0 -48
  22. package/ios/FlashNotificationsView.swift +0 -38
  23. package/peak_flow.yml +0 -5
  24. package/scripts/velocious-test.js +0 -186
  25. package/spec/flash-notifications-spec.js +0 -46
  26. package/spec/support/dummy-http-server.js +0 -52
  27. package/spec/support/system-test-helper.js +0 -99
  28. package/src/configuration.js +0 -10
  29. package/src/container/index.jsx +0 -214
  30. package/src/container/notification.jsx +0 -130
  31. package/src/debug.js +0 -13
  32. package/src/events.js +0 -7
  33. package/src/flash-notifications.js +0 -99
  34. package/src/index.js +0 -15
  35. package/src/listener.js +0 -56
  36. package/tsconfig.json +0 -15
package/README.md CHANGED
@@ -12,7 +12,7 @@ For managed Expo projects, ensure your Expo SDK supports this module and follow
12
12
 
13
13
  ## Setup
14
14
 
15
- Render the notification container once near the root of your app.
15
+ Render the notification container once near the root of your app so it can listen for events globally.
16
16
 
17
17
  ```jsx
18
18
  import React from "react"
@@ -34,6 +34,17 @@ export default function App() {
34
34
  }
35
35
  ```
36
36
 
37
+ If you are not using safe-area insets, render the container directly:
38
+
39
+ ```jsx
40
+ import React from "react"
41
+ import {Container} from "flash-notifications"
42
+
43
+ export default function App() {
44
+ return <Container />
45
+ }
46
+ ```
47
+
37
48
  ## Usage
38
49
 
39
50
  Trigger notifications anywhere in your app with the static helpers.
@@ -54,6 +65,49 @@ import {FlashNotifications} from "flash-notifications"
54
65
  FlashNotifications.show({type: "info", text: "Heads up!"})
55
66
  ```
56
67
 
68
+ ## API
69
+
70
+ ### FlashNotifications
71
+
72
+ `FlashNotifications.alert(message)`
73
+ Shows an alert notification with a localized "Alert" title.
74
+
75
+ `FlashNotifications.error(message)`
76
+ Shows an error notification with a localized "Error" title.
77
+
78
+ `FlashNotifications.success(message)`
79
+ Shows a success notification with a localized "Success" title.
80
+
81
+ `FlashNotifications.show({type, text})`
82
+ Shows a notification with a localized title based on `type`. Unknown types fall back to the localized "Notification" title.
83
+
84
+ `FlashNotifications.errorResponse(error)`
85
+ Handles Api Maker validation and base errors, converting them into notifications. Unknown errors are logged and rethrown.
86
+
87
+ Notifications auto-dismiss after 4 seconds and can be dismissed immediately by pressing them.
88
+
89
+ ### Container
90
+
91
+ `<Container insets={insets} />`
92
+ Optional `insets` should be an object with `top`, `right`, and `left` values (for example, from `react-native-safe-area-context`). The container positions itself near the top-right on larger screens and spans the width on small screens.
93
+
94
+ ## Configuration
95
+
96
+ `configuration.debug`
97
+ When `true`, logs lifecycle events such as add/remove, timeout, measurement, and animation events.
98
+
99
+ `configuration.translate(msgId, {defaultValue})`
100
+ Controls localized titles for built-in types. The default implementation returns `defaultValue` or `msgId`.
101
+
102
+ You can override configuration by mutating the exported object or setting a global before imports:
103
+
104
+ ```js
105
+ globalThis.flashNotificationsConfiguration = {
106
+ debug: false,
107
+ translate: (msgId, args) => args?.defaultValue || msgId
108
+ }
109
+ ```
110
+
57
111
  ## Debug mode
58
112
 
59
113
  Enable debug logging by setting the configuration flag at startup.
@@ -73,5 +127,16 @@ When enabled, the library logs lifecycle events such as notification creation, p
73
127
 
74
128
  ## Contributing
75
129
 
130
+ If you need to refresh Expo module generated files locally, run `npm run prepare:module`. Regular `npm install` no longer runs that step automatically.
131
+
132
+ Before opening or updating a PR, run:
133
+
134
+ ```sh
135
+ npm run lint
136
+ npm run typecheck
137
+ ```
138
+
139
+ The repo's flat ESLint config relies on `react/jsx-uses-vars` so React Native JSX imports are treated as used. If JSX imports such as `View` or `Pressable` start failing `no-unused-vars`, fix the ESLint config rather than rewriting the component render tree.
140
+
76
141
  Contributions are welcome. Please refer to the Expo contributing guide:
77
142
  https://github.com/expo/expo#contributing
@@ -6,5 +6,17 @@ export type NotificationObjectType = {
6
6
  title: string;
7
7
  type: string;
8
8
  };
9
+ export type StoredNotificationType = {
10
+ count: number;
11
+ height: import("react-native").Animated.Value;
12
+ marginBottom: import("react-native").Animated.Value;
13
+ measuredHeight: number | undefined;
14
+ message: string;
15
+ opacity: import("react-native").Animated.Value;
16
+ removing: boolean;
17
+ timeout: ReturnType<typeof setTimeout>;
18
+ title: string;
19
+ type: string;
20
+ };
9
21
  import React from "react";
10
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/src/","sources":["container/index.jsx"],"names":[],"mappings":";;;WAkBc,MAAM;aACN,MAAM;WACN,MAAM;UACN,MAAM;;kBAhB0B,OAAO"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/src/","sources":["container/index.jsx"],"names":[],"mappings":";;;WAoBc,MAAM;aACN,MAAM;WACN,MAAM;UACN,MAAM;;;WAKN,MAAM;YACN,OAAO,cAAc,EAAE,QAAQ,CAAC,KAAK;kBACrC,OAAO,cAAc,EAAE,QAAQ,CAAC,KAAK;oBACrC,MAAM,GAAG,SAAS;aAClB,MAAM;aACN,OAAO,cAAc,EAAE,QAAQ,CAAC,KAAK;cACrC,OAAO;aACP,UAAU,CAAC,OAAO,UAAU,CAAC;WAC7B,MAAM;UACN,MAAM;;kBA/B0B,OAAO"}
@@ -1,16 +1,18 @@
1
1
  // @ts-check
2
2
  import { digg } from "diggerize";
3
3
  import PropTypes from "prop-types";
4
+ // @ts-expect-error Package ships no .d.ts files.
4
5
  import propTypesExact from "prop-types-exact";
5
6
  import React, { memo, useEffect, useMemo } from "react";
6
7
  import { shapeComponent, ShapeComponent } from "set-state-compare/build/shape-component.js";
7
- import useBreakpoint from "@kaspernj/api-maker/build/use-breakpoint.js";
8
- import useEventEmitter from "@kaspernj/api-maker/build/use-event-emitter.js";
8
+ import { useBreakpoint } from "responsive-breakpoints";
9
+ // @ts-expect-error No published types for this package.
10
+ import useEventEmitter from "ya-use-event-emitter";
9
11
  import useEnvSense from "env-sense/build/use-env-sense.js";
10
12
  import { Animated, View } from "react-native";
11
13
  import debugLog from "../debug.js";
12
14
  import events from "../events.js";
13
- import Notification from "./notification";
15
+ import FlashNotification from "./notification";
14
16
  /**
15
17
  * @typedef {object} NotificationObjectType
16
18
  * @property {number} count
@@ -18,6 +20,19 @@ import Notification from "./notification";
18
20
  * @property {string} title
19
21
  * @property {string} type
20
22
  */
23
+ /**
24
+ * @typedef {object} StoredNotificationType
25
+ * @property {number} count
26
+ * @property {import("react-native").Animated.Value} height
27
+ * @property {import("react-native").Animated.Value} marginBottom
28
+ * @property {number | undefined} measuredHeight
29
+ * @property {string} message
30
+ * @property {import("react-native").Animated.Value} opacity
31
+ * @property {boolean} removing
32
+ * @property {ReturnType<typeof setTimeout>} timeout
33
+ * @property {string} title
34
+ * @property {string} type
35
+ */
21
36
  export default memo(shapeComponent(class FlashNotificationsContainer extends ShapeComponent {
22
37
  static propTypes = propTypesExact({
23
38
  insets: PropTypes.object
@@ -28,6 +43,7 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
28
43
  setup() {
29
44
  this.useStates({
30
45
  count: 0,
46
+ /** @type {StoredNotificationType[]} */
31
47
  notifications: []
32
48
  });
33
49
  useEventEmitter(events, "pushNotification", this.onPushNotification);
@@ -75,8 +91,10 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
75
91
  , {
76
92
  // @ts-expect-error
77
93
  dataSet: this.rootViewDataSet ||= { component: "flash-notifications-container" },
78
- // @ts-expect-error
79
- style: viewStyle, testID: "flash-notificaitons/container" }, notifications.map((notification) => React.createElement(Notification, { count: notification.count, key: `notification-${notification.count}`, message: notification.message, notification: notification, onMeasured: this.onNotificationMeasured, onRemovedClicked: this.onRemovedClicked, title: notification.title, type: notification.type }))));
94
+ // @ts-expect-error React Native types do not include the web-only "fixed" position.
95
+ style: viewStyle, testID: "flash-notificaitons/container" }, notifications.map(
96
+ /** @param {StoredNotificationType} notification */
97
+ (notification) => React.createElement(FlashNotification, { count: notification.count, key: `notification-${notification.count}`, message: notification.message, notification: notification, onMeasured: this.onNotificationMeasured, onRemovedClicked: this.onRemovedClicked, title: notification.title, type: notification.type }))));
80
98
  }
81
99
  /**
82
100
  * @param {NotificationObjectType} detail
@@ -89,6 +107,7 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
89
107
  this.dismissNotificationByCount(count, "timeout");
90
108
  }, 4000);
91
109
  this.timeouts.push(timeout);
110
+ /** @type {StoredNotificationType} */
92
111
  const notification = {
93
112
  count,
94
113
  height: new Animated.Value(0),
@@ -108,10 +127,19 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
108
127
  });
109
128
  this.setState({ count, notifications: this.s.notifications.concat([notification]) });
110
129
  };
130
+ /**
131
+ * @param {StoredNotificationType} notification
132
+ * @returns {void}
133
+ */
111
134
  onRemovedClicked = (notification) => {
112
135
  debugLog("FlashNotifications: notification pressed", { id: notification.count });
113
136
  this.dismissNotification(notification, "press");
114
137
  };
138
+ /**
139
+ * @param {StoredNotificationType} notification
140
+ * @param {number} measuredHeight
141
+ * @returns {void}
142
+ */
115
143
  onNotificationMeasured = (notification, measuredHeight) => {
116
144
  if (notification.measuredHeight)
117
145
  return;
@@ -120,14 +148,26 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
120
148
  notification.height.setValue(measuredHeight);
121
149
  this.setState({ notifications: [...this.s.notifications] });
122
150
  };
151
+ /**
152
+ * @param {number} count
153
+ * @param {string} [reason]
154
+ * @returns {void}
155
+ */
123
156
  dismissNotificationByCount = (count, reason = "unknown") => {
124
- const notification = this.s.notifications.find((item) => item.count == count);
157
+ const notification = /** @type {StoredNotificationType | undefined} */ (this.s.notifications.find(
158
+ /** @param {StoredNotificationType} item */
159
+ (item) => item.count == count));
125
160
  if (!notification) {
126
161
  debugLog("FlashNotifications: notification not found", { id: count, reason });
127
162
  return;
128
163
  }
129
164
  this.dismissNotification(notification, reason);
130
165
  };
166
+ /**
167
+ * @param {StoredNotificationType} notification
168
+ * @param {string} [reason]
169
+ * @returns {void}
170
+ */
131
171
  dismissNotification = (notification, reason = "unknown") => {
132
172
  if (notification.removing) {
133
173
  debugLog("FlashNotifications: notification already removing", { id: notification.count, reason });
@@ -161,10 +201,12 @@ export default memo(shapeComponent(class FlashNotificationsContainer extends Sha
161
201
  });
162
202
  debugLog("FlashNotifications: fade animation end", { id: notification.count, reason });
163
203
  this.setState({
164
- notifications: this.s.notifications.filter((item) => item.count != notification.count)
204
+ notifications: this.s.notifications.filter(
205
+ /** @param {StoredNotificationType} item */
206
+ (item) => item.count != notification.count)
165
207
  });
166
208
  debugLog("FlashNotifications: notification removed", { id: notification.count, reason });
167
209
  });
168
210
  };
169
211
  }));
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRhaW5lci9pbmRleC5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLGFBQWEsTUFBTSw2Q0FBNkMsQ0FBQTtBQUN2RSxPQUFPLGVBQWUsTUFBTSxnREFBZ0QsQ0FBQTtBQUM1RSxPQUFPLFdBQVcsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUUzQyxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8sWUFBWSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDOzs7Ozs7R0FNRztBQUVILGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLDJCQUE0QixTQUFRLGNBQWM7SUFDekYsTUFBTSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNO0tBQ3pCLENBQUMsQ0FBQTtJQUVGLHVCQUF1QjtJQUN2QixRQUFRLEdBQUcsRUFBRSxDQUFBO0lBQ2IsbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0lBRXhCLEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFDLENBQUE7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RUYsUUFBUSxDQUFDLDBDQUEwQyxFQUFFLEVBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUN4RixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QsIHttZW1vLCB1c2VFZmZlY3QsIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgdXNlQnJlYWtwb2ludCBmcm9tIFwiQGthc3Blcm5qL2FwaS1tYWtlci9idWlsZC91c2UtYnJlYWtwb2ludC5qc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL3VzZS1ldmVudC1lbWl0dGVyLmpzXCJcbmltcG9ydCB1c2VFbnZTZW5zZSBmcm9tIFwiZW52LXNlbnNlL2J1aWxkL3VzZS1lbnYtc2Vuc2UuanNcIlxuaW1wb3J0IHtBbmltYXRlZCwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5cbmltcG9ydCBkZWJ1Z0xvZyBmcm9tIFwiLi4vZGVidWcuanNcIlxuaW1wb3J0IGV2ZW50cyBmcm9tIFwiLi4vZXZlbnRzLmpzXCJcbmltcG9ydCBOb3RpZmljYXRpb24gZnJvbSBcIi4vbm90aWZpY2F0aW9uXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBOb3RpZmljYXRpb25PYmplY3RUeXBlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY291bnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGl0bGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0eXBlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBGbGFzaE5vdGlmaWNhdGlvbnNDb250YWluZXIgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgaW5zZXRzOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pXG5cbiAgLyoqIEB0eXBlIHtudW1iZXJbXX0gKi9cbiAgdGltZW91dHMgPSBbXVxuICBub3RpZmljYXRpb25TcGFjaW5nID0gMTVcblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjb3VudDogMCxcbiAgICAgIG5vdGlmaWNhdGlvbnM6IFtdXG4gICAgfSlcblxuICAgIHVzZUV2ZW50RW1pdHRlcihldmVudHMsIFwicHVzaE5vdGlmaWNhdGlvblwiLCB0aGlzLm9uUHVzaE5vdGlmaWNhdGlvbilcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB0aW1lb3V0IG9mIHRoaXMudGltZW91dHMpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtub3RpZmljYXRpb25zfSA9IHRoaXMuc1xuICAgIGNvbnN0IGluc2V0cyA9IHRoaXMucHJvcHMuaW5zZXRzIHx8IHt9XG5cbiAgICBjb25zdCB7c21Eb3duLCBtZFVwfSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IHtpc05hdGl2ZX0gPSB1c2VFbnZTZW5zZSgpXG5cbiAgICBjb25zdCB2aWV3U3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGxldCB0b3AgPSAyMFxuICAgICAgbGV0IHJpZ2h0ID0gMFxuICAgICAgbGV0IGxlZnQgPSB1bmRlZmluZWRcblxuICAgICAgaWYgKGluc2V0cy50b3ApIHRvcCArPSBpbnNldHMudG9wXG4gICAgICBpZiAoaW5zZXRzLnJpZ2h0KSByaWdodCArPSBpbnNldHMucmlnaHRcblxuICAgICAgaWYgKHNtRG93bikge1xuICAgICAgICBsZWZ0ID0gMjBcblxuICAgICAgICBpZiAoaW5zZXRzLmxlZnQpIGxlZnQgKz0gaW5zZXRzLmxlZnRcblxuICAgICAgICByaWdodCArPSAyMFxuICAgICAgfSBlbHNlIGlmIChtZFVwKSB7XG4gICAgICAgIHJpZ2h0ICs9IDIwXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgICBwb3NpdGlvbjogaXNOYXRpdmUgPyBcImFic29sdXRlXCIgOiBcImZpeGVkXCIsXG4gICAgICAgIHRvcCxcbiAgICAgICAgcmlnaHQsXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHpJbmRleDogOTk5OTlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlXG4gICAgfSwgW2lzTmF0aXZlLCBzbURvd24sIG1kVXAsIGluc2V0cy50b3AsIGluc2V0cy5yaWdodCwgaW5zZXRzLmxlZnRdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgZGF0YVNldD17dGhpcy5yb290Vmlld0RhdGFTZXQgfHw9IHtjb21wb25lbnQ6IFwiZmxhc2gtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIn19XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgc3R5bGU9e3ZpZXdTdHlsZX1cbiAgICAgICAgdGVzdElEPVwiZmxhc2gtbm90aWZpY2FpdG9ucy9jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICB7bm90aWZpY2F0aW9ucy5tYXAoKG5vdGlmaWNhdGlvbikgPT5cbiAgICAgICAgICA8Tm90aWZpY2F0aW9uXG4gICAgICAgICAgICBjb3VudD17bm90aWZpY2F0aW9uLmNvdW50fVxuICAgICAgICAgICAga2V5PXtgbm90aWZpY2F0aW9uLSR7bm90aWZpY2F0aW9uLmNvdW50fWB9XG4gICAgICAgICAgICBtZXNzYWdlPXtub3RpZmljYXRpb24ubWVzc2FnZX1cbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbj17bm90aWZpY2F0aW9ufVxuICAgICAgICAgICAgb25NZWFzdXJlZD17dGhpcy5vbk5vdGlmaWNhdGlvbk1lYXN1cmVkfVxuICAgICAgICAgICAgb25SZW1vdmVkQ2xpY2tlZD17dGhpcy5vblJlbW92ZWRDbGlja2VkfVxuICAgICAgICAgICAgdGl0bGU9e25vdGlmaWNhdGlvbi50aXRsZX1cbiAgICAgICAgICAgIHR5cGU9e25vdGlmaWNhdGlvbi50eXBlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uT2JqZWN0VHlwZX0gZGV0YWlsXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25QdXNoTm90aWZpY2F0aW9uID0gKGRldGFpbCkgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5zLmNvdW50ICsgMVxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gdGltZW91dFwiLCB7aWQ6IGNvdW50fSlcbiAgICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbkJ5Q291bnQoY291bnQsIFwidGltZW91dFwiKVxuICAgIH0sIDQwMDApXG5cbiAgICB0aGlzLnRpbWVvdXRzLnB1c2godGltZW91dClcblxuICAgIGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICAgIGNvdW50LFxuICAgICAgaGVpZ2h0OiBuZXcgQW5pbWF0ZWQuVmFsdWUoMCksXG4gICAgICBtYXJnaW5Cb3R0b206IG5ldyBBbmltYXRlZC5WYWx1ZSh0aGlzLm5vdGlmaWNhdGlvblNwYWNpbmcpLFxuICAgICAgbWVhc3VyZWRIZWlnaHQ6IHVuZGVmaW5lZCxcbiAgICAgIG1lc3NhZ2U6IGRpZ2coZGV0YWlsLCBcIm1lc3NhZ2VcIiksXG4gICAgICBvcGFjaXR5OiBuZXcgQW5pbWF0ZWQuVmFsdWUoMSksXG4gICAgICByZW1vdmluZzogZmFsc2UsXG4gICAgICB0aW1lb3V0LFxuICAgICAgdGl0bGU6IGRpZ2coZGV0YWlsLCBcInRpdGxlXCIpLFxuICAgICAgdHlwZTogZGlnZyhkZXRhaWwsIFwidHlwZVwiKVxuICAgIH1cblxuICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gYWRkZWRcIiwge1xuICAgICAgaWQ6IGNvdW50LFxuICAgICAgdGl0bGU6IG5vdGlmaWNhdGlvbi50aXRsZSxcbiAgICAgIHR5cGU6IG5vdGlmaWNhdGlvbi50eXBlXG4gICAgfSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe2NvdW50LCBub3RpZmljYXRpb25zOiB0aGlzLnMubm90aWZpY2F0aW9ucy5jb25jYXQoW25vdGlmaWNhdGlvbl0pfSlcbiAgfVxuXG4gIG9uUmVtb3ZlZENsaWNrZWQgPSAobm90aWZpY2F0aW9uKSA9PiB7XG4gICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IG5vdGlmaWNhdGlvbiBwcmVzc2VkXCIsIHtpZDogbm90aWZpY2F0aW9uLmNvdW50fSlcbiAgICB0aGlzLmRpc21pc3NOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBcInByZXNzXCIpXG4gIH1cblxuICBvbk5vdGlmaWNhdGlvbk1lYXN1cmVkID0gKG5vdGlmaWNhdGlvbiwgbWVhc3VyZWRIZWlnaHQpID0+IHtcbiAgICBpZiAobm90aWZpY2F0aW9uLm1lYXN1cmVkSGVpZ2h0KSByZXR1cm5cblxuICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gbWVhc3VyZWRcIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIGhlaWdodDogbWVhc3VyZWRIZWlnaHR9KVxuXG4gICAgbm90aWZpY2F0aW9uLm1lYXN1cmVkSGVpZ2h0ID0gbWVhc3VyZWRIZWlnaHRcbiAgICBub3RpZmljYXRpb24uaGVpZ2h0LnNldFZhbHVlKG1lYXN1cmVkSGVpZ2h0KVxuICAgIHRoaXMuc2V0U3RhdGUoe25vdGlmaWNhdGlvbnM6IFsuLi50aGlzLnMubm90aWZpY2F0aW9uc119KVxuICB9XG5cbiAgZGlzbWlzc05vdGlmaWNhdGlvbkJ5Q291bnQgPSAoY291bnQsIHJlYXNvbiA9IFwidW5rbm93blwiKSA9PiB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gdGhpcy5zLm5vdGlmaWNhdGlvbnMuZmluZCgoaXRlbSkgPT4gaXRlbS5jb3VudCA9PSBjb3VudClcbiAgICBpZiAoIW5vdGlmaWNhdGlvbikge1xuICAgICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IG5vdGlmaWNhdGlvbiBub3QgZm91bmRcIiwge2lkOiBjb3VudCwgcmVhc29ufSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHJlYXNvbilcbiAgfVxuXG4gIGRpc21pc3NOb3RpZmljYXRpb24gPSAobm90aWZpY2F0aW9uLCByZWFzb24gPSBcInVua25vd25cIikgPT4ge1xuICAgIGlmIChub3RpZmljYXRpb24ucmVtb3ZpbmcpIHtcbiAgICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gYWxyZWFkeSByZW1vdmluZ1wiLCB7aWQ6IG5vdGlmaWNhdGlvbi5jb3VudCwgcmVhc29ufSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIG5vdGlmaWNhdGlvbi5yZW1vdmluZyA9IHRydWVcbiAgICBpZiAobm90aWZpY2F0aW9uLnRpbWVvdXQpIGNsZWFyVGltZW91dChub3RpZmljYXRpb24udGltZW91dClcblxuICAgIGlmICghbm90aWZpY2F0aW9uLm1lYXN1cmVkSGVpZ2h0KSB7XG4gICAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uIG1pc3NpbmcgbWVhc3VyZWQgaGVpZ2h0XCIsIHtpZDogbm90aWZpY2F0aW9uLmNvdW50fSlcbiAgICAgIG5vdGlmaWNhdGlvbi5tZWFzdXJlZEhlaWdodCA9IDFcbiAgICAgIG5vdGlmaWNhdGlvbi5oZWlnaHQuc2V0VmFsdWUoMSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe25vdGlmaWNhdGlvbnM6IFsuLi50aGlzLnMubm90aWZpY2F0aW9uc119KVxuICAgIH1cblxuICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBhbmltYXRpb25zIGJlZ2luXCIsIHtcbiAgICAgIGlkOiBub3RpZmljYXRpb24uY291bnQsXG4gICAgICBhbmltYXRpb25zOiBbXCJvcGFjaXR5XCIsIFwiaGVpZ2h0XCIsIFwibWFyZ2luQm90dG9tXCJdLFxuICAgICAgcmVhc29uXG4gICAgfSlcbiAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogZmFkZSBhbmltYXRpb24gYmVnaW5cIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIHJlYXNvbn0pXG5cbiAgICBjb25zdCBkaXNtaXNzRHVyYXRpb24gPSByZWFzb24gPT09IFwicHJlc3NcIiA/IDgwIDogMjAwXG5cbiAgICBBbmltYXRlZC5wYXJhbGxlbChbXG4gICAgICBBbmltYXRlZC50aW1pbmcobm90aWZpY2F0aW9uLm9wYWNpdHksIHt0b1ZhbHVlOiAwLCBkdXJhdGlvbjogZGlzbWlzc0R1cmF0aW9uLCB1c2VOYXRpdmVEcml2ZXI6IGZhbHNlfSksXG4gICAgICBBbmltYXRlZC50aW1pbmcobm90aWZpY2F0aW9uLmhlaWdodCwge3RvVmFsdWU6IDAsIGR1cmF0aW9uOiBkaXNtaXNzRHVyYXRpb24sIHVzZU5hdGl2ZURyaXZlcjogZmFsc2V9KSxcbiAgICAgIEFuaW1hdGVkLnRpbWluZyhub3RpZmljYXRpb24ubWFyZ2luQm90dG9tLCB7dG9WYWx1ZTogMCwgZHVyYXRpb246IGRpc21pc3NEdXJhdGlvbiwgdXNlTmF0aXZlRHJpdmVyOiBmYWxzZX0pXG4gICAgXSkuc3RhcnQoKCkgPT4ge1xuICAgICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IGFuaW1hdGlvbnMgZW5kXCIsIHtcbiAgICAgICAgaWQ6IG5vdGlmaWNhdGlvbi5jb3VudCxcbiAgICAgICAgYW5pbWF0aW9uczogW1wib3BhY2l0eVwiLCBcImhlaWdodFwiLCBcIm1hcmdpbkJvdHRvbVwiXSxcbiAgICAgICAgcmVhc29uXG4gICAgICB9KVxuICAgICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IGZhZGUgYW5pbWF0aW9uIGVuZFwiLCB7aWQ6IG5vdGlmaWNhdGlvbi5jb3VudCwgcmVhc29ufSlcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIG5vdGlmaWNhdGlvbnM6IHRoaXMucy5ub3RpZmljYXRpb25zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5jb3VudCAhPSBub3RpZmljYXRpb24uY291bnQpXG4gICAgICB9KVxuXG4gICAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uIHJlbW92ZWRcIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIHJlYXNvbn0pXG4gICAgfSlcbiAgfVxufSkpXG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbnRhaW5lci9pbmRleC5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLGlEQUFpRDtBQUNqRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssRUFBRSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELHdEQUF3RDtBQUN4RCxPQUFPLGVBQWUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNsRCxPQUFPLFdBQVcsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMxRCxPQUFPLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUUzQyxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyxNQUFNLE1BQU0sY0FBYyxDQUFBO0FBQ2pDLE9BQU8saUJBQWlCLE1BQU0sZ0JBQWdCLENBQUE7QUFFOUM7Ozs7OztHQU1HO0FBRUg7Ozs7Ozs7Ozs7OztHQVlHO0FBRUgsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sMkJBQTRCLFNBQVEsY0FBYztJQUN6RixNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07S0FDekIsQ0FBQyxDQUFBO0lBRUYsdUJBQXVCO0lBQ3ZCLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFDYixtQkFBbUIsR0FBRyxFQUFFLENBQUE7SUFFeEIsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLENB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QUFFLE1BQU0sRUFBQyxDQUFDLENBQUE7WUFFcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDWixhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTTtnQkFDeEMsMkNBQTJDO2dCQUMzQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsS0FBSyxDQUMzQzthQUNGLENBQUMsQ0FBQTtZQUVGLFFBQVEsQ0FBQywwQ0FBMEMsRUFBRSxFQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUE7UUFDeEYsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG4vLyBAdHMtZXhwZWN0LWVycm9yIFBhY2thZ2Ugc2hpcHMgbm8gLmQudHMgZmlsZXMuXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0LCB7bWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IHt1c2VCcmVha3BvaW50fSBmcm9tIFwicmVzcG9uc2l2ZS1icmVha3BvaW50c1wiXG4vLyBAdHMtZXhwZWN0LWVycm9yIE5vIHB1Ymxpc2hlZCB0eXBlcyBmb3IgdGhpcyBwYWNrYWdlLlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuaW1wb3J0IHVzZUVudlNlbnNlIGZyb20gXCJlbnYtc2Vuc2UvYnVpbGQvdXNlLWVudi1zZW5zZS5qc1wiXG5pbXBvcnQge0FuaW1hdGVkLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcblxuaW1wb3J0IGRlYnVnTG9nIGZyb20gXCIuLi9kZWJ1Zy5qc1wiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuLi9ldmVudHMuanNcIlxuaW1wb3J0IEZsYXNoTm90aWZpY2F0aW9uIGZyb20gXCIuL25vdGlmaWNhdGlvblwiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gTm90aWZpY2F0aW9uT2JqZWN0VHlwZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvdW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWVzc2FnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRpdGxlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RvcmVkTm90aWZpY2F0aW9uVHlwZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvdW50XG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZX0gaGVpZ2h0XG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZX0gbWFyZ2luQm90dG9tXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gbWVhc3VyZWRIZWlnaHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZX0gb3BhY2l0eVxuICogQHByb3BlcnR5IHtib29sZWFufSByZW1vdmluZ1xuICogQHByb3BlcnR5IHtSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0Pn0gdGltZW91dFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRpdGxlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgRmxhc2hOb3RpZmljYXRpb25zQ29udGFpbmVyIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGluc2V0czogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIC8qKiBAdHlwZSB7bnVtYmVyW119ICovXG4gIHRpbWVvdXRzID0gW11cbiAgbm90aWZpY2F0aW9uU3BhY2luZyA9IDE1XG5cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy51c2VTdGF0ZXMoe1xuICAgICAgY291bnQ6IDAsXG4gICAgICAvKiogQHR5cGUge1N0b3JlZE5vdGlmaWNhdGlvblR5cGVbXX0gKi9cbiAgICAgIG5vdGlmaWNhdGlvbnM6IFtdXG4gICAgfSlcblxuICAgIHVzZUV2ZW50RW1pdHRlcihldmVudHMsIFwicHVzaE5vdGlmaWNhdGlvblwiLCB0aGlzLm9uUHVzaE5vdGlmaWNhdGlvbilcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB0aW1lb3V0IG9mIHRoaXMudGltZW91dHMpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtub3RpZmljYXRpb25zfSA9IHRoaXMuc1xuICAgIGNvbnN0IGluc2V0cyA9IHRoaXMucHJvcHMuaW5zZXRzIHx8IHt9XG5cbiAgICBjb25zdCB7c21Eb3duLCBtZFVwfSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IHtpc05hdGl2ZX0gPSB1c2VFbnZTZW5zZSgpXG5cbiAgICBjb25zdCB2aWV3U3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGxldCB0b3AgPSAyMFxuICAgICAgbGV0IHJpZ2h0ID0gMFxuICAgICAgbGV0IGxlZnQgPSB1bmRlZmluZWRcblxuICAgICAgaWYgKGluc2V0cy50b3ApIHRvcCArPSBpbnNldHMudG9wXG4gICAgICBpZiAoaW5zZXRzLnJpZ2h0KSByaWdodCArPSBpbnNldHMucmlnaHRcblxuICAgICAgaWYgKHNtRG93bikge1xuICAgICAgICBsZWZ0ID0gMjBcblxuICAgICAgICBpZiAoaW5zZXRzLmxlZnQpIGxlZnQgKz0gaW5zZXRzLmxlZnRcblxuICAgICAgICByaWdodCArPSAyMFxuICAgICAgfSBlbHNlIGlmIChtZFVwKSB7XG4gICAgICAgIHJpZ2h0ICs9IDIwXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgICBwb3NpdGlvbjogaXNOYXRpdmUgPyBcImFic29sdXRlXCIgOiBcImZpeGVkXCIsXG4gICAgICAgIHRvcCxcbiAgICAgICAgcmlnaHQsXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHpJbmRleDogOTk5OTlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN0eWxlXG4gICAgfSwgW2lzTmF0aXZlLCBzbURvd24sIG1kVXAsIGluc2V0cy50b3AsIGluc2V0cy5yaWdodCwgaW5zZXRzLmxlZnRdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgZGF0YVNldD17dGhpcy5yb290Vmlld0RhdGFTZXQgfHw9IHtjb21wb25lbnQ6IFwiZmxhc2gtbm90aWZpY2F0aW9ucy1jb250YWluZXJcIn19XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUmVhY3QgTmF0aXZlIHR5cGVzIGRvIG5vdCBpbmNsdWRlIHRoZSB3ZWItb25seSBcImZpeGVkXCIgcG9zaXRpb24uXG4gICAgICAgIHN0eWxlPXt2aWV3U3R5bGV9XG4gICAgICAgIHRlc3RJRD1cImZsYXNoLW5vdGlmaWNhaXRvbnMvY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAge25vdGlmaWNhdGlvbnMubWFwKFxuICAgICAgICAgIC8qKiBAcGFyYW0ge1N0b3JlZE5vdGlmaWNhdGlvblR5cGV9IG5vdGlmaWNhdGlvbiAqL1xuICAgICAgICAgIChub3RpZmljYXRpb24pID0+XG4gICAgICAgICAgPEZsYXNoTm90aWZpY2F0aW9uXG4gICAgICAgICAgICBjb3VudD17bm90aWZpY2F0aW9uLmNvdW50fVxuICAgICAgICAgICAga2V5PXtgbm90aWZpY2F0aW9uLSR7bm90aWZpY2F0aW9uLmNvdW50fWB9XG4gICAgICAgICAgICBtZXNzYWdlPXtub3RpZmljYXRpb24ubWVzc2FnZX1cbiAgICAgICAgICAgIG5vdGlmaWNhdGlvbj17bm90aWZpY2F0aW9ufVxuICAgICAgICAgICAgb25NZWFzdXJlZD17dGhpcy5vbk5vdGlmaWNhdGlvbk1lYXN1cmVkfVxuICAgICAgICAgICAgb25SZW1vdmVkQ2xpY2tlZD17dGhpcy5vblJlbW92ZWRDbGlja2VkfVxuICAgICAgICAgICAgdGl0bGU9e25vdGlmaWNhdGlvbi50aXRsZX1cbiAgICAgICAgICAgIHR5cGU9e25vdGlmaWNhdGlvbi50eXBlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm90aWZpY2F0aW9uT2JqZWN0VHlwZX0gZGV0YWlsXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgb25QdXNoTm90aWZpY2F0aW9uID0gKGRldGFpbCkgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5zLmNvdW50ICsgMVxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gdGltZW91dFwiLCB7aWQ6IGNvdW50fSlcbiAgICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbkJ5Q291bnQoY291bnQsIFwidGltZW91dFwiKVxuICAgIH0sIDQwMDApXG5cbiAgICB0aGlzLnRpbWVvdXRzLnB1c2godGltZW91dClcblxuICAgIC8qKiBAdHlwZSB7U3RvcmVkTm90aWZpY2F0aW9uVHlwZX0gKi9cbiAgICBjb25zdCBub3RpZmljYXRpb24gPSB7XG4gICAgICBjb3VudCxcbiAgICAgIGhlaWdodDogbmV3IEFuaW1hdGVkLlZhbHVlKDApLFxuICAgICAgbWFyZ2luQm90dG9tOiBuZXcgQW5pbWF0ZWQuVmFsdWUodGhpcy5ub3RpZmljYXRpb25TcGFjaW5nKSxcbiAgICAgIG1lYXN1cmVkSGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlOiBkaWdnKGRldGFpbCwgXCJtZXNzYWdlXCIpLFxuICAgICAgb3BhY2l0eTogbmV3IEFuaW1hdGVkLlZhbHVlKDEpLFxuICAgICAgcmVtb3Zpbmc6IGZhbHNlLFxuICAgICAgdGltZW91dCxcbiAgICAgIHRpdGxlOiBkaWdnKGRldGFpbCwgXCJ0aXRsZVwiKSxcbiAgICAgIHR5cGU6IGRpZ2coZGV0YWlsLCBcInR5cGVcIilcbiAgICB9XG5cbiAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uIGFkZGVkXCIsIHtcbiAgICAgIGlkOiBjb3VudCxcbiAgICAgIHRpdGxlOiBub3RpZmljYXRpb24udGl0bGUsXG4gICAgICB0eXBlOiBub3RpZmljYXRpb24udHlwZVxuICAgIH0pXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjb3VudCwgbm90aWZpY2F0aW9uczogdGhpcy5zLm5vdGlmaWNhdGlvbnMuY29uY2F0KFtub3RpZmljYXRpb25dKX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTdG9yZWROb3RpZmljYXRpb25UeXBlfSBub3RpZmljYXRpb25cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBvblJlbW92ZWRDbGlja2VkID0gKG5vdGlmaWNhdGlvbikgPT4ge1xuICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBub3RpZmljYXRpb24gcHJlc3NlZFwiLCB7aWQ6IG5vdGlmaWNhdGlvbi5jb3VudH0pXG4gICAgdGhpcy5kaXNtaXNzTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgXCJwcmVzc1wiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7U3RvcmVkTm90aWZpY2F0aW9uVHlwZX0gbm90aWZpY2F0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtZWFzdXJlZEhlaWdodFxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9uTm90aWZpY2F0aW9uTWVhc3VyZWQgPSAobm90aWZpY2F0aW9uLCBtZWFzdXJlZEhlaWdodCkgPT4ge1xuICAgIGlmIChub3RpZmljYXRpb24ubWVhc3VyZWRIZWlnaHQpIHJldHVyblxuXG4gICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IG5vdGlmaWNhdGlvbiBtZWFzdXJlZFwiLCB7aWQ6IG5vdGlmaWNhdGlvbi5jb3VudCwgaGVpZ2h0OiBtZWFzdXJlZEhlaWdodH0pXG5cbiAgICBub3RpZmljYXRpb24ubWVhc3VyZWRIZWlnaHQgPSBtZWFzdXJlZEhlaWdodFxuICAgIG5vdGlmaWNhdGlvbi5oZWlnaHQuc2V0VmFsdWUobWVhc3VyZWRIZWlnaHQpXG4gICAgdGhpcy5zZXRTdGF0ZSh7bm90aWZpY2F0aW9uczogWy4uLnRoaXMucy5ub3RpZmljYXRpb25zXX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcmVhc29uXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgKi9cbiAgZGlzbWlzc05vdGlmaWNhdGlvbkJ5Q291bnQgPSAoY291bnQsIHJlYXNvbiA9IFwidW5rbm93blwiKSA9PiB7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uID0gLyoqIEB0eXBlIHtTdG9yZWROb3RpZmljYXRpb25UeXBlIHwgdW5kZWZpbmVkfSAqLyAodGhpcy5zLm5vdGlmaWNhdGlvbnMuZmluZChcbiAgICAgIC8qKiBAcGFyYW0ge1N0b3JlZE5vdGlmaWNhdGlvblR5cGV9IGl0ZW0gKi9cbiAgICAgIChpdGVtKSA9PiBpdGVtLmNvdW50ID09IGNvdW50XG4gICAgKSlcbiAgICBpZiAoIW5vdGlmaWNhdGlvbikge1xuICAgICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IG5vdGlmaWNhdGlvbiBub3QgZm91bmRcIiwge2lkOiBjb3VudCwgcmVhc29ufSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuZGlzbWlzc05vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIHJlYXNvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1N0b3JlZE5vdGlmaWNhdGlvblR5cGV9IG5vdGlmaWNhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlYXNvbl1cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBkaXNtaXNzTm90aWZpY2F0aW9uID0gKG5vdGlmaWNhdGlvbiwgcmVhc29uID0gXCJ1bmtub3duXCIpID0+IHtcbiAgICBpZiAobm90aWZpY2F0aW9uLnJlbW92aW5nKSB7XG4gICAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uIGFscmVhZHkgcmVtb3ZpbmdcIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIHJlYXNvbn0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBub3RpZmljYXRpb24ucmVtb3ZpbmcgPSB0cnVlXG4gICAgaWYgKG5vdGlmaWNhdGlvbi50aW1lb3V0KSBjbGVhclRpbWVvdXQobm90aWZpY2F0aW9uLnRpbWVvdXQpXG5cbiAgICBpZiAoIW5vdGlmaWNhdGlvbi5tZWFzdXJlZEhlaWdodCkge1xuICAgICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IG5vdGlmaWNhdGlvbiBtaXNzaW5nIG1lYXN1cmVkIGhlaWdodFwiLCB7aWQ6IG5vdGlmaWNhdGlvbi5jb3VudH0pXG4gICAgICBub3RpZmljYXRpb24ubWVhc3VyZWRIZWlnaHQgPSAxXG4gICAgICBub3RpZmljYXRpb24uaGVpZ2h0LnNldFZhbHVlKDEpXG4gICAgICB0aGlzLnNldFN0YXRlKHtub3RpZmljYXRpb25zOiBbLi4udGhpcy5zLm5vdGlmaWNhdGlvbnNdfSlcbiAgICB9XG5cbiAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogYW5pbWF0aW9ucyBiZWdpblwiLCB7XG4gICAgICBpZDogbm90aWZpY2F0aW9uLmNvdW50LFxuICAgICAgYW5pbWF0aW9uczogW1wib3BhY2l0eVwiLCBcImhlaWdodFwiLCBcIm1hcmdpbkJvdHRvbVwiXSxcbiAgICAgIHJlYXNvblxuICAgIH0pXG4gICAgZGVidWdMb2coXCJGbGFzaE5vdGlmaWNhdGlvbnM6IGZhZGUgYW5pbWF0aW9uIGJlZ2luXCIsIHtpZDogbm90aWZpY2F0aW9uLmNvdW50LCByZWFzb259KVxuXG4gICAgY29uc3QgZGlzbWlzc0R1cmF0aW9uID0gcmVhc29uID09PSBcInByZXNzXCIgPyA4MCA6IDIwMFxuXG4gICAgQW5pbWF0ZWQucGFyYWxsZWwoW1xuICAgICAgQW5pbWF0ZWQudGltaW5nKG5vdGlmaWNhdGlvbi5vcGFjaXR5LCB7dG9WYWx1ZTogMCwgZHVyYXRpb246IGRpc21pc3NEdXJhdGlvbiwgdXNlTmF0aXZlRHJpdmVyOiBmYWxzZX0pLFxuICAgICAgQW5pbWF0ZWQudGltaW5nKG5vdGlmaWNhdGlvbi5oZWlnaHQsIHt0b1ZhbHVlOiAwLCBkdXJhdGlvbjogZGlzbWlzc0R1cmF0aW9uLCB1c2VOYXRpdmVEcml2ZXI6IGZhbHNlfSksXG4gICAgICBBbmltYXRlZC50aW1pbmcobm90aWZpY2F0aW9uLm1hcmdpbkJvdHRvbSwge3RvVmFsdWU6IDAsIGR1cmF0aW9uOiBkaXNtaXNzRHVyYXRpb24sIHVzZU5hdGl2ZURyaXZlcjogZmFsc2V9KVxuICAgIF0pLnN0YXJ0KCgpID0+IHtcbiAgICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBhbmltYXRpb25zIGVuZFwiLCB7XG4gICAgICAgIGlkOiBub3RpZmljYXRpb24uY291bnQsXG4gICAgICAgIGFuaW1hdGlvbnM6IFtcIm9wYWNpdHlcIiwgXCJoZWlnaHRcIiwgXCJtYXJnaW5Cb3R0b21cIl0sXG4gICAgICAgIHJlYXNvblxuICAgICAgfSlcbiAgICAgIGRlYnVnTG9nKFwiRmxhc2hOb3RpZmljYXRpb25zOiBmYWRlIGFuaW1hdGlvbiBlbmRcIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIHJlYXNvbn0pXG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBub3RpZmljYXRpb25zOiB0aGlzLnMubm90aWZpY2F0aW9ucy5maWx0ZXIoXG4gICAgICAgICAgLyoqIEBwYXJhbSB7U3RvcmVkTm90aWZpY2F0aW9uVHlwZX0gaXRlbSAqL1xuICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNvdW50ICE9IG5vdGlmaWNhdGlvbi5jb3VudFxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgICBkZWJ1Z0xvZyhcIkZsYXNoTm90aWZpY2F0aW9uczogbm90aWZpY2F0aW9uIHJlbW92ZWRcIiwge2lkOiBub3RpZmljYXRpb24uY291bnQsIHJlYXNvbn0pXG4gICAgfSlcbiAgfVxufSkpXG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"/src/","sources":["container/notification.jsx"],"names":[],"mappings":";;kBAEmC,OAAO"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"/src/","sources":["container/notification.jsx"],"names":[],"mappings":";;kBAGmC,OAAO"}
@@ -1,10 +1,13 @@
1
1
  import PropTypes from "prop-types";
2
+ // @ts-expect-error Package ships no .d.ts files.
2
3
  import PropTypesExact from "prop-types-exact";
3
4
  import React, { memo, useMemo } from "react";
4
5
  import { Animated, Pressable, Text, View } from "react-native";
5
6
  import { shapeComponent, ShapeComponent } from "set-state-compare/build/shape-component.js";
6
- import useBreakpoint from "@kaspernj/api-maker/build/use-breakpoint.js";
7
+ import { useBreakpoint } from "responsive-breakpoints";
8
+ /** @type {Record<string, object>} */
7
9
  const dataSets = {};
10
+ /** @type {Record<string, object>} */
8
11
  const styles = {};
9
12
  export default memo(shapeComponent(class FlashNotificationsNotification extends ShapeComponent {
10
13
  static propTypes = PropTypesExact({
@@ -92,4 +95,4 @@ export default memo(shapeComponent(class FlashNotificationsNotification extends
92
95
  }
93
96
  };
94
97
  }));
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjb250YWluZXIvbm90aWZpY2F0aW9uLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLEVBQUUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzFDLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLGFBQWEsTUFBTSw2Q0FBNkMsQ0FBQTtBQUV2RSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7QUFDbkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0FBRWpCLGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLDhCQUErQixTQUFRLGNBQWM7SUFDNUYsTUFBTSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDbEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUNwQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3pDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDckMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQzNDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDbEMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtLQUNsQyxDQUFDLENBQUE7SUFFRixNQUFN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QyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBQcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QsIHttZW1vLCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUHJlc3NhYmxlLCBUZXh0LCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnQsIFNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCB1c2VCcmVha3BvaW50IGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL3VzZS1icmVha3BvaW50LmpzXCJcblxuY29uc3QgZGF0YVNldHMgPSB7fVxuY29uc3Qgc3R5bGVzID0ge31cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBGbGFzaE5vdGlmaWNhdGlvbnNOb3RpZmljYXRpb24gZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBQcm9wVHlwZXNFeGFjdCh7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG5vdGlmaWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9uTWVhc3VyZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25SZW1vdmVkQ2xpY2tlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y291bnQsIG1lc3NhZ2UsIHRpdGxlLCB0eXBlfSA9IHRoaXMucFxuICAgIGNvbnN0IHtjbGFzc05hbWV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGJyZWFrcG9pbnQgPSB1c2VCcmVha3BvaW50KClcblxuICAgIGNvbnN0IHByZXNzYWJsZURhdGFTZXQgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgY2xhc3M6IGNsYXNzTmFtZSxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgdHlwZVxuICAgICAgfSksXG4gICAgICBbY2xhc3NOYW1lLCB0eXBlXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0ZWQuVmlldyBzdHlsZT17dGhpcy50dC53cmFwcGVyU3R5bGV9PlxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17cHJlc3NhYmxlRGF0YVNldH1cbiAgICAgICAgICBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uUmVtb3ZlZENsaWNrZWR9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlc1tgcHJlc3NhYmxlLSR7dHlwZX0tJHticmVha3BvaW50LnNtRG93bn0tJHticmVha3BvaW50Lm1kVXB9YF0gfHw9IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMSxcbiAgICAgICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICAgICAgICB3aWR0aDogKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc21Eb3duKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMTAwJVwiXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC5tZFVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChicmVha3BvaW50Lm1kVXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIxMDAlXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICAgIGJvcmRlcjogKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMTYxLCAzNCwgMzIsIDAuOTUpXCJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC45NSlcIlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhbGVydFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMjA0LCA1MSwgMCwgMC45NSlcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZ2JhKDE2MSwgMzQsIDMyLCAwLjg3KVwiXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInJnYmEoMCwgMCwgMCwgMC44NylcIlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhbGVydFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicmdiYSgyMDQsIDUxLCAwLCAwLjg3KVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKClcbiAgICAgICAgICB9fVxuICAgICAgICAgIHRlc3RJRD1cImZsYXNoLW5vdGlmaWNhdGlvbnMtbm90aWZpY2F0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLnRpdGxlVmlldyB8fD0ge21hcmdpbkJvdHRvbTogNX19XG4gICAgICAgICAgICB0ZXN0SUQ9XCJub3RpZmljYXRpb24tdGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMudGl0bGVUZXh0IHx8PSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0ZXN0SUQ9e2BmbGFzaC1ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi0ke2NvdW50fS90aXRsZWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXdcbiAgICAgICAgICAgIGRhdGFTZXQ9e2RhdGFTZXRzW2Bub3RpZmljYXRpb25NZXNzYWdlLSR7Y291bnR9YF0gfHw9IHtjb3VudDogYCR7Y291bnR9YH19XG4gICAgICAgICAgICB0ZXN0SUQ9XCJub3RpZmljYXRpb24tbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5tZXNzYWdlVGV4dCB8fD0ge2NvbG9yOiBcIiNmZmZcIn19XG4gICAgICAgICAgICAgIHRlc3RJRD17YGZsYXNoLW5vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLSR7Y291bnR9L21lc3NhZ2VgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVzc2FnZX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgPC9BbmltYXRlZC5WaWV3PlxuICAgIClcbiAgfVxuXG4gIGdldCB3cmFwcGVyU3R5bGUoKSB7XG4gICAgY29uc3Qge25vdGlmaWNhdGlvbn0gPSB0aGlzLnBcblxuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IG5vdGlmaWNhdGlvbi5tZWFzdXJlZEhlaWdodCA/IG5vdGlmaWNhdGlvbi5oZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICBtYXJnaW5Cb3R0b206IG5vdGlmaWNhdGlvbi5tYXJnaW5Cb3R0b20sXG4gICAgICBvcGFjaXR5OiBub3RpZmljYXRpb24ub3BhY2l0eSxcbiAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiXG4gICAgfVxuICB9XG5cbiAgb25SZW1vdmVkQ2xpY2tlZCA9ICgpID0+IHRoaXMucC5vblJlbW92ZWRDbGlja2VkKHRoaXMucC5ub3RpZmljYXRpb24pXG5cbiAgb25MYXlvdXQgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7bm90aWZpY2F0aW9ufSA9IHRoaXMucFxuXG4gICAgaWYgKCFub3RpZmljYXRpb24ubWVhc3VyZWRIZWlnaHQpIHtcbiAgICAgIHRoaXMucC5vbk1lYXN1cmVkKG5vdGlmaWNhdGlvbiwgZXZlbnQubmF0aXZlRXZlbnQubGF5b3V0LmhlaWdodClcbiAgICB9XG4gIH1cbn0pKVxuIl19
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjb250YWluZXIvbm90aWZpY2F0aW9uLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsaURBQWlEO0FBQ2pELE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMxQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQzVELE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBRXBELHFDQUFxQztBQUNyQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7QUFDbkIscUNBQXFDO0FBQ3JDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQixlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSw4QkFBK0IsU0FBUSxjQUFjO0lBQzVGLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ2xDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDcEMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN6QyxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3JDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUMzQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ2xDLElBQUksRUFBRSxT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Q0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEUsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG4vLyBAdHMtZXhwZWN0LWVycm9yIFBhY2thZ2Ugc2hpcHMgbm8gLmQudHMgZmlsZXMuXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0LCB7bWVtbywgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QW5pbWF0ZWQsIFByZXNzYWJsZSwgVGV4dCwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3VzZUJyZWFrcG9pbnR9IGZyb20gXCJyZXNwb25zaXZlLWJyZWFrcG9pbnRzXCJcblxuLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+fSAqL1xuY29uc3QgZGF0YVNldHMgPSB7fVxuLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+fSAqL1xuY29uc3Qgc3R5bGVzID0ge31cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBGbGFzaE5vdGlmaWNhdGlvbnNOb3RpZmljYXRpb24gZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBQcm9wVHlwZXNFeGFjdCh7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG5vdGlmaWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIG9uTWVhc3VyZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25SZW1vdmVkQ2xpY2tlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y291bnQsIG1lc3NhZ2UsIHRpdGxlLCB0eXBlfSA9IHRoaXMucFxuICAgIGNvbnN0IHtjbGFzc05hbWV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGJyZWFrcG9pbnQgPSB1c2VCcmVha3BvaW50KClcblxuICAgIGNvbnN0IHByZXNzYWJsZURhdGFTZXQgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgY2xhc3M6IGNsYXNzTmFtZSxcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgdHlwZVxuICAgICAgfSksXG4gICAgICBbY2xhc3NOYW1lLCB0eXBlXVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0ZWQuVmlldyBzdHlsZT17dGhpcy50dC53cmFwcGVyU3R5bGV9PlxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17cHJlc3NhYmxlRGF0YVNldH1cbiAgICAgICAgICBvbkxheW91dD17dGhpcy50dC5vbkxheW91dH1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uUmVtb3ZlZENsaWNrZWR9XG4gICAgICAgICAgc3R5bGU9e3N0eWxlc1tgcHJlc3NhYmxlLSR7dHlwZX0tJHticmVha3BvaW50LnNtRG93bn0tJHticmVha3BvaW50Lm1kVXB9YF0gfHw9IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAxMSxcbiAgICAgICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICAgICAgICB3aWR0aDogKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc21Eb3duKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMTAwJVwiXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC5tZFVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDMwMFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChicmVha3BvaW50Lm1kVXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCIxMDAlXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKSxcbiAgICAgICAgICAgIGJvcmRlcjogKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gXCJlcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMTYxLCAzNCwgMzIsIDAuOTUpXCJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC45NSlcIlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhbGVydFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiMXB4IHNvbGlkIHJnYmEoMjA0LCA1MSwgMCwgMC45NSlcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PSBcImVycm9yXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJyZ2JhKDE2MSwgMzQsIDMyLCAwLjg3KVwiXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcInN1Y2Nlc3NcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBcInJnYmEoMCwgMCwgMCwgMC44NylcIlxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJhbGVydFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwicmdiYSgyMDQsIDUxLCAwLCAwLjg3KVwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKClcbiAgICAgICAgICB9fVxuICAgICAgICAgIHRlc3RJRD1cImZsYXNoLW5vdGlmaWNhdGlvbnMtbm90aWZpY2F0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLnRpdGxlVmlldyB8fD0ge21hcmdpbkJvdHRvbTogNX19XG4gICAgICAgICAgICB0ZXN0SUQ9XCJub3RpZmljYXRpb24tdGl0bGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMudGl0bGVUZXh0IHx8PSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDcwMFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0ZXN0SUQ9e2BmbGFzaC1ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi0ke2NvdW50fS90aXRsZWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXdcbiAgICAgICAgICAgIGRhdGFTZXQ9e2RhdGFTZXRzW2Bub3RpZmljYXRpb25NZXNzYWdlLSR7Y291bnR9YF0gfHw9IHtjb3VudDogYCR7Y291bnR9YH19XG4gICAgICAgICAgICB0ZXN0SUQ9XCJub3RpZmljYXRpb24tbWVzc2FnZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5tZXNzYWdlVGV4dCB8fD0ge2NvbG9yOiBcIiNmZmZcIn19XG4gICAgICAgICAgICAgIHRlc3RJRD17YGZsYXNoLW5vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLSR7Y291bnR9L21lc3NhZ2VgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVzc2FnZX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgPC9BbmltYXRlZC5WaWV3PlxuICAgIClcbiAgfVxuXG4gIGdldCB3cmFwcGVyU3R5bGUoKSB7XG4gICAgY29uc3Qge25vdGlmaWNhdGlvbn0gPSB0aGlzLnBcblxuICAgIHJldHVybiB7XG4gICAgICBoZWlnaHQ6IG5vdGlmaWNhdGlvbi5tZWFzdXJlZEhlaWdodCA/IG5vdGlmaWNhdGlvbi5oZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICBtYXJnaW5Cb3R0b206IG5vdGlmaWNhdGlvbi5tYXJnaW5Cb3R0b20sXG4gICAgICBvcGFjaXR5OiBub3RpZmljYXRpb24ub3BhY2l0eSxcbiAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiXG4gICAgfVxuICB9XG5cbiAgb25SZW1vdmVkQ2xpY2tlZCA9ICgpID0+IHRoaXMucC5vblJlbW92ZWRDbGlja2VkKHRoaXMucC5ub3RpZmljYXRpb24pXG5cbiAgb25MYXlvdXQgPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7bm90aWZpY2F0aW9ufSA9IHRoaXMucFxuXG4gICAgaWYgKCFub3RpZmljYXRpb24ubWVhc3VyZWRIZWlnaHQpIHtcbiAgICAgIHRoaXMucC5vbk1lYXN1cmVkKG5vdGlmaWNhdGlvbiwgZXZlbnQubmF0aXZlRXZlbnQubGF5b3V0LmhlaWdodClcbiAgICB9XG4gIH1cbn0pKVxuIl19
@@ -10,10 +10,10 @@ export default class FlashNotifications {
10
10
  */
11
11
  static error(message: string): void;
12
12
  /**
13
- * @param {Error} error
13
+ * @param {unknown} error
14
14
  * @returns {void}
15
15
  */
16
- static errorResponse(error: Error): void;
16
+ static errorResponse(error: unknown): void;
17
17
  /**
18
18
  * @param {string} message
19
19
  * @returns {void}
@@ -1 +1 @@
1
- {"version":3,"file":"flash-notifications.d.ts","sourceRoot":"/src/","sources":["flash-notifications.js"],"names":[],"mappings":"AAOA;IACE;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,4BAHW,KAAK,GACH,IAAI,CAqChB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;;OAKG;IACH,kBAJG;QAAqB,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;KACd,GAAU,IAAI,CAoBhB;CACF"}
1
+ {"version":3,"file":"flash-notifications.d.ts","sourceRoot":"/src/","sources":["flash-notifications.js"],"names":[],"mappings":"AAOA;IACE;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;OAGG;IACH,4BAHW,OAAO,GACL,IAAI,CA+ChB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;;;;OAKG;IACH,kBAJG;QAAqB,IAAI,EAAjB,MAAM;QACO,IAAI,EAAjB,MAAM;KACd,GAAU,IAAI,CAoBhB;CACF"}
@@ -18,10 +18,14 @@ export default class FlashNotifications {
18
18
  FlashNotifications.show({ type: "error", text: message });
19
19
  }
20
20
  /**
21
- * @param {Error} error
21
+ * @param {unknown} error
22
22
  * @returns {void}
23
23
  */
24
24
  static errorResponse(error) {
25
+ if (!(error instanceof Error)) {
26
+ FlashNotifications.error(typeof error == "string" ? error : String(error));
27
+ return;
28
+ }
25
29
  // @ts-expect-error
26
30
  if (error.apiMakerType == "ValidationError") {
27
31
  // @ts-expect-error
@@ -53,8 +57,11 @@ export default class FlashNotifications {
53
57
  }
54
58
  }
55
59
  else {
56
- console.error(`Didnt know what to do with that ${error.constructor.name}: ${error.message}`);
57
- throw error;
60
+ const constructorName = digg(error, "constructor", "name");
61
+ const defaultErrorMessage = configuration.translate("js.shared.something_went_wrong", { defaultValue: "Something went wrong." });
62
+ const message = digg(error, "message");
63
+ console.error(`Didnt know what to do with that ${constructorName}: ${message}`);
64
+ FlashNotifications.error(defaultErrorMessage);
58
65
  }
59
66
  }
60
67
  /**
@@ -91,4 +98,4 @@ export default class FlashNotifications {
91
98
  });
92
99
  }
93
100
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhc2gtbm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZmxhc2gtbm90aWZpY2F0aW9ucy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUU5QixPQUFPLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5QyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFFaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFDckM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTztRQUNsQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUs7UUFDeEIsbUJBQW1CO1FBQ25CLElBQUksS0FBSyxDQUFDLFlBQVksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQzVDLG1CQUFtQjtZQUNuQixJQUFJLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLG1CQUFtQjtnQkFDbkIsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBRW5ILGtCQUFrQixDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENB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dCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcblxuaW1wb3J0IGNvbmZpZ3VyYXRpb24gZnJvbSBcIi4vY29uZmlndXJhdGlvbi5qc1wiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsYXNoTm90aWZpY2F0aW9ucyB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBhbGVydChtZXNzYWdlKSB7XG4gICAgRmxhc2hOb3RpZmljYXRpb25zLnNob3coe3R5cGU6IFwiYWxlcnRcIiwgdGV4dDogbWVzc2FnZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgZXJyb3IobWVzc2FnZSkge1xuICAgIEZsYXNoTm90aWZpY2F0aW9ucy5zaG93KHt0eXBlOiBcImVycm9yXCIsIHRleHQ6IG1lc3NhZ2V9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIGVycm9yUmVzcG9uc2UoZXJyb3IpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgaWYgKGVycm9yLmFwaU1ha2VyVHlwZSA9PSBcIlZhbGlkYXRpb25FcnJvclwiKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBpZiAoZXJyb3IuaGFzVW5oYW5kbGVkRXJyb3JzKCkpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBjb25zdCB1bmhhbmRsZWRFcnJvck1lc3NhZ2VzID0gZXJyb3IuZ2V0VW5oYW5kbGVkRXJyb3JzKCkubWFwKChzdWJFcnJvcikgPT4gc3ViRXJyb3IuZ2V0RnVsbEVycm9yTWVzc2FnZXMoKSkuZmxhdCgpXG5cbiAgICAgICAgRmxhc2hOb3RpZmljYXRpb25zLmVycm9yKHVuaGFuZGxlZEVycm9yTWVzc2FnZXMuam9pbihcIi4gXCIpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gXCJDb3VsZG4ndCBzdWJtaXQgYmVjYXVzZSBvZiB2YWxpZGF0aW9uIGVycm9ycy5cIlxuXG4gICAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5hbGVydChjb25maWd1cmF0aW9uLnRyYW5zbGF0ZShcImpzLm5vdGlmaWNhdGlvbi5jb3VsZG50X3N1Ym1pdF9iZWNhdXNlX29mX3ZhbGlkYXRpb25fZXJyb3JzXCIsIHtkZWZhdWx0VmFsdWV9KSlcbiAgICAgIH1cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgfSBlbHNlIGlmIChlcnJvci5hcGlNYWtlclR5cGUgPT0gXCJCYXNlRXJyb3JcIikge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgaWYgKGVycm9yLmFyZ3MucmVzcG9uc2UgJiYgZXJyb3IuYXJncy5yZXNwb25zZS5lcnJvcnMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gLyoqIEB0eXBlIHtBcnJheTxzdHJpbmcgfCB7bWVzc2FnZTogc3RyaW5nfVtdPn0gKi8gKGRpZ2coZXJyb3IsIFwiYXJnc1wiLCBcInJlc3BvbnNlXCIsIFwiZXJyb3JzXCIpKVxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2VzID0gZXJyb3JzLm1hcCgoZXJyb3IpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGVycm9yID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvclxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkaWdnKGVycm9yLCBcIm1lc3NhZ2VcIilcbiAgICAgICAgfSlcblxuICAgICAgICBGbGFzaE5vdGlmaWNhdGlvbnMuZXJyb3IoZXJyb3JNZXNzYWdlcy5qb2luKFwiLiBcIikpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBEaWRudCBrbm93IHdoYXQgdG8gZG8gd2l0aCB0aGF0ICR7ZXJyb3IuY29uc3RydWN0b3IubmFtZX06ICR7ZXJyb3IubWVzc2FnZX1gKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgc3VjY2VzcyhtZXNzYWdlKSB7XG4gICAgRmxhc2hOb3RpZmljYXRpb25zLnNob3coe3R5cGU6IFwic3VjY2Vzc1wiLCB0ZXh0OiBtZXNzYWdlfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgc2hvdyhhcmdzKSB7XG4gICAgbGV0IHRpdGxlXG5cbiAgICBpZiAoYXJncy50eXBlID09IFwiYWxlcnRcIikge1xuICAgICAgdGl0bGUgPSBjb25maWd1cmF0aW9uLnRyYW5zbGF0ZShcImpzLnNoYXJlZC5hbGVydFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkFsZXJ0XCJ9KVxuICAgIH0gZWxzZSBpZiAoYXJncy50eXBlID09IFwiZXJyb3JcIikge1xuICAgICAgdGl0bGUgPSBjb25maWd1cmF0aW9uLnRyYW5zbGF0ZShcImpzLnNoYXJlZC5lcnJvclwiLCB7ZGVmYXVsdFZhbHVlOiBcIkVycm9yXCJ9KVxuICAgIH0gZWxzZSBpZiAoYXJncy50eXBlID09IFwic3VjY2Vzc1wiKSB7XG4gICAgICB0aXRsZSA9IGNvbmZpZ3VyYXRpb24udHJhbnNsYXRlKFwianMuc2hhcmVkLnN1Y2Nlc3NcIiwge2RlZmF1bHRWYWx1ZTogXCJTdWNjZXNzXCJ9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aXRsZSA9IGNvbmZpZ3VyYXRpb24udHJhbnNsYXRlKFwianMuc2hhcmVkLm5vdGlmaWNhdGlvblwiLCB7ZGVmYXVsdFZhbHVlOiBcIk5vdGlmaWNhdGlvblwifSlcbiAgICB9XG5cbiAgICBldmVudHMuZW1pdChcInB1c2hOb3RpZmljYXRpb25cIiwge1xuICAgICAgbWVzc2FnZTogYXJncy50ZXh0LFxuICAgICAgdGl0bGUsXG4gICAgICB0eXBlOiBhcmdzLnR5cGVcbiAgICB9KVxuICB9XG59XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhc2gtbm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiZmxhc2gtbm90aWZpY2F0aW9ucy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUU5QixPQUFPLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQTtBQUM5QyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFFaEMsTUFBTSxDQUFDLE9BQU8sT0FBTyxrQkFBa0I7SUFDckM7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPO1FBQ2xCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTztRQUNsQixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFBO0lBQ3pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUs7UUFDeEIsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUUxRSxPQUFNO1FBQ1IsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixJQUFJLEtBQUssQ0FBQyxZQUFZLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUM1QyxtQkFBbUI7WUFDbkIsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixtQkFB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LElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNsQyxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxFQUFDLFlBQVksRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFBO1FBQ2pGLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUUsRUFBQyxZQUFZLEVBQUUsY0FBYyxFQUFDLENBQUMsQ0FBQTtRQUMzRixDQUFDO1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbEIsS0FBSztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcblxuaW1wb3J0IGNvbmZpZ3VyYXRpb24gZnJvbSBcIi4vY29uZmlndXJhdGlvbi5qc1wiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuL2V2ZW50cy5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsYXNoTm90aWZpY2F0aW9ucyB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBhbGVydChtZXNzYWdlKSB7XG4gICAgRmxhc2hOb3RpZmljYXRpb25zLnNob3coe3R5cGU6IFwiYWxlcnRcIiwgdGV4dDogbWVzc2FnZX0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgZXJyb3IobWVzc2FnZSkge1xuICAgIEZsYXNoTm90aWZpY2F0aW9ucy5zaG93KHt0eXBlOiBcImVycm9yXCIsIHRleHQ6IG1lc3NhZ2V9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gZXJyb3JcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzdGF0aWMgZXJyb3JSZXNwb25zZShlcnJvcikge1xuICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICBGbGFzaE5vdGlmaWNhdGlvbnMuZXJyb3IodHlwZW9mIGVycm9yID09IFwic3RyaW5nXCIgPyBlcnJvciA6IFN0cmluZyhlcnJvcikpXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBpZiAoZXJyb3IuYXBpTWFrZXJUeXBlID09IFwiVmFsaWRhdGlvbkVycm9yXCIpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGlmIChlcnJvci5oYXNVbmhhbmRsZWRFcnJvcnMoKSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGNvbnN0IHVuaGFuZGxlZEVycm9yTWVzc2FnZXMgPSBlcnJvci5nZXRVbmhhbmRsZWRFcnJvcnMoKS5tYXAoKHN1YkVycm9yKSA9PiBzdWJFcnJvci5nZXRGdWxsRXJyb3JNZXNzYWdlcygpKS5mbGF0KClcblxuICAgICAgICBGbGFzaE5vdGlmaWNhdGlvbnMuZXJyb3IodW5oYW5kbGVkRXJyb3JNZXNzYWdlcy5qb2luKFwiLiBcIikpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBcIkNvdWxkbid0IHN1Ym1pdCBiZWNhdXNlIG9mIHZhbGlkYXRpb24gZXJyb3JzLlwiXG5cbiAgICAgICAgRmxhc2hOb3RpZmljYXRpb25zLmFsZXJ0KGNvbmZpZ3VyYXRpb24udHJhbnNsYXRlKFwianMubm90aWZpY2F0aW9uLmNvdWxkbnRfc3VibWl0X2JlY2F1c2Vfb2ZfdmFsaWRhdGlvbl9lcnJvcnNcIiwge2RlZmF1bHRWYWx1ZX0pKVxuICAgICAgfVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICB9IGVsc2UgaWYgKGVycm9yLmFwaU1ha2VyVHlwZSA9PSBcIkJhc2VFcnJvclwiKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBpZiAoZXJyb3IuYXJncy5yZXNwb25zZSAmJiBlcnJvci5hcmdzLnJlc3BvbnNlLmVycm9ycykge1xuICAgICAgICBjb25zdCBlcnJvcnMgPSAvKiogQHR5cGUge0FycmF5PHN0cmluZyB8IHttZXNzYWdlOiBzdHJpbmd9W10+fSAqLyAoZGlnZyhlcnJvciwgXCJhcmdzXCIsIFwicmVzcG9uc2VcIiwgXCJlcnJvcnNcIikpXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBlcnJvcnMubWFwKChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgZXJyb3IgPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGRpZ2coZXJyb3IsIFwibWVzc2FnZVwiKVxuICAgICAgICB9KVxuXG4gICAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5lcnJvcihlcnJvck1lc3NhZ2VzLmpvaW4oXCIuIFwiKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yTmFtZSA9IGRpZ2coZXJyb3IsIFwiY29uc3RydWN0b3JcIiwgXCJuYW1lXCIpXG4gICAgICBjb25zdCBkZWZhdWx0RXJyb3JNZXNzYWdlID0gY29uZmlndXJhdGlvbi50cmFuc2xhdGUoXCJqcy5zaGFyZWQuc29tZXRoaW5nX3dlbnRfd3JvbmdcIiwge2RlZmF1bHRWYWx1ZTogXCJTb21ldGhpbmcgd2VudCB3cm9uZy5cIn0pXG4gICAgICBjb25zdCBtZXNzYWdlID0gZGlnZyhlcnJvciwgXCJtZXNzYWdlXCIpXG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoYERpZG50IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoYXQgJHtjb25zdHJ1Y3Rvck5hbWV9OiAke21lc3NhZ2V9YClcbiAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5lcnJvcihkZWZhdWx0RXJyb3JNZXNzYWdlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBzdWNjZXNzKG1lc3NhZ2UpIHtcbiAgICBGbGFzaE5vdGlmaWNhdGlvbnMuc2hvdyh7dHlwZTogXCJzdWNjZXNzXCIsIHRleHQ6IG1lc3NhZ2V9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBzaG93KGFyZ3MpIHtcbiAgICBsZXQgdGl0bGVcblxuICAgIGlmIChhcmdzLnR5cGUgPT0gXCJhbGVydFwiKSB7XG4gICAgICB0aXRsZSA9IGNvbmZpZ3VyYXRpb24udHJhbnNsYXRlKFwianMuc2hhcmVkLmFsZXJ0XCIsIHtkZWZhdWx0VmFsdWU6IFwiQWxlcnRcIn0pXG4gICAgfSBlbHNlIGlmIChhcmdzLnR5cGUgPT0gXCJlcnJvclwiKSB7XG4gICAgICB0aXRsZSA9IGNvbmZpZ3VyYXRpb24udHJhbnNsYXRlKFwianMuc2hhcmVkLmVycm9yXCIsIHtkZWZhdWx0VmFsdWU6IFwiRXJyb3JcIn0pXG4gICAgfSBlbHNlIGlmIChhcmdzLnR5cGUgPT0gXCJzdWNjZXNzXCIpIHtcbiAgICAgIHRpdGxlID0gY29uZmlndXJhdGlvbi50cmFuc2xhdGUoXCJqcy5zaGFyZWQuc3VjY2Vzc1wiLCB7ZGVmYXVsdFZhbHVlOiBcIlN1Y2Nlc3NcIn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRpdGxlID0gY29uZmlndXJhdGlvbi50cmFuc2xhdGUoXCJqcy5zaGFyZWQubm90aWZpY2F0aW9uXCIsIHtkZWZhdWx0VmFsdWU6IFwiTm90aWZpY2F0aW9uXCJ9KVxuICAgIH1cblxuICAgIGV2ZW50cy5lbWl0KFwicHVzaE5vdGlmaWNhdGlvblwiLCB7XG4gICAgICBtZXNzYWdlOiBhcmdzLnRleHQsXG4gICAgICB0aXRsZSxcbiAgICAgIHR5cGU6IGFyZ3MudHlwZVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"/src/","sources":["listener.js"],"names":[],"mappings":"AAEA;IAGE,sBAQC;IAVD,qBAAkB;IAYlB,2BAEC;IAED,+BA+BC;IAED,gDAEC;CACF"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"/src/","sources":["listener.js"],"names":[],"mappings":"AAEA;IAGE,sBAQC;IAVD,qBAAkB;IAYlB,2BAEC;IAED,+BA+BC;IAED,qBAAsB,iBAAY,UAEjC;CACF"}
package/package.json CHANGED
@@ -1,18 +1,22 @@
1
1
  {
2
2
  "name": "flash-notifications",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "description": "My new module",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
7
+ "files": [
8
+ "build"
9
+ ],
7
10
  "scripts": {
8
11
  "build": "expo-module build",
9
12
  "clean": "expo-module clean",
10
13
  "export:web": "cd example && npm install && cd .. && npm run prepare:dummy && cd example && npx expo export -p web --output-dir dist",
11
14
  "lint": "expo-module lint -- --max-warnings 0",
15
+ "prepare:module": "expo-module prepare",
12
16
  "test": "node scripts/velocious-test.js",
13
- "prepare": "expo-module prepare",
17
+ "typecheck": "expo-module build",
14
18
  "prepare:dummy": "npm run build && rm -rf example/node_modules/flash-notifications && mkdir -p example/node_modules/flash-notifications && cp -r build package.json example/node_modules/flash-notifications/",
15
- "prepublishOnly": "expo-module prepublishOnly",
19
+ "prepublishOnly": "npm run prepare:module && expo-module prepublishOnly",
16
20
  "expo-module": "expo-module",
17
21
  "open:ios": "xed example/ios",
18
22
  "open:android": "open -a \"Android Studio\" example/android",
@@ -37,21 +41,24 @@
37
41
  "env-sense": "^1.0.2",
38
42
  "eventemitter3": "^5.0.1",
39
43
  "fetching-object": "^1.0.3",
40
- "prop-types-exact": "*"
44
+ "prop-types-exact": "*",
45
+ "responsive-breakpoints": "^0.1.3",
46
+ "ya-use-event-emitter": "^0.1.1"
41
47
  },
42
48
  "devDependencies": {
49
+ "@eslint/js": "^9.39.4",
43
50
  "@types/react": "~18.3.12",
44
- "eslint": "^8.57.1",
45
- "eslint-config-universe": "^15.0.3",
46
- "expo": "~54.0.30",
51
+ "eslint": "^9.39.1",
52
+ "eslint-plugin-react": "^7.37.5",
53
+ "expo": "~55.0.5",
47
54
  "expo-module-scripts": "^4.0.2",
55
+ "globals": "^16.4.0",
48
56
  "react-native": "~0.76.9",
49
57
  "selenium-webdriver": "^4.35.0",
50
- "system-testing": "^1.0.56",
51
- "velocious": "^1.0.175"
58
+ "system-testing": "^1.0.62",
59
+ "velocious": "^1.0.183"
52
60
  },
53
61
  "peerDependencies": {
54
- "@kaspernj/api-maker": ">= 1.0.2058",
55
62
  "expo": "*",
56
63
  "react": "*",
57
64
  "react-native": "*",
package/.eslintrc.js DELETED
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- extends: ['universe/native', 'universe/web'],
4
- ignorePatterns: ['build'],
5
- rules: {
6
- "eqeqeq": "off",
7
- "no-return-assign": "off",
8
- "prettier/prettier": "off",
9
- "react-hooks/rules-of-hooks": "off",
10
- "import/order": "off"
11
- }
12
- }
package/AGENTS.md DELETED
@@ -1,3 +0,0 @@
1
- # Agent Notes
2
-
3
- - Use .js files instead of .mjs for new test/support files in this repo.
package/CHANGELOG.md DELETED
@@ -1,10 +0,0 @@
1
- # Changelog
2
-
3
- ## Unreleased
4
- - Add optional debug logging for notification lifecycle events.
5
- - Speed up dismiss animations when notifications are pressed.
6
- - Add notification count dataSet to message container for test hooks.
7
- - Replace StyleSheet usage with inline style objects for notifications.
8
- - Cache inline notification style objects and use numeric font weights.
9
- - Inline cached style assignments directly in notification JSX.
10
- - Build pressable styles with a single cached inline object.
@@ -1,43 +0,0 @@
1
- apply plugin: 'com.android.library'
2
-
3
- group = 'expo.modules.flashnotifications'
4
- version = '0.1.0'
5
-
6
- def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
- apply from: expoModulesCorePlugin
8
- applyKotlinExpoModulesCorePlugin()
9
- useCoreDependencies()
10
- useExpoPublishing()
11
-
12
- // If you want to use the managed Android SDK versions from expo-modules-core, set this to true.
13
- // The Android SDK versions will be bumped from time to time in SDK releases and may introduce breaking changes in your module code.
14
- // Most of the time, you may like to manage the Android SDK versions yourself.
15
- def useManagedAndroidSdkVersions = false
16
- if (useManagedAndroidSdkVersions) {
17
- useDefaultAndroidSdkVersions()
18
- } else {
19
- buildscript {
20
- // Simple helper that allows the root project to override versions declared by this library.
21
- ext.safeExtGet = { prop, fallback ->
22
- rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
23
- }
24
- }
25
- project.android {
26
- compileSdkVersion safeExtGet("compileSdkVersion", 34)
27
- defaultConfig {
28
- minSdkVersion safeExtGet("minSdkVersion", 21)
29
- targetSdkVersion safeExtGet("targetSdkVersion", 34)
30
- }
31
- }
32
- }
33
-
34
- android {
35
- namespace "expo.modules.flashnotifications"
36
- defaultConfig {
37
- versionCode 1
38
- versionName "0.1.0"
39
- }
40
- lintOptions {
41
- abortOnError false
42
- }
43
- }