@agilemotion/oui-react-js 2.0.21 → 2.0.23

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.
@@ -5,23 +5,300 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
+ var _Utils = _interopRequireDefault(require("../Utils"));
9
+ var _Paper = _interopRequireDefault(require("@mui/material/Paper"));
10
+ var _RestUtils = require("../RestUtils");
11
+ var _ApplicationManager = _interopRequireDefault(require("../ApplicationManager"));
12
+ var _View = require("../components/layout/View");
8
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- const location = window.location.protocol + "//" + window.location.hostname;
14
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ const location = window.location.protocol + '//' + window.location.hostname;
20
+
21
+ /**
22
+ * Friendly first name for the welcome banner. The user's first name(s) live on
23
+ * the `name` field (surname is the separate `surname` field; `profile` is org/
24
+ * role JSON, not name data). Falls back to the username local-part, else null.
25
+ */
26
+ const resolveFirstName = () => {
27
+ try {
28
+ const details = _ApplicationManager.default.getUserDetails();
29
+ if (_Utils.default.isNull(details)) {
30
+ return null;
31
+ }
32
+ const name = details.name;
33
+ if (!_Utils.default.isNull(name) && "".concat(name).trim().length) {
34
+ return "".concat(name).trim().split(/\s+/)[0];
35
+ }
36
+ const username = details.username;
37
+ if (!_Utils.default.isNull(username) && "".concat(username).length) {
38
+ const handle = "".concat(username).split('@')[0];
39
+ return handle.charAt(0).toUpperCase() + handle.slice(1);
40
+ }
41
+ } catch (e) {
42
+ console.error(e);
43
+ }
44
+ return null;
45
+ };
46
+
47
+ /**
48
+ * Whether the signed-in user holds the given role in any of their organisations.
49
+ * Roles live in the stringified `profile` JSON: { organisations: [{ roles }] }.
50
+ * MVP: the dashboard card visibility rule is hardcoded against this; later the
51
+ * default dashboard layout (and which cards to show) will come from an API.
52
+ */
53
+ const userHasRole = role => {
54
+ try {
55
+ const details = _ApplicationManager.default.getUserDetails();
56
+ if (_Utils.default.isNull(details) || _Utils.default.isNull(details.profile)) {
57
+ return false;
58
+ }
59
+ let profile = details.profile;
60
+ if (typeof profile === 'string') {
61
+ profile = JSON.parse(profile);
62
+ }
63
+ const orgs = profile && profile.organisations;
64
+ if (!Array.isArray(orgs)) {
65
+ return false;
66
+ }
67
+ return orgs.some(org => Array.isArray(org.roles) && org.roles.includes(role));
68
+ } catch (e) {
69
+ console.error(e);
70
+ return false;
71
+ }
72
+ };
73
+
74
+ /**
75
+ * Resolves a dashboard descriptor (type: "dashboard") to its content view and
76
+ * renders it inline, mirroring the VIEW-display branch of Dashboard.jsx's
77
+ * DashboardCard. The descriptor's contentPath points at the view to embed.
78
+ */
79
+ const EmbeddedView = props => {
80
+ const [element, setElement] = _react.default.useState(null);
81
+ const [failed, setFailed] = _react.default.useState(false);
82
+ // One stable, unique view id for this card's lifetime, drawn from the
83
+ // dashboard-lifecycle counter so it never collides with a sibling card.
84
+ const viewIdRef = _react.default.useRef(null);
85
+ if (viewIdRef.current === null) {
86
+ viewIdRef.current = props.allocateViewId();
87
+ }
88
+ _react.default.useEffect(() => {
89
+ let cancelled = false;
90
+ const base = location + _ApplicationManager.default.getContextRoot() + _ApplicationManager.default.getUIConfigPath();
91
+ const descriptorUrl = base + '/dashboard/get?version=1.0&id=' + props.descriptorPath;
92
+ (0, _RestUtils.sendRequest)(descriptorUrl, descriptor => {
93
+ if (cancelled) return;
94
+ if (_Utils.default.isNull(descriptor) || _Utils.default.isNull(descriptor.contentPath)) {
95
+ setFailed(true);
96
+ return;
97
+ }
98
+ const viewUrl = base + '/view/get?version=1.0&id=' + descriptor.contentPath;
99
+ (0, _RestUtils.sendRequest)(viewUrl, data => {
100
+ if (cancelled) return;
101
+ // Clone so we never mutate a (possibly cached) shared response,
102
+ // and stamp a unique-and-stable id for this card instance.
103
+ const config = _objectSpread(_objectSpread({}, data), {}, {
104
+ id: data.id + '_' + viewIdRef.current,
105
+ window: false
106
+ });
107
+ const dashboardView = {
108
+ config: config,
109
+ parent: false,
110
+ popUp: false,
111
+ window: false,
112
+ handle: {
113
+ api: {
114
+ loaded: () => false
115
+ }
116
+ }
117
+ };
118
+ _ApplicationManager.default.addDashboardView(dashboardView, descriptor.contentPath);
119
+ setElement(/*#__PURE__*/_react.default.createElement(_View.View, {
120
+ key: config.id,
121
+ config: config,
122
+ parameters: [],
123
+ handle: dashboardView.handle
124
+ }));
125
+ }, e => {
126
+ if (cancelled) return;
127
+ console.error(e);
128
+ setFailed(true);
129
+ });
130
+ }, e => {
131
+ if (cancelled) return;
132
+ console.error(e);
133
+ setFailed(true);
134
+ });
135
+ return () => {
136
+ cancelled = true;
137
+ };
138
+ }, [props.descriptorPath]);
139
+ if (failed) {
140
+ return /*#__PURE__*/_react.default.createElement("div", {
141
+ style: {
142
+ padding: '16px',
143
+ color: '#9aa3b1',
144
+ fontSize: '13px'
145
+ }
146
+ }, "Unable to load.");
147
+ }
148
+ if (_Utils.default.isNull(element)) {
149
+ return /*#__PURE__*/_react.default.createElement("div", {
150
+ style: {
151
+ padding: '16px',
152
+ color: '#9aa3b1',
153
+ fontSize: '13px'
154
+ }
155
+ }, "Loading\u2026");
156
+ }
157
+ return element;
158
+ };
159
+
160
+ /**
161
+ * Panel wrapper giving each embedded card a titled, scrollable frame. Fills
162
+ * its parent slot; callers pass `style` to control its flex share/height
163
+ * within the grid columns.
164
+ */
165
+ const DashboardPanel = props => /*#__PURE__*/_react.default.createElement(_Paper.default, {
166
+ style: _objectSpread({
167
+ display: 'flex',
168
+ flexDirection: 'column',
169
+ width: '100%',
170
+ height: '100%',
171
+ minHeight: 0,
172
+ overflow: 'hidden',
173
+ borderRadius: '6px',
174
+ boxShadow: '0 1px 3px rgba(20, 35, 60, 0.08)',
175
+ padding: '16px',
176
+ boxSizing: 'border-box'
177
+ }, props.style || {})
178
+ }, /*#__PURE__*/_react.default.createElement("div", {
179
+ style: {
180
+ fontSize: '16px',
181
+ fontWeight: 600,
182
+ color: '#1a3c5e',
183
+ marginBottom: '12px'
184
+ }
185
+ }, props.title), /*#__PURE__*/_react.default.createElement("div", {
186
+ style: {
187
+ flex: '1 1 auto',
188
+ minHeight: 0,
189
+ overflow: 'auto'
190
+ }
191
+ }, props.children));
10
192
  const PortalDashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
11
193
  const api = {
12
194
  get id() {
13
- return "portal-dashboard";
195
+ return 'portal-dashboard';
14
196
  }
15
197
  };
16
198
  const handle = {
17
- "api": api
199
+ api: api
18
200
  };
201
+ const firstName = _react.default.useMemo(() => resolveFirstName(), []);
202
+ const greeting = _Utils.default.isNull(firstName) ? 'Welcome back' : "Hi ".concat(firstName, ", welcome back");
203
+
204
+ // MVP rule (hardcoded): the procurement row (Publications / Registrations /
205
+ // Bids) only shows for users with the VENDOR role. This will be driven by
206
+ // the default dashboard settings API later.
207
+ const isVendor = _react.default.useMemo(() => userHasRole('VENDOR'), []);
208
+
209
+ // View-id counter scoped to this dashboard's lifecycle: initiated on load,
210
+ // increments per card as needed. Restarting on each load is safe because we
211
+ // unload every card view on destroy (below), so no stale ids/subscriptions
212
+ // survive to collide with the next load.
213
+ const viewSeq = _react.default.useRef(0);
214
+ const allocateViewId = _react.default.useCallback(() => ++viewSeq.current, []);
215
+ _react.default.useEffect(() => {
216
+ return () => {
217
+ // Unload all dashboard card views on destroy. Without this the event
218
+ // bus keeps their subscriptions and would respond to events for
219
+ // these (now unmounted) views behind the scenes.
220
+ _ApplicationManager.default.clearDashboardViews();
221
+ };
222
+ }, []);
19
223
  return /*#__PURE__*/_react.default.createElement("div", {
20
224
  ref: ref,
21
225
  style: {
22
- margin: '4px 0 0 0'
226
+ padding: '16px',
227
+ boxSizing: 'border-box'
228
+ }
229
+ }, /*#__PURE__*/_react.default.createElement("p", {
230
+ style: {
231
+ fontSize: '24px',
232
+ margin: '0 0 12px 4px',
233
+ color: '#1a3c5e'
234
+ }
235
+ }, greeting), /*#__PURE__*/_react.default.createElement("div", {
236
+ style: {
237
+ display: 'flex',
238
+ flexDirection: 'column',
239
+ gap: '10px',
240
+ height: 'calc(100dvh - var(--header-h, 64px) - 100px)'
241
+ }
242
+ }, /*#__PURE__*/_react.default.createElement("div", {
243
+ style: {
244
+ flex: 1,
245
+ minHeight: 0,
246
+ display: 'flex',
247
+ gap: '10px'
248
+ }
249
+ }, /*#__PURE__*/_react.default.createElement(DashboardPanel, {
250
+ title: 'My Tasks',
251
+ style: {
252
+ flex: 1,
253
+ minWidth: 0
254
+ }
255
+ }, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
256
+ descriptorPath: '/portal/dashboards/my-work-items.json',
257
+ allocateViewId: allocateViewId
258
+ })), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
259
+ title: 'Calendar',
260
+ style: {
261
+ flex: 1,
262
+ minWidth: 0
263
+ }
264
+ }, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
265
+ descriptorPath: '/portal/dashboards/my-calendar.json',
266
+ allocateViewId: allocateViewId
267
+ }))), isVendor && /*#__PURE__*/_react.default.createElement("div", {
268
+ style: {
269
+ flex: 1,
270
+ minHeight: 0,
271
+ display: 'flex',
272
+ gap: '10px'
273
+ }
274
+ }, /*#__PURE__*/_react.default.createElement(DashboardPanel, {
275
+ title: 'Publications',
276
+ style: {
277
+ flex: 1,
278
+ minWidth: 0
279
+ }
280
+ }, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
281
+ descriptorPath: '/portal/dashboards/publications.json',
282
+ allocateViewId: allocateViewId
283
+ })), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
284
+ title: 'My Registrations',
285
+ style: {
286
+ flex: 1,
287
+ minWidth: 0
288
+ }
289
+ }, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
290
+ descriptorPath: '/portal/dashboards/my-registrations.json',
291
+ allocateViewId: allocateViewId
292
+ })), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
293
+ title: 'My Bids',
294
+ style: {
295
+ flex: 1,
296
+ minWidth: 0
23
297
  }
24
- });
298
+ }, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
299
+ descriptorPath: '/portal/dashboards/my-bids.json',
300
+ allocateViewId: allocateViewId
301
+ })))));
25
302
  }));
26
303
  var _default = exports.default = PortalDashboard;
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlBvcnRhbERhc2hib2FyZCIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsImFwaSIsImlkIiwiaGFuZGxlIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwibWFyZ2luIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92aWV3L1BvcnRhbERhc2hib2FyZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuXG5jb25zdCBQb3J0YWxEYXNoYm9hcmQgPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcblxuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgZ2V0IGlkICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcInBvcnRhbC1kYXNoYm9hcmRcIjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGUgPSB7XG4gICAgICAgXCJhcGlcIjogYXBpXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IHN0eWxlPXt7bWFyZ2luOiAnNHB4IDAgMCAwJ319PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWxEYXNoYm9hcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUMzQixNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUUzRSxNQUFNQyxlQUFlLGdCQUFHQyxjQUFLLENBQUNDLElBQUksY0FBQ0QsY0FBSyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEtBQUs7RUFFaEUsTUFBTUMsR0FBRyxHQUFHO0lBQ1IsSUFBSUMsRUFBRUEsQ0FBQSxFQUFJO01BQ04sT0FBTyxrQkFBa0I7SUFDN0I7RUFDSixDQUFDO0VBRUQsTUFBTUMsTUFBTSxHQUFHO0lBQ1osS0FBSyxFQUFFRjtFQUNWLENBQUM7RUFFRCxvQkFDSWhCLE1BQUEsQ0FBQUssT0FBQSxDQUFBYyxhQUFBO0lBQUtKLEdBQUcsRUFBRUEsR0FBSTtJQUFDSyxLQUFLLEVBQUU7TUFBQ0MsTUFBTSxFQUFFO0lBQVc7RUFBRSxDQUN2QyxDQUFDO0FBRWQsQ0FBQyxDQUFDLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBQUFDLE9BQUEsQ0FBQWxCLE9BQUEsR0FFV0ssZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
304
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9QYXBlciIsIl9SZXN0VXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicmVzb2x2ZUZpcnN0TmFtZSIsImRldGFpbHMiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRVc2VyRGV0YWlscyIsIlV0aWxzIiwiaXNOdWxsIiwibmFtZSIsImNvbmNhdCIsInRyaW0iLCJzcGxpdCIsInVzZXJuYW1lIiwiaGFuZGxlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNvbnNvbGUiLCJlcnJvciIsInVzZXJIYXNSb2xlIiwicm9sZSIsInByb2ZpbGUiLCJKU09OIiwicGFyc2UiLCJvcmdzIiwib3JnYW5pc2F0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJvcmciLCJyb2xlcyIsImluY2x1ZGVzIiwiRW1iZWRkZWRWaWV3IiwicHJvcHMiLCJlbGVtZW50Iiwic2V0RWxlbWVudCIsIlJlYWN0IiwidXNlU3RhdGUiLCJmYWlsZWQiLCJzZXRGYWlsZWQiLCJ2aWV3SWRSZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwiYWxsb2NhdGVWaWV3SWQiLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJiYXNlIiwiZ2V0Q29udGV4dFJvb3QiLCJnZXRVSUNvbmZpZ1BhdGgiLCJkZXNjcmlwdG9yVXJsIiwiZGVzY3JpcHRvclBhdGgiLCJzZW5kUmVxdWVzdCIsImRlc2NyaXB0b3IiLCJjb250ZW50UGF0aCIsInZpZXdVcmwiLCJkYXRhIiwiY29uZmlnIiwiaWQiLCJkYXNoYm9hcmRWaWV3IiwicGFyZW50IiwicG9wVXAiLCJhcGkiLCJsb2FkZWQiLCJhZGREYXNoYm9hcmRWaWV3IiwiY3JlYXRlRWxlbWVudCIsIlZpZXciLCJrZXkiLCJwYXJhbWV0ZXJzIiwic3R5bGUiLCJwYWRkaW5nIiwiY29sb3IiLCJmb250U2l6ZSIsIkRhc2hib2FyZFBhbmVsIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsIm1pbkhlaWdodCIsIm92ZXJmbG93IiwiYm9yZGVyUmFkaXVzIiwiYm94U2hhZG93IiwiYm94U2l6aW5nIiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsInRpdGxlIiwiZmxleCIsImNoaWxkcmVuIiwiUG9ydGFsRGFzaGJvYXJkIiwibWVtbyIsImZvcndhcmRSZWYiLCJyZWYiLCJmaXJzdE5hbWUiLCJ1c2VNZW1vIiwiZ3JlZXRpbmciLCJpc1ZlbmRvciIsInZpZXdTZXEiLCJ1c2VDYWxsYmFjayIsImNsZWFyRGFzaGJvYXJkVmlld3MiLCJtYXJnaW4iLCJnYXAiLCJtaW5XaWR0aCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy9Qb3J0YWxEYXNoYm9hcmQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IFBhcGVyIGZyb20gJ0BtdWkvbWF0ZXJpYWwvUGFwZXInO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vUmVzdFV0aWxzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7Vmlld30gZnJvbSAnLi4vY29tcG9uZW50cy9sYXlvdXQvVmlldyc7XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuLyoqXG4gKiBGcmllbmRseSBmaXJzdCBuYW1lIGZvciB0aGUgd2VsY29tZSBiYW5uZXIuIFRoZSB1c2VyJ3MgZmlyc3QgbmFtZShzKSBsaXZlIG9uXG4gKiB0aGUgYG5hbWVgIGZpZWxkIChzdXJuYW1lIGlzIHRoZSBzZXBhcmF0ZSBgc3VybmFtZWAgZmllbGQ7IGBwcm9maWxlYCBpcyBvcmcvXG4gKiByb2xlIEpTT04sIG5vdCBuYW1lIGRhdGEpLiBGYWxscyBiYWNrIHRvIHRoZSB1c2VybmFtZSBsb2NhbC1wYXJ0LCBlbHNlIG51bGwuXG4gKi9cbmNvbnN0IHJlc29sdmVGaXJzdE5hbWUgPSAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGV0YWlscyA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpO1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRldGFpbHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBkZXRhaWxzLm5hbWU7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG5hbWUpICYmIGAke25hbWV9YC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX1gLnRyaW0oKS5zcGxpdCgvXFxzKy8pWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSBkZXRhaWxzLnVzZXJuYW1lO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh1c2VybmFtZSkgJiYgYCR7dXNlcm5hbWV9YC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGAke3VzZXJuYW1lfWAuc3BsaXQoJ0AnKVswXTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBoYW5kbGUuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFdoZXRoZXIgdGhlIHNpZ25lZC1pbiB1c2VyIGhvbGRzIHRoZSBnaXZlbiByb2xlIGluIGFueSBvZiB0aGVpciBvcmdhbmlzYXRpb25zLlxuICogUm9sZXMgbGl2ZSBpbiB0aGUgc3RyaW5naWZpZWQgYHByb2ZpbGVgIEpTT046IHsgb3JnYW5pc2F0aW9uczogW3sgcm9sZXMgfV0gfS5cbiAqIE1WUDogdGhlIGRhc2hib2FyZCBjYXJkIHZpc2liaWxpdHkgcnVsZSBpcyBoYXJkY29kZWQgYWdhaW5zdCB0aGlzOyBsYXRlciB0aGVcbiAqIGRlZmF1bHQgZGFzaGJvYXJkIGxheW91dCAoYW5kIHdoaWNoIGNhcmRzIHRvIHNob3cpIHdpbGwgY29tZSBmcm9tIGFuIEFQSS5cbiAqL1xuY29uc3QgdXNlckhhc1JvbGUgPSAocm9sZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRldGFpbHMgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKTtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZXRhaWxzKSB8fCBVdGlscy5pc051bGwoZGV0YWlscy5wcm9maWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2ZpbGUgPSBkZXRhaWxzLnByb2ZpbGU7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvZmlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHByb2ZpbGUgPSBKU09OLnBhcnNlKHByb2ZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JncyA9IHByb2ZpbGUgJiYgcHJvZmlsZS5vcmdhbmlzYXRpb25zO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3JncykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcmdzLnNvbWUoKG9yZykgPT4gQXJyYXkuaXNBcnJheShvcmcucm9sZXMpICYmIG9yZy5yb2xlcy5pbmNsdWRlcyhyb2xlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcblxuLyoqXG4gKiBSZXNvbHZlcyBhIGRhc2hib2FyZCBkZXNjcmlwdG9yICh0eXBlOiBcImRhc2hib2FyZFwiKSB0byBpdHMgY29udGVudCB2aWV3IGFuZFxuICogcmVuZGVycyBpdCBpbmxpbmUsIG1pcnJvcmluZyB0aGUgVklFVy1kaXNwbGF5IGJyYW5jaCBvZiBEYXNoYm9hcmQuanN4J3NcbiAqIERhc2hib2FyZENhcmQuIFRoZSBkZXNjcmlwdG9yJ3MgY29udGVudFBhdGggcG9pbnRzIGF0IHRoZSB2aWV3IHRvIGVtYmVkLlxuICovXG5jb25zdCBFbWJlZGRlZFZpZXcgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbZWxlbWVudCwgc2V0RWxlbWVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZmFpbGVkLCBzZXRGYWlsZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIC8vIE9uZSBzdGFibGUsIHVuaXF1ZSB2aWV3IGlkIGZvciB0aGlzIGNhcmQncyBsaWZldGltZSwgZHJhd24gZnJvbSB0aGVcbiAgICAvLyBkYXNoYm9hcmQtbGlmZWN5Y2xlIGNvdW50ZXIgc28gaXQgbmV2ZXIgY29sbGlkZXMgd2l0aCBhIHNpYmxpbmcgY2FyZC5cbiAgICBjb25zdCB2aWV3SWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgaWYgKHZpZXdJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHZpZXdJZFJlZi5jdXJyZW50ID0gcHJvcHMuYWxsb2NhdGVWaWV3SWQoKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVJQ29uZmlnUGF0aCgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yVXJsID0gYmFzZSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgcHJvcHMuZGVzY3JpcHRvclBhdGg7XG5cbiAgICAgICAgc2VuZFJlcXVlc3QoZGVzY3JpcHRvclVybCwgKGRlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZGVzY3JpcHRvcikgfHwgVXRpbHMuaXNOdWxsKGRlc2NyaXB0b3IuY29udGVudFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgc2V0RmFpbGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgdmlld1VybCA9IGJhc2UgKyAnL3ZpZXcvZ2V0P3ZlcnNpb249MS4wJmlkPScgKyBkZXNjcmlwdG9yLmNvbnRlbnRQYXRoO1xuICAgICAgICAgICAgc2VuZFJlcXVlc3Qodmlld1VybCwgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gQ2xvbmUgc28gd2UgbmV2ZXIgbXV0YXRlIGEgKHBvc3NpYmx5IGNhY2hlZCkgc2hhcmVkIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIC8vIGFuZCBzdGFtcCBhIHVuaXF1ZS1hbmQtc3RhYmxlIGlkIGZvciB0aGlzIGNhcmQgaW5zdGFuY2UuXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gey4uLmRhdGEsIGlkOiBkYXRhLmlkICsgJ18nICsgdmlld0lkUmVmLmN1cnJlbnQsIHdpbmRvdzogZmFsc2V9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZFZpZXcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwb3BVcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGREYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGRlc2NyaXB0b3IuY29udGVudFBhdGgpO1xuICAgICAgICAgICAgICAgIHNldEVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIDxWaWV3IGtleT17Y29uZmlnLmlkfSBjb25maWc9e2NvbmZpZ30gcGFyYW1ldGVycz17W119IGhhbmRsZT17ZGFzaGJvYXJkVmlldy5oYW5kbGV9Lz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICBzZXRGYWlsZWQodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICBzZXRGYWlsZWQodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgIH0sIFtwcm9wcy5kZXNjcmlwdG9yUGF0aF0pO1xuXG4gICAgaWYgKGZhaWxlZCkge1xuICAgICAgICByZXR1cm4gPGRpdiBzdHlsZT17e3BhZGRpbmc6ICcxNnB4JywgY29sb3I6ICcjOWFhM2IxJywgZm9udFNpemU6ICcxM3B4J319PlVuYWJsZSB0byBsb2FkLjwvZGl2PjtcbiAgICB9XG5cbiAgICBpZiAoVXRpbHMuaXNOdWxsKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiA8ZGl2IHN0eWxlPXt7cGFkZGluZzogJzE2cHgnLCBjb2xvcjogJyM5YWEzYjEnLCBmb250U2l6ZTogJzEzcHgnfX0+TG9hZGluZ+KApjwvZGl2PjtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbn07XG5cbi8qKlxuICogUGFuZWwgd3JhcHBlciBnaXZpbmcgZWFjaCBlbWJlZGRlZCBjYXJkIGEgdGl0bGVkLCBzY3JvbGxhYmxlIGZyYW1lLiBGaWxsc1xuICogaXRzIHBhcmVudCBzbG90OyBjYWxsZXJzIHBhc3MgYHN0eWxlYCB0byBjb250cm9sIGl0cyBmbGV4IHNoYXJlL2hlaWdodFxuICogd2l0aGluIHRoZSBncmlkIGNvbHVtbnMuXG4gKi9cbmNvbnN0IERhc2hib2FyZFBhbmVsID0gKHByb3BzKSA9PiAoXG4gICAgPFBhcGVyIHN0eWxlPXt7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBtaW5IZWlnaHQ6IDAsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggM3B4IHJnYmEoMjAsIDM1LCA2MCwgMC4wOCknLFxuICAgICAgICBwYWRkaW5nOiAnMTZweCcsXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAuLi4ocHJvcHMuc3R5bGUgfHwge30pXG4gICAgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgICAgICAgICBjb2xvcjogJyMxYTNjNWUnLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnMTJweCdcbiAgICAgICAgfX0+XG4gICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAwLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJ1xuICAgICAgICB9fT5cbiAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9QYXBlcj5cbik7XG5cbmNvbnN0IFBvcnRhbERhc2hib2FyZCA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuICdwb3J0YWwtZGFzaGJvYXJkJztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGUgPSB7XG4gICAgICAgIGFwaTogYXBpXG4gICAgfTtcblxuICAgIGNvbnN0IGZpcnN0TmFtZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gcmVzb2x2ZUZpcnN0TmFtZSgpLCBbXSk7XG4gICAgY29uc3QgZ3JlZXRpbmcgPSBVdGlscy5pc051bGwoZmlyc3ROYW1lKSA/ICdXZWxjb21lIGJhY2snIDogYEhpICR7Zmlyc3ROYW1lfSwgd2VsY29tZSBiYWNrYDtcblxuICAgIC8vIE1WUCBydWxlIChoYXJkY29kZWQpOiB0aGUgcHJvY3VyZW1lbnQgcm93IChQdWJsaWNhdGlvbnMgLyBSZWdpc3RyYXRpb25zIC9cbiAgICAvLyBCaWRzKSBvbmx5IHNob3dzIGZvciB1c2VycyB3aXRoIHRoZSBWRU5ET1Igcm9sZS4gVGhpcyB3aWxsIGJlIGRyaXZlbiBieVxuICAgIC8vIHRoZSBkZWZhdWx0IGRhc2hib2FyZCBzZXR0aW5ncyBBUEkgbGF0ZXIuXG4gICAgY29uc3QgaXNWZW5kb3IgPSBSZWFjdC51c2VNZW1vKCgpID0+IHVzZXJIYXNSb2xlKCdWRU5ET1InKSwgW10pO1xuXG4gICAgLy8gVmlldy1pZCBjb3VudGVyIHNjb3BlZCB0byB0aGlzIGRhc2hib2FyZCdzIGxpZmVjeWNsZTogaW5pdGlhdGVkIG9uIGxvYWQsXG4gICAgLy8gaW5jcmVtZW50cyBwZXIgY2FyZCBhcyBuZWVkZWQuIFJlc3RhcnRpbmcgb24gZWFjaCBsb2FkIGlzIHNhZmUgYmVjYXVzZSB3ZVxuICAgIC8vIHVubG9hZCBldmVyeSBjYXJkIHZpZXcgb24gZGVzdHJveSAoYmVsb3cpLCBzbyBubyBzdGFsZSBpZHMvc3Vic2NyaXB0aW9uc1xuICAgIC8vIHN1cnZpdmUgdG8gY29sbGlkZSB3aXRoIHRoZSBuZXh0IGxvYWQuXG4gICAgY29uc3Qgdmlld1NlcSA9IFJlYWN0LnVzZVJlZigwKTtcbiAgICBjb25zdCBhbGxvY2F0ZVZpZXdJZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+ICsrdmlld1NlcS5jdXJyZW50LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgLy8gVW5sb2FkIGFsbCBkYXNoYm9hcmQgY2FyZCB2aWV3cyBvbiBkZXN0cm95LiBXaXRob3V0IHRoaXMgdGhlIGV2ZW50XG4gICAgICAgICAgICAvLyBidXMga2VlcHMgdGhlaXIgc3Vic2NyaXB0aW9ucyBhbmQgd291bGQgcmVzcG9uZCB0byBldmVudHMgZm9yXG4gICAgICAgICAgICAvLyB0aGVzZSAobm93IHVubW91bnRlZCkgdmlld3MgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXJEYXNoYm9hcmRWaWV3cygpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IHN0eWxlPXt7cGFkZGluZzogJzE2cHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94J319PlxuICAgICAgICAgICAgPHAgc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnLCBtYXJnaW46ICcwIDAgMTJweCA0cHgnLCBjb2xvcjogJyMxYTNjNWUnfX0+e2dyZWV0aW5nfTwvcD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgZ2FwOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDBkdmggLSB2YXIoLS1oZWFkZXItaCwgNjRweCkgLSAxMDBweCknXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICB7LyogUm93IDEg4oCUIE15IFRhc2tzIC8gQ2FsZW5kYXIgKDIgY29sdW1ucykgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTBweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnTXkgVGFza3MnfSBzdHlsZT17e2ZsZXg6IDEsIG1pbldpZHRoOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RW1iZWRkZWRWaWV3IGRlc2NyaXB0b3JQYXRoPXsnL3BvcnRhbC9kYXNoYm9hcmRzL215LXdvcmstaXRlbXMuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgICAgICA8RGFzaGJvYXJkUGFuZWwgdGl0bGU9eydDYWxlbmRhcid9IHN0eWxlPXt7ZmxleDogMSwgbWluV2lkdGg6IDB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvbXktY2FsZW5kYXIuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiBSb3cgMiDigJQgUHVibGljYXRpb25zIC8gTXkgUmVnaXN0cmF0aW9ucyAvIE15IEJpZHMgKDMgY29sdW1ucykuXG4gICAgICAgICAgICAgICAgICAgIE9ubHkgcmVuZGVyZWQgZm9yIFZFTkRPUiB1c2VycyAoTVZQIGhhcmRjb2RlZCBydWxlKS4gKi99XG4gICAgICAgICAgICAgICAge2lzVmVuZG9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzEwcHgnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnUHVibGljYXRpb25zJ30gc3R5bGU9e3tmbGV4OiAxLCBtaW5XaWR0aDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvcHVibGljYXRpb25zLmpzb24nfSBhbGxvY2F0ZVZpZXdJZD17YWxsb2NhdGVWaWV3SWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGFzaGJvYXJkUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGFzaGJvYXJkUGFuZWwgdGl0bGU9eydNeSBSZWdpc3RyYXRpb25zJ30gc3R5bGU9e3tmbGV4OiAxLCBtaW5XaWR0aDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvbXktcmVnaXN0cmF0aW9ucy5qc29uJ30gYWxsb2NhdGVWaWV3SWQ9e2FsbG9jYXRlVmlld0lkfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnTXkgQmlkcyd9IHN0eWxlPXt7ZmxleDogMSwgbWluV2lkdGg6IDB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RW1iZWRkZWRWaWV3IGRlc2NyaXB0b3JQYXRoPXsnL3BvcnRhbC9kYXNoYm9hcmRzL215LWJpZHMuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EYXNoYm9hcmRQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWxEYXNoYm9hcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLG1CQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFBK0MsU0FBQUQsdUJBQUFPLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxDQUFBLEVBQUFJLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQVAsQ0FBQSxPQUFBTSxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBUixDQUFBLEdBQUFJLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFYLENBQUEsRUFBQUksQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agilemotion/oui-react-js",
3
- "version": "2.0.21",
3
+ "version": "2.0.23",
4
4
  "description": "AgileMotion React UI Component Library - A comprehensive collection of dashboard components, forms, media controls, and more",
5
5
  "license": "ISC",
6
6
  "author": "",