dorkos 0.83.0 → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +7 -0
  2. package/dist/bin/cli.js +5338 -2653
  3. package/dist/client/assets/{AboutPage-BCPZr0Kt.js → AboutPage-BSUaz4JJ.js} +1 -1
  4. package/dist/client/assets/{AppearancePage-CJfCCSBv.js → AppearancePage-CXOeapnY.js} +1 -1
  5. package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-Rg6hvlIh.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-BnlmhnMf.js} +1 -1
  6. package/dist/client/assets/{BlintzCanvas-CUSuHP_Q.js → BlintzCanvas-CPvaejf6.js} +1 -1
  7. package/dist/client/assets/{CanvasCsvContent-B3gnlTxe.js → CanvasCsvContent-BQMcLeXX.js} +1 -1
  8. package/dist/client/assets/CanvasFileContent-DZAWEzyp.js +2 -0
  9. package/dist/client/assets/CanvasModel3dContent-CU-0WLIz.js +2 -0
  10. package/dist/client/assets/{CodeMirrorDiff-Dsell_F0.js → CodeMirrorDiff-B705Z174.js} +1 -1
  11. package/dist/client/assets/{CodeMirrorEditor-DW4-Dilh.js → CodeMirrorEditor-CnoVRaAX.js} +1 -1
  12. package/dist/client/assets/ConnectionAccessLists-CLulSQsd.js +1 -0
  13. package/dist/client/assets/ConnectionsPage-5Yc0-dNp.js +1 -0
  14. package/dist/client/assets/{ConventionPage-Dto1Cfs1.js → ConventionPage-CPTqeeNZ.js} +2 -2
  15. package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-B8JWq1xE.js → FloatingTanStackRouterDevtools-CqogiFob-C3cf2ADt.js} +1 -1
  16. package/dist/client/assets/HandlePage-CUJPQsdv.js +1 -0
  17. package/dist/client/assets/{LexicalField-BymSjNLW.js → LexicalField-ClgIzBq7.js} +1 -1
  18. package/dist/client/assets/{ManagesPage-D0ykMsYy.js → ManagesPage-CKzcFzKR.js} +1 -1
  19. package/dist/client/assets/{Model3dViewer-DpzkRmRI.js → Model3dViewer-CVVsdftR.js} +1 -1
  20. package/dist/client/assets/NamePage-CYHYXhrs.js +1 -0
  21. package/dist/client/assets/{NotificationsPage-C4Ol8NO6.js → NotificationsPage-D3m6Jrm2.js} +1 -1
  22. package/dist/client/assets/{PermissionsPage-BEtP78wl.js → PermissionsPage-CviWqCJ3.js} +1 -1
  23. package/dist/client/assets/{PersonalityPopover-xJuTkLLJ.js → PersonalityPopover-BN1CFq8D.js} +1 -1
  24. package/dist/client/assets/PhotoPage-ytqVZP3t.js +1 -0
  25. package/dist/client/assets/{RoomsPage-CeB_8k-m.js → RoomsPage-CoZd-4Xe.js} +1 -1
  26. package/dist/client/assets/RunsOnPopover-91nKS6qj.js +1 -0
  27. package/dist/client/assets/SessionsPage-DDrQLNW-.js +6 -0
  28. package/dist/client/assets/SkillsPage-2H6QD77F.js +1 -0
  29. package/dist/client/assets/TasksPage-ocRUPiec.js +1 -0
  30. package/dist/client/assets/ToolsPage-q3wxIc3n.js +2 -0
  31. package/dist/client/assets/{TopologyGraph-3rXK5QTB.js → TopologyGraph-DeRqfLBW.js} +2 -2
  32. package/dist/client/assets/{agent-browser-DaDOSH9H.js → agent-browser-C7Q5muxI.js} +1 -1
  33. package/dist/client/assets/{highlighted-body-KPVGNVTW-CGXZGdzv.js → highlighted-body-KPVGNVTW-CYowLe07.js} +1 -1
  34. package/dist/client/assets/{index-C4yxotik.js → index-1dt_mWBC.js} +1 -1
  35. package/dist/client/assets/{index-DQdV5YDl.js → index-34_CucI4.js} +1 -1
  36. package/dist/client/assets/{index-CUXXDUxt.js → index-6F4HxV-x.js} +1 -1
  37. package/dist/client/assets/{index-MUbvQBCQ.js → index-B029XwR8.js} +1 -1
  38. package/dist/client/assets/index-B4TIVWAq.js +1668 -0
  39. package/dist/client/assets/index-BUcM96PD.css +1 -0
  40. package/dist/client/assets/{index-rJuQe7Pl.js → index-BX9en7bH.js} +1 -1
  41. package/dist/client/assets/{index-Bco5PCIk.js → index-BeqTVkgE.js} +1 -1
  42. package/dist/client/assets/{index-D9vFzXJR.js → index-BkFaL4dr.js} +1 -1
  43. package/dist/client/assets/index-Bv_P5_tJ.js +1 -0
  44. package/dist/client/assets/{index-3xtUyFwf.js → index-BwbRY8dK.js} +1 -1
  45. package/dist/client/assets/{index-oU5xA1N3.js → index-BzVyUKXW.js} +3 -3
  46. package/dist/client/assets/{index-BiKxY3b6.js → index-C0oow5Fn.js} +1 -1
  47. package/dist/client/assets/{index-B2AJ6tkg.js → index-CCLVR1so.js} +1 -1
  48. package/dist/client/assets/{index-bR1UztQC.js → index-CEw2JwVz.js} +1 -1
  49. package/dist/client/assets/{index-DdpxcyXN.js → index-CKHPMgwE.js} +1 -1
  50. package/dist/client/assets/{index-dDcguWyg.js → index-CbxbAPgT.js} +1 -1
  51. package/dist/client/assets/{index-Cc8vG2jf.js → index-Cm0G2vDh.js} +1 -1
  52. package/dist/client/assets/{index-CUDguphz.js → index-CpZi173j.js} +1 -1
  53. package/dist/client/assets/index-CqfEH_t6.js +1 -0
  54. package/dist/client/assets/index-CuEwCZKH.js +17 -0
  55. package/dist/client/assets/{index-DT376l6b.js → index-CvQeke9n.js} +9 -9
  56. package/dist/client/assets/{index-i6WvrE1p.js → index-CxZB8Cqj.js} +1 -1
  57. package/dist/client/assets/{index-DPpw-DKV.js → index-D45q57-5.js} +1 -1
  58. package/dist/client/assets/{index-zrZDQvuW.js → index-D8fmSjjO.js} +1 -1
  59. package/dist/client/assets/{index-D4OPDslu.js → index-DDagpuEn.js} +1 -1
  60. package/dist/client/assets/{index-CXeb3CZh.js → index-DT3ci-3h.js} +1 -1
  61. package/dist/client/assets/{index-Ck1VEXu0.js → index-D_Pj9S7y.js} +1 -1
  62. package/dist/client/assets/{index-pBoKYStL.js → index-Da-4WWcu.js} +1 -1
  63. package/dist/client/assets/{index-Ce4ArSsI.js → index-DsRm4kZF.js} +1 -1
  64. package/dist/client/assets/{index-Bg2WUou4.js → index-GiEn7nQQ.js} +1 -1
  65. package/dist/client/assets/{index-CemK6fUn.js → index-SGZRUhq4.js} +1 -1
  66. package/dist/client/assets/{index-Ygg0URfB.js → index-VLhj4QNP.js} +1 -1
  67. package/dist/client/assets/index-otf5JgVx.js +1 -0
  68. package/dist/client/assets/{index-FOgsYoCt.js → index-qWahGPGi.js} +1 -1
  69. package/dist/client/assets/{index-BabO0TEf.js → index-sMuUIc_W.js} +2 -2
  70. package/dist/client/assets/{index-z0vAkUHY.js → index-snpaQsNQ.js} +1 -1
  71. package/dist/client/assets/room-files-source-C3tzeG6y.js +6 -0
  72. package/dist/client/assets/{soul-file-C1wnpxhH.js → soul-file-tc6-HkDy.js} +1 -1
  73. package/dist/client/assets/{use-personality-commit-OViAsTwD.js → use-personality-commit-vpAu5T8A.js} +1 -1
  74. package/dist/client/index.html +3 -3
  75. package/dist/drizzle/0111_community_redaction_cursor.sql +11 -0
  76. package/dist/drizzle/0112_account_drop_issuer.sql +18 -0
  77. package/dist/drizzle/0113_room_departed_seats.sql +14 -0
  78. package/dist/drizzle/0114_schedule_account.sql +1 -0
  79. package/dist/drizzle/0115_furry_starjammers.sql +1 -0
  80. package/dist/drizzle/meta/0111_snapshot.json +9062 -0
  81. package/dist/drizzle/meta/0112_snapshot.json +9055 -0
  82. package/dist/drizzle/meta/0113_snapshot.json +9147 -0
  83. package/dist/drizzle/meta/0114_snapshot.json +9154 -0
  84. package/dist/drizzle/meta/0115_snapshot.json +9146 -0
  85. package/dist/drizzle/meta/_journal.json +35 -0
  86. package/dist/server/index.js +34994 -22406
  87. package/dist/server/index.js.map +2 -2
  88. package/package.json +7 -8
  89. package/dist/client/assets/CanvasFileContent-C2PyVniO.js +0 -2
  90. package/dist/client/assets/CanvasModel3dContent-BU77_Cf0.js +0 -2
  91. package/dist/client/assets/ConnectionAccessLists-C6PZsSaI.js +0 -1
  92. package/dist/client/assets/ConnectionsPage-d1mpye9j.js +0 -1
  93. package/dist/client/assets/HandlePage-D9x_OTks.js +0 -1
  94. package/dist/client/assets/NamePage-zm23PjaF.js +0 -1
  95. package/dist/client/assets/PhotoPage-DlqgNQWM.js +0 -1
  96. package/dist/client/assets/RunsOnPopover-DT6aWGUP.js +0 -1
  97. package/dist/client/assets/SessionsPage-CoZhOOr9.js +0 -6
  98. package/dist/client/assets/SkillsPage-C8bahTTW.js +0 -1
  99. package/dist/client/assets/TasksPage-CuFN--Cj.js +0 -1
  100. package/dist/client/assets/ToolsPage-C5cJiedq.js +0 -2
  101. package/dist/client/assets/index-4zzP7Qsj.js +0 -1
  102. package/dist/client/assets/index-B9qRpVKa.js +0 -7
  103. package/dist/client/assets/index-BMR65QI4.js +0 -1658
  104. package/dist/client/assets/index-C9o2w5d_.js +0 -1
  105. package/dist/client/assets/index-DZ-SO2sz.css +0 -1
  106. package/dist/client/assets/index-Rf5Yz119.js +0 -1
  107. package/dist/client/assets/room-files-source-BXF5daqI.js +0 -11
  108. package/dist/client/assets/use-mesh-update-CZIA8V07.js +0 -1
@@ -1,2 +1,2 @@
1
- import{L as re,a as ae,i as ne,c as ie,f as se,s as oe,t as i,b as le,d as ce,e as de}from"./index-oU5xA1N3.js";import{E as me,L as ue}from"./index-Ck1VEXu0.js";import"./index-BMR65QI4.js";const pe=36,X=1,fe=2,b=3,C=4,_e=5,ge=6,he=7,ye=8,be=9,ve=10,ke=11,xe=12,Oe=13,we=14,Qe=15,Ce=16,Se=17,I=18,qe=19,E=20,W=21,R=22,Pe=23,Te=24;function q(t){return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57}function ze(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function g(t,e,a){for(let r=!1;;){if(t.next<0)return;if(t.next==e&&!r){t.advance();return}r=a&&!r&&t.next==92,t.advance()}}function je(t,e){e:for(;;){if(t.next<0)return;if(t.next==36){t.advance();for(let a=0;a<e.length;a++){if(t.next!=e.charCodeAt(a))continue e;t.advance()}if(t.next==36){t.advance();return}}else t.advance()}}function Ue(t,e){let a="[{<(".indexOf(String.fromCharCode(e)),r=a<0?e:"]}>)".charCodeAt(a);for(;;){if(t.next<0)return;if(t.next==r&&t.peek(1)==39){t.advance(2);return}t.advance()}}function P(t,e){for(;!(t.next!=95&&!q(t.next));)e!=null&&(e+=String.fromCharCode(t.next)),t.advance();return e}function Le(t){if(t.next==39||t.next==34||t.next==96){let e=t.next;t.advance(),g(t,e,!1)}else P(t)}function D(t,e){for(;t.next==48||t.next==49;)t.advance();e&&t.next==e&&t.advance()}function Z(t,e){for(;;){if(t.next==46){if(e)break;e=!0}else if(t.next<48||t.next>57)break;t.advance()}if(t.next==69||t.next==101)for(t.advance(),(t.next==43||t.next==45)&&t.advance();t.next>=48&&t.next<=57;)t.advance()}function N(t){for(;!(t.next<0||t.next==10);)t.advance()}function _(t,e){for(let a=0;a<e.length;a++)if(e.charCodeAt(a)==t)return!0;return!1}const S=` \r
1
+ import{L as re,a as ae,i as ne,c as ie,f as se,s as oe,t as i,b as le,d as ce,e as de}from"./index-BzVyUKXW.js";import{E as me,L as ue}from"./index-D_Pj9S7y.js";import"./index-B4TIVWAq.js";const pe=36,X=1,fe=2,b=3,C=4,_e=5,ge=6,he=7,ye=8,be=9,ve=10,ke=11,xe=12,Oe=13,we=14,Qe=15,Ce=16,Se=17,I=18,qe=19,E=20,W=21,R=22,Pe=23,Te=24;function q(t){return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57}function ze(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function g(t,e,a){for(let r=!1;;){if(t.next<0)return;if(t.next==e&&!r){t.advance();return}r=a&&!r&&t.next==92,t.advance()}}function je(t,e){e:for(;;){if(t.next<0)return;if(t.next==36){t.advance();for(let a=0;a<e.length;a++){if(t.next!=e.charCodeAt(a))continue e;t.advance()}if(t.next==36){t.advance();return}}else t.advance()}}function Ue(t,e){let a="[{<(".indexOf(String.fromCharCode(e)),r=a<0?e:"]}>)".charCodeAt(a);for(;;){if(t.next<0)return;if(t.next==r&&t.peek(1)==39){t.advance(2);return}t.advance()}}function P(t,e){for(;!(t.next!=95&&!q(t.next));)e!=null&&(e+=String.fromCharCode(t.next)),t.advance();return e}function Le(t){if(t.next==39||t.next==34||t.next==96){let e=t.next;t.advance(),g(t,e,!1)}else P(t)}function D(t,e){for(;t.next==48||t.next==49;)t.advance();e&&t.next==e&&t.advance()}function Z(t,e){for(;;){if(t.next==46){if(e)break;e=!0}else if(t.next<48||t.next>57)break;t.advance()}if(t.next==69||t.next==101)for(t.advance(),(t.next==43||t.next==45)&&t.advance();t.next>=48&&t.next<=57;)t.advance()}function N(t){for(;!(t.next<0||t.next==10);)t.advance()}function _(t,e){for(let a=0;a<e.length;a++)if(e.charCodeAt(a)==t)return!0;return!1}const S=` \r
2
2
  `;function M(t,e,a){let r=Object.create(null);r.true=r.false=_e,r.null=r.unknown=ge;for(let n of t.split(" "))n&&(r[n]=E);for(let n of e.split(" "))n&&(r[n]=W);for(let n of(a||"").split(" "))n&&(r[n]=Te);return r}const h="array binary bit boolean char character clob date decimal double float int integer interval large national nchar nclob numeric object precision real smallint time timestamp varchar varying ",y="absolute action add after all allocate alter and any are as asc assertion at authorization before begin between both breadth by call cascade cascaded case cast catalog check close collate collation column commit condition connect connection constraint constraints constructor continue corresponding count create cross cube current current_date current_default_transform_group current_transform_group_for_type current_path current_role current_time current_timestamp current_user cursor cycle data day deallocate declare default deferrable deferred delete depth deref desc describe descriptor deterministic diagnostics disconnect distinct do domain drop dynamic each else elseif end end-exec equals escape except exception exec execute exists exit external fetch first for foreign found from free full function general get global go goto grant group grouping handle having hold hour identity if immediate in indicator initially inner inout input insert intersect into is isolation join key language last lateral leading leave left level like limit local localtime localtimestamp locator loop map match method minute modifies module month names natural nesting new next no none not of old on only open option or order ordinality out outer output overlaps pad parameter partial path prepare preserve primary prior privileges procedure public read reads recursive redo ref references referencing relative release repeat resignal restrict result return returns revoke right role rollback rollup routine row rows savepoint schema scroll search second section select session session_user set sets signal similar size some space specific specifictype sql sqlexception sqlstate sqlwarning start state static system_user table temporary then timezone_hour timezone_minute to trailing transaction translation treat trigger under undo union unique unnest until update usage user using value values view when whenever where while with without work write year zone ",T={backslashEscapes:!1,hashComments:!1,spaceAfterDashes:!1,slashComments:!1,doubleQuotedStrings:!1,doubleDollarQuotedStrings:!1,unquotedBitLiterals:!1,treatBitsAsBytes:!1,charSetCasts:!1,plsqlQuotingMechanism:!1,operatorChars:"*+-%<>!=&|~^/",specialVar:"?",identifierQuotes:'"',caseInsensitiveIdentifiers:!1,words:M(y,h)};function Be(t,e,a,r){let n={};for(let s in T)n[s]=(t.hasOwnProperty(s)?t:T)[s];return e&&(n.words=M(e,a||"",r)),n}function K(t){return new me(e=>{var a;let{next:r}=e;if(e.advance(),_(r,S)){for(;_(e.next,S);)e.advance();e.acceptToken(pe)}else if(r==36&&t.doubleDollarQuotedStrings){let n=P(e,"");e.next==36&&(e.advance(),je(e,n),e.acceptToken(b))}else if(r==39||r==34&&t.doubleQuotedStrings)g(e,r,t.backslashEscapes),e.acceptToken(b);else if(r==35&&t.hashComments||r==47&&e.next==47&&t.slashComments)N(e),e.acceptToken(X);else if(r==45&&e.next==45&&(!t.spaceAfterDashes||e.peek(1)==32))N(e),e.acceptToken(X);else if(r==47&&e.next==42){e.advance();for(let n=1;;){let s=e.next;if(e.next<0)break;if(e.advance(),s==42&&e.next==47){if(n--,e.advance(),!n)break}else s==47&&e.next==42&&(n++,e.advance())}e.acceptToken(fe)}else if((r==101||r==69)&&e.next==39)e.advance(),g(e,39,!0),e.acceptToken(b);else if((r==110||r==78)&&e.next==39&&t.charSetCasts)e.advance(),g(e,39,t.backslashEscapes),e.acceptToken(b);else if(r==95&&t.charSetCasts)for(let n=0;;n++){if(e.next==39&&n>1){e.advance(),g(e,39,t.backslashEscapes),e.acceptToken(b);break}if(!q(e.next))break;e.advance()}else if(t.plsqlQuotingMechanism&&(r==113||r==81)&&e.next==39&&e.peek(1)>0&&!_(e.peek(1),S)){let n=e.peek(1);e.advance(2),Ue(e,n),e.acceptToken(b)}else if(_(r,t.identifierQuotes)){const n=r==91?93:r;g(e,n,!1),e.acceptToken(qe)}else if(r==40)e.acceptToken(he);else if(r==41)e.acceptToken(ye);else if(r==123)e.acceptToken(be);else if(r==125)e.acceptToken(ve);else if(r==91)e.acceptToken(ke);else if(r==93)e.acceptToken(xe);else if(r==59)e.acceptToken(Oe);else if(t.unquotedBitLiterals&&r==48&&e.next==98)e.advance(),D(e),e.acceptToken(R);else if((r==98||r==66)&&(e.next==39||e.next==34)){const n=e.next;e.advance(),t.treatBitsAsBytes?(g(e,n,t.backslashEscapes),e.acceptToken(Pe)):(D(e,n),e.acceptToken(R))}else if(r==48&&(e.next==120||e.next==88)||(r==120||r==88)&&e.next==39){let n=e.next==39;for(e.advance();ze(e.next);)e.advance();n&&e.next==39&&e.advance(),e.acceptToken(C)}else if(r==46&&e.next>=48&&e.next<=57)Z(e,!0),e.acceptToken(C);else if(r==46)e.acceptToken(we);else if(r>=48&&r<=57)Z(e,!1),e.acceptToken(C);else if(_(r,t.operatorChars)){for(;_(e.next,t.operatorChars);)e.advance();e.acceptToken(Qe)}else if(_(r,t.specialVar))e.next==r&&e.advance(),Le(e),e.acceptToken(Se);else if(r==58||r==44)e.acceptToken(Ce);else if(q(r)){let n=P(e,String.fromCharCode(r));e.acceptToken(e.next==46||e.peek(-n.length-1)==46?I:(a=t.words[n.toLowerCase()])!==null&&a!==void 0?a:I)}})}const F=K(T),Xe=ue.deserialize({version:14,states:"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw",stateData:",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O",goto:"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq",nodeNames:"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement",maxTerm:38,nodeProps:[["isolate",-4,1,2,3,19,""]],skippedNodes:[0,1,2],repeatNodeCount:3,tokenData:"RORO",tokenizers:[0,F],topRules:{Script:[0,25]},tokenPrec:0});function z(t){let e=t.cursor().moveTo(t.from,-1);for(;/Comment/.test(e.name);)e.moveTo(e.from,-1);return e.node}function x(t,e){let a=t.sliceString(e.from,e.to),r=/^([`'"\[])(.*)([`'"\]])$/.exec(a);return r?r[2]:a}function Q(t){return t&&(t.name=="Identifier"||t.name=="QuotedIdentifier")}function Ie(t,e){if(e.name=="CompositeIdentifier"){let a=[];for(let r=e.firstChild;r;r=r.nextSibling)Q(r)&&a.push(x(t,r));return a}return[x(t,e)]}function V(t,e){for(let a=[];;){if(!e||e.name!=".")return a;let r=z(e);if(!Q(r))return a;a.unshift(x(t,r)),e=z(r)}}function Re(t,e){let a=de(t).resolveInner(e,-1),r=Ze(t.doc,a);return a.name=="Identifier"||a.name=="QuotedIdentifier"||a.name=="Keyword"?{from:a.from,quoted:a.name=="QuotedIdentifier"?t.doc.sliceString(a.from,a.from+1):null,parents:V(t.doc,z(a)),aliases:r}:a.name=="."?{from:e,quoted:null,parents:V(t.doc,a),aliases:r}:{from:e,quoted:null,parents:[],empty:!0,aliases:r}}const De=new Set("where group having order union intersect except all distinct limit offset fetch for".split(" "));function Ze(t,e){let a;for(let n=e;!a;n=n.parent){if(!n)return null;n.name=="Statement"&&(a=n)}let r=null;for(let n=a.firstChild,s=!1,c=null;n;n=n.nextSibling){let l=n.name=="Keyword"?t.sliceString(n.from,n.to).toLowerCase():null,o=null;if(!s)s=l=="from";else if(l=="as"&&c&&Q(n.nextSibling))o=x(t,n.nextSibling);else{if(l&&De.has(l))break;c&&Q(n)&&(o=x(t,n))}o&&(r||(r=Object.create(null)),r[o]=Ie(t,c)),c=/Identifier$/.test(n.name)?n:null}return r}function Ne(t,e,a){return a.map(r=>({...r,label:r.label[0]==t?r.label:t+r.label+e,apply:void 0}))}const Ve=/^\w*$/,$e=/^[`'"\[]?\w*[`'"\]]?$/;function $(t){return t.self&&typeof t.self.label=="string"}class j{constructor(e,a){this.idQuote=e,this.idCaseInsensitive=a,this.list=[],this.children=void 0}child(e){let a=this.children||(this.children=Object.create(null)),r=a[e];return r||(e&&!this.list.some(n=>n.label==e)&&this.list.push(A(e,"type",this.idQuote,this.idCaseInsensitive)),a[e]=new j(this.idQuote,this.idCaseInsensitive))}maybeChild(e){return this.children?this.children[e]:null}addCompletion(e){let a=this.list.findIndex(r=>r.label==e.label);a>-1?this.list[a]=e:this.list.push(e)}addCompletions(e){for(let a of e)this.addCompletion(typeof a=="string"?A(a,"property",this.idQuote,this.idCaseInsensitive):a)}addNamespace(e){Array.isArray(e)?this.addCompletions(e):$(e)?this.addNamespace(e.children):this.addNamespaceObject(e)}addNamespaceObject(e){for(let a of Object.keys(e)){let r=e[a],n=null,s=a.replace(/\\?\./g,l=>l=="."?"\0":l).split("\0"),c=this;$(r)&&(n=r.self,r=r.children);for(let l=0;l<s.length;l++)n&&l==s.length-1&&c.addCompletion(n),c=c.child(s[l].replace(/\\\./g,"."));c.addNamespace(r)}}}function A(t,e,a,r){return new RegExp("^[a-z_][a-z_\\d]*$",r?"i":"").test(t)?{label:t,type:e}:{label:t,type:e,apply:a+t+G(a)}}function G(t){return t==="["?"]":t}function Ae(t,e,a,r,n,s){var c;let l=((c=s==null?void 0:s.spec.identifierQuotes)===null||c===void 0?void 0:c[0])||'"',o=new j(l,!!(s!=null&&s.spec.caseInsensitiveIdentifiers)),u=n?o.child(n):null;return o.addNamespace(t),e&&(u||o).addCompletions(e),a&&o.addCompletions(a),u&&o.addCompletions(u.list),r&&o.addCompletions((u||o).child(r).list),p=>{let{parents:v,from:L,quoted:B,empty:ee,aliases:O}=Re(p.state,p.pos);if(ee&&!p.explicit)return null;O&&v.length==1&&(v=O[v[0]]||v);let d=o;for(let f of v){for(;!d.children||!d.children[f];)if(d==o&&u)d=u;else if(d==u&&r)d=d.child(r);else return null;let k=d.maybeChild(f);if(!k)return null;d=k}let w=d.list;if(d==o&&O&&(w=w.concat(Object.keys(O).map(f=>({label:f,type:"constant"})))),B){let f=B[0],k=G(f),te=p.state.sliceDoc(p.pos,p.pos+1)==k;return{from:L,to:te?p.pos+1:void 0,options:Ne(f,k,w),validFor:$e}}else return{from:L,options:w,validFor:Ve}}}function Ee(t){return t==W?"type":t==E?"keyword":"variable"}function We(t,e,a){let r=Object.keys(t).map(n=>a(e?n.toUpperCase():n,Ee(t[n])));return le(["QuotedIdentifier","String","LineComment","BlockComment","."],ce(r))}let Me=Xe.configure({props:[ne.add({Statement:ie()}),se.add({Statement(t,e){return{from:Math.min(t.from+100,e.doc.lineAt(t.from).to),to:t.to}},BlockComment(t){return{from:t.from+2,to:t.to-2}}}),oe({Keyword:i.keyword,Type:i.typeName,Builtin:i.standard(i.name),Bits:i.number,Bytes:i.string,Bool:i.bool,Null:i.null,Number:i.number,String:i.string,Identifier:i.name,QuotedIdentifier:i.special(i.string),SpecialVar:i.special(i.name),LineComment:i.lineComment,BlockComment:i.blockComment,Operator:i.operator,"Semi Punctuation":i.punctuation,"( )":i.paren,"{ }":i.brace,"[ ]":i.squareBracket})]});class m{constructor(e,a,r){this.dialect=e,this.language=a,this.spec=r}get extension(){return this.language.extension}configureLanguage(e,a){return new m(this.dialect,this.language.configure(e,a),this.spec)}static define(e){let a=Be(e,e.keywords,e.types,e.builtin),r=re.define({name:"sql",parser:Me.configure({tokenizers:[{from:F,to:K(a)}]}),languageData:{commentTokens:{line:"--",block:{open:"/*",close:"*/"}},closeBrackets:{brackets:["(","[","{","'",'"',"`"]}}});return new m(a,r,e)}}function Ke(t,e){return{label:t,type:e,boost:-1}}function Fe(t,e=!1,a){return We(t.dialect.words,e,a||Ke)}function Ge(t){return t.schema?Ae(t.schema,t.tables,t.schemas,t.defaultTable,t.defaultSchema,t.dialect||U):()=>null}function Ye(t){return t.schema?(t.dialect||U).language.data.of({autocomplete:Ge(t)}):[]}function rt(t={}){let e=t.dialect||U;return new ae(e.language,[Ye(t),e.language.data.of({autocomplete:Fe(e,t.upperCaseKeywords,t.keywordCompletion)})])}const U=m.define({}),at=m.define({charSetCasts:!0,doubleDollarQuotedStrings:!0,operatorChars:"+-*/<>=~!@#%^&|`?",specialVar:"",keywords:y+"abort abs absent access according ada admin aggregate alias also always analyse analyze array_agg array_max_cardinality asensitive assert assignment asymmetric atomic attach attribute attributes avg backward base64 begin_frame begin_partition bernoulli bit_length blocked bom cache called cardinality catalog_name ceil ceiling chain char_length character_length character_set_catalog character_set_name character_set_schema characteristics characters checkpoint class class_origin cluster coalesce cobol collation_catalog collation_name collation_schema collect column_name columns command_function command_function_code comment comments committed concurrently condition_number configuration conflict connection_name constant constraint_catalog constraint_name constraint_schema contains content control conversion convert copy corr cost covar_pop covar_samp csv cume_dist current_catalog current_row current_schema cursor_name database datalink datatype datetime_interval_code datetime_interval_precision db debug defaults defined definer degree delimiter delimiters dense_rank depends derived detach detail dictionary disable discard dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue document dump dynamic_function dynamic_function_code element elsif empty enable encoding encrypted end_frame end_partition endexec enforced enum errcode error event every exclude excluding exclusive exp explain expression extension extract family file filter final first_value flag floor following force foreach fortran forward frame_row freeze fs functions fusion generated granted greatest groups handler header hex hierarchy hint id ignore ilike immediately immutable implementation implicit import include including increment indent index indexes info inherit inherits inline insensitive instance instantiable instead integrity intersection invoker isnull key_member key_type label lag last_value lead leakproof least length library like_regex link listen ln load location lock locked log logged lower mapping matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text min minvalue mod mode more move multiset mumps name namespace nfc nfd nfkc nfkd nil normalize normalized nothing notice notify notnull nowait nth_value ntile nullable nullif nulls number occurrences_regex octet_length octets off offset oids operator options ordering others over overlay overriding owned owner parallel parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partition pascal passing passthrough password percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding prepared print_strict_params procedural procedures program publication query quote raise range rank reassign recheck recovery refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex rename repeatable replace replica requiring reset respect restart restore result_oid returned_cardinality returned_length returned_octet_length returned_sqlstate returning reverse routine_catalog routine_name routine_schema routines row_count row_number rowtype rule scale schema_name schemas scope scope_catalog scope_name scope_schema security selective self sensitive sequence sequences serializable server server_name setof share show simple skip slice snapshot source specific_name sqlcode sqlerror sqrt stable stacked standalone statement statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time table_name tables tablesample tablespace temp template ties token top_level_count transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex trigger_catalog trigger_name trigger_schema trim trim_array truncate trusted type types uescape unbounded uncommitted unencrypted unlink unlisten unlogged unnamed untyped upper uri use_column use_variable user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema vacuum valid validate validator value_of var_pop var_samp varbinary variable_conflict variadic verbose version versioning views volatile warning whitespace width_bucket window within wrapper xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate yes",types:h+"bigint int8 bigserial serial8 varbit bool box bytea cidr circle precision float8 inet int4 json jsonb line lseg macaddr macaddr8 money numeric pg_lsn point polygon float4 int2 smallserial serial2 serial serial4 text timetz timestamptz tsquery tsvector txid_snapshot uuid xml"}),Y="accessible algorithm analyze asensitive authors auto_increment autocommit avg avg_row_length binlog btree cache catalog_name chain change changed checkpoint checksum class_origin client_statistics coalesce code collations columns comment committed completion concurrent consistent contains contributors convert database databases day_hour day_microsecond day_minute day_second delay_key_write delayed delimiter des_key_file dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile enable enclosed ends engine engines enum errors escaped even event events every explain extended fast field fields flush force found_rows fulltext grants handler hash high_priority hosts hour_microsecond hour_minute hour_second ignore ignore_server_ids import index index_statistics infile innodb insensitive insert_method install invoker iterate keys kill linear lines list load lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modify mutex mysql_errno no_write_to_binlog offline offset one online optimize optionally outfile pack_keys parser partition partitions password phase plugin plugins prev processlist profile profiles purge query quick range read_write rebuild recover regexp relaylog remove rename reorganize repair repeatable replace require resume rlike row_format rtree schedule schema_name schemas second_microsecond security sensitive separator serializable server share show slave slow snapshot soname spatial sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result ssl starting starts std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace terminated triggers truncate uncommitted uninstall unlock upgrade use use_frm user_resources user_statistics utc_date utc_time utc_timestamp variables views warnings xa xor year_month zerofill",H=h+"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int1 int2 int3 int4 int8 float4 float8 varbinary varcharacter precision datetime unsigned signed",J="charset clear edit ego help nopager notee nowarning pager print prompt quit rehash source status system tee",nt=m.define({operatorChars:"*+-%<>!=&|^",charSetCasts:!0,doubleQuotedStrings:!0,unquotedBitLiterals:!0,hashComments:!0,spaceAfterDashes:!0,specialVar:"@?",identifierQuotes:"`",keywords:y+"group_concat "+Y,types:H,builtin:J}),it=m.define({operatorChars:"*+-%<>!=&|^",charSetCasts:!0,doubleQuotedStrings:!0,unquotedBitLiterals:!0,hashComments:!0,spaceAfterDashes:!0,specialVar:"@?",identifierQuotes:"`",keywords:y+"always generated groupby_concat hard persistent shutdown soft virtual "+Y,types:H,builtin:J});let He="approx_count_distinct approx_percentile_cont approx_percentile_disc avg checksum_agg count count_big grouping grouping_id max min product stdev stdevp sum var varp ai_generate_embeddings ai_generate_chunks cume_dist first_value lag last_value lead percentile_cont percentile_disc percent_rank left_shift right_shift bit_count get_bit set_bit collationproperty tertiary_weights @@datefirst @@dbts @@langid @@language @@lock_timeout @@max_connections @@max_precision @@nestlevel @@options @@remserver @@servername @@servicename @@spid @@textsize @@version cast convert parse try_cast try_convert try_parse asymkey_id asymkeyproperty certproperty cert_id crypt_gen_random decryptbyasymkey decryptbycert decryptbykey decryptbykeyautoasymkey decryptbykeyautocert decryptbypassphrase encryptbyasymkey encryptbycert encryptbykey encryptbypassphrase hashbytes is_objectsigned key_guid key_id key_name signbyasymkey signbycert symkeyproperty verifysignedbycert verifysignedbyasymkey @@cursor_rows @@fetch_status cursor_status datalength ident_current ident_incr ident_seed identity sql_variant_property @@datefirst current_timestamp current_timezone current_timezone_id date_bucket dateadd datediff datediff_big datefromparts datename datepart datetime2fromparts datetimefromparts datetimeoffsetfromparts datetrunc day eomonth getdate getutcdate isdate month smalldatetimefromparts switchoffset sysdatetime sysdatetimeoffset sysutcdatetime timefromparts todatetimeoffset year edit_distance edit_distance_similarity jaro_winkler_distance jaro_winkler_similarity edge_id_from_parts graph_id_from_edge_id graph_id_from_node_id node_id_from_parts object_id_from_edge_id object_id_from_node_id json isjson json_array json_contains json_modify json_object json_path_exists json_query json_value regexp_like regexp_replace regexp_substr regexp_instr regexp_count regexp_matches regexp_split_to_table abs acos asin atan atn2 ceiling cos cot degrees exp floor log log10 pi power radians rand round sign sin sqrt square tan choose greatest iif least @@procid app_name applock_mode applock_test assemblyproperty col_length col_name columnproperty databasepropertyex db_id db_name file_id file_idex file_name filegroup_id filegroup_name filegroupproperty fileproperty filepropertyex fulltextcatalogproperty fulltextserviceproperty index_col indexkey_property indexproperty next value for object_definition object_id object_name object_schema_name objectproperty objectpropertyex original_db_name parsename schema_id schema_name scope_identity serverproperty stats_date type_id type_name typeproperty dense_rank ntile rank row_number publishingservername certenclosed certprivatekey current_user database_principal_id has_dbaccess has_perms_by_name is_member is_rolemember is_srvrolemember loginproperty original_login permissions pwdencrypt pwdcompare session_user sessionproperty suser_id suser_name suser_sid suser_sname system_user user user_id user_name ascii char charindex concat concat_ws difference format left len lower ltrim nchar patindex quotename replace replicate reverse right rtrim soundex space str string_agg string_escape stuff substring translate trim unicode upper $partition @@error @@identity @@pack_received @@rowcount @@trancount binary_checksum checksum compress connectionproperty context_info current_request_id current_transaction_id decompress error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big session_context xact_state @@connections @@cpu_busy @@idle @@io_busy @@pack_sent @@packet_errors @@timeticks @@total_errors @@total_read @@total_write textptr textvalid columns_updated eventdata trigger_nestlevel vector_distance vectorproperty vector_search generate_series opendatasource openjson openquery openrowset openxml predict string_split coalesce nullif apply catch filter force include keep keepfixed modify optimize parameterization parameters partition recompile sequence set";const st=m.define({keywords:y+"add external procedure all fetch public alter file raiserror and fillfactor read any for readtext as foreign reconfigure asc freetext references authorization freetexttable replication backup from restore begin full restrict between function return break goto revert browse grant revoke bulk group right by having rollback cascade holdlock rowcount case identity rowguidcol check identity_insert rule checkpoint identitycol save close if schema clustered in securityaudit coalesce index select collate inner semantickeyphrasetable column insert semanticsimilaritydetailstable commit intersect semanticsimilaritytable compute into session_user constraint is set contains join setuser containstable key shutdown continue kill some convert left statistics create like system_user cross lineno table current load tablesample current_date merge textsize current_time national then current_timestamp nocheck to current_user nonclustered top cursor not tran database null transaction dbcc nullif trigger deallocate of truncate declare off try_convert default offsets tsequal delete on union deny open unique desc opendatasource unpivot disk openquery update distinct openrowset updatetext distributed openxml use double option user drop or values dump order varying else outer view end over waitfor errlvl percent when escape pivot where except plan while exec precision with execute primary within group exists print writetext exit proc noexpand index forceseek forcescan holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot spatial_window_max_cells tablock tablockx updlock xlock keepidentity keepdefaults ignore_constraints ignore_triggers",types:h+"smalldatetime datetimeoffset datetime2 datetime bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml",builtin:He,operatorChars:"*+-%<>!=^&|/",specialVar:"@",identifierQuotes:'"['}),ot=m.define({keywords:y+"abort analyze attach autoincrement conflict database detach exclusive fail glob ignore index indexed instead isnull notnull offset plan pragma query raise regexp reindex rename replace temp vacuum virtual",types:h+"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int2 int8 unsigned signed real",builtin:"auth backup bail changes clone databases dbinfo dump echo eqp explain fullschema headers help import imposter indexes iotrace lint load log mode nullvalue once print prompt quit restore save scanstats separator shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width",operatorChars:"*+-%<>!=&|/~",identifierQuotes:'`"',specialVar:"@:?$"}),lt=m.define({keywords:"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime infinity NaN",types:h+"ascii bigint blob counter frozen inet list map static text timeuuid tuple uuid varint",slashComments:!0}),ct=m.define({keywords:y+"abort accept access add all alter and any arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body by case cast char_base check close cluster clusters colauth column comment commit compress connected constant constraint crash create current currval cursor data_base database dba deallocate debugoff debugon declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry exception exception_init exchange exclusive exists external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base of off offline on online only option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw rebuild record ref references refresh rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work",builtin:"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define echo editfile embedded feedback flagger flush heading headsep instance linesize lno loboffset logsource longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar repfooter repheader serveroutput shiftinout show showmode spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout timing trimout trimspool ttitle underline verify version wrap",types:h+"ascii bfile bfilename bigserial bit blob dec long number nvarchar nvarchar2 serial smallint string text uid varchar2 xml",operatorChars:"*/+-%<>!=~",doubleQuotedStrings:!0,charSetCasts:!0,plsqlQuotingMechanism:!0});export{lt as Cassandra,st as MSSQL,it as MariaSQL,nt as MySQL,ct as PLSQL,at as PostgreSQL,m as SQLDialect,ot as SQLite,U as StandardSQL,Fe as keywordCompletionSource,Ge as schemaCompletionSource,rt as sql};
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/arduino-BI0Wlt2c.js","assets/cpp-C11qDRMm.js","assets/c-XQKAasRE.js","assets/clike-BF_vhPOR.js","assets/csharp-BSdrTNSA.js","assets/go-xWYv4r-F.js","assets/java-CUQYWvAL.js","assets/javascript-CEvf9hWA.js","assets/kotlin-DlLEZihb.js","assets/less-DRLW25Ni.js","assets/css-B-uKvPiS.js","assets/markdown-DidFTSvt.js","assets/markup-BHKKUsMC.js","assets/markup-templating-C-XwH7hP.js","assets/objectivec-C86xFqEx.js","assets/php-D30FZ8S0.js","assets/ruby-Bwg0ofHw.js","assets/sass-B4vMtMwp.js","assets/scss-B7E2Cygf.js","assets/typescript-DsefBs7O.js","assets/vbnet-DfXcBIcZ.js","assets/basic-Dv_zySWb.js"])))=>i.map(i=>d[i]);
2
- var yr=Object.defineProperty;var wr=(e,n,t)=>n in e?yr(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var Z=(e,n,t)=>wr(e,typeof n!="symbol"?n+"":n,t);import{dn as xr,an as J,j as O,gs as _t,gt as br,r as Te}from"./index-BMR65QI4.js";var Pn={exports:{}};/*!
2
+ var yr=Object.defineProperty;var wr=(e,n,t)=>n in e?yr(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t;var Z=(e,n,t)=>wr(e,typeof n!="symbol"?n+"":n,t);import{dr as xr,an as J,j as O,gs as _t,gt as br,r as Te}from"./index-B4TIVWAq.js";var Pn={exports:{}};/*!
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see
5
5
  http://jedwatson.github.io/classnames
@@ -0,0 +1 @@
1
+ import{j as e,by as x,dd as m,cW as p,de as P,df as g,dg as w,dh as C,cp as S,di as R,J as T,dj as L,dk as E,B as v,dl as I,dm as M,dn as O,dp as _}from"./index-B4TIVWAq.js";import{dq as D}from"./index-B4TIVWAq.js";function f({label:n,empty:t,allClear:a,action:o,children:c}){return e.jsxs("section",{children:[e.jsxs("div",{className:"mb-2 flex min-h-6 items-center justify-between gap-2",children:[e.jsx("h3",{className:"text-muted-foreground text-xs font-medium tracking-widest uppercase",children:n}),!t&&o]}),t?e.jsx("p",{className:"text-muted-foreground/70 text-xs",children:a}):c]})}const u=5,k={animate:{transition:{staggerChildren:.04}}};function B(){const n=x(),t=m(),a=p(),{schedules:o,errors:c,activity:d,isLoading:l,total:i}=P(),j=g(l),y=w(),A=C(o),N=t==="/"&&!a,r=A.slice(0,u),h=c.slice(0,u-r.length),b=d.slice(0,u-r.length-h.length);return N?null:e.jsxs(f,{label:"Needs attention",empty:!j&&i===0&&r.length===0,allClear:"All quiet. Nothing needs you.",action:e.jsx(v,{variant:"ghost",size:"sm",className:"h-6 text-xs",onClick:()=>n({to:"/"}),children:"View all →"}),children:[e.jsx(S,{initial:!1,children:r.map(s=>e.jsx(R,{task:s,className:"mb-2"},s.id))}),e.jsxs(T.div,{variants:k,initial:"initial",animate:"animate",children:[h.map(s=>e.jsx(L,{signal:s},s.id)),b.map(s=>e.jsx(E,{notification:s,onOpen:()=>y(s)},s.id))]})]})}const F=5;function q(){const n=x(),t=m(),a=p(),{groups:o,isLoading:c}=I(),d=g(c);if(t==="/activity"&&!a)return null;const l=o.flatMap(i=>i.items).slice(0,F);return e.jsx(f,{label:"Activity",empty:!d&&l.length===0,allClear:"No recent activity.",action:e.jsx(v,{variant:"ghost",size:"sm",className:"h-6 text-xs",onClick:()=>n({to:"/activity"}),children:"Open activity →"}),children:e.jsx(M,{children:e.jsx(O,{children:l.map(i=>e.jsx(_,{item:i},i.id))})})})}function H(){return e.jsxs("div",{"data-slot":"pulse",className:"flex h-full flex-col gap-6 overflow-y-auto p-4",children:[e.jsx(B,{}),e.jsx(q,{})]})}export{H as PulsePanel,D as usePulseFreshness};
@@ -0,0 +1,17 @@
1
+ import{e6 as Se,fX as Me,ad as ne,r as a,fY as Ie,fZ as Q,f_ as G,f$ as I,ed as oe,g0 as Ce,aY as Z,g1 as ee,cX as rt,g2 as ot,bz as it,g3 as lt,ah as ae,g4 as ct,g5 as dt,eB as ut,g6 as ft,ae as Te,g7 as ht,j as t,aD as Fe,ak as Ke,aP as pt,C as He,g8 as mt,dc as be,g9 as xt,fi as Ue,fn as gt,aj as Oe,ga as qe,gb as Qe,gc as yt,eI as vt,eJ as Ct,eK as bt,eL as J,eM as ue,ds as wt,dI as fe,dJ as he,dK as pe,dL as me,dM as xe,dN as ge,dO as ye,dP as ve,B,aE as kt,gd as _e,ft as jt,ge as Dt,ag as le,gf as Be,gg as Ye,aX as Et,gh as Rt,gi as Nt,gj as St,gk as Tt,ek as Ee,gl as We,cV as Ft,e7 as Ot,aN as Pt,gm as Mt,gn as _t,fy as At,go as Lt,e9 as zt,ea as $t,eb as It,ec as Kt,ee as Ht,ef as Ut,I as qt,eg as Qt}from"./index-B4TIVWAq.js";import{t as se,g as Bt,C as Yt,n as Ge,r as Ve,p as Wt,F as Gt,w as Vt,c as Xe,a as Xt}from"./room-files-source-C3tzeG6y.js";import{N as Hn,R as Un}from"./room-files-source-C3tzeG6y.js";/**
2
+ * @license lucide-react v1.47.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Je={name:"corner-left-up",size:24,node:[["path",{d:"M14 9 9 4 4 9",key:"1af5af"}],["path",{d:"M20 20h-7a4 4 0 0 1-4-4V4",key:"1blwi3"}]]};Je.node;const Jt=Se(Je);/**
7
+ * @license lucide-react v1.47.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const Ze={name:"file-plus",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M9 15h6",key:"cctwl0"}],["path",{d:"M12 18v-6",key:"17g6i2"}]]};Ze.node;const et=Se(Ze);/**
12
+ * @license lucide-react v1.47.0 - ISC
13
+ *
14
+ * This source code is licensed under the ISC license.
15
+ * See the LICENSE file in the root directory of this source tree.
16
+ */const tt={name:"upload",size:24,node:[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]};tt.node;const Zt=Se(tt);function ie(e,n,s){return["file-explorer","tree",e.scopeKey,n,e.filtersHidden?s:null]}function ke(e,n,s,m){return{queryKey:ie(e,n,s),queryFn:()=>e.list(n,{showHidden:s}),staleTime:Me.FILE_TREE_STALE_TIME_MS,gcTime:Me.FILE_TREE_GC_TIME_MS,placeholderData:p=>p??m.getQueryData(ie(e,n,!s))}}const en=[".git",".dork",".claude",".agents","node_modules"];function tn(e){return e.startsWith(".")||en.includes(e)}const Re=["ROOM.md","README.md"];function Ne(e){return Re.some(n=>n.toLowerCase()===e.toLowerCase())}function nt(e){return e.filter(n=>!tn(n.name))}function nn(e){if(e.reduce((p,l)=>l.type==="file"&&Ne(l.name)?p+1:p,0)===0)return e;const s=[],m=[];for(const p of e)p.type==="file"&&Ne(p.name)?s.push(p):m.push(p);return s.sort((p,l)=>Re.findIndex(o=>o.toLowerCase()===p.name.toLowerCase())-Re.findIndex(o=>o.toLowerCase()===l.name.toLowerCase())),[...s,...m]}const sn=/ copy(?: \d+)?$/;function Pe({name:e,isDir:n,taken:s}){const m=new Set(s);if(!m.has(e))return e;const p=n?-1:e.lastIndexOf("."),l=p>0,o=l?e.slice(p):"",g=(l?e.slice(0,p):e).replace(sn,"");for(let r=1;;r+=1){const f=r===1?`${g} copy${o}`:`${g} copy ${r}${o}`;if(!m.has(f))return f}}function Ae(e,n,s){return{name:n,path:e,type:s,size:0,mtime:Date.now(),isSymlink:!1}}function an(e){const n=ne(),{source:s,showHidden:m,queryClient:p,inFlightRef:l}=e,o=s.cwd??"",[g,r]=a.useState(null),f=a.useCallback(async h=>{l.current+=1;try{return await h()}finally{l.current-=1}},[l]),u=a.useMemo(()=>{const h=x=>ie(s,x,m);return{getChildren:x=>{var w;return((w=p.getQueryData(h(x)))==null?void 0:w.entries)??[]},isLoaded:x=>p.getQueryData(h(x))!==void 0,takenNames:async x=>(await n.readFileTree(o,{path:x===Q?void 0:x,showHidden:!0})).entries.map(k=>k.name),snapshot:x=>p.getQueryData(h(x)),setChildren:(x,w)=>{p.setQueryData(h(x),k=>({entries:Ie(w((k==null?void 0:k.entries)??[]))}))},restore:(x,w)=>{p.setQueryData(h(x),w)},invalidate:x=>{p.invalidateQueries({queryKey:h(x),exact:!0})}}},[p,n,o,s,m]),E=a.useCallback((h,x,w)=>f(async()=>{const k=ee(h,x),T=!u.getChildren(h).some(A=>A.path===k),O=u.snapshot(h);T&&u.setChildren(h,A=>[...A,Ae(k,x,w)]);try{return await n.createEntry(o,k,w),!0}catch(A){return T&&u.restore(h,O),se(A,`Couldn’t create ${w==="dir"?"folder":"file"}`),!1}finally{u.invalidate(h)}}),[n,o,u,f]),P=a.useCallback((h,x)=>f(async()=>{if(x===h.name||x.length===0)return!0;const w=G(h.path),k=ee(w,x),T=u.getChildren(w).some(z=>z.path===k),O=u.snapshot(w),A={...h,name:x,path:k};T||u.setChildren(w,z=>z.map(H=>H.path===h.path?A:H));try{return await n.renameEntry(o,h.path,k),I.getState().remapExpandedPaths(h.path,k),!0}catch(z){return T||u.restore(w,O),se(z,"Couldn’t rename"),!1}finally{u.invalidate(w)}}),[n,o,u,f]),N=a.useCallback(h=>f(async()=>{const x=G(h.path),w=u.snapshot(x);u.setChildren(x,k=>k.filter(T=>T.path!==h.path));try{await n.deleteEntry(o,h.path,{recursive:!0}),I.getState().dropExpandedPaths(h.path)}catch(k){u.restore(x,w),se(k,"Couldn’t delete")}finally{u.invalidate(x)}}),[n,o,u,f]),U=a.useCallback(h=>f(async()=>{const x=G(h.path);if(h.type==="file"){const w=u.snapshot(x);u.setChildren(x,k=>k.filter(T=>T.path!==h.path));try{await n.deleteEntry(o,h.path),I.getState().dropExpandedPaths(h.path)}catch(k){u.restore(x,w),se(k,"Couldn’t delete")}finally{u.invalidate(x)}return}try{await n.deleteEntry(o,h.path),u.setChildren(x,w=>w.filter(k=>k.path!==h.path)),I.getState().dropExpandedPaths(h.path),u.invalidate(x)}catch(w){if(Bt(w)==="DIR_NOT_EMPTY"){r(h);return}se(w,"Couldn’t delete")}}),[n,o,u,f]),b=a.useCallback(async()=>{const h=g;r(null),h&&await N(h)},[g,N]),K=a.useCallback(()=>r(null),[]),$=a.useCallback((h,x)=>f(async()=>{const w=G(h),k=oe(h),T=ee(x,k);if(x===w||T===h||Ce(x,h))return;const O=u.getChildren(w).find(y=>y.path===h);if(!O)return;const A=u.isLoaded(x),z=A&&u.getChildren(x).some(y=>y.path===T),H={...O,name:k,path:T},Y=u.snapshot(w),F=A?u.snapshot(x):void 0;u.setChildren(w,y=>y.filter(v=>v.path!==h)),A&&!z&&u.setChildren(x,y=>[...y,H]);try{await n.renameEntry(o,h,T),I.getState().remapExpandedPaths(h,T)}catch(y){u.restore(w,Y),A&&!z&&u.restore(x,F),se(y,"Couldn’t move")}finally{u.invalidate(w),A&&u.invalidate(x)}}),[n,o,u,f]),C=a.useCallback((h,x)=>f(async()=>{if(h.isDir&&Ce(x,h.path)){Z.error(Yt);return}let w;try{w=await u.takenNames(x)}catch(z){se(z,"Couldn’t copy");return}const k=Pe({name:oe(h.path),isDir:h.isDir,taken:w}),T=ee(x,k),O=u.isLoaded(x),A=O?u.snapshot(x):void 0;if(O){const z=u.getChildren(G(h.path)).find(Y=>Y.path===h.path),H=z?{...z,name:k,path:T}:Ae(T,k,h.isDir?"dir":"file");u.setChildren(x,Y=>[...Y,H])}try{await n.copyEntry(o,h.path,T)}catch(z){O&&u.restore(x,A),se(z,"Couldn’t copy")}finally{u.invalidate(x)}}),[n,o,u,f]);return{createEntry:E,renameEntry:P,removeEntry:U,moveEntry:$,copyEntry:C,pendingRecursiveDelete:g,confirmRecursiveDelete:b,cancelRecursiveDelete:K}}function rn(e){return e!=null&&e.startsWith("darwin")?"Reveal in Finder":e!=null&&e.startsWith("win32")?"Reveal in File Explorer":"Show in File Manager"}function on(e,n){const s=e.includes("\\")&&!e.includes("/"),m=e.replace(/[\\/]+$/,""),p=s?n.split("/").join("\\"):n;return`${m}${s?"\\":"/"}${p}`}function ln(e){const n=ne(),{data:s}=rt(),m=a.useMemo(()=>n.supportsReveal?rn(s==null?void 0:s.platform):null,[n.supportsReveal,s==null?void 0:s.platform]),p=a.useCallback(async f=>{if(e)try{await n.revealEntry(e,f.path)}catch(u){se(u,"Couldn’t open the file manager")}},[n,e]),{copy:l}=ot(),o=a.useCallback(async(f,u)=>{const E=u==="absolute"&&e?on(e,f.path):f.path;await l(E)||Z.error("Couldn’t copy to the clipboard")},[e,l]),g=a.useCallback(f=>{it(lt(f.path))||Z.error("Open a chat first to add a file to it")},[]),r=a.useCallback(f=>{I.getState().setClipboard({path:f.path,isDir:f.type==="dir"});try{navigator.clipboard.writeText(f.path).catch(()=>{})}catch{}},[]);return{revealLabel:m,reveal:p,copyPath:o,addToChat:g,copyToClipboard:r}}const cn=1e3;function dn(e){const{source:n,showHidden:s,queryClient:m,inFlightRef:p}=e,l=n.changes,[o,g]=a.useState(null),[r,f]=a.useState(null),[u,E]=a.useState(null),[P,N]=a.useState(0),U=a.useCallback(async d=>{p.current+=1,N(c=>c+1);try{return await d()}finally{p.current-=1,N(c=>c-1)}},[p]),b=a.useMemo(()=>{const d=c=>ie(n,c,s);return{listing:c=>m.getQueryData(d(c)),isLoaded:c=>m.getQueryData(d(c))!==void 0,entries:c=>{var D;return((D=m.getQueryData(d(c)))==null?void 0:D.entries)??[]},setEntries:(c,D)=>m.setQueryData(d(c),j=>({...j,entries:Ie(D((j==null?void 0:j.entries)??[]))})),restore:(c,D)=>m.setQueryData(d(c),D),fetch:c=>n.list(c,{showHidden:!0}),refreshAll:()=>{m.invalidateQueries({queryKey:["file-explorer","tree",n.scopeKey]}),m.invalidateQueries({queryKey:["file-explorer","preview",n.scopeKey]})}}},[m,n,s]),K=a.useCallback(async d=>{const c=b.listing(d);return(c==null?void 0:c.commit)!==void 0?c.commit:(await b.fetch(d)).commit??null},[b]),$=a.useCallback((d,c,D,j)=>{switch(d.status){case"changed":return!0;case"conflict":return E({kind:c,path:d.path,lastCommit:d.lastCommit,retry:()=>D(d.commit)}),!1;case"exists":return Z.error(j===void 0?d.reason:Ge(j)),!1;case"refused":return Z.error(d.reason),!1}},[]),C=a.useCallback((d,c)=>{Z.error(Ve(d)??c)},[]),h=a.useCallback((d,c,D)=>{const j=q=>U(async()=>{if(l===void 0)return!1;const S=G(d.path),L=G(c),R=oe(c),W=b.isLoaded(L),te=W&&b.entries(L).some(V=>V.path===c),i=b.listing(S),_=L===S?void 0:b.listing(L),ce={...d,name:R,path:c};te||(L===S?b.setEntries(S,V=>V.map(X=>X.path===d.path?ce:X)):(b.setEntries(S,V=>V.filter(X=>X.path!==d.path)),W&&b.setEntries(L,V=>[...V,ce])));const re=()=>{b.restore(S,i),L!==S&&W&&b.restore(L,_)};try{const V=q??await K(S);if(V===null)return re(),Z.error("There’s nothing in this room’s files to change yet."),!1;const X=await l.move({from:d.path,to:c,baseCommit:V}),de=$(X,D,async je=>{await j(je)},R);return de?I.getState().remapExpandedPaths(d.path,c):re(),de}catch(V){return re(),C(V,D==="rename"?"Couldn’t rename":"Couldn’t move"),!1}finally{b.refreshAll()}});return j(null)},[l,b,U,K,$,C]),x=a.useCallback(async(d,c)=>c===d.name||c.length===0?!0:h(d,ee(G(d.path),c),"rename"),[h]),w=a.useCallback(async(d,c)=>{const D=G(d),j=ee(c,oe(d));if(c===D||j===d||Ce(c,d))return;const q=b.entries(D).find(S=>S.path===d);q&&await h(q,j,"move")},[b,h]),k=a.useCallback(async d=>{let c=0;const D=[d];for(;D.length>0;){const j=D.shift(),q=await b.fetch(j);for(const S of q.entries)if(S.type==="dir"?D.push(S.path):c+=1,c>=cn)return{count:c,moreThan:!0}}return{count:c,moreThan:!1}},[b]),T=a.useCallback(d=>{if(d.type!=="dir"){g({entry:d,fileCount:1,moreThan:!1});return}g({entry:d,fileCount:null,moreThan:!1}),k(d.path).then(({count:c,moreThan:D})=>g(j=>(j==null?void 0:j.entry.path)===d.path?{entry:d,fileCount:c,moreThan:D}:j),()=>{})},[k]),O=a.useCallback(d=>{const c=D=>U(async()=>{if(l===void 0)return;const j=G(d.path),q=b.listing(j);b.setEntries(j,S=>S.filter(L=>L.path!==d.path));try{const S=D??await K(j);if(S===null){b.restore(j,q);return}const L=await l.remove({path:d.path,baseCommit:S});$(L,"delete",W=>c(W))?I.getState().dropExpandedPaths(d.path):b.restore(j,q)}catch(S){b.restore(j,q),C(S,"Couldn’t delete")}finally{b.refreshAll()}});return c(null)},[l,b,U,K,$,C]),A=a.useCallback(async()=>{const d=o;g(null),d&&await O(d.entry)},[o,O]),z=a.useCallback(()=>g(null),[]),H=a.useCallback((d,c,D,j)=>{const q=S=>U(async()=>{if(l===void 0)return;const L=b.isLoaded(d),R=L?b.listing(d):void 0;if(L){const W=new Set(b.entries(d).map(i=>i.name)),te=c.filter(i=>!W.has(i.name)).map(i=>({name:i.name,path:ee(d,i.name),type:"file",size:i.size}));te.length>0&&b.setEntries(d,i=>[...i,...te])}try{const W=await l.upload({dir:d,baseCommit:S,replace:D,files:c});!$(W,"upload",i=>q(i))&&L&&b.restore(d,R)}catch(W){L&&b.restore(d,R),C(W,"Couldn’t upload")}finally{b.refreshAll()}});return q(j)},[l,b,U,$,C]),Y=a.useCallback(async(d,c)=>{if(l===void 0||c.length===0)return;if(c.length>l.maxUploadFiles){Z.error(`One upload can carry up to ${l.maxUploadFiles} files, so nothing was uploaded. Try again with fewer.`);return}let D;try{D=await b.fetch(d)}catch(R){C(R,"Couldn’t upload");return}const j=D.entries.map(R=>R.name),q=new Set(j),S=c.map(R=>R.name).filter(R=>q.has(R)),L=D.commit??null;if(S.length===0){await H(d,c,[],L);return}f({dir:d,files:c,names:S,taken:j,baseCommit:L})},[l,b,C,H]),F=a.useCallback(async d=>{const c=r;if(f(null),c===null)return;if(d==="replace"){await H(c.dir,c.files,c.names,c.baseCommit);return}const D=new Set([...c.taken,...c.files.map(S=>S.name)]),j=new Set(c.names),q=c.files.map(S=>{if(!j.has(S.name))return S;const L=Pe({name:S.name,isDir:!1,taken:D});return D.add(L),new File([S],L,{type:S.type,lastModified:S.lastModified})});await H(c.dir,q,[],c.baseCommit)},[r,H]),y=a.useCallback(()=>f(null),[]),v=a.useCallback(()=>E(null),[]),M=a.useMemo(()=>r===null?null:{dir:r.dir,names:r.names},[r]);return{renameEntry:x,moveEntry:w,requestDelete:T,pendingDelete:o,confirmDelete:A,cancelDelete:z,upload:Y,pendingClash:M,resolveClash:F,cancelClash:y,conflict:u,dismissConflict:v,busy:P>0}}const Le={scopeKey:"",cwd:null,writable:!1,provenance:!1,filtersHidden:!0,preview:"canvas",editable:!1,list:()=>Promise.resolve({entries:[]})};function un(e){var F,y;const n=ne(),s=ae(),{setTheme:m}=ct(),p=I(v=>v.showHidden),l=I(v=>v.expanded),o=I(v=>v.loadExplorerForCwd),g=I(v=>v.pruneMissing),r=(e==null?void 0:e.scopeKey)??null,f=(e==null?void 0:e.cwd)??null;a.useEffect(()=>{o(r)},[r,o]);const u=a.useMemo(()=>[Q,...dt(l)],[l]),E=ut({queries:e?u.map(v=>ke(e,v,p,s)):[]}),P=(e==null?void 0:e.filtersHidden)??!0,N=a.useMemo(()=>{const v={};return u.forEach((M,d)=>{var j;const c=E[d];let D=((j=c==null?void 0:c.data)==null?void 0:j.entries)??[];!p&&!P&&(D=nt(D)),M===Q&&(D=nn(D)),v[M]={entries:D,loading:(c==null?void 0:c.isLoading)??!1,error:(c==null?void 0:c.isError)??!1}}),v},[u,E,p,P]),U=a.useRef(0),b=a.useRef({});a.useEffect(()=>{U.current>0||u.forEach((v,M)=>{var c,D,j;const d=(D=(c=E[M])==null?void 0:c.data)==null?void 0:D.entries;!d||(j=E[M])!=null&&j.isError||b.current[v]!==d&&(b.current[v]=d,g(v,d.map(q=>q.name)))})},[u,E,g]);const K=a.useMemo(()=>ft(l,N),[l,N]),$=!!e&&!!((F=N[Q])!=null&&F.loading),C=!!e&&!!((y=N[Q])!=null&&y.error),h=a.useMemo(()=>{var M;const v=new Set;for(const d of u)d!==Q&&((M=N[d])!=null&&M.error)&&v.add(d);return v},[u,N]),x=a.useCallback(v=>{if(v.type!=="dir")return;const M=I.getState();M.setDirExpanded(v.path,!M.expanded[v.path])},[]),w=a.useCallback(v=>{if(v===Q)return;const M=I.getState();M.expanded[v]||M.setDirExpanded(v,!0)},[]),k=(e==null?void 0:e.preview)==="canvas",T=a.useCallback(v=>{if(v.type!=="file"||!k)return;const M={getStore:Te.getState,setTheme:m,supportsTerminal:n.supportsTerminal};ht(M,{action:"open_file",sourcePath:v.path},"user")},[k,m,n]),O=a.useCallback(()=>{r!==null&&s.invalidateQueries({queryKey:["file-explorer","tree",r]})},[s,r]),A=a.useCallback(v=>{e!==null&&s.invalidateQueries({queryKey:ie(e,v,p),exact:!0})},[s,e,p]);a.useEffect(()=>{if(e!=null&&e.events)return e.events(O)},[e,O]);const z=an({source:e??Le,showHidden:p,queryClient:s,inFlightRef:U}),H=dn({source:e??Le,showHidden:p,queryClient:s,inFlightRef:U}),Y=ln(f);return{rows:K,rootLoading:$,rootError:C,errorPaths:h,toggleExpand:x,ensureExpanded:w,openFile:T,reload:O,retryDir:A,changes:e!=null&&e.changes?H:null,...z,...Y}}function fn(e){const{transport:n,cwd:s}=e;return{scopeKey:s,cwd:s,writable:!0,provenance:!1,filtersHidden:!0,preview:"canvas",editable:!1,list(m,p){return n.readFileTree(s,{path:m===""?void 0:m,showHidden:p.showHidden})}}}function we(e){return Array.from(e).includes("Files")}function st(e){const n=Array.from(e.items??[]);if(!(n.length>0&&n.every(l=>"webkitGetAsEntry"in l)))return{files:Array.from(e.files??[]),folders:0};const m=[];let p=0;for(const l of n){if(l.kind!=="file")continue;const o=l.webkitGetAsEntry();if(o!=null&&o.isDirectory){p+=1;continue}const g=l.getAsFile();g&&m.push(g)}return{files:m,folders:p}}const hn=12;function pn({row:e,selected:n,renaming:s,error:m,onSelect:p,onActivate:l,onRetry:o,onSubmitRename:g,onCancelRename:r,onNewFile:f,onNewFolder:u,onStartRename:E,onDelete:P,onMove:N,onCopyInto:U,onCopy:b,onPaste:K,onDuplicate:$,canPasteInto:C,revealLabel:h,onReveal:x,onAddToChat:w,onCopyPath:k,readOnly:T=!1,provenance:O=!1,copyable:A=!0,onDisk:z=!0,onUpload:H,onPickUpload:Y}){const{entry:F,depth:y,expanded:v,loading:M}=e,d=F.type==="dir",c=d?F.path:G(F.path),[D,j]=a.useState(!1),q=!d&&y===0&&Ne(F.name),S=Wt(F.lastCommit),L=t.jsxs("div",{role:"treeitem","aria-label":F.name,"aria-expanded":d?v:void 0,"aria-selected":n,tabIndex:-1,onKeyDown:R=>{(R.key==="Enter"||R.key===" ")&&(R.preventDefault(),p(F),l(F))},draggable:!s&&!T,onDragStart:R=>{T||(R.dataTransfer.setData("text/plain",F.path),R.dataTransfer.setData(yt,F.path),R.dataTransfer.effectAllowed="copyMove")},onDragOver:R=>{if(R.stopPropagation(),!T&&H&&we(R.dataTransfer.types)){R.preventDefault(),R.dataTransfer.dropEffect="copy",j(!0);return}T||!d||!Qe(R.dataTransfer.types)||(R.preventDefault(),R.dataTransfer.dropEffect=R.altKey&&A?"copy":"move",j(!0))},onDragLeave:()=>j(!1),onDrop:R=>{if(R.stopPropagation(),T)return;if(j(!1),H&&we(R.dataTransfer.types)){R.preventDefault();const{files:te}=st(R.dataTransfer);H(c,te);return}if(!d)return;const W=qe(R.dataTransfer);W!==null&&(R.preventDefault(),R.altKey&&A?U(W,F.path):N(W,F.path))},onClick:()=>{p(F),l(F)},className:Oe("flex w-full cursor-pointer items-center gap-1 py-1 pr-2 text-sm transition-colors",n?"bg-accent text-foreground":"hover:bg-accent/50",D&&"ring-ring/60 bg-accent ring-1"),style:{paddingLeft:y*hn+8},children:[t.jsx("span",{className:"flex size-4 flex-shrink-0 items-center justify-center",children:d&&(M?t.jsx(Fe,{size:"xs",className:"text-muted-foreground"}):m?t.jsx("button",{type:"button","aria-label":"Retry loading",title:"Couldn’t load. Retry",onClick:R=>{R.stopPropagation(),o()},className:"flex items-center justify-center",children:t.jsx(Ke,{className:"text-destructive size-3.5"})}):v?t.jsx(pt,{className:"text-muted-foreground size-3.5"}):t.jsx(He,{className:"text-muted-foreground size-3.5"}))}),d?v?t.jsx(mt,{className:"size-(--size-icon-sm) flex-shrink-0 text-sky-500"}):t.jsx(be,{className:"size-(--size-icon-sm) flex-shrink-0 text-sky-500"}):F.isSymlink===!0?t.jsx(xt,{className:"text-muted-foreground size-(--size-icon-sm) flex-shrink-0"}):t.jsx(Ue,{className:"text-muted-foreground size-(--size-icon-sm) flex-shrink-0"}),s?t.jsx(mn,{initialName:F.name,onSubmit:R=>g(F,R),onCancel:r}):t.jsx("span",{className:"min-w-0 flex-1 truncate",children:F.name}),q&&!s&&t.jsx(gt,{"aria-label":"Pinned to the top",className:"text-muted-foreground/60 size-3 flex-shrink-0"}),O&&!s&&t.jsx("span",{className:"text-muted-foreground/70 text-2xs max-w-[45%] flex-shrink-0 truncate tabular-nums",title:S.title??void 0,children:S.label})]});return T?L:t.jsxs(vt,{children:[t.jsx(Ct,{asChild:!0,children:L}),t.jsxs(bt,{className:"w-52",children:[t.jsx(J,{movesFocus:!0,onClick:()=>f(c),children:"New file"}),t.jsx(J,{movesFocus:!0,onClick:()=>u(c),children:"New folder"}),Y&&t.jsx(J,{onClick:()=>Y(c),children:"Upload files…"}),z&&t.jsxs(t.Fragment,{children:[t.jsx(ue,{}),h&&t.jsx(J,{onClick:()=>x(F),children:h}),t.jsx(J,{movesFocus:!0,onClick:()=>w(F),children:"Add to chat"})]}),A&&t.jsxs(t.Fragment,{children:[t.jsx(ue,{}),t.jsx(J,{onClick:()=>b(F),children:"Copy"}),t.jsx(J,{disabled:!C(c),onClick:()=>K(c),children:"Paste"}),t.jsx(J,{onClick:()=>$(F),children:"Duplicate"})]}),t.jsx(ue,{}),z?t.jsxs(t.Fragment,{children:[t.jsx(J,{onClick:()=>k(F,"absolute"),children:"Copy path"}),t.jsx(J,{onClick:()=>k(F,"relative"),children:"Copy relative path"})]}):t.jsx(J,{onClick:()=>k(F,"relative"),children:"Copy path"}),t.jsx(ue,{}),t.jsx(J,{movesFocus:!0,onClick:()=>E(F),children:"Rename"}),t.jsx(J,{variant:"destructive",onClick:()=>P(F),children:"Delete"})]})]})}function mn({initialName:e,onSubmit:n,onCancel:s}){const m=a.useRef(null),[p,l]=a.useState(e);a.useEffect(()=>{const g=m.current;if(!g)return;g.focus();const r=e.lastIndexOf(".");g.setSelectionRange(0,r>0?r:e.length)},[e]);const o=()=>{const g=p.trim();g&&g!==e?n(g):s()};return t.jsx("input",{ref:m,type:"text",value:p,"aria-label":"New name",onChange:g=>l(g.target.value),onClick:g=>g.stopPropagation(),onBlur:o,onKeyDown:g=>{g.stopPropagation(),g.key==="Enter"?o():g.key==="Escape"&&s()},className:"border-border bg-background min-w-0 flex-1 rounded border px-1 py-0 text-sm outline-none"})}const xn=100,gn=28,yn=250;function vn(e){const{rows:n,selectedPath:s,renamingPath:m,errorPaths:p,onSelectPath:l,onRetryDir:o}=e,g=a.useRef(null),r=I(y=>y.setScrollTop),f=I(y=>y.scopeKey),u=a.useCallback(y=>y.type==="dir"?e.onToggle(y):e.onOpen(y),[e]),E=bn(e,u),P=n.length>xn,N=wt({count:n.length,getScrollElement:()=>g.current,estimateSize:()=>gn,overscan:12,enabled:P}),U=a.useRef({scope:void 0,done:!1}),b=a.useRef(null);a.useLayoutEffect(()=>{const y=U.current;if(y.scope!==f&&(y.scope=f,y.done=!1),y.done||n.length===0)return;const v=g.current;if(!v)return;const M=I.getState().scrollTop;if(M<=0){y.done=!0;return}P?N.scrollToOffset(M):v.scrollTop=M,b.current=v.scrollTop,v.scrollTop>=M&&(y.done=!0)},[n.length,f,P,N]);const K=a.useRef(null),$=a.useRef(null),C=a.useCallback(()=>{const y=g.current;y&&y.scrollTop!==b.current&&(U.current.done=!0,K.current=y.scrollTop,$.current&&clearTimeout($.current),$.current=setTimeout(()=>{$.current=null,K.current!==null&&r(K.current)},yn))},[r]);a.useEffect(()=>()=>{$.current&&clearTimeout($.current),K.current!==null&&r(K.current)},[r]);const h=a.useRef(void 0);a.useEffect(()=>{var d,c;const y=h.current;if(h.current=s,y===void 0||s===y||s===null)return;const v=n.findIndex(D=>D.entry.path===s);if(v<0)return;const M=g.current;M&&(P?N.scrollToIndex(v,{align:"auto"}):(c=(d=M.querySelector(`[data-row-index="${v}"]`))==null?void 0:d.scrollIntoView)==null||c.call(d,{block:"nearest"}),b.current=M.scrollTop)},[s,n,P,N]);const[x,w]=a.useState(!1),{onCopyInto:k,onMove:T}=e,O=e.readOnly===!0,A=e.copyable!==!1,z=a.useCallback(y=>{O||!Qe(y.dataTransfer.types)||(y.preventDefault(),y.dataTransfer.dropEffect=y.altKey&&A?"copy":"move",w(!0))},[O,A]),H=a.useCallback((y,v)=>{const M=n.find(d=>d.entry.path===y);M&&k({path:y,isDir:M.entry.type==="dir"},v)},[n,k]),Y=a.useCallback(y=>{if(w(!1),O)return;const v=qe(y.dataTransfer);v!==null&&(y.preventDefault(),y.altKey&&A?H(v,Q):T(v,Q))},[H,T,O,A]),F=y=>t.jsx(pn,{row:y,selected:y.entry.path===s,renaming:y.entry.path===m,error:y.entry.type==="dir"&&y.expanded&&p.has(y.entry.path),onSelect:v=>l(v.path),onActivate:u,onRetry:()=>o(y.entry.path),onSubmitRename:e.onSubmitRename,onCancelRename:e.onCancelRename,onStartRename:e.onStartRename,onNewFile:e.onNewFile,onNewFolder:e.onNewFolder,onDelete:e.onDelete,onMove:e.onMove,onCopyInto:H,onCopy:e.onCopy,onPaste:e.onPaste,onDuplicate:e.onDuplicate,canPasteInto:e.canPasteInto,revealLabel:e.revealLabel,onReveal:e.onReveal,onAddToChat:e.onAddToChat,onCopyPath:e.onCopyPath,readOnly:e.readOnly,provenance:e.provenance,copyable:e.copyable,onDisk:e.onDisk,onUpload:e.onUpload,onPickUpload:e.onPickUpload});return t.jsx("div",{ref:g,role:"tree","aria-label":"File explorer",tabIndex:0,onKeyDown:E,onScroll:C,onDragOver:z,onDragLeave:()=>w(!1),onDrop:Y,className:Oe("focus-visible:ring-ring/40 h-full overflow-auto outline-none focus-visible:ring-1 focus-visible:ring-inset",x&&"ring-ring/60 bg-accent/30 ring-1 ring-inset"),children:P?t.jsx("div",{style:{height:N.getTotalSize()},className:"relative w-full",children:N.getVirtualItems().map(y=>t.jsx("div",{"data-row-index":y.index,className:"absolute top-0 left-0 w-full",style:{transform:`translateY(${y.start}px)`},children:F(n[y.index])},n[y.index].entry.path))}):n.map((y,v)=>t.jsx("div",{"data-row-index":v,children:F(y)},y.entry.path))})}function Cn(e){return e?e.type==="dir"?e.path:G(e.path):Q}function bn(e,n){const{rows:s,selectedPath:m,renamingPath:p,onSelectPath:l}=e;return a.useCallback(o=>{var f,u,E,P;if(p!==null)return;const g=s.findIndex(N=>N.entry.path===m),r=g>=0?s[g]:void 0;if(o.metaKey||o.ctrlKey){if(e.readOnly===!0||e.copyable===!1)return;const N=o.key.toLowerCase();if(N==="c"&&r){o.preventDefault(),e.onCopy(r.entry);return}if(N==="v"){o.preventDefault(),e.onPaste(Cn(r==null?void 0:r.entry));return}return}switch(o.key){case"ArrowDown":o.preventDefault(),l(((f=s[Math.min(g+1,s.length-1)])==null?void 0:f.entry.path)??((u=s[0])==null?void 0:u.entry.path));break;case"ArrowUp":o.preventDefault(),l(((E=s[Math.max(g-1,0)])==null?void 0:E.entry.path)??((P=s[0])==null?void 0:P.entry.path));break;case"ArrowRight":(r==null?void 0:r.entry.type)==="dir"&&!r.expanded&&(o.preventDefault(),e.onToggle(r.entry));break;case"ArrowLeft":if(!r)break;if(o.preventDefault(),r.entry.type==="dir"&&r.expanded)e.onToggle(r.entry);else{const N=G(r.entry.path);N&&l(N)}break;case"Enter":r&&(o.preventDefault(),n(r.entry));break;case"F2":r&&e.readOnly!==!0&&(o.preventDefault(),e.onStartRename(r.entry));break;case"Delete":case"Backspace":r&&e.readOnly!==!0&&(o.preventDefault(),e.onDelete(r.entry));break}},[s,m,p,l,e,n])}const wn={rename:"Rename it anyway",move:"Move it anyway",delete:"Delete it anyway",upload:"Upload mine over it"},kn={rename:"nothing was renamed",move:"nothing was moved",delete:"nothing was deleted",upload:"nothing was uploaded"};function jn(e){const{entry:n,fileCount:s,moreThan:m}=e,p="The room’s history keeps a copy, so an agent or git can bring it back if you need it.";if(n.type!=="dir")return`“${n.name}” leaves the room’s files. ${p}`;const l=s===null?"everything in it":m?`the more than ${s.toLocaleString()} files in it`:s===1?"the 1 file in it":`the ${s.toLocaleString()} files in it`;return`“${n.name}” and ${l} leave the room’s files. ${p}`}function Dn({changes:e,onOpenTheirs:n,onReturnFocus:s}){var f;const m=u=>{u.preventDefault();const E=document.activeElement;E!==null&&E!==document.body||s()},{pendingDelete:p,pendingClash:l,conflict:o}=e,g=l===null?"":l.dir===Q?"The top folder":`“${l.dir}”`,r=(l==null?void 0:l.names.length)===1;return t.jsxs(t.Fragment,{children:[t.jsx(fe,{open:p!==null,onOpenChange:u=>!u&&e.cancelDelete(),children:t.jsxs(he,{onCloseAutoFocus:m,children:[t.jsxs(pe,{children:[t.jsx(me,{children:(p==null?void 0:p.entry.type)==="dir"?"Delete this folder?":"Delete this file?"}),t.jsx(xe,{children:p===null?"":jn(p)})]}),t.jsxs(ge,{children:[t.jsx(ye,{onClick:e.cancelDelete,children:"Cancel"}),t.jsx(ve,{onClick:()=>void e.confirmDelete(),className:"bg-destructive hover:bg-destructive/90 dark:bg-destructive/60 text-white",children:"Delete"})]})]})}),t.jsx(fe,{open:l!==null,onOpenChange:u=>!u&&e.cancelClash(),children:t.jsxs(he,{onCloseAutoFocus:m,children:[t.jsxs(pe,{children:[t.jsx(me,{children:r?`Replace “${l==null?void 0:l.names[0]}”?`:`Replace ${(l==null?void 0:l.names.length)??0} files?`}),t.jsx(xe,{children:r?`${g} already has a file with this name. Replace it with yours, or keep both and add yours under a new name.`:`${g} already has files with these names: ${(l==null?void 0:l.names.join(", "))??""}. Replace them with yours, or keep both and add yours under new names.`})]}),t.jsxs(ge,{children:[t.jsx(ye,{onClick:e.cancelClash,children:"Cancel"}),t.jsx(B,{variant:"outline",onClick:()=>void e.resolveClash("keep-both"),children:"Keep both"}),t.jsx(ve,{onClick:()=>void e.resolveClash("replace"),children:"Replace"})]})]})}),t.jsx(fe,{open:o!==null,onOpenChange:u=>!u&&e.dismissConflict(),children:t.jsxs(he,{onCloseAutoFocus:m,children:[t.jsxs(pe,{children:[t.jsx(me,{children:"Somebody changed this first"}),t.jsx(xe,{children:o===null?"":`${((f=o.lastCommit)==null?void 0:f.author)??"Somebody"} changed “${o.path}” after you opened it, so ${kn[o.kind]}.`})]}),(o==null?void 0:o.lastCommit)&&t.jsxs("p",{className:"text-muted-foreground text-xs",children:[o.lastCommit.subject," · ",kt(o.lastCommit.at)]}),t.jsxs(ge,{children:[t.jsx(ye,{onClick:e.dismissConflict,children:"Cancel"}),t.jsx(B,{variant:"outline",onClick:()=>{o!==null&&(e.dismissConflict(),n(o.path))},children:"Open their version"}),t.jsx(ve,{onClick:()=>{o!==null&&(e.dismissConflict(),o.retry())},className:"bg-destructive hover:bg-destructive/90 dark:bg-destructive/60 text-white",children:o===null?"":wn[o.kind]})]})]})})]})}function ze(e,n){return n.name===e?Ge(e):`There’s already “${n.name}” there, and a name that differs only in capital letters is the same ${n.type==="dir"?"folder":"file"} on some computers. Pick another name.`}const En="Folders can’t be uploaded whole. Open the folder and drop the files inside it.";function Rn({source:e,className:n,onCommands:s}={}){var te;const m=ne(),p=Te(i=>i.selectedCwd),l=a.useMemo(()=>p?fn({transport:m,cwd:p}):null,[m,p]),o=e===void 0?l:e,g=o!==null&&!o.writable,r=un(o),f=r.changes,u=ae(),E=I(i=>i.showHidden),{rows:P,rootLoading:N,rootError:U,errorPaths:b}=r,K=I(i=>i.setCommands),$=I(i=>i.selectedPath),C=I(i=>i.setSelectedPath),h=I(i=>i.clipboard),[x,w]=a.useState(null),[k,T]=a.useState(null),[O,A]=a.useState(null),z=a.useCallback(i=>A(i===null?null:{path:i,isNew:!1}),[]),H=a.useRef(null),Y=a.useRef(Q),[F,y]=a.useState(!1),v=a.useCallback((i,_)=>{if(f!==null){if(_.length===0){Z.error(En);return}r.ensureExpanded(i),f.upload(i,_)}},[f,r]),M=a.useRef(null),d=a.useCallback(()=>{var i,_;(_=(i=M.current)==null?void 0:i.querySelector('[role="tree"]'))==null||_.focus()},[]),c=a.useCallback(i=>{var _;Y.current=i,(_=H.current)==null||_.click()},[]),D=a.useCallback(i=>h!==null&&!(h.isDir&&Ce(i,h.path)),[h]),j=a.useCallback((i,_)=>{r.ensureExpanded(i),_e.flushSync(()=>{T(null),w({parent:i,type:_})})},[r]),q=a.useCallback(i=>{_e.flushSync(()=>T(i.path))},[]),S=a.useRef({startCreate:j,reload:r.reload,pickUpload:c});a.useEffect(()=>{S.current={startCreate:j,reload:r.reload,pickUpload:c}});const L=f!==null;a.useEffect(()=>{if(g||s===void 0&&L)return;const i=s??K;return i({newFile:()=>S.current.startCreate(Q,"file"),newFolder:()=>S.current.startCreate(Q,"dir"),refresh:()=>S.current.reload(),...L&&{upload:()=>S.current.pickUpload(Q)}}),()=>i(null)},[K,s,g,L]);const R=a.useCallback(async i=>{var re;if(!x||o===null)return;const _=x;if(w(null),f!==null){const X=(((re=u.getQueryData(ie(o,_.parent,E)))==null?void 0:re.entries)??[]).find(je=>je.name.toLowerCase()===i.toLowerCase());if(_.type==="dir"){if(X!==void 0&&!(X.type==="dir"&&X.name===i)){Z.error(ze(i,X));return}w({parent:ee(_.parent,i),type:"file",firstInFolder:i});return}if(X!==void 0){Z.error(ze(i,X));return}const de=ee(_.parent,i);A({path:de,isNew:!0});return}await r.createEntry(_.parent,i,_.type)&&C(ee(_.parent,i))},[x,o,f,u,E,r,C]),W=a.useCallback(async(i,_)=>{T(null),(f?await f.renameEntry(i,_):await r.renameEntry(i,_))&&C(ee(G(i.path),_))},[f,r,C]);return o===null?e!==void 0?null:t.jsx("div",{className:"text-muted-foreground flex h-full items-center justify-center p-6 text-center text-sm",children:"Select a working directory to browse its files."}):t.jsxs("div",{ref:M,className:Oe("flex h-full flex-col",F&&"ring-ring/60 bg-accent/30 ring-1 ring-inset",n),onDragOver:i=>{f===null||!we(i.dataTransfer.types)||(i.preventDefault(),i.dataTransfer.dropEffect="copy",y(!0))},onDragLeave:i=>{i.currentTarget.contains(i.relatedTarget)||y(!1)},onDrop:i=>{y(!1),!(f===null||!we(i.dataTransfer.types))&&(i.preventDefault(),v(Q,st(i.dataTransfer).files))},children:[f!==null&&t.jsx("input",{ref:H,type:"file",multiple:!0,hidden:!0,"aria-hidden":!0,tabIndex:-1,"data-testid":"room-files-upload-input",onChange:i=>{const _=Array.from(i.target.files??[]);i.target.value="",v(Y.current,_)}}),t.jsxs("div",{className:"min-h-0 flex-1",children:[x&&t.jsx(Nn,{type:x.type,firstInFolder:x.firstInFolder,onSubmit:i=>void R(i),onCancel:()=>w(null)},`${x.parent}:${x.type}:${x.firstInFolder??""}`),N&&P.length===0?t.jsx("div",{className:"flex h-20 items-center justify-center",children:t.jsx(Fe,{size:"md",className:"text-muted-foreground",label:"Loading files"})}):U&&P.length===0?t.jsxs("div",{className:"text-muted-foreground flex h-20 flex-col items-center justify-center gap-2 text-xs",children:[t.jsx("span",{children:"Couldn’t load files."}),t.jsxs(B,{variant:"outline",size:"xs",onClick:r.reload,children:[t.jsx(Ke,{}),"Retry"]})]}):P.length===0&&!x?t.jsx("div",{className:"text-muted-foreground/60 flex h-20 items-center justify-center px-4 text-center text-xs",children:f!==null?"No files yet. Drop files here, or use Upload.":"Empty directory"}):t.jsx(vn,{rows:P,selectedPath:$,renamingPath:k,errorPaths:b,onSelectPath:C,onToggle:r.toggleExpand,onOpen:i=>{o.preview==="inline"?z(i.path):r.openFile(i)},onRetryDir:r.retryDir,onSubmitRename:(i,_)=>void W(i,_),onCancelRename:()=>T(null),onStartRename:q,onNewFile:i=>j(i,"file"),onNewFolder:i=>j(i,"dir"),onDelete:i=>f?f.requestDelete(i):void r.removeEntry(i),onMove:(i,_)=>void(f?f.moveEntry(i,_):r.moveEntry(i,_)),onCopyInto:(i,_)=>void r.copyEntry(i,_),onCopy:r.copyToClipboard,onPaste:i=>{h&&r.copyEntry(h,i)},onDuplicate:i=>void r.copyEntry({path:i.path,isDir:i.type==="dir"},G(i.path)),canPasteInto:D,readOnly:g,provenance:o.provenance,copyable:f===null,onDisk:o.cwd!==null,onUpload:f?v:void 0,onPickUpload:f?c:void 0,revealLabel:r.revealLabel,onReveal:i=>void r.reveal(i),onAddToChat:r.addToChat,onCopyPath:(i,_)=>void r.copyPath(i,_)})]}),o.preview==="inline"&&t.jsx(Gt,{source:o,path:(O==null?void 0:O.path)??null,isNew:(O==null?void 0:O.isNew)??!1,onCreated:()=>{O!==null&&(A({path:O.path,isNew:!1}),C(O.path))},onClose:()=>A(null)}),f!==null&&t.jsx(Dn,{changes:f,onOpenTheirs:i=>z(i),onReturnFocus:d}),t.jsx(fe,{open:r.pendingRecursiveDelete!==null,onOpenChange:i=>!i&&r.cancelRecursiveDelete(),children:t.jsxs(he,{children:[t.jsxs(pe,{children:[t.jsx(me,{children:"Delete this folder?"}),t.jsxs(xe,{children:["“",(te=r.pendingRecursiveDelete)==null?void 0:te.name,"” isn’t empty. Deleting it removes everything inside. This can’t be undone."]})]}),t.jsxs(ge,{children:[t.jsx(ye,{onClick:r.cancelRecursiveDelete,children:"Cancel"}),t.jsx(ve,{onClick:()=>void r.confirmRecursiveDelete(),className:"bg-destructive hover:bg-destructive/90 dark:bg-destructive/60 text-white",children:"Delete"})]})]})})]})}function Nn({type:e,firstInFolder:n,onSubmit:s,onCancel:m}){const p=a.useRef(null),[l,o]=a.useState("");a.useEffect(()=>{var f;(f=p.current)==null||f.focus()},[]);const g=()=>{const f=l.trim();f?s(f):m()},r=t.jsxs("div",{className:"flex items-center gap-1",children:[e==="dir"?t.jsx(be,{className:"size-(--size-icon-sm) flex-shrink-0 text-sky-500"}):t.jsx(Ue,{className:"text-muted-foreground size-(--size-icon-sm) flex-shrink-0"}),t.jsx("input",{ref:p,type:"text",value:l,"aria-label":n!==void 0?`First file in ${n}`:e==="dir"?"New folder name":"New file name",placeholder:e==="dir"?"folder-name":"file-name",onChange:f=>o(f.target.value),onBlur:g,onKeyDown:f=>{f.key==="Enter"?g():f.key==="Escape"&&m()},className:"border-border bg-background min-w-0 flex-1 rounded border px-1 py-0 text-sm outline-none"})]});return n===void 0?t.jsx("div",{className:"px-3 py-1",children:r}):t.jsxs("div",{className:"space-y-1 px-3 py-1",children:[t.jsxs("p",{className:"text-muted-foreground flex min-w-0 items-center gap-1 text-xs",children:[t.jsx(be,{className:"size-(--size-icon-xs) flex-shrink-0 text-sky-500"}),t.jsx("span",{className:"truncate",children:n})]}),r,t.jsx("p",{className:"text-muted-foreground text-2xs",children:"Name its first file. The folder appears when you save it."})]})}function at(){const e=I(m=>m.showHidden),n=I(m=>m.setShowHidden),s=e?"Hide hidden files":"Show hidden files";return t.jsx(B,{variant:"ghost",size:"icon-xs","aria-label":s,title:s,onClick:()=>n(!e),children:e?t.jsx(jt,{className:"text-muted-foreground"}):t.jsx(Dt,{className:"text-muted-foreground"})})}function Sn({cwd:e}){const n=ne(),{data:s}=le({queryKey:["file-explorer","workspace",e],queryFn:()=>n.resolveWorkspace(e),staleTime:6e4});return s!=null&&s.branch?t.jsxs("span",{className:"text-muted-foreground bg-muted/50 text-2xs inline-flex min-w-0 items-center gap-1 rounded px-1.5 py-0.5",title:`Workspace ${s.key} on ${s.branch}`,children:[t.jsx(Be,{className:"size-3 flex-shrink-0"}),t.jsx("span",{className:"truncate",children:s.branch})]}):null}function Ln(){const e=Te(s=>s.selectedCwd),n=I(s=>s.commands);return e?t.jsxs(t.Fragment,{children:[t.jsx(Sn,{cwd:e}),t.jsx(B,{variant:"ghost",size:"icon-xs","aria-label":"New file",title:"New file",onClick:()=>n==null?void 0:n.newFile(),children:t.jsx(et,{className:"text-muted-foreground"})}),t.jsx(B,{variant:"ghost",size:"icon-xs","aria-label":"New folder",title:"New folder",onClick:()=>n==null?void 0:n.newFolder(),children:t.jsx(Ye,{className:"text-muted-foreground"})}),t.jsx(at,{}),t.jsx(B,{variant:"ghost",size:"icon-xs","aria-label":"Refresh",title:"Refresh",onClick:()=>n==null?void 0:n.refresh(),children:t.jsx(Et,{className:"text-muted-foreground"})})]}):null}function Tn({roomId:e}){const n=ne(),s=ae(),m=le(We(n,e));a.useEffect(()=>Vt(s,e,()=>{s.invalidateQueries({queryKey:Ee.repoStatus(e)})}),[s,e]);const p=a.useMemo(()=>{var r;return((r=m.data)==null?void 0:r.kind)==="ok"?Rt(m.data.status):[]},[m.data]),l=Nt(p),o=St(p);if(!o)return null;const g=p.map((r,f)=>`${l[f]}: ${Tt(r)}`);return t.jsxs("span",{"data-slot":"pending-work-badge",title:g.join(`
17
+ `),className:"text-muted-foreground bg-muted/50 text-2xs inline-flex min-w-0 items-center gap-1 rounded px-1.5 py-0.5",children:[t.jsx(Be,{className:"size-3 flex-shrink-0"}),t.jsxs("span",{className:"sr-only",children:["Not merged into the room yet. ",g.join(". "),"."]}),t.jsx("span",{"aria-hidden":"true",className:"truncate",children:o})]})}const Fn={added:"added",modified:"changed",deleted:"deleted",untracked:"new"},On=new Map([["OPERATOR_ONLY","Only the person who owns this DorkOS can decide what happens to those changes."],["ROOM_FILE_NOT_FOUND","One of those changes is not there any more, so nothing was discarded. The list below has been refreshed."],["MERGE_IN_FLIGHT","Something else is writing to this room’s files right now. Nothing was changed. Try again in a moment."],["MAIN_CHECKOUT_DIRTY","This room’s files are on another branch, which DorkOS will not move for you. Put them back on main yourself."],["ROOM_REPO_GIT_UNAVAILABLE","This computer doesn’t have git installed, and a room’s files are a git repository."],["ROOM_HAS_NO_REPO","This room does not have files of its own any more."],["ROOM_REPOS_DISABLED","Rooms cannot have files of their own on this install right now."]]);function Pn({roomId:e}){var K,$;const n=ne(),s=ae(),m=le(We(n,e)),[p,l]=a.useState([]),[o,g]=a.useState(!1),[r,f]=a.useState(null),u=Ft({mutationFn:C=>n.repairRoomMain(e,C),onSuccess:()=>{l([]),g(!1),f(null),s.invalidateQueries({queryKey:Ee.repoStatus(e)})},onError:C=>{g(!1);const h=On.get(Ot(C)??"");f(h??"That didn’t work. Try again in a moment."),s.invalidateQueries({queryKey:Ee.repoStatus(e)})}});if(((K=m.data)==null?void 0:K.kind)==="unavailable")return t.jsx("p",{role:"alert","data-slot":"room-main-warning",className:"border-border/60 text-muted-foreground rounded-lg border px-3 py-2.5 text-xs",children:"DorkOS couldn’t check whether this room’s files are in order. If saving here is refused, this is why. Try again in a moment."});const E=(($=m.data)==null?void 0:$.kind)==="ok"?m.data.status.main:void 0;if(E===void 0||!E.dirty)return null;const P=E.branch!=="main",N=p.filter(C=>E.strays.some(h=>h.path===C)),U=o&&N.length>0,b=C=>l(h=>h.includes(C)?h.filter(x=>x!==C):[...h,C]);return t.jsxs("div",{role:"alert","data-slot":"room-main-warning",className:"border-border/60 bg-muted/40 space-y-3 rounded-lg border px-3 py-2.5 text-sm",children:[t.jsxs("div",{className:"flex gap-2",children:[t.jsx(Pt,{className:"text-muted-foreground mt-0.5 size-(--size-icon-sm) flex-shrink-0"}),t.jsxs("div",{className:"min-w-0 space-y-1",children:[t.jsx("p",{className:"font-medium",children:"Somebody changed this room’s files outside DorkOS"}),t.jsx("p",{className:"text-muted-foreground text-xs",children:P?`This room’s files are on ${E.branch??"no branch"} instead of main. Nobody can save a file here and no agent can merge into it until they are back on main. DorkOS will not move a branch it did not move, in case there is work on it.`:"Nobody can save a file here, and no agent can merge its work in, until these are dealt with."})]})]}),!P&&t.jsxs(t.Fragment,{children:[t.jsx("ul",{className:"space-y-1.5",children:E.strays.map(C=>t.jsxs("li",{className:"flex items-center gap-2",children:[t.jsx(Mt,{id:`stray-${e}-${C.path}`,checked:N.includes(C.path),onCheckedChange:()=>b(C.path),disabled:u.isPending}),t.jsx("label",{htmlFor:`stray-${e}-${C.path}`,className:"min-w-0 flex-1 cursor-pointer truncate font-mono text-xs",title:C.path,children:C.path}),t.jsx("span",{className:"text-muted-foreground flex-shrink-0 text-xs",children:Fn[C.kind]})]},C.path))}),E.strayCount>E.strays.length&&t.jsxs("p",{className:"text-muted-foreground text-xs",children:["…and ",E.strayCount-E.strays.length," more, not listed here. Keeping them all still keeps every one."]}),U?t.jsxs("div",{className:"space-y-2",children:[t.jsx("p",{className:"text-xs",children:N.length===1?"Throw away that change? It cannot be brought back.":`Throw away those ${N.length} changes? They cannot be brought back.`}),t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(B,{type:"button",variant:"ghost",size:"sm",disabled:u.isPending,onClick:()=>g(!1),children:"Cancel"}),t.jsx(B,{type:"button",variant:"destructive",size:"sm",disabled:u.isPending,onClick:()=>u.mutate({action:"discard",paths:[...N]}),children:"Yes, discard"})]})]}):t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(B,{type:"button",variant:"outline",size:"sm",disabled:u.isPending,onClick:()=>u.mutate({action:"commit"}),children:"Keep them all"}),t.jsx(B,{type:"button",variant:"ghost",size:"sm",disabled:u.isPending||N.length===0,onClick:()=>g(!0),children:N.length===0?"Discard…":`Discard ${N.length}`})]})]}),r!==null&&t.jsx("p",{className:"text-destructive text-xs",children:r})]})}const De="pointer-coarse:size-11";function zn({roomId:e,canChange:n}){const s=ne(),m=ae(),p=I(P=>P.showHidden),[l,o]=a.useState(null),g=a.useMemo(()=>Xe({transport:s,queryClient:m,roomId:e,canChange:n}),[s,m,e,n]),r=le(ke(g,Q,p,m)),f=r.isSuccess&&r.data.absent!==!0||r.isError,[u,E]=a.useState(null);return f&&u!==e&&E(e),!f&&u!==e?null:t.jsxs("section",{"aria-label":"Room files",className:"space-y-2",children:[t.jsxs("header",{className:"flex items-center gap-2",children:[t.jsx(_t,{className:"text-muted-foreground size-(--size-icon-sm) flex-shrink-0"}),t.jsx("h3",{className:"text-muted-foreground text-xs font-medium tracking-wide uppercase",children:"Files"}),t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx(Tn,{roomId:e})}),n&&t.jsxs(t.Fragment,{children:[t.jsx(B,{variant:"ghost",size:"icon-xs",className:De,"aria-label":"New file",title:"New file",disabled:l===null,onClick:()=>l==null?void 0:l.newFile(),children:t.jsx(et,{className:"text-muted-foreground"})}),t.jsx(B,{variant:"ghost",size:"icon-xs",className:De,"aria-label":"New folder",title:"New folder",disabled:l===null,onClick:()=>l==null?void 0:l.newFolder(),children:t.jsx(Ye,{className:"text-muted-foreground"})}),t.jsx(B,{variant:"ghost",size:"icon-xs",className:De,"aria-label":"Upload files",title:"Upload files",disabled:(l==null?void 0:l.upload)===void 0,onClick:()=>{var P;return(P=l==null?void 0:l.upload)==null?void 0:P.call(l)},children:t.jsx(Zt,{className:"text-muted-foreground"})})]}),t.jsx(at,{})]}),t.jsx(Pn,{roomId:e}),t.jsx("div",{"data-slot":"room-files-body",className:"border-border/60 h-72 overflow-hidden rounded-lg border",children:t.jsx(Rn,{source:g,onCommands:o})})]})}function $n({roomId:e,attachment:n}){var f;const s=ne(),m=ae(),p=a.useMemo(()=>Xe({transport:s,queryClient:m,roomId:e}),[s,m,e]),l=le(ke(p,Q,!1,m)),[o,g]=a.useState(!1),r=At(e);return!l.isSuccess||l.data.absent===!0||((f=r.data)==null?void 0:f.archived)!==!1?null:t.jsxs(t.Fragment,{children:[t.jsx(B,{type:"button",variant:"ghost",size:"icon-xs","aria-label":`Save ${n.name} to the room’s files`,title:"Save to room files",className:"text-muted-foreground hover:text-foreground mt-0.5 pointer-coarse:size-11",onClick:()=>g(!0),children:t.jsx(Lt,{})}),o&&t.jsx(Mn,{roomId:e,source:p,attachment:n,onClose:()=>g(!1)})]})}function Mn({roomId:e,source:n,attachment:s,onClose:m}){const p=ne(),l=ae(),[o,g]=a.useState(Q),[r,f]=a.useState(s.name),[u,E]=a.useState(null),[P,N]=a.useState(!1),U=a.useId(),b=le(ke(n,o,!1,l)),K=a.useMemo(()=>{var C;return nt(((C=b.data)==null?void 0:C.entries)??[]).filter(h=>h.type==="dir")},[b.data]),$=async()=>{var h,x;const C=r.trim();if(C!==""){N(!0),E(null);try{await p.saveAttachmentToRoomFiles(e,{attachmentId:s.id,dir:o,name:C,baseCommit:((h=b.data)==null?void 0:h.commit)??null}),l.invalidateQueries({queryKey:["file-explorer","tree",n.scopeKey]}),Z.success(`Saved ${C} to the room’s files`),m()}catch(w){let k;try{k=Xt(w,l,e)}catch{k={status:"refused",reason:Ve(w)??"That didn’t save. Try again in a moment."}}if(k.status==="exists"){const T=(((x=b.data)==null?void 0:x.entries)??[]).map(O=>O.name);E({reason:`This folder already has a file called “${C}”. Pick another name.`,suggestion:Pe({name:C,isDir:!1,taken:[...T,C]})})}else k.status==="conflict"?(E({reason:"Somebody changed this folder while you were choosing, so nothing was saved. Try again."}),b.refetch()):k.status==="refused"&&E({reason:k.reason})}finally{N(!1)}}};return t.jsx(zt,{open:!0,onOpenChange:C=>!C&&m(),children:t.jsxs($t,{className:"sm:max-w-md",children:[t.jsxs(It,{children:[t.jsx(Kt,{children:"Save to room files"}),t.jsx(Ht,{children:"Keep this file with the room’s files, where everyone in the room and their agents can find it."})]}),t.jsxs(Ut,{className:"space-y-3",children:[t.jsxs("div",{className:"space-y-1",children:[t.jsx("p",{className:"text-muted-foreground text-xs font-medium",children:"Folder"}),t.jsxs("div",{role:"group","aria-label":"Folders",className:"border-border/60 max-h-56 overflow-auto rounded-md border",children:[t.jsx("p",{className:"bg-muted/40 truncate px-3 py-1.5 font-mono text-xs",children:o===Q?"Top folder":`${o}/`}),o!==Q&&t.jsx($e,{label:"Up one folder",icon:t.jsx(Jt,{className:"text-muted-foreground size-(--size-icon-sm)"}),onClick:()=>g(G(o))}),b.isPending?t.jsx("div",{className:"flex h-12 items-center justify-center",children:t.jsx(Fe,{size:"sm",className:"text-muted-foreground",label:"Loading folders"})}):K.length===0?t.jsx("p",{className:"text-muted-foreground px-3 py-2 text-xs",children:"No folders in here."}):K.map(C=>t.jsx($e,{label:C.name,icon:t.jsx(be,{className:"size-(--size-icon-sm) text-sky-500"}),chevron:!0,onClick:()=>g(ee(o,oe(C.path)))},C.path))]})]}),t.jsxs("div",{className:"space-y-1",children:[t.jsx("label",{htmlFor:U,className:"text-muted-foreground text-xs font-medium",children:"Name"}),t.jsx(qt,{id:U,value:r,onChange:C=>{f(C.target.value),E(null)},spellCheck:!1,autoComplete:"off"})]}),u!==null&&t.jsxs("div",{role:"alert",className:"text-destructive space-y-1 text-xs",children:[t.jsx("p",{children:u.reason}),u.suggestion!==void 0&&t.jsxs(B,{type:"button",variant:"outline",size:"xs",onClick:()=>{f(u.suggestion),E(null)},children:["Use “",u.suggestion,"”"]})]})]}),t.jsxs(Qt,{className:"gap-2",children:[t.jsx(B,{type:"button",variant:"ghost",onClick:m,children:"Cancel"}),t.jsx(B,{type:"button",disabled:P||r.trim()===""||b.isPending,onClick:()=>void $(),children:P?"Saving…":o===Q?"Save to the top folder":`Save to ${oe(o)}`})]})]})})}function $e({label:e,icon:n,chevron:s=!1,onClick:m}){return t.jsxs("button",{type:"button",onClick:m,className:"hover:bg-accent/50 focus-visible:bg-accent flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm outline-none",children:[n,t.jsx("span",{className:"min-w-0 flex-1 truncate",children:e}),s&&t.jsx(He,{className:"text-muted-foreground size-3.5"})]})}export{Rn as FileExplorer,Ln as FileExplorerActions,Gt as FilePreviewDialog,en as HIDDEN_ENTRY_NAMES,at as HiddenEntriesToggle,Hn as NO_PROVENANCE,Re as PINNED_ENTRY_NAMES,Un as ROOM_FILES_REFRESH_INTERVAL_MS,zn as RoomFilesSection,$n as SaveToRoomFilesButton,Xe as createRoomFilesSource,fn as createSessionCwdSource,ie as explorerDirQueryKey,ke as explorerDirQueryOptions,tn as isHiddenEntryName,Ne as isPinnedEntryName,nn as pinnedFirst,Wt as provenanceLine,We as roomRepoStatusQueryOptions,nt as withoutHidden};
@@ -1,33 +1,33 @@
1
- var Ce=Object.defineProperty;var Ne=(t,n,s)=>n in t?Ce(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s;var U=(t,n,s)=>Ne(t,typeof n!="symbol"?n+"":n,s);import{e3 as N,z as $,f3 as Re,r as h,f4 as De,f5 as X,f6 as ze,ej as Ie,j as e,f7 as _,f8 as Me,f9 as ne,fa as Te,fb as Se,fc as Ae,fd as se,b as B,fe as H,ff as V,aj as O,fg as Fe,fh as Oe,X as _e,fi as Ee,B as k,ak as Le,ez as Ue,N as T,fj as Pe,fk as $e,fl as Be,fm as He,fn as Ve,fo as Ye,fp as Ke,fq as Z,al as We,A as qe,af as y,fr as Ge,fs as Je,ft as Qe,fu as Xe,fv as Ze,aY as ee,fw as te,fx as et,fy as tt,fz as nt,fA as st,fB as ae,fC as at}from"./index-BMR65QI4.js";import{fD as Ut,fE as Pt}from"./index-BMR65QI4.js";import{c as ot,F as rt}from"./room-files-source-BXF5daqI.js";/**
2
- * @license lucide-react v1.44.0 - ISC
1
+ var Ce=Object.defineProperty;var Ne=(t,n,s)=>n in t?Ce(t,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[n]=s;var U=(t,n,s)=>Ne(t,typeof n!="symbol"?n+"":n,s);import{e6 as N,ad as $,f9 as Re,r as p,fa as De,fb as X,fc as Ie,eo as ze,j as e,fd as E,fe as Me,ff as ne,fg as Te,fh as Se,fi as Fe,fj as se,b as B,fk as H,fl as V,aj as O,fm as Ae,fn as Oe,X as Ee,fo as _e,B as k,ak as Le,eE as Ue,J as T,fp as Pe,fq as $e,fr as Be,fs as He,ft as Ve,fu as Ye,fv as Ke,fw as Z,al as We,ah as qe,ae as y,fx as Je,fy as Ge,fz as Qe,fA as Xe,fB as Ze,aY as ee,fC as te,fD as et,fE as tt,fF as nt,fG as st,fH as ae,fI as at}from"./index-B4TIVWAq.js";import{fJ as Ut,fK as Pt}from"./index-B4TIVWAq.js";import{c as ot,F as rt}from"./room-files-source-C3tzeG6y.js";/**
2
+ * @license lucide-react v1.47.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const oe={name:"box",size:24,node:[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]};oe.node;const it=N(oe);/**
7
- * @license lucide-react v1.44.0 - ISC
7
+ * @license lucide-react v1.47.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
11
  */const re={name:"braces",size:24,node:[["path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1",key:"ezmyqa"}],["path",{d:"M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1",key:"e1hn23"}]],aliases:["curly-braces"]};re.node;const ie=N(re);/**
12
- * @license lucide-react v1.44.0 - ISC
12
+ * @license lucide-react v1.47.0 - ISC
13
13
  *
14
14
  * This source code is licensed under the ISC license.
15
15
  * See the LICENSE file in the root directory of this source tree.
16
16
  */const le={name:"file-headphone",size:24,node:[["path",{d:"M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343",key:"1vfytu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0",key:"1etmh7"}]],aliases:["file-audio","file-audio-2"]};le.node;const lt=N(le);/**
17
- * @license lucide-react v1.44.0 - ISC
17
+ * @license lucide-react v1.47.0 - ISC
18
18
  *
19
19
  * This source code is licensed under the ISC license.
20
20
  * See the LICENSE file in the root directory of this source tree.
21
21
  */const ce={name:"file-play",size:24,node:[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M15.033 13.44a.647.647 0 0 1 0 1.12l-4.065 2.352a.645.645 0 0 1-.968-.56v-4.704a.645.645 0 0 1 .967-.56z",key:"1tzo1f"}]],aliases:["file-video"]};ce.node;const ct=N(ce);/**
22
- * @license lucide-react v1.44.0 - ISC
22
+ * @license lucide-react v1.47.0 - ISC
23
23
  *
24
24
  * This source code is licensed under the ISC license.
25
25
  * See the LICENSE file in the root directory of this source tree.
26
26
  */const de={name:"git-compare",size:24,node:[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["path",{d:"M11 18H8a2 2 0 0 1-2-2V9",key:"19pyzm"}]]};de.node;const dt=N(de);/**
27
- * @license lucide-react v1.44.0 - ISC
27
+ * @license lucide-react v1.47.0 - ISC
28
28
  *
29
29
  * This source code is licensed under the ISC license.
30
30
  * See the LICENSE file in the root directory of this source tree.
31
- */const ue={name:"image",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]};ue.node;const ut=N(ue);function mt(t){const n=$(),{roomId:s,viewerAuthorId:r,documentId:i,url:f,readScrollY:u,subscribe:d}=t,a=Re(s,r),g=h.useRef({roomId:s,documentId:i,url:f,readScrollY:u});g.current={roomId:s,documentId:i,url:f,readScrollY:u};const m=h.useRef(null),x=h.useRef(0);h.useEffect(()=>{if(!a||s===null||i===null)return;const j=()=>{m.current=null,x.current=Date.now();const b=g.current;if(b.roomId===null||b.documentId===null)return;const A=b.roomId,E={documentId:b.documentId,...b.url!==void 0?{url:b.url}:{},...b.readScrollY?{scrollY:Math.max(0,Math.round(b.readScrollY()))}:{}};n.publishRoomView(A,E).then(L=>{!L.followed&&r!==null&&ze.getState().noteNobodyFollowing(A,r)}).catch(()=>{})},c=()=>{if(m.current!==null)return;const b=Date.now()-x.current;if(b>=X){j();return}m.current=setTimeout(j,X-b)};c();const R=d==null?void 0:d(c),S=setInterval(c,De);return()=>{clearInterval(S),R==null||R()}},[n,a,s,r,i,f,d]),h.useEffect(()=>()=>{m.current!==null&&clearTimeout(m.current)},[])}const ft={url:_,markdown:se,json:ie,image:ut,pdf:Ae,widget:Se,mcp_app:Te,file:ne,model3d:it,audio:lt,video:ct,csv:Me,browser:_,diff:dt},pt="after:absolute after:inset-x-0 after:-inset-y-2 md:after:hidden";function Y(t){return t==="browser"?"browser-panel":"canvas-panel"}const ht={canvas:"Open canvas documents",browser:"Open browser pages"};function K(t){return`canvas-tab-${t}`}const xt=3;function yt(t){const n=t.map(r=>r.displayName);if(n.length===0)return null;if(n.length===1)return`${n[0]} is looking at this.`;if(n.length===2)return`${n[0]} and ${n[1]} are looking at this.`;const s=n.length-2;return`${n[0]}, ${n[1]} and ${s} ${s===1?"other":"others"} are looking at this.`}function vt({watchers:t}){const n=yt(t);if(n===null)return null;const s=t.slice(0,xt),r=t.length-s.length;return e.jsxs(e.Fragment,{children:[e.jsxs("span",{"data-slot":"canvas-tab-watchers","aria-hidden":!0,className:"flex shrink-0 -space-x-1",children:[s.map(i=>e.jsx(B,{size:"xs",className:"ring-background size-3.5 text-[8px] ring-1",kind:i.kind,color:i.color??V(i.id),emoji:i.emoji,imageUrl:i.imageUrl,badge:null,fallback:H(i.displayName)},i.id)),r>0&&e.jsxs("span",{className:"bg-muted text-muted-foreground ring-background flex size-3.5 shrink-0 items-center justify-center rounded-full text-[8px] ring-1",children:["+",r]})]}),e.jsx("span",{className:"sr-only",children:n})]})}function me({view:t,documents:n,activeDocumentId:s,onActivate:r,onClose:i,onPin:f}){const u=Y(t),{getTabProps:d}=Ie({orderedIds:n.map(a=>a.id),activeId:s,onActivate:a=>r(a),onClose:a=>i(a),getFallbackFocus:()=>document.getElementById(u)});return n.length===0?null:e.jsx("div",{role:"tablist","aria-label":ht[t],className:"flex items-stretch gap-1 overflow-x-auto border-b px-2 py-1",children:n.map(a=>{const g=ft[a.contentType],m=a.id===s,x=a.author;return e.jsxs("div",{role:"presentation",className:"group relative flex shrink-0",children:[e.jsxs("button",{type:"button",role:"tab","aria-selected":m,id:K(a.id),"aria-controls":m?u:void 0,...d(a.id),className:O("focus-ring flex items-center gap-1.5 rounded-md py-3 pl-2 text-xs transition-colors md:py-1",f?"pr-12":"pr-7",m?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted/60 hover:text-foreground"),children:[x&&e.jsx(B,{"aria-hidden":!0,size:"xs",className:"size-3.5 shrink-0 text-[8px]",kind:x.kind,color:x.color??V(x.id),emoji:x.emoji,imageUrl:x.imageUrl,badge:null,fallback:H(x.displayName)}),e.jsx(g,{className:"size-3.5 shrink-0"}),e.jsx("span",{className:"max-w-40 truncate font-medium",children:a.sourceLabel}),a.watchers&&a.watchers.length>0&&e.jsx(vt,{watchers:a.watchers}),a.unread&&e.jsx("span",{"data-slot":"canvas-tab-unread","aria-hidden":!0,className:"bg-primary size-1.5 shrink-0 rounded-full"})]}),f&&e.jsx("button",{type:"button",tabIndex:-1,onClick:()=>f(a.id,!a.pinned),"aria-label":a.pinned?`Unpin ${a.sourceLabel}`:`Pin ${a.sourceLabel}`,className:O("focus-ring hover:bg-background/80 absolute top-1/2 right-6 -translate-y-1/2 rounded-sm p-1.5 transition-opacity md:p-0.5",a.pinned?"opacity-100":"opacity-0 group-hover:opacity-60"),children:a.pinned?e.jsx(Fe,{className:"size-3"}):e.jsx(Oe,{className:"size-3"})}),e.jsx("button",{type:"button",tabIndex:-1,onClick:()=>i(a.id),"aria-label":`Close ${a.sourceLabel}`,className:O("focus-ring hover:bg-background/80 absolute top-1/2 right-1 -translate-y-1/2 rounded-sm p-1.5 opacity-60 transition-opacity group-hover:opacity-100 md:p-0.5",pt),children:e.jsx(_e,{className:"size-3"})})]},a.id)})})}function gt({error:t,onRetry:n}){const s=Ee(t);return e.jsxs("div",{className:"text-muted-foreground flex h-full flex-col items-center justify-center gap-3 p-8 text-center",children:[e.jsx("p",{children:"This tab hit a problem"}),s?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm",children:"The app may have updated since you opened this tab. Reloading usually fixes it."}),e.jsx(k,{type:"button",size:"sm",onClick:()=>window.location.reload(),children:"Reload DorkOS"})]}):e.jsxs(k,{type:"button",variant:"outline",size:"sm",onClick:n,children:[e.jsx(Le,{className:"size-4"}),"Try again"]})]})}class fe extends h.Component{constructor(){super(...arguments);U(this,"state",{error:null,retryKey:0});U(this,"handleRetry",()=>{this.setState(s=>({error:null,retryKey:s.retryKey+1}))})}static getDerivedStateFromError(s){return{error:s}}componentDidCatch(s,r){console.error(`[Canvas] Document viewer error (${this.props.documentId}):`,s,r)}render(){const{error:s,retryKey:r}=this.state;return s?e.jsx(gt,{error:s,onRetry:this.handleRetry}):e.jsx(h.Fragment,{children:this.props.children},r)}}function bt({onReload:t,onKeepMine:n}){return e.jsxs("div",{role:"status",className:"border-border/60 bg-muted/40 mx-2 mt-2 space-y-2 rounded-md border px-3 py-2 text-sm",children:[e.jsx("p",{children:"Your agent changed this while you were editing, so nothing here moved."}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(k,{type:"button",variant:"outline",size:"sm",onClick:t,children:"Reload"}),e.jsx(k,{type:"button",variant:"ghost",size:"sm",onClick:n,children:"Keep mine"})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Reload shows their version and ends your edit. Keep mine throws theirs away."})]})}const jt={canvas:{heading:"A blank canvas",blurb:"Your agent can render documents, data, and files here.",actions:[{icon:se,label:"Markdown",description:"Render a document",action:()=>({type:"markdown",content:`# Untitled
31
+ */const ue={name:"image",size:24,node:[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]};ue.node;const ut=N(ue);function mt(t){const n=$(),{roomId:s,viewerAuthorId:r,documentId:i,url:f,readScrollY:u,subscribe:d}=t,a=Re(s,r),g=p.useRef({roomId:s,documentId:i,url:f,readScrollY:u});g.current={roomId:s,documentId:i,url:f,readScrollY:u};const m=p.useRef(null),x=p.useRef(0);p.useEffect(()=>{if(!a||s===null||i===null)return;const j=()=>{m.current=null,x.current=Date.now();const b=g.current;if(b.roomId===null||b.documentId===null)return;const F=b.roomId,_={documentId:b.documentId,...b.url!==void 0?{url:b.url}:{},...b.readScrollY?{scrollY:Math.max(0,Math.round(b.readScrollY()))}:{}};n.publishRoomView(F,_).then(L=>{!L.followed&&r!==null&&Ie.getState().noteNobodyFollowing(F,r)}).catch(()=>{})},c=()=>{if(m.current!==null)return;const b=Date.now()-x.current;if(b>=X){j();return}m.current=setTimeout(j,X-b)};c();const R=d==null?void 0:d(c),S=setInterval(c,De);return()=>{clearInterval(S),R==null||R()}},[n,a,s,r,i,f,d]),p.useEffect(()=>()=>{m.current!==null&&clearTimeout(m.current)},[])}const ft={url:E,markdown:se,json:ie,image:ut,pdf:Fe,widget:Se,mcp_app:Te,file:ne,model3d:it,audio:lt,video:ct,csv:Me,browser:E,diff:dt},ht="after:absolute after:inset-x-0 after:-inset-y-2 md:after:hidden";function Y(t){return t==="browser"?"browser-panel":"canvas-panel"}const pt={canvas:"Open canvas documents",browser:"Open browser pages"};function K(t){return`canvas-tab-${t}`}const xt=3;function yt(t){const n=t.map(r=>r.displayName);if(n.length===0)return null;if(n.length===1)return`${n[0]} is looking at this.`;if(n.length===2)return`${n[0]} and ${n[1]} are looking at this.`;const s=n.length-2;return`${n[0]}, ${n[1]} and ${s} ${s===1?"other":"others"} are looking at this.`}function vt({watchers:t}){const n=yt(t);if(n===null)return null;const s=t.slice(0,xt),r=t.length-s.length;return e.jsxs(e.Fragment,{children:[e.jsxs("span",{"data-slot":"canvas-tab-watchers","aria-hidden":!0,className:"flex shrink-0 -space-x-1",children:[s.map(i=>e.jsx(B,{size:"xs",className:"ring-background size-3.5 text-[8px] ring-1",kind:i.kind,color:i.color??V(i.id),emoji:i.emoji,imageUrl:i.imageUrl,badge:null,fallback:H(i.displayName)},i.id)),r>0&&e.jsxs("span",{className:"bg-muted text-muted-foreground ring-background flex size-3.5 shrink-0 items-center justify-center rounded-full text-[8px] ring-1",children:["+",r]})]}),e.jsx("span",{className:"sr-only",children:n})]})}function me({view:t,documents:n,activeDocumentId:s,onActivate:r,onClose:i,onPin:f}){const u=Y(t),{getTabProps:d}=ze({orderedIds:n.map(a=>a.id),activeId:s,onActivate:a=>r(a),onClose:a=>i(a),getFallbackFocus:()=>document.getElementById(u)});return n.length===0?null:e.jsx("div",{role:"tablist","aria-label":pt[t],className:"flex items-stretch gap-1 overflow-x-auto border-b px-2 py-1",children:n.map(a=>{const g=ft[a.contentType],m=a.id===s,x=a.author;return e.jsxs("div",{role:"presentation",className:"group relative flex shrink-0",children:[e.jsxs("button",{type:"button",role:"tab","aria-selected":m,id:K(a.id),"aria-controls":m?u:void 0,...d(a.id),className:O("focus-ring flex items-center gap-1.5 rounded-md py-3 pl-2 text-xs transition-colors md:py-1",f?"pr-12":"pr-7",m?"bg-muted text-foreground":"text-muted-foreground hover:bg-muted/60 hover:text-foreground"),children:[x&&e.jsx(B,{"aria-hidden":!0,size:"xs",className:"size-3.5 shrink-0 text-[8px]",kind:x.kind,color:x.color??V(x.id),emoji:x.emoji,imageUrl:x.imageUrl,badge:null,fallback:H(x.displayName)}),e.jsx(g,{className:"size-3.5 shrink-0"}),e.jsx("span",{className:"max-w-40 truncate font-medium",children:a.sourceLabel}),a.watchers&&a.watchers.length>0&&e.jsx(vt,{watchers:a.watchers}),a.unread&&e.jsx("span",{"data-slot":"canvas-tab-unread","aria-hidden":!0,className:"bg-primary size-1.5 shrink-0 rounded-full"})]}),f&&e.jsx("button",{type:"button",tabIndex:-1,onClick:()=>f(a.id,!a.pinned),"aria-label":a.pinned?`Unpin ${a.sourceLabel}`:`Pin ${a.sourceLabel}`,className:O("focus-ring hover:bg-background/80 absolute top-1/2 right-6 -translate-y-1/2 rounded-sm p-1.5 transition-opacity md:p-0.5",a.pinned?"opacity-100":"opacity-0 group-hover:opacity-60"),children:a.pinned?e.jsx(Ae,{className:"size-3"}):e.jsx(Oe,{className:"size-3"})}),e.jsx("button",{type:"button",tabIndex:-1,onClick:()=>i(a.id),"aria-label":`Close ${a.sourceLabel}`,className:O("focus-ring hover:bg-background/80 absolute top-1/2 right-1 -translate-y-1/2 rounded-sm p-1.5 opacity-60 transition-opacity group-hover:opacity-100 md:p-0.5",ht),children:e.jsx(Ee,{className:"size-3"})})]},a.id)})})}function gt({error:t,onRetry:n}){const s=_e(t);return e.jsxs("div",{className:"text-muted-foreground flex h-full flex-col items-center justify-center gap-3 p-8 text-center",children:[e.jsx("p",{children:"This tab hit a problem"}),s?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm",children:"The app may have updated since you opened this tab. Reloading usually fixes it."}),e.jsx(k,{type:"button",size:"sm",onClick:()=>window.location.reload(),children:"Reload DorkOS"})]}):e.jsxs(k,{type:"button",variant:"outline",size:"sm",onClick:n,children:[e.jsx(Le,{className:"size-4"}),"Try again"]})]})}class fe extends p.Component{constructor(){super(...arguments);U(this,"state",{error:null,retryKey:0});U(this,"handleRetry",()=>{this.setState(s=>({error:null,retryKey:s.retryKey+1}))})}static getDerivedStateFromError(s){return{error:s}}componentDidCatch(s,r){console.error(`[Canvas] Document viewer error (${this.props.documentId}):`,s,r)}render(){const{error:s,retryKey:r}=this.state;return s?e.jsx(gt,{error:s,onRetry:this.handleRetry}):e.jsx(p.Fragment,{children:this.props.children},r)}}function bt({onReload:t,onKeepMine:n}){return e.jsxs("div",{role:"status",className:"border-border/60 bg-muted/40 mx-2 mt-2 space-y-2 rounded-md border px-3 py-2 text-sm",children:[e.jsx("p",{children:"Your agent changed this while you were editing, so nothing here moved."}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(k,{type:"button",variant:"outline",size:"sm",onClick:t,children:"Reload"}),e.jsx(k,{type:"button",variant:"ghost",size:"sm",onClick:n,children:"Keep mine"})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:"Reload shows their version and ends your edit. Keep mine throws theirs away."})]})}const jt={canvas:{heading:"A blank canvas",blurb:"Your agent can render documents, data, and files here.",actions:[{icon:se,label:"Markdown",description:"Render a document",action:()=>({type:"markdown",content:`# Untitled
32
32
 
33
- Start writing…`,title:"Document"})},{icon:ie,label:"JSON",description:"Inspect structured data",action:()=>({type:"json",data:{message:"Your data here"},title:"JSON Data"})}]},browser:{heading:"No page open",blurb:"This tab shows web pages: a file you are building, a dev server you are running, or a site your agent wants you to see.",actions:[{icon:_,label:"Web Page",description:"Open a page, then type any address",action:()=>({type:"url",url:"https://dorkos.ai",title:"Web Page"})}]}};function P(t,n,s,r){return t.split("").reduce((f,u)=>f+u.charCodeAt(0),0)*(n+1)*7%(r-s)+s}function pe({view:t,onAction:n}){const s=Ue(),r=h.useId(),i=jt[t],f=h.useMemo(()=>Array.from({length:6},(u,d)=>({x:P(r,d*3,10,90),y:P(r,d*3+1,10,80),size:P(r,d*3+2,24,56),delay:d*.4})),[r]);return e.jsxs("div",{className:"relative flex h-full flex-col items-center justify-center overflow-hidden px-6",children:[!s&&f.map((u,d)=>e.jsx(T.div,{className:"border-border/40 absolute rounded-lg border",style:{left:`${u.x}%`,top:`${u.y}%`,width:u.size,height:u.size},initial:{opacity:0,scale:.6,rotate:-10},animate:{opacity:[0,.15,.08,.15],scale:[.6,1,.9,1],rotate:[-10,0,5,0]},transition:{duration:8,delay:u.delay,repeat:1/0,repeatType:"reverse",ease:"easeInOut"}},d)),e.jsxs(T.div,{className:"relative z-10 flex max-w-sm flex-col items-center gap-6 text-center",initial:s?!1:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.4,ease:"easeOut"},children:[e.jsx(T.div,{className:"bg-muted/50 text-muted-foreground flex size-14 items-center justify-center rounded-2xl",initial:s?!1:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.3,delay:.1},children:t==="browser"?e.jsx(_,{className:"size-7"}):e.jsx(Pe,{className:"size-7"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-lg font-semibold tracking-tight",children:i.heading}),e.jsxs("p",{className:"text-muted-foreground text-sm leading-relaxed",children:[i.blurb,e.jsx("br",{}),"Or pick a starting point below."]})]}),e.jsx(T.div,{className:"mt-2 flex w-full flex-col gap-2",initial:"hidden",animate:"visible",variants:s?{}:{visible:{transition:{staggerChildren:.08,delayChildren:.25}}},children:i.actions.map(({icon:u,label:d,description:a,action:g})=>e.jsxs(T.button,{variants:s?{}:{hidden:{opacity:0,y:8},visible:{opacity:1,y:0}},transition:{duration:.25},className:"border-border hover:bg-accent/50 flex items-center gap-3 rounded-lg border px-4 py-3 text-left transition-colors",onClick:()=>n(g()),children:[e.jsx(u,{className:"text-muted-foreground size-4 shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"text-sm font-medium",children:d}),e.jsx("span",{className:"text-muted-foreground ml-2 text-xs",children:a})]})]},d))})]})]})}function wt({sourceLabel:t,people:n,following:s,onFollow:r,onStopFollowing:i,onDiscuss:f,discussing:u=!1}){const d=n.find(a=>a.id===s)??null;return t===void 0&&n.length===0&&f===void 0?null:e.jsxs("div",{className:"text-muted-foreground flex items-center gap-2 border-b px-3 py-1 text-xs",children:[t!==void 0&&e.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),t===void 0&&e.jsx("span",{className:"flex-1"}),f&&e.jsxs(k,{type:"button",variant:"ghost",size:"sm",className:"h-6 gap-1 px-1.5",disabled:u,onClick:f,children:[e.jsx($e,{className:"size-3.5"}),"Discuss"]}),n.length>0&&e.jsxs(Be,{children:[e.jsx(He,{asChild:!0,children:e.jsxs(k,{type:"button",variant:"ghost",size:"sm",className:O("h-6 gap-1 px-1.5",d&&"text-foreground"),children:[e.jsx(Ve,{className:"size-3.5"}),d?`Following ${d.displayName}`:"Follow"]})}),e.jsxs(Ye,{align:"end",children:[e.jsx(Ke,{children:"Follow somebody’s browser"}),n.map(a=>e.jsxs(Z,{onSelect:()=>a.id===s?i():r(a.id),children:[e.jsx(B,{"aria-hidden":!0,size:"xs",className:"size-4 shrink-0 text-[9px]",kind:a.kind,color:a.color??V(a.id),emoji:a.emoji,imageUrl:a.imageUrl,badge:null,fallback:H(a.displayName)}),e.jsx("span",{className:"min-w-0 flex-1 truncate",children:a.displayName}),a.id===s&&e.jsx(We,{className:"size-3.5 shrink-0"})]},a.id)),d&&e.jsx(Z,{onSelect:i,children:"Stop following"})]})]})]})}function kt({roomId:t,document:n,reading:s}){const r=$(),i=qe(),[f,u]=h.useState(null),d=h.useMemo(()=>ot({transport:r,queryClient:i,roomId:t}),[r,i,t]);return e.jsxs("div",{className:"flex h-full items-start justify-center p-6",children:[e.jsxs("div",{className:"bg-card shadow-soft w-full max-w-md space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ne,{className:"text-muted-foreground size-4 shrink-0"}),e.jsx("span",{className:"truncate text-sm font-medium",children:n.title||s.sourcePath})]}),e.jsx("p",{className:"text-muted-foreground font-mono text-xs break-all",children:s.sourcePath}),s.kind==="elsewhere"?e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:s.sentence}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:"This file is in the room’s files. Changes you save here become one commit with your name on it."}),e.jsx(k,{type:"button",size:"sm",onClick:()=>u(s.sourcePath),children:"Open file"})]})]}),s.kind==="room-file"&&e.jsx(rt,{source:d,path:f,onClose:()=>u(null)})]})}const Ct=["image","pdf","audio","video","csv","model3d"];function Nt(t){return/^(https?:|data:)/.test(t)}function Rt(t){if(t.type==="file"||t.type==="diff")return t.sourcePath;if(t.type==="markdown")return t.sourcePath??null;if(Ct.includes(t.type)){const n=t.src;return Nt(n)?null:n}return null}function Dt(t){return t.type==="file"||t.type==="diff"||t.type==="markdown"}function zt(t){const n=/^(?:in )?(.+?)['’]s /.exec(t.sourceLabel??"");return(n==null?void 0:n[1])??"another member"}function It(t){const n=Rt(t.content);return n===null?{kind:"inline"}:t.treeKind==="room-main"||t.treeKind===void 0?Dt(t.content)?{kind:"room-file",sourcePath:n}:{kind:"elsewhere",sourcePath:n,sentence:"This file is in the room’s own files. Open it from the Files section of the Room tab."}:t.content.type==="diff"&&t.treeKind==="worktree"&&typeof t.aheadOfMain=="number"&&t.aheadOfMain>0?{kind:"worktree-diff",sourcePath:n,content:t.content}:t.content.type==="markdown"?{kind:"inline"}:{kind:"elsewhere",sourcePath:n,sentence:`This file is in ${zt(t)}’s project, which you can’t open from here. Ask them to share it, or open your own copy.`}}function Mt(t){return t.title||t.contentType}function Tt({roomId:t,document:n,onUpdate:s}){const r=It(n);return r.kind==="worktree-diff"?e.jsx(nt,{roomId:t,content:r.content,documentId:n.id,authorId:n.authorId}):r.kind!=="inline"?e.jsx(kt,{roomId:t,document:n,reading:r}):n.content.type==="markdown"?e.jsx(st,{roomId:t,document:n,content:n.content,onSave:s}):e.jsx(ae,{documentId:n.id,content:n.content,onContentChange:()=>{}})}function he({roomId:t,view:n}){var G;const s=y(o=>o.roomCanvasDocuments[t]),r=y(o=>{var l;return((l=o.roomCanvasActive[t])==null?void 0:l[n])??null}),i=y(o=>{var l;return(l=o.roomCanvasUnread[t])==null?void 0:l[n]}),f=y(o=>o.activateRoomCanvasDocument),u=y(o=>o.clearRoomCanvasUnread),d=y(o=>o.roomCanvasPresence[t]),a=Ge(t),g=Je(t),m=$(),x=((G=g.data)==null?void 0:G.viewerAuthorId)??null,j=y(o=>o.roomCanvasEditing[t]??null),c=Qe(o=>o.openThread),[R,S]=h.useState(!1),b=n==="browser"?t:null,{following:A,follow:E,stop:L}=Xe(b),w=Ze(b),D=h.useRef(null),F=h.useCallback(async(o,l)=>{try{return await l(),!0}catch(I){return ee.error(o,{description:te(I)}),!1}},[]),z=h.useMemo(()=>et(s??[],n),[s,n]),v=z.find(o=>o.id===r)??null,W=(i==null?void 0:i.length)??0;h.useEffect(()=>{W>0&&u(t,n)},[W,u,t,n]);const ye=h.useMemo(()=>{var J;const o=new Map(((J=g.data)==null?void 0:J.members.map(p=>[p.author.id,p.author]))??[]),l=p=>({id:p.id,displayName:p.displayName,kind:p.kind,...p.emoji?{emoji:p.emoji}:{},...p.color?{color:p.color}:{},...p.imageUrl?{imageUrl:p.imageUrl}:{}}),I=new Map;for(const[p,M]of Object.entries(d??{})){if(p===x)continue;const C=o.get(p);if(!C)continue;const Q=I.get(M);Q?Q.push(l(C)):I.set(M,[l(C)])}return z.map(p=>{const M=o.get(p.authorId),C=I.get(p.id);return{id:p.id,sourceLabel:Mt(p),contentType:p.content.type,pinned:p.pinned,unread:(i==null?void 0:i.includes(p.id))??!1,...M?{author:l(M)}:{},...C?{watchers:C}:{}}})},[z,g.data,i,d,x]);tt(t,(v==null?void 0:v.id)??null);const ve=h.useMemo(()=>{var o;return(((o=g.data)==null?void 0:o.members)??[]).map(l=>l.author).filter(l=>l.kind==="human"&&l.id!==x).map(l=>({id:l.id,displayName:l.displayName,kind:l.kind,emoji:l.emoji,color:l.color,imageUrl:l.imageUrl}))},[g.data,x]),ge=y(o=>{if(r===null)return;const l=o.browserHistories[r];return l?l.stack[l.cursor]:void 0}),be=h.useCallback(()=>{var o;return((o=D.current)==null?void 0:o.scrollTop)??0},[]),je=h.useCallback(o=>{const l=D.current;return l?(l.addEventListener("scroll",o,{passive:!0}),()=>l.removeEventListener("scroll",o)):()=>{}},[]);mt({roomId:b,viewerAuthorId:x,documentId:r,url:ge,readScrollY:be,subscribe:je});const q=h.useMemo(()=>z.map(o=>o.id).join("\0"),[z]);h.useEffect(()=>{if(!(w===null||j!==null)&&q.split("\0").includes(w.documentId)){if(w.documentId!==r){f(t,w.documentId);return}w.scrollY!==void 0&&D.current&&(D.current.scrollTop=w.scrollY)}},[w,j,r,q,f,t]);const we=h.useCallback(()=>{v!==null&&(S(!0),m.discussCanvasDocument(t,v.id).then(o=>c(t,o.threadRootEntryId,!1)).catch(o=>{ee.error("Couldn’t start a discussion.",{description:te(o)})}).finally(()=>S(!1)))},[v,m,t,c]),ke=Y(n);return e.jsxs(e.Fragment,{children:[e.jsx(me,{view:n,documents:ye,activeDocumentId:r,onActivate:o=>f(t,o),onClose:o=>void F("Couldn’t take that off the canvas.",()=>a.close(o)),onPin:(o,l)=>void F(l?"Couldn’t pin that.":"Couldn’t unpin that.",()=>a.pin(o,l))}),e.jsx(wt,{sourceLabel:v==null?void 0:v.sourceLabel,people:n==="browser"?ve:[],following:A,onFollow:E,onStopFollowing:L,onDiscuss:v===null?void 0:we,discussing:R}),e.jsx("div",{id:ke,ref:D,tabIndex:-1,className:"min-h-0 flex-1 overflow-auto focus-visible:outline-none",...v?{role:"tabpanel","aria-labelledby":K(v.id)}:{},children:v?e.jsx(fe,{documentId:v.id,children:e.jsx(Tt,{roomId:t,document:v,onUpdate:(o,l)=>F("Couldn’t save that for the room.",()=>a.update(o,l))})},v.id):e.jsx(pe,{view:n,onAction:o=>void F("Couldn’t put that on the canvas.",()=>a.open(o))})})]})}function xe({view:t}){const n=y(c=>c.openDocuments),s=y(c=>t==="browser"?c.activeBrowserDocumentId:c.activeCanvasDocumentId),r=y(c=>c.activateCanvasDocument),i=y(c=>c.closeCanvasDocument),f=y(c=>c.setDocumentContent),u=y(c=>c.openCanvasDocument),d=y(c=>c.applyHeldUpdate),a=y(c=>c.discardHeldUpdate),g=at(n,t),m=g.find(c=>c.id===s)??null,x=g.map(c=>({id:c.id,sourceLabel:c.sourceLabel,contentType:c.content.type})),j=Y(t);return e.jsxs(e.Fragment,{children:[e.jsx(me,{view:t,documents:x,activeDocumentId:s,onActivate:r,onClose:i}),(m==null?void 0:m.heldUpdate)&&e.jsx(bt,{onReload:()=>d(m.id),onKeepMine:()=>a(m.id)}),e.jsx("div",{id:j,tabIndex:-1,className:"min-h-0 flex-1 overflow-auto focus-visible:outline-none",...m?{role:"tabpanel","aria-labelledby":K(m.id)}:{},children:m?e.jsx(fe,{documentId:m.id,children:e.jsx(ae,{documentId:m.id,content:m.content,onContentChange:c=>f(m.id,c)})},m.id):e.jsx(pe,{view:t,onAction:u})})]})}function Ot(){const t=y(n=>n.roomCanvasLiveRoomId);return e.jsx("div",{"data-slot":"canvas",className:"flex h-full flex-col overflow-hidden",children:t?e.jsx(he,{roomId:t,view:"canvas"}):e.jsx(xe,{view:"canvas"})})}function _t(){const t=y(n=>n.roomCanvasLiveRoomId);return e.jsx("div",{"data-slot":"browser",className:"flex h-full flex-col overflow-hidden",children:t?e.jsx(he,{roomId:t,view:"browser"}):e.jsx(xe,{view:"browser"})})}export{_t as BrowserContent,Ot as CanvasContent,Ut as resetSessionCanvasImport,Pt as useSessionCanvas};
33
+ Start writing…`,title:"Document"})},{icon:ie,label:"JSON",description:"Inspect structured data",action:()=>({type:"json",data:{message:"Your data here"},title:"JSON Data"})}]},browser:{heading:"No page open",blurb:"This tab shows web pages: a file you are building, a dev server you are running, or a site your agent wants you to see.",actions:[{icon:E,label:"Web Page",description:"Open a page, then type any address",action:()=>({type:"url",url:"https://dorkos.ai",title:"Web Page"})}]}};function P(t,n,s,r){return t.split("").reduce((f,u)=>f+u.charCodeAt(0),0)*(n+1)*7%(r-s)+s}function he({view:t,onAction:n}){const s=Ue(),r=p.useId(),i=jt[t],f=p.useMemo(()=>Array.from({length:6},(u,d)=>({x:P(r,d*3,10,90),y:P(r,d*3+1,10,80),size:P(r,d*3+2,24,56),delay:d*.4})),[r]);return e.jsxs("div",{className:"relative flex h-full flex-col items-center justify-center overflow-hidden px-6",children:[!s&&f.map((u,d)=>e.jsx(T.div,{className:"border-border/40 absolute rounded-lg border",style:{left:`${u.x}%`,top:`${u.y}%`,width:u.size,height:u.size},initial:{opacity:0,scale:.6,rotate:-10},animate:{opacity:[0,.15,.08,.15],scale:[.6,1,.9,1],rotate:[-10,0,5,0]},transition:{duration:8,delay:u.delay,repeat:1/0,repeatType:"reverse",ease:"easeInOut"}},d)),e.jsxs(T.div,{className:"relative z-10 flex max-w-sm flex-col items-center gap-6 text-center",initial:s?!1:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.4,ease:"easeOut"},children:[e.jsx(T.div,{className:"bg-muted/50 text-muted-foreground flex size-14 items-center justify-center rounded-2xl",initial:s?!1:{opacity:0,scale:.8},animate:{opacity:1,scale:1},transition:{duration:.3,delay:.1},children:t==="browser"?e.jsx(E,{className:"size-7"}):e.jsx(Pe,{className:"size-7"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-lg font-semibold tracking-tight",children:i.heading}),e.jsxs("p",{className:"text-muted-foreground text-sm leading-relaxed",children:[i.blurb,e.jsx("br",{}),"Or pick a starting point below."]})]}),e.jsx(T.div,{className:"mt-2 flex w-full flex-col gap-2",initial:"hidden",animate:"visible",variants:s?{}:{visible:{transition:{staggerChildren:.08,delayChildren:.25}}},children:i.actions.map(({icon:u,label:d,description:a,action:g})=>e.jsxs(T.button,{variants:s?{}:{hidden:{opacity:0,y:8},visible:{opacity:1,y:0}},transition:{duration:.25},className:"border-border hover:bg-accent/50 flex items-center gap-3 rounded-lg border px-4 py-3 text-left transition-colors",onClick:()=>n(g()),children:[e.jsx(u,{className:"text-muted-foreground size-4 shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"text-sm font-medium",children:d}),e.jsx("span",{className:"text-muted-foreground ml-2 text-xs",children:a})]})]},d))})]})]})}function wt({sourceLabel:t,people:n,following:s,onFollow:r,onStopFollowing:i,onDiscuss:f,discussing:u=!1}){const d=n.find(a=>a.id===s)??null;return t===void 0&&n.length===0&&f===void 0?null:e.jsxs("div",{className:"text-muted-foreground flex items-center gap-2 border-b px-3 py-1 text-xs",children:[t!==void 0&&e.jsx("span",{className:"min-w-0 flex-1 truncate",children:t}),t===void 0&&e.jsx("span",{className:"flex-1"}),f&&e.jsxs(k,{type:"button",variant:"ghost",size:"sm",className:"h-6 gap-1 px-1.5",disabled:u,onClick:f,children:[e.jsx($e,{className:"size-3.5"}),"Discuss"]}),n.length>0&&e.jsxs(Be,{children:[e.jsx(He,{asChild:!0,children:e.jsxs(k,{type:"button",variant:"ghost",size:"sm",className:O("h-6 gap-1 px-1.5",d&&"text-foreground"),children:[e.jsx(Ve,{className:"size-3.5"}),d?`Following ${d.displayName}`:"Follow"]})}),e.jsxs(Ye,{align:"end",children:[e.jsx(Ke,{children:"Follow somebody’s browser"}),n.map(a=>e.jsxs(Z,{onSelect:()=>a.id===s?i():r(a.id),children:[e.jsx(B,{"aria-hidden":!0,size:"xs",className:"size-4 shrink-0 text-[9px]",kind:a.kind,color:a.color??V(a.id),emoji:a.emoji,imageUrl:a.imageUrl,badge:null,fallback:H(a.displayName)}),e.jsx("span",{className:"min-w-0 flex-1 truncate",children:a.displayName}),a.id===s&&e.jsx(We,{className:"size-3.5 shrink-0"})]},a.id)),d&&e.jsx(Z,{onSelect:i,children:"Stop following"})]})]})]})}function kt({roomId:t,document:n,reading:s}){const r=$(),i=qe(),[f,u]=p.useState(null),d=p.useMemo(()=>ot({transport:r,queryClient:i,roomId:t}),[r,i,t]);return e.jsxs("div",{className:"flex h-full items-start justify-center p-6",children:[e.jsxs("div",{className:"bg-card shadow-soft w-full max-w-md space-y-3 rounded-lg border p-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ne,{className:"text-muted-foreground size-4 shrink-0"}),e.jsx("span",{className:"truncate text-sm font-medium",children:n.title||s.sourcePath})]}),e.jsx("p",{className:"text-muted-foreground font-mono text-xs break-all",children:s.sourcePath}),s.kind==="elsewhere"?e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:s.sentence}):e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-muted-foreground text-sm leading-relaxed",children:"This file is in the room’s files. Changes you save here become one commit with your name on it."}),e.jsx(k,{type:"button",size:"sm",onClick:()=>u(s.sourcePath),children:"Open file"})]})]}),s.kind==="room-file"&&e.jsx(rt,{source:d,path:f,onClose:()=>u(null)})]})}const Ct=["image","pdf","audio","video","csv","model3d"];function Nt(t){return/^(https?:|data:)/.test(t)}function Rt(t){if(t.type==="file"||t.type==="diff")return t.sourcePath;if(t.type==="markdown")return t.sourcePath??null;if(Ct.includes(t.type)){const n=t.src;return Nt(n)?null:n}return null}function Dt(t){return t.type==="file"||t.type==="diff"||t.type==="markdown"}function It(t){const n=/^(?:in )?(.+?)['’]s /.exec(t.sourceLabel??"");return(n==null?void 0:n[1])??"another member"}function zt(t){const n=Rt(t.content);return n===null?{kind:"inline"}:t.treeKind==="room-main"||t.treeKind===void 0?Dt(t.content)?{kind:"room-file",sourcePath:n}:{kind:"elsewhere",sourcePath:n,sentence:"This file is in the room’s own files. Open it from the Files section of the Room tab."}:t.content.type==="diff"&&t.treeKind==="worktree"&&typeof t.aheadOfMain=="number"&&t.aheadOfMain>0?{kind:"worktree-diff",sourcePath:n,content:t.content}:t.content.type==="markdown"?{kind:"inline"}:{kind:"elsewhere",sourcePath:n,sentence:`This file is in ${It(t)}’s project, which you can’t open from here. Ask them to share it, or open your own copy.`}}function Mt(t){return t.title||t.contentType}function Tt({roomId:t,document:n,onUpdate:s}){const r=zt(n);return r.kind==="worktree-diff"?e.jsx(nt,{roomId:t,content:r.content,documentId:n.id,authorId:n.authorId}):r.kind!=="inline"?e.jsx(kt,{roomId:t,document:n,reading:r}):n.content.type==="markdown"?e.jsx(st,{roomId:t,document:n,content:n.content,onSave:s}):e.jsx(ae,{documentId:n.id,content:n.content,onContentChange:()=>{}})}function pe({roomId:t,view:n}){var J;const s=y(o=>o.roomCanvasDocuments[t]),r=y(o=>{var l;return((l=o.roomCanvasActive[t])==null?void 0:l[n])??null}),i=y(o=>{var l;return(l=o.roomCanvasUnread[t])==null?void 0:l[n]}),f=y(o=>o.activateRoomCanvasDocument),u=y(o=>o.clearRoomCanvasUnread),d=y(o=>o.roomCanvasPresence[t]),a=Je(t),g=Ge(t),m=$(),x=((J=g.data)==null?void 0:J.viewerAuthorId)??null,j=y(o=>o.roomCanvasEditing[t]??null),c=Qe(o=>o.openThread),[R,S]=p.useState(!1),b=n==="browser"?t:null,{following:F,follow:_,stop:L}=Xe(b),w=Ze(b),D=p.useRef(null),A=p.useCallback(async(o,l)=>{try{return await l(),!0}catch(z){return ee.error(o,{description:te(z)}),!1}},[]),I=p.useMemo(()=>et(s??[],n),[s,n]),v=I.find(o=>o.id===r)??null,W=(i==null?void 0:i.length)??0;p.useEffect(()=>{W>0&&u(t,n)},[W,u,t,n]);const ye=p.useMemo(()=>{var G;const o=new Map(((G=g.data)==null?void 0:G.members.map(h=>[h.author.id,h.author]))??[]),l=h=>({id:h.id,displayName:h.displayName,kind:h.kind,...h.emoji?{emoji:h.emoji}:{},...h.color?{color:h.color}:{},...h.imageUrl?{imageUrl:h.imageUrl}:{}}),z=new Map;for(const[h,M]of Object.entries(d??{})){if(h===x)continue;const C=o.get(h);if(!C)continue;const Q=z.get(M);Q?Q.push(l(C)):z.set(M,[l(C)])}return I.map(h=>{const M=o.get(h.authorId),C=z.get(h.id);return{id:h.id,sourceLabel:Mt(h),contentType:h.content.type,pinned:h.pinned,unread:(i==null?void 0:i.includes(h.id))??!1,...M?{author:l(M)}:{},...C?{watchers:C}:{}}})},[I,g.data,i,d,x]);tt(t,(v==null?void 0:v.id)??null);const ve=p.useMemo(()=>{var o;return(((o=g.data)==null?void 0:o.members)??[]).map(l=>l.author).filter(l=>l.kind==="human"&&l.id!==x).map(l=>({id:l.id,displayName:l.displayName,kind:l.kind,emoji:l.emoji,color:l.color,imageUrl:l.imageUrl}))},[g.data,x]),ge=y(o=>{if(r===null)return;const l=o.browserHistories[r];return l?l.stack[l.cursor]:void 0}),be=p.useCallback(()=>{var o;return((o=D.current)==null?void 0:o.scrollTop)??0},[]),je=p.useCallback(o=>{const l=D.current;return l?(l.addEventListener("scroll",o,{passive:!0}),()=>l.removeEventListener("scroll",o)):()=>{}},[]);mt({roomId:b,viewerAuthorId:x,documentId:r,url:ge,readScrollY:be,subscribe:je});const q=p.useMemo(()=>I.map(o=>o.id).join("\0"),[I]);p.useEffect(()=>{if(!(w===null||j!==null)&&q.split("\0").includes(w.documentId)){if(w.documentId!==r){f(t,w.documentId);return}w.scrollY!==void 0&&D.current&&(D.current.scrollTop=w.scrollY)}},[w,j,r,q,f,t]);const we=p.useCallback(()=>{v!==null&&(S(!0),m.discussCanvasDocument(t,v.id).then(o=>c(t,o.threadRootEntryId,!1)).catch(o=>{ee.error("Couldn’t start a discussion.",{description:te(o)})}).finally(()=>S(!1)))},[v,m,t,c]),ke=Y(n);return e.jsxs(e.Fragment,{children:[e.jsx(me,{view:n,documents:ye,activeDocumentId:r,onActivate:o=>f(t,o),onClose:o=>void A("Couldn’t take that off the canvas.",()=>a.close(o)),onPin:(o,l)=>void A(l?"Couldn’t pin that.":"Couldn’t unpin that.",()=>a.pin(o,l))}),e.jsx(wt,{sourceLabel:v==null?void 0:v.sourceLabel,people:n==="browser"?ve:[],following:F,onFollow:_,onStopFollowing:L,onDiscuss:v===null?void 0:we,discussing:R}),e.jsx("div",{id:ke,ref:D,tabIndex:-1,className:"min-h-0 flex-1 overflow-auto focus-visible:outline-none",...v?{role:"tabpanel","aria-labelledby":K(v.id)}:{},children:v?e.jsx(fe,{documentId:v.id,children:e.jsx(Tt,{roomId:t,document:v,onUpdate:(o,l)=>A("Couldn’t save that for the room.",()=>a.update(o,l))})},v.id):e.jsx(he,{view:n,onAction:o=>void A("Couldn’t put that on the canvas.",()=>a.open(o))})})]})}function xe({view:t}){const n=y(c=>c.openDocuments),s=y(c=>t==="browser"?c.activeBrowserDocumentId:c.activeCanvasDocumentId),r=y(c=>c.activateCanvasDocument),i=y(c=>c.closeCanvasDocument),f=y(c=>c.setDocumentContent),u=y(c=>c.openCanvasDocument),d=y(c=>c.applyHeldUpdate),a=y(c=>c.discardHeldUpdate),g=at(n,t),m=g.find(c=>c.id===s)??null,x=g.map(c=>({id:c.id,sourceLabel:c.sourceLabel,contentType:c.content.type})),j=Y(t);return e.jsxs(e.Fragment,{children:[e.jsx(me,{view:t,documents:x,activeDocumentId:s,onActivate:r,onClose:i}),(m==null?void 0:m.heldUpdate)&&e.jsx(bt,{onReload:()=>d(m.id),onKeepMine:()=>a(m.id)}),e.jsx("div",{id:j,tabIndex:-1,className:"min-h-0 flex-1 overflow-auto focus-visible:outline-none",...m?{role:"tabpanel","aria-labelledby":K(m.id)}:{},children:m?e.jsx(fe,{documentId:m.id,children:e.jsx(ae,{documentId:m.id,content:m.content,onContentChange:c=>f(m.id,c)})},m.id):e.jsx(he,{view:t,onAction:u})})]})}function Ot(){const t=y(n=>n.roomCanvasLiveRoomId);return e.jsx("div",{"data-slot":"canvas",className:"flex h-full flex-col overflow-hidden",children:t?e.jsx(pe,{roomId:t,view:"canvas"}):e.jsx(xe,{view:"canvas"})})}function Et(){const t=y(n=>n.roomCanvasLiveRoomId);return e.jsx("div",{"data-slot":"browser",className:"flex h-full flex-col overflow-hidden",children:t?e.jsx(pe,{roomId:t,view:"browser"}):e.jsx(xe,{view:"browser"})})}export{Et as BrowserContent,Ot as CanvasContent,Ut as resetSessionCanvasImport,Pt as useSessionCanvas};
@@ -1 +1 @@
1
- import{E as f,j as p,a as x,p as X,e as y,L as h,s as G,t as Q,i as Z,k as S,f as b}from"./index-oU5xA1N3.js";import{html as j}from"./index-rJuQe7Pl.js";import{L as V,E as c}from"./index-Ck1VEXu0.js";import"./index-BMR65QI4.js";import"./index-D4OPDslu.js";import"./index-z0vAkUHY.js";const W=1,k=2,w=3,v=180,R=4,_=181,E=5,z=182,U=6;function D(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new c(O=>{let a=O.pos;for(;;){let{next:r}=O;if(r<0)break;if(r==123){let n=O.peek(1);if(n==123){if(O.pos>a)break;O.acceptToken(W,2);return}else if(n==37){if(O.pos>a)break;let $=2,i=2;for(;;){let e=O.peek($);if(e==32||e==10)++$;else if(e==35)for(++$;;){let t=O.peek($);if(t<0||t==10)break;$++}else if(e==45&&i==2)i=++$;else{let t=e==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(t?w:k,i);return}}}}if(O.advance(),r==10)break}O.pos>a&&O.acceptToken(v)});function u(O,a,r){return new c(n=>{let $=n.pos;for(;;){let{next:i}=n;if(i==123&&n.peek(1)==37){let e=2;for(;;e++){let o=n.peek(e);if(o!=32&&o!=10)break}let t="";for(;;e++){let o=n.peek(e);if(!D(o))break;t+=String.fromCharCode(o)}if(t==O){if(n.pos>$)break;n.acceptToken(r,2);break}}else if(i<0)break;if(n.advance(),i==10)break}n.pos>$&&n.acceptToken(a)})}const C=u("endcomment",z,E),Y=u("endraw",_,R),N=new c(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(U)}}),I={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},L={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},H=V.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zO<VQhO7+$tOOOP7+$t7+$tOOOP7+$x7+$xOOOP7+$|7+$|OOOP7+%R7+%ROOOP7+%W7+%WOsQhO'#F}O<_QhO7+%[OOOP7+%[7+%[OOQW'#Gf'#GfOsQhO7+%_OsQhO7+%gO<gQhO'#GPO<lQhO7+%oOOOP7+%o7+%oO<tQhO7+%oO<yQhO7+%}OOOP7+%}7+%}OOQW'#Gg'#GgO!]QhO'#EaOsQhO'#EaOOQW'#GS'#GSO=RQhO7+&POOOP7+&P7+&POOOP7+&V7+&VO=aQhO7+&XOOOP7+&X7+&XOOOP7+&[7+&[OOOP7+&`7+&`OOOP7+&b7+&bO=iQ!jO,5;aOOQW'#Gl'#GlOOQW'#Ew'#EwOOQW,5;`,5;`O0nQhO,5;`O>xQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5<ROFvQ!jO,5<TOHiQ!jO,5<VOJbQ!jO,5<XOLTQ!jO,5<ZOMvQ!jO,5<^OOQW'#HO'#HOOOQW'#Ft'#FtOOQW,5<],5<]O1hQhO,5<]O! VQ!jO,5<bO!!xQ!jO,5<dOOQW-E:R-E:ROOOP7+&d7+&dOOOP1G/`1G/`OOOP1G/i1G/iOOOP1G/n1G/nOOOP1G/x1G/xOOOP1G/}1G/}O!$kQhO,5:oO!$pQhO,5:uOOOP1G0r1G0rOOQW7+$]7+$]OsQhO1G/TO!$uQ!jO7+$fOOOP<<H`<<H`O!$|Q!jO,5<iOOQW-E9{-E9{OOOP<<Hv<<HvO!&xQ!jO<<HyO!'SQ!jO<<IROOQW,5<k,5<kOOQW-E9}-E9}OOOP<<IZ<<IZO!'^QhO<<IZOOOP<<Ii<<IiO!'fQhO,5:{O!'kQ!jO,5:{OOQW-E:Q-E:QOOOP<<Ik<<IkOOOP<<Is<<IsOOQW1G0z1G0zOOQW1G1P1G1POOQW1G1Y1G1YO!)gQhO1G1_OsQhO1G1bOOQW1G1a1G1aOsQhO1G1fOOQW1G1e1G1eO!+ZQhO1G1mO!,}QhO1G1mO!-SQhO1G1oOOQW'#GU'#GUO!.vQhO1G1qO!0mQhO1G1uOOQW1G1w1G1wOOOP1G0Z1G0ZOOOP1G0a1G0aO!2aQ!jO7+$oOOQW<<HQ<<HQOOQW'#Dq'#DqO!4]QhO'#DpOOQW'#GO'#GOO!5vQhOAN>eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<<HZOsQhO,5:[OOQW-E9|-E9|OOOPG24PG24POOOPG24XG24XOOOPG24aG24aO!<rQ!jO7+&ROOQW7+&R7+&RO!>kQhO<<JhO!?{QhO<<JlO!A]QhO<<JsO!CPQ!jO1G/v",stateData:"!Di~O%OOSUOS~OPROQSO$zPO~O$zPOPWXQWX$yWX~OgeOjiOkiOlfOmgOnhOoiOpiO%RbO~OwkOxjO{lO!PmO!RnO!UoO!ZpO!_qO!brO!jsO!ntO!puO!rvO!uwO!{xO#QyO#SzO#Y{O#[|O#_}O#c!OO#e!PO#g!QO~OPROQSOR!UO$zPO~OPROQSOR!XO$zPO~OPROQSOR![O$zPO~OPROQSOR!_O$zPO~OPROQSOR!bO$zPO~O$|!cO~O${!fO~OPROQSOR!kO$zPO~O]!mOa!uOb!oOc!pOr!qO%T!nO~OX!tO~P%}Oe!vOX%QX]%QXa%QXb%QXc%QXr%QX%T%QXi%QXx%QXu%QX#U%QX#V%QX%S%QXn%QX#j%QX#l%QX#o%QX#s%QX#u%QX#x%QX#|%QX$T%QX$X%QX$[%QX$^%QX$`%QX$b%QX$d%QX$g%QX$k%QX$m%QX#q%QX#z%QX$i%QXf%QX%R%QX#W%QX$Q%QX$V%QX~Or!qOx!zO~PsOx!}O~Ox#TO~Ox#UO~Oo#VO~Ox#WO~Ox#XO~OnhO#V#aO#j#bO#o#eO#s#hO#u#jO#x#lO#|#oO$T#sO$X#vO$[#yO$^#{O$`#}O$b$PO$d$RO$g$TO$k$WO$m$YO~Ox$_O~P*SO$zPOPWXQWXRWX~O}$aO~O!W$cO~O!]$eO~O!g$gO~O!l$iO~O$|!cOT!vX~OT$lO~O${!fOS!|X~OS$oO~O#a$qO~O^$rO~O%R$vO~OX$yOr!qO~O]!mOa!uOb!oOc!pO%T!nO~Oi$|O~P-aOx%OO~P%}Or!qOx%OO~Ox%PO~P-aOx%QO~P-aOx%RO~P-aOx%SO~P-aOu%TOx%VO~P-aO!c%WO~Ot%^Ou%ZOx%]O~Ox%`O~P%}Ou%bOx%fO#U%aO#V#aO~P-aOx%gO~P-aOx%iO~P%}Ox%jO~P-aOx%kO~P-aOx%lO~P-aO#l%nO~P*SO#q%sO~P*SO#z%yO~P*SO$Q&PO~P*SO$V&UO~P*SOo&YO~O$i&`O~P*SOx&gO~P*SOx&hO~Ox&iO~Ox&jO~Ox&kO~Ox&lO~O!x&mO~O#O&nO~Ox&oO~O%S&pO~P-aO]!mO%T!nOX`ia`ic`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~Ob`i~P2wOX`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~P-aOt&qOXqarqaxqanqa#Vqa#jqa#oqa#sqa#uqa#xqa#|qa$Tqa$Xqa$[qa$^qa$`qa$bqa$dqa$gqa$kqa$mqa#lqa#qqa#zqa$Qqa$Vqa$iqa~Ob!oO~P2wOXdirdiidixdiudi#Udi#Vdi%Sdindi#jdi#ldi#odi#sdi#udi#xdi#|di$Tdi$Xdi$[di$^di$`di$bdi$ddi$gdi$kdi$mdi#qdi#zdi$idifdi%Rdi#Wdi$Qdi$Vdi~P-aOr!qOx&sO~Ou%TOx&vO~Oo&yO~Ou%ZOx&{O~Oo&|O~Or!qOx&}O~Ou%bOx'RO#U%aO#V#aO~Or!qOx'SO~On#ia#V#ia#j#ia#l#ia#o#ia#s#ia#u#ia#x#ia#|#ia$T#ia$X#ia$[#ia$^#ia$`#ia$b#ia$d#ia$g#ia$k#ia$m#ia~P-aOn#na#V#na#j#na#o#na#q#na#s#na#u#na#x#na#|#na$T#na$X#na$[#na$^#na$`#na$b#na$d#na$g#na$k#na$m#na~P-aOn#rax#ra#V#ra#j#ra#o#ra#s#ra#u#ra#x#ra#|#ra$T#ra$X#ra$[#ra$^#ra$`#ra$b#ra$d#ra$g#ra$k#ra$m#ra#l#ra#q#ra#z#ra$Q#ra$V#ra$i#ra~P-aOn#wa#V#wa#j#wa#o#wa#s#wa#u#wa#x#wa#z#wa#|#wa$T#wa$X#wa$[#wa$^#wa$`#wa$b#wa$d#wa$g#wa$k#wa$m#wa~P-aOu%TOn#{ax#{a#V#{a#j#{a#o#{a#s#{a#u#{a#x#{a#|#{a$T#{a$X#{a$[#{a$^#{a$`#{a$b#{a$d#{a$g#{a$k#{a$m#{a#l#{a#q#{a#z#{a$Q#{a$V#{a$i#{a~P-aOt'^Ou%ZOn$Zax$Za#V$Za#j$Za#o$Za#s$Za#u$Za#x$Za#|$Za$T$Za$X$Za$[$Za$^$Za$`$Za$b$Za$d$Za$g$Za$k$Za$m$Za#l$Za#q$Za#z$Za$Q$Za$V$Za$i$Za~On$]ax$]a#V$]a#j$]a#o$]a#s$]a#u$]a#x$]a#|$]a$T$]a$X$]a$[$]a$^$]a$`$]a$b$]a$d$]a$g$]a$k$]a$m$]a#l$]a#q$]a#z$]a$Q$]a$V$]a$i$]a~P%}Ou%bO#U%aO#V#aOn$_ax$_a#j$_a#o$_a#s$_a#u$_a#x$_a#|$_a$T$_a$X$_a$[$_a$^$_a$`$_a$b$_a$d$_a$g$_a$k$_a$m$_a#l$_a#q$_a#z$_a$Q$_a$V$_a$i$_a~P-aOn$aax$aa#V$aa#j$aa#o$aa#s$aa#u$aa#x$aa#|$aa$T$aa$X$aa$[$aa$^$aa$`$aa$b$aa$d$aa$g$aa$k$aa$m$aa#l$aa#q$aa#z$aa$Q$aa$V$aa$i$aa~P-aOn$cax$ca#V$ca#j$ca#o$ca#s$ca#u$ca#x$ca#|$ca$T$ca$X$ca$[$ca$^$ca$`$ca$b$ca$d$ca$g$ca$k$ca$m$ca#l$ca#q$ca#z$ca$Q$ca$V$ca$i$ca~P%}On$fa#V$fa#j$fa#o$fa#s$fa#u$fa#x$fa#|$fa$T$fa$X$fa$[$fa$^$fa$`$fa$b$fa$d$fa$g$fa$i$fa$k$fa$m$fa~P-aOn$jax$ja#V$ja#j$ja#o$ja#s$ja#u$ja#x$ja#|$ja$T$ja$X$ja$[$ja$^$ja$`$ja$b$ja$d$ja$g$ja$k$ja$m$ja#l$ja#q$ja#z$ja$Q$ja$V$ja$i$ja~P-aOn$lax$la#V$la#j$la#o$la#s$la#u$la#x$la#|$la$T$la$X$la$[$la$^$la$`$la$b$la$d$la$g$la$k$la$m$la#l$la#q$la#z$la$Q$la$V$la$i$la~P-aOx'dO~Ox'eO~Of'gO~P-aOu$qax$qan$qa#V$qa#j$qa#o$qa#s$qa#u$qa#x$qa#|$qa$T$qa$X$qa$[$qa$^$qa$`$qa$b$qa$d$qa$g$qa$k$qa$m$qa#l$qa#q$qa#z$qa$Q$qa$V$qa$i$qaX$qar$qa~P-aOx'lO%R'hO~P-aOx'nO%R'hO~P-aOu%ZOx'pO~Ot'qO~O#W'rOu#Tax#Ta#U#Ta#V#Tan#Ta#j#Ta#o#Ta#s#Ta#u#Ta#x#Ta#|#Ta$T#Ta$X#Ta$[#Ta$^#Ta$`#Ta$b#Ta$d#Ta$g#Ta$k#Ta$m#Ta#l#Ta#q#Ta#z#Ta$Q#Ta$V#Ta$i#Ta~P-aOu%TOn#{ix#{i#V#{i#j#{i#o#{i#s#{i#u#{i#x#{i#|#{i$T#{i$X#{i$[#{i$^#{i$`#{i$b#{i$d#{i$g#{i$k#{i$m#{i#l#{i#q#{i#z#{i$Q#{i$V#{i$i#{i~Ou%ZOn$Zix$Zi#V$Zi#j$Zi#o$Zi#s$Zi#u$Zi#x$Zi#|$Zi$T$Zi$X$Zi$[$Zi$^$Zi$`$Zi$b$Zi$d$Zi$g$Zi$k$Zi$m$Zi#l$Zi#q$Zi#z$Zi$Q$Zi$V$Zi$i$Zi~Oo'vO~Or!qOn$]ix$]i#V$]i#j$]i#o$]i#s$]i#u$]i#x$]i#|$]i$T$]i$X$]i$[$]i$^$]i$`$]i$b$]i$d$]i$g$]i$k$]i$m$]i#l$]i#q$]i#z$]i$Q$]i$V$]i$i$]i~Ou%bO#U%aO#V#aOn$_ix$_i#j$_i#o$_i#s$_i#u$_i#x$_i#|$_i$T$_i$X$_i$[$_i$^$_i$`$_i$b$_i$d$_i$g$_i$k$_i$m$_i#l$_i#q$_i#z$_i$Q$_i$V$_i$i$_i~Or!qOn$cix$ci#V$ci#j$ci#o$ci#s$ci#u$ci#x$ci#|$ci$T$ci$X$ci$[$ci$^$ci$`$ci$b$ci$d$ci$g$ci$k$ci$m$ci#l$ci#q$ci#z$ci$Q$ci$V$ci$i$ci~Ou%TOXqqrqqxqqnqq#Vqq#jqq#oqq#sqq#uqq#xqq#|qq$Tqq$Xqq$[qq$^qq$`qq$bqq$dqq$gqq$kqq$mqq#lqq#qqq#zqq$Qqq$Vqq$iqq~P-aOt'yOx!dX%R!dXn!dX#V!dX#j!dX#o!dX#s!dX#u!dX#x!dX#|!dX$Q!dX$T!dX$X!dX$[!dX$^!dX$`!dX$b!dX$d!dX$g!dX$k!dX$m!dX$V!dX~Ox'{O%R'hO~Ox'|O%R'hO~Ou%ZOx'}O~O%R'hOn$Oq#V$Oq#j$Oq#o$Oq#s$Oq#u$Oq#x$Oq#|$Oq$Q$Oq$T$Oq$X$Oq$[$Oq$^$Oq$`$Oq$b$Oq$d$Oq$g$Oq$k$Oq$m$Oq~P-aO%R'hOn$Sq#V$Sq#j$Sq#o$Sq#s$Sq#u$Sq#x$Sq#|$Sq$T$Sq$V$Sq$X$Sq$[$Sq$^$Sq$`$Sq$b$Sq$d$Sq$g$Sq$k$Sq$m$Sq~P-aOu%ZOn$Zqx$Zq#V$Zq#j$Zq#o$Zq#s$Zq#u$Zq#x$Zq#|$Zq$T$Zq$X$Zq$[$Zq$^$Zq$`$Zq$b$Zq$d$Zq$g$Zq$k$Zq$m$Zq#l$Zq#q$Zq#z$Zq$Q$Zq$V$Zq$i$Zq~Ou%TOXqyrqyxqynqy#Vqy#jqy#oqy#sqy#uqy#xqy#|qy$Tqy$Xqy$[qy$^qy$`qy$bqy$dqy$gqy$kqy$mqy#lqy#qqy#zqy$Qqy$Vqy$iqy~Ou#Tqx#Tq#U#Tq#V#Tqn#Tq#j#Tq#o#Tq#s#Tq#u#Tq#x#Tq#|#Tq$T#Tq$X#Tq$[#Tq$^#Tq$`#Tq$b#Tq$d#Tq$g#Tq$k#Tq$m#Tq#l#Tq#q#Tq#z#Tq$Q#Tq$V#Tq$i#Tq~P-aO%R'hOn$Oy#V$Oy#j$Oy#o$Oy#s$Oy#u$Oy#x$Oy#|$Oy$Q$Oy$T$Oy$X$Oy$[$Oy$^$Oy$`$Oy$b$Oy$d$Oy$g$Oy$k$Oy$m$Oy~O%R'hOn$Sy#V$Sy#j$Sy#o$Sy#s$Sy#u$Sy#x$Sy#|$Sy$T$Sy$V$Sy$X$Sy$[$Sy$^$Sy$`$Sy$b$Sy$d$Sy$g$Sy$k$Sy$m$Sy~Ou%ZOn$Zyx$Zy#V$Zy#j$Zy#o$Zy#s$Zy#u$Zy#x$Zy#|$Zy$T$Zy$X$Zy$[$Zy$^$Zy$`$Zy$b$Zy$d$Zy$g$Zy$k$Zy$m$Zy#l$Zy#q$Zy#z$Zy$Q$Zy$V$Zy$i$Zy~Ox!di%R!din!di#V!di#j!di#o!di#s!di#u!di#x!di#|!di$Q!di$T!di$X!di$[!di$^!di$`!di$b!di$d!di$g!di$k!di$m!di$V!di~P-aO",goto:"@p%uPPPPPPPP%vP%v&W'hPP'h'hPPP'hPPP'hPPPPPPPP(fP(vPP(yPP(y)ZP)kP(yP(yP(y)qP*RP(y*XP*iP(yP(y*oPP+P+Z+eP(y+kP+{P(yP(yP(yP(y,RP,c,fP(y,iP,y,|P(yP(yP-PPPP(yP(yP(y-XP-iP(yP(yP(yP-o.PP.aP-o.gP.wP-oP-oP-o.}P/_P-oP-o/e/uP-o/{P0]P-oP-o-oP-oP-oP-oP-oP-o0cP0sP-oP-oP0y1i2P2o2}3a3s3y4P4V4uPPPPPP4{5]PPP'h'h8P%v9_9k9q:X:[:l:|;Q;b;f;v<W<h<l<|=Q=b=f=v>W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[F,Y,C,N,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:O=>I[O]||-1},{term:39,get:O=>L[O]||-1}],tokenPrec:0});function l(O,a){return O.split(" ").map(r=>({label:r,type:a}))}const P=l("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),m=l("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),T=l("empty forloop tablerowloop in with as","keyword"),A=l("first index index0 last length rindex","property"),B=l("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:r,pos:n}=O,$=y(r).resolveInner(n,-1).enterUnfinishedNodesBefore(n),i=((a=$.childBefore(n))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let e=O.matchBefore(/[\w\u00c0-\uffff]+$/);return e?{type:"expression",from:e.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,r,n){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="VariableName"||i.name=="forloop"||i.name=="tablerowloop"){let e=O.sliceDoc(i.from,i.to);if(e=="forloop")return $.length?[]:A;if(e=="tablerowloop")return $.length?[]:B;$.unshift(e);break}else if(i.name=="MemberExpression"){let e=i.getChild("PropertyName");e&&$.unshift(O.sliceDoc(e.from,e.to)),a=i}else if(i.name=="SubscriptExpression"){let e=i.getChildren("Expression")[1];$.unshift((e==null?void 0:e.name)=="StringLiteral"?O.sliceDoc(e.from+1,e.to-1):"[]"),a=i}else return[]}return n?n($,O,r):[]}function J(O={}){let a=O.filters?O.filters.concat(P):P,r=O.tags?O.tags.concat(m):m,n=O.variables?O.variables.concat(T):T,{properties:$}=O;return i=>{var e;let t=M(i);if(!t)return null;let o=(e=t.from)!==null&&e!==void 0?e:t.node?t.node.from:i.pos,s;return t.type=="filter"?s=a:t.type=="tag"?s=r:t.type=="expression"?s=n:s=K(i.state,t.target,i,$),s.length?{options:s,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=f.inputHandler.of((O,a,r,n)=>n!="%"||a!=r||O.state.doc.sliceString(a-1,r+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:p.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function d(O){return a=>{let r=O.test(a.textAfter);return a.lineIndent(a.node.from)+(r?0:a.unit)}}const $O=h.define({name:"liquid",parser:H.configure({props:[G({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":Q.keyword,"empty forloop tablerowloop":Q.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":Q.controlKeyword,"assign capture endcapture":Q.definitionKeyword,contains:Q.operatorKeyword,"render include":Q.moduleKeyword,VariableName:Q.variableName,TagName:Q.tagName,FilterName:Q.function(Q.variableName),PropertyName:Q.propertyName,CompareOp:Q.compareOperator,AssignOp:Q.definitionOperator,LogicOp:Q.logicOperator,NumberLiteral:Q.number,StringLiteral:Q.string,BooleanLiteral:Q.bool,InlineComment:Q.lineComment,CommentText:Q.blockComment,"{% %} {{ }}":Q.brace,"[ ]":Q.bracket,"( )":Q.paren,".":Q.derefOperator,", .. : |":Q.punctuation}),Z.add({Tag:S({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":d(/^\s*(\{%-?\s*)?end\w/),IfDirective:d(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:d(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),b.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,r=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:r.name=="EndTag"?r.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),q=j();function g(O){return $O.configure({wrap:X(a=>a.type.isTop?{parser:O.parser,overlay:r=>r.name=="Text"||r.name=="RawText"}:null)},"liquid")}const aO=g(q.language);function oO(O={}){let a=O.base||q,r=a.language==q.language?aO:g(a.language);return new x(r,[a.support,r.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,oO as liquid,J as liquidCompletionSource,aO as liquidLanguage};
1
+ import{E as f,j as p,a as x,p as X,e as y,L as h,s as G,t as Q,i as Z,k as S,f as b}from"./index-BzVyUKXW.js";import{html as j}from"./index-BX9en7bH.js";import{L as V,E as c}from"./index-D_Pj9S7y.js";import"./index-B4TIVWAq.js";import"./index-DDagpuEn.js";import"./index-snpaQsNQ.js";const W=1,k=2,w=3,v=180,R=4,_=181,E=5,z=182,U=6;function D(O){return O>=65&&O<=90||O>=97&&O<=122}const F=new c(O=>{let a=O.pos;for(;;){let{next:r}=O;if(r<0)break;if(r==123){let n=O.peek(1);if(n==123){if(O.pos>a)break;O.acceptToken(W,2);return}else if(n==37){if(O.pos>a)break;let $=2,i=2;for(;;){let e=O.peek($);if(e==32||e==10)++$;else if(e==35)for(++$;;){let t=O.peek($);if(t<0||t==10)break;$++}else if(e==45&&i==2)i=++$;else{let t=e==101&&O.peek($+1)==110&&O.peek($+2)==100;O.acceptToken(t?w:k,i);return}}}}if(O.advance(),r==10)break}O.pos>a&&O.acceptToken(v)});function u(O,a,r){return new c(n=>{let $=n.pos;for(;;){let{next:i}=n;if(i==123&&n.peek(1)==37){let e=2;for(;;e++){let o=n.peek(e);if(o!=32&&o!=10)break}let t="";for(;;e++){let o=n.peek(e);if(!D(o))break;t+=String.fromCharCode(o)}if(t==O){if(n.pos>$)break;n.acceptToken(r,2);break}}else if(i<0)break;if(n.advance(),i==10)break}n.pos>$&&n.acceptToken(a)})}const C=u("endcomment",z,E),Y=u("endraw",_,R),N=new c(O=>{if(O.next==35){for(O.advance();!(O.next==10||O.next<0||(O.next==37||O.next==125)&&O.peek(1)==125);)O.advance();O.acceptToken(U)}}),I={__proto__:null,contains:34,or:38,and:38,true:52,false:52,empty:54,forloop:57,tablerowloop:59,continue:61,in:131,with:197,for:199,as:201,if:237,endif:241,unless:247,endunless:251,elsif:255,else:259,case:265,endcase:269,when:273,endfor:281,tablerow:287,endtablerow:291,break:295,cycle:301,echo:305,render:309,include:313,assign:317,capture:323,endcapture:327,increment:331,decrement:335},L={__proto__:null,if:86,endif:90,elsif:94,else:98,unless:104,endunless:108,case:114,endcase:118,when:122,for:128,endfor:138,tablerow:144,endtablerow:148,break:152,continue:156,cycle:160,comment:166,endcomment:172,raw:178,endraw:184,echo:188,render:192,include:204,assign:208,capture:214,endcapture:218,increment:222,decrement:226,liquid:230},H=V.deserialize({version:14,states:"KtQYOPOOOOOP'#F{'#F{OeOaO'#CdOsQhO'#CfO!bQxO'#DSO#{OPO'#DVO$ZOPO'#D`O$iOPO'#DeO$wOPO'#DlO%VOPO'#DtO%eOSO'#EPO%jOQO'#EVO%oOPO'#EiOOOP'#Ge'#GeOOOP'#G]'#G]OOOP'#Fz'#FzQYOPOOOOOP-E9y-E9yOOQW'#Cg'#CgO&cQ!jO,59QO&jQ!jO'#G^OsQhO'#CtOOQW'#Gb'#GbOOQW'#Gc'#GcOOQW'#Gd'#GdOOQW'#G^'#G^OOOP,59n,59nO)YQhO,59nOsQhO,59rOsQhO,59vO)dQhO,59xOsQhO,59{OsQhO,5:QOsQhO,5:UO!]QhO,5:XO!]QhO,5:aO)iQhO,5:eO)nQhO,5:gO)sQhO,5:iO)xQhO,5:lO)}QhO,5:rOsQhO,5:wOsQhO,5:yOsQhO,5;POsQhO,5;ROsQhO,5;UOsQhO,5;YOsQhO,5;[O+^QhO,5;^O+eOPO'#CdOOOP,59q,59qO#{OPO,59qO+sQxO'#DYOOOP,59z,59zO$ZOPO,59zO+xQxO'#DcOOOP,5:P,5:PO$iOPO,5:PO+}QxO'#DhOOOP,5:W,5:WO$wOPO,5:WO,SQxO'#DrOOOP,5:`,5:`O%VOPO,5:`O,XQxO'#DwOOOS'#GQ'#GQO,^OSO'#ESO,fOSO,5:kOOOQ'#GR'#GRO,kOQO'#EYO,sOQO,5:qOOOP,5;T,5;TO%oOPO,5;TO,xQxO'#ElOOOP-E9x-E9xO,}Q#|O,59SOsQhO,59VOsQhO,59WOsQhO,59WO-SQhO'#C}OOQW'#F|'#F|O-XQhO1G.lOOOP1G.l1G.lOsQhO,59WOsQhO,59[O-rQ!jO,59`O-yQ!jO1G/YO.QQhO1G/YOOOP1G/Y1G/YO.YQ!jO1G/^O.aQ!jO1G/bOOOP1G/d1G/dO.hQ!jO1G/gO.oQ!jO1G/lO.vQ!jO1G/pO/QQhO1G/sO/QQhO1G/{OOOP1G0P1G0POOOP1G0R1G0RO/VQhO1G0TOOOS1G0W1G0WOOOQ1G0^1G0^O/bQ!jO1G0cO/iQ!jO1G0eO/yQ!jO1G0kO0QQ!jO1G0mO0XQ!jO1G0pO0`Q!jO1G0tO0gQ!jO1G0vOOQW'#Gh'#GhOOQW'#Gk'#GkOsQhO'#EuO0nQhO'#EtOOQW'#Gm'#GmOsQhO'#EzO0uQhO'#EyOOQW'#Go'#GoOsQhO'#FOOOQW'#Gp'#GpOOQW'#FQ'#FQOOQW'#Gq'#GqOsQhO'#FTO0|QhO'#FSOOQW'#Gs'#GsOsQhO'#FXO!]QhO'#F[O1TQhO'#FZOOQW'#Gu'#GuO!]QhO'#F`O1[QhO'#F_OOQW'#Gw'#GwOOQW'#Fd'#FdOOQW'#Ff'#FfOOQW'#Gx'#GxO1cQhO'#FgOOQW'#Gy'#GyOsQhO'#FiOOQW'#Gz'#GzOsQhO'#FkOOQW'#G{'#G{OsQhO'#FmOOQW'#G|'#G|OsQhO'#FoOOQW'#G}'#G}OsQhO'#FrO1hQhO'#FqOOQW'#HP'#HPOsQhO'#FvOOQW'#HQ'#HQOsQhO'#FxOOQW'#Gj'#GjOOQW'#GT'#GTO1oQhO1G0xOOOP1G0x1G0xOOOP1G/]1G/]O1vQhO,59tOOOP1G/f1G/fO1{QhO,59}OOOP1G/k1G/kO2QQhO,5:SOOOP1G/r1G/rO2VQhO,5:^OOOP1G/z1G/zO2[QhO,5:cOOOS-E:O-E:OOOOP1G0V1G0VO2aQxO'#ETOOOQ-E:P-E:POOOP1G0]1G0]O2fQxO'#EZOOOP1G0o1G0oO2kQhO,5;WOOQW1G.n1G.nO2pQ!jO1G.qO5aQ!jO1G.rO5hQ!jO1G.rOOQW'#DP'#DPO7vQhO,59iOOQW-E9z-E9zOOOP7+$W7+$WO9pQ!jO1G.rO9wQ!jO1G.vOsQhO1G.zO<VQhO7+$tOOOP7+$t7+$tOOOP7+$x7+$xOOOP7+$|7+$|OOOP7+%R7+%ROOOP7+%W7+%WOsQhO'#F}O<_QhO7+%[OOOP7+%[7+%[OOQW'#Gf'#GfOsQhO7+%_OsQhO7+%gO<gQhO'#GPO<lQhO7+%oOOOP7+%o7+%oO<tQhO7+%oO<yQhO7+%}OOOP7+%}7+%}OOQW'#Gg'#GgO!]QhO'#EaOsQhO'#EaOOQW'#GS'#GSO=RQhO7+&POOOP7+&P7+&POOOP7+&V7+&VO=aQhO7+&XOOOP7+&X7+&XOOOP7+&[7+&[OOOP7+&`7+&`OOOP7+&b7+&bO=iQ!jO,5;aOOQW'#Gl'#GlOOQW'#Ew'#EwOOQW,5;`,5;`O0nQhO,5;`O>xQ!jO,5;fOOQW'#Gn'#GnOOQW'#E|'#E|OOQW,5;e,5;eO0uQhO,5;eO@XQ!jO,5;jOAzQ!jO,5;oOOQW'#Gr'#GrOOQW'#FV'#FVOOQW,5;n,5;nO0|QhO,5;nOCZQ!jO,5;sO/QQhO,5;vOOQW'#Gt'#GtOOQW'#F]'#F]OOQW,5;u,5;uO1TQhO,5;uO/QQhO,5;zOOQW'#Gv'#GvOOQW'#Fb'#FbOOQW,5;y,5;yO1[QhO,5;yOEPQhO,5<ROFvQ!jO,5<TOHiQ!jO,5<VOJbQ!jO,5<XOLTQ!jO,5<ZOMvQ!jO,5<^OOQW'#HO'#HOOOQW'#Ft'#FtOOQW,5<],5<]O1hQhO,5<]O! VQ!jO,5<bO!!xQ!jO,5<dOOQW-E:R-E:ROOOP7+&d7+&dOOOP1G/`1G/`OOOP1G/i1G/iOOOP1G/n1G/nOOOP1G/x1G/xOOOP1G/}1G/}O!$kQhO,5:oO!$pQhO,5:uOOOP1G0r1G0rOOQW7+$]7+$]OsQhO1G/TO!$uQ!jO7+$fOOOP<<H`<<H`O!$|Q!jO,5<iOOQW-E9{-E9{OOOP<<Hv<<HvO!&xQ!jO<<HyO!'SQ!jO<<IROOQW,5<k,5<kOOQW-E9}-E9}OOOP<<IZ<<IZO!'^QhO<<IZOOOP<<Ii<<IiO!'fQhO,5:{O!'kQ!jO,5:{OOQW-E:Q-E:QOOOP<<Ik<<IkOOOP<<Is<<IsOOQW1G0z1G0zOOQW1G1P1G1POOQW1G1Y1G1YO!)gQhO1G1_OsQhO1G1bOOQW1G1a1G1aOsQhO1G1fOOQW1G1e1G1eO!+ZQhO1G1mO!,}QhO1G1mO!-SQhO1G1oOOQW'#GU'#GUO!.vQhO1G1qO!0mQhO1G1uOOQW1G1w1G1wOOOP1G0Z1G0ZOOOP1G0a1G0aO!2aQ!jO7+$oOOQW<<HQ<<HQOOQW'#Dq'#DqO!4]QhO'#DpOOQW'#GO'#GOO!5vQhOAN>eOOOPAN>eAN>eO!6OQhOAN>mOOOPAN>mAN>mO!6WQhOAN>uOOOPAN>uAN>uOsQhO1G0gOOQW'#Gi'#GiO!]QhO1G0gO!6`Q!jO7+&|O!7rQ!jO7+'QO!9UQhO7+'XOOQW-E:S-E:SO!:xQhO<<HZOsQhO,5:[OOQW-E9|-E9|OOOPG24PG24POOOPG24XG24XOOOPG24aG24aO!<rQ!jO7+&ROOQW7+&R7+&RO!>kQhO<<JhO!?{QhO<<JlO!A]QhO<<JsO!CPQ!jO1G/v",stateData:"!Di~O%OOSUOS~OPROQSO$zPO~O$zPOPWXQWX$yWX~OgeOjiOkiOlfOmgOnhOoiOpiO%RbO~OwkOxjO{lO!PmO!RnO!UoO!ZpO!_qO!brO!jsO!ntO!puO!rvO!uwO!{xO#QyO#SzO#Y{O#[|O#_}O#c!OO#e!PO#g!QO~OPROQSOR!UO$zPO~OPROQSOR!XO$zPO~OPROQSOR![O$zPO~OPROQSOR!_O$zPO~OPROQSOR!bO$zPO~O$|!cO~O${!fO~OPROQSOR!kO$zPO~O]!mOa!uOb!oOc!pOr!qO%T!nO~OX!tO~P%}Oe!vOX%QX]%QXa%QXb%QXc%QXr%QX%T%QXi%QXx%QXu%QX#U%QX#V%QX%S%QXn%QX#j%QX#l%QX#o%QX#s%QX#u%QX#x%QX#|%QX$T%QX$X%QX$[%QX$^%QX$`%QX$b%QX$d%QX$g%QX$k%QX$m%QX#q%QX#z%QX$i%QXf%QX%R%QX#W%QX$Q%QX$V%QX~Or!qOx!zO~PsOx!}O~Ox#TO~Ox#UO~Oo#VO~Ox#WO~Ox#XO~OnhO#V#aO#j#bO#o#eO#s#hO#u#jO#x#lO#|#oO$T#sO$X#vO$[#yO$^#{O$`#}O$b$PO$d$RO$g$TO$k$WO$m$YO~Ox$_O~P*SO$zPOPWXQWXRWX~O}$aO~O!W$cO~O!]$eO~O!g$gO~O!l$iO~O$|!cOT!vX~OT$lO~O${!fOS!|X~OS$oO~O#a$qO~O^$rO~O%R$vO~OX$yOr!qO~O]!mOa!uOb!oOc!pO%T!nO~Oi$|O~P-aOx%OO~P%}Or!qOx%OO~Ox%PO~P-aOx%QO~P-aOx%RO~P-aOx%SO~P-aOu%TOx%VO~P-aO!c%WO~Ot%^Ou%ZOx%]O~Ox%`O~P%}Ou%bOx%fO#U%aO#V#aO~P-aOx%gO~P-aOx%iO~P%}Ox%jO~P-aOx%kO~P-aOx%lO~P-aO#l%nO~P*SO#q%sO~P*SO#z%yO~P*SO$Q&PO~P*SO$V&UO~P*SOo&YO~O$i&`O~P*SOx&gO~P*SOx&hO~Ox&iO~Ox&jO~Ox&kO~Ox&lO~O!x&mO~O#O&nO~Ox&oO~O%S&pO~P-aO]!mO%T!nOX`ia`ic`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~Ob`i~P2wOX`ir`ii`ix`iu`i#U`i#V`i%S`in`i#j`i#l`i#o`i#s`i#u`i#x`i#|`i$T`i$X`i$[`i$^`i$``i$b`i$d`i$g`i$k`i$m`i#q`i#z`i$i`if`i%R`i#W`i$Q`i$V`i~P-aOt&qOXqarqaxqanqa#Vqa#jqa#oqa#sqa#uqa#xqa#|qa$Tqa$Xqa$[qa$^qa$`qa$bqa$dqa$gqa$kqa$mqa#lqa#qqa#zqa$Qqa$Vqa$iqa~Ob!oO~P2wOXdirdiidixdiudi#Udi#Vdi%Sdindi#jdi#ldi#odi#sdi#udi#xdi#|di$Tdi$Xdi$[di$^di$`di$bdi$ddi$gdi$kdi$mdi#qdi#zdi$idifdi%Rdi#Wdi$Qdi$Vdi~P-aOr!qOx&sO~Ou%TOx&vO~Oo&yO~Ou%ZOx&{O~Oo&|O~Or!qOx&}O~Ou%bOx'RO#U%aO#V#aO~Or!qOx'SO~On#ia#V#ia#j#ia#l#ia#o#ia#s#ia#u#ia#x#ia#|#ia$T#ia$X#ia$[#ia$^#ia$`#ia$b#ia$d#ia$g#ia$k#ia$m#ia~P-aOn#na#V#na#j#na#o#na#q#na#s#na#u#na#x#na#|#na$T#na$X#na$[#na$^#na$`#na$b#na$d#na$g#na$k#na$m#na~P-aOn#rax#ra#V#ra#j#ra#o#ra#s#ra#u#ra#x#ra#|#ra$T#ra$X#ra$[#ra$^#ra$`#ra$b#ra$d#ra$g#ra$k#ra$m#ra#l#ra#q#ra#z#ra$Q#ra$V#ra$i#ra~P-aOn#wa#V#wa#j#wa#o#wa#s#wa#u#wa#x#wa#z#wa#|#wa$T#wa$X#wa$[#wa$^#wa$`#wa$b#wa$d#wa$g#wa$k#wa$m#wa~P-aOu%TOn#{ax#{a#V#{a#j#{a#o#{a#s#{a#u#{a#x#{a#|#{a$T#{a$X#{a$[#{a$^#{a$`#{a$b#{a$d#{a$g#{a$k#{a$m#{a#l#{a#q#{a#z#{a$Q#{a$V#{a$i#{a~P-aOt'^Ou%ZOn$Zax$Za#V$Za#j$Za#o$Za#s$Za#u$Za#x$Za#|$Za$T$Za$X$Za$[$Za$^$Za$`$Za$b$Za$d$Za$g$Za$k$Za$m$Za#l$Za#q$Za#z$Za$Q$Za$V$Za$i$Za~On$]ax$]a#V$]a#j$]a#o$]a#s$]a#u$]a#x$]a#|$]a$T$]a$X$]a$[$]a$^$]a$`$]a$b$]a$d$]a$g$]a$k$]a$m$]a#l$]a#q$]a#z$]a$Q$]a$V$]a$i$]a~P%}Ou%bO#U%aO#V#aOn$_ax$_a#j$_a#o$_a#s$_a#u$_a#x$_a#|$_a$T$_a$X$_a$[$_a$^$_a$`$_a$b$_a$d$_a$g$_a$k$_a$m$_a#l$_a#q$_a#z$_a$Q$_a$V$_a$i$_a~P-aOn$aax$aa#V$aa#j$aa#o$aa#s$aa#u$aa#x$aa#|$aa$T$aa$X$aa$[$aa$^$aa$`$aa$b$aa$d$aa$g$aa$k$aa$m$aa#l$aa#q$aa#z$aa$Q$aa$V$aa$i$aa~P-aOn$cax$ca#V$ca#j$ca#o$ca#s$ca#u$ca#x$ca#|$ca$T$ca$X$ca$[$ca$^$ca$`$ca$b$ca$d$ca$g$ca$k$ca$m$ca#l$ca#q$ca#z$ca$Q$ca$V$ca$i$ca~P%}On$fa#V$fa#j$fa#o$fa#s$fa#u$fa#x$fa#|$fa$T$fa$X$fa$[$fa$^$fa$`$fa$b$fa$d$fa$g$fa$i$fa$k$fa$m$fa~P-aOn$jax$ja#V$ja#j$ja#o$ja#s$ja#u$ja#x$ja#|$ja$T$ja$X$ja$[$ja$^$ja$`$ja$b$ja$d$ja$g$ja$k$ja$m$ja#l$ja#q$ja#z$ja$Q$ja$V$ja$i$ja~P-aOn$lax$la#V$la#j$la#o$la#s$la#u$la#x$la#|$la$T$la$X$la$[$la$^$la$`$la$b$la$d$la$g$la$k$la$m$la#l$la#q$la#z$la$Q$la$V$la$i$la~P-aOx'dO~Ox'eO~Of'gO~P-aOu$qax$qan$qa#V$qa#j$qa#o$qa#s$qa#u$qa#x$qa#|$qa$T$qa$X$qa$[$qa$^$qa$`$qa$b$qa$d$qa$g$qa$k$qa$m$qa#l$qa#q$qa#z$qa$Q$qa$V$qa$i$qaX$qar$qa~P-aOx'lO%R'hO~P-aOx'nO%R'hO~P-aOu%ZOx'pO~Ot'qO~O#W'rOu#Tax#Ta#U#Ta#V#Tan#Ta#j#Ta#o#Ta#s#Ta#u#Ta#x#Ta#|#Ta$T#Ta$X#Ta$[#Ta$^#Ta$`#Ta$b#Ta$d#Ta$g#Ta$k#Ta$m#Ta#l#Ta#q#Ta#z#Ta$Q#Ta$V#Ta$i#Ta~P-aOu%TOn#{ix#{i#V#{i#j#{i#o#{i#s#{i#u#{i#x#{i#|#{i$T#{i$X#{i$[#{i$^#{i$`#{i$b#{i$d#{i$g#{i$k#{i$m#{i#l#{i#q#{i#z#{i$Q#{i$V#{i$i#{i~Ou%ZOn$Zix$Zi#V$Zi#j$Zi#o$Zi#s$Zi#u$Zi#x$Zi#|$Zi$T$Zi$X$Zi$[$Zi$^$Zi$`$Zi$b$Zi$d$Zi$g$Zi$k$Zi$m$Zi#l$Zi#q$Zi#z$Zi$Q$Zi$V$Zi$i$Zi~Oo'vO~Or!qOn$]ix$]i#V$]i#j$]i#o$]i#s$]i#u$]i#x$]i#|$]i$T$]i$X$]i$[$]i$^$]i$`$]i$b$]i$d$]i$g$]i$k$]i$m$]i#l$]i#q$]i#z$]i$Q$]i$V$]i$i$]i~Ou%bO#U%aO#V#aOn$_ix$_i#j$_i#o$_i#s$_i#u$_i#x$_i#|$_i$T$_i$X$_i$[$_i$^$_i$`$_i$b$_i$d$_i$g$_i$k$_i$m$_i#l$_i#q$_i#z$_i$Q$_i$V$_i$i$_i~Or!qOn$cix$ci#V$ci#j$ci#o$ci#s$ci#u$ci#x$ci#|$ci$T$ci$X$ci$[$ci$^$ci$`$ci$b$ci$d$ci$g$ci$k$ci$m$ci#l$ci#q$ci#z$ci$Q$ci$V$ci$i$ci~Ou%TOXqqrqqxqqnqq#Vqq#jqq#oqq#sqq#uqq#xqq#|qq$Tqq$Xqq$[qq$^qq$`qq$bqq$dqq$gqq$kqq$mqq#lqq#qqq#zqq$Qqq$Vqq$iqq~P-aOt'yOx!dX%R!dXn!dX#V!dX#j!dX#o!dX#s!dX#u!dX#x!dX#|!dX$Q!dX$T!dX$X!dX$[!dX$^!dX$`!dX$b!dX$d!dX$g!dX$k!dX$m!dX$V!dX~Ox'{O%R'hO~Ox'|O%R'hO~Ou%ZOx'}O~O%R'hOn$Oq#V$Oq#j$Oq#o$Oq#s$Oq#u$Oq#x$Oq#|$Oq$Q$Oq$T$Oq$X$Oq$[$Oq$^$Oq$`$Oq$b$Oq$d$Oq$g$Oq$k$Oq$m$Oq~P-aO%R'hOn$Sq#V$Sq#j$Sq#o$Sq#s$Sq#u$Sq#x$Sq#|$Sq$T$Sq$V$Sq$X$Sq$[$Sq$^$Sq$`$Sq$b$Sq$d$Sq$g$Sq$k$Sq$m$Sq~P-aOu%ZOn$Zqx$Zq#V$Zq#j$Zq#o$Zq#s$Zq#u$Zq#x$Zq#|$Zq$T$Zq$X$Zq$[$Zq$^$Zq$`$Zq$b$Zq$d$Zq$g$Zq$k$Zq$m$Zq#l$Zq#q$Zq#z$Zq$Q$Zq$V$Zq$i$Zq~Ou%TOXqyrqyxqynqy#Vqy#jqy#oqy#sqy#uqy#xqy#|qy$Tqy$Xqy$[qy$^qy$`qy$bqy$dqy$gqy$kqy$mqy#lqy#qqy#zqy$Qqy$Vqy$iqy~Ou#Tqx#Tq#U#Tq#V#Tqn#Tq#j#Tq#o#Tq#s#Tq#u#Tq#x#Tq#|#Tq$T#Tq$X#Tq$[#Tq$^#Tq$`#Tq$b#Tq$d#Tq$g#Tq$k#Tq$m#Tq#l#Tq#q#Tq#z#Tq$Q#Tq$V#Tq$i#Tq~P-aO%R'hOn$Oy#V$Oy#j$Oy#o$Oy#s$Oy#u$Oy#x$Oy#|$Oy$Q$Oy$T$Oy$X$Oy$[$Oy$^$Oy$`$Oy$b$Oy$d$Oy$g$Oy$k$Oy$m$Oy~O%R'hOn$Sy#V$Sy#j$Sy#o$Sy#s$Sy#u$Sy#x$Sy#|$Sy$T$Sy$V$Sy$X$Sy$[$Sy$^$Sy$`$Sy$b$Sy$d$Sy$g$Sy$k$Sy$m$Sy~Ou%ZOn$Zyx$Zy#V$Zy#j$Zy#o$Zy#s$Zy#u$Zy#x$Zy#|$Zy$T$Zy$X$Zy$[$Zy$^$Zy$`$Zy$b$Zy$d$Zy$g$Zy$k$Zy$m$Zy#l$Zy#q$Zy#z$Zy$Q$Zy$V$Zy$i$Zy~Ox!di%R!din!di#V!di#j!di#o!di#s!di#u!di#x!di#|!di$Q!di$T!di$X!di$[!di$^!di$`!di$b!di$d!di$g!di$k!di$m!di$V!di~P-aO",goto:"@p%uPPPPPPPP%vP%v&W'hPP'h'hPPP'hPPP'hPPPPPPPP(fP(vPP(yPP(y)ZP)kP(yP(yP(y)qP*RP(y*XP*iP(yP(y*oPP+P+Z+eP(y+kP+{P(yP(yP(yP(y,RP,c,fP(y,iP,y,|P(yP(yP-PPPP(yP(yP(y-XP-iP(yP(yP(yP-o.PP.aP-o.gP.wP-oP-oP-o.}P/_P-oP-o/e/uP-o/{P0]P-oP-o-oP-oP-oP-oP-oP-o0cP0sP-oP-oP0y1i2P2o2}3a3s3y4P4V4uPPPPPP4{5]PPP'h'h8P%v9_9k9q:X:[:l:|;Q;b;f;v<W<h<l<|=Q=b=f=v>W>h>x?Y?j?z@O@`m^OTUVWX[`!T!W!Z!^!a!j!vdReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'yQ#RrQ#SsQ&O#qQ&T#tQ'O%bR(P's!wiReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym!rck!s!x!y#Y#]$}%_%h&Z&^'_'bR$w!qm]OTUVWX[`!T!W!Z!^!a!jmTOTUVWX[`!T!W!Z!^!a!jQ!STR$`!TmUOTUVWX[`!T!W!Z!^!a!jQ!VUR$b!WmVOTUVWX[`!T!W!Z!^!a!jQ!YVR$d!ZmWOTUVWX[`!T!W!Z!^!a!ja'j&w&x'k'm't'u(Q(Ra'i&w&x'k'm't'u(Q(RQ!]WR$f!^mXOTUVWX[`!T!W!Z!^!a!jQ!`XR$h!amYOTUVWX[`!T!W!Z!^!a!jR!eYR$k!emZOTUVWX[`!T!W!Z!^!a!jR!hZR$n!hS%d#Z%eT'`&['am[OTUVWX[`!T!W!Z!^!a!jQ!i[R$p!jm$[!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#d!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%p#dR'T%qm#g!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%u#gR'U%vm#n!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%{#nR'V%|m#r!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&R#rR'Y&Sm#u!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&W#uR'[&Xm$V!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ&b$VR'c&cQ`OQ!TTQ!WUQ!ZVQ!^WQ!aXQ!j[_!l`!T!W!Z!^!a!jSQO`SaQ!Ri!RTUVWX[!T!W!Z!^!a!jQ!scQ!yk^$x!s!y$}%_%h'_'bQ$}!xQ%_#YQ%h#]Q'_&ZR'b&^Q%U#QU&u%U'W'xQ'W%}R'x'fQ'k&wQ'm&xW'z'k'm(Q(RQ(Q'tR(R'uQ%[#VW&z%[']'o(SQ']&YQ'o&|R(S'vQ!dYR$j!dQ!gZR$m!gQ%e#ZR'Q%eQ$^!QQ%q#dQ%v#gQ%|#nQ&S#rQ&X#uQ&c$V_&f$^%q%v%|&S&X&cQ'a&[R'w'am_OTUVWX[`!T!W!Z!^!a!jQcRQ!weQ!xkQ!{lQ!|mQ#OoQ#PpQ#QqQ#YyQ#ZzQ#[{Q#]|Q#^}Q#_!OQ#`!PQ$s!nQ$t!oQ$u!pQ$z!uQ${!vQ%m#cQ%r#fQ%w#iQ%x#mQ%}#pQ&Z#|Q&[$OQ&]$QQ&^$SQ&_$UQ&d$XQ&e$ZQ&r$|Q&t%TQ&w%XQ&x%YQ'P%cQ'f&qQ't'XQ'u'ZQ(O'qR(T'y!viReklmopqyz{|}!O!P!n!o!p!u!v#c#f#i#m#p#|$O$Q$S$U$X$Z$|%T%X%Y%c&q'X'Z'q'ym#x!Q#d#g#n#r#u$V$^%q%v%|&S&X&cQ%X#RQ%Y#SQ'X&OR'Z&TX%c#Z%e&['al#q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cX%c#Z%e&['aR's'Pm$]!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#c!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%o#d%qm#f!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%t#g%vm#i!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#k!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#m!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT%z#n%|m#p!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&Q#r&Sm#t!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&V#u&Xm#w!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#z!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm#|!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$O!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Q!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$S!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$U!Q#d#g#n#r#u$V$^%q%v%|&S&X&cT&a$V&cm$X!Q#d#g#n#r#u$V$^%q%v%|&S&X&cm$Z!Q#d#g#n#r#u$V$^%q%v%|&S&X&c",nodeNames:"⚠ {{ {% {% {% {% InlineComment Template Text }} Interpolation VariableName MemberExpression . PropertyName SubscriptExpression BinaryExpression contains CompareOp LogicOp AssignmentExpression AssignOp ) ( RangeExpression .. BooleanLiteral empty forloop tablerowloop continue StringLiteral NumberLiteral Filter | FilterName : , Tag TagName %} IfDirective Tag if EndTag endif Tag elsif Tag else UnlessDirective Tag unless EndTag endunless CaseDirective Tag case EndTag endcase Tag when ForDirective Tag for in Parameter ParameterName EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag continue Tag cycle Comment Tag comment CommentText EndTag endcomment RawDirective Tag raw RawText EndTag endraw Tag echo Tag render RenderParameter with for as Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement Tag liquid IfDirective Tag if EndTag endif UnlessDirective Tag unless EndTag endunless Tag elsif Tag else CaseDirective Tag case EndTag endcase Tag when ForDirective Tag EndTag endfor TableDirective Tag tablerow EndTag endtablerow Tag break Tag Tag cycle Tag echo Tag render Tag include Tag assign CaptureDirective Tag capture EndTag endcapture Tag increment Tag decrement",maxTerm:220,nodeProps:[["closedBy",1,"}}",-4,2,3,4,5,"%}",23,")"],["openedBy",9,"{{",22,"(",40,"{%"],["group",-13,11,12,15,16,20,24,26,27,28,29,30,31,32,"Expression"]],skippedNodes:[0,6],repeatNodeCount:11,tokenData:")e~RmXY!|YZ!|]^!|pq!|qr#_rs#juv$[wx$gxy%Syz%X{|%^|}&x}!O&}!O!P'Z!Q![&g![!]'k!^!_'p!_!`'x!`!a'p!c!}(Q!}#O(y#P#Q)O#R#S(Q#T#o(Q#p#q)T#q#r)Y%W;'S(Q;'S;:j(s<%lO(Q~#RS%O~XY!|YZ!|]^!|pq!|~#bP!_!`#e~#jOb~~#mUOY#jZr#jrs$Ps;'S#j;'S;=`$U<%lO#j~$UOo~~$XP;=`<%l#j~$_P#q#r$b~$gOx~~$jUOY$gZw$gwx$Px;'S$g;'S;=`$|<%lO$g~%PP;=`<%l$g~%XOg~~%^Of~P%aQ!O!P%g!Q![&gP%jP!Q![%mP%rRpP!Q![%m!g!h%{#X#Y%{P&OR{|&X}!O&X!Q![&_P&[P!Q![&_P&dPpP!Q![&_P&lSpP!O!P%g!Q![&g!g!h%{#X#Y%{~&}Ou~~'QRuv$[!O!P%g!Q![&g~'`Q]S!O!P'f!Q![%m~'kOi~~'pOt~~'uPb~!_!`#e~'}Pe~!_!`#e_(ZW^WwQ%RT}!O(Q!Q![(Q!c!}(Q#R#S(Q#T#o(Q%W;'S(Q;'S;:j(s<%lO(Q_(vP;=`<%l(Q~)OO%T~~)TO%S~~)YOr~~)]P#q#r)`~)eOX~",tokenizers:[F,Y,C,N,0,1,2,3],topRules:{Template:[0,7]},dynamicPrecedences:{190:1,191:1,192:1,194:1,195:1,196:1,197:1,199:1,200:1,201:1,202:1,203:1,204:1,205:1,206:1,207:1,208:1,209:1,210:1,211:1,212:1,213:1,214:1,215:1,216:1,217:1,218:1,219:1,220:1},specialized:[{term:187,get:O=>I[O]||-1},{term:39,get:O=>L[O]||-1}],tokenPrec:0});function l(O,a){return O.split(" ").map(r=>({label:r,type:a}))}const P=l("abs append at_least at_most capitalize ceil compact concat date default divided_by downcase escape escape_once first floor join last lstrip map minus modulo newline_to_br plus prepend remove remove_first replace replace_first reverse round rstrip size slice sort sort_natural split strip strip_html strip_newlines sum times truncate truncatewords uniq upcase url_decode url_encode where","function"),m=l("cycle comment endcomment raw endraw echo increment decrement liquid if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue assign capture endcapture render include","keyword"),T=l("empty forloop tablerowloop in with as","keyword"),A=l("first index index0 last length rindex","property"),B=l("col col0 col_first col_last first index index0 last length rindex rindex0 row","property");function M(O){var a;let{state:r,pos:n}=O,$=y(r).resolveInner(n,-1).enterUnfinishedNodesBefore(n),i=((a=$.childBefore(n))===null||a===void 0?void 0:a.name)||$.name;if($.name=="FilterName")return{type:"filter",node:$};if(O.explicit&&i=="|")return{type:"filter"};if($.name=="TagName")return{type:"tag",node:$};if(O.explicit&&i=="{%")return{type:"tag"};if($.name=="PropertyName"&&$.parent.name=="MemberExpression")return{type:"property",node:$,target:$.parent};if($.name=="."&&$.parent.name=="MemberExpression")return{type:"property",target:$.parent};if($.name=="MemberExpression"&&i==".")return{type:"property",target:$};if($.name=="VariableName")return{type:"expression",from:$.from};let e=O.matchBefore(/[\w\u00c0-\uffff]+$/);return e?{type:"expression",from:e.from}:O.explicit&&$.name!="CommentText"&&$.name!="StringLiteral"&&$.name!="NumberLiteral"&&$.name!="InlineComment"?{type:"expression"}:null}function K(O,a,r,n){let $=[];for(;;){let i=a.getChild("Expression");if(!i)return[];if(i.name=="VariableName"||i.name=="forloop"||i.name=="tablerowloop"){let e=O.sliceDoc(i.from,i.to);if(e=="forloop")return $.length?[]:A;if(e=="tablerowloop")return $.length?[]:B;$.unshift(e);break}else if(i.name=="MemberExpression"){let e=i.getChild("PropertyName");e&&$.unshift(O.sliceDoc(e.from,e.to)),a=i}else if(i.name=="SubscriptExpression"){let e=i.getChildren("Expression")[1];$.unshift((e==null?void 0:e.name)=="StringLiteral"?O.sliceDoc(e.from+1,e.to-1):"[]"),a=i}else return[]}return n?n($,O,r):[]}function J(O={}){let a=O.filters?O.filters.concat(P):P,r=O.tags?O.tags.concat(m):m,n=O.variables?O.variables.concat(T):T,{properties:$}=O;return i=>{var e;let t=M(i);if(!t)return null;let o=(e=t.from)!==null&&e!==void 0?e:t.node?t.node.from:i.pos,s;return t.type=="filter"?s=a:t.type=="tag"?s=r:t.type=="expression"?s=n:s=K(i.state,t.target,i,$),s.length?{options:s,from:o,validFor:/^[\w\u00c0-\uffff]*$/}:null}}const OO=f.inputHandler.of((O,a,r,n)=>n!="%"||a!=r||O.state.doc.sliceString(a-1,r+1)!="{}"?!1:(O.dispatch(O.state.changeByRange($=>({changes:{from:$.from,to:$.to,insert:"%%"},range:p.cursor($.from+1)})),{scrollIntoView:!0,userEvent:"input.type"}),!0));function d(O){return a=>{let r=O.test(a.textAfter);return a.lineIndent(a.node.from)+(r?0:a.unit)}}const $O=h.define({name:"liquid",parser:H.configure({props:[G({"cycle comment endcomment raw endraw echo increment decrement liquid in with as":Q.keyword,"empty forloop tablerowloop":Q.atom,"if elsif else endif unless endunless case endcase for endfor tablerow endtablerow break continue":Q.controlKeyword,"assign capture endcapture":Q.definitionKeyword,contains:Q.operatorKeyword,"render include":Q.moduleKeyword,VariableName:Q.variableName,TagName:Q.tagName,FilterName:Q.function(Q.variableName),PropertyName:Q.propertyName,CompareOp:Q.compareOperator,AssignOp:Q.definitionOperator,LogicOp:Q.logicOperator,NumberLiteral:Q.number,StringLiteral:Q.string,BooleanLiteral:Q.bool,InlineComment:Q.lineComment,CommentText:Q.blockComment,"{% %} {{ }}":Q.brace,"[ ]":Q.bracket,"( )":Q.paren,".":Q.derefOperator,", .. : |":Q.punctuation}),Z.add({Tag:S({closing:"%}"}),"UnlessDirective ForDirective TablerowDirective CaptureDirective":d(/^\s*(\{%-?\s*)?end\w/),IfDirective:d(/^\s*(\{%-?\s*)?(endif|else|elsif)\b/),CaseDirective:d(/^\s*(\{%-?\s*)?(endcase|when)\b/)}),b.add({"UnlessDirective ForDirective TablerowDirective CaptureDirective IfDirective CaseDirective RawDirective Comment"(O){let a=O.firstChild,r=O.lastChild;return!a||a.name!="Tag"?null:{from:a.to,to:r.name=="EndTag"?r.from:O.to}}})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*{%-?\s*(?:end|elsif|else|when|)$/}}),q=j();function g(O){return $O.configure({wrap:X(a=>a.type.isTop?{parser:O.parser,overlay:r=>r.name=="Text"||r.name=="RawText"}:null)},"liquid")}const aO=g(q.language);function oO(O={}){let a=O.base||q,r=a.language==q.language?aO:g(a.language);return new x(r,[a.support,r.data.of({autocomplete:J(O)}),a.language.data.of({closeBrackets:{brackets:["{"]}}),OO])}export{OO as closePercentBrace,oO as liquid,J as liquidCompletionSource,aO as liquidLanguage};