@tamagui/floating 2.7.7 → 3.0.0-beta.637.1

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 (151) hide show
  1. package/dist/cjs/Floating.cjs +10 -11
  2. package/dist/cjs/Floating.native.cjs +37 -0
  3. package/dist/cjs/Floating.native.js +20 -20
  4. package/dist/cjs/Floating.native.js.map +1 -1
  5. package/dist/cjs/index.cjs +45 -46
  6. package/dist/cjs/index.native.cjs +74 -0
  7. package/dist/cjs/index.native.js +45 -45
  8. package/dist/cjs/index.native.js.map +1 -1
  9. package/dist/cjs/interactions/PopupTriggerMap.cjs +36 -39
  10. package/dist/cjs/interactions/PopupTriggerMap.native.cjs +96 -0
  11. package/dist/cjs/interactions/PopupTriggerMap.native.js +76 -75
  12. package/dist/cjs/interactions/PopupTriggerMap.native.js.map +1 -1
  13. package/dist/cjs/interactions/createFloatingEvents.cjs +36 -39
  14. package/dist/cjs/interactions/createFloatingEvents.native.cjs +52 -0
  15. package/dist/cjs/interactions/createFloatingEvents.native.js +39 -41
  16. package/dist/cjs/interactions/createFloatingEvents.native.js.map +1 -1
  17. package/dist/cjs/interactions/safePolygon.cjs +263 -252
  18. package/dist/cjs/interactions/safePolygon.native.cjs +294 -0
  19. package/dist/cjs/interactions/safePolygon.native.js +271 -259
  20. package/dist/cjs/interactions/safePolygon.native.js.map +1 -1
  21. package/dist/cjs/interactions/types.cjs +10 -11
  22. package/dist/cjs/interactions/types.native.cjs +19 -0
  23. package/dist/cjs/interactions/types.native.js +10 -10
  24. package/dist/cjs/interactions/types.native.js.map +1 -1
  25. package/dist/cjs/interactions/useClick.cjs +96 -105
  26. package/dist/cjs/interactions/useClick.native.cjs +122 -0
  27. package/dist/cjs/interactions/useClick.native.js +101 -109
  28. package/dist/cjs/interactions/useClick.native.js.map +1 -1
  29. package/dist/cjs/interactions/useDelayGroup.cjs +86 -91
  30. package/dist/cjs/interactions/useDelayGroup.native.cjs +119 -0
  31. package/dist/cjs/interactions/useDelayGroup.native.js +92 -96
  32. package/dist/cjs/interactions/useDelayGroup.native.js.map +1 -1
  33. package/dist/cjs/interactions/useFocus.cjs +108 -115
  34. package/dist/cjs/interactions/useFocus.native.cjs +131 -0
  35. package/dist/cjs/interactions/useFocus.native.js +114 -120
  36. package/dist/cjs/interactions/useFocus.native.js.map +1 -1
  37. package/dist/cjs/interactions/useHover.cjs +321 -335
  38. package/dist/cjs/interactions/useHover.native.cjs +357 -0
  39. package/dist/cjs/interactions/useHover.native.js +333 -347
  40. package/dist/cjs/interactions/useHover.native.js.map +1 -1
  41. package/dist/cjs/interactions/useInnerOffset.cjs +103 -111
  42. package/dist/cjs/interactions/useInnerOffset.native.cjs +132 -0
  43. package/dist/cjs/interactions/useInnerOffset.native.js +113 -120
  44. package/dist/cjs/interactions/useInnerOffset.native.js.map +1 -1
  45. package/dist/cjs/interactions/useInteractions.cjs +85 -90
  46. package/dist/cjs/interactions/useInteractions.native.cjs +199 -0
  47. package/dist/cjs/interactions/useInteractions.native.js +180 -195
  48. package/dist/cjs/interactions/useInteractions.native.js.map +1 -1
  49. package/dist/cjs/interactions/useListNavigation.cjs +404 -390
  50. package/dist/cjs/interactions/useListNavigation.native.cjs +446 -0
  51. package/dist/cjs/interactions/useListNavigation.native.js +416 -401
  52. package/dist/cjs/interactions/useListNavigation.native.js.map +1 -1
  53. package/dist/cjs/interactions/useRole.cjs +92 -106
  54. package/dist/cjs/interactions/useRole.native.cjs +121 -0
  55. package/dist/cjs/interactions/useRole.native.js +103 -116
  56. package/dist/cjs/interactions/useRole.native.js.map +1 -1
  57. package/dist/cjs/interactions/useTypeahead.cjs +115 -129
  58. package/dist/cjs/interactions/useTypeahead.native.cjs +144 -0
  59. package/dist/cjs/interactions/useTypeahead.native.js +128 -141
  60. package/dist/cjs/interactions/useTypeahead.native.js.map +1 -1
  61. package/dist/cjs/interactions/utils.cjs +126 -143
  62. package/dist/cjs/interactions/utils.native.cjs +209 -0
  63. package/dist/cjs/interactions/utils.native.js +138 -154
  64. package/dist/cjs/interactions/utils.native.js.map +1 -1
  65. package/dist/cjs/middleware/inner.cjs +74 -101
  66. package/dist/cjs/middleware/inner.native.cjs +102 -0
  67. package/dist/cjs/middleware/inner.native.js +83 -109
  68. package/dist/cjs/middleware/inner.native.js.map +1 -1
  69. package/dist/cjs/useFloating.cjs +34 -46
  70. package/dist/cjs/useFloating.native.cjs +56 -0
  71. package/dist/cjs/useFloating.native.js +37 -48
  72. package/dist/cjs/useFloating.native.js.map +1 -1
  73. package/dist/esm/Floating.mjs +1 -2
  74. package/dist/esm/Floating.native.js +6 -4
  75. package/dist/esm/Floating.native.js.map +1 -1
  76. package/dist/esm/index.js +4 -5
  77. package/dist/esm/index.mjs +4 -5
  78. package/dist/esm/index.native.js +4 -5
  79. package/dist/esm/interactions/PopupTriggerMap.mjs +23 -22
  80. package/dist/esm/interactions/PopupTriggerMap.mjs.map +1 -1
  81. package/dist/esm/interactions/PopupTriggerMap.native.js +62 -58
  82. package/dist/esm/interactions/PopupTriggerMap.native.js.map +1 -1
  83. package/dist/esm/interactions/createFloatingEvents.mjs +22 -21
  84. package/dist/esm/interactions/createFloatingEvents.mjs.map +1 -1
  85. package/dist/esm/interactions/createFloatingEvents.native.js +25 -24
  86. package/dist/esm/interactions/createFloatingEvents.native.js.map +1 -1
  87. package/dist/esm/interactions/safePolygon.mjs +250 -234
  88. package/dist/esm/interactions/safePolygon.mjs.map +1 -1
  89. package/dist/esm/interactions/safePolygon.native.js +258 -242
  90. package/dist/esm/interactions/safePolygon.native.js.map +1 -1
  91. package/dist/esm/interactions/types.mjs +0 -2
  92. package/dist/esm/interactions/types.native.js +0 -2
  93. package/dist/esm/interactions/useClick.mjs +83 -87
  94. package/dist/esm/interactions/useClick.mjs.map +1 -1
  95. package/dist/esm/interactions/useClick.native.js +88 -92
  96. package/dist/esm/interactions/useClick.native.js.map +1 -1
  97. package/dist/esm/interactions/useDelayGroup.mjs +68 -65
  98. package/dist/esm/interactions/useDelayGroup.mjs.map +1 -1
  99. package/dist/esm/interactions/useDelayGroup.native.js +74 -71
  100. package/dist/esm/interactions/useDelayGroup.native.js.map +1 -1
  101. package/dist/esm/interactions/useFocus.mjs +95 -97
  102. package/dist/esm/interactions/useFocus.mjs.map +1 -1
  103. package/dist/esm/interactions/useFocus.native.js +101 -103
  104. package/dist/esm/interactions/useFocus.native.js.map +1 -1
  105. package/dist/esm/interactions/useHover.mjs +304 -310
  106. package/dist/esm/interactions/useHover.mjs.map +1 -1
  107. package/dist/esm/interactions/useHover.native.js +316 -323
  108. package/dist/esm/interactions/useHover.native.js.map +1 -1
  109. package/dist/esm/interactions/useInnerOffset.mjs +87 -85
  110. package/dist/esm/interactions/useInnerOffset.mjs.map +1 -1
  111. package/dist/esm/interactions/useInnerOffset.native.js +97 -95
  112. package/dist/esm/interactions/useInnerOffset.native.js.map +1 -1
  113. package/dist/esm/interactions/useInteractions.mjs +71 -72
  114. package/dist/esm/interactions/useInteractions.mjs.map +1 -1
  115. package/dist/esm/interactions/useInteractions.native.js +166 -178
  116. package/dist/esm/interactions/useInteractions.native.js.map +1 -1
  117. package/dist/esm/interactions/useListNavigation.mjs +392 -373
  118. package/dist/esm/interactions/useListNavigation.mjs.map +1 -1
  119. package/dist/esm/interactions/useListNavigation.native.js +404 -385
  120. package/dist/esm/interactions/useListNavigation.native.js.map +1 -1
  121. package/dist/esm/interactions/useRole.mjs +76 -80
  122. package/dist/esm/interactions/useRole.mjs.map +1 -1
  123. package/dist/esm/interactions/useRole.native.js +87 -91
  124. package/dist/esm/interactions/useRole.native.js.map +1 -1
  125. package/dist/esm/interactions/useTypeahead.mjs +102 -111
  126. package/dist/esm/interactions/useTypeahead.mjs.map +1 -1
  127. package/dist/esm/interactions/useTypeahead.native.js +115 -124
  128. package/dist/esm/interactions/useTypeahead.native.js.map +1 -1
  129. package/dist/esm/interactions/utils.mjs +91 -106
  130. package/dist/esm/interactions/utils.mjs.map +1 -1
  131. package/dist/esm/interactions/utils.native.js +103 -118
  132. package/dist/esm/interactions/utils.native.js.map +1 -1
  133. package/dist/esm/middleware/inner.mjs +58 -75
  134. package/dist/esm/middleware/inner.mjs.map +1 -1
  135. package/dist/esm/middleware/inner.native.js +67 -84
  136. package/dist/esm/middleware/inner.native.js.map +1 -1
  137. package/dist/esm/useFloating.mjs +17 -21
  138. package/dist/esm/useFloating.mjs.map +1 -1
  139. package/dist/esm/useFloating.native.js +19 -23
  140. package/dist/esm/useFloating.native.js.map +1 -1
  141. package/package.json +6 -5
  142. package/types/interactions/PopupTriggerMap.d.ts.map +1 -1
  143. package/types/interactions/useInteractions.d.ts.map +1 -1
  144. package/types/middleware/inner.d.ts.map +1 -1
  145. package/types/useFloating.d.ts.map +1 -1
  146. package/dist/esm/Floating.mjs.map +0 -1
  147. package/dist/esm/index.js.map +0 -1
  148. package/dist/esm/index.mjs.map +0 -1
  149. package/dist/esm/index.native.js.map +0 -1
  150. package/dist/esm/interactions/types.mjs.map +0 -1
  151. package/dist/esm/interactions/types.native.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","DelayGroupContext","createContext","currentId","setCurrentId","delay","timeoutMs","initialDelay","useDelayGroupContext","useContext","FloatingDelayGroup","children","setCurrentIdRaw","useState","timeoutRef","useRef","useCallback","id","clearTimeout","current","setTimeout","useEffect","value","useMemo","createElement","Provider","useDelayGroup","context","options","groupContext","open","onOpenChange","close","getClose"],"sources":["../../../src/interactions/useDelayGroup.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useDelayGroup.js","names":[],"sources":["esm/interactions/useDelayGroup.js"],"sourcesContent":["import * as React from \"react\";\nconst DelayGroupContext = React.createContext({\n currentId: null,\n setCurrentId: () => {\n },\n delay: 0,\n timeoutMs: 0,\n initialDelay: 0\n});\nfunction useDelayGroupContext() {\n return React.useContext(DelayGroupContext);\n}\nfunction FloatingDelayGroup({\n children,\n delay,\n timeoutMs = 0\n}) {\n const [currentId, setCurrentIdRaw] = React.useState(null);\n const timeoutRef = React.useRef(void 0);\n const setCurrentId = React.useCallback(\n (id) => {\n clearTimeout(timeoutRef.current);\n if (id == null && timeoutMs > 0) {\n timeoutRef.current = setTimeout(() => {\n setCurrentIdRaw(null);\n }, timeoutMs);\n } else {\n setCurrentIdRaw(id);\n }\n },\n [timeoutMs]\n );\n React.useEffect(() => {\n return () => clearTimeout(timeoutRef.current);\n }, []);\n const value = React.useMemo(\n () => ({\n currentId,\n setCurrentId,\n delay,\n timeoutMs,\n initialDelay: delay\n }),\n [currentId, setCurrentId, delay, timeoutMs]\n );\n return React.createElement(DelayGroupContext.Provider, { value }, children);\n}\nfunction useDelayGroup(context, options = {}) {\n const { id } = options;\n const groupContext = React.useContext(DelayGroupContext);\n React.useEffect(() => {\n if (!context.open && groupContext.currentId === id) {\n groupContext.setCurrentId(null);\n }\n }, [context.open, id]);\n React.useEffect(() => {\n if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {\n context.onOpenChange(false);\n }\n }, [groupContext.currentId, id, context.open]);\n if (groupContext.currentId != null) {\n return {\n delay: { open: 1, close: getClose(groupContext.initialDelay) },\n currentId: groupContext.currentId\n };\n }\n return {\n delay: groupContext.initialDelay,\n currentId: groupContext.currentId\n };\n}\nfunction getClose(delay) {\n if (typeof delay === \"number\") return delay;\n return delay?.close ?? 0;\n}\nexport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext\n};\n//# sourceMappingURL=useDelayGroup.js.map\n"],"mappings":";;;AACA,MAAM,oBAAoB,MAAM,cAAc;CAC5C,WAAW;CACX,oBAAoB,CACpB;CACA,OAAO;CACP,WAAW;CACX,cAAc;AAChB,CAAC;AACD,SAAS,uBAAuB;CAC9B,OAAO,MAAM,WAAW,iBAAiB;AAC3C;AACA,SAAS,mBAAmB,EAC1B,UACA,OACA,YAAY,KACX;CACD,MAAM,CAAC,WAAW,mBAAmB,MAAM,SAAS,IAAI;CACxD,MAAM,aAAa,MAAM,OAAO,KAAK,CAAC;CACtC,MAAM,eAAe,MAAM,aACxB,OAAO;EACN,aAAa,WAAW,OAAO;EAC/B,IAAI,MAAM,QAAQ,YAAY,GAAG;GAC/B,WAAW,UAAU,iBAAiB;IACpC,gBAAgB,IAAI;GACtB,GAAG,SAAS;EACd,OAAO;GACL,gBAAgB,EAAE;EACpB;CACF,GACA,CAAC,SAAS,CACZ;CACA,MAAM,gBAAgB;EACpB,aAAa,aAAa,WAAW,OAAO;CAC9C,GAAG,CAAC,CAAC;CACL,MAAM,QAAQ,MAAM,eACX;EACL;EACA;EACA;EACA;EACA,cAAc;CAChB,IACA;EAAC;EAAW;EAAc;EAAO;CAAS,CAC5C;CACA,OAAO,MAAM,cAAc,kBAAkB,UAAU,EAAE,MAAM,GAAG,QAAQ;AAC5E;AACA,SAAS,cAAc,SAAS,UAAU,CAAC,GAAG;CAC5C,MAAM,EAAE,OAAO;CACf,MAAM,eAAe,MAAM,WAAW,iBAAiB;CACvD,MAAM,gBAAgB;EACpB,IAAI,CAAC,QAAQ,QAAQ,aAAa,cAAc,IAAI;GAClD,aAAa,aAAa,IAAI;EAChC;CACF,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC;CACrB,MAAM,gBAAgB;EACpB,IAAI,aAAa,aAAa,QAAQ,aAAa,cAAc,MAAM,QAAQ,MAAM;GACnF,QAAQ,aAAa,KAAK;EAC5B;CACF,GAAG;EAAC,aAAa;EAAW;EAAI,QAAQ;CAAI,CAAC;CAC7C,IAAI,aAAa,aAAa,MAAM;EAClC,OAAO;GACL,OAAO;IAAE,MAAM;IAAG,OAAO,SAAS,aAAa,YAAY;GAAE;GAC7D,WAAW,aAAa;EAC1B;CACF;CACA,OAAO;EACL,OAAO,aAAa;EACpB,WAAW,aAAa;CAC1B;AACF;AACA,SAAS,SAAS,OAAO;CACvB,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,OAAO,OAAO,SAAS;AACzB"}
@@ -1,84 +1,87 @@
1
1
  import * as React from "react";
2
+
2
3
  var DelayGroupContext = React.createContext({
3
- currentId: null,
4
- setCurrentId: function () {},
5
- delay: 0,
6
- timeoutMs: 0,
7
- initialDelay: 0
4
+ currentId: null,
5
+ setCurrentId: function() {},
6
+ delay: 0,
7
+ timeoutMs: 0,
8
+ initialDelay: 0
8
9
  });
9
10
  function useDelayGroupContext() {
10
- return React.useContext(DelayGroupContext);
11
+ return React.useContext(DelayGroupContext);
11
12
  }
12
13
  function FloatingDelayGroup(param) {
13
- var {
14
- children,
15
- delay,
16
- timeoutMs = 0
17
- } = param;
18
- var [currentId, setCurrentIdRaw] = React.useState(null);
19
- var timeoutRef = React.useRef(void 0);
20
- var setCurrentId = React.useCallback(function (id) {
21
- clearTimeout(timeoutRef.current);
22
- if (id == null && timeoutMs > 0) {
23
- timeoutRef.current = setTimeout(function () {
24
- setCurrentIdRaw(null);
25
- }, timeoutMs);
26
- } else {
27
- setCurrentIdRaw(id);
28
- }
29
- }, [timeoutMs]);
30
- React.useEffect(function () {
31
- return function () {
32
- return clearTimeout(timeoutRef.current);
33
- };
34
- }, []);
35
- var value = React.useMemo(function () {
36
- return {
37
- currentId,
38
- setCurrentId,
39
- delay,
40
- timeoutMs,
41
- initialDelay: delay
42
- };
43
- }, [currentId, setCurrentId, delay, timeoutMs]);
44
- return React.createElement(DelayGroupContext.Provider, {
45
- value
46
- }, children);
14
+ var { children, delay, timeoutMs = 0 } = param;
15
+ var [currentId, setCurrentIdRaw] = React.useState(null);
16
+ var timeoutRef = React.useRef(void 0);
17
+ var setCurrentId = React.useCallback(function(id) {
18
+ clearTimeout(timeoutRef.current);
19
+ if (id == null && timeoutMs > 0) {
20
+ timeoutRef.current = setTimeout(function() {
21
+ setCurrentIdRaw(null);
22
+ }, timeoutMs);
23
+ } else {
24
+ setCurrentIdRaw(id);
25
+ }
26
+ }, [timeoutMs]);
27
+ React.useEffect(function() {
28
+ return function() {
29
+ return clearTimeout(timeoutRef.current);
30
+ };
31
+ }, []);
32
+ var value = React.useMemo(function() {
33
+ return {
34
+ currentId,
35
+ setCurrentId,
36
+ delay,
37
+ timeoutMs,
38
+ initialDelay: delay
39
+ };
40
+ }, [
41
+ currentId,
42
+ setCurrentId,
43
+ delay,
44
+ timeoutMs
45
+ ]);
46
+ return React.createElement(DelayGroupContext.Provider, { value }, children);
47
47
  }
48
48
  function useDelayGroup(context) {
49
- var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
50
- var {
51
- id
52
- } = options;
53
- var groupContext = React.useContext(DelayGroupContext);
54
- React.useEffect(function () {
55
- if (!context.open && groupContext.currentId === id) {
56
- groupContext.setCurrentId(null);
57
- }
58
- }, [context.open, id]);
59
- React.useEffect(function () {
60
- if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {
61
- context.onOpenChange(false);
62
- }
63
- }, [groupContext.currentId, id, context.open]);
64
- if (groupContext.currentId != null) {
65
- return {
66
- delay: {
67
- open: 1,
68
- close: getClose(groupContext.initialDelay)
69
- },
70
- currentId: groupContext.currentId
71
- };
72
- }
73
- return {
74
- delay: groupContext.initialDelay,
75
- currentId: groupContext.currentId
76
- };
49
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
50
+ var { id } = options;
51
+ var groupContext = React.useContext(DelayGroupContext);
52
+ React.useEffect(function() {
53
+ if (!context.open && groupContext.currentId === id) {
54
+ groupContext.setCurrentId(null);
55
+ }
56
+ }, [context.open, id]);
57
+ React.useEffect(function() {
58
+ if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {
59
+ context.onOpenChange(false);
60
+ }
61
+ }, [
62
+ groupContext.currentId,
63
+ id,
64
+ context.open
65
+ ]);
66
+ if (groupContext.currentId != null) {
67
+ return {
68
+ delay: {
69
+ open: 1,
70
+ close: getClose(groupContext.initialDelay)
71
+ },
72
+ currentId: groupContext.currentId
73
+ };
74
+ }
75
+ return {
76
+ delay: groupContext.initialDelay,
77
+ currentId: groupContext.currentId
78
+ };
77
79
  }
78
80
  function getClose(delay) {
79
- if (typeof delay === "number") return delay;
80
- var _delay_close;
81
- return (_delay_close = delay === null || delay === void 0 ? void 0 : delay.close) !== null && _delay_close !== void 0 ? _delay_close : 0;
81
+ if (typeof delay === "number") return delay;
82
+ var _delay_close;
83
+ return (_delay_close = delay === null || delay === void 0 ? void 0 : delay.close) !== null && _delay_close !== void 0 ? _delay_close : 0;
82
84
  }
85
+
83
86
  export { FloatingDelayGroup, useDelayGroup, useDelayGroupContext };
84
87
  //# sourceMappingURL=useDelayGroup.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","DelayGroupContext","createContext","currentId","setCurrentId","delay","timeoutMs","initialDelay","useDelayGroupContext","useContext","FloatingDelayGroup","param","children","setCurrentIdRaw","useState","timeoutRef","useRef","useCallback","id","clearTimeout","current","setTimeout","useEffect","value","useMemo","createElement","Provider","useDelayGroup","context","options","arguments","length","groupContext","open","onOpenChange"],"sources":["../../../src/interactions/useDelayGroup.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAYA,KAAA,MAAW;AAWvB,IAAAC,iBAAM,GAAAD,KAAoB,CAAAE,aAAM;EAC9BC,SAAA,EAAW;EACXC,YAAA,EAAc,SAAAA,CAAA,EAAM,CAAC;EACrBC,KAAA,EAAO;EACPC,SAAA,EAAW;EACXC,YAAA,EAAc;AAChB,CAAC;AAEM,SAASC,qBAAA,EAAuB;EACrC,OAAOR,KAAA,CAAMS,UAAA,CAAWR,iBAAiB;AAC3C;AAKO,SAASS,mBAAmBC,KAAA;EACjC;IAAAC,QAAA;IAAAP,KAAA;IAAAC,SAAA;EAAA,IAAAK,KAAA;EACA,KAAAR,SAAA,EAAAU,eAAA,IAAAb,KAAA,CAAAc,QAAA;EACA,IAAAC,UAAY,GAAAf,KAAA,CAAAgB,MAAA;EACd,IAIGZ,YAAA,GAAAJ,KAAA,CAAAiB,WAAA,WAAAC,EAAA;IACDC,YAAO,CAAAJ,UAAW,CAAAK,OAAe;IACjC,IAAMF,EAAA,YAAaZ,SAAM,GAAsC;MAE/DS,UAAM,CAAAK,OAAe,GAAAC,UAAM;QACxBR,eAAkC;MACjC,GAAAP,SAAA,CAAa;IACb,OAAI;MAEFO,eAAW,CAAAK,EAAA;IACT;EAAoB,IACVZ,SACP,CACL;EAAkBN,KACpB,CAAAsB,SAAA;IACF;MACC,OAAAH,YAAS,CAAAJ,UAAA,CAAAK,OAAA;IACZ;EAEA,MAAM;EACJ,IAAAG,KAAO,GAAAvB,KAAM,CAAAwB,OAAA,aAAa;IAC5B,OAAK;MAELrB,SAAM;MACJC,YAAO;MACLC,KAAA;MACAC,SAAA;MACAC,YAAA,EAAAF;IAAA;EACA,IAEFF,SAAA,EACAC,YAAY,EACdC,KAAA,EAEAC,SAAO,CACT;EAIO,OAASN,KAAA,CAAAyB,aACd,CAAAxB,iBAEwD,CAAAyB,QAAA;IACxDH;EACA,GAAAX,QAAM;AAGN;AACE,SAAKe,aAAQA,CAAAC,OAAQ;EACnB,IAAAC,OAAA,GAAAC,SAAa,CAAAC,MAAa,IAAI,IAAAD,SAAA,iBAAAA,SAAA;EAAA,IAChC;IAAAZ;EAAA,IAAAW,OAAA;EACF,IAAIG,YAAQ,GAAMhC,KAAG,CAAAS,UAAA,CAAAR,iBAAA;EAIrBD,KAAA,CAAMsB,SAAA,CAAU,YAAM;IACpB,IAAI,CAAAM,OAAA,CAAAK,IAAa,IAAAD,YAAa,CAAA7B,SAAQ,KAAAe,EAAA,EAAa;MACjDc,YAAQ,CAAA5B,YAAa,CAAK;IAC5B;EACF,GAAG,CAIHwB,OAAI,CAAAK,IAAA,EACFf,EAAA,CAAO;EACwDlB,KAC7D,CAAAsB,SAAW;IACb,IAAAU,YAAA,CAAA7B,SAAA,YAAA6B,YAAA,CAAA7B,SAAA,KAAAe,EAAA,IAAAU,OAAA,CAAAK,IAAA;MACFL,OAAA,CAAAM,YAAA;IAEA;EAAO,GACL,CACAF,YAAW,CAAA7B,SAAA,EACbe,EAAA,EACFU,OAAA,CAAAK,IAAA,CAEA;EACE,IAAID,YAAO,CAAA7B,SAAU,IAAU;IAC/B,OAAO;MACTE,KAAA","ignoreList":[]}
1
+ {"version":3,"file":"useDelayGroup.native.js","names":[],"sources":["esm/interactions/useDelayGroup.native.js"],"sourcesContent":["import * as React from \"react\";\nvar DelayGroupContext = React.createContext({\n currentId: null,\n setCurrentId: function() {\n },\n delay: 0,\n timeoutMs: 0,\n initialDelay: 0\n});\nfunction useDelayGroupContext() {\n return React.useContext(DelayGroupContext);\n}\nfunction FloatingDelayGroup(param) {\n var { children, delay, timeoutMs = 0 } = param;\n var [currentId, setCurrentIdRaw] = React.useState(null);\n var timeoutRef = React.useRef(void 0);\n var setCurrentId = React.useCallback(function(id) {\n clearTimeout(timeoutRef.current);\n if (id == null && timeoutMs > 0) {\n timeoutRef.current = setTimeout(function() {\n setCurrentIdRaw(null);\n }, timeoutMs);\n } else {\n setCurrentIdRaw(id);\n }\n }, [\n timeoutMs\n ]);\n React.useEffect(function() {\n return function() {\n return clearTimeout(timeoutRef.current);\n };\n }, []);\n var value = React.useMemo(function() {\n return {\n currentId,\n setCurrentId,\n delay,\n timeoutMs,\n initialDelay: delay\n };\n }, [\n currentId,\n setCurrentId,\n delay,\n timeoutMs\n ]);\n return React.createElement(DelayGroupContext.Provider, {\n value\n }, children);\n}\nfunction useDelayGroup(context) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var { id } = options;\n var groupContext = React.useContext(DelayGroupContext);\n React.useEffect(function() {\n if (!context.open && groupContext.currentId === id) {\n groupContext.setCurrentId(null);\n }\n }, [\n context.open,\n id\n ]);\n React.useEffect(function() {\n if (groupContext.currentId != null && groupContext.currentId !== id && context.open) {\n context.onOpenChange(false);\n }\n }, [\n groupContext.currentId,\n id,\n context.open\n ]);\n if (groupContext.currentId != null) {\n return {\n delay: {\n open: 1,\n close: getClose(groupContext.initialDelay)\n },\n currentId: groupContext.currentId\n };\n }\n return {\n delay: groupContext.initialDelay,\n currentId: groupContext.currentId\n };\n}\nfunction getClose(delay) {\n if (typeof delay === \"number\") return delay;\n var _delay_close;\n return (_delay_close = delay === null || delay === void 0 ? void 0 : delay.close) !== null && _delay_close !== void 0 ? _delay_close : 0;\n}\nexport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext\n};\n//# sourceMappingURL=useDelayGroup.js.map\n"],"mappings":";;;AACA,IAAI,oBAAoB,MAAM,cAAc;CAC1C,WAAW;CACX,cAAc,WAAW,CACzB;CACA,OAAO;CACP,WAAW;CACX,cAAc;AAChB,CAAC;AACD,SAAS,uBAAuB;CAC9B,OAAO,MAAM,WAAW,iBAAiB;AAC3C;AACA,SAAS,mBAAmB,OAAO;CACjC,IAAI,EAAE,UAAU,OAAO,YAAY,MAAM;CACzC,IAAI,CAAC,WAAW,mBAAmB,MAAM,SAAS,IAAI;CACtD,IAAI,aAAa,MAAM,OAAO,KAAK,CAAC;CACpC,IAAI,eAAe,MAAM,YAAY,SAAS,IAAI;EAChD,aAAa,WAAW,OAAO;EAC/B,IAAI,MAAM,QAAQ,YAAY,GAAG;GAC/B,WAAW,UAAU,WAAW,WAAW;IACzC,gBAAgB,IAAI;GACtB,GAAG,SAAS;EACd,OAAO;GACL,gBAAgB,EAAE;EACpB;CACF,GAAG,CACD,SACF,CAAC;CACD,MAAM,UAAU,WAAW;EACzB,OAAO,WAAW;GAChB,OAAO,aAAa,WAAW,OAAO;EACxC;CACF,GAAG,CAAC,CAAC;CACL,IAAI,QAAQ,MAAM,QAAQ,WAAW;EACnC,OAAO;GACL;GACA;GACA;GACA;GACA,cAAc;EAChB;CACF,GAAG;EACD;EACA;EACA;EACA;CACF,CAAC;CACD,OAAO,MAAM,cAAc,kBAAkB,UAAU,EACrD,MACF,GAAG,QAAQ;AACb;AACA,SAAS,cAAc,SAAS;CAC9B,IAAI,UAAU,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,CAAC;CAChF,IAAI,EAAE,OAAO;CACb,IAAI,eAAe,MAAM,WAAW,iBAAiB;CACrD,MAAM,UAAU,WAAW;EACzB,IAAI,CAAC,QAAQ,QAAQ,aAAa,cAAc,IAAI;GAClD,aAAa,aAAa,IAAI;EAChC;CACF,GAAG,CACD,QAAQ,MACR,EACF,CAAC;CACD,MAAM,UAAU,WAAW;EACzB,IAAI,aAAa,aAAa,QAAQ,aAAa,cAAc,MAAM,QAAQ,MAAM;GACnF,QAAQ,aAAa,KAAK;EAC5B;CACF,GAAG;EACD,aAAa;EACb;EACA,QAAQ;CACV,CAAC;CACD,IAAI,aAAa,aAAa,MAAM;EAClC,OAAO;GACL,OAAO;IACL,MAAM;IACN,OAAO,SAAS,aAAa,YAAY;GAC3C;GACA,WAAW,aAAa;EAC1B;CACF;CACA,OAAO;EACL,OAAO,aAAa;EACpB,WAAW,aAAa;CAC1B;AACF;AACA,SAAS,SAAS,OAAO;CACvB,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI;CACJ,QAAQ,eAAe,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,WAAW,QAAQ,iBAAiB,KAAK,IAAI,eAAe;AACzI"}
@@ -1,105 +1,103 @@
1
1
  import { useEffect, useMemo, useRef } from "react";
2
2
  import { activeElement, clearTimeoutIfSet, contains, getDocument, getTarget, isElement, isHTMLElement, isMac, isSafari, isTypeableElement, matchesFocusVisible } from "./utils.mjs";
3
+
3
4
  function isMacSafari() {
4
- return isMac() && isSafari();
5
+ return isMac() && isSafari();
5
6
  }
6
7
  function useFocus(context, props = {}) {
7
- const {
8
- open,
9
- onOpenChange,
10
- events,
11
- dataRef,
12
- elements
13
- } = context;
14
- const {
15
- enabled = true,
16
- visibleOnly = true
17
- } = props;
18
- const blockFocusRef = useRef(false);
19
- const timeoutRef = useRef(-1);
20
- const keyboardModalityRef = useRef(true);
21
- useEffect(() => {
22
- if (!enabled) return;
23
- const win = getDocument(elements.domReference).defaultView || window;
24
- function onBlur() {
25
- if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {
26
- blockFocusRef.current = true;
27
- }
28
- }
29
- function onKeyDown() {
30
- keyboardModalityRef.current = true;
31
- }
32
- function onPointerDown() {
33
- keyboardModalityRef.current = false;
34
- }
35
- win.addEventListener("blur", onBlur);
36
- if (isMacSafari()) {
37
- win.addEventListener("keydown", onKeyDown, true);
38
- win.addEventListener("pointerdown", onPointerDown, true);
39
- }
40
- return () => {
41
- win.removeEventListener("blur", onBlur);
42
- if (isMacSafari()) {
43
- win.removeEventListener("keydown", onKeyDown, true);
44
- win.removeEventListener("pointerdown", onPointerDown, true);
45
- }
46
- };
47
- }, [elements.domReference, open, enabled]);
48
- useEffect(() => {
49
- if (!enabled) return;
50
- if (!events) return;
51
- function handleOpenChange({
52
- reason
53
- }) {
54
- if (reason === "reference-press" || reason === "escape-key") {
55
- blockFocusRef.current = true;
56
- }
57
- }
58
- events.on("openchange", handleOpenChange);
59
- return () => {
60
- events.off("openchange", handleOpenChange);
61
- };
62
- }, [events, enabled]);
63
- useEffect(() => {
64
- return () => {
65
- clearTimeoutIfSet(timeoutRef);
66
- };
67
- }, []);
68
- const reference = useMemo(() => ({
69
- onMouseLeave() {
70
- blockFocusRef.current = false;
71
- },
72
- onFocus(event) {
73
- if (blockFocusRef.current) return;
74
- const target = getTarget(event.nativeEvent);
75
- if (visibleOnly && isElement(target)) {
76
- if (isMacSafari() && !event.relatedTarget) {
77
- if (!keyboardModalityRef.current && !isTypeableElement(target)) {
78
- return;
79
- }
80
- } else if (!matchesFocusVisible(target)) {
81
- return;
82
- }
83
- }
84
- onOpenChange(true, event.nativeEvent, "focus");
85
- },
86
- onBlur(event) {
87
- blockFocusRef.current = false;
88
- const relatedTarget = event.relatedTarget;
89
- const nativeEvent = event.nativeEvent;
90
- timeoutRef.current = window.setTimeout(() => {
91
- const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
92
- if (!relatedTarget && activeEl === elements.domReference) return;
93
- if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {
94
- return;
95
- }
96
- onOpenChange(false, nativeEvent, "focus");
97
- });
98
- }
99
- }), [context.refs.floating, elements.domReference, onOpenChange, visibleOnly]);
100
- return useMemo(() => enabled ? {
101
- reference
102
- } : {}, [enabled, reference]);
8
+ const { open, onOpenChange, events, dataRef, elements } = context;
9
+ const { enabled = true, visibleOnly = true } = props;
10
+ const blockFocusRef = useRef(false);
11
+ const timeoutRef = useRef(-1);
12
+ const keyboardModalityRef = useRef(true);
13
+ useEffect(() => {
14
+ if (!enabled) return;
15
+ const win = getDocument(elements.domReference).defaultView || window;
16
+ function onBlur() {
17
+ if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {
18
+ blockFocusRef.current = true;
19
+ }
20
+ }
21
+ function onKeyDown() {
22
+ keyboardModalityRef.current = true;
23
+ }
24
+ function onPointerDown() {
25
+ keyboardModalityRef.current = false;
26
+ }
27
+ win.addEventListener("blur", onBlur);
28
+ if (isMacSafari()) {
29
+ win.addEventListener("keydown", onKeyDown, true);
30
+ win.addEventListener("pointerdown", onPointerDown, true);
31
+ }
32
+ return () => {
33
+ win.removeEventListener("blur", onBlur);
34
+ if (isMacSafari()) {
35
+ win.removeEventListener("keydown", onKeyDown, true);
36
+ win.removeEventListener("pointerdown", onPointerDown, true);
37
+ }
38
+ };
39
+ }, [
40
+ elements.domReference,
41
+ open,
42
+ enabled
43
+ ]);
44
+ useEffect(() => {
45
+ if (!enabled) return;
46
+ if (!events) return;
47
+ function handleOpenChange({ reason }) {
48
+ if (reason === "reference-press" || reason === "escape-key") {
49
+ blockFocusRef.current = true;
50
+ }
51
+ }
52
+ events.on("openchange", handleOpenChange);
53
+ return () => {
54
+ events.off("openchange", handleOpenChange);
55
+ };
56
+ }, [events, enabled]);
57
+ useEffect(() => {
58
+ return () => {
59
+ clearTimeoutIfSet(timeoutRef);
60
+ };
61
+ }, []);
62
+ const reference = useMemo(() => ({
63
+ onMouseLeave() {
64
+ blockFocusRef.current = false;
65
+ },
66
+ onFocus(event) {
67
+ if (blockFocusRef.current) return;
68
+ const target = getTarget(event.nativeEvent);
69
+ if (visibleOnly && isElement(target)) {
70
+ if (isMacSafari() && !event.relatedTarget) {
71
+ if (!keyboardModalityRef.current && !isTypeableElement(target)) {
72
+ return;
73
+ }
74
+ } else if (!matchesFocusVisible(target)) {
75
+ return;
76
+ }
77
+ }
78
+ onOpenChange(true, event.nativeEvent, "focus");
79
+ },
80
+ onBlur(event) {
81
+ blockFocusRef.current = false;
82
+ const relatedTarget = event.relatedTarget;
83
+ const nativeEvent = event.nativeEvent;
84
+ timeoutRef.current = window.setTimeout(() => {
85
+ const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);
86
+ if (!relatedTarget && activeEl === elements.domReference) return;
87
+ if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {
88
+ return;
89
+ }
90
+ onOpenChange(false, nativeEvent, "focus");
91
+ });
92
+ }
93
+ }), [
94
+ context.refs.floating,
95
+ elements.domReference,
96
+ onOpenChange,
97
+ visibleOnly
98
+ ]);
99
+ return useMemo(() => enabled ? { reference } : {}, [enabled, reference]);
103
100
  }
101
+
104
102
  export { useFocus };
105
103
  //# sourceMappingURL=useFocus.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","useRef","activeElement","clearTimeoutIfSet","contains","getDocument","getTarget","isElement","isHTMLElement","isMac","isSafari","isTypeableElement","matchesFocusVisible","isMacSafari","useFocus","context","props","open","onOpenChange","events","dataRef","elements","enabled","visibleOnly","blockFocusRef","timeoutRef","keyboardModalityRef","win","domReference","defaultView","window","onBlur","current","onKeyDown","onPointerDown","addEventListener","removeEventListener","handleOpenChange","reason","on","off","reference","onMouseLeave","onFocus","event","target","nativeEvent","relatedTarget","setTimeout","activeEl","ownerDocument","document","refs","floating"],"sources":["../../../src/interactions/useFocus.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useFocus.js","names":[],"sources":["esm/interactions/useFocus.js"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport {\n activeElement,\n clearTimeoutIfSet,\n contains,\n getDocument,\n getTarget,\n isElement,\n isHTMLElement,\n isMac,\n isSafari,\n isTypeableElement,\n matchesFocusVisible\n} from \"./utils\";\nfunction isMacSafari() {\n return isMac() && isSafari();\n}\nfunction useFocus(context, props = {}) {\n const { open, onOpenChange, events, dataRef, elements } = context;\n const { enabled = true, visibleOnly = true } = props;\n const blockFocusRef = useRef(false);\n const timeoutRef = useRef(-1);\n const keyboardModalityRef = useRef(true);\n useEffect(() => {\n if (!enabled) return;\n const win = getDocument(elements.domReference).defaultView || window;\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n win.addEventListener(\"blur\", onBlur);\n if (isMacSafari()) {\n win.addEventListener(\"keydown\", onKeyDown, true);\n win.addEventListener(\"pointerdown\", onPointerDown, true);\n }\n return () => {\n win.removeEventListener(\"blur\", onBlur);\n if (isMacSafari()) {\n win.removeEventListener(\"keydown\", onKeyDown, true);\n win.removeEventListener(\"pointerdown\", onPointerDown, true);\n }\n };\n }, [elements.domReference, open, enabled]);\n useEffect(() => {\n if (!enabled) return;\n if (!events) return;\n function handleOpenChange({ reason }) {\n if (reason === \"reference-press\" || reason === \"escape-key\") {\n blockFocusRef.current = true;\n }\n }\n events.on(\"openchange\", handleOpenChange);\n return () => {\n events.off(\"openchange\", handleOpenChange);\n };\n }, [events, enabled]);\n useEffect(() => {\n return () => {\n clearTimeoutIfSet(timeoutRef);\n };\n }, []);\n const reference = useMemo(\n () => ({\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n if (isMacSafari() && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n onOpenChange(true, event.nativeEvent, \"focus\");\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n timeoutRef.current = window.setTimeout(() => {\n const activeEl = activeElement(\n elements.domReference ? elements.domReference.ownerDocument : document\n );\n if (!relatedTarget && activeEl === elements.domReference) return;\n if (contains(context.refs.floating.current, activeEl) || contains(elements.domReference, activeEl)) {\n return;\n }\n onOpenChange(false, nativeEvent, \"focus\");\n });\n }\n }),\n [context.refs.floating, elements.domReference, onOpenChange, visibleOnly]\n );\n return useMemo(() => enabled ? { reference } : {}, [enabled, reference]);\n}\nexport {\n useFocus\n};\n//# sourceMappingURL=useFocus.js.map\n"],"mappings":";;;;AAcA,SAAS,cAAc;CACrB,OAAO,MAAM,KAAK,SAAS;AAC7B;AACA,SAAS,SAAS,SAAS,QAAQ,CAAC,GAAG;CACrC,MAAM,EAAE,MAAM,cAAc,QAAQ,SAAS,aAAa;CAC1D,MAAM,EAAE,UAAU,MAAM,cAAc,SAAS;CAC/C,MAAM,gBAAgB,OAAO,KAAK;CAClC,MAAM,aAAa,OAAO,CAAC,CAAC;CAC5B,MAAM,sBAAsB,OAAO,IAAI;CACvC,gBAAgB;EACd,IAAI,CAAC,SAAS;EACd,MAAM,MAAM,YAAY,SAAS,YAAY,EAAE,eAAe;EAC9D,SAAS,SAAS;GAChB,IAAI,CAAC,QAAQ,cAAc,SAAS,YAAY,KAAK,SAAS,iBAAiB,cAAc,YAAY,SAAS,YAAY,CAAC,GAAG;IAChI,cAAc,UAAU;GAC1B;EACF;EACA,SAAS,YAAY;GACnB,oBAAoB,UAAU;EAChC;EACA,SAAS,gBAAgB;GACvB,oBAAoB,UAAU;EAChC;EACA,IAAI,iBAAiB,QAAQ,MAAM;EACnC,IAAI,YAAY,GAAG;GACjB,IAAI,iBAAiB,WAAW,WAAW,IAAI;GAC/C,IAAI,iBAAiB,eAAe,eAAe,IAAI;EACzD;EACA,aAAa;GACX,IAAI,oBAAoB,QAAQ,MAAM;GACtC,IAAI,YAAY,GAAG;IACjB,IAAI,oBAAoB,WAAW,WAAW,IAAI;IAClD,IAAI,oBAAoB,eAAe,eAAe,IAAI;GAC5D;EACF;CACF,GAAG;EAAC,SAAS;EAAc;EAAM;CAAO,CAAC;CACzC,gBAAgB;EACd,IAAI,CAAC,SAAS;EACd,IAAI,CAAC,QAAQ;EACb,SAAS,iBAAiB,EAAE,UAAU;GACpC,IAAI,WAAW,qBAAqB,WAAW,cAAc;IAC3D,cAAc,UAAU;GAC1B;EACF;EACA,OAAO,GAAG,cAAc,gBAAgB;EACxC,aAAa;GACX,OAAO,IAAI,cAAc,gBAAgB;EAC3C;CACF,GAAG,CAAC,QAAQ,OAAO,CAAC;CACpB,gBAAgB;EACd,aAAa;GACX,kBAAkB,UAAU;EAC9B;CACF,GAAG,CAAC,CAAC;CACL,MAAM,YAAY,eACT;EACL,eAAe;GACb,cAAc,UAAU;EAC1B;EACA,QAAQ,OAAO;GACb,IAAI,cAAc,SAAS;GAC3B,MAAM,SAAS,UAAU,MAAM,WAAW;GAC1C,IAAI,eAAe,UAAU,MAAM,GAAG;IACpC,IAAI,YAAY,KAAK,CAAC,MAAM,eAAe;KACzC,IAAI,CAAC,oBAAoB,WAAW,CAAC,kBAAkB,MAAM,GAAG;MAC9D;KACF;IACF,OAAO,IAAI,CAAC,oBAAoB,MAAM,GAAG;KACvC;IACF;GACF;GACA,aAAa,MAAM,MAAM,aAAa,OAAO;EAC/C;EACA,OAAO,OAAO;GACZ,cAAc,UAAU;GACxB,MAAM,gBAAgB,MAAM;GAC5B,MAAM,cAAc,MAAM;GAC1B,WAAW,UAAU,OAAO,iBAAiB;IAC3C,MAAM,WAAW,cACf,SAAS,eAAe,SAAS,aAAa,gBAAgB,QAChE;IACA,IAAI,CAAC,iBAAiB,aAAa,SAAS,cAAc;IAC1D,IAAI,SAAS,QAAQ,KAAK,SAAS,SAAS,QAAQ,KAAK,SAAS,SAAS,cAAc,QAAQ,GAAG;KAClG;IACF;IACA,aAAa,OAAO,aAAa,OAAO;GAC1C,CAAC;EACH;CACF,IACA;EAAC,QAAQ,KAAK;EAAU,SAAS;EAAc;EAAc;CAAW,CAC1E;CACA,OAAO,cAAc,UAAU,EAAE,UAAU,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC;AACzE"}