@startlibs/components 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/lib/BasicBulletList.mjs +9 -0
  2. package/lib/BasicBulletList.mjs.map +1 -0
  3. package/lib/Button.mjs +95 -0
  4. package/lib/Button.mjs.map +1 -0
  5. package/lib/ContextMenu.mjs +452 -0
  6. package/lib/ContextMenu.mjs.map +1 -0
  7. package/lib/Dialog.mjs +232 -0
  8. package/lib/Dialog.mjs.map +1 -0
  9. package/lib/Draggable.mjs +880 -0
  10. package/lib/Draggable.mjs.map +1 -0
  11. package/lib/ErrorBoundary.mjs +108 -0
  12. package/lib/ErrorBoundary.mjs.map +1 -0
  13. package/lib/FillLastLineResizer.mjs +238 -0
  14. package/lib/FillLastLineResizer.mjs.map +1 -0
  15. package/lib/Flip.mjs +604 -0
  16. package/lib/Flip.mjs.map +1 -0
  17. package/lib/FlipList.mjs +186 -0
  18. package/lib/FlipList.mjs.map +1 -0
  19. package/lib/FormatDate.mjs +25 -0
  20. package/lib/FormatDate.mjs.map +1 -0
  21. package/lib/Icon.mjs +50 -0
  22. package/lib/Icon.mjs.map +1 -0
  23. package/lib/Image.mjs +41 -0
  24. package/lib/Image.mjs.map +1 -0
  25. package/lib/Link.mjs +116 -0
  26. package/lib/Link.mjs.map +1 -0
  27. package/lib/Loading.mjs +10 -0
  28. package/lib/Loading.mjs.map +1 -0
  29. package/lib/LoadingDiv.mjs +83 -0
  30. package/lib/LoadingDiv.mjs.map +1 -0
  31. package/lib/Notifications.mjs +63 -0
  32. package/lib/Notifications.mjs.map +1 -0
  33. package/lib/PageLoader.mjs +42 -0
  34. package/lib/PageLoader.mjs.map +1 -0
  35. package/lib/PersistentNotifications.mjs +130 -0
  36. package/lib/PersistentNotifications.mjs.map +1 -0
  37. package/lib/Popup.mjs +49 -0
  38. package/lib/Popup.mjs.map +1 -0
  39. package/lib/SplitColumnsContainer.mjs +43 -0
  40. package/lib/SplitColumnsContainer.mjs.map +1 -0
  41. package/lib/SwitchDiv.mjs +61 -0
  42. package/lib/SwitchDiv.mjs.map +1 -0
  43. package/lib/TextButton.mjs +41 -0
  44. package/lib/TextButton.mjs.map +1 -0
  45. package/lib/ToastNotifications.mjs +215 -0
  46. package/lib/ToastNotifications.mjs.map +1 -0
  47. package/lib/Tooltip.mjs +160 -0
  48. package/lib/Tooltip.mjs.map +1 -0
  49. package/lib/TransitionDiv.mjs +56 -0
  50. package/lib/TransitionDiv.mjs.map +1 -0
  51. package/lib/WarningDialog.mjs +84 -0
  52. package/lib/WarningDialog.mjs.map +1 -0
  53. package/lib/alt/buttons/OnClickLoadingButton.mjs +36 -0
  54. package/lib/alt/buttons/OnClickLoadingButton.mjs.map +1 -0
  55. package/lib/alt/dialogs/DialogWithImageHeader.mjs +14 -0
  56. package/lib/alt/dialogs/DialogWithImageHeader.mjs.map +1 -0
  57. package/lib/alt/dialogs/DialogWithSidebar.mjs +106 -0
  58. package/lib/alt/dialogs/DialogWithSidebar.mjs.map +1 -0
  59. package/lib/alt/dialogs/MobileBubbleDialog.mjs +49 -0
  60. package/lib/alt/dialogs/MobileBubbleDialog.mjs.map +1 -0
  61. package/lib/containers/DialogContainer.mjs +413 -0
  62. package/lib/containers/DialogContainer.mjs.map +1 -0
  63. package/lib/containers/Reposition.mjs +35 -0
  64. package/lib/containers/Reposition.mjs.map +1 -0
  65. package/lib/containers/usePositioning.mjs +294 -0
  66. package/lib/containers/usePositioning.mjs.map +1 -0
  67. package/lib/index.cjs +5000 -0
  68. package/lib/index.cjs.map +1 -0
  69. package/lib/index.mjs +37 -0
  70. package/lib/index.mjs.map +1 -0
  71. package/lib/useDialogWithToggle.mjs +18 -0
  72. package/lib/useDialogWithToggle.mjs.map +1 -0
  73. package/lib/willUseIsSticky.mjs +123 -0
  74. package/lib/willUseIsSticky.mjs.map +1 -0
  75. package/package.json +44 -29
  76. package/src/BasicBulletList.jsx +21 -0
  77. package/src/Button.jsx +288 -0
  78. package/src/ContextMenu.jsx +621 -0
  79. package/src/Dialog.jsx +413 -0
  80. package/src/Draggable.jsx +801 -0
  81. package/src/ErrorBoundary.jsx +75 -0
  82. package/src/FillLastLineResizer.jsx +226 -0
  83. package/src/Flip.jsx +560 -0
  84. package/src/FlipList.jsx +136 -0
  85. package/src/FormatDate.jsx +9 -0
  86. package/src/Icon.jsx +49 -0
  87. package/src/Image.jsx +23 -0
  88. package/src/Link.jsx +68 -0
  89. package/src/Loading.jsx +29 -0
  90. package/src/LoadingDiv.jsx +75 -0
  91. package/src/Notifications.jsx +89 -0
  92. package/src/PageLoader.jsx +48 -0
  93. package/src/PersistentNotifications.jsx +182 -0
  94. package/src/Popup.jsx +49 -0
  95. package/src/SplitColumnsContainer.jsx +63 -0
  96. package/src/SwitchDiv.jsx +30 -0
  97. package/src/TextButton.jsx +34 -0
  98. package/src/ToastNotifications.jsx +298 -0
  99. package/src/Tooltip.jsx +158 -0
  100. package/src/TransitionDiv.jsx +34 -0
  101. package/src/WarningDialog.jsx +70 -0
  102. package/src/alt/buttons/OnClickLoadingButton.jsx +16 -0
  103. package/src/alt/dialogs/DialogWithImageHeader.jsx +42 -0
  104. package/src/alt/dialogs/DialogWithSidebar.jsx +135 -0
  105. package/src/alt/dialogs/MobileBubbleDialog.jsx +56 -0
  106. package/src/containers/DialogContainer.jsx +423 -0
  107. package/src/containers/Reposition.jsx +24 -0
  108. package/src/containers/usePositioning.jsx +305 -0
  109. package/src/index.js +35 -0
  110. package/src/useDialogWithToggle.jsx +12 -0
  111. package/src/willUseIsSticky.jsx +113 -0
  112. package/.babelrc +0 -27
  113. package/lib/index.js +0 -5196
  114. package/rollup.config.js +0 -52
@@ -0,0 +1,413 @@
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import _taggedTemplateLiteral from '@babel/runtime/helpers/taggedTemplateLiteral';
4
+ import _get from 'lodash/fp/get';
5
+ import React, { forwardRef, useRef, useEffect } from 'react';
6
+ import styled from 'styled-components';
7
+ import { willUseLayers, useEnsureRef, useRefState, Fill, Slot } from '@startlibs/core';
8
+ import { oneWayAnimation, twoWayAnimation, media, identityOpacityFrames, callIfFunction } from '@startlibs/utils';
9
+ import { ErrorBoundary } from '../ErrorBoundary.mjs';
10
+ import { useFlipAnimation } from '../Flip.mjs';
11
+
12
+ const _excluded = ["timing", "nestedFlip", "enterEffect", "leaveEffect", "modalIn", "modalOut", "blurBackdrop"];
13
+ var _templateObject, _templateObject2;
14
+ const dialogFadeInDown = oneWayAnimation('opacity: 0; transform: translateY(50px);', 'opacity: 1; transform: translateY(0);');
15
+ const [dialogModalIn, dialogModalOut] = twoWayAnimation('opacity: 0;', 'opacity: 1;');
16
+ const Modal = /*#__PURE__*/styled.div.withConfig({
17
+ displayName: "DialogContainer__Modal",
18
+ componentId: "sc-wendlg-0"
19
+ })(["position:fixed;top:0;bottom:0;left:0;right:0;will-change:opacity;background-color:rgba(0,0,0,0.7);", ""], props => props.$blurBackdrop && "backdrop-filter: blur(10px);");
20
+ const ModalContainer = /*#__PURE__*/styled.div.withConfig({
21
+ displayName: "DialogContainer__ModalContainer",
22
+ componentId: "sc-wendlg-1"
23
+ })(["position:fixed;top:0;bottom:0;left:0;right:0;scrollbar-color:transparent transparent;"]);
24
+ const DialogCenter = /*#__PURE__*/styled.div.withConfig({
25
+ displayName: "DialogContainer__DialogCenter",
26
+ componentId: "sc-wendlg-2"
27
+ })(["@supports (position:sticky){will-change:transform,opacity;&.JS-wc-off{will-change:auto;}}display:-webkit-box;display:-ms-flexbox;display:flex;overflow-y:", ";overflow-x:hidden;scrollbar-color:rgba(255,255,255,0.6) transparent;position:fixed;top:0;bottom:0;left:0;right:0;align-items:center;", " ", ""], props => props.withScroll ? "scroll" : "hidden", media.desktop(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: ", ";\n "])), props => props.fullscreen ? '1rem' : '3rem 0.5rem;'), media.mobile(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n padding: ", ";\n "])), props => props.fullscreenOnMobile ? '0' : '0.5rem'));
28
+ const PopupSlot = /*#__PURE__*/styled(Slot).withConfig({
29
+ displayName: "DialogContainer__PopupSlot",
30
+ componentId: "sc-wendlg-3"
31
+ })(["position:absolute;left:0;top:0;width:100%;"]);
32
+ const editableSelector = 'textarea,input,[contenteditable]';
33
+ const focusableSelector = 'button,a,' + editableSelector;
34
+ const shouldPreventResolvers = [];
35
+ let shouldPreventDialogPop = Promise.resolve();
36
+ const preventDialogPop = cb => {
37
+ shouldPreventDialogPop = shouldPreventDialogPop.then(() => {
38
+ new Promise(res => {
39
+ shouldPreventResolvers.push(res);
40
+ cb();
41
+ });
42
+ });
43
+ };
44
+ const waitForPop = () => {
45
+ return shouldPreventDialogPop;
46
+ };
47
+ const preventDialogPopState = e => {
48
+ const resolver = shouldPreventResolvers.shift();
49
+ if (resolver) {
50
+ e.stopImmediatePropagation();
51
+ resolver();
52
+ }
53
+ };
54
+ window.addEventListener("popstate", preventDialogPopState);
55
+ const fixPosition = (query, fn) => {
56
+ const elements = document.querySelectorAll(query);
57
+ if (elements.length) {
58
+ Array.prototype.slice.call(elements).forEach(fn);
59
+ }
60
+ };
61
+ let openLayers = 0;
62
+ let fakedScrollTop = 0;
63
+ const isFakeScrolled = () => openLayers > 0 && fakedScrollTop > 0;
64
+ const removeWindowScroll = (opening, keepDisabledScroll) => {
65
+ if (opening) {
66
+ openLayers = Math.max(openLayers + 1, 1);
67
+ if (openLayers > 1) {
68
+ return;
69
+ }
70
+ } else {
71
+ openLayers = Math.min(openLayers - 1, 0);
72
+ if (openLayers < 0) {
73
+ return;
74
+ }
75
+ }
76
+ const finishReset = (marginRight, scrollTop) => {
77
+ // body.style.paddingRight = marginRight + 'px'
78
+ window.scroll(window.scrollLeft || window.scrollX || 0, scrollTop);
79
+ if (keepDisabledScroll) {
80
+ return;
81
+ }
82
+ fixPosition('.navbar,.JS-fix-dialog-scroll', n => {
83
+ if (opening) {
84
+ const {
85
+ right
86
+ } = window.getComputedStyle(n);
87
+ n.style.right = parseInt(right) + marginRight + 'px';
88
+ } else {
89
+ n.style.right = null;
90
+ }
91
+ });
92
+ fixPosition('.JS-fix-dialog-scroll-transform', n => {
93
+ if (marginRight) {
94
+ n.style.transform = window.getComputedStyle(n).transform + " translateX(-".concat(marginRight / 2, "px)");
95
+ } else {
96
+ n.style.transform = null;
97
+ }
98
+ });
99
+ fixPosition('.JS-on-open-dialog', n => {
100
+ if (opening) {
101
+ n.classList.add('JS-dialog-open');
102
+ } else {
103
+ n.classList.remove('JS-dialog-open');
104
+ }
105
+ });
106
+ window.requestAnimationFrame(() => window.dispatchEvent(new CustomEvent('resize', {
107
+ detail: {
108
+ dialog: true
109
+ }
110
+ })));
111
+ };
112
+ const body = document.body;
113
+ let bodyWidth = body.offsetWidth;
114
+ if (opening) {
115
+ const scrollTop = window.pageYOffset;
116
+ fakedScrollTop = scrollTop;
117
+ if (keepDisabledScroll) {
118
+ body.style.overflowY = 'scroll';
119
+ } else {
120
+ body.style.overflow = 'hidden';
121
+ }
122
+ const marginRight = body.offsetWidth - bodyWidth;
123
+ body.style.position = 'fixed';
124
+ body.style.top = -scrollTop + "px";
125
+ body.style.left = '0';
126
+ if (!keepDisabledScroll) {
127
+ body.style.right = marginRight + 'px';
128
+ } else {
129
+ body.style.right = '0';
130
+ }
131
+ finishReset(marginRight, scrollTop);
132
+ } else {
133
+ fakedScrollTop = 0;
134
+ // setTimeout(() => {
135
+ const scrollTop = parseInt(body.style.top);
136
+ body.style.overflow = '';
137
+ body.style.position = '';
138
+ body.style.top = '';
139
+ body.style.left = '';
140
+ body.style.right = '';
141
+ finishReset(0, -scrollTop);
142
+ // },250)
143
+ }
144
+ };
145
+ const [useDialogLayers, getDialogLayersSize] = willUseLayers(React.useLayoutEffect);
146
+ const DialogContainer = /*#__PURE__*/forwardRef((_ref, forwardedRef) => {
147
+ let {
148
+ children,
149
+ title,
150
+ closeDialog,
151
+ closeOnClick,
152
+ dontRefocus,
153
+ onConfirm,
154
+ prev,
155
+ next,
156
+ form,
157
+ noFormWrap,
158
+ withFormWrap,
159
+ placement = 'Dialog',
160
+ DialogErrorContent,
161
+ customHref,
162
+ animation = dialogFadeInDown,
163
+ animationTiming,
164
+ animationLeaveEffect,
165
+ animationEnterEffect,
166
+ skipKeys,
167
+ fullscreenOnMobile,
168
+ fullscreen,
169
+ confirmChanges = false,
170
+ skipDom,
171
+ modalRef,
172
+ skipCheckFocus,
173
+ autoComplete,
174
+ blurBackdrop
175
+ } = _ref;
176
+ const dialogRef = useEnsureRef(forwardedRef);
177
+ const prevActiveElement = useRefState(document.activeElement);
178
+ const modal = useEnsureRef(modalRef);
179
+ const modalScroll = useRef();
180
+ const mouseDownInModal = useRefState();
181
+ const previousHash = useRefState(window.location.hash);
182
+ const [layerIndex, {
183
+ isTop,
184
+ getSize
185
+ }] = useDialogLayers({
186
+ onFirst: () => {
187
+ waitForPop().then(() => {
188
+ if (customHref && encodeURI(customHref) === window.location.hash) {
189
+ window.history.replaceState(history.state, '', window.location.pathname);
190
+ window.history.pushState({
191
+ dialog: true
192
+ }, '', customHref);
193
+ } else {
194
+ window.history.pushState({
195
+ dialog: true
196
+ }, '', window.location.href + (customHref || ""));
197
+ }
198
+ });
199
+ // clearPreventDialogPop()
200
+ if (document.body.scrollHeight === document.body.clientHeight) {
201
+ modal.current.style.overflowY = "scroll";
202
+ if (modalScroll.current) {
203
+ modalScroll.current.style.overflowY = "scroll";
204
+ }
205
+ }
206
+ // resetNavbar(true)
207
+ },
208
+ onRemove: layers => {
209
+ if (layers === 0 && _get('dialog', window.history.state) === true || customHref && window.location.hash === encodeURI(customHref)) {
210
+ preventDialogPop(() => {
211
+ window.history.back();
212
+ });
213
+ }
214
+ },
215
+ onEmpty: () => {
216
+ if (document.body.scrollHeight > document.body.clientHeight) {
217
+ if (modalScroll.current) {
218
+ modalScroll.current.style.overflowY = "hidden";
219
+ }
220
+ } else if (modal.current) {
221
+ modal.current.style.overflowY = "scroll";
222
+ }
223
+ removeWindowScroll(false);
224
+ }
225
+ });
226
+ const confirmCloseDialog = () => {
227
+ if (form && form.getHasChanged() && confirmChanges) {
228
+ form.confirm().then(closeDialog);
229
+ } else {
230
+ callIfFunction(closeDialog);
231
+ }
232
+ };
233
+ /*
234
+ useEffect(() => () => {
235
+ setTimeout(() => {
236
+ if (window.location.hash === previousHash.get() && _.get('dialog', window.history.state) === true) {
237
+ console.log("???")
238
+ }
239
+ }, 100)
240
+ }, [])*/
241
+
242
+ React.useRef();
243
+ useEffect(() => {
244
+ if (customHref && window.location.hash !== customHref) {
245
+ // if (pastFirstTime.current) {
246
+ waitForPop().then(() => {
247
+ if (window.location.hash) {
248
+ window.history.replaceState({
249
+ dialog: true
250
+ }, '', customHref);
251
+ } else {
252
+ window.history.pushState({
253
+ dialog: true
254
+ }, '', customHref);
255
+ }
256
+ });
257
+ // } else {
258
+ // window.history.pushState({dialog: true}, '', customHref)
259
+ // pastFirstTime.current = true
260
+ // }
261
+ previousHash.set(encodeURI(customHref));
262
+ }
263
+ }, [customHref]);
264
+ useEffect(() => {
265
+ window.addEventListener('keydown', checkKey);
266
+ window.addEventListener('focusin', checkFocus);
267
+ window.addEventListener('popstate', checkHistory);
268
+ return () => {
269
+ window.removeEventListener('keydown', checkKey);
270
+ window.removeEventListener('focusin', checkFocus);
271
+ window.removeEventListener('popstate', checkHistory);
272
+ if (!dontRefocus && document.body.contains(prevActiveElement.get()) && prevActiveElement.get().matches(focusableSelector)) {
273
+ setTimeout(() => prevActiveElement.get().focus(), 0);
274
+ }
275
+ };
276
+ }, []);
277
+ const checkHistory = e => {
278
+ if (!isTop() /* || (previousHash.get() !== window.location.hash && !customHref)*/) return;
279
+ if (_get('willOpenDialog', window.history.state) === true) {
280
+ return;
281
+ }
282
+ if (_get('dialog', window.history.state) !== true) {
283
+ window.history.pushState({
284
+ dialog: true
285
+ }, '', window.location.href);
286
+ }
287
+ confirmCloseDialog();
288
+ };
289
+ const checkFocus = e => {
290
+ if (!isTop() || skipCheckFocus) return;
291
+ if (modal.current && !e.target.closest('.' + modal.current.className.split(' ').join('.'))) {
292
+ const nextTab = modal.current.querySelector('[tabindex]');
293
+ if (nextTab) nextTab.focus();
294
+ }
295
+ };
296
+ const checkKey = e => {
297
+ var _e$target, _e$target2;
298
+ if (!isTop() || skipKeys || ((_e$target = e.target) === null || _e$target === void 0 || (_e$target = _e$target.className) === null || _e$target === void 0 ? void 0 : _e$target.indexOf("JS-dialog-skip-evts")) >= 0 || (_e$target2 = e.target) !== null && _e$target2 !== void 0 && _e$target2.closest(".JS-dialog-skip-evts")) return;
299
+ if (modal.current && e.shiftKey && e.keyCode === 9 && modal.current.querySelector('[tabindex]') === document.activeElement) {
300
+ e.preventDefault();
301
+ const prevTab = [].slice.call(modal.current.querySelectorAll('[tabindex]')).reduce((acc, el) => el.tabIndex >= acc.tabIndex ? el : acc, {
302
+ tabIndex: -1
303
+ });
304
+ if (prevTab && prevTab.focus) prevTab.focus();
305
+ }
306
+ if (e.key === 'Escape') {
307
+ e.preventDefault();
308
+ confirmCloseDialog();
309
+ } else if (e.key === 'Enter') {
310
+ if (e.target) {
311
+ const target = e.target.closest(focusableSelector + ',div');
312
+ if (target && (target.tagName.toLowerCase() !== 'input' || target.form || target.type.toLowerCase() === 'file') && target.matches(focusableSelector)) return;
313
+ }
314
+ e.preventDefault();
315
+ e.stopPropagation();
316
+ if (onConfirm) {
317
+ onConfirm();
318
+ } else if (form) {
319
+ form.submitForm();
320
+ }
321
+ } else if (!e.target.matches(editableSelector)) {
322
+ if (e.key === 'ArrowLeft' && prev) {
323
+ prev();
324
+ } else if (e.key === 'ArrowRight' && next) {
325
+ next();
326
+ }
327
+ }
328
+ };
329
+ const checkClick = e => {
330
+ if (closeOnClick && e.target === e.currentTarget && mouseDownInModal.get()) {
331
+ confirmCloseDialog();
332
+ }
333
+ mouseDownInModal.set(false);
334
+ };
335
+ const mouseDown = e => {
336
+ mouseDownInModal.set(e.target === e.currentTarget);
337
+ };
338
+ const usingForm = withFormWrap || form && !noFormWrap;
339
+ useFlipAnimation(dialogRef, animation, true, {
340
+ nestedFlip: !skipDom,
341
+ onEnterEnd: () => {
342
+ if (getSize() === 1) {
343
+ removeWindowScroll(true);
344
+ }
345
+ if (document.body.scrollHeight === document.body.clientHeight) {
346
+ modal.current.style.overflowY = "none";
347
+ }
348
+ if (modalScroll.current) {
349
+ modalScroll.current.style.overflowY = "scroll";
350
+ }
351
+ },
352
+ leaveEffect: animationLeaveEffect,
353
+ enterEffect: animationEnterEffect,
354
+ timing: animationTiming
355
+ });
356
+ useFlipAnimation(modal, !skipDom && identityOpacityFrames, true, {
357
+ timing: animationTiming
358
+ });
359
+ const content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PopupSlot, {
360
+ name: 'Popup-' + layerIndex
361
+ }), /*#__PURE__*/React.createElement(ErrorBoundary, {
362
+ title: callIfFunction(title),
363
+ closeDialog: closeDialog,
364
+ Error: DialogErrorContent
365
+ }, callIfFunction(children, {
366
+ confirmCloseDialog
367
+ }, dialogRef, fullscreenOnMobile)));
368
+ return /*#__PURE__*/React.createElement(Fill, {
369
+ name: placement
370
+ }, skipDom ? content : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AnimatedModal, {
371
+ timing: animationTiming,
372
+ blurBackdrop: blurBackdrop
373
+ }), /*#__PURE__*/React.createElement(ModalContainer, {
374
+ ref: modal
375
+ }, /*#__PURE__*/React.createElement(DialogCenter, {
376
+ autoComplete: autoComplete,
377
+ className: "JS-has-wc",
378
+ withScroll: getSize() > 1,
379
+ fullscreen: fullscreen,
380
+ fullscreenOnMobile: fullscreenOnMobile,
381
+ ref: modalScroll,
382
+ as: usingForm ? 'form' : undefined,
383
+ onClick: checkClick,
384
+ onSubmit: usingForm ? () => {} : undefined,
385
+ onMouseDown: mouseDown
386
+ }, content))));
387
+ });
388
+ const AnimatedModal = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
389
+ let {
390
+ timing,
391
+ nestedFlip,
392
+ enterEffect,
393
+ leaveEffect,
394
+ modalIn = dialogModalIn,
395
+ modalOut = dialogModalOut,
396
+ blurBackdrop
397
+ } = _ref2,
398
+ props = _objectWithoutProperties(_ref2, _excluded);
399
+ const modal = useEnsureRef(ref);
400
+ useFlipAnimation(modal, modalIn, modalOut, {
401
+ timing,
402
+ nestedFlip,
403
+ leaveEffect,
404
+ enterEffect
405
+ });
406
+ return /*#__PURE__*/React.createElement(Modal, _extends({}, props, {
407
+ $blurBackdrop: blurBackdrop,
408
+ ref: modal
409
+ }));
410
+ });
411
+
412
+ export { AnimatedModal, DialogContainer, Modal, ModalContainer, dialogFadeInDown, dialogModalIn, dialogModalOut, getDialogLayersSize, isFakeScrolled, preventDialogPop, removeWindowScroll, useDialogLayers, waitForPop };
413
+ //# sourceMappingURL=DialogContainer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogContainer.mjs","sources":["../../src/containers/DialogContainer.jsx"],"sourcesContent":["import React, {forwardRef, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport _ from 'lodash/fp'\nimport {Fill, Slot, useEnsureRef, useRefState, willUseLayers} from '@startlibs/core'\nimport {callIfFunction, identityOpacityFrames, media, oneWayAnimation, twoWayAnimation} from '@startlibs/utils'\nimport {ErrorBoundary} from '../ErrorBoundary'\nimport {useFlipAnimation} from '../Flip'\n\nexport const dialogFadeInDown = oneWayAnimation('opacity: 0; transform: translateY(50px);', 'opacity: 1; transform: translateY(0);')\nconst [dialogModalIn, dialogModalOut] = twoWayAnimation('opacity: 0;', 'opacity: 1;')\nexport {dialogModalIn, dialogModalOut}\n\nexport const Modal = styled.div`\n position: fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n will-change: opacity;\n background-color: rgba(0,0,0,0.7);\n ${props => props.$blurBackdrop && `backdrop-filter: blur(10px);`}\n`\n\nexport const ModalContainer = styled.div`\n position: fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n /* Barra invisível mantendo a LARGURA NATIVA da calha (scrollbar-color não\n colapsa a largura como scrollbar-width:none / ::-webkit-scrollbar faziam).\n Essa calha compensa a remoção da scrollbar do body ao abrir a dialog (body\n vira overflow:hidden e o viewport alarga ~15px no fim da animação); sem ela,\n a dialog centralizada dá um pulinho lateral. Aqui: sem barra visível e sem salto. */\n scrollbar-color: transparent transparent;\n`\n\nconst DialogCenter = styled.div`\n @supports (position:sticky) {\n will-change: transform, opacity;\n &.JS-wc-off {\n will-change: auto;\n }\n } \n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n overflow-y: ${props => props.withScroll ? \"scroll\" : \"hidden\"};\n overflow-x:hidden;\n /* idem ModalContainer: calha nativa reservada (sem salto), track invisível — mas o\n polegar é visível, senão dialog mais alta que a tela rola sem nenhuma pista.\n Claro porque a calha fica sobre o backdrop escuro. Sem overflow, o Chromium não\n desenha polegar → não sobra track fantasma. */\n scrollbar-color: rgba(255,255,255,0.6) transparent;\n position:fixed;\n top:0;\n bottom:0;\n left:0;\n right:0;\n align-items: center;\n ${media.desktop`\n padding: ${props => props.fullscreen ? '1rem' : '3rem 0.5rem;'};\n `}\n ${media.mobile`\n padding: ${props => props.fullscreenOnMobile ? '0' : '0.5rem'};\n `}\n`\n\nconst PopupSlot = styled(Slot)`\nposition: absolute;\nleft:0;\ntop: 0;\nwidth: 100%;\n`\nconst RelativeSlot = styled(Slot)`\nwidth:100%;\nposition: absolute;\n`\nconst editableSelector = 'textarea,input,[contenteditable]'\nconst focusableSelector = 'button,a,'+editableSelector\n\nconst shouldPreventResolvers = []\nlet shouldPreventDialogPop = Promise.resolve()\nexport const preventDialogPop = (cb) => {\n shouldPreventDialogPop = shouldPreventDialogPop.then(() => {\n new Promise((res) => {\n shouldPreventResolvers.push(res)\n cb()\n })\n })\n}\nexport const waitForPop = () => {\n return shouldPreventDialogPop\n}\nconst preventDialogPopState = (e) => {\n const resolver = shouldPreventResolvers.shift()\n if (resolver) {\n e.stopImmediatePropagation()\n resolver()\n }\n}\n\nwindow.addEventListener(\"popstate\",preventDialogPopState)\n\nconst fixPosition = (query, fn) => {\n const elements = document.querySelectorAll(query)\n if (elements.length) {\n Array.prototype.slice.call(elements).forEach(fn)\n }\n}\n\nlet openLayers = 0\nlet fakedScrollTop = 0\nexport const isFakeScrolled = () => openLayers>0 && fakedScrollTop > 0\nexport const removeWindowScroll = (opening, keepDisabledScroll) => {\n if (opening) {\n openLayers = Math.max(openLayers+1,1)\n if (openLayers>1) {\n return\n }\n } else {\n openLayers = Math.min(openLayers-1,0)\n if (openLayers<0) {\n return\n }\n }\n const finishReset = (marginRight, scrollTop) => {\n // body.style.paddingRight = marginRight + 'px'\n window.scroll(window.scrollLeft || window.scrollX || 0, scrollTop)\n if (keepDisabledScroll) { return }\n fixPosition('.navbar,.JS-fix-dialog-scroll', n => {\n if (opening) {\n const {right} = window.getComputedStyle(n)\n n.style.right = (parseInt(right) + marginRight) + 'px'\n } else {\n n.style.right = null\n }\n })\n fixPosition('.JS-fix-dialog-scroll-transform', n => {\n if (marginRight) {\n n.style.transform = window.getComputedStyle(n).transform + ` translateX(-${marginRight / 2}px)`\n } else {\n n.style.transform = null\n }\n })\n\n fixPosition('.JS-on-open-dialog', n => {\n if (opening) {\n n.classList.add('JS-dialog-open')\n } else {\n n.classList.remove('JS-dialog-open')\n }\n })\n window.requestAnimationFrame(()=>window.dispatchEvent(new CustomEvent('resize', {detail: {dialog: true}})))\n }\n\n const body = document.body\n let bodyWidth = body.offsetWidth\n if (opening) {\n const scrollTop = window.pageYOffset\n fakedScrollTop = scrollTop\n if (keepDisabledScroll) {\n body.style.overflowY = 'scroll'\n } else {\n body.style.overflow = 'hidden'\n }\n const marginRight = (body.offsetWidth - bodyWidth)\n\n body.style.position = 'fixed'\n body.style.top = -scrollTop + \"px\"\n body.style.left = '0'\n if (!keepDisabledScroll) {\n body.style.right = marginRight + 'px'\n } else {\n body.style.right = '0'\n }\n\n finishReset(marginRight,scrollTop)\n } else {\n fakedScrollTop = 0\n // setTimeout(() => {\n const scrollTop = parseInt(body.style.top)\n body.style.overflow = ''\n\n body.style.position = ''\n body.style.top = ''\n body.style.left = ''\n body.style.right = ''\n finishReset(0,-scrollTop)\n // },250)\n }\n}\n\nconst {href: originalHref, hash: originalHash} = window.location\n\nconst [useDialogLayers, getDialogLayersSize] = willUseLayers(React.useLayoutEffect)\nexport {useDialogLayers, getDialogLayersSize}\n\nexport const DialogContainer = forwardRef((\n {\n children, title, closeDialog, closeOnClick, dontRefocus, onConfirm, prev, next, form, noFormWrap, withFormWrap, placement = 'Dialog',\n DialogErrorContent, customHref, animation = dialogFadeInDown, animationTiming, animationLeaveEffect, animationEnterEffect, skipKeys,fullscreenOnMobile, fullscreen, confirmChanges = false, skipDom, modalRef, skipCheckFocus,\n autoComplete, blurBackdrop\n },\n forwardedRef) => {\n\n const dialogRef = useEnsureRef(forwardedRef)\n const prevActiveElement = useRefState(document.activeElement)\n const modal = useEnsureRef(modalRef)\n const modalScroll = useRef()\n const mouseDownInModal = useRefState()\n const previousHash = useRefState(window.location.hash)\n\n const [layerIndex, {isTop, getSize}] = useDialogLayers({\n onFirst: () => {\n waitForPop().then(() => {\n if (customHref && encodeURI(customHref) === window.location.hash) {\n window.history.replaceState(history.state, '', window.location.pathname)\n window.history.pushState({dialog: true}, '', customHref)\n } else {\n window.history.pushState({dialog: true}, '', window.location.href + (customHref || \"\"))\n }\n })\n // clearPreventDialogPop()\n if (document.body.scrollHeight === document.body.clientHeight) {\n modal.current.style.overflowY = \"scroll\"\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"scroll\"\n }\n }\n // resetNavbar(true)\n },\n onRemove: (layers) => {\n if (\n (layers === 0 && _.get('dialog', window.history.state) === true) ||\n (customHref && window.location.hash === encodeURI(customHref))\n ) {\n preventDialogPop(() => {\n window.history.back()\n })\n }\n },\n onEmpty: () => {\n if (document.body.scrollHeight > document.body.clientHeight) {\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"hidden\"\n }\n } else if (modal.current) {\n modal.current.style.overflowY = \"scroll\"\n }\n removeWindowScroll(false)\n }\n })\n\n const confirmCloseDialog = () => {\n if (form && form.getHasChanged() && confirmChanges) {\n form.confirm()\n .then(closeDialog)\n } else {\n callIfFunction(closeDialog)\n }\n }\n/*\n useEffect(() => () => {\n setTimeout(() => {\n if (window.location.hash === previousHash.get() && _.get('dialog', window.history.state) === true) {\n console.log(\"???\")\n }\n }, 100)\n }, [])*/\n\n const pastFirstTime = React.useRef()\n\n\n useEffect(() => {\n if (customHref && window.location.hash !== customHref) {\n // if (pastFirstTime.current) {\n waitForPop().then(() => {\n if (window.location.hash) {\n window.history.replaceState({dialog: true}, '', customHref)\n } else {\n window.history.pushState({dialog: true}, '', customHref)\n }\n })\n // } else {\n // window.history.pushState({dialog: true}, '', customHref)\n // pastFirstTime.current = true\n // }\n previousHash.set(encodeURI(customHref))\n }\n }, [customHref])\n\n useEffect(() => {\n window.addEventListener('keydown', checkKey)\n window.addEventListener('focusin', checkFocus)\n window.addEventListener('popstate', checkHistory)\n return () => {\n window.removeEventListener('keydown', checkKey)\n window.removeEventListener('focusin', checkFocus)\n window.removeEventListener('popstate', checkHistory)\n if (!dontRefocus && document.body.contains(prevActiveElement.get()) && prevActiveElement.get().matches(focusableSelector)) {\n setTimeout(() => prevActiveElement.get().focus(), 0)\n }\n }\n }, [])\n\n\n const checkHistory = (e) => {\n if (!isTop()/* || (previousHash.get() !== window.location.hash && !customHref)*/) return\n if (_.get('willOpenDialog', window.history.state) === true) { return }\n if (_.get('dialog', window.history.state) !== true) {\n window.history.pushState({dialog: true}, '', window.location.href)\n }\n confirmCloseDialog()\n }\n\n const checkFocus = (e) => {\n if (!isTop() || skipCheckFocus) return\n if (modal.current && !e.target.closest('.' + modal.current.className.split(' ').join('.'))) {\n const nextTab = modal.current.querySelector('[tabindex]')\n if (nextTab)\n nextTab.focus()\n }\n }\n\n const checkKey = (e) => {\n if (!isTop() || skipKeys || e.target?.className?.indexOf(\"JS-dialog-skip-evts\")>=0 || e.target?.closest(\".JS-dialog-skip-evts\")) return\n if (modal.current && e.shiftKey && e.keyCode === 9 && modal.current.querySelector('[tabindex]') === document.activeElement) {\n e.preventDefault()\n const prevTab = [].slice.call(modal.current.querySelectorAll('[tabindex]')).reduce((acc, el) => el.tabIndex >= acc.tabIndex ? el : acc, {tabIndex: -1})\n if (prevTab && prevTab.focus)\n prevTab.focus()\n }\n if (e.key === 'Escape') {\n e.preventDefault()\n confirmCloseDialog()\n } else if (e.key === 'Enter') {\n if (e.target) {\n const target = e.target.closest(focusableSelector + ',div')\n if (target && (target.tagName.toLowerCase() !== 'input' || target.form || target.type.toLowerCase() === 'file') && target.matches(focusableSelector))\n return\n }\n e.preventDefault()\n e.stopPropagation()\n if (onConfirm) {\n onConfirm()\n } else if (form) {\n form.submitForm()\n }\n } else if (!e.target.matches(editableSelector)) {\n if (e.key === 'ArrowLeft' && prev) {\n prev()\n } else if (e.key === 'ArrowRight' && next) {\n next()\n }\n }\n }\n\n const checkClick = (e) => {\n if (closeOnClick && e.target === e.currentTarget && mouseDownInModal.get()) {\n confirmCloseDialog()\n }\n mouseDownInModal.set(false)\n }\n const mouseDown = (e) => {\n mouseDownInModal.set(e.target === e.currentTarget)\n }\n\n const usingForm = withFormWrap || (form && !noFormWrap)\n\n useFlipAnimation(dialogRef, animation, true, {\n nestedFlip: !skipDom,\n onEnterEnd: () => {\n if (getSize() === 1) {\n removeWindowScroll(true);\n }\n if (document.body.scrollHeight === document.body.clientHeight) {\n modal.current.style.overflowY = \"none\"\n }\n if (modalScroll.current) {\n modalScroll.current.style.overflowY = \"scroll\"\n }\n },\n leaveEffect:animationLeaveEffect,\n enterEffect:animationEnterEffect,\n timing:animationTiming\n })\n useFlipAnimation(modal, !skipDom && identityOpacityFrames, true,{timing:animationTiming})\n\n const content = <>\n <PopupSlot name={'Popup-' + layerIndex}/>\n <ErrorBoundary title={callIfFunction(title)} closeDialog={closeDialog} Error={DialogErrorContent}>\n {callIfFunction(children, {confirmCloseDialog}, dialogRef, fullscreenOnMobile)}\n </ErrorBoundary>\n </>\n\n return (\n <Fill name={placement}>\n {\n skipDom\n ? content\n : <>\n <AnimatedModal timing={animationTiming} blurBackdrop={blurBackdrop}/>\n <ModalContainer ref={modal}>\n\n <DialogCenter autoComplete={autoComplete} className=\"JS-has-wc\" withScroll={getSize()>1} fullscreen={fullscreen} fullscreenOnMobile={fullscreenOnMobile} ref={modalScroll} as={usingForm ? 'form' : undefined} onClick={checkClick}\n onSubmit={usingForm ? () => {} : undefined}\n onMouseDown={mouseDown}>\n {content}\n </DialogCenter>\n </ModalContainer>\n </>\n }\n </Fill>\n )\n})\n\nexport const AnimatedModal = React.forwardRef(({timing,nestedFlip,enterEffect,leaveEffect,modalIn = dialogModalIn, modalOut = dialogModalOut, blurBackdrop,...props},ref) => {\n const modal = useEnsureRef(ref)\n useFlipAnimation(modal, modalIn, modalOut,{timing,nestedFlip,leaveEffect,enterEffect})\n return <Modal {...props} $blurBackdrop={blurBackdrop} ref={modal}/>\n})\n\n"],"names":["dialogFadeInDown","oneWayAnimation","dialogModalIn","dialogModalOut","twoWayAnimation","Modal","styled","div","withConfig","displayName","componentId","props","$blurBackdrop","ModalContainer","DialogCenter","withScroll","media","desktop","_templateObject","_taggedTemplateLiteral","fullscreen","mobile","_templateObject2","fullscreenOnMobile","PopupSlot","Slot","editableSelector","focusableSelector","shouldPreventResolvers","shouldPreventDialogPop","Promise","resolve","preventDialogPop","cb","then","res","push","waitForPop","preventDialogPopState","e","resolver","shift","stopImmediatePropagation","window","addEventListener","fixPosition","query","fn","elements","document","querySelectorAll","length","Array","prototype","slice","call","forEach","openLayers","fakedScrollTop","isFakeScrolled","removeWindowScroll","opening","keepDisabledScroll","Math","max","min","finishReset","marginRight","scrollTop","scroll","scrollLeft","scrollX","n","right","getComputedStyle","style","parseInt","transform","concat","classList","add","remove","requestAnimationFrame","dispatchEvent","CustomEvent","detail","dialog","body","bodyWidth","offsetWidth","pageYOffset","overflowY","overflow","position","top","left","useDialogLayers","getDialogLayersSize","willUseLayers","React","useLayoutEffect","DialogContainer","forwardRef","_ref","forwardedRef","children","title","closeDialog","closeOnClick","dontRefocus","onConfirm","prev","next","form","noFormWrap","withFormWrap","placement","DialogErrorContent","customHref","animation","animationTiming","animationLeaveEffect","animationEnterEffect","skipKeys","confirmChanges","skipDom","modalRef","skipCheckFocus","autoComplete","blurBackdrop","dialogRef","useEnsureRef","prevActiveElement","useRefState","activeElement","modal","modalScroll","useRef","mouseDownInModal","previousHash","location","hash","layerIndex","isTop","getSize","onFirst","encodeURI","history","replaceState","state","pathname","pushState","href","scrollHeight","clientHeight","current","onRemove","layers","_get","back","onEmpty","confirmCloseDialog","getHasChanged","confirm","callIfFunction","useEffect","set","checkKey","checkFocus","checkHistory","removeEventListener","contains","get","matches","setTimeout","focus","target","closest","className","split","join","nextTab","querySelector","_e$target","_e$target2","indexOf","shiftKey","keyCode","preventDefault","prevTab","reduce","acc","el","tabIndex","key","tagName","toLowerCase","type","stopPropagation","submitForm","checkClick","currentTarget","mouseDown","usingForm","useFlipAnimation","nestedFlip","onEnterEnd","leaveEffect","enterEffect","timing","identityOpacityFrames","content","createElement","Fragment","name","ErrorBoundary","Error","Fill","AnimatedModal","ref","as","undefined","onClick","onSubmit","onMouseDown","_ref2","modalIn","modalOut","_objectWithoutProperties","_excluded","_extends"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import _extends from '@babel/runtime/helpers/extends';
2
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
3
+ import React, { useMemo } from 'react';
4
+ import { useEnsureRef, Fill } from '@startlibs/core';
5
+ import { usePositioning } from './usePositioning.mjs';
6
+ import styled from 'styled-components';
7
+ import { getDialogLayersSize } from './DialogContainer.mjs';
8
+
9
+ const _excluded = ["slot", "className", "onClick", "children"];
10
+ const AbsoluteContainer = /*#__PURE__*/styled.div.withConfig({
11
+ displayName: "Reposition__AbsoluteContainer",
12
+ componentId: "sc-1rugphp-0"
13
+ })(["position:absolute;"]);
14
+ const Reposition = /*#__PURE__*/React.forwardRef((_ref, ref) => {
15
+ let {
16
+ slot = 'Popup',
17
+ className,
18
+ onClick,
19
+ children
20
+ } = _ref,
21
+ rest = _objectWithoutProperties(_ref, _excluded);
22
+ const popupRef = useEnsureRef(ref);
23
+ const [positionInfo, placeholder] = usePositioning(popupRef, rest);
24
+ const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : slot + '-' + (getDialogLayersSize() - 1), []);
25
+ return /*#__PURE__*/React.createElement(React.Fragment, null, placeholder, /*#__PURE__*/React.createElement(Fill, {
26
+ name: slotName
27
+ }, /*#__PURE__*/React.createElement(AbsoluteContainer, _extends({}, positionInfo, {
28
+ onClick: onClick,
29
+ className: className,
30
+ ref: popupRef
31
+ }), children)));
32
+ });
33
+
34
+ export { Reposition };
35
+ //# sourceMappingURL=Reposition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reposition.mjs","sources":["../../src/containers/Reposition.jsx"],"sourcesContent":["import React, {useMemo} from 'react'\nimport {Fill, useEnsureRef} from '@startlibs/core'\nimport {usePositioning} from './usePositioning'\nimport styled from 'styled-components'\nimport {getDialogLayersSize} from './DialogContainer'\n\nconst AbsoluteContainer = styled.div`\nposition: absolute;\n`\n\nexport const Reposition = React.forwardRef(({slot = 'Popup', className, onClick, children, ...rest},ref) => {\n const popupRef = useEnsureRef(ref)\n const [positionInfo, placeholder] = usePositioning(popupRef, rest)\n\n const slotName = useMemo(() => getDialogLayersSize() === 0 ? slot : (slot + '-' + (getDialogLayersSize() - 1)), [])\n return <>\n {placeholder}\n <Fill name={slotName}>\n <AbsoluteContainer {...positionInfo} onClick={onClick} className={className} ref={popupRef}>\n {children}\n </AbsoluteContainer>\n </Fill>\n </>\n})"],"names":["AbsoluteContainer","styled","div","withConfig","displayName","componentId","Reposition","React","forwardRef","_ref","ref","slot","className","onClick","children","rest","_objectWithoutProperties","_excluded","popupRef","useEnsureRef","positionInfo","placeholder","usePositioning","slotName","useMemo","getDialogLayersSize","createElement","Fragment","Fill","name","_extends"],"mappings":";;;;;;;;;AAMA,MAAMA,iBAAiB,gBAAGC,MAAM,CAACC,GAAG,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,+BAAA;EAAAC,WAAA,EAAA,cAAA;AAAA,CAEnC,CAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,CAAA;AAEM,MAAMC,UAAU,gBAAGC,KAAK,CAACC,UAAU,CAAC,CAAAC,IAAA,EAAyDC,GAAG,KAAK;EAAA,IAAhE;AAACC,MAAAA,IAAI,GAAG,OAAO;MAAEC,SAAS;MAAEC,OAAO;AAAEC,MAAAA,QAAAA;AAAiB,KAAC,GAAAL,IAAA;AAALM,IAAAA,IAAI,GAAAC,wBAAA,CAAAP,IAAA,EAAAQ,SAAA,CAAA,CAAA;AAChG,EAAA,MAAMC,QAAQ,GAAGC,YAAY,CAACT,GAAG,CAAC,CAAA;EAClC,MAAM,CAACU,YAAY,EAAEC,WAAW,CAAC,GAAGC,cAAc,CAACJ,QAAQ,EAAEH,IAAI,CAAC,CAAA;EAElE,MAAMQ,QAAQ,GAAGC,OAAO,CAAC,MAAMC,mBAAmB,EAAE,KAAK,CAAC,GAAGd,IAAI,GAAIA,IAAI,GAAG,GAAG,IAAIc,mBAAmB,EAAE,GAAG,CAAC,CAAE,EAAE,EAAE,CAAC,CAAA;AACnH,EAAA,oBAAOlB,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,EACJN,IAAAA,EAAAA,WAAW,eACZd,KAAA,CAAAmB,aAAA,CAACE,IAAI,EAAA;AAACC,IAAAA,IAAI,EAAEN,QAAAA;GACVhB,eAAAA,KAAA,CAAAmB,aAAA,CAAC1B,iBAAiB,EAAA8B,QAAA,KAAKV,YAAY,EAAA;AAAEP,IAAAA,OAAO,EAAEA,OAAQ;AAACD,IAAAA,SAAS,EAAEA,SAAU;AAACF,IAAAA,GAAG,EAAEQ,QAAAA;GAC/EJ,CAAAA,EAAAA,QACgB,CACf,CACN,CAAC,CAAA;AACL,CAAC;;;;"}