@heycys/gallery 0.1.0 → 0.1.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 (237) hide show
  1. package/THIRD-PARTY-NOTICES.md +51 -1
  2. package/browser/editor/components/callout/index.mjs +40 -15
  3. package/browser/editor/components/columns/page.mjs +41 -28
  4. package/browser/editor/components/details/index.mjs +2 -1
  5. package/browser/editor/components/dialog/index.mjs +2 -1
  6. package/browser/editor/components/dialog/page.mjs +0 -18
  7. package/browser/editor/components/divider/index.mjs +1 -1
  8. package/browser/editor/components/figure/page.mjs +10 -1
  9. package/browser/editor/components/file/page.mjs +2 -2
  10. package/browser/editor/components/flowchart/add.mjs +2 -2
  11. package/browser/editor/components/heading/index.mjs +2 -0
  12. package/browser/editor/components/heading/page.mjs +6 -0
  13. package/browser/editor/components/highlight/index.mjs +4 -20
  14. package/browser/editor/components/icons.mjs +5 -2
  15. package/browser/editor/components/image/page.mjs +2 -2
  16. package/browser/editor/components/installed/index.mjs +71 -25
  17. package/browser/editor/components/installed/page.mjs +122 -21
  18. package/browser/editor/components/kit.mjs +3 -0
  19. package/browser/editor/components/media/page.mjs +44 -14
  20. package/browser/editor/components/pages.mjs +2 -2
  21. package/browser/editor/components/registry.mjs +56 -30
  22. package/browser/editor/components/section/index.mjs +2 -1
  23. package/browser/editor/components/set-apart.mjs +24 -0
  24. package/browser/editor/components/table/index.mjs +5 -3
  25. package/browser/editor/components/table/page.mjs +29 -18
  26. package/browser/editor/page/annotate/anchors.mjs +4 -3
  27. package/browser/editor/page/annotate/index.mjs +61 -34
  28. package/browser/editor/page/autosave.mjs +50 -4
  29. package/browser/editor/page/beside.mjs +5 -5
  30. package/browser/editor/page/block-menu/colors.mjs +3 -1
  31. package/browser/editor/page/block-menu/index.mjs +8 -6
  32. package/browser/editor/page/blocks.mjs +16 -7
  33. package/browser/editor/page/caret.mjs +4 -1
  34. package/browser/editor/page/changes/bar.mjs +102 -0
  35. package/browser/editor/page/changes/ghost.mjs +206 -0
  36. package/browser/editor/page/changes/gone-words.mjs +94 -0
  37. package/browser/editor/page/changes/index.mjs +447 -0
  38. package/browser/editor/page/changes/words.mjs +27 -0
  39. package/browser/editor/page/clipboard/import/colors.mjs +3 -3
  40. package/browser/editor/page/clipboard/index.mjs +32 -13
  41. package/browser/editor/page/clipboard/own/blocks.mjs +14 -5
  42. package/browser/editor/page/clipboard/own/describe.mjs +16 -7
  43. package/browser/editor/page/clipboard/own/export.mjs +6 -6
  44. package/browser/editor/page/clipboard/own/selection.mjs +2 -2
  45. package/browser/editor/page/clipboard/own/writers.mjs +0 -11
  46. package/browser/editor/page/columns/index.mjs +1 -1
  47. package/browser/editor/page/commit.mjs +19 -4
  48. package/browser/editor/page/conflicts.mjs +6 -26
  49. package/browser/editor/page/convert.mjs +8 -7
  50. package/browser/editor/page/core.mjs +55 -17
  51. package/browser/editor/page/drag/index.mjs +40 -24
  52. package/browser/editor/page/drag/preview.mjs +9 -4
  53. package/browser/editor/page/editor.mjs +70 -15
  54. package/browser/editor/page/emoji-picker/emoji-tab.mjs +22 -13
  55. package/browser/editor/page/emoji-picker/grid.mjs +7 -5
  56. package/browser/editor/page/emoji-picker/icon-tab.mjs +4 -4
  57. package/browser/editor/page/emoji-picker/icons.mjs +0 -1
  58. package/browser/editor/page/emoji-picker/index.mjs +11 -9
  59. package/browser/editor/page/emoji-picker/styles.mjs +161 -2
  60. package/browser/editor/page/emoji-picker/support.mjs +6 -4
  61. package/browser/editor/page/emoji-picker/upload.mjs +12 -11
  62. package/browser/editor/page/fills.mjs +5 -3
  63. package/browser/editor/page/fold/index.mjs +348 -0
  64. package/browser/editor/page/fold/rule.mjs +125 -0
  65. package/browser/editor/page/folded.mjs +23 -0
  66. package/browser/editor/page/format-bar/bar.mjs +2 -1
  67. package/browser/editor/page/format-bar/index.mjs +1 -1
  68. package/browser/editor/page/geometry.mjs +8 -6
  69. package/browser/editor/page/handle/index.mjs +17 -6
  70. package/browser/editor/page/hints/index.mjs +1 -1
  71. package/browser/editor/page/insert/index.mjs +30 -17
  72. package/browser/editor/page/long-runs.mjs +75 -0
  73. package/browser/editor/page/look.mjs +15 -3
  74. package/browser/editor/page/margin.mjs +45 -24
  75. package/browser/editor/page/menu.mjs +69 -25
  76. package/browser/editor/page/merge.mjs +24 -0
  77. package/browser/editor/page/notices.mjs +1 -1
  78. package/browser/editor/page/offered.mjs +1 -1
  79. package/browser/editor/page/outline/folds.mjs +11 -10
  80. package/browser/editor/page/outline/index.mjs +131 -45
  81. package/browser/editor/page/outline/list.mjs +23 -11
  82. package/browser/editor/page/outline/read.mjs +1 -1
  83. package/browser/editor/page/outline/strip.mjs +7 -1
  84. package/browser/editor/page/panel.mjs +5 -4
  85. package/browser/editor/page/resize/index.mjs +1 -1
  86. package/browser/editor/page/selection/delete.mjs +8 -6
  87. package/browser/editor/page/selection/index.mjs +10 -3
  88. package/browser/editor/page/session.mjs +54 -3
  89. package/browser/editor/page/table/cell-bar.mjs +4 -1
  90. package/browser/editor/page/table/cells.mjs +1 -1
  91. package/browser/editor/page/table/icons.mjs +1 -1
  92. package/browser/editor/page/table/index.mjs +13 -8
  93. package/browser/editor/page/table/widths.mjs +9 -4
  94. package/browser/editor/page/text-select/index.mjs +18 -3
  95. package/browser/editor/page/tooltip.mjs +1 -1
  96. package/browser/editor/page/type-grid.mjs +4 -3
  97. package/browser/editor/page/typing/code-edges.mjs +63 -17
  98. package/browser/editor/page/typing/index.mjs +12 -6
  99. package/browser/editor/page/typing/leave.mjs +1 -1
  100. package/browser/shared/annotations.mjs +8 -10
  101. package/browser/shared/code-folds.mjs +5 -1
  102. package/browser/shared/colors.mjs +15 -13
  103. package/browser/shared/component-catalog.mjs +24 -10
  104. package/browser/shared/components/callout.mjs +4 -2
  105. package/browser/shared/components/index.mjs +61 -7
  106. package/browser/shared/components/installed.mjs +75 -5
  107. package/browser/shared/components/page.mjs +10 -1
  108. package/browser/shared/components/table.mjs +1 -1
  109. package/browser/shared/components/text.mjs +2 -2
  110. package/browser/shared/document-look.mjs +178 -0
  111. package/browser/shared/emoji/data/LICENSE-lucide.txt +43 -0
  112. package/browser/shared/emoji/data/README.md +4 -2
  113. package/browser/shared/emoji/data/categories.json +1 -1
  114. package/browser/shared/emoji/data/keywords-en.json +1 -1
  115. package/browser/shared/emoji/data/keywords-zh.json +1 -1
  116. package/browser/shared/emoji/data/names.json +1 -1
  117. package/browser/shared/emoji/data/positions.json +1 -1
  118. package/browser/shared/emoji/data/twemoji-index.json +1 -1
  119. package/browser/shared/emoji/data/twemoji-svg.bin +0 -0
  120. package/browser/shared/emoji/data.mjs +10 -12
  121. package/browser/shared/emoji/emoji.mjs +8 -7
  122. package/browser/shared/emoji/icon-value.mjs +4 -3
  123. package/browser/shared/html-tree.mjs +11 -5
  124. package/browser/shared/i18n/en.mjs +67 -8
  125. package/browser/shared/long-runs.mjs +39 -0
  126. package/browser/shared/new-names.mjs +5 -2
  127. package/browser/shared/outline.mjs +194 -0
  128. package/browser/shared/preferences.mjs +10 -4
  129. package/browser/shared/session.mjs +5 -4
  130. package/browser/shared/workspace-look.mjs +91 -0
  131. package/browser/shared/zoom.mjs +5 -5
  132. package/dist/chunk-3HIRPVLU.mjs +2 -0
  133. package/dist/chunk-4FS7Z7WR.mjs +2 -0
  134. package/dist/{chunk-LHTFLRB6.mjs → chunk-5MHMDLZD.mjs} +2 -2
  135. package/dist/{chunk-YXAUQPVK.mjs → chunk-5ZKJ3H4P.mjs} +3 -3
  136. package/dist/{chunk-ZBIM6ARY.mjs → chunk-64K7IPLO.mjs} +55 -16
  137. package/dist/{chunk-QYKCJ7FG.mjs → chunk-6QXGZM36.mjs} +1 -1
  138. package/dist/chunk-6RGJOMJP.mjs +16 -0
  139. package/dist/{chunk-EUX7IC5J.mjs → chunk-7DTINW6U.mjs} +2 -2
  140. package/dist/{chunk-6CYG3Z4V.mjs → chunk-AJ73XJF3.mjs} +1 -1
  141. package/dist/chunk-AUZGSZJH.mjs +13 -0
  142. package/dist/{chunk-7QQBR7PB.mjs → chunk-BFE45AKL.mjs} +1 -1
  143. package/dist/chunk-BGGDRNYQ.mjs +10 -0
  144. package/dist/{chunk-L4DVONOG.mjs → chunk-BXO2ZY5P.mjs} +1 -1
  145. package/dist/chunk-CEH4MRCC.mjs +2 -0
  146. package/dist/chunk-CY2FNNAB.mjs +16 -0
  147. package/dist/{chunk-LC7YNQFG.mjs → chunk-DFUDV4LX.mjs} +1 -1
  148. package/dist/chunk-DKXG4XDG.mjs +2 -0
  149. package/dist/chunk-E7LWZRXY.mjs +4 -0
  150. package/dist/chunk-EZQ34M3F.mjs +124 -0
  151. package/dist/chunk-FDLXYYG4.mjs +4 -0
  152. package/dist/chunk-FUKQNOQS.mjs +9 -0
  153. package/dist/{chunk-DB4WKGYF.mjs → chunk-GB5SOYQJ.mjs} +2 -2
  154. package/dist/{chunk-ACOPDCNB.mjs → chunk-IVDLMMBD.mjs} +1 -1
  155. package/dist/chunk-JPOSLGOC.mjs +6 -0
  156. package/dist/chunk-JVHHHGEA.mjs +3 -0
  157. package/dist/chunk-L3QKH4OK.mjs +26 -0
  158. package/dist/{chunk-B3VTYBYR.mjs → chunk-LCTHTZIL.mjs} +2 -2
  159. package/dist/chunk-LEF6DRCK.mjs +59 -0
  160. package/dist/chunk-LS4F7JUM.mjs +2 -0
  161. package/dist/chunk-NO5NJCHO.mjs +2 -0
  162. package/dist/{chunk-UNUEWH4S.mjs → chunk-NQPVAU63.mjs} +1 -1
  163. package/dist/chunk-O35FIXRB.mjs +2 -0
  164. package/dist/chunk-PL6GHLGD.mjs +15 -0
  165. package/dist/{chunk-G7TOXONE.mjs → chunk-QJIR2BLP.mjs} +1 -1
  166. package/dist/chunk-QUPLVPB2.mjs +7 -0
  167. package/dist/chunk-R7BNENLY.mjs +4 -0
  168. package/dist/chunk-S6O4UHLC.mjs +2 -0
  169. package/dist/{chunk-HMHK3EQ6.mjs → chunk-SGJWQKEI.mjs} +1 -1
  170. package/dist/chunk-SYGN7GLU.mjs +2 -0
  171. package/dist/chunk-TYK6VNAB.mjs +10 -0
  172. package/dist/{chunk-EVJ3BX3M.mjs → chunk-U6KNPJPR.mjs} +1 -1
  173. package/dist/{chunk-YZ5Z6H4W.mjs → chunk-UALRNVSE.mjs} +1 -1
  174. package/dist/chunk-UMHUSOPJ.mjs +2 -0
  175. package/dist/chunk-V3HXVQEM.mjs +2 -0
  176. package/dist/{chunk-UXUK4PMC.mjs → chunk-V5JTW2LH.mjs} +1 -1
  177. package/dist/chunk-V5VXUJKG.mjs +2 -0
  178. package/dist/chunk-VBXMADMP.mjs +2 -0
  179. package/dist/chunk-VNV55RUA.mjs +2 -0
  180. package/dist/chunk-VPD2PS35.mjs +2 -0
  181. package/dist/chunk-W3BGBJQW.mjs +2 -0
  182. package/dist/chunk-W4VKN3GF.mjs +7 -0
  183. package/dist/chunk-W5BXXPDJ.mjs +3 -0
  184. package/dist/{chunk-Z52HTUW7.mjs → chunk-XNROSH2T.mjs} +2 -2
  185. package/dist/chunk-XUNHRCOG.mjs +6 -0
  186. package/dist/{chunk-6U2SLSDN.mjs → chunk-Y6RLRPG3.mjs} +1 -1
  187. package/dist/cli.mjs +1 -1
  188. package/dist/server.mjs +1 -1
  189. package/dist/worker.mjs +1 -1
  190. package/kit/math.js +18 -2
  191. package/kit/report.css +248 -137
  192. package/kit/runtime.js +126 -51
  193. package/kit/tables.js +51 -1
  194. package/kit/ui.js +97 -0
  195. package/package.json +1 -1
  196. package/release.json +8 -8
  197. package/sdk/doc-kit.d.ts +9 -3
  198. package/skill/SKILL.md +22 -10
  199. package/skill/references/building-components.md +46 -6
  200. package/skill/references/example-report.html +1 -1
  201. package/skill/references/writing-html.md +4 -4
  202. package/skill/sdk/doc-kit.d.ts +9 -3
  203. package/web/assets/index-Bh74DfsV.css +1 -0
  204. package/web/assets/index-UW0RyFFt.js +13 -0
  205. package/web/index.html +2 -2
  206. package/browser/editor/components/callout/page.mjs +0 -13
  207. package/dist/chunk-2PBALTR3.mjs +0 -57
  208. package/dist/chunk-3LA3EMDE.mjs +0 -15
  209. package/dist/chunk-5FRMCDPY.mjs +0 -16
  210. package/dist/chunk-5LEK2CBS.mjs +0 -2
  211. package/dist/chunk-5OFN5AHC.mjs +0 -2
  212. package/dist/chunk-5SIYS5HN.mjs +0 -2
  213. package/dist/chunk-5TEK3RAD.mjs +0 -2
  214. package/dist/chunk-7GHT2UCA.mjs +0 -15
  215. package/dist/chunk-ATCJYAR4.mjs +0 -2
  216. package/dist/chunk-C7HWOBIF.mjs +0 -2
  217. package/dist/chunk-E7VYDG2X.mjs +0 -2
  218. package/dist/chunk-FQGQH4KM.mjs +0 -2
  219. package/dist/chunk-GPF4YWWB.mjs +0 -9
  220. package/dist/chunk-GYQV7Y4J.mjs +0 -120
  221. package/dist/chunk-HQQMJCQJ.mjs +0 -10
  222. package/dist/chunk-IERUOGC3.mjs +0 -6
  223. package/dist/chunk-ITNLYXXV.mjs +0 -3
  224. package/dist/chunk-NFIBI4IP.mjs +0 -26
  225. package/dist/chunk-O52JMOCZ.mjs +0 -2
  226. package/dist/chunk-QMQUXTU4.mjs +0 -12
  227. package/dist/chunk-QVWVFC5K.mjs +0 -6
  228. package/dist/chunk-QZY6Q64C.mjs +0 -2
  229. package/dist/chunk-TDQP3DKQ.mjs +0 -10
  230. package/dist/chunk-V4CPWKMZ.mjs +0 -2
  231. package/dist/chunk-VACRB2NE.mjs +0 -3
  232. package/dist/chunk-W63L7367.mjs +0 -7
  233. package/dist/chunk-W7CXPCRV.mjs +0 -6
  234. package/dist/chunk-XINNG4F2.mjs +0 -4
  235. package/dist/chunk-YL2DPWVS.mjs +0 -4
  236. package/web/assets/index-B6Ai3wsa.js +0 -13
  237. package/web/assets/index-SYPC3EZy.css +0 -1
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{$ as cr,$a as Ai,A as P,Aa as lr,Ab as pr,B as q,Bb as Gi,C as Ct,Ca as Oi,Cb as Xi,D as hi,Dc as rn,F as pi,Fb as Ji,G as fi,Gb as Yi,H as ne,I as b,Ib as Zi,J as Ne,K as mi,La as E,Ma as j,N as _e,Na as Ni,Nb as Qi,Oa as _i,P as gi,Pa as fe,Q as Et,Qa as Bi,S as wi,Sb as en,T as yi,U as vi,V as xi,Z as Be,_a as Fi,a as or,aa as bi,b as re,ca as Ci,cb as oe,d as Re,db as Ui,e as Oe,ea as J,f as Ze,fa as Ei,fb as hr,g as ci,gb as Li,ha as dr,ia as Si,ib as Mi,j as di,ja as Fe,jb as qi,k as ui,kb as ji,la as Pi,mb as $i,n as li,na as ki,nb as ae,o as ar,oa as Ii,ob as Hi,p as ie,pa as Di,pb as zi,q as bt,qa as St,ra as Ti,sb as Wi,sc as tn,t as D,tc as sn,va as Pt,w as L,wa as Ri,wb as Ki,xb as Vi,ya as ur,yb as Qe,zb as et}from"./chunk-EUX7IC5J.mjs";import"./chunk-UH4SIXTR.mjs";import"./chunk-Y34NR5JL.mjs";import"./chunk-YEY3RSFQ.mjs";import{b as xt,c as T}from"./chunk-W7XHE4CT.mjs";import{d as ai}from"./chunk-5L7RYZCL.mjs";var Ve={};ai(Ve,{BidiServer:()=>Fs,EventEmitter:()=>K,OutgoingMessage:()=>X});function nn(n){return{all:n=n||new Map,on:function(e,t){var s=n.get(e);s?s.push(t):n.set(e,[t])},off:function(e,t){var s=n.get(e);s&&(t?s.splice(s.indexOf(t)>>>0,1):n.set(e,[]))},emit:function(e,t){var s=n.get(e);s&&s.slice().map(function(r){r(t)}),(s=n.get("*"))&&s.slice().map(function(r){r(e,t)})}}}var K=class{#e=nn();on(e,t){return this.#e.on(e,t),this}once(e,t){let s=r=>{t(r),this.off(e,s)};return this.on(e,s)}off(e,t){return this.#e.off(e,t),this}emit(e,t){this.#e.emit(e,t)}removeAllListeners(e){return e?this.#e.all.delete(e):this.#e.all.clear(),this}};var S;(function(n){n.bidi="bidi",n.cdp="cdp",n.debug="debug",n.debugError="debug:error",n.debugInfo="debug:info",n.debugWarn="debug:warn"})(S||(S={}));var on,tt=class{static LOGGER_PREFIX=`${S.debug}:queue`;#e;#t;#s=[];#r=!1;constructor(e,t){this.#t=e,this.#e=t}add(e,t){this.#s.push([e,t]),this.#i()}async#i(){if(!this.#r){for(this.#r=!0;this.#s.length>0;){let e=this.#s.shift();if(!e)continue;let[t,s]=e;this.#e?.(on.LOGGER_PREFIX)?.("Processing event:",s),await t.then(r=>{if(r.kind==="error"){this.#e?.(S.debugError)?.("Event threw before sending:",r.error.message,r.error.stack);return}return this.#t(r.value)}).catch(r=>{this.#e?.(S.debugError)?.("Event was not processed:",r?.message)})}this.#r=!1}}};on=tt;var C={};ai(C,{BiDiModule:()=>kt,Bluetooth:()=>Ae,BrowsingContext:()=>Tt,EVENT_NAMES:()=>ro,Input:()=>Rt,Log:()=>Dt,Network:()=>Ot,Script:()=>It,Speculation:()=>Ue});var kt;(function(n){n.Bluetooth="bluetooth",n.Browser="browser",n.BrowsingContext="browsingContext",n.Cdp="goog:cdp",n.Input="input",n.Log="log",n.Network="network",n.Script="script",n.Session="session",n.Speculation="speculation"})(kt||(kt={}));var It;(function(n){let e;(function(t){t.Message="script.message",t.RealmCreated="script.realmCreated",t.RealmDestroyed="script.realmDestroyed"})(e=n.EventNames||(n.EventNames={}))})(It||(It={}));var Dt;(function(n){let e;(function(t){t.LogEntryAdded="log.entryAdded"})(e=n.EventNames||(n.EventNames={}))})(Dt||(Dt={}));var Tt;(function(n){let e;(function(t){t.ContextCreated="browsingContext.contextCreated",t.ContextDestroyed="browsingContext.contextDestroyed",t.DomContentLoaded="browsingContext.domContentLoaded",t.DownloadEnd="browsingContext.downloadEnd",t.DownloadWillBegin="browsingContext.downloadWillBegin",t.FragmentNavigated="browsingContext.fragmentNavigated",t.HistoryUpdated="browsingContext.historyUpdated",t.Load="browsingContext.load",t.NavigationAborted="browsingContext.navigationAborted",t.NavigationCommitted="browsingContext.navigationCommitted",t.NavigationFailed="browsingContext.navigationFailed",t.NavigationStarted="browsingContext.navigationStarted",t.UserPromptClosed="browsingContext.userPromptClosed",t.UserPromptOpened="browsingContext.userPromptOpened"})(e=n.EventNames||(n.EventNames={}))})(Tt||(Tt={}));var Rt;(function(n){let e;(function(t){t.FileDialogOpened="input.fileDialogOpened"})(e=n.EventNames||(n.EventNames={}))})(Rt||(Rt={}));var Ot;(function(n){let e;(function(t){t.AuthRequired="network.authRequired",t.BeforeRequestSent="network.beforeRequestSent",t.FetchError="network.fetchError",t.ResponseCompleted="network.responseCompleted",t.ResponseStarted="network.responseStarted"})(e=n.EventNames||(n.EventNames={}))})(Ot||(Ot={}));var Ae;(function(n){let e;(function(t){t.RequestDevicePromptUpdated="bluetooth.requestDevicePromptUpdated",t.GattConnectionAttempted="bluetooth.gattConnectionAttempted",t.CharacteristicEventGenerated="bluetooth.characteristicEventGenerated",t.DescriptorEventGenerated="bluetooth.descriptorEventGenerated"})(e=n.EventNames||(n.EventNames={}))})(Ae||(Ae={}));var Ue;(function(n){let e;(function(t){t.PrefetchStatusUpdated="speculation.prefetchStatusUpdated"})(e=n.EventNames||(n.EventNames={}))})(Ue||(Ue={}));var ro=new Set([...Object.values(kt),...Object.values(Ae.EventNames),...Object.values(Tt.EventNames),...Object.values(Rt.EventNames),...Object.values(Dt.EventNames),...Object.values(Ot.EventNames),...Object.values(It.EventNames),...Object.values(Ue.EventNames)]);var F=class extends Error{error;message;stacktrace;constructor(e,t,s){super(),this.error=e,this.message=t,this.stacktrace=s}toErrorResponse(e){return{type:"error",id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}},x=class extends F{constructor(e,t){super("invalid argument",e,t)}},xe=class extends F{constructor(e,t){super("invalid selector",e,t)}};var st=class extends F{constructor(e,t){super("move target out of bounds",e,t)}},Nt=class extends F{constructor(e,t){super("no such alert",e,t)}},ce=class extends F{constructor(e,t){super("no such element",e,t)}},V=class extends F{constructor(e,t){super("no such frame",e,t)}},rt=class extends F{constructor(e,t){super("no such handle",e,t)}},_t=class extends F{constructor(e,t){super("no such history entry",e,t)}},Bt=class extends F{constructor(e,t){super("no such intercept",e,t)}},Y=class extends F{constructor(e,t){super("no such node",e,t)}},Le=class extends F{constructor(e,t){super("no such request",e,t)}},it=class extends F{constructor(e,t){super("no such script",e,t)}},G=class extends F{constructor(e,t){super("no such user context",e,t)}};var Ft=class extends F{constructor(e,t){super("unknown command",e,t)}},O=class extends F{constructor(e,t=new Error().stack){super("unknown error",e,t)}},nt=class extends F{constructor(e,t){super("unable to capture screen",e,t)}};var R=class extends F{constructor(e,t){super("unsupported operation",e,t)}};var At=class extends F{constructor(e,t){super("unable to set cookie",e,t)}},be=class extends F{constructor(e,t){super("unable to set file input",e,t)}};var Ut=class extends F{constructor(e,t){super("invalid web extension",e,t)}},Lt=class extends F{constructor(e,t){super("no such web extension",e,t)}},Me=class extends F{constructor(e,t){super("no such network collector",e,t)}},me=class extends F{constructor(e,t){super("no such network data",e,t)}};var Mt=class{parseDisableSimulationParameters(e){return e}parseHandleRequestDevicePromptParams(e){return e}parseSimulateAdapterParameters(e){return e}parseSimulateAdvertisementParameters(e){return e}parseSimulateCharacteristicParameters(e){return e}parseSimulateCharacteristicResponseParameters(e){return e}parseSimulateDescriptorParameters(e){return e}parseSimulateDescriptorResponseParameters(e){return e}parseSimulateGattConnectionResponseParameters(e){return e}parseSimulateGattDisconnectionParameters(e){return e}parseSimulatePreconnectedPeripheralParameters(e){return e}parseSimulateServiceParameters(e){return e}parseCreateUserContextParameters(e){return e}parseRemoveUserContextParameters(e){return e}parseSetClientWindowStateParameters(e){return e}parseSetDownloadBehaviorParameters(e){return e}parseActivateParams(e){return e}parseCaptureScreenshotParams(e){return e}parseCloseParams(e){return e}parseCreateParams(e){return e}parseGetTreeParams(e){return e}parseHandleUserPromptParams(e){return e}parseLocateNodesParams(e){return e}parseNavigateParams(e){return e}parsePrintParams(e){return e}parseReloadParams(e){return e}parseSetBypassCspParams(e){return e}parseSetViewportParams(e){return e}parseStartScreencastParams(e){return e}parseStopScreencastParams(e){return e}parseTraverseHistoryParams(e){return e}parseGetSessionParams(e){return e}parseResolveRealmParams(e){return e}parseSendCommandParams(e){return e}parseSetClientHintsOverrideParams(e){return e}parseSetForcedColorsModeThemeOverrideParams(e){return e}parseSetGeolocationOverrideParams(e){return e}parseSetLocaleOverrideParams(e){return e}parseSetNetworkConditionsParams(e){return e}parseSetScreenOrientationOverrideParams(e){return e}parseSetScreenSettingsOverrideParams(e){return e}parseSetScriptingEnabledParams(e){return e}parseSetScrollbarTypeOverrideParams(e){return e}parseSetTimezoneOverrideParams(e){return e}parseSetTouchOverrideParams(e){return e}parseSetUserAgentOverrideParams(e){return e}parseAddPreloadScriptParams(e){return e}parseCallFunctionParams(e){return e}parseDisownParams(e){return e}parseEvaluateParams(e){return e}parseGetRealmsParams(e){return e}parseRemovePreloadScriptParams(e){return e}parsePerformActionsParams(e){return e}parseReleaseActionsParams(e){return e}parseSetFilesParams(e){return e}parseAddDataCollectorParams(e){return e}parseAddInterceptParams(e){return e}parseContinueRequestParams(e){return e}parseContinueResponseParams(e){return e}parseContinueWithAuthParams(e){return e}parseDisownDataParams(e){return e}parseFailRequestParams(e){return e}parseGetDataParams(e){return e}parseProvideResponseParams(e){return e}parseRemoveDataCollectorParams(e){return e}parseRemoveInterceptParams(e){return e}parseSetCacheBehaviorParams(e){return e}parseSetExtraHeadersParams(e){return e}parseSetPermissionsParams(e){return e}parseSubscribeParams(e){return e}parseUnsubscribeParams(e){return e}parseDeleteCookiesParams(e){return e}parseGetCookiesParams(e){return e}parseSetCookieParams(e){return e}parseInstallParams(e){return e}parseUninstallParams(e){return e}parseSetVirtualWalletBehaviorParams(e){return e}};var qt=class{#e;#t;#s;#r;constructor(e,t,s,r){this.#e=e,this.#t=t,this.#s=s,this.#r=r}close(){return setTimeout(()=>this.#e.sendCommand("Browser.close").catch(()=>{}),0),{}}async createUserContext(e){let t=e,s=this.#s.getGlobalConfig();if(t.acceptInsecureCerts!==void 0&&t.acceptInsecureCerts===!1&&s.acceptInsecureCerts===!0)throw new O(`Cannot set user context's "acceptInsecureCerts" to false, when a capability "acceptInsecureCerts" is set to true`);let r={};if(t.proxy){let o=no(t.proxy);o&&(r.proxyServer=o),t.proxy.noProxy&&(r.proxyBypassList=t.proxy.noProxy.join(","))}else{e["goog:proxyServer"]!==void 0&&(r.proxyServer=e["goog:proxyServer"]);let o=e["goog:proxyBypassList"]??void 0;o&&(r.proxyBypassList=o.join(","))}let i=await this.#e.sendCommand("Target.createBrowserContext",r);return await this.#a(s.downloadBehavior??null,i.browserContextId),this.#s.updateUserContextConfig(i.browserContextId,{acceptInsecureCerts:e.acceptInsecureCerts,userPromptHandler:e.unhandledPromptBehavior}),{userContext:i.browserContextId}}async removeUserContext(e){let t=e.userContext;if(t==="default")throw new x("`default` user context cannot be removed");try{await this.#e.sendCommand("Target.disposeBrowserContext",{browserContextId:t})}catch(s){throw s.message.startsWith("Failed to find context with id")?new G(s.message):s}return{}}async getUserContexts(){return{userContexts:await this.#r.getUserContexts()}}async#i(e){let t=await this.#e.sendCommand("Browser.getWindowForTarget",{targetId:e});return{active:!1,clientWindow:`${t.windowId}`,state:t.bounds.windowState??"normal",height:t.bounds.height??0,width:t.bounds.width??0,x:t.bounds.left??0,y:t.bounds.top??0}}async setClientWindowState(e){let{clientWindow:t}=e,s={windowState:e.state};e.state==="normal"&&(e.width!==void 0&&(s.width=e.width),e.height!==void 0&&(s.height=e.height),e.x!==void 0&&(s.left=e.x),e.y!==void 0&&(s.top=e.y));let r=Number.parseInt(t);if(isNaN(r))throw new x("no such client window");await this.#e.sendCommand("Browser.setWindowBounds",{windowId:r,bounds:s});let i=await this.#e.sendCommand("Browser.getWindowBounds",{windowId:r});return{active:!1,clientWindow:`${r}`,state:i.bounds.windowState??"normal",height:i.bounds.height??0,width:i.bounds.width??0,x:i.bounds.left??0,y:i.bounds.top??0}}async getClientWindows(){let e=this.#t.getTopLevelContexts().map(i=>i.cdpTarget.id),t=await Promise.all(e.map(async i=>await this.#i(i))),s=new Set,r=new Array;for(let i of t)s.has(i.clientWindow)||(s.add(i.clientWindow),r.push(i));return{clientWindows:r}}#o(e){if(e===null)return{behavior:"default"};if(e?.type==="denied")return{behavior:"deny"};if(e?.type==="allowed")return{behavior:"allow",downloadPath:e.destinationFolder};throw new O("Unexpected download behavior")}async#a(e,t){await this.#e.sendCommand("Browser.setDownloadBehavior",{...this.#o(e),browserContextId:t==="default"?void 0:t,eventsEnabled:!0})}async setDownloadBehavior(e){let t;return e.userContexts===void 0?t=(await this.#r.getUserContexts()).map(s=>s.userContext):t=Array.from(await this.#r.verifyUserContextIdList(e.userContexts)),e.userContexts===void 0?this.#s.updateGlobalConfig({downloadBehavior:e.downloadBehavior}):e.userContexts.map(s=>this.#s.updateUserContextConfig(s,{downloadBehavior:e.downloadBehavior})),await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(void 0,s).downloadBehavior??null;await this.#a(r,s)})),{}}};function no(n){if(!(n.proxyType==="direct"||n.proxyType==="system")){if(n.proxyType==="pac")throw new R("PAC proxy configuration is not supported per user context");if(n.proxyType==="autodetect")throw new R("Autodetect proxy is not supported per user context");if(n.proxyType==="manual"){let e=[];if(n.httpProxy!==void 0&&e.push(`http=${n.httpProxy}`),n.sslProxy!==void 0&&e.push(`https=${n.sslProxy}`),n.socksProxy!==void 0||n.socksVersion!==void 0){if(n.socksProxy===void 0)throw new x("'socksVersion' cannot be set without 'socksProxy'");if(n.socksVersion===void 0||typeof n.socksVersion!="number"||!Number.isInteger(n.socksVersion)||n.socksVersion<0||n.socksVersion>255)throw new x("'socksVersion' must be between 0 and 255");e.push(`socks=socks${n.socksVersion}://${n.socksProxy}`)}return e.length===0?void 0:e.join(";")}throw new O("Unknown proxy type")}}var jt=class{#e;#t;#s;#r;constructor(e,t,s,r){this.#e=e,this.#t=t,this.#s=s,this.#r=r}getSession(e){let t=e.context,s=this.#e.getContext(t).cdpTarget.cdpSessionId;return s===void 0?{}:{session:s}}resolveRealm(e){let t=e.realm,s=this.#t.getRealm({realmId:t});if(s===void 0)throw new O(`Could not find realm ${e.realm}`);return{executionContextId:s.executionContextId}}async sendCommand(e){return{result:await(e.session?this.#s.getCdpClient(e.session):this.#r).sendCommand(e.method,e.params),session:e.session}}};var $t=class{#e;#t;#s;#r;#i;constructor(e,t,s,r,i){this.#s=r,this.#i=s,this.#e=e,this.#t=t,this.#r=i,this.#r.addSubscribeHook(C.BrowsingContext.EventNames.ContextCreated,this.#a.bind(this))}getTree(e){return{contexts:(e.root===void 0?this.#t.getTopLevelContexts():[this.#t.getContext(e.root)]).map(s=>s.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE))}}async create(e){let t,s="default";if(e.referenceContext!==void 0){if(t=this.#t.getContext(e.referenceContext),!t.isTopLevelContext())throw new x("referenceContext should be a top-level context");s=t.userContext}e.userContext!==void 0&&(s=e.userContext);let r=this.#t.getAllContexts().filter(c=>c.userContext===s),i=!1;switch(e.type){case"tab":i=!1;break;case"window":i=!0;break}r.length||(i=!0);let o;try{o=await this.#e.sendCommand("Target.createTarget",{url:"about:blank",newWindow:i,browserContextId:s==="default"?void 0:s,background:e.background===!0})}catch(c){throw c.message.startsWith("Failed to find browser context with id")||c.message==="browserContextId"?new G(`The context ${s} was not found`):c}let a=await this.#t.waitForContext(o.targetId);return await a.lifecycleLoaded(),{context:a.id}}navigate(e){return this.#t.getContext(e.context).navigate(e.url,e.wait??"none")}reload(e){return this.#t.getContext(e.context).reload(e.ignoreCache??!1,e.wait??"none")}async activate(e){let t=this.#t.getContext(e.context);if(!t.isTopLevelContext())throw new x("Activation is only supported on the top-level context");return await t.activate(),{}}async captureScreenshot(e){return await this.#t.getContext(e.context).captureScreenshot(e)}async print(e){return await this.#t.getContext(e.context).print(e)}async setViewport(e){if((e.viewport?.height??0)>1e7||(e.viewport?.width??0)>1e7)throw new R("Viewport dimension over 10000000 are not supported");let s={};e.devicePixelRatio!==void 0&&(s.devicePixelRatio=e.devicePixelRatio),e.viewport!==void 0&&(s.viewport=e.viewport);let r=await this.#o(e.context,e.userContexts);for(let i of e.userContexts??[])this.#s.updateUserContextConfig(i,s);return e.context!==void 0&&this.#s.updateBrowsingContextConfig(e.context,s),await Promise.all(r.map(async i=>{let o=this.#s.getActiveConfig(i.id,i.userContext);await i.setViewport(o.viewport??null,o.devicePixelRatio??null,o.screenOrientation??null)})),{}}async#o(e,t){if(e===void 0&&t===void 0)throw new x("Either userContexts or context must be provided");if(e!==void 0&&t!==void 0)throw new x("userContexts and context are mutually exclusive");if(e!==void 0){let r=this.#t.getContext(e);if(!r.isTopLevelContext())throw new x("Emulating viewport is only supported on the top-level context");return[r]}await this.#i.verifyUserContextIdList(t);let s=[];for(let r of t){let i=this.#t.getTopLevelContexts().filter(o=>o.userContext===r);s.push(...i)}return[...new Set(s).values()]}async traverseHistory(e){let t=this.#t.getContext(e.context);if(!t)throw new x(`No browsing context with id ${e.context}`);if(!t.isTopLevelContext())throw new x("Traversing history is only supported on the top-level context");return await t.traverseHistory(e.delta),{}}async handleUserPrompt(e){let t=this.#t.getContext(e.context);try{await t.handleUserPrompt(e.accept,e.userText)}catch(s){throw s.message?.includes("No dialog is showing")?new Nt("No dialog is showing"):s}return{}}async close(e){let t=this.#t.getContext(e.context);if(!t.isTopLevelContext())throw new x(`Non top-level browsing context ${t.id} cannot be closed.`);let s=t.cdpTarget.parentCdpClient;try{let r=new Promise(i=>{let o=a=>{a.targetId===e.context&&(s.off("Target.detachedFromTarget",o),i())};s.on("Target.detachedFromTarget",o)});try{e.promptUnload?await t.close():await s.sendCommand("Target.closeTarget",{targetId:e.context})}catch(i){if(!s.isCloseError(i))throw i}await r}catch(r){if(!(r.code===-32e3&&r.message==="Not attached to an active page"))throw r}return{}}async locateNodes(e){return await this.#t.getContext(e.context).locateNodes(e)}#a(e){return[this.#t.getContext(e),...this.#t.getContext(e).allChildren].forEach(r=>{this.#r.registerEvent({type:"event",method:C.BrowsingContext.EventNames.ContextCreated,params:r.serializeToBidiValue()},r.id)}),Promise.resolve()}};var Ht=class{#e;#t;#s;constructor(e,t,s){this.#e=t,this.#t=e,this.#s=s}async setGeolocationOverride(e){if("coordinates"in e&&"error"in e)throw new x("Coordinates and error cannot be set at the same time");let t=null;if("coordinates"in e){if((e.coordinates?.altitude??null)===null&&(e.coordinates?.altitudeAccuracy??null)!==null)throw new x("Geolocation altitudeAccuracy can be set only with altitude");t=e.coordinates}else if("error"in e){if(e.error.type!=="positionUnavailable")throw new x(`Unknown geolocation error ${e.error.type}`);t=e.error}else throw new x("Coordinates or error should be set");let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{geolocation:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{geolocation:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setGeolocationOverride(i.geolocation??null)})),{}}async setLocaleOverride(e){let t=e.locale??null;if(t!==null&&!oo(t))throw new x(`Invalid locale "${t}"`);let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{locale:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{locale:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await Promise.all([r.setLocaleOverride(i.locale??null),r.setUserAgentAndAcceptLanguage(i.userAgent,i.locale,i.clientHints)])})),{}}async setScriptingEnabled(e){let t=e.enabled,s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{scriptingEnabled:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{scriptingEnabled:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setScriptingEnabled(i.scriptingEnabled??null)})),{}}async setScrollbarTypeOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{scrollbarType:e.scrollbarType});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{scrollbarType:e.scrollbarType});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setScrollbarTypeOverride(r.scrollbarType??null)})),{}}async setScreenOrientationOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{screenOrientation:e.screenOrientation});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{screenOrientation:e.screenOrientation});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setViewport(r.viewport??null,r.devicePixelRatio??null,r.screenOrientation??null)})),{}}async setScreenSettingsOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{screenArea:e.screenArea});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{screenArea:e.screenArea});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setViewport(r.viewport??null,r.devicePixelRatio??null,r.screenOrientation??null)})),{}}async#r(e,t,s=!1){if(e===void 0&&t===void 0){if(s)return this.#t.getTopLevelContexts();throw new x("Either user contexts or browsing contexts must be provided")}if(e!==void 0&&t!==void 0)throw new x("User contexts and browsing contexts are mutually exclusive");let r=[];if(e===void 0){if(t.length===0)throw new x("user context should be provided");await this.#e.verifyUserContextIdList(t);for(let i of t){let o=this.#t.getTopLevelContexts().filter(a=>a.userContext===i);r.push(...o)}}else{if(e.length===0)throw new x("browsing context should be provided");for(let i of e){let o=this.#t.getContext(i);if(!o.isTopLevelContext())throw new x("The command is only supported on the top-level context");r.push(o)}}return[...new Set(r).values()]}async setTimezoneOverride(e){let t=e.timezone??null;if(t!==null&&!ao(t))throw new x(`Invalid timezone "${t}"`);t!==null&&co(t)&&(t=`GMT${t}`);let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{timezone:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{timezone:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setTimezoneOverride(i.timezone??null)})),{}}async setTouchOverride(e){let t=e.maxTouchPoints,s=await this.#r(e.contexts,e.userContexts,!0);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{maxTouchPoints:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{maxTouchPoints:t});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({maxTouchPoints:t}),await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setTouchOverride(i.maxTouchPoints??null)})),{}}async setUserAgentOverrideParams(e){if(e.userAgent==="")throw new R("empty user agent string is not supported");let t=await this.#r(e.contexts,e.userContexts,!0);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{userAgent:e.userAgent});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{userAgent:e.userAgent});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({userAgent:e.userAgent}),await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setUserAgentAndAcceptLanguage(r.userAgent,r.locale,r.clientHints)})),{}}async setClientHintsOverride(e){let t=e.clientHints??null,s=await this.#r(e.contexts,e.userContexts,!0);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{clientHints:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{clientHints:t});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({clientHints:t}),await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setUserAgentAndAcceptLanguage(i.userAgent,i.locale,i.clientHints)})),{}}async setNetworkConditions(e){let t=await this.#r(e.contexts,e.userContexts,!0);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{emulatedNetworkConditions:e.networkConditions});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{emulatedNetworkConditions:e.networkConditions});if(e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({emulatedNetworkConditions:e.networkConditions}),e.networkConditions!==null&&e.networkConditions.type!=="offline")throw new R(`Unsupported network conditions ${e.networkConditions.type}`);return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setEmulatedNetworkConditions(r.emulatedNetworkConditions??null)})),{}}};function oo(n){try{return new Intl.Locale(n),!0}catch(e){if(e instanceof RangeError)return!1;throw e}}function ao(n){try{return Intl.DateTimeFormat(void 0,{timeZone:n}),!0}catch(e){if(e instanceof RangeError)return!1;throw e}}function co(n){return/^[+-](?:2[0-3]|[01]\d)(?::[0-5]\d)?$/.test(n)}function _(n,e){if(!n)throw new Error(e??"Internal assertion failed.")}function fr(n){return zt(n)&&n.length>1}function zt(n){return[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].length===1}var Wt=class{type="none"},ot=class{type="key";pressed=new Set;#e=0;get modifiers(){return this.#e}get alt(){return(this.#e&1)===1}set alt(e){this.#t(e,1)}get ctrl(){return(this.#e&2)===2}set ctrl(e){this.#t(e,2)}get meta(){return(this.#e&4)===4}set meta(e){this.#t(e,4)}get shift(){return(this.#e&8)===8}set shift(e){this.#t(e,8)}#t(e,t){e?this.#e|=t:this.#e&=~t}},Kt=class n{static#e=500;static#t=2;count=0;#s;#r;#i;constructor(e,t,s){this.#s=e,this.#r=t,this.#i=s}compare(e){return e.#i-this.#i>n.#e||Math.abs(e.#s-this.#s)>n.#t||Math.abs(e.#r-this.#r)>n.#t}},Vt=class{type="pointer";subtype;pointerId;pressed=new Set;x=0;y=0;radiusX;radiusY;force;constructor(e,t){this.pointerId=e,this.subtype=t}get buttons(){let e=0;for(let t of this.pressed)switch(t){case 0:e|=1;break;case 1:e|=4;break;case 2:e|=2;break;case 3:e|=8;break;case 4:e|=16;break}return e}#e=new Map;setClickCount(e,t){let s=this.#e.get(e);return(!s||s.compare(t))&&(s=t),++s.count,this.#e.set(e,s),s.count}getClickCount(e){return this.#e.get(e)?.count??0}resetClickCount(){this.#e=new Map}},Gt=class{type="wheel"};function mr(n){switch(n){case"\uE000":return"Unidentified";case"\uE001":return"Cancel";case"\uE002":return"Help";case"\uE003":return"Backspace";case"\uE004":return"Tab";case"\uE005":return"Clear";case"\uE006":case"\uE007":return"Enter";case"\uE008":return"Shift";case"\uE009":return"Control";case"\uE00A":return"Alt";case"\uE00B":return"Pause";case"\uE00C":return"Escape";case"\uE00D":return" ";case"\uE00E":return"PageUp";case"\uE00F":return"PageDown";case"\uE010":return"End";case"\uE011":return"Home";case"\uE012":return"ArrowLeft";case"\uE013":return"ArrowUp";case"\uE014":return"ArrowRight";case"\uE015":return"ArrowDown";case"\uE016":return"Insert";case"\uE017":return"Delete";case"\uE018":return";";case"\uE019":return"=";case"\uE01A":return"0";case"\uE01B":return"1";case"\uE01C":return"2";case"\uE01D":return"3";case"\uE01E":return"4";case"\uE01F":return"5";case"\uE020":return"6";case"\uE021":return"7";case"\uE022":return"8";case"\uE023":return"9";case"\uE024":return"*";case"\uE025":return"+";case"\uE026":return",";case"\uE027":return"-";case"\uE028":return".";case"\uE029":return"/";case"\uE031":return"F1";case"\uE032":return"F2";case"\uE033":return"F3";case"\uE034":return"F4";case"\uE035":return"F5";case"\uE036":return"F6";case"\uE037":return"F7";case"\uE038":return"F8";case"\uE039":return"F9";case"\uE03A":return"F10";case"\uE03B":return"F11";case"\uE03C":return"F12";case"\uE03D":return"Meta";case"\uE040":return"ZenkakuHankaku";case"\uE050":return"Shift";case"\uE051":return"Control";case"\uE052":return"Alt";case"\uE053":return"Meta";case"\uE054":return"PageUp";case"\uE055":return"PageDown";case"\uE056":return"End";case"\uE057":return"Home";case"\uE058":return"ArrowLeft";case"\uE059":return"ArrowUp";case"\uE05A":return"ArrowRight";case"\uE05B":return"ArrowDown";case"\uE05C":return"Insert";case"\uE05D":return"Delete";default:return n}}function gr(n){switch(n){case"`":case"~":return"Backquote";case"\\":case"|":return"Backslash";case"\uE003":return"Backspace";case"[":case"{":return"BracketLeft";case"]":case"}":return"BracketRight";case",":case"<":return"Comma";case"0":case")":return"Digit0";case"1":case"!":return"Digit1";case"2":case"@":return"Digit2";case"3":case"#":return"Digit3";case"4":case"$":return"Digit4";case"5":case"%":return"Digit5";case"6":case"^":return"Digit6";case"7":case"&":return"Digit7";case"8":case"*":return"Digit8";case"9":case"(":return"Digit9";case"=":case"+":return"Equal";case">":return"IntlBackslash";case"a":case"A":return"KeyA";case"b":case"B":return"KeyB";case"c":case"C":return"KeyC";case"d":case"D":return"KeyD";case"e":case"E":return"KeyE";case"f":case"F":return"KeyF";case"g":case"G":return"KeyG";case"h":case"H":return"KeyH";case"i":case"I":return"KeyI";case"j":case"J":return"KeyJ";case"k":case"K":return"KeyK";case"l":case"L":return"KeyL";case"m":case"M":return"KeyM";case"n":case"N":return"KeyN";case"o":case"O":return"KeyO";case"p":case"P":return"KeyP";case"q":case"Q":return"KeyQ";case"r":case"R":return"KeyR";case"s":case"S":return"KeyS";case"t":case"T":return"KeyT";case"u":case"U":return"KeyU";case"v":case"V":return"KeyV";case"w":case"W":return"KeyW";case"x":case"X":return"KeyX";case"y":case"Y":return"KeyY";case"z":case"Z":return"KeyZ";case"-":case"_":return"Minus";case".":return"Period";case"'":case'"':return"Quote";case";":case":":return"Semicolon";case"/":case"?":return"Slash";case"\uE00A":return"AltLeft";case"\uE052":return"AltRight";case"\uE009":return"ControlLeft";case"\uE051":return"ControlRight";case"\uE006":return"Enter";case"\uE00B":return"Pause";case"\uE03D":return"MetaLeft";case"\uE053":return"MetaRight";case"\uE008":return"ShiftLeft";case"\uE050":return"ShiftRight";case" ":case"\uE00D":return"Space";case"\uE004":return"Tab";case"\uE017":return"Delete";case"\uE010":return"End";case"\uE002":return"Help";case"\uE011":return"Home";case"\uE016":return"Insert";case"\uE00F":return"PageDown";case"\uE00E":return"PageUp";case"\uE015":return"ArrowDown";case"\uE012":return"ArrowLeft";case"\uE014":return"ArrowRight";case"\uE013":return"ArrowUp";case"\uE00C":return"Escape";case"\uE031":return"F1";case"\uE032":return"F2";case"\uE033":return"F3";case"\uE034":return"F4";case"\uE035":return"F5";case"\uE036":return"F6";case"\uE037":return"F7";case"\uE038":return"F8";case"\uE039":return"F9";case"\uE03A":return"F10";case"\uE03B":return"F11";case"\uE03C":return"F12";case"\uE019":return"NumpadEqual";case"\uE01A":case"\uE05C":return"Numpad0";case"\uE01B":case"\uE056":return"Numpad1";case"\uE01C":case"\uE05B":return"Numpad2";case"\uE01D":case"\uE055":return"Numpad3";case"\uE01E":case"\uE058":return"Numpad4";case"\uE01F":return"Numpad5";case"\uE020":case"\uE05A":return"Numpad6";case"\uE021":case"\uE057":return"Numpad7";case"\uE022":case"\uE059":return"Numpad8";case"\uE023":case"\uE054":return"Numpad9";case"\uE025":return"NumpadAdd";case"\uE026":return"NumpadComma";case"\uE028":case"\uE05D":return"NumpadDecimal";case"\uE029":return"NumpadDivide";case"\uE007":return"NumpadEnter";case"\uE024":return"NumpadMultiply";case"\uE027":return"NumpadSubtract";default:return}}function wr(n){switch(n){case"\uE007":case"\uE008":case"\uE009":case"\uE00A":case"\uE03D":return 1;case"\uE019":case"\uE01A":case"\uE01B":case"\uE01C":case"\uE01D":case"\uE01E":case"\uE01F":case"\uE020":case"\uE021":case"\uE022":case"\uE023":case"\uE024":case"\uE025":case"\uE026":case"\uE027":case"\uE028":case"\uE029":case"\uE054":case"\uE055":case"\uE056":case"\uE057":case"\uE058":case"\uE059":case"\uE05A":case"\uE05B":case"\uE05C":case"\uE05D":return 3;case"\uE050":case"\uE051":case"\uE052":case"\uE053":return 2;default:return 0}}var yr={0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,Abort:3,Help:6,Backspace:8,Tab:9,Numpad5:12,NumpadEnter:13,Enter:13,"\\r":13,"\\n":13,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,Pause:19,CapsLock:20,Escape:27,Convert:28,NonConvert:29,Space:32,Numpad9:33,PageUp:33,Numpad3:34,PageDown:34,End:35,Numpad1:35,Home:36,Numpad7:36,ArrowLeft:37,Numpad4:37,Numpad8:38,ArrowUp:38,ArrowRight:39,Numpad6:39,Numpad2:40,ArrowDown:40,Select:41,Open:43,PrintScreen:44,Insert:45,Numpad0:45,Delete:46,NumpadDecimal:46,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,KeyA:65,KeyB:66,KeyC:67,KeyD:68,KeyE:69,KeyF:70,KeyG:71,KeyH:72,KeyI:73,KeyJ:74,KeyK:75,KeyL:76,KeyM:77,KeyN:78,KeyO:79,KeyP:80,KeyQ:81,KeyR:82,KeyS:83,KeyT:84,KeyU:85,KeyV:86,KeyW:87,KeyX:88,KeyY:89,KeyZ:90,MetaLeft:91,MetaRight:92,ContextMenu:93,NumpadMultiply:106,NumpadAdd:107,NumpadSubtract:109,NumpadDivide:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,F16:127,F17:128,F18:129,F19:130,F20:131,F21:132,F22:133,F23:134,F24:135,NumLock:144,ScrollLock:145,AudioVolumeMute:173,AudioVolumeDown:174,AudioVolumeUp:175,MediaTrackNext:176,MediaTrackPrevious:177,MediaStop:178,MediaPlayPause:179,Semicolon:186,Equal:187,NumpadEqual:187,Comma:188,Minus:189,Period:190,Slash:191,Backquote:192,BracketLeft:219,Backslash:220,BracketRight:221,Quote:222,AltGraph:225,Props:247,Cancel:3,Clear:12,Shift:16,Control:17,Alt:18,Accept:30,ModeChange:31," ":32,Print:42,Execute:43,"\\u0000":46,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,Meta:91,"*":106,"+":107,"-":109,"/":111,";":186,"=":187,",":188,".":190,"`":192,"[":219,"\\\\":220,"]":221,"'":222,Attn:246,CrSel:247,ExSel:248,EraseEof:249,Play:250,ZoomOut:251,")":48,"!":49,"@":50,"#":51,$:52,"%":53,"^":54,"&":55,"(":57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,":":186,"<":188,_:189,">":190,"?":191,"~":192,"{":219,"|":220,"}":221,'"':222,Camera:44,EndCall:95,VolumeDown:182,VolumeUp:183};var uo=(n=>{let e=n.getClientRects()[0],t=Math.max(0,Math.min(e.x,e.x+e.width)),s=Math.min(window.innerWidth,Math.max(e.x,e.x+e.width)),r=Math.max(0,Math.min(e.y,e.y+e.height)),i=Math.min(window.innerHeight,Math.max(e.y,e.y+e.height));return[t+(s-t>>1),r+(i-r>>1)]}).toString(),lo=(()=>navigator.platform.toLowerCase().includes("mac")).toString();async function ho(n,e){let s=await(await n.getOrCreateHiddenSandbox()).callFunction(uo,!1,{type:"undefined"},[e]);if(s.type==="exception")throw new ce(`Origin element ${e.sharedId} was not found`);_(s.result.type==="array"),_(s.result.value?.[0]?.type==="number"),_(s.result.value?.[1]?.type==="number");let{result:{value:[{value:r},{value:i}]}}=s;return{x:r,y:i}}var Ce=class{static isMacOS=async e=>{let s=await(await e.getOrCreateHiddenSandbox()).callFunction(lo,!1);return _(s.type!=="exception"),_(s.result.type==="boolean"),s.result.value};#e;#t=0;#s=0;#r;#i;#o;constructor(e,t,s,r){this.#e=t,this.#r=e,this.#i=s,this.#o=r}get#a(){return this.#e.getContext(this.#i)}async dispatchActions(e){await this.#r.queue.run(async()=>{for(let t of e)await this.dispatchTickActions(t)})}async dispatchTickActions(e){this.#t=performance.now(),this.#s=0;for(let{action:s}of e)"duration"in s&&s.duration!==void 0&&(this.#s=Math.max(this.#s,s.duration));let t=[new Promise(s=>setTimeout(s,this.#s))];for(let s of e)t.push(this.#d(s));await Promise.all(t)}async#d({id:e,action:t}){let s=this.#r.get(e),r=this.#r.getGlobalKeyState();switch(t.type){case"keyDown":{await this.#u(s,t),this.#r.cancelList.push({id:e,action:{...t,type:"keyUp"}});break}case"keyUp":{await this.#m(s,t);break}case"pause":break;case"pointerDown":{await this.#n(s,r,t),this.#r.cancelList.push({id:e,action:{...t,type:"pointerUp"}});break}case"pointerMove":{await this.#h(s,r,t);break}case"pointerUp":{await this.#l(s,r,t);break}case"scroll":{await this.#p(s,r,t);break}}}async#n(e,t,s){let{button:r}=s;if(e.pressed.has(r))return;e.pressed.add(r);let{x:i,y:o,subtype:a}=e,{width:c,height:d,pressure:u,twist:l,tangentialPressure:y}=s,{tiltX:f,tiltY:h}=dn(s),{modifiers:p}=t,{radiusX:m,radiusY:v}=un(c??1,d??1);switch(a){case"mouse":case"pen":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mousePressed",x:i,y:o,modifiers:p,button:Xt(r),buttons:e.buttons,clickCount:e.setClickCount(r,new Kt(i,o,performance.now())),pointerType:a,tangentialPressure:y,tiltX:f,tiltY:h,twist:l,force:u});break;case"touch":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[{x:i,y:o,radiusX:m,radiusY:v,tangentialPressure:y,tiltX:f,tiltY:h,twist:l,force:u,id:e.pointerId}],modifiers:p});break}e.radiusX=m,e.radiusY=v,e.force=u}#l(e,t,s){let{button:r}=s;if(!e.pressed.has(r))return;e.pressed.delete(r);let{x:i,y:o,force:a,radiusX:c,radiusY:d,subtype:u}=e,{modifiers:l}=t;switch(u){case"mouse":case"pen":return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseReleased",x:i,y:o,modifiers:l,button:Xt(r),buttons:e.buttons,clickCount:e.getClickCount(r),pointerType:u});case"touch":return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[{x:i,y:o,id:e.pointerId,force:a,radiusX:c,radiusY:d}],modifiers:l})}}async#h(e,t,s){let{x:r,y:i,subtype:o}=e,{width:a,height:c,pressure:d,twist:u,tangentialPressure:l,x:y,y:f,origin:h="viewport",duration:p=this.#s}=s,{tiltX:m,tiltY:v}=dn(s),{radiusX:I,radiusY:B}=un(a??1,c??1),{targetX:U,targetY:he}=await this.#f(h,y,f,r,i);if(U<0||he<0)throw new st(`Cannot move beyond viewport (x: ${U}, y: ${he})`);let Ie;do{let De=p>0?(performance.now()-this.#t)/p:1;Ie=De>=1;let Q,ee;if(Ie?(Q=U,ee=he):(Q=Math.round(De*(U-r)+r),ee=Math.round(De*(he-i)+i)),e.x!==Q||e.y!==ee){let{modifiers:Te}=t;switch(o){case"mouse":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:Q,y:ee,modifiers:Te,clickCount:0,button:Xt(e.pressed.values().next().value??5),buttons:e.buttons,pointerType:o,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d});break;case"pen":e.pressed.size!==0&&await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:Q,y:ee,modifiers:Te,clickCount:0,button:Xt(e.pressed.values().next().value??5),buttons:e.buttons,pointerType:o,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d??.5});break;case"touch":e.pressed.size!==0&&await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[{x:Q,y:ee,radiusX:I,radiusY:B,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d,id:e.pointerId}],modifiers:Te});break}e.x=Q,e.y=ee,e.radiusX=I,e.radiusY=B,e.force=d}}while(!Ie)}async#c(){if(this.#a.id===this.#a.cdpTarget.id)return{x:0,y:0};let{backendNodeId:e}=await this.#a.cdpTarget.cdpClient.sendCommand("DOM.getFrameOwner",{frameId:this.#a.id}),{model:t}=await this.#a.cdpTarget.cdpClient.sendCommand("DOM.getBoxModel",{backendNodeId:e});return{x:t.content[0],y:t.content[1]}}async#f(e,t,s,r,i){let o,a,c=await this.#c();switch(e){case"viewport":o=t+c.x,a=s+c.y;break;case"pointer":o=r+t+c.x,a=i+s+c.y;break;default:{let{x:d,y:u}=await ho(this.#a,e.element);o=d+t+c.x,a=u+s+c.y;break}}return{targetX:o,targetY:a}}async#p(e,t,s){let{deltaX:r,deltaY:i,x:o,y:a,origin:c="viewport",duration:d=this.#s}=s;if(c==="pointer")throw new x('"pointer" origin is invalid for scrolling.');let{targetX:u,targetY:l}=await this.#f(c,o,a,0,0);if(u<0||l<0)throw new st(`Cannot move beyond viewport (x: ${u}, y: ${l})`);let y=0,f=0,h;do{let p=d>0?(performance.now()-this.#t)/d:1;h=p>=1;let m,v;if(h?(m=r-y,v=i-f):(m=Math.round(p*r-y),v=Math.round(p*i-f)),m!==0||v!==0){let{modifiers:I}=t;await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseWheel",deltaX:m,deltaY:v,x:u,y:l,modifiers:I}),y+=m,f+=v}}while(!h)}async#u(e,t){let s=t.value;if(!zt(s))throw new x(`Invalid key value: ${s}`);let r=fr(s),i=mr(s),o=e.pressed.has(i),a=gr(s),c=wr(s);switch(i){case"Alt":e.alt=!0;break;case"Shift":e.shift=!0;break;case"Control":e.ctrl=!0;break;case"Meta":e.meta=!0;break}e.pressed.add(i);let{modifiers:d}=e,u=an(i,e,r),l=cn(a??"",e)??u,y;if(this.#o&&e.meta)switch(a){case"KeyA":y="SelectAll";break;case"KeyC":y="Copy";break;case"KeyV":y=e.shift?"PasteAndMatchStyle":"Paste";break;case"KeyX":y="Cut";break;case"KeyZ":y=e.shift?"Redo":"Undo";break;default:}let f=[this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchKeyEvent",{type:l?"keyDown":"rawKeyDown",windowsVirtualKeyCode:yr[i],key:i,code:a,text:l,unmodifiedText:u,autoRepeat:o,isSystemKey:e.alt||void 0,location:c<3?c:void 0,isKeypad:c===3,modifiers:d,commands:y?[y]:void 0})];i==="Escape"&&!e.alt&&(this.#o&&!e.ctrl&&!e.meta||!this.#o)&&f.push(this.#a.cdpTarget.cdpClient.sendCommand("Input.cancelDragging")),await Promise.all(f)}#m(e,t){let s=t.value;if(!zt(s))throw new x(`Invalid key value: ${s}`);let r=fr(s),i=mr(s);if(!e.pressed.has(i))return;let o=gr(s),a=wr(s);switch(i){case"Alt":e.alt=!1;break;case"Shift":e.shift=!1;break;case"Control":e.ctrl=!1;break;case"Meta":e.meta=!1;break}e.pressed.delete(i);let{modifiers:c}=e,d=an(i,e,r),u=cn(o??"",e)??d;return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchKeyEvent",{type:"keyUp",windowsVirtualKeyCode:yr[i],key:i,code:o,text:u,unmodifiedText:d,location:a<3?a:void 0,isSystemKey:e.alt||void 0,isKeypad:a===3,modifiers:c})}},an=(n,e,t)=>t?n:n==="Enter"?"\r":[...n].length===1?e.shift?n.toLocaleUpperCase("en-US"):n:void 0,cn=(n,e)=>{if(e.ctrl){switch(n){case"Digit2":if(e.shift)return"\0";break;case"KeyA":return"";case"KeyB":return"";case"KeyC":return"";case"KeyD":return"";case"KeyE":return"";case"KeyF":return"";case"KeyG":return"\x07";case"KeyH":return"\b";case"KeyI":return" ";case"KeyJ":return`
2
+ import{$ as cr,$a as Ai,A as P,Aa as lr,Ab as pr,B as q,Bb as Gi,C as Ct,Ca as Oi,Cb as Xi,D as hi,Dc as rn,F as pi,Fb as Ji,G as fi,Gb as Yi,H as ne,I as b,Ib as Zi,J as Ne,K as mi,La as E,Ma as j,N as _e,Na as Ni,Nb as Qi,Oa as _i,P as gi,Pa as fe,Q as Et,Qa as Bi,S as wi,Sb as en,T as yi,U as vi,V as xi,Z as Be,_a as Fi,a as or,aa as bi,b as re,ca as Ci,cb as oe,d as Re,db as Ui,e as Oe,ea as J,f as Ze,fa as Ei,fb as hr,g as ci,gb as Li,ha as dr,ia as Si,ib as Mi,j as di,ja as Fe,jb as qi,k as ui,kb as ji,la as Pi,mb as $i,n as li,na as ki,nb as ae,o as ar,oa as Ii,ob as Hi,p as ie,pa as Di,pb as zi,q as bt,qa as St,ra as Ti,sb as Wi,sc as tn,t as D,tc as sn,va as Pt,w as L,wa as Ri,wb as Ki,xb as Vi,ya as ur,yb as Qe,zb as et}from"./chunk-7DTINW6U.mjs";import"./chunk-YEY3RSFQ.mjs";import"./chunk-UH4SIXTR.mjs";import"./chunk-Y34NR5JL.mjs";import{b as xt,c as T}from"./chunk-W7XHE4CT.mjs";import{d as ai}from"./chunk-5L7RYZCL.mjs";var Ve={};ai(Ve,{BidiServer:()=>Fs,EventEmitter:()=>K,OutgoingMessage:()=>X});function nn(n){return{all:n=n||new Map,on:function(e,t){var s=n.get(e);s?s.push(t):n.set(e,[t])},off:function(e,t){var s=n.get(e);s&&(t?s.splice(s.indexOf(t)>>>0,1):n.set(e,[]))},emit:function(e,t){var s=n.get(e);s&&s.slice().map(function(r){r(t)}),(s=n.get("*"))&&s.slice().map(function(r){r(e,t)})}}}var K=class{#e=nn();on(e,t){return this.#e.on(e,t),this}once(e,t){let s=r=>{t(r),this.off(e,s)};return this.on(e,s)}off(e,t){return this.#e.off(e,t),this}emit(e,t){this.#e.emit(e,t)}removeAllListeners(e){return e?this.#e.all.delete(e):this.#e.all.clear(),this}};var S;(function(n){n.bidi="bidi",n.cdp="cdp",n.debug="debug",n.debugError="debug:error",n.debugInfo="debug:info",n.debugWarn="debug:warn"})(S||(S={}));var on,tt=class{static LOGGER_PREFIX=`${S.debug}:queue`;#e;#t;#s=[];#r=!1;constructor(e,t){this.#t=e,this.#e=t}add(e,t){this.#s.push([e,t]),this.#i()}async#i(){if(!this.#r){for(this.#r=!0;this.#s.length>0;){let e=this.#s.shift();if(!e)continue;let[t,s]=e;this.#e?.(on.LOGGER_PREFIX)?.("Processing event:",s),await t.then(r=>{if(r.kind==="error"){this.#e?.(S.debugError)?.("Event threw before sending:",r.error.message,r.error.stack);return}return this.#t(r.value)}).catch(r=>{this.#e?.(S.debugError)?.("Event was not processed:",r?.message)})}this.#r=!1}}};on=tt;var C={};ai(C,{BiDiModule:()=>kt,Bluetooth:()=>Ae,BrowsingContext:()=>Tt,EVENT_NAMES:()=>ro,Input:()=>Rt,Log:()=>Dt,Network:()=>Ot,Script:()=>It,Speculation:()=>Ue});var kt;(function(n){n.Bluetooth="bluetooth",n.Browser="browser",n.BrowsingContext="browsingContext",n.Cdp="goog:cdp",n.Input="input",n.Log="log",n.Network="network",n.Script="script",n.Session="session",n.Speculation="speculation"})(kt||(kt={}));var It;(function(n){let e;(function(t){t.Message="script.message",t.RealmCreated="script.realmCreated",t.RealmDestroyed="script.realmDestroyed"})(e=n.EventNames||(n.EventNames={}))})(It||(It={}));var Dt;(function(n){let e;(function(t){t.LogEntryAdded="log.entryAdded"})(e=n.EventNames||(n.EventNames={}))})(Dt||(Dt={}));var Tt;(function(n){let e;(function(t){t.ContextCreated="browsingContext.contextCreated",t.ContextDestroyed="browsingContext.contextDestroyed",t.DomContentLoaded="browsingContext.domContentLoaded",t.DownloadEnd="browsingContext.downloadEnd",t.DownloadWillBegin="browsingContext.downloadWillBegin",t.FragmentNavigated="browsingContext.fragmentNavigated",t.HistoryUpdated="browsingContext.historyUpdated",t.Load="browsingContext.load",t.NavigationAborted="browsingContext.navigationAborted",t.NavigationCommitted="browsingContext.navigationCommitted",t.NavigationFailed="browsingContext.navigationFailed",t.NavigationStarted="browsingContext.navigationStarted",t.UserPromptClosed="browsingContext.userPromptClosed",t.UserPromptOpened="browsingContext.userPromptOpened"})(e=n.EventNames||(n.EventNames={}))})(Tt||(Tt={}));var Rt;(function(n){let e;(function(t){t.FileDialogOpened="input.fileDialogOpened"})(e=n.EventNames||(n.EventNames={}))})(Rt||(Rt={}));var Ot;(function(n){let e;(function(t){t.AuthRequired="network.authRequired",t.BeforeRequestSent="network.beforeRequestSent",t.FetchError="network.fetchError",t.ResponseCompleted="network.responseCompleted",t.ResponseStarted="network.responseStarted"})(e=n.EventNames||(n.EventNames={}))})(Ot||(Ot={}));var Ae;(function(n){let e;(function(t){t.RequestDevicePromptUpdated="bluetooth.requestDevicePromptUpdated",t.GattConnectionAttempted="bluetooth.gattConnectionAttempted",t.CharacteristicEventGenerated="bluetooth.characteristicEventGenerated",t.DescriptorEventGenerated="bluetooth.descriptorEventGenerated"})(e=n.EventNames||(n.EventNames={}))})(Ae||(Ae={}));var Ue;(function(n){let e;(function(t){t.PrefetchStatusUpdated="speculation.prefetchStatusUpdated"})(e=n.EventNames||(n.EventNames={}))})(Ue||(Ue={}));var ro=new Set([...Object.values(kt),...Object.values(Ae.EventNames),...Object.values(Tt.EventNames),...Object.values(Rt.EventNames),...Object.values(Dt.EventNames),...Object.values(Ot.EventNames),...Object.values(It.EventNames),...Object.values(Ue.EventNames)]);var F=class extends Error{error;message;stacktrace;constructor(e,t,s){super(),this.error=e,this.message=t,this.stacktrace=s}toErrorResponse(e){return{type:"error",id:e,error:this.error,message:this.message,stacktrace:this.stacktrace}}},x=class extends F{constructor(e,t){super("invalid argument",e,t)}},xe=class extends F{constructor(e,t){super("invalid selector",e,t)}};var st=class extends F{constructor(e,t){super("move target out of bounds",e,t)}},Nt=class extends F{constructor(e,t){super("no such alert",e,t)}},ce=class extends F{constructor(e,t){super("no such element",e,t)}},V=class extends F{constructor(e,t){super("no such frame",e,t)}},rt=class extends F{constructor(e,t){super("no such handle",e,t)}},_t=class extends F{constructor(e,t){super("no such history entry",e,t)}},Bt=class extends F{constructor(e,t){super("no such intercept",e,t)}},Y=class extends F{constructor(e,t){super("no such node",e,t)}},Le=class extends F{constructor(e,t){super("no such request",e,t)}},it=class extends F{constructor(e,t){super("no such script",e,t)}},G=class extends F{constructor(e,t){super("no such user context",e,t)}};var Ft=class extends F{constructor(e,t){super("unknown command",e,t)}},O=class extends F{constructor(e,t=new Error().stack){super("unknown error",e,t)}},nt=class extends F{constructor(e,t){super("unable to capture screen",e,t)}};var R=class extends F{constructor(e,t){super("unsupported operation",e,t)}};var At=class extends F{constructor(e,t){super("unable to set cookie",e,t)}},be=class extends F{constructor(e,t){super("unable to set file input",e,t)}};var Ut=class extends F{constructor(e,t){super("invalid web extension",e,t)}},Lt=class extends F{constructor(e,t){super("no such web extension",e,t)}},Me=class extends F{constructor(e,t){super("no such network collector",e,t)}},me=class extends F{constructor(e,t){super("no such network data",e,t)}};var Mt=class{parseDisableSimulationParameters(e){return e}parseHandleRequestDevicePromptParams(e){return e}parseSimulateAdapterParameters(e){return e}parseSimulateAdvertisementParameters(e){return e}parseSimulateCharacteristicParameters(e){return e}parseSimulateCharacteristicResponseParameters(e){return e}parseSimulateDescriptorParameters(e){return e}parseSimulateDescriptorResponseParameters(e){return e}parseSimulateGattConnectionResponseParameters(e){return e}parseSimulateGattDisconnectionParameters(e){return e}parseSimulatePreconnectedPeripheralParameters(e){return e}parseSimulateServiceParameters(e){return e}parseCreateUserContextParameters(e){return e}parseRemoveUserContextParameters(e){return e}parseSetClientWindowStateParameters(e){return e}parseSetDownloadBehaviorParameters(e){return e}parseActivateParams(e){return e}parseCaptureScreenshotParams(e){return e}parseCloseParams(e){return e}parseCreateParams(e){return e}parseGetTreeParams(e){return e}parseHandleUserPromptParams(e){return e}parseLocateNodesParams(e){return e}parseNavigateParams(e){return e}parsePrintParams(e){return e}parseReloadParams(e){return e}parseSetBypassCspParams(e){return e}parseSetViewportParams(e){return e}parseStartScreencastParams(e){return e}parseStopScreencastParams(e){return e}parseTraverseHistoryParams(e){return e}parseGetSessionParams(e){return e}parseResolveRealmParams(e){return e}parseSendCommandParams(e){return e}parseSetClientHintsOverrideParams(e){return e}parseSetForcedColorsModeThemeOverrideParams(e){return e}parseSetGeolocationOverrideParams(e){return e}parseSetLocaleOverrideParams(e){return e}parseSetNetworkConditionsParams(e){return e}parseSetScreenOrientationOverrideParams(e){return e}parseSetScreenSettingsOverrideParams(e){return e}parseSetScriptingEnabledParams(e){return e}parseSetScrollbarTypeOverrideParams(e){return e}parseSetTimezoneOverrideParams(e){return e}parseSetTouchOverrideParams(e){return e}parseSetUserAgentOverrideParams(e){return e}parseAddPreloadScriptParams(e){return e}parseCallFunctionParams(e){return e}parseDisownParams(e){return e}parseEvaluateParams(e){return e}parseGetRealmsParams(e){return e}parseRemovePreloadScriptParams(e){return e}parsePerformActionsParams(e){return e}parseReleaseActionsParams(e){return e}parseSetFilesParams(e){return e}parseAddDataCollectorParams(e){return e}parseAddInterceptParams(e){return e}parseContinueRequestParams(e){return e}parseContinueResponseParams(e){return e}parseContinueWithAuthParams(e){return e}parseDisownDataParams(e){return e}parseFailRequestParams(e){return e}parseGetDataParams(e){return e}parseProvideResponseParams(e){return e}parseRemoveDataCollectorParams(e){return e}parseRemoveInterceptParams(e){return e}parseSetCacheBehaviorParams(e){return e}parseSetExtraHeadersParams(e){return e}parseSetPermissionsParams(e){return e}parseSubscribeParams(e){return e}parseUnsubscribeParams(e){return e}parseDeleteCookiesParams(e){return e}parseGetCookiesParams(e){return e}parseSetCookieParams(e){return e}parseInstallParams(e){return e}parseUninstallParams(e){return e}parseSetVirtualWalletBehaviorParams(e){return e}};var qt=class{#e;#t;#s;#r;constructor(e,t,s,r){this.#e=e,this.#t=t,this.#s=s,this.#r=r}close(){return setTimeout(()=>this.#e.sendCommand("Browser.close").catch(()=>{}),0),{}}async createUserContext(e){let t=e,s=this.#s.getGlobalConfig();if(t.acceptInsecureCerts!==void 0&&t.acceptInsecureCerts===!1&&s.acceptInsecureCerts===!0)throw new O(`Cannot set user context's "acceptInsecureCerts" to false, when a capability "acceptInsecureCerts" is set to true`);let r={};if(t.proxy){let o=no(t.proxy);o&&(r.proxyServer=o),t.proxy.noProxy&&(r.proxyBypassList=t.proxy.noProxy.join(","))}else{e["goog:proxyServer"]!==void 0&&(r.proxyServer=e["goog:proxyServer"]);let o=e["goog:proxyBypassList"]??void 0;o&&(r.proxyBypassList=o.join(","))}let i=await this.#e.sendCommand("Target.createBrowserContext",r);return await this.#a(s.downloadBehavior??null,i.browserContextId),this.#s.updateUserContextConfig(i.browserContextId,{acceptInsecureCerts:e.acceptInsecureCerts,userPromptHandler:e.unhandledPromptBehavior}),{userContext:i.browserContextId}}async removeUserContext(e){let t=e.userContext;if(t==="default")throw new x("`default` user context cannot be removed");try{await this.#e.sendCommand("Target.disposeBrowserContext",{browserContextId:t})}catch(s){throw s.message.startsWith("Failed to find context with id")?new G(s.message):s}return{}}async getUserContexts(){return{userContexts:await this.#r.getUserContexts()}}async#i(e){let t=await this.#e.sendCommand("Browser.getWindowForTarget",{targetId:e});return{active:!1,clientWindow:`${t.windowId}`,state:t.bounds.windowState??"normal",height:t.bounds.height??0,width:t.bounds.width??0,x:t.bounds.left??0,y:t.bounds.top??0}}async setClientWindowState(e){let{clientWindow:t}=e,s={windowState:e.state};e.state==="normal"&&(e.width!==void 0&&(s.width=e.width),e.height!==void 0&&(s.height=e.height),e.x!==void 0&&(s.left=e.x),e.y!==void 0&&(s.top=e.y));let r=Number.parseInt(t);if(isNaN(r))throw new x("no such client window");await this.#e.sendCommand("Browser.setWindowBounds",{windowId:r,bounds:s});let i=await this.#e.sendCommand("Browser.getWindowBounds",{windowId:r});return{active:!1,clientWindow:`${r}`,state:i.bounds.windowState??"normal",height:i.bounds.height??0,width:i.bounds.width??0,x:i.bounds.left??0,y:i.bounds.top??0}}async getClientWindows(){let e=this.#t.getTopLevelContexts().map(i=>i.cdpTarget.id),t=await Promise.all(e.map(async i=>await this.#i(i))),s=new Set,r=new Array;for(let i of t)s.has(i.clientWindow)||(s.add(i.clientWindow),r.push(i));return{clientWindows:r}}#o(e){if(e===null)return{behavior:"default"};if(e?.type==="denied")return{behavior:"deny"};if(e?.type==="allowed")return{behavior:"allow",downloadPath:e.destinationFolder};throw new O("Unexpected download behavior")}async#a(e,t){await this.#e.sendCommand("Browser.setDownloadBehavior",{...this.#o(e),browserContextId:t==="default"?void 0:t,eventsEnabled:!0})}async setDownloadBehavior(e){let t;return e.userContexts===void 0?t=(await this.#r.getUserContexts()).map(s=>s.userContext):t=Array.from(await this.#r.verifyUserContextIdList(e.userContexts)),e.userContexts===void 0?this.#s.updateGlobalConfig({downloadBehavior:e.downloadBehavior}):e.userContexts.map(s=>this.#s.updateUserContextConfig(s,{downloadBehavior:e.downloadBehavior})),await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(void 0,s).downloadBehavior??null;await this.#a(r,s)})),{}}};function no(n){if(!(n.proxyType==="direct"||n.proxyType==="system")){if(n.proxyType==="pac")throw new R("PAC proxy configuration is not supported per user context");if(n.proxyType==="autodetect")throw new R("Autodetect proxy is not supported per user context");if(n.proxyType==="manual"){let e=[];if(n.httpProxy!==void 0&&e.push(`http=${n.httpProxy}`),n.sslProxy!==void 0&&e.push(`https=${n.sslProxy}`),n.socksProxy!==void 0||n.socksVersion!==void 0){if(n.socksProxy===void 0)throw new x("'socksVersion' cannot be set without 'socksProxy'");if(n.socksVersion===void 0||typeof n.socksVersion!="number"||!Number.isInteger(n.socksVersion)||n.socksVersion<0||n.socksVersion>255)throw new x("'socksVersion' must be between 0 and 255");e.push(`socks=socks${n.socksVersion}://${n.socksProxy}`)}return e.length===0?void 0:e.join(";")}throw new O("Unknown proxy type")}}var jt=class{#e;#t;#s;#r;constructor(e,t,s,r){this.#e=e,this.#t=t,this.#s=s,this.#r=r}getSession(e){let t=e.context,s=this.#e.getContext(t).cdpTarget.cdpSessionId;return s===void 0?{}:{session:s}}resolveRealm(e){let t=e.realm,s=this.#t.getRealm({realmId:t});if(s===void 0)throw new O(`Could not find realm ${e.realm}`);return{executionContextId:s.executionContextId}}async sendCommand(e){return{result:await(e.session?this.#s.getCdpClient(e.session):this.#r).sendCommand(e.method,e.params),session:e.session}}};var $t=class{#e;#t;#s;#r;#i;constructor(e,t,s,r,i){this.#s=r,this.#i=s,this.#e=e,this.#t=t,this.#r=i,this.#r.addSubscribeHook(C.BrowsingContext.EventNames.ContextCreated,this.#a.bind(this))}getTree(e){return{contexts:(e.root===void 0?this.#t.getTopLevelContexts():[this.#t.getContext(e.root)]).map(s=>s.serializeToBidiValue(e.maxDepth??Number.MAX_VALUE))}}async create(e){let t,s="default";if(e.referenceContext!==void 0){if(t=this.#t.getContext(e.referenceContext),!t.isTopLevelContext())throw new x("referenceContext should be a top-level context");s=t.userContext}e.userContext!==void 0&&(s=e.userContext);let r=this.#t.getAllContexts().filter(c=>c.userContext===s),i=!1;switch(e.type){case"tab":i=!1;break;case"window":i=!0;break}r.length||(i=!0);let o;try{o=await this.#e.sendCommand("Target.createTarget",{url:"about:blank",newWindow:i,browserContextId:s==="default"?void 0:s,background:e.background===!0})}catch(c){throw c.message.startsWith("Failed to find browser context with id")||c.message==="browserContextId"?new G(`The context ${s} was not found`):c}let a=await this.#t.waitForContext(o.targetId);return await a.lifecycleLoaded(),{context:a.id}}navigate(e){return this.#t.getContext(e.context).navigate(e.url,e.wait??"none")}reload(e){return this.#t.getContext(e.context).reload(e.ignoreCache??!1,e.wait??"none")}async activate(e){let t=this.#t.getContext(e.context);if(!t.isTopLevelContext())throw new x("Activation is only supported on the top-level context");return await t.activate(),{}}async captureScreenshot(e){return await this.#t.getContext(e.context).captureScreenshot(e)}async print(e){return await this.#t.getContext(e.context).print(e)}async setViewport(e){if((e.viewport?.height??0)>1e7||(e.viewport?.width??0)>1e7)throw new R("Viewport dimension over 10000000 are not supported");let s={};e.devicePixelRatio!==void 0&&(s.devicePixelRatio=e.devicePixelRatio),e.viewport!==void 0&&(s.viewport=e.viewport);let r=await this.#o(e.context,e.userContexts);for(let i of e.userContexts??[])this.#s.updateUserContextConfig(i,s);return e.context!==void 0&&this.#s.updateBrowsingContextConfig(e.context,s),await Promise.all(r.map(async i=>{let o=this.#s.getActiveConfig(i.id,i.userContext);await i.setViewport(o.viewport??null,o.devicePixelRatio??null,o.screenOrientation??null)})),{}}async#o(e,t){if(e===void 0&&t===void 0)throw new x("Either userContexts or context must be provided");if(e!==void 0&&t!==void 0)throw new x("userContexts and context are mutually exclusive");if(e!==void 0){let r=this.#t.getContext(e);if(!r.isTopLevelContext())throw new x("Emulating viewport is only supported on the top-level context");return[r]}await this.#i.verifyUserContextIdList(t);let s=[];for(let r of t){let i=this.#t.getTopLevelContexts().filter(o=>o.userContext===r);s.push(...i)}return[...new Set(s).values()]}async traverseHistory(e){let t=this.#t.getContext(e.context);if(!t)throw new x(`No browsing context with id ${e.context}`);if(!t.isTopLevelContext())throw new x("Traversing history is only supported on the top-level context");return await t.traverseHistory(e.delta),{}}async handleUserPrompt(e){let t=this.#t.getContext(e.context);try{await t.handleUserPrompt(e.accept,e.userText)}catch(s){throw s.message?.includes("No dialog is showing")?new Nt("No dialog is showing"):s}return{}}async close(e){let t=this.#t.getContext(e.context);if(!t.isTopLevelContext())throw new x(`Non top-level browsing context ${t.id} cannot be closed.`);let s=t.cdpTarget.parentCdpClient;try{let r=new Promise(i=>{let o=a=>{a.targetId===e.context&&(s.off("Target.detachedFromTarget",o),i())};s.on("Target.detachedFromTarget",o)});try{e.promptUnload?await t.close():await s.sendCommand("Target.closeTarget",{targetId:e.context})}catch(i){if(!s.isCloseError(i))throw i}await r}catch(r){if(!(r.code===-32e3&&r.message==="Not attached to an active page"))throw r}return{}}async locateNodes(e){return await this.#t.getContext(e.context).locateNodes(e)}#a(e){return[this.#t.getContext(e),...this.#t.getContext(e).allChildren].forEach(r=>{this.#r.registerEvent({type:"event",method:C.BrowsingContext.EventNames.ContextCreated,params:r.serializeToBidiValue()},r.id)}),Promise.resolve()}};var Ht=class{#e;#t;#s;constructor(e,t,s){this.#e=t,this.#t=e,this.#s=s}async setGeolocationOverride(e){if("coordinates"in e&&"error"in e)throw new x("Coordinates and error cannot be set at the same time");let t=null;if("coordinates"in e){if((e.coordinates?.altitude??null)===null&&(e.coordinates?.altitudeAccuracy??null)!==null)throw new x("Geolocation altitudeAccuracy can be set only with altitude");t=e.coordinates}else if("error"in e){if(e.error.type!=="positionUnavailable")throw new x(`Unknown geolocation error ${e.error.type}`);t=e.error}else throw new x("Coordinates or error should be set");let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{geolocation:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{geolocation:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setGeolocationOverride(i.geolocation??null)})),{}}async setLocaleOverride(e){let t=e.locale??null;if(t!==null&&!oo(t))throw new x(`Invalid locale "${t}"`);let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{locale:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{locale:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await Promise.all([r.setLocaleOverride(i.locale??null),r.setUserAgentAndAcceptLanguage(i.userAgent,i.locale,i.clientHints)])})),{}}async setScriptingEnabled(e){let t=e.enabled,s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{scriptingEnabled:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{scriptingEnabled:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setScriptingEnabled(i.scriptingEnabled??null)})),{}}async setScrollbarTypeOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{scrollbarType:e.scrollbarType});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{scrollbarType:e.scrollbarType});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setScrollbarTypeOverride(r.scrollbarType??null)})),{}}async setScreenOrientationOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{screenOrientation:e.screenOrientation});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{screenOrientation:e.screenOrientation});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setViewport(r.viewport??null,r.devicePixelRatio??null,r.screenOrientation??null)})),{}}async setScreenSettingsOverride(e){let t=await this.#r(e.contexts,e.userContexts);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{screenArea:e.screenArea});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{screenArea:e.screenArea});return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setViewport(r.viewport??null,r.devicePixelRatio??null,r.screenOrientation??null)})),{}}async#r(e,t,s=!1){if(e===void 0&&t===void 0){if(s)return this.#t.getTopLevelContexts();throw new x("Either user contexts or browsing contexts must be provided")}if(e!==void 0&&t!==void 0)throw new x("User contexts and browsing contexts are mutually exclusive");let r=[];if(e===void 0){if(t.length===0)throw new x("user context should be provided");await this.#e.verifyUserContextIdList(t);for(let i of t){let o=this.#t.getTopLevelContexts().filter(a=>a.userContext===i);r.push(...o)}}else{if(e.length===0)throw new x("browsing context should be provided");for(let i of e){let o=this.#t.getContext(i);if(!o.isTopLevelContext())throw new x("The command is only supported on the top-level context");r.push(o)}}return[...new Set(r).values()]}async setTimezoneOverride(e){let t=e.timezone??null;if(t!==null&&!ao(t))throw new x(`Invalid timezone "${t}"`);t!==null&&co(t)&&(t=`GMT${t}`);let s=await this.#r(e.contexts,e.userContexts);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{timezone:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{timezone:t});return await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setTimezoneOverride(i.timezone??null)})),{}}async setTouchOverride(e){let t=e.maxTouchPoints,s=await this.#r(e.contexts,e.userContexts,!0);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{maxTouchPoints:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{maxTouchPoints:t});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({maxTouchPoints:t}),await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setTouchOverride(i.maxTouchPoints??null)})),{}}async setUserAgentOverrideParams(e){if(e.userAgent==="")throw new R("empty user agent string is not supported");let t=await this.#r(e.contexts,e.userContexts,!0);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{userAgent:e.userAgent});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{userAgent:e.userAgent});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({userAgent:e.userAgent}),await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setUserAgentAndAcceptLanguage(r.userAgent,r.locale,r.clientHints)})),{}}async setClientHintsOverride(e){let t=e.clientHints??null,s=await this.#r(e.contexts,e.userContexts,!0);for(let r of e.contexts??[])this.#s.updateBrowsingContextConfig(r,{clientHints:t});for(let r of e.userContexts??[])this.#s.updateUserContextConfig(r,{clientHints:t});return e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({clientHints:t}),await Promise.all(s.map(async r=>{let i=this.#s.getActiveConfig(r.id,r.userContext);await r.setUserAgentAndAcceptLanguage(i.userAgent,i.locale,i.clientHints)})),{}}async setNetworkConditions(e){let t=await this.#r(e.contexts,e.userContexts,!0);for(let s of e.contexts??[])this.#s.updateBrowsingContextConfig(s,{emulatedNetworkConditions:e.networkConditions});for(let s of e.userContexts??[])this.#s.updateUserContextConfig(s,{emulatedNetworkConditions:e.networkConditions});if(e.contexts===void 0&&e.userContexts===void 0&&this.#s.updateGlobalConfig({emulatedNetworkConditions:e.networkConditions}),e.networkConditions!==null&&e.networkConditions.type!=="offline")throw new R(`Unsupported network conditions ${e.networkConditions.type}`);return await Promise.all(t.map(async s=>{let r=this.#s.getActiveConfig(s.id,s.userContext);await s.setEmulatedNetworkConditions(r.emulatedNetworkConditions??null)})),{}}};function oo(n){try{return new Intl.Locale(n),!0}catch(e){if(e instanceof RangeError)return!1;throw e}}function ao(n){try{return Intl.DateTimeFormat(void 0,{timeZone:n}),!0}catch(e){if(e instanceof RangeError)return!1;throw e}}function co(n){return/^[+-](?:2[0-3]|[01]\d)(?::[0-5]\d)?$/.test(n)}function _(n,e){if(!n)throw new Error(e??"Internal assertion failed.")}function fr(n){return zt(n)&&n.length>1}function zt(n){return[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].length===1}var Wt=class{type="none"},ot=class{type="key";pressed=new Set;#e=0;get modifiers(){return this.#e}get alt(){return(this.#e&1)===1}set alt(e){this.#t(e,1)}get ctrl(){return(this.#e&2)===2}set ctrl(e){this.#t(e,2)}get meta(){return(this.#e&4)===4}set meta(e){this.#t(e,4)}get shift(){return(this.#e&8)===8}set shift(e){this.#t(e,8)}#t(e,t){e?this.#e|=t:this.#e&=~t}},Kt=class n{static#e=500;static#t=2;count=0;#s;#r;#i;constructor(e,t,s){this.#s=e,this.#r=t,this.#i=s}compare(e){return e.#i-this.#i>n.#e||Math.abs(e.#s-this.#s)>n.#t||Math.abs(e.#r-this.#r)>n.#t}},Vt=class{type="pointer";subtype;pointerId;pressed=new Set;x=0;y=0;radiusX;radiusY;force;constructor(e,t){this.pointerId=e,this.subtype=t}get buttons(){let e=0;for(let t of this.pressed)switch(t){case 0:e|=1;break;case 1:e|=4;break;case 2:e|=2;break;case 3:e|=8;break;case 4:e|=16;break}return e}#e=new Map;setClickCount(e,t){let s=this.#e.get(e);return(!s||s.compare(t))&&(s=t),++s.count,this.#e.set(e,s),s.count}getClickCount(e){return this.#e.get(e)?.count??0}resetClickCount(){this.#e=new Map}},Gt=class{type="wheel"};function mr(n){switch(n){case"\uE000":return"Unidentified";case"\uE001":return"Cancel";case"\uE002":return"Help";case"\uE003":return"Backspace";case"\uE004":return"Tab";case"\uE005":return"Clear";case"\uE006":case"\uE007":return"Enter";case"\uE008":return"Shift";case"\uE009":return"Control";case"\uE00A":return"Alt";case"\uE00B":return"Pause";case"\uE00C":return"Escape";case"\uE00D":return" ";case"\uE00E":return"PageUp";case"\uE00F":return"PageDown";case"\uE010":return"End";case"\uE011":return"Home";case"\uE012":return"ArrowLeft";case"\uE013":return"ArrowUp";case"\uE014":return"ArrowRight";case"\uE015":return"ArrowDown";case"\uE016":return"Insert";case"\uE017":return"Delete";case"\uE018":return";";case"\uE019":return"=";case"\uE01A":return"0";case"\uE01B":return"1";case"\uE01C":return"2";case"\uE01D":return"3";case"\uE01E":return"4";case"\uE01F":return"5";case"\uE020":return"6";case"\uE021":return"7";case"\uE022":return"8";case"\uE023":return"9";case"\uE024":return"*";case"\uE025":return"+";case"\uE026":return",";case"\uE027":return"-";case"\uE028":return".";case"\uE029":return"/";case"\uE031":return"F1";case"\uE032":return"F2";case"\uE033":return"F3";case"\uE034":return"F4";case"\uE035":return"F5";case"\uE036":return"F6";case"\uE037":return"F7";case"\uE038":return"F8";case"\uE039":return"F9";case"\uE03A":return"F10";case"\uE03B":return"F11";case"\uE03C":return"F12";case"\uE03D":return"Meta";case"\uE040":return"ZenkakuHankaku";case"\uE050":return"Shift";case"\uE051":return"Control";case"\uE052":return"Alt";case"\uE053":return"Meta";case"\uE054":return"PageUp";case"\uE055":return"PageDown";case"\uE056":return"End";case"\uE057":return"Home";case"\uE058":return"ArrowLeft";case"\uE059":return"ArrowUp";case"\uE05A":return"ArrowRight";case"\uE05B":return"ArrowDown";case"\uE05C":return"Insert";case"\uE05D":return"Delete";default:return n}}function gr(n){switch(n){case"`":case"~":return"Backquote";case"\\":case"|":return"Backslash";case"\uE003":return"Backspace";case"[":case"{":return"BracketLeft";case"]":case"}":return"BracketRight";case",":case"<":return"Comma";case"0":case")":return"Digit0";case"1":case"!":return"Digit1";case"2":case"@":return"Digit2";case"3":case"#":return"Digit3";case"4":case"$":return"Digit4";case"5":case"%":return"Digit5";case"6":case"^":return"Digit6";case"7":case"&":return"Digit7";case"8":case"*":return"Digit8";case"9":case"(":return"Digit9";case"=":case"+":return"Equal";case">":return"IntlBackslash";case"a":case"A":return"KeyA";case"b":case"B":return"KeyB";case"c":case"C":return"KeyC";case"d":case"D":return"KeyD";case"e":case"E":return"KeyE";case"f":case"F":return"KeyF";case"g":case"G":return"KeyG";case"h":case"H":return"KeyH";case"i":case"I":return"KeyI";case"j":case"J":return"KeyJ";case"k":case"K":return"KeyK";case"l":case"L":return"KeyL";case"m":case"M":return"KeyM";case"n":case"N":return"KeyN";case"o":case"O":return"KeyO";case"p":case"P":return"KeyP";case"q":case"Q":return"KeyQ";case"r":case"R":return"KeyR";case"s":case"S":return"KeyS";case"t":case"T":return"KeyT";case"u":case"U":return"KeyU";case"v":case"V":return"KeyV";case"w":case"W":return"KeyW";case"x":case"X":return"KeyX";case"y":case"Y":return"KeyY";case"z":case"Z":return"KeyZ";case"-":case"_":return"Minus";case".":return"Period";case"'":case'"':return"Quote";case";":case":":return"Semicolon";case"/":case"?":return"Slash";case"\uE00A":return"AltLeft";case"\uE052":return"AltRight";case"\uE009":return"ControlLeft";case"\uE051":return"ControlRight";case"\uE006":return"Enter";case"\uE00B":return"Pause";case"\uE03D":return"MetaLeft";case"\uE053":return"MetaRight";case"\uE008":return"ShiftLeft";case"\uE050":return"ShiftRight";case" ":case"\uE00D":return"Space";case"\uE004":return"Tab";case"\uE017":return"Delete";case"\uE010":return"End";case"\uE002":return"Help";case"\uE011":return"Home";case"\uE016":return"Insert";case"\uE00F":return"PageDown";case"\uE00E":return"PageUp";case"\uE015":return"ArrowDown";case"\uE012":return"ArrowLeft";case"\uE014":return"ArrowRight";case"\uE013":return"ArrowUp";case"\uE00C":return"Escape";case"\uE031":return"F1";case"\uE032":return"F2";case"\uE033":return"F3";case"\uE034":return"F4";case"\uE035":return"F5";case"\uE036":return"F6";case"\uE037":return"F7";case"\uE038":return"F8";case"\uE039":return"F9";case"\uE03A":return"F10";case"\uE03B":return"F11";case"\uE03C":return"F12";case"\uE019":return"NumpadEqual";case"\uE01A":case"\uE05C":return"Numpad0";case"\uE01B":case"\uE056":return"Numpad1";case"\uE01C":case"\uE05B":return"Numpad2";case"\uE01D":case"\uE055":return"Numpad3";case"\uE01E":case"\uE058":return"Numpad4";case"\uE01F":return"Numpad5";case"\uE020":case"\uE05A":return"Numpad6";case"\uE021":case"\uE057":return"Numpad7";case"\uE022":case"\uE059":return"Numpad8";case"\uE023":case"\uE054":return"Numpad9";case"\uE025":return"NumpadAdd";case"\uE026":return"NumpadComma";case"\uE028":case"\uE05D":return"NumpadDecimal";case"\uE029":return"NumpadDivide";case"\uE007":return"NumpadEnter";case"\uE024":return"NumpadMultiply";case"\uE027":return"NumpadSubtract";default:return}}function wr(n){switch(n){case"\uE007":case"\uE008":case"\uE009":case"\uE00A":case"\uE03D":return 1;case"\uE019":case"\uE01A":case"\uE01B":case"\uE01C":case"\uE01D":case"\uE01E":case"\uE01F":case"\uE020":case"\uE021":case"\uE022":case"\uE023":case"\uE024":case"\uE025":case"\uE026":case"\uE027":case"\uE028":case"\uE029":case"\uE054":case"\uE055":case"\uE056":case"\uE057":case"\uE058":case"\uE059":case"\uE05A":case"\uE05B":case"\uE05C":case"\uE05D":return 3;case"\uE050":case"\uE051":case"\uE052":case"\uE053":return 2;default:return 0}}var yr={0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,Abort:3,Help:6,Backspace:8,Tab:9,Numpad5:12,NumpadEnter:13,Enter:13,"\\r":13,"\\n":13,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,Pause:19,CapsLock:20,Escape:27,Convert:28,NonConvert:29,Space:32,Numpad9:33,PageUp:33,Numpad3:34,PageDown:34,End:35,Numpad1:35,Home:36,Numpad7:36,ArrowLeft:37,Numpad4:37,Numpad8:38,ArrowUp:38,ArrowRight:39,Numpad6:39,Numpad2:40,ArrowDown:40,Select:41,Open:43,PrintScreen:44,Insert:45,Numpad0:45,Delete:46,NumpadDecimal:46,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,KeyA:65,KeyB:66,KeyC:67,KeyD:68,KeyE:69,KeyF:70,KeyG:71,KeyH:72,KeyI:73,KeyJ:74,KeyK:75,KeyL:76,KeyM:77,KeyN:78,KeyO:79,KeyP:80,KeyQ:81,KeyR:82,KeyS:83,KeyT:84,KeyU:85,KeyV:86,KeyW:87,KeyX:88,KeyY:89,KeyZ:90,MetaLeft:91,MetaRight:92,ContextMenu:93,NumpadMultiply:106,NumpadAdd:107,NumpadSubtract:109,NumpadDivide:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,F16:127,F17:128,F18:129,F19:130,F20:131,F21:132,F22:133,F23:134,F24:135,NumLock:144,ScrollLock:145,AudioVolumeMute:173,AudioVolumeDown:174,AudioVolumeUp:175,MediaTrackNext:176,MediaTrackPrevious:177,MediaStop:178,MediaPlayPause:179,Semicolon:186,Equal:187,NumpadEqual:187,Comma:188,Minus:189,Period:190,Slash:191,Backquote:192,BracketLeft:219,Backslash:220,BracketRight:221,Quote:222,AltGraph:225,Props:247,Cancel:3,Clear:12,Shift:16,Control:17,Alt:18,Accept:30,ModeChange:31," ":32,Print:42,Execute:43,"\\u0000":46,a:65,b:66,c:67,d:68,e:69,f:70,g:71,h:72,i:73,j:74,k:75,l:76,m:77,n:78,o:79,p:80,q:81,r:82,s:83,t:84,u:85,v:86,w:87,x:88,y:89,z:90,Meta:91,"*":106,"+":107,"-":109,"/":111,";":186,"=":187,",":188,".":190,"`":192,"[":219,"\\\\":220,"]":221,"'":222,Attn:246,CrSel:247,ExSel:248,EraseEof:249,Play:250,ZoomOut:251,")":48,"!":49,"@":50,"#":51,$:52,"%":53,"^":54,"&":55,"(":57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,":":186,"<":188,_:189,">":190,"?":191,"~":192,"{":219,"|":220,"}":221,'"':222,Camera:44,EndCall:95,VolumeDown:182,VolumeUp:183};var uo=(n=>{let e=n.getClientRects()[0],t=Math.max(0,Math.min(e.x,e.x+e.width)),s=Math.min(window.innerWidth,Math.max(e.x,e.x+e.width)),r=Math.max(0,Math.min(e.y,e.y+e.height)),i=Math.min(window.innerHeight,Math.max(e.y,e.y+e.height));return[t+(s-t>>1),r+(i-r>>1)]}).toString(),lo=(()=>navigator.platform.toLowerCase().includes("mac")).toString();async function ho(n,e){let s=await(await n.getOrCreateHiddenSandbox()).callFunction(uo,!1,{type:"undefined"},[e]);if(s.type==="exception")throw new ce(`Origin element ${e.sharedId} was not found`);_(s.result.type==="array"),_(s.result.value?.[0]?.type==="number"),_(s.result.value?.[1]?.type==="number");let{result:{value:[{value:r},{value:i}]}}=s;return{x:r,y:i}}var Ce=class{static isMacOS=async e=>{let s=await(await e.getOrCreateHiddenSandbox()).callFunction(lo,!1);return _(s.type!=="exception"),_(s.result.type==="boolean"),s.result.value};#e;#t=0;#s=0;#r;#i;#o;constructor(e,t,s,r){this.#e=t,this.#r=e,this.#i=s,this.#o=r}get#a(){return this.#e.getContext(this.#i)}async dispatchActions(e){await this.#r.queue.run(async()=>{for(let t of e)await this.dispatchTickActions(t)})}async dispatchTickActions(e){this.#t=performance.now(),this.#s=0;for(let{action:s}of e)"duration"in s&&s.duration!==void 0&&(this.#s=Math.max(this.#s,s.duration));let t=[new Promise(s=>setTimeout(s,this.#s))];for(let s of e)t.push(this.#d(s));await Promise.all(t)}async#d({id:e,action:t}){let s=this.#r.get(e),r=this.#r.getGlobalKeyState();switch(t.type){case"keyDown":{await this.#u(s,t),this.#r.cancelList.push({id:e,action:{...t,type:"keyUp"}});break}case"keyUp":{await this.#m(s,t);break}case"pause":break;case"pointerDown":{await this.#n(s,r,t),this.#r.cancelList.push({id:e,action:{...t,type:"pointerUp"}});break}case"pointerMove":{await this.#h(s,r,t);break}case"pointerUp":{await this.#l(s,r,t);break}case"scroll":{await this.#p(s,r,t);break}}}async#n(e,t,s){let{button:r}=s;if(e.pressed.has(r))return;e.pressed.add(r);let{x:i,y:o,subtype:a}=e,{width:c,height:d,pressure:u,twist:l,tangentialPressure:y}=s,{tiltX:f,tiltY:h}=dn(s),{modifiers:p}=t,{radiusX:m,radiusY:v}=un(c??1,d??1);switch(a){case"mouse":case"pen":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mousePressed",x:i,y:o,modifiers:p,button:Xt(r),buttons:e.buttons,clickCount:e.setClickCount(r,new Kt(i,o,performance.now())),pointerType:a,tangentialPressure:y,tiltX:f,tiltY:h,twist:l,force:u});break;case"touch":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[{x:i,y:o,radiusX:m,radiusY:v,tangentialPressure:y,tiltX:f,tiltY:h,twist:l,force:u,id:e.pointerId}],modifiers:p});break}e.radiusX=m,e.radiusY=v,e.force=u}#l(e,t,s){let{button:r}=s;if(!e.pressed.has(r))return;e.pressed.delete(r);let{x:i,y:o,force:a,radiusX:c,radiusY:d,subtype:u}=e,{modifiers:l}=t;switch(u){case"mouse":case"pen":return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseReleased",x:i,y:o,modifiers:l,button:Xt(r),buttons:e.buttons,clickCount:e.getClickCount(r),pointerType:u});case"touch":return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[{x:i,y:o,id:e.pointerId,force:a,radiusX:c,radiusY:d}],modifiers:l})}}async#h(e,t,s){let{x:r,y:i,subtype:o}=e,{width:a,height:c,pressure:d,twist:u,tangentialPressure:l,x:y,y:f,origin:h="viewport",duration:p=this.#s}=s,{tiltX:m,tiltY:v}=dn(s),{radiusX:I,radiusY:B}=un(a??1,c??1),{targetX:U,targetY:he}=await this.#f(h,y,f,r,i);if(U<0||he<0)throw new st(`Cannot move beyond viewport (x: ${U}, y: ${he})`);let Ie;do{let De=p>0?(performance.now()-this.#t)/p:1;Ie=De>=1;let Q,ee;if(Ie?(Q=U,ee=he):(Q=Math.round(De*(U-r)+r),ee=Math.round(De*(he-i)+i)),e.x!==Q||e.y!==ee){let{modifiers:Te}=t;switch(o){case"mouse":await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:Q,y:ee,modifiers:Te,clickCount:0,button:Xt(e.pressed.values().next().value??5),buttons:e.buttons,pointerType:o,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d});break;case"pen":e.pressed.size!==0&&await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:Q,y:ee,modifiers:Te,clickCount:0,button:Xt(e.pressed.values().next().value??5),buttons:e.buttons,pointerType:o,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d??.5});break;case"touch":e.pressed.size!==0&&await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[{x:Q,y:ee,radiusX:I,radiusY:B,tangentialPressure:l,tiltX:m,tiltY:v,twist:u,force:d,id:e.pointerId}],modifiers:Te});break}e.x=Q,e.y=ee,e.radiusX=I,e.radiusY=B,e.force=d}}while(!Ie)}async#c(){if(this.#a.id===this.#a.cdpTarget.id)return{x:0,y:0};let{backendNodeId:e}=await this.#a.cdpTarget.cdpClient.sendCommand("DOM.getFrameOwner",{frameId:this.#a.id}),{model:t}=await this.#a.cdpTarget.cdpClient.sendCommand("DOM.getBoxModel",{backendNodeId:e});return{x:t.content[0],y:t.content[1]}}async#f(e,t,s,r,i){let o,a,c=await this.#c();switch(e){case"viewport":o=t+c.x,a=s+c.y;break;case"pointer":o=r+t+c.x,a=i+s+c.y;break;default:{let{x:d,y:u}=await ho(this.#a,e.element);o=d+t+c.x,a=u+s+c.y;break}}return{targetX:o,targetY:a}}async#p(e,t,s){let{deltaX:r,deltaY:i,x:o,y:a,origin:c="viewport",duration:d=this.#s}=s;if(c==="pointer")throw new x('"pointer" origin is invalid for scrolling.');let{targetX:u,targetY:l}=await this.#f(c,o,a,0,0);if(u<0||l<0)throw new st(`Cannot move beyond viewport (x: ${u}, y: ${l})`);let y=0,f=0,h;do{let p=d>0?(performance.now()-this.#t)/d:1;h=p>=1;let m,v;if(h?(m=r-y,v=i-f):(m=Math.round(p*r-y),v=Math.round(p*i-f)),m!==0||v!==0){let{modifiers:I}=t;await this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchMouseEvent",{type:"mouseWheel",deltaX:m,deltaY:v,x:u,y:l,modifiers:I}),y+=m,f+=v}}while(!h)}async#u(e,t){let s=t.value;if(!zt(s))throw new x(`Invalid key value: ${s}`);let r=fr(s),i=mr(s),o=e.pressed.has(i),a=gr(s),c=wr(s);switch(i){case"Alt":e.alt=!0;break;case"Shift":e.shift=!0;break;case"Control":e.ctrl=!0;break;case"Meta":e.meta=!0;break}e.pressed.add(i);let{modifiers:d}=e,u=an(i,e,r),l=cn(a??"",e)??u,y;if(this.#o&&e.meta)switch(a){case"KeyA":y="SelectAll";break;case"KeyC":y="Copy";break;case"KeyV":y=e.shift?"PasteAndMatchStyle":"Paste";break;case"KeyX":y="Cut";break;case"KeyZ":y=e.shift?"Redo":"Undo";break;default:}let f=[this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchKeyEvent",{type:l?"keyDown":"rawKeyDown",windowsVirtualKeyCode:yr[i],key:i,code:a,text:l,unmodifiedText:u,autoRepeat:o,isSystemKey:e.alt||void 0,location:c<3?c:void 0,isKeypad:c===3,modifiers:d,commands:y?[y]:void 0})];i==="Escape"&&!e.alt&&(this.#o&&!e.ctrl&&!e.meta||!this.#o)&&f.push(this.#a.cdpTarget.cdpClient.sendCommand("Input.cancelDragging")),await Promise.all(f)}#m(e,t){let s=t.value;if(!zt(s))throw new x(`Invalid key value: ${s}`);let r=fr(s),i=mr(s);if(!e.pressed.has(i))return;let o=gr(s),a=wr(s);switch(i){case"Alt":e.alt=!1;break;case"Shift":e.shift=!1;break;case"Control":e.ctrl=!1;break;case"Meta":e.meta=!1;break}e.pressed.delete(i);let{modifiers:c}=e,d=an(i,e,r),u=cn(o??"",e)??d;return this.#a.cdpTarget.cdpClient.sendCommand("Input.dispatchKeyEvent",{type:"keyUp",windowsVirtualKeyCode:yr[i],key:i,code:o,text:u,unmodifiedText:d,location:a<3?a:void 0,isSystemKey:e.alt||void 0,isKeypad:a===3,modifiers:c})}},an=(n,e,t)=>t?n:n==="Enter"?"\r":[...n].length===1?e.shift?n.toLocaleUpperCase("en-US"):n:void 0,cn=(n,e)=>{if(e.ctrl){switch(n){case"Digit2":if(e.shift)return"\0";break;case"KeyA":return"";case"KeyB":return"";case"KeyC":return"";case"KeyD":return"";case"KeyE":return"";case"KeyF":return"";case"KeyG":return"\x07";case"KeyH":return"\b";case"KeyI":return" ";case"KeyJ":return`
3
3
  `;case"KeyK":return"\v";case"KeyL":return"\f";case"KeyM":return"\r";case"KeyN":return"";case"KeyO":return"";case"KeyP":return"";case"KeyQ":return"";case"KeyR":return"";case"KeyS":return"";case"KeyT":return"";case"KeyU":return"";case"KeyV":return"";case"KeyW":return"";case"KeyX":return"";case"KeyY":return"";case"KeyZ":return"";case"BracketLeft":return"\x1B";case"Backslash":return"";case"BracketRight":return"";case"Digit6":if(e.shift)return"";break;case"Minus":return""}return""}if(e.alt)return""};function Xt(n){switch(n){case 0:return"left";case 1:return"middle";case 2:return"right";case 3:return"back";case 4:return"forward";default:return"none"}}function dn(n){let e=n.altitudeAngle??Math.PI/2,t=n.azimuthAngle??0,s=0,r=0;if(e===0&&((t===0||t===2*Math.PI)&&(s=Math.PI/2),t===Math.PI/2&&(r=Math.PI/2),t===Math.PI&&(s=-Math.PI/2),t===3*Math.PI/2&&(r=-Math.PI/2),t>0&&t<Math.PI/2&&(s=Math.PI/2,r=Math.PI/2),t>Math.PI/2&&t<Math.PI&&(s=-Math.PI/2,r=Math.PI/2),t>Math.PI&&t<3*Math.PI/2&&(s=-Math.PI/2,r=-Math.PI/2),t>3*Math.PI/2&&t<2*Math.PI&&(s=Math.PI/2,r=-Math.PI/2)),e!==0){let o=Math.tan(e);s=Math.atan(Math.cos(t)/o),r=Math.atan(Math.sin(t)/o)}let i=180/Math.PI;return{tiltX:Math.round(s*i),tiltY:Math.round(r*i)}}function un(n,e){return{radiusX:n?n/2:.5,radiusY:e?e/2:.5}}var Jt=class{#e=!1;#t=[];acquire(){let e={resolved:!1};return this.#e?new Promise(t=>{this.#t.push(()=>t(this.#s.bind(this,e)))}):(this.#e=!0,Promise.resolve(this.#s.bind(this,e)))}#s(e){if(e.resolved)throw new Error("Cannot release more than once.");e.resolved=!0;let t=this.#t.shift();if(!t){this.#e=!1;return}t()}async run(e){let t=await this.acquire();try{return await e()}finally{t()}}};var Yt=class{cancelList=[];#e=new Map;#t=new Jt;getOrCreate(e,t,s){let r=this.#e.get(e);if(!r){switch(t){case"none":r=new Wt;break;case"key":r=new ot;break;case"pointer":{let i=s==="mouse"?0:2,o=new Set;for(let[,a]of this.#e)a.type==="pointer"&&o.add(a.pointerId);for(;o.has(i);)++i;r=new Vt(i,s);break}case"wheel":r=new Gt;break;default:throw new x(`Expected "none", "key", "pointer", or "wheel". Found unknown source type ${t}.`)}return this.#e.set(e,r),r}if(r.type!==t)throw new x(`Input source type of ${e} is ${r.type}, but received ${t}.`);return r}get(e){let t=this.#e.get(e);if(!t)throw new O("Internal error.");return t}getGlobalKeyState(){let e=new ot;for(let[,t]of this.#e)if(t.type==="key"){for(let s of t.pressed)e.pressed.add(s);e.alt||=t.alt,e.ctrl||=t.ctrl,e.meta||=t.meta,e.shift||=t.shift}return e}get queue(){return this.#t}};var Zt=class extends WeakMap{get(e){return _(e.isTopLevelContext()),this.has(e)||this.set(e,new Yt),super.get(e)}};var Qt=class{#e;#t=new Zt;constructor(e){this.#e=e}async performActions(e){let t=this.#e.getContext(e.context),s=this.#t.get(t.top),r=this.#s(e,s);return await new Ce(s,this.#e,e.context,await Ce.isMacOS(t).catch(()=>!1)).dispatchActions(r),{}}async releaseActions(e){let t=this.#e.getContext(e.context),s=t.top,r=this.#t.get(s);return await new Ce(r,this.#e,e.context,await Ce.isMacOS(t).catch(()=>!1)).dispatchTickActions(r.cancelList.reverse()),this.#t.delete(s),{}}async setFiles(e){let s=await this.#e.getContext(e.context).getOrCreateHiddenSandbox(),r;try{r=await s.callFunction(String(function(c){if(!(this instanceof HTMLInputElement))return this instanceof Element?1:0;if(this.type!=="file")return 2;if(this.disabled)return 3;if(c>1&&!this.multiple)return 4}),!1,e.element,[{type:"number",value:e.files.length}])}catch{throw new Y(`Could not find element ${e.element.sharedId}`)}if(_(r.type==="success"),r.result.type==="number")switch(r.result.value){case 0:throw new ce(`Could not find element ${e.element.sharedId}`);case 1:throw new be(`Element ${e.element.sharedId} is not a input`);case 2:throw new be(`Input element ${e.element.sharedId} is not a file type`);case 3:throw new be(`Input element ${e.element.sharedId} is disabled`);case 4:throw new be("Cannot set multiple files on a non-multiple input element")}if(e.files.length===0)return await s.callFunction(String(function(){if(this.files?.length===0){this.dispatchEvent(new Event("cancel",{bubbles:!0}));return}this.files=new DataTransfer().files,this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0}))}),!1,e.element),{};let i=[];for(let a=0;a<e.files.length;++a){let c=await s.callFunction(String(function(y){return this.files?.item(y)}),!1,e.element,[{type:"number",value:0}],"root");if(_(c.type==="success"),c.result.type!=="object")break;let{handle:d}=c.result;_(d!==void 0);let{path:u}=await s.cdpClient.sendCommand("DOM.getFileInfo",{objectId:d});i.push(u),s.disown(d).catch(void 0)}i.sort();let o=[...e.files].sort();if(i.length!==e.files.length||o.some((a,c)=>i[c]!==a)){let{objectId:a}=await s.deserializeForCdp(e.element);_(a!==void 0),await s.cdpClient.sendCommand("DOM.setFileInputFiles",{files:e.files,objectId:a})}else await s.callFunction(String(function(){this.dispatchEvent(new Event("cancel",{bubbles:!0}))}),!1,e.element);return{}}#s(e,t){let s=[];for(let r of e.actions){switch(r.type){case"pointer":{r.parameters??={pointerType:"mouse"},r.parameters.pointerType??="mouse";let o=t.getOrCreate(r.id,"pointer",r.parameters.pointerType);if(o.subtype!==r.parameters.pointerType)throw new x(`Expected input source ${r.id} to be ${o.subtype}; got ${r.parameters.pointerType}.`);o.resetClickCount();break}default:t.getOrCreate(r.id,r.type)}let i=r.actions.map(o=>({id:r.id,action:o}));for(let o=0;o<i.length;o++)s.length===o&&s.push([]),s[o].push(i[o])}return s}};function ln(n){return"atob"in globalThis?globalThis.atob(n):Buffer.from(n,"base64").toString("ascii")}function vr(n){let e=n.reduce((t,s)=>`${t}${s.name}: ${s.value.value}\r
4
4
  `,"");return new TextEncoder().encode(e).length}function hn(n){return po(new TextEncoder().encode(n))}function po(n){let t=[];for(let r=0;r<n.length;r+=65534){let i=n.subarray(r,r+65534);t.push(String.fromCodePoint.apply(null,i))}let s=t.join("");return btoa(s)}function es(n){return n?Object.entries(n).map(([e,t])=>({name:e,value:{type:"string",value:t}})):[]}function ts(n){if(n!==void 0)return n.map(({name:e,value:t})=>({name:e,value:t.value}))}function pn(n){return n===void 0?void 0:{name:"Cookie",value:{type:"string",value:n.reduce((t,s,r)=>{r>0&&(t+=";");let i=s.value.type==="base64"?btoa(s.value.value):s.value.value;return t+=`${s.name}=${i}`,t},"")}}}function fn(n){switch(n){case"default":return"Default";case"cancel":return"CancelAuth";case"provideCredentials":return"ProvideCredentials"}}function at(n){let e={name:n.name,value:{type:"string",value:n.value},domain:n.domain,path:n.path,size:n.size,httpOnly:n.httpOnly,secure:n.secure,sameSite:n.sameSite===void 0?"none":fo(n.sameSite),...n.expires>=0?{expiry:Math.round(n.expires)}:void 0};return e["goog:session"]=n.session,e["goog:priority"]=n.priority,e["goog:sourceScheme"]=n.sourceScheme,e["goog:sourcePort"]=n.sourcePort,n.partitionKey!==void 0&&(e["goog:partitionKey"]=n.partitionKey),n.partitionKeyOpaque!==void 0&&(e["goog:partitionKeyOpaque"]=n.partitionKeyOpaque),e}function ss(n){return n.type==="base64"?ln(n.value):n.value}function mn(n,e){let t=ss(n.cookie.value),s={name:n.cookie.name,value:t,domain:n.cookie.domain,path:n.cookie.path??"/",secure:n.cookie.secure??!1,httpOnly:n.cookie.httpOnly??!1,...e.sourceOrigin!==void 0&&{partitionKey:{hasCrossSiteAncestor:!1,topLevelSite:e.sourceOrigin}},...n.cookie.expiry!==void 0&&{expires:n.cookie.expiry},...n.cookie.sameSite!==void 0&&{sameSite:mo(n.cookie.sameSite)}};return n.cookie["goog:url"]!==void 0&&(s.url=n.cookie["goog:url"]),n.cookie["goog:priority"]!==void 0&&(s.priority=n.cookie["goog:priority"]),n.cookie["goog:sourceScheme"]!==void 0&&(s.sourceScheme=n.cookie["goog:sourceScheme"]),n.cookie["goog:sourcePort"]!==void 0&&(s.sourcePort=n.cookie["goog:sourcePort"]),s}function fo(n){switch(n){case"Strict":return"strict";case"None":return"none";case"Lax":return"lax";default:return"lax"}}function mo(n){switch(n){case"none":return"None";case"strict":return"Strict";case"default":case"lax":return"Lax"}throw new x(`Unknown 'sameSite' value ${n}`)}function xr(n){return["ftp","file","http","https","ws","wss"].includes(n.replace(/:$/,""))}function go(n){return n.protocol.replace(/:$/,"")}function gn(n,e){let t=new URL(e);return!(n.protocol!==void 0&&n.protocol!==go(t)||n.hostname!==void 0&&n.hostname!==t.hostname||n.port!==void 0&&n.port!==t.port||n.pathname!==void 0&&n.pathname!==t.pathname||n.search!==void 0&&n.search!==t.search)}function wn(n){let e=0;for(let t of n)e+=atob(t.bytes??"").length;return e}function z(n,e=0){return!n||n<=0||n+e<=0?0:n+e}var je=class n{#e;#t;#s;#r;constructor(e,t,s,r){this.#s=s,this.#e=e,this.#t=t,this.#r=r}async addIntercept(e){this.#e.verifyTopLevelContextsList(e.contexts);let t=e.urlPatterns??[],s=n.parseUrlPatterns(t),r=this.#t.addIntercept({urlPatterns:s,phases:e.phases,contexts:e.contexts});return await this.#i(),{intercept:r}}async continueRequest(e){if(e.url!==void 0&&n.parseUrlString(e.url),e.method!==void 0&&!n.isMethodValid(e.method))throw new x(`Method '${e.method}' is invalid.`);e.headers&&n.validateHeaders(e.headers);let t=this.#a(e.request,["beforeRequestSent"]);try{await t.continueRequest(e)}catch(s){throw n.wrapInterceptionError(s)}return{}}async continueResponse(e){e.headers&&n.validateHeaders(e.headers);let t=this.#a(e.request,["authRequired","responseStarted"]);try{await t.continueResponse(e)}catch(s){throw n.wrapInterceptionError(s)}return{}}async continueWithAuth(e){let t=e.request;return await this.#a(t,["authRequired"]).continueWithAuth(e),{}}async failRequest({request:e}){let t=this.#o(e);if(t.interceptPhase==="authRequired")throw new x(`Request '${e}' in 'authRequired' phase cannot be failed`);if(!t.interceptPhase)throw new Le(`No blocked request found for network id '${e}'`);return await t.failRequest("Failed"),{}}async provideResponse(e){e.headers&&n.validateHeaders(e.headers);let t=this.#a(e.request,["beforeRequestSent","responseStarted","authRequired"]);try{await t.provideResponse(e)}catch(s){throw n.wrapInterceptionError(s)}return{}}async#i(){await Promise.all(this.#e.getAllContexts().map(e=>e.cdpTarget.toggleNetwork()))}async removeIntercept(e){return this.#t.removeIntercept(e.intercept),await this.#i(),{}}async setCacheBehavior(e){let t=this.#e.verifyTopLevelContextsList(e.contexts);if(t.size===0)return this.#t.defaultCacheBehavior=e.cacheBehavior,await Promise.all(this.#e.getAllContexts().map(r=>r.cdpTarget.toggleSetCacheDisabled())),{};let s=e.cacheBehavior==="bypass";return await Promise.all([...t.values()].map(r=>r.cdpTarget.toggleSetCacheDisabled(s))),{}}#o(e){let t=this.#t.getRequestById(e);if(!t)throw new Le(`Network request with ID '${e}' doesn't exist`);return t}#a(e,t){let s=this.#o(e);if(!s.interceptPhase)throw new Le(`No blocked request found for network id '${e}'`);if(s.interceptPhase&&!t.includes(s.interceptPhase))throw new x(`Blocked request for network id '${e}' is in '${s.interceptPhase}' phase`);return s}static validateHeaders(e){for(let t of e){let s;if(t.value.type==="string"?s=t.value.value:s=atob(t.value.value),s!==s.trim()||s.includes(`
5
5
  `)||s.includes("\0"))throw new x(`Header value '${s}' is not acceptable value`)}}static isMethodValid(e){return/^[!#$%&'*+\-.^_`|~a-zA-Z\d]+$/.test(e)}static parseUrlString(e){try{return new URL(e)}catch(t){throw new x(`Invalid URL '${e}': ${t}`)}}static parseUrlPatterns(e){return e.map(t=>{let s="",r=!0,i=!0,o=!0,a=!0,c=!0;switch(t.type){case"string":{s=qe(t.pattern);break}case"pattern":{if(t.protocol===void 0)r=!1,s+="http";else{if(t.protocol==="")throw new x("URL pattern must specify a protocol");if(t.protocol=qe(t.protocol),!t.protocol.match(/^[a-zA-Z+-.]+$/))throw new x("Forbidden characters");s+=t.protocol}let u=s.toLocaleLowerCase();if(s+=":",xr(u)&&(s+="//"),t.hostname===void 0)u!=="file"&&(s+="placeholder"),i=!1;else{if(t.hostname==="")throw new x("URL pattern must specify a hostname");if(t.protocol==="file")throw new x("URL pattern protocol cannot be 'file'");t.hostname=qe(t.hostname);let l=!1;for(let y of t.hostname){if(y==="/"||y==="?"||y==="#")throw new x("'/', '?', '#' are forbidden in hostname");if(!l&&y===":")throw new x("':' is only allowed inside brackets in hostname");y==="["&&(l=!0),y==="]"&&(l=!1)}s+=t.hostname}if(t.port===void 0)o=!1;else{if(t.port==="")throw new x("URL pattern must specify a port");if(t.port=qe(t.port),s+=":",!t.port.match(/^\d+$/))throw new x("Forbidden characters");s+=t.port}if(t.pathname===void 0)a=!1;else{if(t.pathname=qe(t.pathname),t.pathname[0]!=="/"&&(s+="/"),t.pathname.includes("#")||t.pathname.includes("?"))throw new x("Forbidden characters");s+=t.pathname}if(t.search===void 0)c=!1;else{if(t.search=qe(t.search),t.search[0]!=="?"&&(s+="?"),t.search.includes("#"))throw new x("Forbidden characters");s+=t.search}break}}let d=u=>{let l={"ftp:":21,"file:":null,"http:":80,"https:":443,"ws:":80,"wss:":443};if(xr(u.protocol)&&l[u.protocol]!==null&&(!u.port||String(l[u.protocol])===u.port))return"";if(u.port)return u.port};try{let u=new URL(s);return{protocol:r?u.protocol.replace(/:$/,""):void 0,hostname:i?u.hostname:void 0,port:o?d(u):void 0,pathname:a&&u.pathname?u.pathname:void 0,search:c?u.search:void 0}}catch(u){throw new x(`${u.message} '${s}'`)}})}static wrapInterceptionError(e){return e?.message.includes("Invalid header")||e?.message.includes("Unsafe header")?new x(e.message):e}async addDataCollector(e){if(e.userContexts!==void 0&&e.contexts!==void 0)throw new x("'contexts' and 'userContexts' are mutually exclusive");if(e.userContexts!==void 0&&await this.#s.verifyUserContextIdList(e.userContexts),e.contexts!==void 0){for(let s of e.contexts)if(!this.#e.getContext(s).isTopLevelContext())throw new x("Data collectors are available only on top-level browsing contexts")}let t=this.#t.addDataCollector(e);return await this.#i(),{collector:t}}async getData(e){return await this.#t.getCollectedData(e)}async removeDataCollector(e){return this.#t.removeDataCollector(e),await this.#i(),{}}disownData(e){return this.#t.disownData(e),{}}async#d(e,t){if(e===void 0&&t===void 0)return this.#e.getTopLevelContexts();if(e!==void 0&&t!==void 0)throw new x("User contexts and browsing contexts are mutually exclusive");let s=[];if(t!==void 0){if(t.length===0)throw new x("user context should be provided");await this.#s.verifyUserContextIdList(t);for(let r of t){let i=this.#e.getTopLevelContexts().filter(o=>o.userContext===r);s.push(...i)}}if(e!==void 0){if(e.length===0)throw new x("browsing context should be provided");for(let r of e){let i=this.#e.getContext(r);if(!i.isTopLevelContext())throw new x("The command is only supported on the top-level context");s.push(i)}}return[...new Set(s).values()]}async setExtraHeaders(e){let t=await this.#d(e.contexts,e.userContexts),s=vo(e.headers);return e.userContexts===void 0&&e.contexts===void 0&&this.#r.updateGlobalConfig({extraHeaders:s}),e.userContexts!==void 0&&e.userContexts.forEach(r=>{this.#r.updateUserContextConfig(r,{extraHeaders:s})}),e.contexts!==void 0&&e.contexts.forEach(r=>{this.#r.updateBrowsingContextConfig(r,{extraHeaders:s})}),await Promise.all(t.map(async r=>{let i=this.#r.getActiveConfig(r.id,r.userContext).extraHeaders??{};await r.setExtraHeaders(i)})),{}}};function qe(n){let e=new Set(["(",")","*","{","}"]),t="",s=!1;for(let r of n){if(!s){if(e.has(r))throw new x("Forbidden characters");if(r==="\\"){s=!0;continue}}t+=r,s=!1}return t}var wo=new Set([" "," ",`
@@ -0,0 +1,2 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{a,b}from"./chunk-SYGN7GLU.mjs";import"./chunk-FDLXYYG4.mjs";import"./chunk-4FS7Z7WR.mjs";import"./chunk-6RGJOMJP.mjs";import"./chunk-QJIR2BLP.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-E7LWZRXY.mjs";import"./chunk-NSKUTQ5J.mjs";import"./chunk-AUZGSZJH.mjs";import"./chunk-BGGDRNYQ.mjs";import"./chunk-6QXGZM36.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{a as noDocuments,b as run};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{a,b,c}from"./chunk-NO5NJCHO.mjs";import"./chunk-S6O4UHLC.mjs";import"./chunk-TX6JH7TR.mjs";import"./chunk-5ZKJ3H4P.mjs";import"./chunk-NSKUTQ5J.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{a as DEFAULT_DESCRIPTION,c as run,b as slugRefused};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{f as a,g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i,o as j,p as k,q as l,r as m,s as n,t as o,u as p,v as q}from"./chunk-AUZGSZJH.mjs";import"./chunk-BGGDRNYQ.mjs";import"./chunk-6QXGZM36.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{h as buildReports,d as checkReports,f as checkSelectedReports,b as exportFailures,k as exportReports,p as failureSummary,e as handInBlockers,l as notesByKind,m as notesOf,j as offlineReports,o as printFailures,c as quickFailures,a as repeatedIdFailures,q as reportFailures,n as reportNotes,i as withExportPolicy,g as writeSharedAssets};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{a}from"./chunk-EZQ34M3F.mjs";import"./chunk-NQPVAU63.mjs";import"./chunk-DFUDV4LX.mjs";import"./chunk-Y6RLRPG3.mjs";import"./chunk-6RGJOMJP.mjs";import"./chunk-QJIR2BLP.mjs";import"./chunk-QUPLVPB2.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-E7LWZRXY.mjs";import"./chunk-AUZGSZJH.mjs";import"./chunk-BGGDRNYQ.mjs";import"./chunk-6QXGZM36.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";export{a as startProductionServer};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{f as A}from"./chunk-JVHHHGEA.mjs";import{a as w,c as U}from"./chunk-HYMEEXKN.mjs";import he from"node:fs";import $e from"node:path";import{reportsDirectory as we}from"../browser/shared/paths.mjs";import{assetFile as be,assetProblem as ge,embedFile as ke}from"../browser/shared/media.mjs";import{attr as H,hasClass as xe,walk as ye}from"../browser/shared/html-tree.mjs";import _ from"node:fs";import ie from"node:path";import{attr as ae,hasClass as ce,walk as fe}from"../browser/shared/html-tree.mjs";import{MEDIA_ROUTES as le,mediaTypeOf as de,mediaUrl as ue}from"../browser/shared/media.mjs";import{documentDirectory as pe}from"../browser/shared/workspace.mjs";function k(e,n,o){let s=null;return fe(e,t=>{!s&&t.tagName===n&&ce(t,o)&&(s=t)}),s}function N(e,n){let o=ie.join(e,n);return _.statSync(o,{throwIfNoEntry:!1})?.isFile()?`data:${de(n)};base64,${_.readFileSync(o).toString("base64")}`:null}function me(e,{attribute:n,route:o,slug:s,mode:t,reportsDirectory:r}){if(!le[o](e))return null;if(t==="preview")return`${n}="${ue(o,s,e)}" data-ge-${n}="${e}"`;let a=N(pe(s,r),e);return a&&`${n}="${a}"`}function x(e,n,{attribute:o,route:s,slug:t,mode:r,reportsDirectory:a}){let i=n.map(f=>({place:f.sourceCodeLocation?.attrs?.[o],value:ae(f,o)})).filter(({place:f})=>f).sort((f,d)=>f.place.startOffset-d.place.startOffset),c=[],l=0;for(let{place:f,value:d}of i){let u=me(d,{attribute:o,route:s,slug:t,mode:r,reportsDirectory:a});u===null||f.startOffset<l||(c.push(e.slice(l,f.startOffset),u),l=f.endOffset)}return c.push(e.slice(l)),c.join("")}function D(e){let n=[];return ye(e,o=>{let s=o.tagName==="figure"&&xe(o,"doc-embed")?k(o,"iframe","doc-embed-frame"):null;s&&n.push(s)}),n}function bt(e,{slug:n,mode:o="export",reportsDirectory:s=we}){return e.includes("doc-embed")?x(e,D(w(e)),{attribute:"src",route:"embed",slug:n,mode:o,reportsDirectory:s}):e}var I=(e,n=w(e))=>D(n).map(o=>o.sourceCodeLocation.startOffset);function gt({html:e,directory:n,tree:o=w(e)}){let s=[];for(let t of D(o)){let r=`line ${t.sourceCodeLocation.startLine}`,a=H(t,"src")??"",i=H(t,"sandbox"),c=/^https:\/\/[^\s"]+$/.test(a),l=!c&&!/^[a-z][a-z0-9+.-]*:/i.test(a)&&!be(a)?ge(a):null;l?s.push(`${r}: an embed's frame (${a.slice(0,80)}): ${l} (an HTML or PDF file; or a web page, https://\u2026)`):!c&&!ke(a)?s.push(`${r}: an embed's frame (${a.slice(0,80)}) shows a web page (https://\u2026, never http) or an HTML or PDF file of the document's folder (assets/<file>)`):!c&&!he.existsSync($e.join(n,a))?s.push(`${r}: the embed's file ${a} is not in the document's folder`):(c||/\.html?$/i.test(a))&&i===void 0?s.push(`${r}: an embed's frame (${a.slice(0,80)}) is sandboxed: sandbox="allow-scripts allow-popups \u2026"`):!c&&/\.html?$/i.test(a)&&/\ballow-same-origin\b/.test(i)?s.push(`${r}: an embedded HTML file (${a}) keeps its own origin: its sandbox has no allow-same-origin`):!c&&/\.pdf$/i.test(a)&&i!==void 0&&s.push(`${r}: an embedded PDF (${a}) is sandboxed, and a sandboxed frame shows no PDF: take its sandbox attribute off`)}return[...new Set(s)]}import Oe from"node:fs";import Se from"node:path";import{reportsDirectory as ve}from"../browser/shared/paths.mjs";import{assetFile as Fe,assetProblem as Le}from"../browser/shared/media.mjs";import{attr as z,hasClass as Ee,walk as Ce}from"../browser/shared/html-tree.mjs";function F(e,n=w(e)){let o=[];return Ce(n,s=>{s.tagName==="figure"&&Ee(s,"doc-file")&&o.push({node:s,link:k(s,"a","doc-file-link")})}),o}function Et(e,{slug:n,mode:o="export",reportsDirectory:s=ve}){if(!e.includes("doc-file"))return e;let t=F(e).flatMap(({link:r})=>r?[r]:[]);return x(e,t,{attribute:"href",route:"file",slug:n,mode:o,reportsDirectory:s})}function Ct({html:e,directory:n,tree:o=w(e)}){let s=[];for(let{link:t}of F(e,o)){if(!t)continue;let r=`line ${t.sourceCodeLocation?.startLine}`,a=z(t,"href")??"";Fe(a)?Oe.existsSync(Se.join(n,a))||s.push(`${r}: the file block's file ${a} is not in the document's folder`):s.push(`${r}: a file block's file (${a.slice(0,80)}): ${Le(a)} (<a class="doc-file-link" href="assets/<file>" download="<name>">)`),z(t,"download")||s.push(`${r}: a file block's link (${a.slice(0,80)}) says the name to save it as: download="<name>"`)}return[...new Set(s)]}import Ne from"node:fs";import De from"node:path";import{reportsDirectory as Re}from"../browser/shared/paths.mjs";import{assetProblem as W,imageFile as K}from"../browser/shared/media.mjs";import{attr as R,hasClass as Me,walk as M}from"../browser/shared/html-tree.mjs";var je={"doc-image":"image","doc-bookmark":"bookmark"},Te={image:"an image's picture",bookmark:"a bookmark's icon or cover"},Pe=/doc-(?:image|bookmark|link-mention-icon)/;function G(e){let n=[];return M(e,o=>{let s=o.tagName==="figure"&&(R(o,"class")??"").split(/\s+/).map(t=>je[t]).find(Boolean);s&&n.push({node:o,kind:s})}),n}function L(e,n=w(e)){let o=new Map,s=(t,r,a)=>{let i=t.sourceCodeLocation;i&&!o.has(i.startOffset)&&o.set(i.startOffset,{at:i.startOffset,line:i.startLine,node:t,what:r,kind:a,mention:a==="mention"})};for(let{node:t,kind:r}of G(n))M(t,a=>a.tagName==="img"&&s(a,Te[r],r));return M(n,t=>t.tagName==="img"&&Me(t,"doc-link-mention-icon")&&s(t,"a link's icon","mention")),[...o.values()].sort((t,r)=>t.at-r.at)}function Ut(e,{slug:n,mode:o="export",reportsDirectory:s=Re}){return Pe.test(e)?x(e,L(e).map(({node:t})=>t),{attribute:"src",route:"asset",slug:n,mode:o,reportsDirectory:s}):e}function At({html:e,directory:n,tree:o=w(e)}){let s=[];for(let{line:t,node:r,what:a,mention:i}of L(e,o)){let c=R(r,"src");i&&!K(c)?s.push(`line ${t}: a link's icon (${(c??"").slice(0,80)}): ${W(c,{picture:!0})}; or write an empty <span class="doc-link-mention-icon"></span>`):c===void 0?s.push(`line ${t}: ${a} has no src: <img src="assets/<file>" alt="\u2026">`):K(c)?Ne.existsSync(De.join(n,c))||s.push(`line ${t}: ${a} ${c} is not in the document's folder`):s.push(`line ${t}: ${a} (${c.slice(0,80)}): ${W(c,{picture:!0})}`)}for(let{node:t,kind:r}of G(o)){let a=r==="bookmark"?k(t,"a","doc-bookmark-card"):null,i=a&&R(a,"href");a&&!/^https?:\/\/[^\s"]+$/.test(i??"")&&s.push(`line ${a.sourceCodeLocation?.startLine}: a bookmark's link (${(i??"").slice(0,80)}) is a web address: <a class="doc-bookmark-card" href="https://\u2026">`)}return[...new Set(s)]}import ee from"node:fs";import te from"node:path";import{escapeAttribute as S}from"../browser/shared/escape.mjs";import{attr as y,hasClass as Be,walk as Ue}from"../browser/shared/html-tree.mjs";import{cssReferences as q}from"../browser/shared/css-references.mjs";import{assetFile as Ae,assetProblem as _e,imageFile as He,mediaUrl as Ie,referencedFile as v}from"../browser/shared/media.mjs";import{reportsDirectory as ze}from"../browser/shared/paths.mjs";import{documentDirectory as We}from"../browser/shared/workspace.mjs";var Y=/^\s*(?:\.\/)?assets\//i,J=1e6;function Ke(e){let n=[],o=0;for(;o<e.length;){for(;o<e.length&&/[\s,]/.test(e[o]);)o++;if(o>=e.length)break;let s=o;for(;s<e.length&&!/\s/.test(e[s]);)s++;let t=e.slice(o,s),r="";if(t.endsWith(","))t=t.replace(/,+$/,""),o=s;else{let i=s;for(let c=0;i<e.length&&(e[i]!==","||c>0);i++)e[i]==="("?c++:e[i]===")"&&c--;r=e.slice(s,i).trim(),o=i+1}let a=r.split(/\s+/).find(i=>/^\d*\.?\d+[wx]$/i.test(i));n.push({url:t,descriptor:r,size:a?parseFloat(a):1,wide:/w$/i.test(a??"")})}return n}function Ge(e){let n=e.filter(o=>o.wide);return(n.length>0?n:e).reduce((o,s)=>!o||s.size>o.size?s:o,null)}var qe=new Set(["body","table","thead","tbody","tfoot","tr","td","th"]);function T(e,n,o=s=>Y.test(s)){let s=[],t=r=>{o(r.value,r.node)&&s.push({...r,value:r.value.trim(),written:r.css?.written})};return Ue(n,r=>{let a=r.sourceCodeLocation;if(a){for(let{name:i,value:c,prefix:l}of r.attrs){let f=l?`${l}:${i}`:i,d=a.attrs?.[f],u={node:r,how:i,key:f,place:d,line:d?.startLine??a.startLine};if(i==="src"||i==="href"||i==="poster"||i==="data"&&r.tagName==="object"||i==="background"&&qe.has(r.tagName))t({...u,value:c});else if(i==="srcset"){let p=Ke(c),g=Ge(p.filter(b=>Y.test(b.url)));p.forEach((b,m)=>t({...u,value:b.url,candidates:p,index:m,largest:b===g}))}else if(i==="style")for(let p of q(c))t({...u,value:p.value,css:p})}if(r.tagName==="style")for(let i of r.childNodes){if(i.nodeName!=="#text"||!i.sourceCodeLocation)continue;let{startOffset:c,endOffset:l}=i.sourceCodeLocation;for(let f of q(e.slice(c,l)))t({node:r,how:"css",value:f.value,line:U(e,c+f.index),css:{...f,offset:c}})}}}),s}function se(e,n){let o=new Map;for(let{at:s,kind:t}of L(e,n))o.set(s,{attribute:"src",owner:"block",icon:t!=="image"});for(let{link:s}of F(e,n))s&&o.set(s.sourceCodeLocation.startOffset,{attribute:"href",owner:"block"});for(let s of I(e,n))o.set(s,{attribute:"src",owner:"block"});for(let s of A(e))o.set(s,{attribute:"src",owner:"icon"});return o}var oe=(e,n)=>{let o=e.get(n.node.sourceCodeLocation.startOffset);return o?.attribute===n.how?o:null},Ye=new Set(["img","input","video","audio","source","track"]),Q="an export holds no stylesheet of the folder (the addresses in one are read from its own place): put its rules in the page's <style>",V=e=>(y(e,"rel")??"").toLowerCase().split(/\s+/),j=/\.html?$/i,Je={html:'src="assets/<file>.html" sandbox="allow-scripts"',pdf:'src="assets/<file>.pdf"'},P=e=>`<figure class="doc-embed doc-embed--file"><iframe class="doc-embed-frame" ${Je[e]}></iframe><figcaption></figcaption></figure>`,X=`its frame with no sandbox (a sandboxed one shows no PDF): ${P("pdf")}`,Z='show a picture with <img src="assets/<file>">, a file to save with a link, <a href="assets/<file>" download="<name>">';function B({node:e,how:n,css:o,value:s}){let t=e.tagName;if(n==="style"||n==="css")return o.kind==="import"?{not:Q}:{use:"shown"};if(n==="srcset"&&(t==="img"||t==="source")||n==="poster"&&t==="video"||n==="src"&&Ye.has(t)||n==="background")return{use:"shown"};if(n==="src"&&t==="iframe"){let r=v(s)??"";return j.test(r)?{use:"frame"}:/\.pdf$/i.test(r)?{not:`a PDF shows in an embed block alone (the kit hands its file to the browser's PDF viewer, in the preview and in an export): make it one, ${X}`}:{not:`a frame shows a page of the folder (an HTML file), not this file, which the preview would hand out for saving: ${Z}`}}if(n==="href"&&(t==="a"||t==="area"))return{use:"link"};if(n==="href"&&(t==="image"||t==="link"&&V(e).some(r=>r.endsWith("icon"))))return{use:"shown"};if(t==="object"||t==="embed"){let r=v(s)??"";return{not:`an export's policy loads no plugin content (<object>, <embed>): ${/\.pdf$/i.test(r)?`show a PDF in an embed block, ${X}`:j.test(r)?`show a page in an embed block, ${P("html")}`:Z}`}}return t==="script"?{not:"an export runs the page's own scripts alone: put the code in the page's <script>"}:t==="link"&&V(e).includes("stylesheet")?{not:Q}:{not:"an export holds a file of the folder as a picture, a font, a video or audio, a link or a frame, not there"}}var E=e=>e.startsWith("assets/")&&Ae(e),Qe=e=>_e(e)??`the folder is assets/, in lowercase: write it so (assets/${e.slice(7)})`,ne=(e,n,o)=>n==="link"&&j.test(o)&&y(e.node,"download")===void 0,Ve=(e,n)=>e==="frame"?"embed":e==="shown"&&He(n)?"asset":"file",Xe=(e,n)=>!!ee.statSync(te.join(e,n),{throwIfNoEntry:!1})?.isFile(),O=({node:e,how:n,value:o,written:s})=>({srcset:`<${e.tagName} srcset="\u2026 ${o} \u2026">`,style:`${s} in the style of <${e.tagName}>`,css:`${s} in <style>`})[n]??`<${e.tagName} ${n}="${o}">`,Ze=e=>{for(let n=e.parentNode;n;n=n.parentNode)if(n.tagName&&Be(n,"doc-icon"))return!0;return!1},et=e=>e.length>1?`${e.slice(0,-1).join(", ")} and ${e.at(-1)}`:`${e[0]}`;function tt(e,n){let o=new Map;for(let{file:a,line:i,owned:c}of e){let l=o.get(a)??o.set(a,{lines:[],owned:!1}).get(a);c?l.owned=!0:l.lines.push(i)}let s=0,t=[];for(let[a,{lines:i,owned:c}]of o){let l=c?i.length:i.length-1;if(l<1)continue;let f=l*Math.ceil(ee.statSync(te.join(n,a)).size/3)*4;s+=f;let d=i.length===1?"once":i.length===2?"twice":`${i.length} times`;t.push({bytes:f,said:`${a} ${d}${c?" besides a media block's or the icon's":""} (line${new Set(i).size>1?"s":""} ${et([...new Set(i)])})`})}if(s<=J)return[];let r=t.sort((a,i)=>i.bytes-a.bytes).map(({said:a})=>a).join(", ");return[`files embedded more than once make an export ${s.toLocaleString("en-US")} bytes bigger, over the ${J.toLocaleString("en-US")} bytes the copies outside the media blocks may add: ${r}; show each fewer times (a picture, a link or a frame holds a copy of its own each time it is written), or, for a CSS background (url() in a <style> or a style attribute), name it once in the page's <style> (--picture: url(assets/<file>)) and write var(--picture) where it shows`]}function re({html:e,directory:n,tree:o}){let s=se(e,o),t=[],r=[],a=[];for(let i of T(e,o)){let{line:c}=i,l=oe(s,i),f=v(i.value),d=f!==null&&Xe(n,f);if(d&&!E(f)&&a.push({file:f,line:c}),l?.owner==="block"){d&&E(f)&&r.push({file:f,line:c,owned:!0,icon:!!l.icon});continue}if(d||t.push(l?`line ${c}: the icon's image ${i.value} is not in the document's folder`:`line ${c}: ${O(i)} names a file that is not in the document's folder`),l){d&&r.push({file:f,line:c,owned:!0,icon:!0});continue}let{use:u,not:p}=B(i);p&&t.push(`line ${c}: ${O(i)}: ${p}`),!(!u||!d)&&(E(f)?ne(i,u,f)?t.push(`line ${c}: ${O(i)} opens an HTML file, which an export cannot (a browser opens no page from a data: address): show it in an embed block, ${P("html")}, or give the link download="<name>" to hand it out as a file`):i.node.tagName==="img"&&i.how==="src"&&Ze(i.node)?t.push(`line ${c}: ${O(i)} is in an icon (.doc-icon) written as an icon is not read (its picker, the browser tab's icon): write it <div class="doc-icon"><img src="assets/<file>" alt=""></div>, in double quotes and with no other class`):(i.how!=="srcset"||i.largest)&&r.push({file:f,line:c}):t.push(`line ${c}: ${O(i)}: ${Qe(f)}`))}return{failures:t,embedded:r,unserved:a}}function ts({html:e,directory:n,tree:o=w(e)}){let{failures:s,embedded:t}=re({html:e,directory:n,tree:o});return[...new Set([...s,...tt(t,n)])]}function ss({html:e,directory:n,tree:o=w(e)}){let{embedded:s,unserved:t}=re({html:e,directory:n,tree:o});return{embedded:s.map(({file:r,line:a,icon:i=!1})=>({file:r,line:a,icon:i})),unserved:t}}function st(e,{slug:n,mode:o,directory:s}){let{use:t}=B(e),r=v(e.value);if(!t||!r||!E(r)||ne(e,t,r))return null;let a=/#.*$/.exec(e.value)?.[0]??"";if(o==="preview")return`${Ie(Ve(t,r),n,r)}${a}`;let i=N(s,r);return i&&`${i}${a}`}function ot(e,n,{mode:o,shown:s}){let[t]=n,{node:r,how:a,key:i}=t,c=(m,h="")=>({start:e.startOffset,end:e.endOffset,text:`${i}="${S(m)}"${h}`}),l=o==="preview"?` data-ge-${a}="${S(y(r,a)??"")}"`:"",d=(o==="preview"?[`data-ge-${a}`,`data-rs-${a}`].map(m=>r.sourceCodeLocation.attrs?.[m]).filter(Boolean):[]).map(m=>({start:m.startOffset,end:m.endOffset,text:""}));if(a==="srcset"){if(o==="export"){let h=n.find(C=>C.largest),$=h&&s(h);return $?[c(`${$} ${h.candidates[h.index].descriptor}`.trim())]:[]}let m=new Map(n.map(h=>[h.index,s(h)]));return[...m.values()].some(Boolean)?[c(t.candidates.map((h,$)=>[m.get($)??h.url,h.descriptor].filter(Boolean).join(" ")).join(", "),l),...d]:[]}if(a==="style"){let m=y(r,"style"),h=n.map($=>({...$.css,address:s($)})).filter($=>$.address).sort(($,C)=>C.start-$.start);for(let $ of h)m=`${m.slice(0,$.start)}${$.address}${m.slice($.end)}`;return h.length>0?[c(m)]:[]}let u=s(t);if(!u)return[];if(o==="preview"||B(t).use!=="link")return[c(u,l),...d];let p=v(t.value).slice(7),g=y(r,"download");if(g===void 0)return[c(u,` download="${S(p)}"`)];let b=r.sourceCodeLocation.attrs?.download;return[c(u),...g===""&&b?[{start:b.startOffset,end:b.endOffset,text:`download="${S(p)}"`}]:[]]}function nt(e,n){let o=[],s=0;for(let{start:t,end:r,text:a}of[...n].sort((i,c)=>i.start-c.start))t<s||(o.push(e.slice(s,t),a),s=r);return o.push(e.slice(s)),o.join("")}var os=(e,n,o=w(e))=>T(e,o,n);function ns(e,n){let o=[],s=new Map;for(let t of e){let r=n(t);typeof r=="string"&&(t.how==="css"?o.push({start:t.css.offset+t.css.start,end:t.css.offset+t.css.end,text:r}):t.place&&s.set(t.place,[...s.get(t.place)??[],{...t,address:r}]))}for(let[t,r]of s){let[{node:a,how:i,key:c,candidates:l}]=r,f=r[0].address;if(i==="srcset"){let d=new Map(r.map(u=>[u.index,u.address]));f=l.map((u,p)=>[d.get(p)??u.url,u.descriptor].filter(Boolean).join(" ")).join(", ")}else if(i==="style"){f=y(a,"style");for(let{css:d,address:u}of[...r].sort((p,g)=>g.css.start-p.css.start))f=`${f.slice(0,d.start)}${u}${f.slice(d.end)}`}o.push({start:t.startOffset,end:t.endOffset,text:`${c}="${S(f)}"`})}return o}function rs(e,{slug:n,mode:o="export",reportsDirectory:s=ze}){if(!/assets\//i.test(e.replace(/\sdata-ge-(?:src|href|icon)="[^"]*"/g,"")))return e;let t=w(e),r=se(e,t),a=We(n,s),i=f=>st(f,{slug:n,mode:o,directory:a}),c=[],l=new Map;for(let f of T(e,t))if(!oe(r,f))if(f.how==="css"){let d=i(f),u=f.css.offset;d&&c.push({start:u+f.css.start,end:u+f.css.end,text:d})}else f.place&&l.set(f.place,[...l.get(f.place)??[],f]);for(let[f,d]of l)c.push(...ot(f,d,{mode:o,shown:i}));return nt(e,c)}export{bt as a,gt as b,Et as c,Ct as d,Ut as e,At as f,ts as g,ss as h,nt as i,os as j,ns as k,rs as l};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{a as z,c as L,e as ct}from"./chunk-A55HN5OK.mjs";ct();import{isUtf8 as lt}from"node:buffer";import{createHash as dt}from"node:crypto";import{lstatSync as pt,readFileSync as $,realpathSync as P,statSync as mt}from"node:fs";import ft from"node:fs/promises";import b from"node:path";import{isInstance as ut,parseCompound as gt,parsePart as ht,parseSelector as bt,partOf as wt}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as J,NO_TEXT as yt,PACKAGE_ID as Z,PACKAGE_MARK as kt,SLOT as C,instanceMatch as Et,refusedInCopy as Ot,settingState as St}from"../browser/shared/components/installed.mjs";import{writeAtomic as $t}from"../browser/shared/files.mjs";import{attr as At,walk as vt}from"../browser/shared/html-tree.mjs";import{inLanguage as xt,refusal as H,said as o,saying as Nt,told as Tt}from"../browser/shared/i18n/index.mjs";import{DEVICE_NAMES as It,PACKAGE_MANIFEST as y,WORKSPACE_MARK as jt,findWorkspace as _t,layoutOf as Y,markerOf as Mt,packageFolders as zt}from"../browser/shared/workspace.mjs";var F=1,R=new Set(["code","state","sheets","tokens","dialogs","katex-styles","katex","katex-auto-render","math","d3","charts","tables"]),Lt=["id","apiVersion","version","name","description","words","parts","runtime","assets","markdown","schema"],Pt=["at","edit","optional","min","max"],Ct=["generated","attrs"],Ft=["text","data","flow","none"],Rt=/^[a-z][a-z0-9-]*$/,Dt=t=>`div[${C}="${t}"], section[${C}="${t}"]`,Vt=t=>Object.fromEntries(Object.entries(t).map(([e,s])=>[e,s.edit==="flow"?{...s,at:Dt(e)}:s])),Kt=["parts","text"],q=["kit.js","style.css","preview.svg"],E="template.html",Wt=[y,E,...q],A=t=>[...new Set([...Wt,...t])].sort(),Gt=/^(?:[A-Za-z0-9_-][A-Za-z0-9._-]*\/)*[A-Za-z0-9_-][A-Za-z0-9._-]*\.[A-Za-z0-9]+$/,Ut=/^(?:doc-|data-doc-|data-ge-)|^data-block-id$/i,D=256*1024,u=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),f=t=>typeof t=="string"&&t.trim()!=="",v=(t,e)=>t.id<e.id?-1:1,i=t=>{throw H(t)},g=t=>{let e=dt("sha256");return t(e),e.digest("hex").slice(0,16)};function w(t,e){let s=b.join(t,e);try{let n=pt(s,{throwIfNoEntry:!1});if(!n)return null;if(!n.isSymbolicLink()&&!e.includes("/"))return s;let r=P.native(s);return r.startsWith(P.native(t)+b.sep)?r:null}catch{return null}}function X(t,e){try{let s=w(t,e);return s&&$(s)}catch{return null}}var V=new Map,Bt=2e3;function Jt(t){let{size:e,mtimeMs:s}=mt(t),n=V.get(t);if(n?.size===e&&n.time===s)return n.digest;let r=g(c=>c.update($(t)));return Date.now()-s>Bt&&V.set(t,{size:e,time:s,digest:r}),r}var x=(t,e)=>g(s=>{for(let n of e){let r=w(t,n),c="none";try{r&&(c=Jt(r))}catch{}s.update(`${n}\0${c}
3
+ `)}}),Q=t=>t.toString("utf8").replace(/^\uFEFF/,""),tt=(t,e)=>{t.length>D&&i(o("{0} \u6709 {1} KB\uFF0C\u800C\u6BCF\u4E00\u9875\u90FD\u5E26\u7740\u5B83\uFF0C\u6700\u591A {2} KB",e,Math.ceil(t.length/1024),D/1024))},N=(t,e,s="")=>{for(let n of Object.keys(t))e.includes(n)||i(o("{0} \u4E0D\u662F\u7EC4\u4EF6\u5305\u80FD\u5199\u7684\u5B57\u6BB5",`${s}${n}`))},K=(t,e)=>{for(let s of e)t[s]===void 0&&i(o("\u7F3A\u5C11 {0}",s))},W=(t,e)=>{(!u(t)||!f(t.zh)||!f(t.en)||Object.keys(t).length!==2)&&i(o("{0} \u8981\u5199\u6210 { zh, en } \u4E24\u79CD\u8BED\u8A00\u7684\u6587\u5B57",e))},Zt=t=>t.split(",").map(e=>e.split(">").at(-1).trim()).filter(e=>e!=="*").map(e=>gt(e).tag);function Ht(t,e){let s=`parts.${t}`;if(u(e)||i(o("{0} \u8981\u5199\u6210\u4E00\u5F20\u8868",s)),N(e,Pt,`${s}.`),e.edit==="flow"){Rt.test(t)||i(o("{0} \u662F\u63D2\u69FD\uFF0C\u540D\u5B57\u53EA\u7528\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26",s)),e.at!==void 0&&i(o('{0} \u662F\u63D2\u69FD\uFF0C\u7531 data-doc-slot="{1}" \u6807\u51FA\uFF0C\u4E0D\u5199 at',s,t)),(e.min!==void 0||e.max!==void 0)&&i(o("{0} \u662F\u63D2\u69FD\uFF0C\u4E00\u4E2A\u5B9E\u4F8B\u91CC\u53EA\u6709\u4E00\u4E2A\uFF0C\u4E0D\u5199 min\u3001max",s)),e.optional!==void 0&&typeof e.optional!="boolean"&&i(o("{0} \u8981\u5199\u6210 true \u6216 false",`${s}.optional`));return}f(e.at)||i(o("\u7F3A\u5C11 {0}",`${s}.at`));try{ht(e.at)}catch(n){i(o("{0} \u5199\u9519\u4E86\uFF1A{1}",`${s}.at`,n.message))}Ft.includes(e.edit)||i(o("{0} \u7684 edit \u53EA\u80FD\u662F text\u3001data\u3001flow \u6216 none",s)),e.optional!==void 0&&typeof e.optional!="boolean"&&i(o("{0} \u8981\u5199\u6210 true \u6216 false",`${s}.optional`));for(let n of["min","max"])e[n]!==void 0&&!(Number.isInteger(e[n])&&e[n]>=0)&&i(o("{0} \u8981\u5199\u6210\u4E0D\u5C0F\u4E8E 0 \u7684\u6574\u6570",`${s}.${n}`));if(e.min>e.max&&i(o("{0} \u7684 min \u6BD4 max \u5927\uFF0C\u6CA1\u6709\u5B9E\u4F8B\u80FD\u6EE1\u8DB3",s)),e.edit==="text")for(let n of Zt(e.at))yt.has(n)&&i(o("{0} \u4E0D\u80FD\u6309\u6587\u5B57\u7F16\u8F91\uFF1A<{1}> \u4E0D\u662F\u80FD\u6253\u5B57\u7684\u6587\u5B57",s,n))}var Yt=t=>t.split(",").some(e=>e.split(">").every(s=>[":scope","*"].includes(s.trim())));function qt(t,e){if(t===void 0)return null;u(t)||i(o("{0} \u8981\u5199\u6210\u4E00\u5F20\u8868","runtime")),N(t,Ct,"runtime.");let s=`[${J}="${e}"]`,n=(l,d)=>{try{if(!f(l))throw new Error("no selector");bt(l)}catch(p){i(o("{0} \u5199\u9519\u4E86\uFF1A{1}",d,p.message))}return l.split(",").map(p=>p.trim().startsWith(":scope")?p.trim().replace(":scope",s):`${s} ${p.trim()}`).join(", ")},{generated:r=[],attrs:c={}}=t;Array.isArray(r)||i(o("{0} \u8981\u5199\u6210\u4E00\u4E32\u6587\u5B57","runtime.generated")),u(c)||i(o("{0} \u8981\u5199\u6210\u4E00\u5F20\u8868","runtime.attrs"));for(let l of Object.values(c)){(!Array.isArray(l)||!l.every(f))&&i(o("{0} \u8981\u5199\u6210\u4E00\u4E32\u6587\u5B57","runtime.attrs"));for(let d of l)Ut.test(d)&&i(o("{0} \u662F Gallery \u81EA\u5DF1\u7684\u540D\u5B57\uFF0C\u7EC4\u4EF6\u5305\u4E0D\u80FD\u7528",d))}let a=l=>{let d=n(l,"runtime.generated");return Yt(l)&&i(o("{0} \u7684 {1} \u662F\u6574\u4E2A\u5B9E\u4F8B\uFF0C\u800C\u8FD9\u91CC\u53EA\u5199\u5B83\u751F\u6210\u7684\u8282\u70B9","runtime.generated",l)),d};return{generated:r.map(a),attrs:Object.fromEntries(Object.entries(c).map(([l,d])=>[n(l,"runtime.attrs"),d]))}}function Xt(t,e){if(t===void 0)return{kit:[],own:[]};(!Array.isArray(t)||!t.every(f))&&i(o("{0} \u8981\u5199\u6210\u4E00\u4E32\u6587\u5B57","assets"));let s=t.filter(n=>!R.has(n));for(let n of s)Gt.test(n)||i(o("assets \u91CC\u7684 {0} \u65E2\u4E0D\u662F\u5957\u4EF6\u7684\u8D44\u6E90\uFF0C\u4E5F\u4E0D\u662F\u5305\u91CC\u7684\u6587\u4EF6",n)),w(e,n)||i(o("assets \u5199\u4E86 {0}\uFF0C\u5305\u91CC\u6CA1\u6709\u8FD9\u4E2A\u6587\u4EF6",n));return{kit:t.filter(n=>R.has(n)),own:s}}function Qt(t,e,s){let n;try{n=JSON.parse(s)}catch(d){i(o("component.json \u4E0D\u662F JSON\uFF1A{0}",d.message))}u(n)||i(o("component.json \u5199\u7684\u4E0D\u662F\u4E00\u4E2A\u5BF9\u8C61")),Z.test(t)||i(o("{0} \u4E0D\u80FD\u505A\u7EC4\u4EF6\u5305\u7684 id\uFF1A\u8303\u56F4\u548C\u540D\u5B57\u90FD\u53EA\u7528\u5C0F\u5199\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u8FDE\u5B57\u7B26",t));for(let d of t.split("/"))It.has(d)&&i(o("{0} \u4E0D\u80FD\u505A\u7EC4\u4EF6\u5305\u7684 id\uFF1A{1} \u662F Windows \u7559\u7ED9\u8BBE\u5907\u7684\u540D\u5B57",t,d));if(n.id!==t&&i(o("\u6E05\u5355\u7684 id \u662F {0}\uFF0C\u548C\u5B83\u7684\u6587\u4EF6\u5939 {1} \u4E0D\u4E00\u6837",String(n.id),t)),K(n,["apiVersion"]),(!Number.isInteger(n.apiVersion)||n.apiVersion<1)&&i(o("apiVersion \u8981\u5199\u6210\u4E00\u4E2A\u6B63\u6574\u6570")),n.apiVersion!==F)throw H(o("\u8FD9\u4E2A\u7EC4\u4EF6\u5305\u8981 apiVersion {0}\uFF0C\u8FD9\u4E00\u7248 Gallery \u53EA\u652F\u6301 {1}",n.apiVersion,F),{disabled:!0,version:f(n.version)?n.version:null});N(n,Lt),K(n,["version","name","description","parts"]),f(n.version)||i(o("{0} \u8981\u5199\u6210\u6587\u5B57","version")),W(n.name,"name"),W(n.description,"description"),n.words!==void 0&&typeof n.words!="string"&&i(o("{0} \u8981\u5199\u6210\u6587\u5B57","words")),u(n.parts)||i(o("{0} \u8981\u5199\u6210\u4E00\u5F20\u8868","parts"));for(let[d,p]of Object.entries(n.parts))Ht(d,p);let r=qt(n.runtime,t),{kit:c,own:a}=Xt(n.assets,e);n.markdown!==void 0&&!Kt.includes(n.markdown)&&i(o("markdown \u53EA\u80FD\u662F parts \u6216 text")),n.schema!==void 0&&!(Number.isInteger(n.schema)&&n.schema>=1)&&i(o("schema \u8981\u5199\u6210\u4E00\u4E2A\u6B63\u6574\u6570"));let l=X(e,E);return l&&tt(l,E),{id:t,match:Et(t),parts:Vt(n.parts),...r?{runtime:r}:{},...n.schema!==void 0?{schema:n.schema}:{},apiVersion:n.apiVersion,version:n.version,name:n.name,description:n.description,words:n.words??"",assets:c,markdown:n.markdown??"parts",files:[...new Set([...q.filter(d=>w(e,d)),...a])],template:l&&Q(l),folder:e,definition:g(d=>d.update(s)),stamp:x(e,A(a))}}function te(t,e){try{let s=X(e,y);return s||i(o("\u8BFB\u4E0D\u51FA component.json")),lt(s)||i(o("{0} \u4E0D\u662F UTF-8 \u7F16\u7801\uFF1A\u8BF7\u5B58\u6210 UTF-8",y)),tt(s,y),Qt(t,e,Q(s))}catch(s){let n=Nt(s),r=g(c=>c.update(`${x(e,A([]))} ${JSON.stringify(n)}`));return{id:t.toLowerCase(),stamp:r,problem:n,disabled:s.disabled===!0,version:s.version??null}}}var T=()=>_t().root,ee=/^[a-z0-9][a-z0-9-]*(?:\/[a-z0-9][a-z0-9-]*)?$/,G=(t,e)=>[...new Set(Array.isArray(t)?t.filter(s=>typeof s=="string"&&e.test(s)):[])],I=t=>({hidden:G(t?.components?.hidden,ee),disabled:G(t?.components?.disabled,Z)}),j=o("gallery.json \u8BFB\u4E0D\u51FA\u6765\uFF1A\u6539\u597D\u8FD9\u4E2A\u6587\u4EF6\u540E\u518D\u8BD5"),ne=o("gallery.json \u4E0D\u662F Gallery \u7684\u6587\u4EF6");function O(t){if(t===null)return{value:null};let{value:e,ours:s,reads:n}=Mt(t);return s?{value:e}:{problem:n?ne:j}}function se(t){try{return O($(Y(t).marker,"utf8"))}catch(e){return e.code==="ENOENT"?O(null):{problem:j}}}var oe=["EPERM","EACCES","EBUSY","EROFS"];async function Ae(t,{id:e,hidden:s,disabled:n}){let r=Y(t).marker,c=await ft.readFile(r,"utf8").catch(m=>{if(m.code==="ENOENT")return null;i(j)}),{value:a,problem:l}=O(c);l&&i(l);let d=(m,M)=>M===void 0?m:M?[...new Set([...m,e])]:m.filter(at=>at!==e),{hidden:p,disabled:rt}=I(a),it={...u(a?.components)?a.components:{},hidden:d(p,s),disabled:d(rt,n)};await $t(r,`${JSON.stringify({...a??jt,components:it},null,2)}
4
+ `,{expect:c}).catch(m=>{throw oe.includes(m.code)&&i(o("gallery.json \u5199\u4E0D\u8FDB\u53BB\uFF1A\u53EF\u80FD\u662F\u53EA\u8BFB\u7684\uFF0C\u6216\u88AB\u522B\u7684\u7A0B\u5E8F\u5360\u7740")),m})||i(o("gallery.json \u521A\u521A\u88AB\u6539\u8FC7\uFF1A\u518D\u8BD5\u4E00\u6B21"))}var re=t=>({...t,off:!0,disabled:!0,problem:o("\u5728\u8BBE\u7F6E\u91CC\u505C\u7528\u4E86"),stamp:g(e=>e.update(`${t.stamp} off`))}),k=I(null),ie=({packages:t,problems:e,settings:s=k})=>g(n=>{for(let{id:r,stamp:c}of[...t.values(),...e.values()].sort(v))n.update(`${r} ${c}
5
+ `);n.update(`hidden ${[...s.hidden].sort().join(" ")}
6
+ `),n.update(`settings ${s.problem?.message??""}
7
+ `)});function ae(t,e){let{value:s,problem:n}=se(t);return n?{hidden:e.hidden,disabled:e.disabled,problem:n}:I(s)}function ce(t=T(),e=k,{on:s=null}={}){let n=ae(t,e),r=new Map,c=new Map;for(let{id:a,folder:l}of zt(t)){let d=te(a,l);(d.problem?c:r).set(d.id,d)}for(let a of r.keys())c.delete(a);for(let a of n.disabled)!r.has(a)||a===s||(c.set(a,re(r.get(a))),r.delete(a));return{packages:r,problems:c,settings:n,stamp:ie({packages:r,problems:c,settings:n})}}var h=new Map;function ve(t=T()){let e=b.resolve(t);return h.has(e)||h.set(e,ce(e)),h.get(e)}var xe=(t,e)=>{h.set(b.resolve(t),e)},Ne=(t=T())=>{h.delete(b.resolve(t))},U=(t,e)=>xt(t,()=>Tt(e)),_=t=>({zh:U("zh",t),en:U("en",t)}),Te=({settings:t})=>t.problem?_(t.problem):null,et=(t,e)=>t.problem?t.disabled?"disabled":"broken":St(t.id,e),nt=({id:t,match:e,parts:s,runtime:n,schema:r})=>({id:t,match:e,parts:s,...n?{runtime:n}:{},...r!==void 0?{schema:r}:{}}),Ie=({packages:t,problems:e})=>[...[...t.values()].map(nt),...[...e.values()].map(({id:s,problem:n})=>({id:s,problem:_(n)}))],le=t=>`DocKit.describe(${JSON.stringify(t)});`.replace(/</g,"\\u003c"),S=({id:t,stamp:e},s)=>`/__gallery/components/${t}/${s}?v=${e}`;function de(t){let e=`${kt}="${t.id}"`,s=n=>t.files.includes(n);return{styles:s("style.css")?[`<link rel="stylesheet" href="${S(t,"style.css")}" ${e}>`]:[],scripts:[`<script ${e}>${le({...nt(t),...s("kit.js")?{script:!0}:{}})}</script>`,...s("kit.js")?[`<script src="${S(t,"kit.js")}" ${e}></script>`]:[]]}}var je=({folder:t},e)=>w(t,e),_e=({folder:t,files:e})=>x(t,A(e));function B(t,e){let s=L(t,{sourceCodeLocationInfo:!0}).childNodes.filter(r=>r.tagName||r.nodeName==="#text"&&r.value.trim()),[n]=s;return s.length===1&&n.tagName&&ut(n)&&At(n,J)===e&&n.sourceCodeLocation.endTag?n:null}function pe(t,e){let s=B(t,e),n=s&&z(s),r=n&&B(n,e);return r?{markup:n,root:r}:null}function st({id:t,template:e,parts:s}){if(!e)return{};let n=pe(e,t);if(!n)return{problem:o("template.html \u8981\u662F\u8FD9\u4E2A\u7EC4\u4EF6\u5305\u7684\u4E00\u4E2A\u5B9E\u4F8B\uFF0C\u6709\u81EA\u5DF1\u7684\u7ED3\u675F\u6807\u7B7E\uFF0C\u6B64\u5916\u4EC0\u4E48\u90FD\u6CA1\u6709")};let r=[];if(vt({childNodes:[n.root]},a=>{Ot(a.tagName,a.attrs)&&r.push(a.tagName)}),r.length>0)return{problem:o("template.html \u91CC\u7684 <{0}> \u8FDB\u4E0D\u4E86\u65B0\u5EFA\u7684\u5757\uFF1A\u811A\u672C\u3001\u4E8B\u4EF6\u3001\u6837\u5F0F\u548C Gallery \u81EA\u5DF1\u7684\u6807\u8BB0\u90FD\u4E0D\u5199\u5728\u6A21\u677F\u91CC",r[0])};let c=Object.entries(s).find(([,a])=>{let l=wt(n.root,a.at).length;return l<(a.optional?0:a.min??1)||l>(a.edit==="flow"?1:a.max??1/0)});return c?{problem:o("template.html \u7684 {0} \u548C\u6E05\u5355\u5199\u7684\u6570\u76EE\u4E0D\u7B26",c[0])}:{markup:n.markup}}var Me=t=>st(t).problem??null,ot=t=>st(t).markup??null,ze=({packages:t,settings:e=k})=>[...t.values()].sort(v).map(s=>({id:s.id,version:s.version,name:s.name,description:s.description,words:s.words,definition:s.definition,stamp:s.stamp,template:ot(s),preview:s.files.includes("preview.svg")?S(s,"preview.svg"):null,state:et(s,e),markdown:s.markdown,assets:s.assets,tags:de(s)})),Le=({packages:t,problems:e,settings:s=k})=>[...t.values(),...e.values()].sort(v).map(n=>({id:n.id,version:n.version??null,name:n.name??null,description:n.description??null,state:et(n,s),reason:n.problem&&!n.off?_(n.problem):null,template:!!ot(n),hidden:s.hidden.includes(n.id),disabled:s.disabled.includes(n.id)})),Pe=({hidden:t,disabled:e})=>`settings ${t.join(",")} ${e.join(",")}`;export{Ae as a,ie as b,ce as c,ve as d,xe as e,Ne as f,U as g,Te as h,Ie as i,le as j,de as k,je as l,_e as m,pe as n,Me as o,ot as p,ze as q,Le as r,Pe as s};
@@ -0,0 +1,3 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{a}from"./chunk-TX6JH7TR.mjs";import"./chunk-E7LWZRXY.mjs";import{b as d,f as J,i as k}from"./chunk-NSKUTQ5J.mjs";import{c as F}from"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import{f as D}from"./chunk-CY2FNNAB.mjs";import{a as A}from"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import{existsSync as E}from"node:fs";import R from"node:fs/promises";import m from"node:path";import{iconKind as q}from"../browser/shared/emoji/icon-value.mjs";import{writeAtomic as z}from"../browser/shared/files.mjs";import{reportsDirectory as C}from"../browser/shared/paths.mjs";import{roleOf as M}from"../browser/shared/reports.mjs";import{documentDirectory as P,documentFiles as T,pageSlug as U}from"../browser/shared/workspace.mjs";var K=o=>o.replace(/\s+/g," ").trim(),_=o=>o.replace(/^[a-z]:\/(?:[^/]+\/)*?(?=icons\/(?:tabler\/)?[^/]+$)/i,"/"),h=o=>o===null?"none":JSON.stringify(o);async function ie(o){let{positional:u,values:c}=J({values:["--title","--icon","--description"],argv:o});if(u.length!==1)throw new d("Name one document, then what to set: --title, --icon, --description.");if(!["--title","--icon","--description"].some(e=>c.has(e)))throw new d('Say what to set: --title "<title>", --icon <emoji|none|\u2026>, --description "<text>".');let n=c.has("--title")?K(c.get("--title")):void 0,p=c.has("--description")?K(c.get("--description")):void 0;if(n==="")throw new d("--title takes the words of the title: a document's title is never empty.");if(p==="")throw new d("--description takes words: a document's description is never empty.");let t;if(c.has("--icon")){let e=_(c.get("--icon").trim()),f=e==="none"?"none":q(e);if(!f||/["<>&]/.test(e))throw new d(`Not a page icon: ${e} (an emoji, none, an icon of the \u56FE\u6807 tab as /icons/<name>_<color>.svg, or a picture of the document's assets/).`);if(f==="glyph"&&!F(e))throw new d(`No such icon of the \u56FE\u6807 tab: ${e}.`);t=f==="none"?null:e}let{slug:w}=await k(u[0]),$=P(w,C);(w===await U(C)||await M($)==="instructions")&&(console.error(`${u[0]} is the \u5199\u4F5C\u504F\u597D page: only the user changes it.`),process.exit(1));let{html:r,json:s}=T($);E(r)||(console.error(`No document "${u[0]}": ${a(r)} does not exist (gallery list lists those there are).`),process.exit(1)),t&&q(t)==="image"&&!E(m.join($,...t.split("/")))&&(console.error(`No picture ${t} in ${a($)}: put it in its assets/ first.`),process.exit(1));let i;try{if(i=JSON.parse(await R.readFile(s,"utf8")),!i||typeof i!="object"||Array.isArray(i))throw new Error("not an object")}catch(e){console.error(`${a(s)} does not read (${e.code??e.message}): mend it first.`),process.exit(1)}let b=null,N=!1;for(let e=1;n!==void 0||t!==void 0;e++){let f=await R.readFile(r,"utf8"),v=A(f),y=D(v,{title:n,icon:t});if(y.missing&&(console.error(`${a(r)} has no title to ${n!==void 0?"set":"put the icon before"}: write it as an h1.doc-title in the page's header (writing-html.md, "The page").`),process.exit(1)),b=y.before,y.text===v)break;if(await z(r,y.text,{expect:f})){N=!0;break}e===3&&(console.error(`${a(r)} kept changing while it was being written (the page saving, or an Agent writing it?): nothing written. Run gallery set again.`),process.exit(1))}let l={...i};n!==void 0&&(l.title=n),p!==void 0&&(l.description=p),t===null?delete l.icon:t!==void 0&&(l.icon=t);let x=JSON.stringify(l)!==JSON.stringify(i);x&&await z(s,`${JSON.stringify(l,null,2)}
3
+ `);let S=m.basename(r),g=[];n!==void 0&&g.push(` title: ${h(b.title)} \u2192 ${h(n)} (${S}'s h1 and <title>, ${m.basename(s)})`),t!==void 0&&g.push(` icon: ${h(b.icon)} \u2192 ${h(t)} (${S}'s header, ${m.basename(s)})`),p!==void 0&&g.push(` description: ${h(typeof i.description=="string"?i.description:null)} \u2192 ${h(p)} (${m.basename(s)})`);let j=[...N?[a(r)]:[],...x?[a(s)]:[]];if(j.length===0){console.log(`Nothing to change: ${w} has ${g.length===1?"that already":"those already"}.`);return}console.log(`Set ${w}:`);for(let e of g)console.log(e);let O=j.length===1;console.log(`Re-read ${j.join(", ")} before editing ${O?"it":"them"}: gallery set wrote ${O?"it":"them"} (${[...N?[`${S}: its header`]:[],...x?[`${m.basename(s)}: ${["title","icon","description"].filter(e=>JSON.stringify(l[e])!==JSON.stringify(i[e])).join(", ")}`]:[]].join("; ")}).`)}export{ie as run};
@@ -1,4 +1,4 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{e as n,f as g}from"./chunk-YXAUQPVK.mjs";import{b as m,f as d}from"./chunk-NSKUTQ5J.mjs";import"./chunk-5L7RYZCL.mjs";import{spawn as P}from"node:child_process";import h from"node:fs/promises";import R from"node:path";import{projectRoot as v,release as k,reportsDirectory as t}from"../browser/shared/paths.mjs";import{answerOf as S,findPreviewServer as x,portIsFree as E,readAnnouncement as G}from"../browser/shared/preview-server.mjs";import{layoutOf as $}from"../browser/shared/workspace.mjs";var b=a=>new Promise(s=>setTimeout(s,a));async function O(a){let{positional:s,values:l}=d({values:["--port"],argv:a});if(s.length>0)throw new m(`gallery serve takes no arguments: ${s[0]}`);let o=l.has("--port")?Number(l.get("--port")):null;if(o!==null&&!(Number.isInteger(o)&&o>0&&o<65536))throw new m(`--port takes a port number: ${l.get("--port")}`);let i=await G({reportsDirectory:t}),f=i?await S(i,t,1e4):"no";f!=="no"&&(console.error(`This workspace's Gallery server runs already: ${n(i.port)} (pid ${i.pid}${f==="busy"?", not answering now":""}). gallery stop stops it; one server serves a workspace.`),process.exit(1));let r=null;if(o!==null)await E(o)||(console.error(`Port ${o} is taken: name another (--port), or leave it out for the first free one.`),process.exit(1)),r=o;else{for(let e of await g())if(await E(e)){r=e;break}r===null&&(console.error("No port from 4317 is free: name one (--port <n>)."),process.exit(1))}if(k){process.env.GALLERY_SERVER_KIND="cli";let{startProductionServer:e}=await import("./chunk-5LEK2CBS.mjs");await e({port:r,kind:"cli"}),await h.writeFile($(t).lastPortFile,`${r}
3
- `).catch(()=>{}),console.log(`Gallery serves ${t} at ${n(r)} (Chrome or Edge). Ctrl+C stops it.`);return}let{writeSharedAssets:y}=await import("./chunk-5TEK3RAD.mjs");await y();let c=P(process.execPath,[R.join(v,"node_modules","vite","bin","vite.js"),"--host","127.0.0.1","--port",String(r),"--strictPort"],{cwd:v,env:{...process.env,GALLERY_WORKSPACE:t,GALLERY_SERVER_KIND:"cli"},stdio:"inherit"});for(let e of["SIGINT","SIGTERM"])process.on(e,()=>c.kill(e));let w=new Promise(e=>c.once("exit",(u,p)=>e(u??(p?1:0))));for(;;){let e=await Promise.race([w.then(p=>({code:p})),b(300).then(()=>null)]);if(e&&process.exit(e.code),(await x({reportsDirectory:t,answering:!0,timeout:2e3}))?.pid===c.pid)break}await h.writeFile($(t).lastPortFile,`${r}
2
+ import{e as n,f as g}from"./chunk-5ZKJ3H4P.mjs";import{b as m,f as d}from"./chunk-NSKUTQ5J.mjs";import"./chunk-5L7RYZCL.mjs";import{spawn as P}from"node:child_process";import h from"node:fs/promises";import R from"node:path";import{projectRoot as v,release as k,reportsDirectory as t}from"../browser/shared/paths.mjs";import{answerOf as S,findPreviewServer as x,portIsFree as E,readAnnouncement as G}from"../browser/shared/preview-server.mjs";import{layoutOf as $}from"../browser/shared/workspace.mjs";var b=a=>new Promise(s=>setTimeout(s,a));async function O(a){let{positional:s,values:l}=d({values:["--port"],argv:a});if(s.length>0)throw new m(`gallery serve takes no arguments: ${s[0]}`);let o=l.has("--port")?Number(l.get("--port")):null;if(o!==null&&!(Number.isInteger(o)&&o>0&&o<65536))throw new m(`--port takes a port number: ${l.get("--port")}`);let i=await G({reportsDirectory:t}),f=i?await S(i,t,1e4):"no";f!=="no"&&(console.error(`This workspace's Gallery server runs already: ${n(i.port)} (pid ${i.pid}${f==="busy"?", not answering now":""}). gallery stop stops it; one server serves a workspace.`),process.exit(1));let r=null;if(o!==null)await E(o)||(console.error(`Port ${o} is taken: name another (--port), or leave it out for the first free one.`),process.exit(1)),r=o;else{for(let e of await g())if(await E(e)){r=e;break}r===null&&(console.error("No port from 4317 is free: name one (--port <n>)."),process.exit(1))}if(k){process.env.GALLERY_SERVER_KIND="cli";let{startProductionServer:e}=await import("./chunk-VPD2PS35.mjs");await e({port:r,kind:"cli"}),await h.writeFile($(t).lastPortFile,`${r}
3
+ `).catch(()=>{}),console.log(`Gallery serves ${t} at ${n(r)} (Chrome or Edge). Ctrl+C stops it.`);return}let{writeSharedAssets:y}=await import("./chunk-VNV55RUA.mjs");await y();let c=P(process.execPath,[R.join(v,"node_modules","vite","bin","vite.js"),"--host","127.0.0.1","--port",String(r),"--strictPort"],{cwd:v,env:{...process.env,GALLERY_WORKSPACE:t,GALLERY_SERVER_KIND:"cli"},stdio:"inherit"});for(let e of["SIGINT","SIGTERM"])process.on(e,()=>c.kill(e));let w=new Promise(e=>c.once("exit",(u,p)=>e(u??(p?1:0))));for(;;){let e=await Promise.race([w.then(p=>({code:p})),b(300).then(()=>null)]);if(e&&process.exit(e.code),(await x({reportsDirectory:t,answering:!0,timeout:2e3}))?.pid===c.pid)break}await h.writeFile($(t).lastPortFile,`${r}
4
4
  `).catch(()=>{}),console.log(`Gallery serves ${t} at ${n(r)} (Chrome or Edge). Ctrl+C stops it.`),process.exit(await w)}export{O as run};
@@ -0,0 +1,6 @@
1
+ import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
+ import{b as Q}from"./chunk-NO5NJCHO.mjs";import{f as H}from"./chunk-S6O4UHLC.mjs";import{a as b,b as J}from"./chunk-TX6JH7TR.mjs";import{a as X,b as _,c as B,i as G}from"./chunk-5ZKJ3H4P.mjs";import{a as Z,b as ee}from"./chunk-QUPLVPB2.mjs";import{c as V,d as Y,e as T}from"./chunk-LCTHTZIL.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-E7LWZRXY.mjs";import{b as N,f as K,g as P}from"./chunk-NSKUTQ5J.mjs";import{k as q}from"./chunk-6QXGZM36.mjs";import{b as A}from"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import{b as U,h as W}from"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import v from"node:fs/promises";import se from"node:os";import x from"node:path";import{IMPORT_EXT as re,kindOf as ie}from"../browser/shared/import-types.mjs";import{reportsDirectory as M}from"../browser/shared/paths.mjs";import{documentDirectory as oe,documentFiles as S}from"../browser/shared/workspace.mjs";var ae=Object.values(re).flat().join(" "),E=m=>{let s=m.normalize("NFKD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return/[a-z]{3}/.test(s)?s.length<=60?s:s.slice(0,61).replace(/-[^-]*$/,"")||s.slice(0,60):""},j=(m,s)=>`${m} ${s}${m===1?"":"s"}`;function ce(m,s,p){let n=(g,r=s)=>(r.match(g)??[]).length,f=n(/<ol class="doc-flow"/g,p),u=n(/<li id="fn-\d+"/g,p),w=[[n(/<section class="doc-section"/g),"section"],[n(/<h[2-4][\s>]/g),"heading"],[n(/<p[\s>]/g),"paragraph"],[n(/<(?:ul|ol)[\s>]/g),"list"],[n(/<table\b/g),"table"],[n(/class="doc-math-(?:inline|block)"/g,p),"formula"],[n(/<div class="doc-code"/g),"code block"],[n(/<figure class="doc-image"/g),"picture"],[f,"flow"],[u,"footnote"]].filter(([g])=>g>0).map(([g,r])=>j(g,r)),d=(m.raws?.length??0)-f-(u?1:0);return d>0&&w.push(`${j(d,"HTML block")} kept as written`),w}async function Te(m){let{positional:s,options:p}=K({options:["--no-preview","--no-browser"],argv:m}),[n,f,u]=s;if(s.length<1||s.length>3||!n)throw new N("Name the file; then the slug and the title, if you choose them.");let w=ie(n);if(!w)throw new N(`Not a kind of file gallery import takes: ${n} (${ae}).`);f!==void 0&&P(f);let d=x.resolve(n);await v.stat(d).then(a=>a.isFile(),()=>!1)||(console.error(`No such file: ${n}`),process.exit(1));let g=f!==void 0?await Q(f):null;g&&(console.error(g),process.exit(1));let r=x.basename(d),O=await v.mkdtemp(x.join(se.tmpdir(),"gallery-import-")),L,y,R;try{let a,$=[];if(w==="markdown")a=[{...await Y(d,O),from:r,children:[]}];else try{({pages:a,skipped:$}=await V([{file:d,name:r}],O))}catch(e){console.error(`${r} could not be read: ${e.message}`),process.exit(1)}a.length===0&&(console.error(`Nothing in ${r} could be read as a page${$.length?` (not taken: ${$.join(", ")})`:""}.`),process.exit(1)),u?.trim()&&(a[0]={...a[0],title:u.replace(/\s+/g," ").trim()});let C=new Map,te=ee({edits:{},reports:{},reportsDirectory:M});y=(await Z(a,{create:async(e,t,i,{lang:l})=>{let{directory:o}=await A(e,t,i,{blank:!0,lang:l});C.set(e,await v.readFile(S(o).html,"utf8"))},slugOf:(e,t)=>t===0&&f!==void 0?f:te.freeSlug(E(e.title)||E(e.from?.replace(/\.[^.]+$/,"")??"")||E(r.replace(/\.[^.]+$/,""))||"doc"),folderOf:e=>oe(e,M),fill:e=>T(e),place:(e,t)=>H(e,{parent:t})})).made;let D=[],I=(e,t)=>{D.push({page:e,depth:t});for(let i of e.children??[])I(i,t+1)};for(let e of a)I(e,0);let h=await Promise.all(D.map(async({page:e,depth:t},i)=>{let l=y[i],o=oe(l,M),c=S(o).html,k=await v.readFile(c,"utf8"),ne=(await T({source:C.get(l),nodes:e.nodes,icon:e.icon,own:e.own})).replace(/<p>\u{E000}\d+\u{E001}<\/p>/gu,""),le=W(U(k,{finish:q}).text);return{slug:l,depth:t,page:e,directory:o,htmlFile:c,made:ce(e,ne,k),readOnly:le}}));if(L={slug:y[0]},h.length===1){let[{page:e,directory:t,htmlFile:i,made:l,readOnly:o}]=h;if(console.log(`Created ${b(i)} and ${x.basename(S(t).json)} from ${r}`),console.log(`Title: ${e.title}`),console.log(`Made: ${l.length?l.join(", "):"nothing but the title"}${e.files.length?` (${j(e.files.length,"file")} in ${b(x.join(t,"assets"))})`:""}`),e.notes?.length){console.log(`Not brought as the file has it (${e.notes.length}):`);for(let c of e.notes)console.log(` ${c.line?`line ${c.line}: `:""}${c.text}`)}if(o.length){console.log(`Text the preview leaves read-only (${o.length}), by doc.html's lines as gallery check gives them:`);for(let c of o)console.log(` ${c}`)}}else{console.log(`Created ${j(h.length,"document")} from ${r} (each nested as in the file):`);for(let{slug:i,depth:l,page:o,htmlFile:c,made:k}of h)console.log(`${" ".repeat(l+1)}${i} ${o.title} ${b(c)}`),console.log(`${" ".repeat(l+2)}Made: ${k.length?k.join(", "):"nothing but the title"}${o.files.length?` (${j(o.files.length,"file")} in its assets/)`:""}`);let e=h.flatMap(({slug:i,page:l})=>(l.notes??[]).map(o=>` ${i}: ${o.line?`line ${o.line}: `:""}${o.text}`));e.length&&console.log(`Not brought as the file has it (${e.length}):
3
+ ${e.join(`
4
+ `)}`);let t=h.flatMap(({slug:i,readOnly:l})=>l.map(o=>` ${i}: ${o}`));t.length&&console.log(`Text the preview leaves read-only (${t.length}), by doc.html's lines as gallery check gives them:
5
+ ${t.join(`
6
+ `)}`)}$.length&&console.log(`Not taken from ${r} (${$.length}): ${$.join(", ")}`);for(let e of await J())console.log(e);R=`edit ${b(h[0].htmlFile)}${h.length>1?" (and the others)":""} into the document as \u5199\u4F5C\u504F\u597D asks.`}finally{await v.rm(O,{recursive:!0,force:!0})}let F=await G(L.slug,{skipped:B(p),command:`gallery import ${r}`});console.log(X(F,R)),console.log(`Hand in: gallery export ${y.join(" ")}, then gallery qa ${y.join(" ")}`);let z=await _(F,p);z&&console.log(z);for(let a of F)console.log(a)}export{Te as run};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{g as M}from"./chunk-HQQMJCQJ.mjs";import{a as O}from"./chunk-HYMEEXKN.mjs";import{b as E}from"./chunk-5FRMCDPY.mjs";import{F as I,K as S}from"./chunk-NFIBI4IP.mjs";import d from"node:fs/promises";import b from"node:path";import{isInstance as T}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as _}from"../browser/shared/components/installed.mjs";import{exportSourceOf as q}from"../browser/shared/export-wrap.mjs";import{sha256 as w}from"../browser/shared/files.mjs";import{attr as g,hasClass as y}from"../browser/shared/html-tree.mjs";import{editStateDirectory as F,exportsDirectory as z,qaDirectory as G,reportsDirectory as H}from"../browser/shared/paths.mjs";import{documentDirectory as K,documentFiles as Q}from"../browser/shared/workspace.mjs";function V(t,e=null){return t.tagName==="figure"&&y(t,"doc-figure")||t.tagName==="div"&&(y(t,"doc-code")||y(t,"doc-diff"))||e===D||T(t)||y(t,"doc-flow")||y(t,"doc-sheet-shell")||g(t,"data-doc-sheets")!==void 0?0:t.tagName==="figure"||y(t,"doc-columns")?1:y(t,"doc-table-wrap")?2:3}function X(t){let e=new Map,n=new Map;for(let i of I(t).units)i.blockId&&!n.has(i.blockId)&&n.set(i.blockId,i.kind);let a=new Map,r=new Map,o=new Map,f=i=>!!i.tagName&&g(i,"data-block-id")!==void 0,u=(i,c)=>{if(i.nodeName==="#text")return i.value;if(!i.tagName||i.tagName==="template")return"";let s=g(i,"data-doc-chart-data")?.trim();s&&a.get(c).push(s);let l=g(i,"data-doc-chart-source")?.trim();l&&!r.has(l)&&r.set(l,c);let h=i.attrs.map(({name:k,value:N})=>`${k}="${N}"`).sort().join(" ");return`<${i.tagName} ${h}>${(i.childNodes??[]).map(k=>f(k)?"":u(k,c)).join("")}</${i.tagName}>`},m=(i,c)=>{for(let s of i.childNodes??[]){if(!s.tagName||s.tagName==="template")continue;let l=g(s,"data-block-id"),h=c;if(l!==void 0&&!e.has(l)){let k=[s.tagName,...(g(s,"class")??"").split(/\s+/).filter(Boolean).slice(0,1)].join("."),N=o.get(c)??0;o.set(c,N+1),a.set(l,[]);let v=V(s,n.get(l)),x=s.sourceCodeLocation,U=x?(x.endOffset??x.startTag?.endOffset??x.startOffset)-x.startOffset:0,B=u(s,l).replace(R," ");e.set(l,{hash:w(B).slice(0,16),bare:w(B.replace(`data-block-id="${l}"`,"")).slice(0,16),rank:v,card:v<3,whole:n.get(l)===D,figure:n.get(l)===tt,tag:k,parent:c,at:N,size:U,package:T(s)?g(s,_)??null:null}),h=l}m(s,h)}};m(O(t),null);let p=new Map([...e].map(([i,{hash:c,bare:s}])=>[i,{hash:c,bare:s}]));for(let[i,c]of a){let s=c.map(l=>p.get(r.get(l))).filter(Boolean);s.length&&(e.get(i).hash=w([p.get(i).hash,...s.map(({hash:l})=>l)].join("|")).slice(0,16),e.get(i).bare=w([p.get(i).bare,...s.map(({bare:l})=>l)].join("|")).slice(0,16))}return e}function Y(t){let e=[],n=a=>{for(let r of a.childNodes??[])if(!(!r.tagName||r.tagName==="template"||g(r,"data-block-id")!==void 0))if(r.tagName==="script"||r.tagName==="style"){let o=r.attrs.map(({name:f,value:u})=>`${f}="${u}"`).sort().join(" ");e.push(`<${r.tagName} ${o}>${(r.childNodes??[]).map(f=>f.value??"").join("")}`.replace(R," "))}else n(r)};return n(O(t)),e.length?w(e.join("|")).slice(0,16):""}var Z=t=>Object.fromEntries(M(t).map(({id:e,stamp:n})=>[e,n])),D="block",tt="figure",R=/[ \t\n\f\r]+/g,et=["export","preview"];function st(t){if(t==null)return null;try{let{blocks:e,places:n,moved:a,unseen:r,from:o,time:f,idless:u,page:m,packages:p}=JSON.parse(t)??{};if(!e||typeof e!="object"||Array.isArray(e))return null;let i=n&&typeof n=="object"&&!Array.isArray(n)?n:{},c=s=>Array.isArray(s)?s.filter(l=>typeof l=="string"):[];return{blocks:Object.fromEntries(Object.entries(e).filter(([,s])=>typeof s=="string")),places:Object.fromEntries(Object.entries(i).filter(([,s])=>Array.isArray(s)&&s.length===2&&(s[0]===null||typeof s[0]=="string")&&Number.isInteger(s[1]))),moved:c(a),unseen:c(r),...et.includes(o)?{from:o,time:Number.isFinite(f)?f:null}:{},...c(u).length?{idless:c(u)}:{},...typeof m=="string"?{page:m}:{},...p&&typeof p=="object"&&!Array.isArray(p)?{packages:Object.fromEntries(Object.entries(p).filter(([,s])=>typeof s=="string"))}:{}}}catch{return null}}var $="ge-idless-";function nt(t,{from:e,time:n}){let a=0,{text:r}=S(E(t).text,()=>`${$}${a++}`),o=Z(r),f={blocks:{},places:{},moved:[],unseen:[],from:e,time:n,page:Y(r),...Object.keys(o).length?{packages:o}:{}},u=[];for(let[m,{hash:p,bare:i,card:c,parent:s,at:l}]of X(r)){if(m.startsWith($)){u.push(i);continue}f.blocks[m]=p,s?.startsWith($)||(f.places[m]=[s,l]),c&&f.unseen.push(m)}return u.length?{...f,idless:u}:f}function yt(t,e){if(!e?.idless?.length)return e;let n=new Map;for(let o of e.idless)n.set(o,(n.get(o)??0)+1);let a={...e,blocks:{...e.blocks},unseen:[...e.unseen]};for(let[o,{hash:f,bare:u,card:m}]of t)Object.hasOwn(e.blocks,o)||!n.get(u)||(n.set(u,n.get(u)-1),a.blocks[o]=f,m&&a.unseen.push(o));let r=[...n].flatMap(([o,f])=>Array(f).fill(o));return r.length?a.idless=r:delete a.idless,a}var at=/<[^>]*\sdata-doc-placeholder\b/,j=t=>b.join(G,t),L=t=>b.join(j(t),"blocks.json"),P=t=>b.join(j(t),"exported.html");async function W(t){return st(await d.readFile(L(t),"utf8").catch(()=>null))!==null}async function C(t,e,n){let a=async c=>d.readFile(c).then(s=>({bytes:s,file:c}),()=>null),r=await a(P(t)),o=[r];if(e){let c=e.slice(0,16),s=b.join(F,"history",t),l=await d.readdir(s).catch(()=>[]);o.push(...await Promise.all(l.filter(h=>h.endsWith(`-${c}.html`)).map(h=>a(b.join(s,h))))),o.push(await a(b.join(F,"snapshots",`${c}.html`)))}let f=r?(await d.stat(r.file).catch(()=>null))?.mtimeMs??null:null,m=!(r&&e&&n!==null&&f!==null&&f>n&&w(r.bytes)!==e)&&e&&o.find(c=>c&&w(c.bytes)===e),p=m||r;if(!p)return null;let i=m&&n!==null?n:p===r?f??n:(await d.stat(p.file).catch(()=>null))?.mtimeMs??n;return{text:p.bytes.toString("utf8"),time:i??null}}async function A(t){let e=b.join(z,`${t}.html`),[n,a]=await Promise.all([d.readFile(e,"utf8").catch(()=>null),d.stat(e).catch(()=>null)]);return n===null||!a?null:{said:q(n),time:a.mtimeMs}}async function J(t,e,n){if(at.test(e))return!1;let a=nt(e,n);return!Object.keys(a.blocks).length&&!a.idless?!1:(await d.mkdir(j(t),{recursive:!0}),await d.writeFile(L(t),`${JSON.stringify(a)}
2
+ import{g as M}from"./chunk-BGGDRNYQ.mjs";import{a as O}from"./chunk-HYMEEXKN.mjs";import{b as E}from"./chunk-CY2FNNAB.mjs";import{E as I,J as S}from"./chunk-L3QKH4OK.mjs";import d from"node:fs/promises";import b from"node:path";import{isInstance as T}from"../browser/shared/components/index.mjs";import{ATTRIBUTE as _}from"../browser/shared/components/installed.mjs";import{exportSourceOf as q}from"../browser/shared/export-wrap.mjs";import{sha256 as w}from"../browser/shared/files.mjs";import{attr as g,hasClass as y}from"../browser/shared/html-tree.mjs";import{editStateDirectory as F,exportsDirectory as z,qaDirectory as G,reportsDirectory as H}from"../browser/shared/paths.mjs";import{documentDirectory as K,documentFiles as Q}from"../browser/shared/workspace.mjs";function V(t,e=null){return t.tagName==="figure"&&y(t,"doc-figure")||t.tagName==="div"&&(y(t,"doc-code")||y(t,"doc-diff"))||e===D||T(t)||y(t,"doc-flow")||y(t,"doc-sheet-shell")||g(t,"data-doc-sheets")!==void 0?0:t.tagName==="figure"||y(t,"doc-columns")?1:y(t,"doc-table-wrap")?2:3}function X(t){let e=new Map,n=new Map;for(let i of I(t).units)i.blockId&&!n.has(i.blockId)&&n.set(i.blockId,i.kind);let a=new Map,r=new Map,o=new Map,f=i=>!!i.tagName&&g(i,"data-block-id")!==void 0,u=(i,c)=>{if(i.nodeName==="#text")return i.value;if(!i.tagName||i.tagName==="template")return"";let s=g(i,"data-doc-chart-data")?.trim();s&&a.get(c).push(s);let l=g(i,"data-doc-chart-source")?.trim();l&&!r.has(l)&&r.set(l,c);let h=i.attrs.map(({name:k,value:N})=>`${k}="${N}"`).sort().join(" ");return`<${i.tagName} ${h}>${(i.childNodes??[]).map(k=>f(k)?"":u(k,c)).join("")}</${i.tagName}>`},m=(i,c)=>{for(let s of i.childNodes??[]){if(!s.tagName||s.tagName==="template")continue;let l=g(s,"data-block-id"),h=c;if(l!==void 0&&!e.has(l)){let k=[s.tagName,...(g(s,"class")??"").split(/\s+/).filter(Boolean).slice(0,1)].join("."),N=o.get(c)??0;o.set(c,N+1),a.set(l,[]);let v=V(s,n.get(l)),x=s.sourceCodeLocation,U=x?(x.endOffset??x.startTag?.endOffset??x.startOffset)-x.startOffset:0,B=u(s,l).replace(R," ");e.set(l,{hash:w(B).slice(0,16),bare:w(B.replace(`data-block-id="${l}"`,"")).slice(0,16),rank:v,card:v<3,whole:n.get(l)===D,figure:n.get(l)===tt,tag:k,parent:c,at:N,size:U,package:T(s)?g(s,_)??null:null}),h=l}m(s,h)}};m(O(t),null);let p=new Map([...e].map(([i,{hash:c,bare:s}])=>[i,{hash:c,bare:s}]));for(let[i,c]of a){let s=c.map(l=>p.get(r.get(l))).filter(Boolean);s.length&&(e.get(i).hash=w([p.get(i).hash,...s.map(({hash:l})=>l)].join("|")).slice(0,16),e.get(i).bare=w([p.get(i).bare,...s.map(({bare:l})=>l)].join("|")).slice(0,16))}return e}function Y(t){let e=[],n=a=>{for(let r of a.childNodes??[])if(!(!r.tagName||r.tagName==="template"||g(r,"data-block-id")!==void 0))if(r.tagName==="script"||r.tagName==="style"){let o=r.attrs.map(({name:f,value:u})=>`${f}="${u}"`).sort().join(" ");e.push(`<${r.tagName} ${o}>${(r.childNodes??[]).map(f=>f.value??"").join("")}`.replace(R," "))}else n(r)};return n(O(t)),e.length?w(e.join("|")).slice(0,16):""}var Z=t=>Object.fromEntries(M(t).map(({id:e,stamp:n})=>[e,n])),D="block",tt="figure",R=/[ \t\n\f\r]+/g,et=["export","preview"];function st(t){if(t==null)return null;try{let{blocks:e,places:n,moved:a,unseen:r,from:o,time:f,idless:u,page:m,packages:p}=JSON.parse(t)??{};if(!e||typeof e!="object"||Array.isArray(e))return null;let i=n&&typeof n=="object"&&!Array.isArray(n)?n:{},c=s=>Array.isArray(s)?s.filter(l=>typeof l=="string"):[];return{blocks:Object.fromEntries(Object.entries(e).filter(([,s])=>typeof s=="string")),places:Object.fromEntries(Object.entries(i).filter(([,s])=>Array.isArray(s)&&s.length===2&&(s[0]===null||typeof s[0]=="string")&&Number.isInteger(s[1]))),moved:c(a),unseen:c(r),...et.includes(o)?{from:o,time:Number.isFinite(f)?f:null}:{},...c(u).length?{idless:c(u)}:{},...typeof m=="string"?{page:m}:{},...p&&typeof p=="object"&&!Array.isArray(p)?{packages:Object.fromEntries(Object.entries(p).filter(([,s])=>typeof s=="string"))}:{}}}catch{return null}}var $="ge-idless-";function nt(t,{from:e,time:n}){let a=0,{text:r}=S(E(t).text,()=>`${$}${a++}`),o=Z(r),f={blocks:{},places:{},moved:[],unseen:[],from:e,time:n,page:Y(r),...Object.keys(o).length?{packages:o}:{}},u=[];for(let[m,{hash:p,bare:i,card:c,parent:s,at:l}]of X(r)){if(m.startsWith($)){u.push(i);continue}f.blocks[m]=p,s?.startsWith($)||(f.places[m]=[s,l]),c&&f.unseen.push(m)}return u.length?{...f,idless:u}:f}function yt(t,e){if(!e?.idless?.length)return e;let n=new Map;for(let o of e.idless)n.set(o,(n.get(o)??0)+1);let a={...e,blocks:{...e.blocks},unseen:[...e.unseen]};for(let[o,{hash:f,bare:u,card:m}]of t)Object.hasOwn(e.blocks,o)||!n.get(u)||(n.set(u,n.get(u)-1),a.blocks[o]=f,m&&a.unseen.push(o));let r=[...n].flatMap(([o,f])=>Array(f).fill(o));return r.length?a.idless=r:delete a.idless,a}var at=/<[^>]*\sdata-doc-placeholder\b/,j=t=>b.join(G,t),L=t=>b.join(j(t),"blocks.json"),P=t=>b.join(j(t),"exported.html");async function W(t){return st(await d.readFile(L(t),"utf8").catch(()=>null))!==null}async function C(t,e,n){let a=async c=>d.readFile(c).then(s=>({bytes:s,file:c}),()=>null),r=await a(P(t)),o=[r];if(e){let c=e.slice(0,16),s=b.join(F,"history",t),l=await d.readdir(s).catch(()=>[]);o.push(...await Promise.all(l.filter(h=>h.endsWith(`-${c}.html`)).map(h=>a(b.join(s,h))))),o.push(await a(b.join(F,"snapshots",`${c}.html`)))}let f=r?(await d.stat(r.file).catch(()=>null))?.mtimeMs??null:null,m=!(r&&e&&n!==null&&f!==null&&f>n&&w(r.bytes)!==e)&&e&&o.find(c=>c&&w(c.bytes)===e),p=m||r;if(!p)return null;let i=m&&n!==null?n:p===r?f??n:(await d.stat(p.file).catch(()=>null))?.mtimeMs??n;return{text:p.bytes.toString("utf8"),time:i??null}}async function A(t){let e=b.join(z,`${t}.html`),[n,a]=await Promise.all([d.readFile(e,"utf8").catch(()=>null),d.stat(e).catch(()=>null)]);return n===null||!a?null:{said:q(n),time:a.mtimeMs}}async function J(t,e,n){if(at.test(e))return!1;let a=nt(e,n);return!Object.keys(a.blocks).length&&!a.idless?!1:(await d.mkdir(j(t),{recursive:!0}),await d.writeFile(L(t),`${JSON.stringify(a)}
3
3
  `),!0)}async function bt(t){let e=new Map(await Promise.all(t.map(async a=>[a,await A(a).catch(()=>null)])));return{keep:async(a,r=null)=>{for(let o of a)try{if(!await W(o)){let m=e.get(o),p=await C(o,m?.said??null,m?.time??null);p&&await J(o,p.text,{from:"export",time:p.time})}let[f,u]=await Promise.all([d.readFile(Q(K(o,H)).html),r?{said:r.get(o)??null}:A(o)]);u?.said&&w(f)===u.said&&(await d.mkdir(j(o),{recursive:!0}),await d.writeFile(P(o),f))}catch{}}}}async function kt(t,e){try{if(await W(t))return!1;let n=await A(t),a=await C(t,n?.said??null,n?.time??null);return await J(t,a?.text??e,a?{from:"export",time:a.time}:{from:"preview",time:Date.now()})}catch{return!1}}export{V as a,X as b,Y as c,Z as d,et as e,st as f,nt as g,yt as h,W as i,C as j,bt as k,kt as l};
package/dist/cli.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{a,b,c,d,e}from"./chunk-LHTFLRB6.mjs";import"./chunk-ZBIM6ARY.mjs";import"./chunk-5L7RYZCL.mjs";export{e as main,d as notOurs,b as readCommandLine,c as unwritable,a as versionOf};
2
+ import{a,b,c,d,e}from"./chunk-5MHMDLZD.mjs";import"./chunk-64K7IPLO.mjs";import"./chunk-5L7RYZCL.mjs";export{e as main,d as notOurs,b as readCommandLine,c as unwritable,a as versionOf};
package/dist/server.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{a as o}from"./chunk-GYQV7Y4J.mjs";import"./chunk-7GHT2UCA.mjs";import"./chunk-UNUEWH4S.mjs";import"./chunk-G7TOXONE.mjs";import"./chunk-LC7YNQFG.mjs";import"./chunk-6U2SLSDN.mjs";import"./chunk-W7CXPCRV.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-ITNLYXXV.mjs";import"./chunk-QMQUXTU4.mjs";import"./chunk-HQQMJCQJ.mjs";import"./chunk-QYKCJ7FG.mjs";import"./chunk-YZ5Z6H4W.mjs";import"./chunk-VACRB2NE.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TDQP3DKQ.mjs";import"./chunk-5FRMCDPY.mjs";import"./chunk-E7VYDG2X.mjs";import"./chunk-NFIBI4IP.mjs";import"./chunk-W63L7367.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";var t=process.argv.indexOf("--port"),r=t===-1?Number.NaN:Number(process.argv[t+1]);(!Number.isInteger(r)||r<=0||r>=65536)&&(console.error("Usage: node dist/server.mjs --port <n> (GALLERY_WORKSPACE names the workspace). The gallery command starts it: gallery open."),process.exit(2));try{let{port:e}=await o({port:r});console.log(`[gallery] ${new Date().toISOString()} listening on http://127.0.0.1:${e}/ (pid ${process.pid})`)}catch(e){console.error(`[gallery] could not start on port ${r}: ${e.message}`),process.exit(1)}
2
+ import{a as o}from"./chunk-EZQ34M3F.mjs";import"./chunk-NQPVAU63.mjs";import"./chunk-DFUDV4LX.mjs";import"./chunk-Y6RLRPG3.mjs";import"./chunk-6RGJOMJP.mjs";import"./chunk-QJIR2BLP.mjs";import"./chunk-QUPLVPB2.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-E7LWZRXY.mjs";import"./chunk-AUZGSZJH.mjs";import"./chunk-BGGDRNYQ.mjs";import"./chunk-6QXGZM36.mjs";import"./chunk-UALRNVSE.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import"./chunk-L3QKH4OK.mjs";import"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";var t=process.argv.indexOf("--port"),r=t===-1?Number.NaN:Number(process.argv[t+1]);(!Number.isInteger(r)||r<=0||r>=65536)&&(console.error("Usage: node dist/server.mjs --port <n> (GALLERY_WORKSPACE names the workspace). The gallery command starts it: gallery open."),process.exit(2));try{let{port:e}=await o({port:r});console.log(`[gallery] ${new Date().toISOString()} listening on http://127.0.0.1:${e}/ (pid ${process.pid})`)}catch(e){console.error(`[gallery] could not start on port ${r}: ${e.message}`),process.exit(1)}
package/dist/worker.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __galleryRequire } from "node:module"; import { fileURLToPath as __galleryPath } from "node:url"; const require = __galleryRequire(import.meta.url); const __filename = __galleryPath(import.meta.url); const __dirname = __galleryPath(new URL(".", import.meta.url));
2
- import{a as P,b as W,c as B,e as H}from"./chunk-B3VTYBYR.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-ITNLYXXV.mjs";import"./chunk-VACRB2NE.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TDQP3DKQ.mjs";import"./chunk-5FRMCDPY.mjs";import"./chunk-E7VYDG2X.mjs";import{c as F}from"./chunk-NFIBI4IP.mjs";import{d as R,f as M}from"./chunk-W63L7367.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import{parentPort as N}from"node:worker_threads";import{PAGE as U}from"../browser/editor/components/kit.mjs";import{APART as T,clipboardOf as X,tagKind as j,unitClipboard as _,writtenApart as Y}from"../browser/editor/components/registry.mjs";import{WRITERS as h,heldToWords as Z,unitOpening as tt,wordsIn as et}from"../browser/editor/page/clipboard/own/writers.mjs";import{escapeAttribute as v}from"../browser/shared/escape.mjs";import{referencedFile as rt}from"../browser/shared/media.mjs";var nt=/^\s*\\\(([\s\S]*)\\\)\s*$/,ot=" ",st=["script","style","template","noscript",T,U.header,`${U.header} > h1`].join(", ");function it(r,u){let f=globalThis.document.createElement("template");f.innerHTML=r??"";let d=g=>[...g.childNodes].map(n=>{if(n.nodeType===3)return n.data.replace(/ /g," ");if(n.nodeType!==1)return"";if(n.matches(".doc-math-inline")){let i=nt.exec(n.textContent)?.[1];return i!==void 0?i.trim()?`$${i.trim()}$`:"":n.textContent}if(n.localName==="img"){let i=n.getAttribute("src");return i?`![${at(n.getAttribute("alt")??"")}](${u(i,"image",D(i))})`:""}if(n.matches("a.doc-link-mention")){let i=(n.querySelector(".doc-link-mention-title")??n).textContent.replace(/\s+/g," ").trim();return n.getAttribute("href")?`[${i||n.getAttribute("href")}](${n.getAttribute("href")})`:i}let l=d(n);if(n.localName==="br")return`
2
+ import{a as P,b as W,c as B,e as H}from"./chunk-LCTHTZIL.mjs";import"./chunk-LAE5NQ4B.mjs";import"./chunk-P2CAZPDP.mjs";import"./chunk-E7LWZRXY.mjs";import"./chunk-W3BGBJQW.mjs";import"./chunk-JVHHHGEA.mjs";import"./chunk-HYMEEXKN.mjs";import"./chunk-TYK6VNAB.mjs";import"./chunk-CY2FNNAB.mjs";import"./chunk-UMHUSOPJ.mjs";import{c as F}from"./chunk-L3QKH4OK.mjs";import{d as R,f as M}from"./chunk-W4VKN3GF.mjs";import"./chunk-A55HN5OK.mjs";import"./chunk-5L7RYZCL.mjs";import{parentPort as N}from"node:worker_threads";import{PAGE as U}from"../browser/editor/components/kit.mjs";import{APART as T,clipboardOf as X,tagKind as j,unitClipboard as _,writtenApart as Y}from"../browser/editor/components/registry.mjs";import{WRITERS as h,heldToWords as Z,unitOpening as tt,wordsIn as et}from"../browser/editor/page/clipboard/own/writers.mjs";import{escapeAttribute as v}from"../browser/shared/escape.mjs";import{referencedFile as rt}from"../browser/shared/media.mjs";var nt=/^\s*\\\(([\s\S]*)\\\)\s*$/,ot=" ",st=["script","style","template","noscript",T,U.header,`${U.header} > h1`].join(", ");function it(r,u){let f=globalThis.document.createElement("template");f.innerHTML=r??"";let d=g=>[...g.childNodes].map(n=>{if(n.nodeType===3)return n.data.replace(/ /g," ");if(n.nodeType!==1)return"";if(n.matches(".doc-math-inline")){let i=nt.exec(n.textContent)?.[1];return i!==void 0?i.trim()?`$${i.trim()}$`:"":n.textContent}if(n.localName==="img"){let i=n.getAttribute("src");return i?`![${at(n.getAttribute("alt")??"")}](${u(i,"image",D(i))})`:""}if(n.matches("a.doc-link-mention")){let i=(n.querySelector(".doc-link-mention-title")??n).textContent.replace(/\s+/g," ").trim();return n.getAttribute("href")?`[${i||n.getAttribute("href")}](${n.getAttribute("href")})`:i}let l=d(n);if(n.localName==="br")return`
3
3
  `;if(!l.trim())return l;let[c,m,p]=[l.match(/^\s*/)[0],l.trim(),l.match(/\s*$/)[0]];switch(n.localName){case"strong":case"b":return`${c}**${m}**${p}`;case"em":case"i":return`${c}*${m}*${p}`;case"s":case"del":case"strike":return`${c}~~${m}~~${p}`;case"code":return`${c}\`${m}\`${p}`;case"a":{let i=n.getAttribute("href")??"";return!i||i.startsWith("#")?l:rt(i)?`${c}[${m}](${u(i,"file",n.getAttribute("download")||D(i))})${p}`:m===i?`${c}${i}${p}`:`${c}[${m}](${i})${p}`}default:return n.classList.contains("doc-tab")?` ${l}`:l}}).join("");return Z(d(f.content).replace(/[ \t]+\n/g,`
4
4
  `).trim())}function b(r){if(!r.querySelector(T))return r;let u=r.cloneNode(!0);for(let f of u.querySelectorAll(T))f.remove();return u}var ct=r=>(r?.textContent??"").replace(/\s+/g," ").trim(),D=r=>r.replace(/[?#].*$/,"").split("/").pop(),at=r=>r.replace(/[\\[\]]/g,"\\$&"),ut=/(\d+)/g;async function K(r,{title:u,media:f=g=>g,chart:d=()=>null}){let{UNIT:g,unitsOf:n,serializeInner:l,nestedBlocks:c,isHost:m}=await P(),p=e=>it(e,f),i=e=>{let t=b(e),o=[...t.querySelectorAll("img")];if(o.length===0)return l(t);let s=t.cloneNode(!0);return s.querySelectorAll("img").forEach((a,A)=>a.replaceWith(`\uE000${A}\uE001`)),l(s).replace(ut,(a,A)=>`<img src="${v(o[A].getAttribute("src")??"")}" alt="${v(o[A].getAttribute("alt")??"")}">`)},z=e=>p(i(e)),G=(e,{tables:t=!0}={})=>{let o=b(e);return[...o.querySelectorAll("img[src]")].filter(s=>!s.closest("a.doc-link-mention")&&(t||!o.contains(s.closest("table")))).map(s=>p(s.outerHTML))},x=e=>(j(e)&&!e.matches(g)&&e.setAttribute("data-ge-unit-kind",j(e)),e);function w(e){let t=[],o=null;for(let s of e.childNodes){let a=s.nodeType===1;(a?s.matches(st):s.nodeType!==3)||(a&&(s.matches(g)||F.has(s.localName))?(t.push(x(s)),o=null):(a||o||s.data.trim())&&(o||t.push(o=x(r.createElement("p"))),o.append(s.cloneNode(!0))))}return t}let y=e=>h[_(e).kind].list,C=e=>e.map(t=>t&&`${ot}${t}`);function k(e){let t=[],o=null;for(let s of e){let a=E(s);a.length!==0&&(o!==null&&!(y(o)&&y(s))&&t.push(""),t.push(...a),o=s)}return t}function S(e){let t=[];for(let o of e){let s=E(o);if(s.length===0)continue;let a=y(o);!a&&t.length>0&&t.at(-1)!==""&&t.push(""),!a&&t.length===0&&t.push(""),t.push(...C(s)),a||t.push("")}for(;t.at(-1)==="";)t.pop();return t}function J(e,t=null){let s=n(e).length>0?[]:h.words.exported(e,$,{without:t});return s.length>0?["",...C(s)]:S(w(e).filter(a=>a!==t))}function E(e){let t=_(e);return h[t.kind].exported(e,$,t)}function V(e,t){let o=/^en(?:-|$)/i.test(e.ownerDocument.documentElement.getAttribute("lang")??"");return t?o?"Chart":"\u56FE\u8868":o?"Figure":"\u56FE"}let $={isHost:m,nestedBlocks:c,serializeInner:l,media:f,chart:d,inline:p,own:z,withPictures:i,picturesIn:G,lines:k,held:S,heldIn:J,untitled:V,wordsIn:(e,t,o)=>et(b(e),t,o),plain:ct,unitsOf:w,words:e=>h.words.exported(e,$),packageOf:e=>R().packages.get(e),opening:(e,t)=>tt(e,t,$),writtenAs(e,t){let o=X(e);return h[o.kind].exported(t,$,o)}},I=r.querySelector(".doc-header"),O=I?k(w(I)):[],q=r.querySelector("main"),L=k(q?w(q):[]),Q=Y(r).flatMap(({element:e,clipboard:t})=>["",...h[t.kind].exported(e,$,t)]);return[`# ${u||"Untitled"}`,...O.length?["",...O]:[],...L.length?["",...L]:[],...Q].join(`
5
5
  `)}import{saying as lt}from"../browser/shared/i18n/index.mjs";import{referencedFile as pt}from"../browser/shared/media.mjs";var ft=r=>`\0F${r}\0`,mt=r=>`\0C${r}\0`,dt={async markdown({source:r,title:u,pictures:f}){let{document:d}=await W(r),g=[],n=[...d.querySelectorAll("main figure.doc-figure")];return{text:await K(d,{title:u,media:(c,m,p)=>{let i=pt(c);return i?ft(g.push({src:i,kind:m,name:p})-1):c},chart:c=>f&&n.includes(c)?mt(n.indexOf(c)):null}),files:g,charts:n.length,charted:n.map(c=>!!c.querySelector("[data-doc-chart]"))}},import:({uploads:r,scratch:u})=>B(r,u),fill:r=>H(r)};N.on("message",async({id:r,type:u,payload:f})=>{try{M(),N.postMessage({id:r,result:await dt[u](f)})}catch(d){N.postMessage({id:r,error:{...lt(d),stack:d.stack}})}});