@particle-academy/react-fancy 5.61.0 → 5.62.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 (156) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/dist/autocomplete.cjs +3 -3
  3. package/dist/autocomplete.js +2 -2
  4. package/dist/breadcrumbs.cjs +3 -3
  5. package/dist/breadcrumbs.js +2 -2
  6. package/dist/{chunk-KNKOSMOQ.cjs → chunk-35S5BTZH.cjs} +4 -4
  7. package/dist/{chunk-KNKOSMOQ.cjs.map → chunk-35S5BTZH.cjs.map} +1 -1
  8. package/dist/{chunk-O4HZVZMY.cjs → chunk-4GOOSZEK.cjs} +86 -24
  9. package/dist/chunk-4GOOSZEK.cjs.map +1 -0
  10. package/dist/{chunk-3I6PE2US.cjs → chunk-4XHG6Q42.cjs} +11 -11
  11. package/dist/{chunk-3I6PE2US.cjs.map → chunk-4XHG6Q42.cjs.map} +1 -1
  12. package/dist/{chunk-3AYRLFNO.js → chunk-A67EDGC7.js} +3 -3
  13. package/dist/{chunk-3AYRLFNO.js.map → chunk-A67EDGC7.js.map} +1 -1
  14. package/dist/{chunk-4HUD33OP.cjs → chunk-A6HWKQ4D.cjs} +4 -4
  15. package/dist/{chunk-4HUD33OP.cjs.map → chunk-A6HWKQ4D.cjs.map} +1 -1
  16. package/dist/{chunk-P6V4QWJK.cjs → chunk-AJPYGRLA.cjs} +4 -4
  17. package/dist/{chunk-P6V4QWJK.cjs.map → chunk-AJPYGRLA.cjs.map} +1 -1
  18. package/dist/{chunk-LMOPAY7Q.js → chunk-ARO2DNGS.js} +3 -3
  19. package/dist/{chunk-LMOPAY7Q.js.map → chunk-ARO2DNGS.js.map} +1 -1
  20. package/dist/{chunk-N7KUGFRG.js → chunk-BTNF3QBR.js} +4 -4
  21. package/dist/{chunk-N7KUGFRG.js.map → chunk-BTNF3QBR.js.map} +1 -1
  22. package/dist/{chunk-K6NADZ7O.cjs → chunk-CMC2TOEQ.cjs} +6 -6
  23. package/dist/{chunk-K6NADZ7O.cjs.map → chunk-CMC2TOEQ.cjs.map} +1 -1
  24. package/dist/{chunk-NDLESFUH.js → chunk-ELFTEJBT.js} +3 -3
  25. package/dist/{chunk-NDLESFUH.js.map → chunk-ELFTEJBT.js.map} +1 -1
  26. package/dist/{chunk-PKFEJWVI.js → chunk-EUVWYDFN.js} +3 -3
  27. package/dist/{chunk-PKFEJWVI.js.map → chunk-EUVWYDFN.js.map} +1 -1
  28. package/dist/{chunk-CEZVKKYW.js → chunk-EVIHLWPG.js} +4 -4
  29. package/dist/{chunk-CEZVKKYW.js.map → chunk-EVIHLWPG.js.map} +1 -1
  30. package/dist/{chunk-ULG4OA2T.js → chunk-FVI4JDLA.js} +3 -3
  31. package/dist/{chunk-ULG4OA2T.js.map → chunk-FVI4JDLA.js.map} +1 -1
  32. package/dist/{chunk-IY6LVALS.js → chunk-GEQKNV7E.js} +3 -3
  33. package/dist/{chunk-IY6LVALS.js.map → chunk-GEQKNV7E.js.map} +1 -1
  34. package/dist/{chunk-4FJWHVC7.js → chunk-GR2WKBER.js} +4 -2
  35. package/dist/chunk-GR2WKBER.js.map +1 -0
  36. package/dist/{chunk-UGXBTIV5.js → chunk-GZ5Z56QK.js} +4 -4
  37. package/dist/{chunk-UGXBTIV5.js.map → chunk-GZ5Z56QK.js.map} +1 -1
  38. package/dist/{chunk-Z5OTOYWI.cjs → chunk-HANQYZW2.cjs} +4 -4
  39. package/dist/{chunk-Z5OTOYWI.cjs.map → chunk-HANQYZW2.cjs.map} +1 -1
  40. package/dist/{chunk-UBEOB55O.js → chunk-JG2DJK5A.js} +3 -3
  41. package/dist/{chunk-UBEOB55O.js.map → chunk-JG2DJK5A.js.map} +1 -1
  42. package/dist/{chunk-J4FKJ4IR.cjs → chunk-LFC2DL6H.cjs} +4 -4
  43. package/dist/{chunk-J4FKJ4IR.cjs.map → chunk-LFC2DL6H.cjs.map} +1 -1
  44. package/dist/{chunk-FU6K7XXZ.cjs → chunk-MKGWHSNV.cjs} +4 -4
  45. package/dist/{chunk-FU6K7XXZ.cjs.map → chunk-MKGWHSNV.cjs.map} +1 -1
  46. package/dist/{chunk-BHUSI56C.js → chunk-MVVHUTXA.js} +3 -3
  47. package/dist/{chunk-BHUSI56C.js.map → chunk-MVVHUTXA.js.map} +1 -1
  48. package/dist/{chunk-UJZJBHMH.js → chunk-NILA2LZY.js} +3 -3
  49. package/dist/{chunk-UJZJBHMH.js.map → chunk-NILA2LZY.js.map} +1 -1
  50. package/dist/{chunk-SHF44YGG.js → chunk-NSJBVV7R.js} +3 -3
  51. package/dist/{chunk-SHF44YGG.js.map → chunk-NSJBVV7R.js.map} +1 -1
  52. package/dist/{chunk-QXMQVLRQ.cjs → chunk-OASSZI6M.cjs} +4 -2
  53. package/dist/chunk-OASSZI6M.cjs.map +1 -0
  54. package/dist/chunk-OUYC6EIL.cjs +66 -0
  55. package/dist/chunk-OUYC6EIL.cjs.map +1 -0
  56. package/dist/{chunk-5JFA7NYE.js → chunk-PXZRYL5I.js} +3 -3
  57. package/dist/{chunk-5JFA7NYE.js.map → chunk-PXZRYL5I.js.map} +1 -1
  58. package/dist/{chunk-TYTENEJQ.cjs → chunk-QNQNGARW.cjs} +6 -6
  59. package/dist/{chunk-TYTENEJQ.cjs.map → chunk-QNQNGARW.cjs.map} +1 -1
  60. package/dist/{chunk-74MEJWMH.js → chunk-QP35Z2WB.js} +3 -3
  61. package/dist/{chunk-74MEJWMH.js.map → chunk-QP35Z2WB.js.map} +1 -1
  62. package/dist/{chunk-NORVXHRU.js → chunk-QTS4Q2NK.js} +3 -3
  63. package/dist/{chunk-NORVXHRU.js.map → chunk-QTS4Q2NK.js.map} +1 -1
  64. package/dist/{chunk-4TTBPEQX.cjs → chunk-QWNZZPFL.cjs} +8 -8
  65. package/dist/{chunk-4TTBPEQX.cjs.map → chunk-QWNZZPFL.cjs.map} +1 -1
  66. package/dist/{chunk-7KTBVKNO.cjs → chunk-R6URPHEP.cjs} +4 -4
  67. package/dist/{chunk-7KTBVKNO.cjs.map → chunk-R6URPHEP.cjs.map} +1 -1
  68. package/dist/{chunk-4JLFIPHZ.js → chunk-RP43ZFZP.js} +8 -3
  69. package/dist/chunk-RP43ZFZP.js.map +1 -0
  70. package/dist/{chunk-RRMQGTVB.cjs → chunk-SYEHWUM5.cjs} +6 -6
  71. package/dist/{chunk-RRMQGTVB.cjs.map → chunk-SYEHWUM5.cjs.map} +1 -1
  72. package/dist/{chunk-IHQHTJNN.js → chunk-SZH7TFME.js} +4 -4
  73. package/dist/{chunk-IHQHTJNN.js.map → chunk-SZH7TFME.js.map} +1 -1
  74. package/dist/{chunk-JOWAS5A5.cjs → chunk-TQGRXJ74.cjs} +9 -9
  75. package/dist/{chunk-JOWAS5A5.cjs.map → chunk-TQGRXJ74.cjs.map} +1 -1
  76. package/dist/{chunk-6GBO7R25.cjs → chunk-UJRMY54A.cjs} +4 -4
  77. package/dist/{chunk-6GBO7R25.cjs.map → chunk-UJRMY54A.cjs.map} +1 -1
  78. package/dist/{chunk-ZPBCZPMD.cjs → chunk-VQJ5LJJH.cjs} +8 -3
  79. package/dist/chunk-VQJ5LJJH.cjs.map +1 -0
  80. package/dist/{chunk-MSGKIWYX.js → chunk-VZNBTCGA.js} +3 -3
  81. package/dist/{chunk-MSGKIWYX.js.map → chunk-VZNBTCGA.js.map} +1 -1
  82. package/dist/{chunk-M6MGQI6G.cjs → chunk-WKPBCB67.cjs} +4 -4
  83. package/dist/{chunk-M6MGQI6G.cjs.map → chunk-WKPBCB67.cjs.map} +1 -1
  84. package/dist/{chunk-QMCMRQ2G.cjs → chunk-WVSHAJKI.cjs} +7 -7
  85. package/dist/{chunk-QMCMRQ2G.cjs.map → chunk-WVSHAJKI.cjs.map} +1 -1
  86. package/dist/chunk-YX6FTJ6N.js +62 -0
  87. package/dist/chunk-YX6FTJ6N.js.map +1 -0
  88. package/dist/{chunk-HRYM76ZE.cjs → chunk-Z6LYBL5L.cjs} +9 -9
  89. package/dist/{chunk-HRYM76ZE.cjs.map → chunk-Z6LYBL5L.cjs.map} +1 -1
  90. package/dist/{chunk-3DMVK74Q.cjs → chunk-Z7SQMQTF.cjs} +4 -4
  91. package/dist/{chunk-3DMVK74Q.cjs.map → chunk-Z7SQMQTF.cjs.map} +1 -1
  92. package/dist/{chunk-NE3BZV3F.js → chunk-ZQ3VXRUY.js} +86 -24
  93. package/dist/chunk-ZQ3VXRUY.js.map +1 -0
  94. package/dist/command.cjs +4 -4
  95. package/dist/command.js +2 -2
  96. package/dist/composer.cjs +6 -6
  97. package/dist/composer.js +4 -4
  98. package/dist/context-menu.cjs +4 -4
  99. package/dist/context-menu.js +2 -2
  100. package/dist/drawer.cjs +4 -4
  101. package/dist/drawer.js +2 -2
  102. package/dist/dropdown.cjs +4 -4
  103. package/dist/dropdown.js +2 -2
  104. package/dist/editor.cjs +6 -6
  105. package/dist/editor.d.cts +1 -1
  106. package/dist/editor.d.ts +1 -1
  107. package/dist/editor.js +4 -4
  108. package/dist/full-screen.cjs +10 -9
  109. package/dist/full-screen.d.cts +5 -2
  110. package/dist/full-screen.d.ts +5 -2
  111. package/dist/full-screen.js +4 -3
  112. package/dist/index.cjs +81 -73
  113. package/dist/index.d.cts +2 -4
  114. package/dist/index.d.ts +2 -4
  115. package/dist/index.js +22 -22
  116. package/dist/input.cjs +5 -5
  117. package/dist/input.js +4 -4
  118. package/dist/inputs.cjs +7 -7
  119. package/dist/inputs.js +5 -5
  120. package/dist/json-editor.cjs +17 -17
  121. package/dist/json-editor.js +6 -6
  122. package/dist/mobile-menu.cjs +5 -5
  123. package/dist/mobile-menu.js +3 -3
  124. package/dist/modal.cjs +4 -4
  125. package/dist/modal.js +2 -2
  126. package/dist/paste-pills.cjs +16 -16
  127. package/dist/paste-pills.js +3 -3
  128. package/dist/popover.cjs +4 -4
  129. package/dist/popover.js +2 -2
  130. package/dist/prompt-input.cjs +6 -6
  131. package/dist/prompt-input.js +5 -5
  132. package/dist/reason-tag.cjs +4 -4
  133. package/dist/reason-tag.js +3 -3
  134. package/dist/select.cjs +3 -3
  135. package/dist/select.js +2 -2
  136. package/dist/sidebar.cjs +2 -2
  137. package/dist/sidebar.js +2 -2
  138. package/dist/styles.css +9 -0
  139. package/dist/styles.css.map +1 -1
  140. package/dist/tooltip.cjs +3 -2
  141. package/dist/tooltip.js +2 -1
  142. package/dist/{use-full-screen-H2j6qXDB.d.ts → use-full-screen-BUke36LI.d.cts} +36 -1
  143. package/dist/{use-full-screen-H2j6qXDB.d.cts → use-full-screen-BUke36LI.d.ts} +36 -1
  144. package/docs/FullScreen.md +15 -4
  145. package/docs/hooks.md +9 -3
  146. package/package.json +1 -1
  147. package/dist/chunk-4FJWHVC7.js.map +0 -1
  148. package/dist/chunk-4JLFIPHZ.js.map +0 -1
  149. package/dist/chunk-JXE5XID6.js +0 -19
  150. package/dist/chunk-JXE5XID6.js.map +0 -1
  151. package/dist/chunk-NE3BZV3F.js.map +0 -1
  152. package/dist/chunk-O4HZVZMY.cjs.map +0 -1
  153. package/dist/chunk-QXMQVLRQ.cjs.map +0 -1
  154. package/dist/chunk-RXDRYWVD.cjs +0 -21
  155. package/dist/chunk-RXDRYWVD.cjs.map +0 -1
  156. package/dist/chunk-ZPBCZPMD.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/scroll-lock.ts","../src/hooks/use-full-screen.ts"],"names":["layer"],"mappings":";;;;;AAYA,IAAI,OAAA,GAAU,CAAA;AACd,IAAI,KAAA,GAAQ,EAAA;AAEL,SAAS,cAAA,GAA6B;AAC3C,EAAA,IAAI,YAAY,CAAA,EAAG;AACjB,IAAA,KAAA,GAAQ,QAAA,CAAS,KAAK,KAAA,CAAM,QAAA;AAC5B,IAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,EACjC;AACA,EAAA,OAAA,EAAA;AAEA,EAAA,IAAI,QAAA,GAAW,KAAA;AACf,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,QAAA,EAAU;AACd,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,OAAA,EAAA;AACA,IAAA,IAAI,OAAA,KAAY,CAAA,EAAG,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,KAAA;AAAA,EACpD,CAAA;AACF;;;AC2EA,IAAM,SAAA,GAAY;AAAA,EAChB,SAAA;AAAA,EACA,wBAAA;AAAA,EACA,uBAAA;AAAA,EACA,0BAAA;AAAA,EACA,wBAAA;AAAA,EACA,kDAAA;AAAA,EACA;AACF,CAAA,CAAE,KAAK,IAAI,CAAA;AAGX,IAAM,aAAA,GAA+B;AAAA,EACnC,QAAA,EAAU,OAAA;AAAA,EACV,GAAA,EAAK,CAAA;AAAA,EACL,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,IAAA,EAAM,CAAA;AAAA,EACN,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,QAAA,EAAU,MAAA;AAAA,EACV,SAAA,EAAW,MAAA;AAAA,EACX,MAAA,EAAQ,CAAA;AAAA,EACR,YAAA,EAAc,CAAA;AAAA,EACd,SAAA,EAAW;AACb,CAAA;AAsBA,IAAM,QAAA,uBAAe,GAAA,EAA6B;AAElD,SAAS,iBAAA,CAAkB,IAAiB,MAAA,EAAyC;AACnF,EAAA,MAAM,CAAA,GAAI,EAAA;AACV,EAAA,IAAI,OAAO,EAAE,WAAA,KAAgB,UAAA,IAAc,OAAO,CAAA,CAAE,WAAA,KAAgB,YAAY,OAAO,IAAA;AAEvF,EAAA,IAAI,EAAA,CAAG,YAAA,CAAa,SAAS,CAAA,EAAG,OAAO,IAAA;AAEvC,EAAA,EAAA,CAAG,YAAA,CAAa,WAAW,QAAQ,CAAA;AACnC,EAAA,IAAI;AACF,IAAA,CAAA,CAAE,WAAA,EAAY;AAAA,EAChB,CAAA,CAAA,MAAQ;AACN,IAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,GAAO,IAAA;AACX,EAAA,IAAI,OAAA,GAAU,KAAA;AACd,EAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAa;AAC7B,IAAA,IAAI,OAAA,IAAY,CAAA,CAAoC,QAAA,KAAa,QAAA,IAAY,CAAC,IAAA,EAAM;AACpF,IAAA,IAAA,GAAO,KAAA;AACP,IAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAClB,IAAA,EAAA,CAAG,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AACzC,IAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA;AAC5B,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACA,EAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,QAAQ,CAAA;AAMtC,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,CAAA,IAAK,QAAA,EAAU;AACrC,IAAA,IAAI,UAAU,EAAA,IAAM,EAAA,CAAG,QAAA,CAAS,KAAK,GAAG,KAAA,EAAM;AAAA,EAChD;AACA,EAAA,QAAA,CAAS,GAAA,CAAI,IAAI,MAAM;AACrB,IAAA,OAAA,GAAU,IAAA;AACV,IAAA,IAAI;AACF,MAAA,CAAA,CAAE,WAAA,EAAa;AACf,MAAA,CAAA,CAAE,WAAA,EAAa;AAAA,IACjB,CAAA,CAAA,MAAQ;AAAA,IAER,CAAA,SAAE;AACA,MAAA,OAAA,GAAU,KAAA;AAAA,IACZ;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAClB,IAAA,EAAA,CAAG,mBAAA,CAAoB,UAAU,QAAQ,CAAA;AACzC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAA,GAAO,KAAA;AACP,MAAA,IAAI;AACF,QAAA,CAAA,CAAE,WAAA,EAAa;AAAA,MACjB,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AACA,IAAA,EAAA,CAAG,gBAAgB,SAAS,CAAA;AAAA,EAC9B,CAAA;AACF;AAgBO,SAAS,aAAA,CACd,OAAA,GAAgC,EAAC,EACT;AACxB,EAAA,MAAM;AAAA,IACJ,UAAA,EAAY,UAAA;AAAA,IACZ,iBAAA,GAAoB,KAAA;AAAA,IACpB,kBAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,aAAA,GAAgB,IAAA;AAAA,IAChB,UAAA,GAAa,IAAA;AAAA,IACb,MAAA,GAAS,EAAA;AAAA,IACT;AAAA,GACF,GAAI,OAAA;AAEJ,EAAA,MAAM,CAAC,UAAA,EAAY,QAAQ,IAAI,oBAAA,CAAqB,UAAA,EAAY,mBAAmB,kBAAkB,CAAA;AACrG,EAAA,MAAM,GAAA,GAAM,OAAiB,IAAI,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,EAAE,CAAA;AACvB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAA6B,IAAI,CAAA;AAS/E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,UAAU,CAAA;AAGjD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAA0B,OAAO,CAAA;AAC3D,EAAA,MAAM,UAAA,GAAa,OAA4B,IAAI,CAAA;AAEnD,EAAA,MAAM,OAAA,GAAU,CAAC,EAAA,KAAoB;AACnC,IAAA,IAAI,WAAW,OAAA,EAAS;AACxB,IAAA,UAAA,CAAW,OAAA,GAAU,iBAAA,CAAkB,EAAA,EAAI,MAAM;AAC/C,MAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,MAAA,QAAA,CAAS,OAAO,CAAA;AAAA,IAClB,CAAC,CAAA;AACD,IAAA,QAAA,CAAS,UAAA,CAAW,OAAA,GAAU,KAAA,GAAQ,OAAO,CAAA;AAAA,EAC/C,CAAA;AACA,EAAA,MAAM,SAAS,MAAM;AACnB,IAAA,UAAA,CAAW,OAAA,IAAU;AACrB,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,UAAU,CAAA;AACjC,EAAA,OAAA,CAAQ,OAAA,GAAU,UAAA;AAIlB,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,IAAA,KAAkB;AACjB,MAAA,IAAI,OAAA,CAAQ,YAAY,IAAA,EAAM;AAC9B,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AACA,EAAA,MAAM,MAAA,GAAS,WAAA,CAAY,MAAM,aAAA,CAAc,CAAC,QAAQ,OAAO,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAKjF,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAIT,IAAA,MAAM,WAAyB,EAAC;AAChC,IAAA,KAAA,IAAS,CAAA,GAAI,EAAA,CAAG,aAAA,EAAe,CAAA,IAAK,CAAA,KAAM,QAAA,CAAS,IAAA,IAAQ,CAAA,KAAM,QAAA,CAAS,eAAA,EAAiB,CAAA,GAAI,CAAA,CAAE,aAAA,EAAe;AAC9G,MAAA,IAAI,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,UAAA,WAAqB,IAAA,CAAK,EAAE,EAAA,EAAI,CAAA,EAAG,KAAK,CAAA,CAAE,SAAA,EAAW,IAAA,EAAM,CAAA,CAAE,YAAY,CAAA;AAAA,IAChG;AACA,IAAA,MAAM,OAAO,MAAA,CAAO,OAAA;AACpB,IAAA,MAAM,OAAO,MAAA,CAAO,OAAA;AAEpB,IAAA,MAAM,OAAA,GAAU,UAAA,GAAa,cAAA,EAAe,GAAI,IAAA;AAChD,IAAA,kBAAA,CAAmB,EAAE,CAAA;AACrB,IAAA,UAAA,CAAW,IAAI,CAAA;AAMf,IAAA,MAAM,MAAA,GAAS,SAAS,QAAA,IAAY,OAAO,GAAG,iBAAA,KAAsB,UAAA,IAAc,SAAS,iBAAA,KAAsB,KAAA;AACjH,IAAA,IAAI,CAAC,MAAA,EAAQ,OAAA,CAAQ,EAAE,CAAA;AAEvB,IAAA,OAAO,MAAM;AAGX,MAAA,MAAA,EAAO;AACP,MAAA,QAAA,CAAS,OAAO,CAAA;AAChB,MAAA,OAAA,IAAU;AACV,MAAA,KAAA,MAAW,KAAK,QAAA,EAAU;AACxB,QAAA,IAAI,CAAA,CAAE,GAAG,SAAA,KAAc,CAAA,CAAE,KAAK,CAAA,CAAE,EAAA,CAAG,YAAY,CAAA,CAAE,GAAA;AACjD,QAAA,IAAI,CAAA,CAAE,GAAG,UAAA,KAAe,CAAA,CAAE,MAAM,CAAA,CAAE,EAAA,CAAG,aAAa,CAAA,CAAE,IAAA;AAAA,MACtD;AACA,MAAA,IAAI,MAAA,CAAO,YAAY,IAAA,IAAQ,MAAA,CAAO,YAAY,IAAA,EAAM,MAAA,CAAO,QAAA,CAAS,IAAA,EAAM,IAAI,CAAA;AAClF,MAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAAA,EAEF,CAAA,EAAG,CAAC,UAAA,EAAY,UAAA,EAAY,IAAI,CAAC,CAAA;AAKjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,EAAA,EAAI;AAET,IAAA,MAAM,MAAA,GACJ,SAAS,aAAA,YAAyB,WAAA,IAAe,SAAS,aAAA,KAAkB,QAAA,CAAS,IAAA,GACjF,QAAA,CAAS,aAAA,GACT,IAAA;AAGN,IAAA,IAAI,CAAC,EAAA,CAAG,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,EAAG;AACxC,MAAA,EAAA,CAAG,cAA2B,SAAS,CAAA,EAAG,MAAM,EAAE,aAAA,EAAe,MAAM,CAAA;AAAA,IACzE;AAEA,IAAA,OAAO,MAAM;AAGX,MAAA,MAAM,SAAS,QAAA,CAAS,aAAA;AACxB,MAAA,IAAI,MAAA,EAAQ,WAAA,KAAgB,CAAC,MAAA,IAAU,MAAA,KAAW,SAAS,IAAA,IAAQ,EAAA,CAAG,QAAA,CAAS,MAAM,CAAA,CAAA,EAAI;AACvF,QAAA,MAAA,CAAO,KAAA,CAAM,EAAE,aAAA,EAAe,IAAA,EAAM,CAAA;AAAA,MACtC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAGf,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,IAAc,IAAA,KAAS,QAAA,EAAU;AACtC,IAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,IAAA,IAAI,CAAC,MAAM,OAAO,EAAA,CAAG,sBAAsB,UAAA,IAAc,QAAA,CAAS,sBAAsB,KAAA,EAAO;AAE/F,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,IAAI,OAAA,GAAU,KAAA;AAEd,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,QAAA,CAAS,sBAAsB,EAAA,EAAI;AACrC,QAAA,OAAA,GAAU,IAAA;AACV,QAAA,eAAA,CAAgB,IAAI,CAAA;AAEpB,QAAA,QAAA,CAAS,KAAK,CAAA;AAAA,MAChB,WAAW,OAAA,EAAS;AAIlB,QAAA,OAAA,GAAU,KAAA;AACV,QAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,QAAA,QAAA,CAAS,OAAO,CAAA;AAChB,QAAA,IAAI,CAAC,SAAA,EAAW,aAAA,CAAc,KAAK,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AACA,IAAA,QAAA,CAAS,gBAAA,CAAiB,oBAAoB,QAAQ,CAAA;AAKtD,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,IAAI,CAAC,aAAa,OAAA,CAAQ,OAAA,IAAW,IAAI,OAAA,KAAY,EAAA,UAAY,EAAE,CAAA;AAAA,IACrE,CAAA;AACA,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,QAAQ,EAAA,CAAG,iBAAA,EAAmB,CAAA,CAAE,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,IAChE,CAAA,CAAA,MAAQ;AACN,MAAA,OAAA,EAAQ;AAAA,IACV;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,QAAA,CAAS,mBAAA,CAAoB,oBAAoB,QAAQ,CAAA;AACzD,MAAA,IAAI,QAAA,CAAS,sBAAsB,EAAA,EAAI;AACrC,QAAA,IAAI;AACF,UAAA,OAAA,CAAQ,QAAQ,QAAA,CAAS,cAAA,EAAgB,CAAA,CAAE,MAAM,MAAM;AAAA,UAAC,CAAC,CAAA;AAAA,QAC3D,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,IAAA,EAAM,aAAa,CAAC,CAAA;AAQpC,EAAA,MAAM,WAAA,GAAc,eAAe,MAAM,aAAA,CAAc,KAAK,CAAA,EAAG,UAAA,IAAc,aAAA,EAAe,KAAA,CAAM,OAAO,CAAA;AAEzG,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,CAAA,KAA6B;AAC5B,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,IAAW,CAAA,CAAE,gBAAA,EAAkB;AAC5C,MAAA,MAAM,KAAK,GAAA,CAAI,OAAA;AACf,MAAA,IAAI,CAAC,EAAA,EAAI;AAET,MAAA,IAAI,CAAA,CAAE,QAAQ,KAAA,EAAO;AAEnB,QAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,gBAAA,CAA8B,SAAS,CAAC,CAAA;AACpE,QAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACxB,QAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AACnC,QAAA,MAAM,SAAS,QAAA,CAAS,aAAA;AACxB,QAAA,IAAI,CAAA,CAAE,QAAA,KAAa,MAAA,KAAW,KAAA,IAAS,WAAW,EAAA,CAAA,EAAK;AACrD,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAA,CAAK,KAAA,EAAM;AAAA,QACb,CAAA,MAAA,IAAW,CAAC,CAAA,CAAE,QAAA,IAAY,WAAW,IAAA,EAAM;AACzC,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,KAAA,CAAM,KAAA,EAAM;AAAA,QACd;AACA,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,CAAC,aAAA,EAAe;AAM1C,MAAA,IAAI,CAAC,WAAA,CAAY,WAAA,EAAY,EAAG;AAKhC,MAAA,MAAMA,MAAAA,GAAS,CAAA,CAAE,MAAA,CAAmB,OAAA,GAAU,2BAA2B,CAAA;AACzE,MAAA,IAAIA,MAAAA,IAAS,CAACA,MAAAA,CAAM,QAAA,CAAS,EAAE,CAAA,EAAG;AAGlC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB,CAAA;AAAA;AAAA,IAEA,CAAC,eAAe,aAAa;AAAA,GAC/B;AAEA,EAAA,MAAM,UAAA,GAAoC,UAAA,GAAc,YAAA,GAAe,QAAA,GAAW,SAAA,GAAa,IAAA;AAC/F,EAAA,MAAM,UAAA,GAAa,QAAQ,KAAA,IAAS,mBAAA;AACpC,EAAA,MAAM,SAAA,GAAY,QAAQ,IAAA,IAAQ,kBAAA;AAElC,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA,EAAO,aAAa,KAAA,GAAQ,IAAA;AAAA,IAC5B,GAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAa,KAAA,CAAM,OAAA;AAAA,IACnB,WAAA,EAAa;AAAA,MACX,GAAA;AAAA,MACA,iBAAA,EAAmB,aAAa,MAAA,GAAS,OAAA;AAAA,MACzC,GAAI,aAAa,EAAE,sBAAA,EAAwB,YAAY,uBAAA,EAAyB,KAAA,KAAU,EAAC;AAAA,MAC3F,GAAI,UAAA,IAAc,OAAA,GAAU,EAAE,KAAA,EAAO,EAAE,GAAG,aAAA,EAAe,MAAA,EAAO,EAAE,GAAI,EAAC;AAAA,MACvE;AAAA,KACF;AAAA,IACA,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,MAAA;AAAA,MACT,cAAA,EAAgB,UAAA;AAAA,MAChB,YAAA,EAAc,aAAa,SAAA,GAAY,UAAA;AAAA,MACvC,KAAA,EAAO,aAAa,SAAA,GAAY,UAAA;AAAA,MAChC,oCAAA,EAAsC,EAAA;AAAA,MACtC,iBAAA,EAAmB,aAAa,MAAA,GAAS;AAAA;AAC3C,GACF;AACF","file":"chunk-ZQ3VXRUY.js","sourcesContent":["/**\n * Reference-counted body scroll lock.\n *\n * Two surfaces locking independently with the save-and-restore pattern\n * (`const original = body.style.overflow`) only unwind correctly in strict LIFO\n * order. Exit them out of order and the first one out restores `\"\"` while the\n * second is still covering the viewport, so the page scrolls behind it. Counting\n * holders keeps the lock until the last one lets go, and restores the value that\n * was there before the FIRST took it.\n *\n * Call only from an effect: it touches `document`.\n */\nlet holders = 0;\nlet saved = \"\";\n\nexport function lockBodyScroll(): () => void {\n if (holders === 0) {\n saved = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n }\n holders++;\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n holders--;\n if (holders === 0) document.body.style.overflow = saved;\n };\n}\n","import {\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent as ReactKeyboardEvent,\n type RefObject,\n} from \"react\";\nimport { useControllableState } from \"./use-controllable-state\";\nimport { lockBodyScroll } from \"../utils/scroll-lock\";\nimport { useEscapeLayer, type EscapeScope } from \"./use-escape-key\";\n\n/**\n * How a surface goes full screen.\n *\n * - `\"overlay\"` (default): the element itself becomes `position: fixed` over the\n * viewport, in place. It always works: inside an iframe without\n * `allow=\"fullscreen\"`, inside a dialog, without a user gesture. Nothing is\n * reparented, so an editor keeps its caret, undo stack and DOM.\n * - `\"native\"`: the browser Fullscreen API (`element.requestFullscreen()`),\n * which hides the browser chrome too. The overlay is applied first and stays\n * if the request is rejected or the API is missing, so the user gets full\n * screen either way; `activeMode` reports which one took.\n */\nexport type FullScreenMode = \"overlay\" | \"native\";\n\nexport interface UseFullScreenOptions {\n /** Controlled flag. Pair with `onFullScreenChange`. */\n fullScreen?: boolean;\n /** Initial flag when uncontrolled. @default false */\n defaultFullScreen?: boolean;\n /**\n * Fired with the requested state — from the toggle, Escape, an agent calling\n * `setFullScreen`, or the user leaving the browser's own full screen.\n */\n onFullScreenChange?: (fullScreen: boolean) => void;\n /** @default \"overlay\" */\n mode?: FullScreenMode;\n /** Leave full screen on Escape. @default true */\n closeOnEscape?: boolean;\n /** Stop the page behind from scrolling while active. @default true */\n lockScroll?: boolean;\n /** Stacking order of the overlay. Matches `Modal`. @default 50 */\n zIndex?: number;\n /** Accessible names for the toggle. */\n labels?: { enter?: string; exit?: string };\n}\n\nexport interface FullScreenTargetProps<T extends HTMLElement> {\n ref: RefObject<T | null>;\n \"data-fullscreen\": \"true\" | \"false\";\n \"data-fullscreen-mode\"?: FullScreenMode;\n \"data-fullscreen-layer\"?: FullScreenLayer;\n style?: CSSProperties;\n onKeyDown: (event: ReactKeyboardEvent<T>) => void;\n}\n\nexport interface FullScreenToggleProps {\n type: \"button\";\n onClick: () => void;\n \"aria-pressed\": boolean;\n \"aria-label\": string;\n title: string;\n \"data-react-fancy-fullscreen-toggle\": \"\";\n \"data-fullscreen\": \"true\" | \"false\";\n}\n\nexport interface UseFullScreenResult<T extends HTMLElement = HTMLElement> {\n fullScreen: boolean;\n setFullScreen: (fullScreen: boolean) => void;\n toggle: () => void;\n /** The mechanism in effect while active; `null` when not full screen. */\n activeMode: FullScreenMode | null;\n /**\n * `\"top\"` while the surface is in the browser's top layer (a manual popover,\n * or the native full screen), `\"fixed\"` while it relies on `position: fixed`\n * (no popover API, or the browser refused). `null` when not full screen.\n */\n layer: FullScreenLayer | null;\n /** Attach to the element that goes full screen. Also inside `targetProps`. */\n ref: RefObject<T | null>;\n /**\n * Spread onto the surface's root. Carries the ref, the `data-fullscreen`\n * handle, the overlay style and the Escape/Tab handler. Merge your own\n * `style` / `onKeyDown` if the root has them.\n */\n targetProps: FullScreenTargetProps<T>;\n /** Spread onto a `<button>` to make it the toggle. */\n toggleProps: FullScreenToggleProps;\n /**\n * The element to portal into while active, else `null`. Provide it through\n * `PortalContainerContext` so menus opened inside stay visible.\n */\n portalContainer: HTMLElement | null;\n /**\n * Identity of this surface for Escape routing. Provide it through\n * `EscapeLayerContext` (FullScreenProvider does) so a menu opened inside\n * gets Escape before the surface does.\n */\n escapeScope: EscapeScope;\n}\n\nconst FOCUSABLE = [\n \"a[href]\",\n \"button:not([disabled])\",\n \"input:not([disabled])\",\n \"textarea:not([disabled])\",\n \"select:not([disabled])\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[tabindex]:not([tabindex='-1'])\",\n].join(\", \");\n\n\nconst OVERLAY_STYLE: CSSProperties = {\n position: \"fixed\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"none\",\n maxHeight: \"none\",\n margin: 0,\n borderRadius: 0,\n boxSizing: \"border-box\",\n};\n\n/**\n * Lift `el` into the browser's top layer with `popover=\"manual\"`.\n *\n * Why: `position: fixed` is only fixed to the viewport while no ancestor has a\n * transform, filter, perspective or paint containment. With one, the overlay\n * is fixed to THAT box. In the showcase a surface in a Tabs panel came out\n * 1248x95, because `.fancy-fade-in` held `transform: matrix(1,0,0,1,0,0)` via\n * `animation-fill-mode: both`. Transform-centred dialogs do the same. A\n * top-layer element's containing block is the viewport whatever its ancestors\n * do, and the popover API gets it there without moving it in the DOM.\n *\n * `manual` because `auto` light-dismisses on an outside click and on Escape;\n * Escape stays with the surface's own handler.\n *\n * Returns a release function, or `null` where the API is missing or refuses\n * (the caller keeps the fixed overlay). `onLost` fires if something else\n * closes the popover: a `[popover]` that is not open is `display: none`, so the\n * attribute must go at once or the surface vanishes while still \"full screen\".\n */\n/** Surfaces currently in the top layer through a popover, with a \"re-show\" each. */\nconst promoted = new Map<HTMLElement, () => void>();\n\nfunction promoteToTopLayer(el: HTMLElement, onLost: () => void): (() => void) | null {\n const p = el as HTMLElement & { showPopover?: () => void; hidePopover?: () => void };\n if (typeof p.showPopover !== \"function\" || typeof p.hidePopover !== \"function\") return null;\n // The consumer made it a popover themselves; do not fight over it.\n if (el.hasAttribute(\"popover\")) return null;\n\n el.setAttribute(\"popover\", \"manual\");\n try {\n p.showPopover();\n } catch {\n el.removeAttribute(\"popover\");\n return null;\n }\n\n let open = true;\n let raising = false;\n const onToggle = (e: Event) => {\n if (raising || (e as Event & { newState?: string }).newState !== \"closed\" || !open) return;\n open = false;\n promoted.delete(el);\n el.removeEventListener(\"toggle\", onToggle);\n el.removeAttribute(\"popover\");\n onLost();\n };\n el.addEventListener(\"toggle\", onToggle);\n\n // The top layer stacks in SHOW order. React runs a child's layout effects\n // before its parent's, so a surface nested in another that goes full screen\n // in the same commit is shown first and then buried by its parent. Re-show\n // any promoted descendant so the innermost stays on top.\n for (const [other, raise] of promoted) {\n if (other !== el && el.contains(other)) raise();\n }\n promoted.set(el, () => {\n raising = true;\n try {\n p.hidePopover!();\n p.showPopover!();\n } catch {\n /* leave it where it is */\n } finally {\n raising = false;\n }\n });\n\n return () => {\n promoted.delete(el);\n el.removeEventListener(\"toggle\", onToggle);\n if (open) {\n open = false;\n try {\n p.hidePopover!();\n } catch {\n /* already hidden, e.g. removed from the document */\n }\n }\n el.removeAttribute(\"popover\");\n };\n}\n\n/** Which mechanism keeps the surface over the page. */\nexport type FullScreenLayer = \"top\" | \"fixed\";\n\ninterface ScrollMemo {\n el: Element;\n top: number;\n left: number;\n}\n\n/**\n * A controlled full-screen state for any surface: Editor today, DeckEditor and\n * SheetWorkbook next. Render-time output is pure (no `window`/`document`), so it\n * server-renders; everything that touches the DOM runs in effects.\n */\nexport function useFullScreen<T extends HTMLElement = HTMLElement>(\n options: UseFullScreenOptions = {},\n): UseFullScreenResult<T> {\n const {\n fullScreen: controlled,\n defaultFullScreen = false,\n onFullScreenChange,\n mode = \"overlay\",\n closeOnEscape = true,\n lockScroll = true,\n zIndex = 50,\n labels,\n } = options;\n\n const [fullScreen, setState] = useControllableState(controlled, defaultFullScreen, onFullScreenChange);\n const ref = useRef<T | null>(null);\n const token = useRef({});\n const [nativeActive, setNativeActive] = useState(false);\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n // Whether the overlay STYLE is on. It trails `fullScreen` by one synchronous\n // commit on entry, so the layout effect below reads scroll offsets while the\n // surface is still in flow. Read after the style lands and the browser has\n // already clamped every scroll container around it: a panel at 569 read as\n // 342 in Chromium, and that is where the user was sent back to. The re-render\n // happens inside the layout phase, before paint, so nothing flashes.\n // Initialised from `fullScreen` so a surface that starts full screen renders\n // the overlay on the server and on hydration alike.\n const [applied, setApplied] = useState(fullScreen);\n // \"fixed\" until a layout effect has actually promoted the surface, so the\n // server and the hydrating client agree, and a refused promotion reads true.\n const [layer, setLayer] = useState<FullScreenLayer>(\"fixed\");\n const topRelease = useRef<(() => void) | null>(null);\n\n const promote = (el: HTMLElement) => {\n if (topRelease.current) return;\n topRelease.current = promoteToTopLayer(el, () => {\n topRelease.current = null;\n setLayer(\"fixed\");\n });\n setLayer(topRelease.current ? \"top\" : \"fixed\");\n };\n const demote = () => {\n topRelease.current?.();\n topRelease.current = null;\n };\n\n const current = useRef(fullScreen);\n current.current = fullScreen;\n\n // Only report real transitions: Escape on an inactive surface, or a second\n // click racing a re-render, must not fire `onFullScreenChange(false)` twice.\n const setFullScreen = useCallback(\n (next: boolean) => {\n if (current.current === next) return;\n current.current = next;\n setState(next);\n },\n [setState],\n );\n const toggle = useCallback(() => setFullScreen(!current.current), [setFullScreen]);\n\n // Enter / exit bookkeeping. A LAYOUT effect so the cleanup runs after the\n // overlay style has been removed from the DOM but before paint: scroll offsets\n // restored there never flash, and the surface is back in flow to measure.\n useLayoutEffect(() => {\n if (!fullScreen) return;\n const el = ref.current;\n if (!el) return;\n\n // Taking the surface out of flow shrinks every scroll container around it,\n // which clamps their scrollTop. Remember them so exit lands where it began.\n const scrolled: ScrollMemo[] = [];\n for (let p = el.parentElement; p && p !== document.body && p !== document.documentElement; p = p.parentElement) {\n if (p.scrollTop || p.scrollLeft) scrolled.push({ el: p, top: p.scrollTop, left: p.scrollLeft });\n }\n const winX = window.scrollX;\n const winY = window.scrollY;\n\n const release = lockScroll ? lockBodyScroll() : null;\n setPortalContainer(el);\n setApplied(true);\n\n // Native mode asks the browser first: Chromium rejects requestFullscreen()\n // on an element that is already an open popover (\"already open as a\n // Popover, and therefore cannot be opened via the fullscreen API\"). The\n // native effect promotes on refusal instead.\n const native = mode === \"native\" && typeof el.requestFullscreen === \"function\" && document.fullscreenEnabled !== false;\n if (!native) promote(el);\n\n return () => {\n // Out of the top layer first, so the surface is back in flow before the\n // scroll offsets are put back.\n demote();\n setLayer(\"fixed\");\n release?.();\n for (const m of scrolled) {\n if (m.el.scrollTop !== m.top) m.el.scrollTop = m.top;\n if (m.el.scrollLeft !== m.left) m.el.scrollLeft = m.left;\n }\n if (window.scrollX !== winX || window.scrollY !== winY) window.scrollTo(winX, winY);\n setPortalContainer(null);\n setApplied(false);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fullScreen, lockScroll, mode]);\n\n // Focus in and back out. A PASSIVE effect on purpose: React re-focuses\n // whatever had focus before a commit once the commit's mutations finish, so a\n // focus() issued from a layout-effect cleanup is silently undone.\n useEffect(() => {\n if (!fullScreen) return;\n const el = ref.current;\n if (!el) return;\n\n const opener =\n document.activeElement instanceof HTMLElement && document.activeElement !== document.body\n ? document.activeElement\n : null;\n\n // Focus must not stay behind the overlay, where the user cannot see it.\n if (!el.contains(document.activeElement)) {\n el.querySelector<HTMLElement>(FOCUSABLE)?.focus({ preventScroll: true });\n }\n\n return () => {\n // Give focus back only if it is still ours to give: inside the surface,\n // or lost to <body>. A user who clicked elsewhere keeps their choice.\n const active = document.activeElement;\n if (opener?.isConnected && (!active || active === document.body || el.contains(active))) {\n opener.focus({ preventScroll: true });\n }\n };\n }, [fullScreen]);\n\n // The browser Fullscreen API, on top of the overlay.\n useEffect(() => {\n if (!fullScreen || mode !== \"native\") return;\n const el = ref.current;\n if (!el || typeof el.requestFullscreen !== \"function\" || document.fullscreenEnabled === false) return;\n\n let cancelled = false;\n let entered = false;\n\n const onChange = () => {\n if (document.fullscreenElement === el) {\n entered = true;\n setNativeActive(true);\n // The browser's full screen is the top layer too.\n setLayer(\"top\");\n } else if (entered) {\n // The user left through the browser's own UI (Esc, F11, the close\n // pill). Keep the controlled state honest rather than leaving an\n // overlay up that they believe they dismissed.\n entered = false;\n setNativeActive(false);\n setLayer(\"fixed\");\n if (!cancelled) setFullScreen(false);\n }\n };\n document.addEventListener(\"fullscreenchange\", onChange);\n\n // Blocked requests (iframe without allow=\"fullscreen\", no user gesture, a\n // permissions policy) reject, and some engines throw instead. Either way\n // the user stays full screen in the overlay, lifted into the top layer.\n const refused = () => {\n if (!cancelled && current.current && ref.current === el) promote(el);\n };\n try {\n Promise.resolve(el.requestFullscreen()).then(onChange, refused);\n } catch {\n refused();\n }\n\n return () => {\n cancelled = true;\n document.removeEventListener(\"fullscreenchange\", onChange);\n if (document.fullscreenElement === el) {\n try {\n Promise.resolve(document.exitFullscreen()).catch(() => {});\n } catch {\n /* already left */\n }\n }\n setNativeActive(false);\n };\n }, [fullScreen, mode, setFullScreen]);\n\n // The surface is an Escape LAYER while active, in the same stack as every\n // Dropdown, Select, Popover, Modal and Tooltip. Layers opened inside it\n // register under `token.current` (through EscapeLayerContext, which crosses\n // portals), so the stack knows they are inside and hands them Escape first,\n // whatever order the listeners run in. With nothing focused, or focus\n // outside the surface, the stack's document listener delivers it here.\n const escapeLayer = useEscapeLayer(() => setFullScreen(false), fullScreen && closeOnEscape, token.current);\n\n const onKeyDown = useCallback(\n (e: ReactKeyboardEvent<T>) => {\n if (!current.current || e.defaultPrevented) return;\n const el = ref.current;\n if (!el) return;\n\n if (e.key === \"Tab\") {\n // Keep Tab inside the surface; what is behind the overlay is invisible.\n const items = Array.from(el.querySelectorAll<HTMLElement>(FOCUSABLE));\n if (items.length === 0) return;\n const first = items[0];\n const last = items[items.length - 1];\n const active = document.activeElement;\n if (e.shiftKey && (active === first || active === el)) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && active === last) {\n e.preventDefault();\n first.focus();\n }\n return;\n }\n\n if (e.key !== \"Escape\" || !closeOnEscape) return;\n // A layer opened from inside this surface is open (a menu, a listbox, a\n // popover, a tooltip, a dialog): it owns this Escape. Let the event go on\n // to the stack's document listener, which closes that layer only. This\n // is a lookup, not a race: in 5.61.1 the surface asked\n // `defaultPrevented`, which a document-level menu had not set yet.\n if (!escapeLayer.isInnermost()) return;\n // Portal content that never registered as a layer (a consumer's own\n // menu in a react-fancy Portal) still gets the benefit of the doubt.\n // React bubbles portal events through the component tree, so check the\n // DOM: a portal wrapper that does not contain this surface is inside it.\n const layer = (e.target as Element).closest?.(\"[data-react-fancy-portal]\");\n if (layer && !layer.contains(el)) return;\n // Stop it here so an enclosing dialog's document listener does not also\n // close: one Escape, one step back.\n e.preventDefault();\n e.stopPropagation();\n setFullScreen(false);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [closeOnEscape, setFullScreen],\n );\n\n const activeMode: FullScreenMode | null = fullScreen ? (nativeActive ? \"native\" : \"overlay\") : null;\n const enterLabel = labels?.enter ?? \"Enter full screen\";\n const exitLabel = labels?.exit ?? \"Exit full screen\";\n\n return {\n fullScreen,\n setFullScreen,\n toggle,\n activeMode,\n layer: activeMode ? layer : null,\n ref,\n portalContainer,\n escapeScope: token.current,\n targetProps: {\n ref,\n \"data-fullscreen\": fullScreen ? \"true\" : \"false\",\n ...(activeMode ? { \"data-fullscreen-mode\": activeMode, \"data-fullscreen-layer\": layer } : {}),\n ...(fullScreen && applied ? { style: { ...OVERLAY_STYLE, zIndex } } : {}),\n onKeyDown,\n },\n toggleProps: {\n type: \"button\",\n onClick: toggle,\n \"aria-pressed\": fullScreen,\n \"aria-label\": fullScreen ? exitLabel : enterLabel,\n title: fullScreen ? exitLabel : enterLabel,\n \"data-react-fancy-fullscreen-toggle\": \"\",\n \"data-fullscreen\": fullScreen ? \"true\" : \"false\",\n },\n };\n}\n"]}
package/dist/command.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunk6GBO7R25_cjs = require('./chunk-6GBO7R25.cjs');
3
+ var chunkUJRMY54A_cjs = require('./chunk-UJRMY54A.cjs');
4
4
  require('./chunk-TXTRTTG7.cjs');
5
5
  require('./chunk-FQZE5N2N.cjs');
6
6
  require('./chunk-MKHYENKR.cjs');
7
7
  require('./chunk-TI7D4QDM.cjs');
8
- require('./chunk-RXDRYWVD.cjs');
8
+ require('./chunk-OUYC6EIL.cjs');
9
9
  require('./chunk-SNHU2AI4.cjs');
10
10
  require('./chunk-ZU5Q77OT.cjs');
11
11
 
@@ -13,11 +13,11 @@ require('./chunk-ZU5Q77OT.cjs');
13
13
 
14
14
  Object.defineProperty(exports, "Command", {
15
15
  enumerable: true,
16
- get: function () { return chunk6GBO7R25_cjs.Command; }
16
+ get: function () { return chunkUJRMY54A_cjs.Command; }
17
17
  });
18
18
  Object.defineProperty(exports, "useCommand", {
19
19
  enumerable: true,
20
- get: function () { return chunk6GBO7R25_cjs.useCommand; }
20
+ get: function () { return chunkUJRMY54A_cjs.useCommand; }
21
21
  });
22
22
  //# sourceMappingURL=command.cjs.map
23
23
  //# sourceMappingURL=command.cjs.map
package/dist/command.js CHANGED
@@ -1,9 +1,9 @@
1
- export { Command, useCommand } from './chunk-LMOPAY7Q.js';
1
+ export { Command, useCommand } from './chunk-ARO2DNGS.js';
2
2
  import './chunk-5U2DZ7AV.js';
3
3
  import './chunk-3K2CEAI7.js';
4
4
  import './chunk-5VMILVWD.js';
5
5
  import './chunk-RBCMKPBX.js';
6
- import './chunk-JXE5XID6.js';
6
+ import './chunk-YX6FTJ6N.js';
7
7
  import './chunk-EDYAXGUM.js';
8
8
  import './chunk-MMW2JGKZ.js';
9
9
  //# sourceMappingURL=command.js.map
package/dist/composer.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkJOWAS5A5_cjs = require('./chunk-JOWAS5A5.cjs');
4
- var chunkTYTENEJQ_cjs = require('./chunk-TYTENEJQ.cjs');
5
- require('./chunk-FU6K7XXZ.cjs');
3
+ var chunkTQGRXJ74_cjs = require('./chunk-TQGRXJ74.cjs');
4
+ var chunkQNQNGARW_cjs = require('./chunk-QNQNGARW.cjs');
5
+ require('./chunk-MKGWHSNV.cjs');
6
6
  require('./chunk-J2DI6RMR.cjs');
7
7
  require('./chunk-MKHYENKR.cjs');
8
8
  require('./chunk-TI7D4QDM.cjs');
9
9
  require('./chunk-57FQGQJK.cjs');
10
- require('./chunk-RXDRYWVD.cjs');
10
+ require('./chunk-OUYC6EIL.cjs');
11
11
  require('./chunk-SNHU2AI4.cjs');
12
12
  require('./chunk-ZU5Q77OT.cjs');
13
13
 
@@ -15,11 +15,11 @@ require('./chunk-ZU5Q77OT.cjs');
15
15
 
16
16
  Object.defineProperty(exports, "Composer", {
17
17
  enumerable: true,
18
- get: function () { return chunkJOWAS5A5_cjs.Composer; }
18
+ get: function () { return chunkTQGRXJ74_cjs.Composer; }
19
19
  });
20
20
  Object.defineProperty(exports, "pasteMarker", {
21
21
  enumerable: true,
22
- get: function () { return chunkTYTENEJQ_cjs.pasteMarker; }
22
+ get: function () { return chunkQNQNGARW_cjs.pasteMarker; }
23
23
  });
24
24
  //# sourceMappingURL=composer.cjs.map
25
25
  //# sourceMappingURL=composer.cjs.map
package/dist/composer.js CHANGED
@@ -1,11 +1,11 @@
1
- export { Composer } from './chunk-NDLESFUH.js';
2
- export { pasteMarker } from './chunk-UJZJBHMH.js';
3
- import './chunk-NORVXHRU.js';
1
+ export { Composer } from './chunk-ELFTEJBT.js';
2
+ export { pasteMarker } from './chunk-NILA2LZY.js';
3
+ import './chunk-QTS4Q2NK.js';
4
4
  import './chunk-MQ6VGG62.js';
5
5
  import './chunk-5VMILVWD.js';
6
6
  import './chunk-RBCMKPBX.js';
7
7
  import './chunk-RGANGU7X.js';
8
- import './chunk-JXE5XID6.js';
8
+ import './chunk-YX6FTJ6N.js';
9
9
  import './chunk-EDYAXGUM.js';
10
10
  import './chunk-MMW2JGKZ.js';
11
11
  //# sourceMappingURL=composer.js.map
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunk3DMVK74Q_cjs = require('./chunk-3DMVK74Q.cjs');
3
+ var chunkZ7SQMQTF_cjs = require('./chunk-Z7SQMQTF.cjs');
4
4
  require('./chunk-FQZE5N2N.cjs');
5
5
  require('./chunk-MKHYENKR.cjs');
6
6
  require('./chunk-TI7D4QDM.cjs');
7
7
  require('./chunk-57FQGQJK.cjs');
8
- require('./chunk-RXDRYWVD.cjs');
8
+ require('./chunk-OUYC6EIL.cjs');
9
9
  require('./chunk-ZU5Q77OT.cjs');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "ContextMenu", {
14
14
  enumerable: true,
15
- get: function () { return chunk3DMVK74Q_cjs.ContextMenu; }
15
+ get: function () { return chunkZ7SQMQTF_cjs.ContextMenu; }
16
16
  });
17
17
  Object.defineProperty(exports, "useContextMenu", {
18
18
  enumerable: true,
19
- get: function () { return chunk3DMVK74Q_cjs.useContextMenu; }
19
+ get: function () { return chunkZ7SQMQTF_cjs.useContextMenu; }
20
20
  });
21
21
  //# sourceMappingURL=context-menu.cjs.map
22
22
  //# sourceMappingURL=context-menu.cjs.map
@@ -1,9 +1,9 @@
1
- export { ContextMenu, useContextMenu } from './chunk-SHF44YGG.js';
1
+ export { ContextMenu, useContextMenu } from './chunk-NSJBVV7R.js';
2
2
  import './chunk-3K2CEAI7.js';
3
3
  import './chunk-5VMILVWD.js';
4
4
  import './chunk-RBCMKPBX.js';
5
5
  import './chunk-RGANGU7X.js';
6
- import './chunk-JXE5XID6.js';
6
+ import './chunk-YX6FTJ6N.js';
7
7
  import './chunk-MMW2JGKZ.js';
8
8
  //# sourceMappingURL=context-menu.js.map
9
9
  //# sourceMappingURL=context-menu.js.map
package/dist/drawer.cjs CHANGED
@@ -1,22 +1,22 @@
1
1
  'use strict';
2
2
 
3
- var chunkP6V4QWJK_cjs = require('./chunk-P6V4QWJK.cjs');
3
+ var chunkAJPYGRLA_cjs = require('./chunk-AJPYGRLA.cjs');
4
4
  require('./chunk-TXTRTTG7.cjs');
5
5
  require('./chunk-FQZE5N2N.cjs');
6
6
  require('./chunk-MKHYENKR.cjs');
7
7
  require('./chunk-TI7D4QDM.cjs');
8
- require('./chunk-RXDRYWVD.cjs');
8
+ require('./chunk-OUYC6EIL.cjs');
9
9
  require('./chunk-ZU5Q77OT.cjs');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "Drawer", {
14
14
  enumerable: true,
15
- get: function () { return chunkP6V4QWJK_cjs.Drawer; }
15
+ get: function () { return chunkAJPYGRLA_cjs.Drawer; }
16
16
  });
17
17
  Object.defineProperty(exports, "useDrawer", {
18
18
  enumerable: true,
19
- get: function () { return chunkP6V4QWJK_cjs.useDrawer; }
19
+ get: function () { return chunkAJPYGRLA_cjs.useDrawer; }
20
20
  });
21
21
  //# sourceMappingURL=drawer.cjs.map
22
22
  //# sourceMappingURL=drawer.cjs.map
package/dist/drawer.js CHANGED
@@ -1,9 +1,9 @@
1
- export { Drawer, useDrawer } from './chunk-5JFA7NYE.js';
1
+ export { Drawer, useDrawer } from './chunk-PXZRYL5I.js';
2
2
  import './chunk-5U2DZ7AV.js';
3
3
  import './chunk-3K2CEAI7.js';
4
4
  import './chunk-5VMILVWD.js';
5
5
  import './chunk-RBCMKPBX.js';
6
- import './chunk-JXE5XID6.js';
6
+ import './chunk-YX6FTJ6N.js';
7
7
  import './chunk-MMW2JGKZ.js';
8
8
  //# sourceMappingURL=drawer.js.map
9
9
  //# sourceMappingURL=drawer.js.map
package/dist/dropdown.cjs CHANGED
@@ -1,23 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var chunk4HUD33OP_cjs = require('./chunk-4HUD33OP.cjs');
3
+ var chunkA6HWKQ4D_cjs = require('./chunk-A6HWKQ4D.cjs');
4
4
  require('./chunk-FQZE5N2N.cjs');
5
5
  require('./chunk-J2DI6RMR.cjs');
6
6
  require('./chunk-MKHYENKR.cjs');
7
7
  require('./chunk-TI7D4QDM.cjs');
8
8
  require('./chunk-57FQGQJK.cjs');
9
- require('./chunk-RXDRYWVD.cjs');
9
+ require('./chunk-OUYC6EIL.cjs');
10
10
  require('./chunk-ZU5Q77OT.cjs');
11
11
 
12
12
 
13
13
 
14
14
  Object.defineProperty(exports, "Dropdown", {
15
15
  enumerable: true,
16
- get: function () { return chunk4HUD33OP_cjs.Dropdown; }
16
+ get: function () { return chunkA6HWKQ4D_cjs.Dropdown; }
17
17
  });
18
18
  Object.defineProperty(exports, "useDropdown", {
19
19
  enumerable: true,
20
- get: function () { return chunk4HUD33OP_cjs.useDropdown; }
20
+ get: function () { return chunkA6HWKQ4D_cjs.useDropdown; }
21
21
  });
22
22
  //# sourceMappingURL=dropdown.cjs.map
23
23
  //# sourceMappingURL=dropdown.cjs.map
package/dist/dropdown.js CHANGED
@@ -1,10 +1,10 @@
1
- export { Dropdown, useDropdown } from './chunk-UBEOB55O.js';
1
+ export { Dropdown, useDropdown } from './chunk-JG2DJK5A.js';
2
2
  import './chunk-3K2CEAI7.js';
3
3
  import './chunk-MQ6VGG62.js';
4
4
  import './chunk-5VMILVWD.js';
5
5
  import './chunk-RBCMKPBX.js';
6
6
  import './chunk-RGANGU7X.js';
7
- import './chunk-JXE5XID6.js';
7
+ import './chunk-YX6FTJ6N.js';
8
8
  import './chunk-MMW2JGKZ.js';
9
9
  //# sourceMappingURL=dropdown.js.map
10
10
  //# sourceMappingURL=dropdown.js.map
package/dist/editor.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunk4TTBPEQX_cjs = require('./chunk-4TTBPEQX.cjs');
3
+ var chunkQWNZZPFL_cjs = require('./chunk-QWNZZPFL.cjs');
4
4
  require('./chunk-A2JUTNE6.cjs');
5
5
  require('./chunk-T6YELZPJ.cjs');
6
- require('./chunk-ZPBCZPMD.cjs');
7
- require('./chunk-O4HZVZMY.cjs');
6
+ require('./chunk-VQJ5LJJH.cjs');
7
+ require('./chunk-4GOOSZEK.cjs');
8
8
  require('./chunk-MCQJFMDP.cjs');
9
9
  require('./chunk-AIA5UNQ5.cjs');
10
10
  require('./chunk-G7227RTY.cjs');
@@ -14,7 +14,7 @@ require('./chunk-L3V3BYVS.cjs');
14
14
  require('./chunk-J2DI6RMR.cjs');
15
15
  require('./chunk-TI7D4QDM.cjs');
16
16
  require('./chunk-57FQGQJK.cjs');
17
- require('./chunk-RXDRYWVD.cjs');
17
+ require('./chunk-OUYC6EIL.cjs');
18
18
  require('./chunk-X2FC7ODX.cjs');
19
19
  require('./chunk-MXWR3T3N.cjs');
20
20
  require('./chunk-SNHU2AI4.cjs');
@@ -24,11 +24,11 @@ require('./chunk-ZU5Q77OT.cjs');
24
24
 
25
25
  Object.defineProperty(exports, "Editor", {
26
26
  enumerable: true,
27
- get: function () { return chunk4TTBPEQX_cjs.Editor; }
27
+ get: function () { return chunkQWNZZPFL_cjs.Editor; }
28
28
  });
29
29
  Object.defineProperty(exports, "useEditor", {
30
30
  enumerable: true,
31
- get: function () { return chunk4TTBPEQX_cjs.useEditor; }
31
+ get: function () { return chunkQWNZZPFL_cjs.useEditor; }
32
32
  });
33
33
  //# sourceMappingURL=editor.cjs.map
34
34
  //# sourceMappingURL=editor.cjs.map
package/dist/editor.d.cts CHANGED
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode, RefObject } from 'react';
3
3
  import { R as RenderExtension } from './extensions-6PVd3-vB.cjs';
4
4
  import { F as FieldMode } from './inputs.types-duxPKadC.cjs';
5
- import { F as FullScreenMode } from './use-full-screen-H2j6qXDB.cjs';
5
+ import { b as FullScreenMode } from './use-full-screen-BUke36LI.cjs';
6
6
  import './types-DJI492iY.cjs';
7
7
 
8
8
  interface EditorAction {
package/dist/editor.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode, RefObject } from 'react';
3
3
  import { R as RenderExtension } from './extensions-6PVd3-vB.js';
4
4
  import { F as FieldMode } from './inputs.types-DzGcqcPf.js';
5
- import { F as FullScreenMode } from './use-full-screen-H2j6qXDB.js';
5
+ import { b as FullScreenMode } from './use-full-screen-BUke36LI.js';
6
6
  import './types-DJI492iY.js';
7
7
 
8
8
  interface EditorAction {
package/dist/editor.js CHANGED
@@ -1,8 +1,8 @@
1
- export { Editor, useEditor } from './chunk-CEZVKKYW.js';
1
+ export { Editor, useEditor } from './chunk-EVIHLWPG.js';
2
2
  import './chunk-2BXMMVQS.js';
3
3
  import './chunk-CPY7NHXM.js';
4
- import './chunk-4JLFIPHZ.js';
5
- import './chunk-NE3BZV3F.js';
4
+ import './chunk-RP43ZFZP.js';
5
+ import './chunk-ZQ3VXRUY.js';
6
6
  import './chunk-L24LUSEE.js';
7
7
  import './chunk-TJ66S5K6.js';
8
8
  import './chunk-FBWUXSKH.js';
@@ -12,7 +12,7 @@ import './chunk-NRXK42LO.js';
12
12
  import './chunk-MQ6VGG62.js';
13
13
  import './chunk-RBCMKPBX.js';
14
14
  import './chunk-RGANGU7X.js';
15
- import './chunk-JXE5XID6.js';
15
+ import './chunk-YX6FTJ6N.js';
16
16
  import './chunk-6TBRBN7H.js';
17
17
  import './chunk-J3A4Z2P7.js';
18
18
  import './chunk-EDYAXGUM.js';
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkQMCMRQ2G_cjs = require('./chunk-QMCMRQ2G.cjs');
4
- var chunkZPBCZPMD_cjs = require('./chunk-ZPBCZPMD.cjs');
5
- var chunkO4HZVZMY_cjs = require('./chunk-O4HZVZMY.cjs');
3
+ var chunkWVSHAJKI_cjs = require('./chunk-WVSHAJKI.cjs');
4
+ var chunkVQJ5LJJH_cjs = require('./chunk-VQJ5LJJH.cjs');
5
+ var chunk4GOOSZEK_cjs = require('./chunk-4GOOSZEK.cjs');
6
6
  require('./chunk-AIA5UNQ5.cjs');
7
7
  require('./chunk-TI7D4QDM.cjs');
8
+ require('./chunk-OUYC6EIL.cjs');
8
9
  require('./chunk-MXWR3T3N.cjs');
9
10
  require('./chunk-SNHU2AI4.cjs');
10
11
  require('./chunk-ZU5Q77OT.cjs');
@@ -13,27 +14,27 @@ require('./chunk-ZU5Q77OT.cjs');
13
14
 
14
15
  Object.defineProperty(exports, "FullScreen", {
15
16
  enumerable: true,
16
- get: function () { return chunkQMCMRQ2G_cjs.FullScreen; }
17
+ get: function () { return chunkWVSHAJKI_cjs.FullScreen; }
17
18
  });
18
19
  Object.defineProperty(exports, "FullScreenContext", {
19
20
  enumerable: true,
20
- get: function () { return chunkZPBCZPMD_cjs.FullScreenContext; }
21
+ get: function () { return chunkVQJ5LJJH_cjs.FullScreenContext; }
21
22
  });
22
23
  Object.defineProperty(exports, "FullScreenProvider", {
23
24
  enumerable: true,
24
- get: function () { return chunkZPBCZPMD_cjs.FullScreenProvider; }
25
+ get: function () { return chunkVQJ5LJJH_cjs.FullScreenProvider; }
25
26
  });
26
27
  Object.defineProperty(exports, "FullScreenToggle", {
27
28
  enumerable: true,
28
- get: function () { return chunkZPBCZPMD_cjs.FullScreenToggle; }
29
+ get: function () { return chunkVQJ5LJJH_cjs.FullScreenToggle; }
29
30
  });
30
31
  Object.defineProperty(exports, "useFullScreenContext", {
31
32
  enumerable: true,
32
- get: function () { return chunkZPBCZPMD_cjs.useFullScreenContext; }
33
+ get: function () { return chunkVQJ5LJJH_cjs.useFullScreenContext; }
33
34
  });
34
35
  Object.defineProperty(exports, "useFullScreen", {
35
36
  enumerable: true,
36
- get: function () { return chunkO4HZVZMY_cjs.useFullScreen; }
37
+ get: function () { return chunk4GOOSZEK_cjs.useFullScreen; }
37
38
  });
38
39
  //# sourceMappingURL=full-screen.cjs.map
39
40
  //# sourceMappingURL=full-screen.cjs.map
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ButtonHTMLAttributes, ReactNode, HTMLAttributes } from 'react';
3
- import { U as UseFullScreenOptions, c as UseFullScreenResult } from './use-full-screen-H2j6qXDB.cjs';
4
- export { F as FullScreenMode, a as FullScreenTargetProps, b as FullScreenToggleButtonProps, u as useFullScreen } from './use-full-screen-H2j6qXDB.cjs';
3
+ import { U as UseFullScreenOptions, e as UseFullScreenResult } from './use-full-screen-BUke36LI.cjs';
4
+ export { F as FullScreenLayer, b as FullScreenMode, c as FullScreenTargetProps, d as FullScreenToggleButtonProps, g as useFullScreen } from './use-full-screen-BUke36LI.cjs';
5
5
 
6
6
  interface FullScreenToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type" | "onClick" | "children"> {
7
7
  /** Lucide name shown while NOT full screen. @default "maximize-2" */
@@ -48,6 +48,9 @@ interface FullScreenProviderProps {
48
48
  * For a surface that owns its root and calls `useFullScreen()` itself (Editor,
49
49
  * DeckEditor, SheetWorkbook). Makes `<FullScreen.Toggle />` work anywhere inside
50
50
  * and redirects descendant `<Portal>`s into the surface while it is active.
51
+ * It also marks everything inside as belonging to this surface for Escape, so
52
+ * an open menu, listbox, popover or tooltip inside closes before the surface
53
+ * exits. A surface that skips the provider loses that, as well as the portals.
51
54
  */
52
55
  declare function FullScreenProvider({ value, children }: FullScreenProviderProps): react.JSX.Element;
53
56
 
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ButtonHTMLAttributes, ReactNode, HTMLAttributes } from 'react';
3
- import { U as UseFullScreenOptions, c as UseFullScreenResult } from './use-full-screen-H2j6qXDB.js';
4
- export { F as FullScreenMode, a as FullScreenTargetProps, b as FullScreenToggleButtonProps, u as useFullScreen } from './use-full-screen-H2j6qXDB.js';
3
+ import { U as UseFullScreenOptions, e as UseFullScreenResult } from './use-full-screen-BUke36LI.js';
4
+ export { F as FullScreenLayer, b as FullScreenMode, c as FullScreenTargetProps, d as FullScreenToggleButtonProps, g as useFullScreen } from './use-full-screen-BUke36LI.js';
5
5
 
6
6
  interface FullScreenToggleProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "type" | "onClick" | "children"> {
7
7
  /** Lucide name shown while NOT full screen. @default "maximize-2" */
@@ -48,6 +48,9 @@ interface FullScreenProviderProps {
48
48
  * For a surface that owns its root and calls `useFullScreen()` itself (Editor,
49
49
  * DeckEditor, SheetWorkbook). Makes `<FullScreen.Toggle />` work anywhere inside
50
50
  * and redirects descendant `<Portal>`s into the surface while it is active.
51
+ * It also marks everything inside as belonging to this surface for Escape, so
52
+ * an open menu, listbox, popover or tooltip inside closes before the surface
53
+ * exits. A surface that skips the provider loses that, as well as the portals.
51
54
  */
52
55
  declare function FullScreenProvider({ value, children }: FullScreenProviderProps): react.JSX.Element;
53
56
 
@@ -1,8 +1,9 @@
1
- export { FullScreen } from './chunk-UGXBTIV5.js';
2
- export { FullScreenContext, FullScreenProvider, FullScreenToggle, useFullScreenContext } from './chunk-4JLFIPHZ.js';
3
- export { useFullScreen } from './chunk-NE3BZV3F.js';
1
+ export { FullScreen } from './chunk-GZ5Z56QK.js';
2
+ export { FullScreenContext, FullScreenProvider, FullScreenToggle, useFullScreenContext } from './chunk-RP43ZFZP.js';
3
+ export { useFullScreen } from './chunk-ZQ3VXRUY.js';
4
4
  import './chunk-TJ66S5K6.js';
5
5
  import './chunk-RBCMKPBX.js';
6
+ import './chunk-YX6FTJ6N.js';
6
7
  import './chunk-J3A4Z2P7.js';
7
8
  import './chunk-EDYAXGUM.js';
8
9
  import './chunk-MMW2JGKZ.js';