n8n-editor-ui 2.1.1 → 2.1.2

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 (220) hide show
  1. package/dist/assets/{AddDataTableModal-Dz0DDl2J.js → AddDataTableModal-Biub-zeV.js} +12 -12
  2. package/dist/assets/{AgentEditorModal-BucPtfuf.js → AgentEditorModal-PXvmwyMd.js} +16 -16
  3. package/dist/assets/{Alert-0hwMnhqx.js → Alert-ThpSN7C0.js} +1 -1
  4. package/dist/assets/{AnnotationTagsDropdown.ee-FwAi0jQL.js → AnnotationTagsDropdown.ee-CgUQtuOy.js} +2 -2
  5. package/dist/assets/{AuthView-DpssdaNh.js → AuthView-CIGxT6Xf.js} +4 -4
  6. package/dist/assets/{ChangePasswordView-DBihzMqB.js → ChangePasswordView-BGSyBBl2.js} +8 -8
  7. package/dist/assets/{ChatAgentAvatar-DDaNlXcV.js → ChatAgentAvatar-BLpWC-zL.js} +5 -5
  8. package/dist/assets/{ChatPersonalAgentsView-DhQsTHJ3.js → ChatPersonalAgentsView-Bd73mT2L.js} +14 -14
  9. package/dist/assets/{ChatSidebar-DW6c9Blv.js → ChatSidebar-FcoKSroN.js} +14 -14
  10. package/dist/assets/{ChatSidebarOpener-B4_hEzpT.js → ChatSidebarOpener-ctovVEcz.js} +6 -6
  11. package/dist/assets/{ChatView-B1O45V-1.js → ChatView-k5Ib5T23.js} +16 -16
  12. package/dist/assets/{ChatWorkflowAgentsView-U76sjiCh.js → ChatWorkflowAgentsView-CPOcTSK4.js} +12 -12
  13. package/dist/assets/CollectionParameter-BdVkYonk.js +58 -0
  14. package/dist/assets/{CommunityNodeUpdateInfo-DaqlFCWs.js → CommunityNodeUpdateInfo-Dy0ilmZE.js} +6 -6
  15. package/dist/assets/{CopyInput-DjkkoSUR.js → CopyInput-B2aUDGPW.js} +3 -3
  16. package/dist/assets/{CredentialIcon-B5mFnPOM.js → CredentialIcon-BGZoAL3d.js} +3 -3
  17. package/dist/assets/{CredentialPicker-DmA-dFkP.js → CredentialPicker-BtKDHFRq.js} +5 -5
  18. package/dist/assets/{CredentialSelectorModal-CVKa8AAF.js → CredentialSelectorModal-DkyFq-Pq.js} +12 -12
  19. package/dist/assets/{CredentialsView-B2WvyZTw.js → CredentialsView-xnKf-zG4.js} +26 -26
  20. package/dist/assets/{DataTableActions-CGYkW0Ge.js → DataTableActions-B5aTsXib.js} +5 -5
  21. package/dist/assets/{DataTableDetailsView-B-_rx-9L.js → DataTableDetailsView-C6okqjS-.js} +16 -16
  22. package/dist/assets/{DataTableView-K-cZEOKP.js → DataTableView-BM78mbgY.js} +23 -23
  23. package/dist/assets/DemoFooter-BCrcY2ep.js +71 -0
  24. package/dist/assets/{Draggable-D6WWA0zM.js → Draggable-DveKAuxg.js} +1 -1
  25. package/dist/assets/{EmptySharedSectionActionBox-CR6VISbw.js → EmptySharedSectionActionBox-SKlYZNuX.js} +3 -3
  26. package/dist/assets/{EnterpriseEdition.ee-CZml4Gcj.js → EnterpriseEdition.ee-BQiXZvAd.js} +1 -1
  27. package/dist/assets/{EntityNotFound-5i3KSEDe.js → EntityNotFound-ByhfFutM.js} +2 -2
  28. package/dist/assets/{EntityUnAuthorised-DHAtMGRv.js → EntityUnAuthorised-Ab8M--6A.js} +2 -2
  29. package/dist/assets/{ErrorView-CxNhrbRr.js → ErrorView-Csvm001D.js} +3 -3
  30. package/dist/assets/{EvaluationsRootView-DFRtR5a2.js → EvaluationsRootView-B6-VDQXl.js} +19 -19
  31. package/dist/assets/{EvaluationsView-DDnL-VtS.js → EvaluationsView-D8teiZoa.js} +10 -10
  32. package/dist/assets/{ExecutionsTime-Bll0yiJm.js → ExecutionsTime-CLQBgXgq.js} +8 -8
  33. package/dist/assets/{ExecutionsView-8Y-vd0QZ.js → ExecutionsView-B6W7-w3K.js} +25 -25
  34. package/dist/assets/{ExternalSecretsProviderConnectionSwitch.ee-BWWuVEWG.js → ExternalSecretsProviderConnectionSwitch.ee-DcLHCwv3.js} +3 -3
  35. package/dist/assets/{FixedCollectionParameter-CsPQJVNL.js → FixedCollectionParameter-ozilaYrN.js} +38 -38
  36. package/dist/assets/{ForgotMyPasswordView-DXGbw-EL.js → ForgotMyPasswordView-Bnk-XG6Z.js} +8 -8
  37. package/dist/assets/{InsightsDashboard-C9pPsgT2.js → InsightsDashboard-KVEJC5l2.js} +19 -19
  38. package/dist/assets/{InsightsPaywall-fDfWjnVB.js → InsightsPaywall-BrnS_pKR.js} +9 -9
  39. package/dist/assets/{InsightsSummary-Bjy-SY3W.js → InsightsSummary-Da08_DCk.js} +4 -4
  40. package/dist/assets/{InsightsTableWorkflows-CAslapaK.js → InsightsTableWorkflows-CjXv0hN6.js} +8 -8
  41. package/dist/assets/{ItemsRenderer-CuTgDOI7.js → ItemsRenderer-B3028vj7.js} +7 -7
  42. package/dist/assets/{KeyboardShortcutTooltip-BSbSC7ko.js → KeyboardShortcutTooltip-vWNBozVo.js} +1 -1
  43. package/dist/assets/LogsPanel-Bl6S94ba.js +58 -0
  44. package/dist/assets/{LogsPanel-BVg_Ph6Z.js → LogsPanel-DxQFRme8.js} +18 -18
  45. package/dist/assets/{MainHeader-CfOHJ5AX.js → MainHeader-Di9xKi5B.js} +50 -50
  46. package/dist/assets/{MainSidebar-BLoE9rZO.js → MainSidebar-DIa4RZxf.js} +36 -36
  47. package/dist/assets/{MigrationRuleDetail-CmcZ36s9.js → MigrationRuleDetail-mcU4VyTt.js} +13 -13
  48. package/dist/assets/{MigrationRules-Cf4vXtX8.js → MigrationRules-2g39kC1H.js} +6 -6
  49. package/dist/assets/{Modal-BkPSKUmM.js → Modal-DGPQBa8T.js} +4 -4
  50. package/dist/assets/{ModalDrawer-DJsD4EIc.js → ModalDrawer-CHxulsmc.js} +5 -5
  51. package/dist/assets/{ModelByIdSelectorModal-BoLoyNu7.js → ModelByIdSelectorModal-CzcpDw87.js} +10 -10
  52. package/dist/assets/{NDVEmptyState-ClE3eiVz.js → NDVEmptyState-BeXJvhnF.js} +1 -1
  53. package/dist/assets/{NodeCreation-DFfRX0DY.js → NodeCreation-Br8ljRfC.js} +37 -37
  54. package/dist/assets/{NodeCreator-CO64k-3G.js → NodeCreator-fSrstn2P.js} +24 -24
  55. package/dist/assets/{NodeDetailsView-BURiqx95.js → NodeDetailsView-HXe2ZuYh.js} +49 -49
  56. package/dist/assets/{NodeDetailsViewV2-XUrXwnja.js → NodeDetailsViewV2-C3W-2c0t.js} +50 -50
  57. package/dist/assets/{NodeIcon-CWyPkrTk.js → NodeIcon-CWvzhRQM.js} +2 -2
  58. package/dist/assets/{NodeSettings-CcYkiMI8.js → NodeSettings-Br6GFKCU.js} +16 -16
  59. package/dist/assets/{NodeView-BPGoqSQJ.js → NodeView-BLDOwZvQ.js} +60 -60
  60. package/dist/assets/{OAuthConsentView-kdX_7fls.js → OAuthConsentView-C13weyO_.js} +6 -6
  61. package/dist/assets/{ParameterInputList-DdA16d29.js → ParameterInputList-BUU1q_EZ.js} +25 -25
  62. package/dist/assets/{PrebuiltAgentTemplatesView-CwoV26I0.js → PrebuiltAgentTemplatesView-D9w4f2e0.js} +11 -11
  63. package/dist/assets/{ProjectBreadcrumb-3cTfM8kZ.js → ProjectBreadcrumb-8JDiuLL3.js} +3 -3
  64. package/dist/assets/{ProjectCardBadge-DWmYy--A.js → ProjectCardBadge-CcHOiONP.js} +4 -4
  65. package/dist/assets/{ProjectHeader-CzeJhu2I.js → ProjectHeader-D4bO6fjq.js} +7 -7
  66. package/dist/assets/{ProjectIcon-Biy_-Ssg.js → ProjectIcon-DQILIjYR.js} +1 -1
  67. package/dist/assets/{ProjectRoleView-D6dn38TT.js → ProjectRoleView-UeSNgqSq.js} +9 -9
  68. package/dist/assets/{ProjectRolesView-BljI8SKN.js → ProjectRolesView-DhXb0x1i.js} +12 -12
  69. package/dist/assets/{ProjectSettings-Cu6igv0N.js → ProjectSettings-CUnoqyPE.js} +21 -21
  70. package/dist/assets/{ProjectSharing-YZRwVLxy.js → ProjectSharing-utuPX2PB.js} +4 -4
  71. package/dist/assets/{ProjectVariables-ClTl8P4L.js → ProjectVariables-djh1rIms.js} +24 -24
  72. package/dist/assets/{ProviderSettingsModal-Bw0f0MFf.js → ProviderSettingsModal-CazzGyiO.js} +13 -13
  73. package/dist/assets/{PushConnectionTracker-ClSwVP7t.js → PushConnectionTracker-Dpvr4Zz3.js} +2 -2
  74. package/dist/assets/{ResolversView-BC_8K9SU.js → ResolversView-BdV4DSqj.js} +10 -10
  75. package/dist/assets/{ResourceFiltersDropdown-1x0v8WL5.js → ResourceFiltersDropdown-W30MKKtt.js} +5 -5
  76. package/dist/assets/{ResourcesListLayout-DeXcgSE7.js → ResourcesListLayout-DqSGTRQL.js} +7 -7
  77. package/dist/assets/{RunDataJson-CzijJVcS.js → RunDataJson-Ber6Oi12.js} +9 -9
  78. package/dist/assets/{RunDataJsonActions-F_lYqidD.js → RunDataJsonActions-Bf98jdLe.js} +8 -8
  79. package/dist/assets/{RunDataParsedAiContent-DuwV5rNK.js → RunDataParsedAiContent-Brtftd8W.js} +9 -9
  80. package/dist/assets/{RunDataParsedAiContent-rfF9dj2q.js → RunDataParsedAiContent-DL7QTmP_.js} +5 -5
  81. package/dist/assets/{RunDataSearch-sHgYw75e.js → RunDataSearch-jh-3G-0I.js} +4 -4
  82. package/dist/assets/{RunDataTable-CcVCz6KL.js → RunDataTable-BVL7OKID.js} +9 -9
  83. package/dist/assets/{SamlOnboarding-_E1uKrqU.js → SamlOnboarding-D_thSH33.js} +8 -8
  84. package/dist/assets/{SaveButton-CKB6EQNE.js → SaveButton-DooLZseO.js} +2 -2
  85. package/dist/assets/{SelectedItemsInfo-BvVqSABb.js → SelectedItemsInfo-DDt5oazC.js} +1 -1
  86. package/dist/assets/{SettingsApiView-BTIamHhf.js → SettingsApiView-BBxKUUm2.js} +13 -13
  87. package/dist/assets/{SettingsChatHubView-CcI8QRBj.js → SettingsChatHubView-DVgdfxN7.js} +9 -9
  88. package/dist/assets/{SettingsCommunityNodesView-DnxcG1WB.js → SettingsCommunityNodesView-BRFN63n0.js} +28 -28
  89. package/dist/assets/{SettingsExternalSecrets-CZeypg03.js → SettingsExternalSecrets-C0x7V0VC.js} +11 -11
  90. package/dist/assets/{SettingsLdapView-BocG9o4_.js → SettingsLdapView-Bwoo1o2k.js} +14 -14
  91. package/dist/assets/{SettingsLogStreamingView-Cb0TLdGI.js → SettingsLogStreamingView-BgwdyH0h.js} +13 -13
  92. package/dist/assets/{SettingsMCPView-B61X_NPm.js → SettingsMCPView-DzdHfN6P.js} +29 -29
  93. package/dist/assets/{SettingsPersonalView-DwALyVrM.js → SettingsPersonalView-CnMsk8M2.js} +9 -9
  94. package/dist/assets/{SettingsSourceControl-o8jjZB6R.js → SettingsSourceControl-DKRbSwDj.js} +13 -13
  95. package/dist/assets/{SettingsSso-CWlyF0Ul.js → SettingsSso-DD32GRf1.js} +16 -16
  96. package/dist/assets/{SettingsUsageAndPlan-qLBre8L1.js → SettingsUsageAndPlan-lZYIpXMj.js} +12 -12
  97. package/dist/assets/{SettingsUsersView-IoXkRrA3.js → SettingsUsersView-BP2U2tD2.js} +17 -17
  98. package/dist/assets/{SettingsView-BRggCZxl.js → SettingsView-BRsk0Vjq.js} +7 -7
  99. package/dist/assets/{SetupTemplateFormStep-B16Nen7u.js → SetupTemplateFormStep-DcmVXD3a.js} +6 -6
  100. package/dist/assets/{SetupView-B_3dlp0F.js → SetupView-DBFUYVtm.js} +8 -8
  101. package/dist/assets/{SetupWorkflowCredentialsButton-DbpL-wd-.js → SetupWorkflowCredentialsButton-ChlRSbhd.js} +7 -7
  102. package/dist/assets/{SetupWorkflowFromTemplateView-DtkJ3dhT.js → SetupWorkflowFromTemplateView-CER9J7DP.js} +18 -18
  103. package/dist/assets/{SeverityTag-Bdpvd3O4.js → SeverityTag-CkJev9WS.js} +2 -2
  104. package/dist/assets/{SigninView-D0mRO95G.js → SigninView-CWdvHULD.js} +9 -9
  105. package/dist/assets/{SignoutView-D-cEDvGt.js → SignoutView-fvJJZx5p.js} +5 -5
  106. package/dist/assets/{SignupView-BGUF0a3y.js → SignupView-SNgWdNtE.js} +8 -8
  107. package/dist/assets/{SkeletonAgentCard-BqWJHS47.js → SkeletonAgentCard-DQhrFpBG.js} +5 -5
  108. package/dist/assets/{TagsDropdown-CKHFeXgu.js → TagsDropdown-RP7eXKHF.js} +2 -2
  109. package/dist/assets/{TemplateCard-C1F6Sjp3.js → TemplateCard-DbQ8Ekek.js} +6 -6
  110. package/dist/assets/{TemplateDetails-ByaDkPHZ.js → TemplateDetails-BlnoU2XX.js} +6 -6
  111. package/dist/assets/{TemplateList-IOK3RSuN.js → TemplateList-EUHRRcHT.js} +4 -4
  112. package/dist/assets/{TemplatesCollectionView-CpjEgT9v.js → TemplatesCollectionView-CShXKKou.js} +17 -17
  113. package/dist/assets/{TemplatesSearchView-Ddpn7Bwp.js → TemplatesSearchView-JPvTJqrT.js} +14 -14
  114. package/dist/assets/{TemplatesView-DRX4MxqG.js → TemplatesView-CkSiPY6S.js} +2 -2
  115. package/dist/assets/{TemplatesWorkflowView-DOl8Qqi3.js → TemplatesWorkflowView-mGRivOAH.js} +18 -18
  116. package/dist/assets/{TestRunDetailView-TQvUYMub.js → TestRunDetailView-d89WWvUc.js} +11 -11
  117. package/dist/assets/{TimeAgo-DxwwBGgJ.js → TimeAgo-BgFYQmEV.js} +2 -2
  118. package/dist/assets/{ToolsSelectorModal-D0Uim3wr.js → ToolsSelectorModal-BBdpzWrV.js} +11 -11
  119. package/dist/assets/{TriggerPanel-Bkka_-zL.js → TriggerPanel-Ccr_a4aS.js} +16 -16
  120. package/dist/assets/{VirtualSchema-498CQIM4.js → VirtualSchema-Ccpa4B_2.js} +14 -14
  121. package/dist/assets/VirtualSchema-wYsuagJ2.js +42 -0
  122. package/dist/assets/{VueMarkdown-Cpmboohi.js → VueMarkdown-wTXGt3en.js} +1 -1
  123. package/dist/assets/{WorkerView-D0MGMP-3.js → WorkerView-CjTDGSi1.js} +30 -30
  124. package/dist/assets/{WorkflowActivator-CQk3zJa2.js → WorkflowActivator-B4F8t0yo.js} +6 -6
  125. package/dist/assets/{WorkflowExecutionsInfoAccordion-DrB1HwtD.js → WorkflowExecutionsInfoAccordion-Cx2nzSuB.js} +6 -6
  126. package/dist/assets/{WorkflowExecutionsLandingPage-wZsE1MEB.js → WorkflowExecutionsLandingPage-DEJ2PbWE.js} +14 -14
  127. package/dist/assets/{WorkflowExecutionsPreview-DhEx7EQF.js → WorkflowExecutionsPreview-BMGRACSR.js} +17 -17
  128. package/dist/assets/{WorkflowExecutionsView-CDFxKpEl.js → WorkflowExecutionsView-Bqx9k5c-.js} +29 -29
  129. package/dist/assets/{WorkflowHistory-_npGuIvZ.js → WorkflowHistory-DmtAM9fi.js} +18 -18
  130. package/dist/assets/{WorkflowOnboardingView-DJmpaFOM.js → WorkflowOnboardingView-CIrmsRw4.js} +7 -7
  131. package/dist/assets/{WorkflowPreview-CVFW6eRL.js → WorkflowPreview-CYlgo0kD.js} +3 -3
  132. package/dist/assets/{WorkflowTagsDropdown-Dp6YkEZ3.js → WorkflowTagsDropdown-BsjxBGVH.js} +2 -2
  133. package/dist/assets/{WorkflowsView-B068TUtp.js → WorkflowsView-D-Je3mdl.js} +43 -43
  134. package/dist/assets/{_baseOrderBy-GjkKJVvF.js → _baseOrderBy-ZGuD_-iy.js} +2 -2
  135. package/dist/assets/{_initCloneObject-GPxNDW5O.js → _initCloneObject-DCLKwsUi.js} +2 -2
  136. package/dist/assets/{aiTemplatesStarterCollection.store-Ca9czXOC.js → aiTemplatesStarterCollection.store-NYOrgNlj.js} +4 -4
  137. package/dist/assets/{apiKeys.store-D60Aub0Q.js → apiKeys.store-DOf4JeD0.js} +2 -2
  138. package/dist/assets/{assistant.store-C0GxcpwT.js → assistant.store-Dy9VDomp.js} +4 -4
  139. package/dist/assets/{auth.eventBus-BD50qglP.js → auth.eventBus-Pqv7Rxfm.js} +1 -1
  140. package/dist/assets/{banners.store-COEGRZB2.js → banners.store-Rf3We1Q7.js} +3 -3
  141. package/dist/assets/{builder.store--AJ05qsa.js → builder.store-D_RDTxxI.js} +4 -4
  142. package/dist/assets/{chat.store-DwNzDu7-.js → chat.store-D4DOVQYU.js} +3 -3
  143. package/dist/assets/{chatPanel.store-DcSNy2dM.js → chatPanel.store-D3DaHq1z.js} +5 -5
  144. package/dist/assets/{cloudPlan.store-Dad6qPdn.js → cloudPlan.store-Ck9BLZl3.js} +3 -3
  145. package/dist/assets/{col-D5wesaQA.js → col-ebWyVZHF.js} +2 -2
  146. package/dist/assets/{constants-B6Jp7SZD.js → constants-DPB1SWiX.js} +4 -3
  147. package/dist/assets/{dataTable.store-DjA0BZm0.js → dataTable.store-BL0mLkMg.js} +3 -3
  148. package/dist/assets/{date-picker-ZPBpyB3m.js → date-picker-tQf2dntC.js} +2 -2
  149. package/dist/assets/{dialog-DJAwPy6j.js → dialog-jh_mITmm.js} +3 -3
  150. package/dist/assets/{evaluation.constants-CE1pFRXt.js → evaluation.constants-iqEXbNEl.js} +3 -3
  151. package/dist/assets/{executions.store-Di5hWapE.js → executions.store-D8Pn4Xih.js} +2 -2
  152. package/dist/assets/{externalSecrets.ee.store-DRAvYvQH.js → externalSecrets.ee.store-BDrodR7I.js} +3 -3
  153. package/dist/assets/{focusPanel.store-C5r79FXL.js → focusPanel.store-Cr5ipnc8.js} +4 -4
  154. package/dist/assets/{folders.store-CHmc_cIa.js → folders.store-D8nKs5-U.js} +2 -2
  155. package/dist/assets/{index-BPWWnUZx.js → index-DvVzFVr2.js} +91 -91
  156. package/dist/assets/{insights.store-CUBXm-KC.js → insights.store-6LgiVo3h.js} +3 -3
  157. package/dist/assets/{isEmpty-B9tt1d3-.js → isEmpty-GqdrxwqC.js} +21 -21
  158. package/dist/assets/{logStreaming.store-Cv3Kx61Q.js → logStreaming.store-I5_7h6od.js} +2 -2
  159. package/dist/assets/{mcp.store-BY003P3O.js → mcp.store-BiAizQEG.js} +2 -2
  160. package/dist/assets/{nodeCreator.store-CPxLvRpA.js → nodeCreator.store-CzS_snY4.js} +6 -6
  161. package/dist/assets/{nodeIcon-CwI12n1T.js → nodeIcon-B3eU2X78.js} +3 -3
  162. package/dist/assets/{nodeTransforms-E21OvGFn.js → nodeTransforms-DQR-xCjB.js} +2 -2
  163. package/dist/assets/{npsSurvey.store-DF2xZcCA.js → npsSurvey.store-CjDE24yH.js} +3 -3
  164. package/dist/assets/{orderBy-BD202wCl.js → orderBy-CKjuXXf2.js} +1 -1
  165. package/dist/assets/{overlay-Bil1NnPh.js → overlay-DBShc2HG.js} +2 -2
  166. package/dist/assets/{personalizedTemplatesV3.store-Bzf1Cn2b.js → personalizedTemplatesV3.store-uBVFSjod.js} +5 -5
  167. package/dist/assets/{pickBy-DhNfLbj0.js → pickBy-DWwTL0iT.js} +2 -2
  168. package/dist/assets/{radio-_dKLhwOP.js → radio-CHTjuYB5.js} +2 -2
  169. package/dist/assets/{readyToRun.store-2jju4pRU.js → readyToRun.store-CoBaUeeQ.js} +6 -6
  170. package/dist/assets/{readyToRunWorkflows.store-Bx_siYQA.js → readyToRunWorkflows.store-CP3ZQHOV.js} +5 -5
  171. package/dist/assets/{roles.store-CfxqweOK.js → roles.store-Cc8yV7SO.js} +3 -3
  172. package/dist/assets/{router-WNnUej-x.js → router-DqNrjUQe.js} +86 -86
  173. package/dist/assets/{schemaPreview.store-Do_fvTej.js → schemaPreview.store-CEyVQQFy.js} +3 -3
  174. package/dist/assets/{semver-CJFCetEf.js → semver-D94dSx-h.js} +2 -2
  175. package/dist/assets/{sourceControl.eventBus-Cvxq2KVt.js → sourceControl.eventBus-dh45B_eQ.js} +1 -1
  176. package/dist/assets/{src-RwnQoRPP.js → src-D5Ea_YL1.js} +33 -18
  177. package/dist/assets/{sso.store-BfZ0zC0E.js → sso.store-BhQFxFCm.js} +2 -2
  178. package/dist/assets/{table-8YZ1ENjX.js → table-C-rs8-jl.js} +3 -3
  179. package/dist/assets/{templateActions-Cs0Obyiy.js → templateActions-Diym8ovq.js} +5 -5
  180. package/dist/assets/{templateTransforms-wuELQNpD.js → templateTransforms-CKqUjP17.js} +1 -1
  181. package/dist/assets/{templates.store-C3DEfML8.js → templates.store-DW5zmCkZ.js} +4 -4
  182. package/dist/assets/{truncate-BmR9EyjG.js → truncate-Dmdv43Z9.js} +2203 -2203
  183. package/dist/assets/{uniqBy-DbOFAEPx.js → uniqBy-MFjFW8tb.js} +1 -1
  184. package/dist/assets/{usage.store-BQa0qHOj.js → usage.store-DhJeF5yr.js} +2 -2
  185. package/dist/assets/{useActions-CMJSyR7r.js → useActions-dKafQbOS.js} +3 -3
  186. package/dist/assets/{useBeforeUnload-DpKXUfN8.js → useBeforeUnload-Bmlb3xCA.js} +2 -2
  187. package/dist/assets/{useCanvasMapping-BqapVTrs.js → useCanvasMapping-B63N62Et.js} +17 -17
  188. package/dist/assets/{useCanvasOperations-Biw6mnUM.js → useCanvasOperations-CfQ4z3tY.js} +11 -11
  189. package/dist/assets/{useChatHubSidebarState-CZrP-mNo.js → useChatHubSidebarState-Dp-DKjJx.js} +2 -2
  190. package/dist/assets/{useClipboard-DvY5RseI.js → useClipboard-C_mhEUZu.js} +1 -1
  191. package/dist/assets/{useCommandBar-UBYl6Lds.js → useCommandBar-DaWt4vV_.js} +21 -21
  192. package/dist/assets/{useCredentialResolvers-PAhMLRo2.js → useCredentialResolvers--QtS2m8P.js} +4 -4
  193. package/dist/assets/{useCustomAgent-BRGYGAAN.js → useCustomAgent-CfCSJQhK.js} +7 -7
  194. package/dist/assets/{useDebounce-Cisb25yt.js → useDebounce-ChdrGmRj.js} +1 -1
  195. package/dist/assets/{useExecutionData-OVx1QXVF.js → useExecutionData-CW_KIDkd.js} +1 -1
  196. package/dist/assets/{useExecutionDebugging-B8KvDhkA.js → useExecutionDebugging-wiVN69Tq.js} +6 -6
  197. package/dist/assets/{useExecutionHelpers-DkOSl_iJ.js → useExecutionHelpers-BuuqwS9p.js} +3 -3
  198. package/dist/assets/{useImportCurlCommand-3YGPoLWh.js → useImportCurlCommand-13VIaPBb.js} +5 -5
  199. package/dist/assets/{useKeybindings-BcvGBvra.js → useKeybindings-Dy748tLi.js} +3 -3
  200. package/dist/assets/{useLogsTreeExpand-CbLhbpHd.js → useLogsTreeExpand-BEKrkc6w.js} +8 -8
  201. package/dist/assets/{useMcp-1Dma_uQx.js → useMcp-DybYgWvO.js} +2 -2
  202. package/dist/assets/{useMessage-DIJ5qCTv.js → useMessage-D9ClyiWR.js} +4 -4
  203. package/dist/assets/{usePageRedirectionHelper-D0ob2A1J.js → usePageRedirectionHelper-BniqTqk7.js} +4 -4
  204. package/dist/assets/{usePinnedData-B3-uxBtk.js → usePinnedData-oATErInx.js} +3 -3
  205. package/dist/assets/{usePushConnection-BA2hhsGP.js → usePushConnection-BucLZJhS.js} +11 -11
  206. package/dist/assets/{useRecentResources-C_Rg8cei.js → useRecentResources-Cswwj5RH.js} +6 -6
  207. package/dist/assets/{useRunWorkflow-nBr2MJkO.js → useRunWorkflow-CtXYGwm0.js} +7 -7
  208. package/dist/assets/{useSettingsItems-B7GpfNq3.js → useSettingsItems-Lsuyk-2F.js} +3 -3
  209. package/dist/assets/{useTelemetryContext-DHoBfjOQ.js → useTelemetryContext-TG-yqBI_.js} +1 -1
  210. package/dist/assets/{useWorkflowActivate-B3DYQS1P.js → useWorkflowActivate-Dzfi3i8Q.js} +6 -6
  211. package/dist/assets/{useWorkflowSaving-B1uc1ePR.js → useWorkflowSaving-BZmOLOu-.js} +6 -6
  212. package/dist/assets/{useWorkflowsCache-BNSc43ak.js → useWorkflowsCache-CUuFvP-s.js} +1 -1
  213. package/dist/assets/{userRoleProvisioning.store-DAStBpkv.js → userRoleProvisioning.store-D4bBWYXg.js} +2 -2
  214. package/dist/assets/{versions.store-BIIVPCEy.js → versions.store-UoNOsj3D.js} +3 -3
  215. package/dist/index.html +89 -89
  216. package/package.json +1 -1
  217. package/dist/assets/CollectionParameter-Ci_0m1Vk.js +0 -58
  218. package/dist/assets/DemoFooter-DuvjbD1c.js +0 -71
  219. package/dist/assets/LogsPanel-DZfIzuWL.js +0 -58
  220. package/dist/assets/VirtualSchema-B-AQEHOc.js +0 -42
@@ -1798,1477 +1798,6 @@ function createEventBus() {
1798
1798
  }
1799
1799
  };
1800
1800
  }
1801
- function isTaskAbortedMessage(msg) {
1802
- return msg.type === "text" && "aborted" in msg && msg.aborted;
1803
- }
1804
- function isWorkflowUpdatedMessage(msg) {
1805
- return msg.type === "workflow-updated";
1806
- }
1807
- function isToolMessage(msg) {
1808
- return msg.type === "tool";
1809
- }
1810
- function isThinkingGroupMessage(msg) {
1811
- return msg.type === "thinking-group";
1812
- }
1813
- var isBrowser = typeof document !== "undefined";
1814
- function isRouteComponent(component) {
1815
- return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
1816
- }
1817
- function isESModule(obj) {
1818
- return obj.__esModule || obj[Symbol.toStringTag] === "Module" || obj.default && isRouteComponent(obj.default);
1819
- }
1820
- var assign = Object.assign;
1821
- function applyToParams(fn, params) {
1822
- const newParams = {};
1823
- for (const key in params) {
1824
- const value = params[key];
1825
- newParams[key] = isArray$3(value) ? value.map(fn) : fn(value);
1826
- }
1827
- return newParams;
1828
- }
1829
- var noop = () => {};
1830
- var isArray$3 = Array.isArray;
1831
- var HASH_RE = /#/g;
1832
- var AMPERSAND_RE = /&/g;
1833
- var SLASH_RE = /\//g;
1834
- var EQUAL_RE = /=/g;
1835
- var IM_RE = /\?/g;
1836
- var PLUS_RE = /\+/g;
1837
- var ENC_BRACKET_OPEN_RE = /%5B/g;
1838
- var ENC_BRACKET_CLOSE_RE = /%5D/g;
1839
- var ENC_CARET_RE = /%5E/g;
1840
- var ENC_BACKTICK_RE = /%60/g;
1841
- var ENC_CURLY_OPEN_RE = /%7B/g;
1842
- var ENC_PIPE_RE = /%7C/g;
1843
- var ENC_CURLY_CLOSE_RE = /%7D/g;
1844
- var ENC_SPACE_RE = /%20/g;
1845
- function commonEncode(text) {
1846
- return encodeURI("" + text).replace(ENC_PIPE_RE, "|").replace(ENC_BRACKET_OPEN_RE, "[").replace(ENC_BRACKET_CLOSE_RE, "]");
1847
- }
1848
- function encodeHash(text) {
1849
- return commonEncode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
1850
- }
1851
- function encodeQueryValue(text) {
1852
- return commonEncode(text).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
1853
- }
1854
- function encodeQueryKey(text) {
1855
- return encodeQueryValue(text).replace(EQUAL_RE, "%3D");
1856
- }
1857
- function encodePath(text) {
1858
- return commonEncode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F");
1859
- }
1860
- function encodeParam(text) {
1861
- return text == null ? "" : encodePath(text).replace(SLASH_RE, "%2F");
1862
- }
1863
- function decode(text) {
1864
- try {
1865
- return decodeURIComponent("" + text);
1866
- } catch (err) {}
1867
- return "" + text;
1868
- }
1869
- var TRAILING_SLASH_RE = /\/$/;
1870
- var removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, "");
1871
- function parseURL(parseQuery$1, location$1, currentLocation = "/") {
1872
- let path, query = {}, searchString = "", hash = "";
1873
- const hashPos = location$1.indexOf("#");
1874
- let searchPos = location$1.indexOf("?");
1875
- if (hashPos < searchPos && hashPos >= 0) searchPos = -1;
1876
- if (searchPos > -1) {
1877
- path = location$1.slice(0, searchPos);
1878
- searchString = location$1.slice(searchPos + 1, hashPos > -1 ? hashPos : location$1.length);
1879
- query = parseQuery$1(searchString);
1880
- }
1881
- if (hashPos > -1) {
1882
- path = path || location$1.slice(0, hashPos);
1883
- hash = location$1.slice(hashPos, location$1.length);
1884
- }
1885
- path = resolveRelativePath(path != null ? path : location$1, currentLocation);
1886
- return {
1887
- fullPath: path + (searchString && "?") + searchString + hash,
1888
- path,
1889
- query,
1890
- hash: decode(hash)
1891
- };
1892
- }
1893
- function stringifyURL(stringifyQuery$1, location$1) {
1894
- const query = location$1.query ? stringifyQuery$1(location$1.query) : "";
1895
- return location$1.path + (query && "?") + query + (location$1.hash || "");
1896
- }
1897
- function stripBase(pathname, base) {
1898
- if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) return pathname;
1899
- return pathname.slice(base.length) || "/";
1900
- }
1901
- function isSameRouteLocation(stringifyQuery$1, a, b) {
1902
- const aLastIndex = a.matched.length - 1;
1903
- const bLastIndex = b.matched.length - 1;
1904
- return aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery$1(a.query) === stringifyQuery$1(b.query) && a.hash === b.hash;
1905
- }
1906
- function isSameRouteRecord(a, b) {
1907
- return (a.aliasOf || a) === (b.aliasOf || b);
1908
- }
1909
- function isSameRouteLocationParams(a, b) {
1910
- if (Object.keys(a).length !== Object.keys(b).length) return false;
1911
- for (const key in a) if (!isSameRouteLocationParamsValue(a[key], b[key])) return false;
1912
- return true;
1913
- }
1914
- function isSameRouteLocationParamsValue(a, b) {
1915
- return isArray$3(a) ? isEquivalentArray(a, b) : isArray$3(b) ? isEquivalentArray(b, a) : a === b;
1916
- }
1917
- function isEquivalentArray(a, b) {
1918
- return isArray$3(b) ? a.length === b.length && a.every((value, i$1) => value === b[i$1]) : a.length === 1 && a[0] === b;
1919
- }
1920
- function resolveRelativePath(to, from) {
1921
- if (to.startsWith("/")) return to;
1922
- if (!to) return from;
1923
- const fromSegments = from.split("/");
1924
- const toSegments = to.split("/");
1925
- const lastToSegment = toSegments[toSegments.length - 1];
1926
- if (lastToSegment === ".." || lastToSegment === ".") toSegments.push("");
1927
- let position = fromSegments.length - 1;
1928
- let toPosition;
1929
- let segment;
1930
- for (toPosition = 0; toPosition < toSegments.length; toPosition++) {
1931
- segment = toSegments[toPosition];
1932
- if (segment === ".") continue;
1933
- if (segment === "..") {
1934
- if (position > 1) position--;
1935
- } else break;
1936
- }
1937
- return fromSegments.slice(0, position).join("/") + "/" + toSegments.slice(toPosition).join("/");
1938
- }
1939
- var START_LOCATION_NORMALIZED = {
1940
- path: "/",
1941
- name: void 0,
1942
- params: {},
1943
- query: {},
1944
- hash: "",
1945
- fullPath: "/",
1946
- matched: [],
1947
- meta: {},
1948
- redirectedFrom: void 0
1949
- };
1950
- var NavigationType;
1951
- (function(NavigationType$1) {
1952
- NavigationType$1["pop"] = "pop";
1953
- NavigationType$1["push"] = "push";
1954
- })(NavigationType || (NavigationType = {}));
1955
- var NavigationDirection;
1956
- (function(NavigationDirection$1) {
1957
- NavigationDirection$1["back"] = "back";
1958
- NavigationDirection$1["forward"] = "forward";
1959
- NavigationDirection$1["unknown"] = "";
1960
- })(NavigationDirection || (NavigationDirection = {}));
1961
- function normalizeBase(base) {
1962
- if (!base) if (isBrowser) {
1963
- const baseEl = document.querySelector("base");
1964
- base = baseEl && baseEl.getAttribute("href") || "/";
1965
- base = base.replace(/^\w+:\/\/[^\/]+/, "");
1966
- } else base = "/";
1967
- if (base[0] !== "/" && base[0] !== "#") base = "/" + base;
1968
- return removeTrailingSlash(base);
1969
- }
1970
- var BEFORE_HASH_RE = /^[^#]+#/;
1971
- function createHref(base, location$1) {
1972
- return base.replace(BEFORE_HASH_RE, "#") + location$1;
1973
- }
1974
- function getElementPosition(el, offset) {
1975
- const docRect = document.documentElement.getBoundingClientRect();
1976
- const elRect = el.getBoundingClientRect();
1977
- return {
1978
- behavior: offset.behavior,
1979
- left: elRect.left - docRect.left - (offset.left || 0),
1980
- top: elRect.top - docRect.top - (offset.top || 0)
1981
- };
1982
- }
1983
- var computeScrollPosition = () => ({
1984
- left: window.scrollX,
1985
- top: window.scrollY
1986
- });
1987
- function scrollToPosition(position) {
1988
- let scrollToOptions;
1989
- if ("el" in position) {
1990
- const positionEl = position.el;
1991
- const isIdSelector = typeof positionEl === "string" && positionEl.startsWith("#");
1992
- const el = typeof positionEl === "string" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;
1993
- if (!el) return;
1994
- scrollToOptions = getElementPosition(el, position);
1995
- } else scrollToOptions = position;
1996
- if ("scrollBehavior" in document.documentElement.style) window.scrollTo(scrollToOptions);
1997
- else window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);
1998
- }
1999
- function getScrollKey(path, delta) {
2000
- return (history.state ? history.state.position - delta : -1) + path;
2001
- }
2002
- var scrollPositions = /* @__PURE__ */ new Map();
2003
- function saveScrollPosition(key, scrollPosition) {
2004
- scrollPositions.set(key, scrollPosition);
2005
- }
2006
- function getSavedScrollPosition(key) {
2007
- const scroll = scrollPositions.get(key);
2008
- scrollPositions.delete(key);
2009
- return scroll;
2010
- }
2011
- var createBaseLocation = () => location.protocol + "//" + location.host;
2012
- function createCurrentLocation(base, location$1) {
2013
- const { pathname, search, hash } = location$1;
2014
- const hashPos = base.indexOf("#");
2015
- if (hashPos > -1) {
2016
- let slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;
2017
- let pathFromHash = hash.slice(slicePos);
2018
- if (pathFromHash[0] !== "/") pathFromHash = "/" + pathFromHash;
2019
- return stripBase(pathFromHash, "");
2020
- }
2021
- return stripBase(pathname, base) + search + hash;
2022
- }
2023
- function useHistoryListeners(base, historyState, currentLocation, replace) {
2024
- let listeners = [];
2025
- let teardowns = [];
2026
- let pauseState = null;
2027
- const popStateHandler = ({ state }) => {
2028
- const to = createCurrentLocation(base, location);
2029
- const from = currentLocation.value;
2030
- const fromState = historyState.value;
2031
- let delta = 0;
2032
- if (state) {
2033
- currentLocation.value = to;
2034
- historyState.value = state;
2035
- if (pauseState && pauseState === from) {
2036
- pauseState = null;
2037
- return;
2038
- }
2039
- delta = fromState ? state.position - fromState.position : 0;
2040
- } else replace(to);
2041
- listeners.forEach((listener) => {
2042
- listener(currentLocation.value, from, {
2043
- delta,
2044
- type: NavigationType.pop,
2045
- direction: delta ? delta > 0 ? NavigationDirection.forward : NavigationDirection.back : NavigationDirection.unknown
2046
- });
2047
- });
2048
- };
2049
- function pauseListeners() {
2050
- pauseState = currentLocation.value;
2051
- }
2052
- function listen(callback) {
2053
- listeners.push(callback);
2054
- const teardown = () => {
2055
- const index = listeners.indexOf(callback);
2056
- if (index > -1) listeners.splice(index, 1);
2057
- };
2058
- teardowns.push(teardown);
2059
- return teardown;
2060
- }
2061
- function beforeUnloadListener() {
2062
- const { history: history$1 } = window;
2063
- if (!history$1.state) return;
2064
- history$1.replaceState(assign({}, history$1.state, { scroll: computeScrollPosition() }), "");
2065
- }
2066
- function destroy() {
2067
- for (const teardown of teardowns) teardown();
2068
- teardowns = [];
2069
- window.removeEventListener("popstate", popStateHandler);
2070
- window.removeEventListener("beforeunload", beforeUnloadListener);
2071
- }
2072
- window.addEventListener("popstate", popStateHandler);
2073
- window.addEventListener("beforeunload", beforeUnloadListener, { passive: true });
2074
- return {
2075
- pauseListeners,
2076
- listen,
2077
- destroy
2078
- };
2079
- }
2080
- function buildState(back, current, forward, replaced = false, computeScroll = false) {
2081
- return {
2082
- back,
2083
- current,
2084
- forward,
2085
- replaced,
2086
- position: window.history.length,
2087
- scroll: computeScroll ? computeScrollPosition() : null
2088
- };
2089
- }
2090
- function useHistoryStateNavigation(base) {
2091
- const { history: history$1, location: location$1 } = window;
2092
- const currentLocation = { value: createCurrentLocation(base, location$1) };
2093
- const historyState = { value: history$1.state };
2094
- if (!historyState.value) changeLocation(currentLocation.value, {
2095
- back: null,
2096
- current: currentLocation.value,
2097
- forward: null,
2098
- position: history$1.length - 1,
2099
- replaced: true,
2100
- scroll: null
2101
- }, true);
2102
- function changeLocation(to, state, replace$1) {
2103
- const hashIndex = base.indexOf("#");
2104
- const url = hashIndex > -1 ? (location$1.host && document.querySelector("base") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to;
2105
- try {
2106
- history$1[replace$1 ? "replaceState" : "pushState"](state, "", url);
2107
- historyState.value = state;
2108
- } catch (err) {
2109
- console.error(err);
2110
- location$1[replace$1 ? "replace" : "assign"](url);
2111
- }
2112
- }
2113
- function replace(to, data) {
2114
- changeLocation(to, assign({}, history$1.state, buildState(historyState.value.back, to, historyState.value.forward, true), data, { position: historyState.value.position }), true);
2115
- currentLocation.value = to;
2116
- }
2117
- function push(to, data) {
2118
- const currentState = assign({}, historyState.value, history$1.state, {
2119
- forward: to,
2120
- scroll: computeScrollPosition()
2121
- });
2122
- changeLocation(currentState.current, currentState, true);
2123
- changeLocation(to, assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data), false);
2124
- currentLocation.value = to;
2125
- }
2126
- return {
2127
- location: currentLocation,
2128
- state: historyState,
2129
- push,
2130
- replace
2131
- };
2132
- }
2133
- function createWebHistory(base) {
2134
- base = normalizeBase(base);
2135
- const historyNavigation = useHistoryStateNavigation(base);
2136
- const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);
2137
- function go(delta, triggerListeners = true) {
2138
- if (!triggerListeners) historyListeners.pauseListeners();
2139
- history.go(delta);
2140
- }
2141
- const routerHistory = assign({
2142
- location: "",
2143
- base,
2144
- go,
2145
- createHref: createHref.bind(null, base)
2146
- }, historyNavigation, historyListeners);
2147
- Object.defineProperty(routerHistory, "location", {
2148
- enumerable: true,
2149
- get: () => historyNavigation.location.value
2150
- });
2151
- Object.defineProperty(routerHistory, "state", {
2152
- enumerable: true,
2153
- get: () => historyNavigation.state.value
2154
- });
2155
- return routerHistory;
2156
- }
2157
- function isRouteLocation(route) {
2158
- return typeof route === "string" || route && typeof route === "object";
2159
- }
2160
- function isRouteName(name) {
2161
- return typeof name === "string" || typeof name === "symbol";
2162
- }
2163
- var NavigationFailureSymbol = Symbol("");
2164
- var NavigationFailureType;
2165
- (function(NavigationFailureType$1) {
2166
- NavigationFailureType$1[NavigationFailureType$1["aborted"] = 4] = "aborted";
2167
- NavigationFailureType$1[NavigationFailureType$1["cancelled"] = 8] = "cancelled";
2168
- NavigationFailureType$1[NavigationFailureType$1["duplicated"] = 16] = "duplicated";
2169
- })(NavigationFailureType || (NavigationFailureType = {}));
2170
- function createRouterError(type, params) {
2171
- return assign(/* @__PURE__ */ new Error(), {
2172
- type,
2173
- [NavigationFailureSymbol]: true
2174
- }, params);
2175
- }
2176
- function isNavigationFailure(error, type) {
2177
- return error instanceof Error && NavigationFailureSymbol in error && (type == null || !!(error.type & type));
2178
- }
2179
- var BASE_PARAM_PATTERN = "[^/]+?";
2180
- var BASE_PATH_PARSER_OPTIONS = {
2181
- sensitive: false,
2182
- strict: false,
2183
- start: true,
2184
- end: true
2185
- };
2186
- var REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g;
2187
- function tokensToParser(segments, extraOptions) {
2188
- const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);
2189
- const score = [];
2190
- let pattern = options.start ? "^" : "";
2191
- const keys = [];
2192
- for (const segment of segments) {
2193
- const segmentScores = segment.length ? [] : [90];
2194
- if (options.strict && !segment.length) pattern += "/";
2195
- for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {
2196
- const token = segment[tokenIndex];
2197
- let subSegmentScore = 40 + (options.sensitive ? .25 : 0);
2198
- if (token.type === 0) {
2199
- if (!tokenIndex) pattern += "/";
2200
- pattern += token.value.replace(REGEX_CHARS_RE, "\\$&");
2201
- subSegmentScore += 40;
2202
- } else if (token.type === 1) {
2203
- const { value, repeatable, optional, regexp } = token;
2204
- keys.push({
2205
- name: value,
2206
- repeatable,
2207
- optional
2208
- });
2209
- const re$1 = regexp ? regexp : BASE_PARAM_PATTERN;
2210
- if (re$1 !== BASE_PARAM_PATTERN) {
2211
- subSegmentScore += 10;
2212
- try {
2213
- `${re$1}`;
2214
- } catch (err) {
2215
- throw new Error(`Invalid custom RegExp for param "${value}" (${re$1}): ` + err.message);
2216
- }
2217
- }
2218
- let subPattern = repeatable ? `((?:${re$1})(?:/(?:${re$1}))*)` : `(${re$1})`;
2219
- if (!tokenIndex) subPattern = optional && segment.length < 2 ? `(?:/${subPattern})` : "/" + subPattern;
2220
- if (optional) subPattern += "?";
2221
- pattern += subPattern;
2222
- subSegmentScore += 20;
2223
- if (optional) subSegmentScore += -8;
2224
- if (repeatable) subSegmentScore += -20;
2225
- if (re$1 === ".*") subSegmentScore += -50;
2226
- }
2227
- segmentScores.push(subSegmentScore);
2228
- }
2229
- score.push(segmentScores);
2230
- }
2231
- if (options.strict && options.end) {
2232
- const i$1 = score.length - 1;
2233
- score[i$1][score[i$1].length - 1] += .7000000000000001;
2234
- }
2235
- if (!options.strict) pattern += "/?";
2236
- if (options.end) pattern += "$";
2237
- else if (options.strict && !pattern.endsWith("/")) pattern += "(?:/|$)";
2238
- const re = new RegExp(pattern, options.sensitive ? "" : "i");
2239
- function parse(path) {
2240
- const match = path.match(re);
2241
- const params = {};
2242
- if (!match) return null;
2243
- for (let i$1 = 1; i$1 < match.length; i$1++) {
2244
- const value = match[i$1] || "";
2245
- const key = keys[i$1 - 1];
2246
- params[key.name] = value && key.repeatable ? value.split("/") : value;
2247
- }
2248
- return params;
2249
- }
2250
- function stringify(params) {
2251
- let path = "";
2252
- let avoidDuplicatedSlash = false;
2253
- for (const segment of segments) {
2254
- if (!avoidDuplicatedSlash || !path.endsWith("/")) path += "/";
2255
- avoidDuplicatedSlash = false;
2256
- for (const token of segment) if (token.type === 0) path += token.value;
2257
- else if (token.type === 1) {
2258
- const { value, repeatable, optional } = token;
2259
- const param = value in params ? params[value] : "";
2260
- if (isArray$3(param) && !repeatable) throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`);
2261
- const text = isArray$3(param) ? param.join("/") : param;
2262
- if (!text) if (optional) {
2263
- if (segment.length < 2) if (path.endsWith("/")) path = path.slice(0, -1);
2264
- else avoidDuplicatedSlash = true;
2265
- } else throw new Error(`Missing required param "${value}"`);
2266
- path += text;
2267
- }
2268
- }
2269
- return path || "/";
2270
- }
2271
- return {
2272
- re,
2273
- score,
2274
- keys,
2275
- parse,
2276
- stringify
2277
- };
2278
- }
2279
- function compareScoreArray(a, b) {
2280
- let i$1 = 0;
2281
- while (i$1 < a.length && i$1 < b.length) {
2282
- const diff = b[i$1] - a[i$1];
2283
- if (diff) return diff;
2284
- i$1++;
2285
- }
2286
- if (a.length < b.length) return a.length === 1 && a[0] === 80 ? -1 : 1;
2287
- else if (a.length > b.length) return b.length === 1 && b[0] === 80 ? 1 : -1;
2288
- return 0;
2289
- }
2290
- function comparePathParserScore(a, b) {
2291
- let i$1 = 0;
2292
- const aScore = a.score;
2293
- const bScore = b.score;
2294
- while (i$1 < aScore.length && i$1 < bScore.length) {
2295
- const comp = compareScoreArray(aScore[i$1], bScore[i$1]);
2296
- if (comp) return comp;
2297
- i$1++;
2298
- }
2299
- if (Math.abs(bScore.length - aScore.length) === 1) {
2300
- if (isLastScoreNegative(aScore)) return 1;
2301
- if (isLastScoreNegative(bScore)) return -1;
2302
- }
2303
- return bScore.length - aScore.length;
2304
- }
2305
- function isLastScoreNegative(score) {
2306
- const last = score[score.length - 1];
2307
- return score.length > 0 && last[last.length - 1] < 0;
2308
- }
2309
- var ROOT_TOKEN = {
2310
- type: 0,
2311
- value: ""
2312
- };
2313
- var VALID_PARAM_RE = /[a-zA-Z0-9_]/;
2314
- function tokenizePath(path) {
2315
- if (!path) return [[]];
2316
- if (path === "/") return [[ROOT_TOKEN]];
2317
- if (!path.startsWith("/")) throw new Error(`Invalid path "${path}"`);
2318
- function crash(message) {
2319
- throw new Error(`ERR (${state})/"${buffer}": ${message}`);
2320
- }
2321
- let state = 0;
2322
- let previousState = state;
2323
- const tokens = [];
2324
- let segment;
2325
- function finalizeSegment() {
2326
- if (segment) tokens.push(segment);
2327
- segment = [];
2328
- }
2329
- let i$1 = 0;
2330
- let char;
2331
- let buffer = "";
2332
- let customRe = "";
2333
- function consumeBuffer() {
2334
- if (!buffer) return;
2335
- if (state === 0) segment.push({
2336
- type: 0,
2337
- value: buffer
2338
- });
2339
- else if (state === 1 || state === 2 || state === 3) {
2340
- if (segment.length > 1 && (char === "*" || char === "+")) crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);
2341
- segment.push({
2342
- type: 1,
2343
- value: buffer,
2344
- regexp: customRe,
2345
- repeatable: char === "*" || char === "+",
2346
- optional: char === "*" || char === "?"
2347
- });
2348
- } else crash("Invalid state to consume buffer");
2349
- buffer = "";
2350
- }
2351
- function addCharToBuffer() {
2352
- buffer += char;
2353
- }
2354
- while (i$1 < path.length) {
2355
- char = path[i$1++];
2356
- if (char === "\\" && state !== 2) {
2357
- previousState = state;
2358
- state = 4;
2359
- continue;
2360
- }
2361
- switch (state) {
2362
- case 0:
2363
- if (char === "/") {
2364
- if (buffer) consumeBuffer();
2365
- finalizeSegment();
2366
- } else if (char === ":") {
2367
- consumeBuffer();
2368
- state = 1;
2369
- } else addCharToBuffer();
2370
- break;
2371
- case 4:
2372
- addCharToBuffer();
2373
- state = previousState;
2374
- break;
2375
- case 1:
2376
- if (char === "(") state = 2;
2377
- else if (VALID_PARAM_RE.test(char)) addCharToBuffer();
2378
- else {
2379
- consumeBuffer();
2380
- state = 0;
2381
- if (char !== "*" && char !== "?" && char !== "+") i$1--;
2382
- }
2383
- break;
2384
- case 2:
2385
- if (char === ")") if (customRe[customRe.length - 1] == "\\") customRe = customRe.slice(0, -1) + char;
2386
- else state = 3;
2387
- else customRe += char;
2388
- break;
2389
- case 3:
2390
- consumeBuffer();
2391
- state = 0;
2392
- if (char !== "*" && char !== "?" && char !== "+") i$1--;
2393
- customRe = "";
2394
- break;
2395
- default:
2396
- crash("Unknown state");
2397
- break;
2398
- }
2399
- }
2400
- if (state === 2) crash(`Unfinished custom RegExp for param "${buffer}"`);
2401
- consumeBuffer();
2402
- finalizeSegment();
2403
- return tokens;
2404
- }
2405
- function createRouteRecordMatcher(record, parent, options) {
2406
- const matcher = assign(tokensToParser(tokenizePath(record.path), options), {
2407
- record,
2408
- parent,
2409
- children: [],
2410
- alias: []
2411
- });
2412
- if (parent) {
2413
- if (!matcher.record.aliasOf === !parent.record.aliasOf) parent.children.push(matcher);
2414
- }
2415
- return matcher;
2416
- }
2417
- function createRouterMatcher(routes, globalOptions) {
2418
- const matchers = [];
2419
- const matcherMap = /* @__PURE__ */ new Map();
2420
- globalOptions = mergeOptions({
2421
- strict: false,
2422
- end: true,
2423
- sensitive: false
2424
- }, globalOptions);
2425
- function getRecordMatcher(name) {
2426
- return matcherMap.get(name);
2427
- }
2428
- function addRoute(record, parent, originalRecord) {
2429
- const isRootAdd = !originalRecord;
2430
- const mainNormalizedRecord = normalizeRouteRecord(record);
2431
- mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;
2432
- const options = mergeOptions(globalOptions, record);
2433
- const normalizedRecords = [mainNormalizedRecord];
2434
- if ("alias" in record) {
2435
- const aliases = typeof record.alias === "string" ? [record.alias] : record.alias;
2436
- for (const alias of aliases) normalizedRecords.push(normalizeRouteRecord(assign({}, mainNormalizedRecord, {
2437
- components: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,
2438
- path: alias,
2439
- aliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord
2440
- })));
2441
- }
2442
- let matcher;
2443
- let originalMatcher;
2444
- for (const normalizedRecord of normalizedRecords) {
2445
- const { path } = normalizedRecord;
2446
- if (parent && path[0] !== "/") {
2447
- const parentPath = parent.record.path;
2448
- const connectingSlash = parentPath[parentPath.length - 1] === "/" ? "" : "/";
2449
- normalizedRecord.path = parent.record.path + (path && connectingSlash + path);
2450
- }
2451
- matcher = createRouteRecordMatcher(normalizedRecord, parent, options);
2452
- if (originalRecord) originalRecord.alias.push(matcher);
2453
- else {
2454
- originalMatcher = originalMatcher || matcher;
2455
- if (originalMatcher !== matcher) originalMatcher.alias.push(matcher);
2456
- if (isRootAdd && record.name && !isAliasRecord(matcher)) removeRoute(record.name);
2457
- }
2458
- if (isMatchable(matcher)) insertMatcher(matcher);
2459
- if (mainNormalizedRecord.children) {
2460
- const children = mainNormalizedRecord.children;
2461
- for (let i$1 = 0; i$1 < children.length; i$1++) addRoute(children[i$1], matcher, originalRecord && originalRecord.children[i$1]);
2462
- }
2463
- originalRecord = originalRecord || matcher;
2464
- }
2465
- return originalMatcher ? () => {
2466
- removeRoute(originalMatcher);
2467
- } : noop;
2468
- }
2469
- function removeRoute(matcherRef) {
2470
- if (isRouteName(matcherRef)) {
2471
- const matcher = matcherMap.get(matcherRef);
2472
- if (matcher) {
2473
- matcherMap.delete(matcherRef);
2474
- matchers.splice(matchers.indexOf(matcher), 1);
2475
- matcher.children.forEach(removeRoute);
2476
- matcher.alias.forEach(removeRoute);
2477
- }
2478
- } else {
2479
- const index = matchers.indexOf(matcherRef);
2480
- if (index > -1) {
2481
- matchers.splice(index, 1);
2482
- if (matcherRef.record.name) matcherMap.delete(matcherRef.record.name);
2483
- matcherRef.children.forEach(removeRoute);
2484
- matcherRef.alias.forEach(removeRoute);
2485
- }
2486
- }
2487
- }
2488
- function getRoutes() {
2489
- return matchers;
2490
- }
2491
- function insertMatcher(matcher) {
2492
- const index = findInsertionIndex(matcher, matchers);
2493
- matchers.splice(index, 0, matcher);
2494
- if (matcher.record.name && !isAliasRecord(matcher)) matcherMap.set(matcher.record.name, matcher);
2495
- }
2496
- function resolve(location$1, currentLocation) {
2497
- let matcher;
2498
- let params = {};
2499
- let path;
2500
- let name;
2501
- if ("name" in location$1 && location$1.name) {
2502
- matcher = matcherMap.get(location$1.name);
2503
- if (!matcher) throw createRouterError(1, { location: location$1 });
2504
- name = matcher.record.name;
2505
- params = assign(paramsFromLocation(currentLocation.params, matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)), location$1.params && paramsFromLocation(location$1.params, matcher.keys.map((k) => k.name)));
2506
- path = matcher.stringify(params);
2507
- } else if (location$1.path != null) {
2508
- path = location$1.path;
2509
- matcher = matchers.find((m) => m.re.test(path));
2510
- if (matcher) {
2511
- params = matcher.parse(path);
2512
- name = matcher.record.name;
2513
- }
2514
- } else {
2515
- matcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path));
2516
- if (!matcher) throw createRouterError(1, {
2517
- location: location$1,
2518
- currentLocation
2519
- });
2520
- name = matcher.record.name;
2521
- params = assign({}, currentLocation.params, location$1.params);
2522
- path = matcher.stringify(params);
2523
- }
2524
- const matched = [];
2525
- let parentMatcher = matcher;
2526
- while (parentMatcher) {
2527
- matched.unshift(parentMatcher.record);
2528
- parentMatcher = parentMatcher.parent;
2529
- }
2530
- return {
2531
- name,
2532
- path,
2533
- params,
2534
- matched,
2535
- meta: mergeMetaFields(matched)
2536
- };
2537
- }
2538
- routes.forEach((route) => addRoute(route));
2539
- function clearRoutes() {
2540
- matchers.length = 0;
2541
- matcherMap.clear();
2542
- }
2543
- return {
2544
- addRoute,
2545
- resolve,
2546
- removeRoute,
2547
- clearRoutes,
2548
- getRoutes,
2549
- getRecordMatcher
2550
- };
2551
- }
2552
- function paramsFromLocation(params, keys) {
2553
- const newParams = {};
2554
- for (const key of keys) if (key in params) newParams[key] = params[key];
2555
- return newParams;
2556
- }
2557
- function normalizeRouteRecord(record) {
2558
- const normalized = {
2559
- path: record.path,
2560
- redirect: record.redirect,
2561
- name: record.name,
2562
- meta: record.meta || {},
2563
- aliasOf: record.aliasOf,
2564
- beforeEnter: record.beforeEnter,
2565
- props: normalizeRecordProps(record),
2566
- children: record.children || [],
2567
- instances: {},
2568
- leaveGuards: /* @__PURE__ */ new Set(),
2569
- updateGuards: /* @__PURE__ */ new Set(),
2570
- enterCallbacks: {},
2571
- components: "components" in record ? record.components || null : record.component && { default: record.component }
2572
- };
2573
- Object.defineProperty(normalized, "mods", { value: {} });
2574
- return normalized;
2575
- }
2576
- function normalizeRecordProps(record) {
2577
- const propsObject = {};
2578
- const props = record.props || false;
2579
- if ("component" in record) propsObject.default = props;
2580
- else for (const name in record.components) propsObject[name] = typeof props === "object" ? props[name] : props;
2581
- return propsObject;
2582
- }
2583
- function isAliasRecord(record) {
2584
- while (record) {
2585
- if (record.record.aliasOf) return true;
2586
- record = record.parent;
2587
- }
2588
- return false;
2589
- }
2590
- function mergeMetaFields(matched) {
2591
- return matched.reduce((meta, record) => assign(meta, record.meta), {});
2592
- }
2593
- function mergeOptions(defaults, partialOptions) {
2594
- const options = {};
2595
- for (const key in defaults) options[key] = key in partialOptions ? partialOptions[key] : defaults[key];
2596
- return options;
2597
- }
2598
- function findInsertionIndex(matcher, matchers) {
2599
- let lower = 0;
2600
- let upper = matchers.length;
2601
- while (lower !== upper) {
2602
- const mid = lower + upper >> 1;
2603
- if (comparePathParserScore(matcher, matchers[mid]) < 0) upper = mid;
2604
- else lower = mid + 1;
2605
- }
2606
- const insertionAncestor = getInsertionAncestor(matcher);
2607
- if (insertionAncestor) upper = matchers.lastIndexOf(insertionAncestor, upper - 1);
2608
- return upper;
2609
- }
2610
- function getInsertionAncestor(matcher) {
2611
- let ancestor = matcher;
2612
- while (ancestor = ancestor.parent) if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) return ancestor;
2613
- }
2614
- function isMatchable({ record }) {
2615
- return !!(record.name || record.components && Object.keys(record.components).length || record.redirect);
2616
- }
2617
- function parseQuery(search) {
2618
- const query = {};
2619
- if (search === "" || search === "?") return query;
2620
- const searchParams = (search[0] === "?" ? search.slice(1) : search).split("&");
2621
- for (let i$1 = 0; i$1 < searchParams.length; ++i$1) {
2622
- const searchParam = searchParams[i$1].replace(PLUS_RE, " ");
2623
- const eqPos = searchParam.indexOf("=");
2624
- const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));
2625
- const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));
2626
- if (key in query) {
2627
- let currentValue = query[key];
2628
- if (!isArray$3(currentValue)) currentValue = query[key] = [currentValue];
2629
- currentValue.push(value);
2630
- } else query[key] = value;
2631
- }
2632
- return query;
2633
- }
2634
- function stringifyQuery(query) {
2635
- let search = "";
2636
- for (let key in query) {
2637
- const value = query[key];
2638
- key = encodeQueryKey(key);
2639
- if (value == null) {
2640
- if (value !== void 0) search += (search.length ? "&" : "") + key;
2641
- continue;
2642
- }
2643
- (isArray$3(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)]).forEach((value$1) => {
2644
- if (value$1 !== void 0) {
2645
- search += (search.length ? "&" : "") + key;
2646
- if (value$1 != null) search += "=" + value$1;
2647
- }
2648
- });
2649
- }
2650
- return search;
2651
- }
2652
- function normalizeQuery(query) {
2653
- const normalizedQuery = {};
2654
- for (const key in query) {
2655
- const value = query[key];
2656
- if (value !== void 0) normalizedQuery[key] = isArray$3(value) ? value.map((v) => v == null ? null : "" + v) : value == null ? value : "" + value;
2657
- }
2658
- return normalizedQuery;
2659
- }
2660
- var matchedRouteKey = Symbol("");
2661
- var viewDepthKey = Symbol("");
2662
- var routerKey = Symbol("");
2663
- var routeLocationKey = Symbol("");
2664
- var routerViewLocationKey = Symbol("");
2665
- function useCallbacks() {
2666
- let handlers$1 = [];
2667
- function add(handler) {
2668
- handlers$1.push(handler);
2669
- return () => {
2670
- const i$1 = handlers$1.indexOf(handler);
2671
- if (i$1 > -1) handlers$1.splice(i$1, 1);
2672
- };
2673
- }
2674
- function reset() {
2675
- handlers$1 = [];
2676
- }
2677
- return {
2678
- add,
2679
- list: () => handlers$1.slice(),
2680
- reset
2681
- };
2682
- }
2683
- function registerGuard(record, name, guard) {
2684
- const removeFromList = () => {
2685
- record[name].delete(guard);
2686
- };
2687
- onUnmounted(removeFromList);
2688
- onDeactivated(removeFromList);
2689
- onActivated(() => {
2690
- record[name].add(guard);
2691
- });
2692
- record[name].add(guard);
2693
- }
2694
- function onBeforeRouteLeave(leaveGuard) {
2695
- const activeRecord = inject(matchedRouteKey, {}).value;
2696
- if (!activeRecord) return;
2697
- registerGuard(activeRecord, "leaveGuards", leaveGuard);
2698
- }
2699
- function guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) {
2700
- const enterCallbackArray = record && (record.enterCallbacks[name] = record.enterCallbacks[name] || []);
2701
- return () => new Promise((resolve, reject) => {
2702
- const next = (valid) => {
2703
- if (valid === false) reject(createRouterError(4, {
2704
- from,
2705
- to
2706
- }));
2707
- else if (valid instanceof Error) reject(valid);
2708
- else if (isRouteLocation(valid)) reject(createRouterError(2, {
2709
- from: to,
2710
- to: valid
2711
- }));
2712
- else {
2713
- if (enterCallbackArray && record.enterCallbacks[name] === enterCallbackArray && typeof valid === "function") enterCallbackArray.push(valid);
2714
- resolve();
2715
- }
2716
- };
2717
- const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, next));
2718
- let guardCall = Promise.resolve(guardReturn);
2719
- if (guard.length < 3) guardCall = guardCall.then(next);
2720
- guardCall.catch((err) => reject(err));
2721
- });
2722
- }
2723
- function extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) {
2724
- const guards = [];
2725
- for (const record of matched) for (const name in record.components) {
2726
- let rawComponent = record.components[name];
2727
- if (guardType !== "beforeRouteEnter" && !record.instances[name]) continue;
2728
- if (isRouteComponent(rawComponent)) {
2729
- const guard = (rawComponent.__vccOpts || rawComponent)[guardType];
2730
- guard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));
2731
- } else {
2732
- let componentPromise = rawComponent();
2733
- guards.push(() => componentPromise.then((resolved) => {
2734
- if (!resolved) throw new Error(`Couldn't resolve component "${name}" at "${record.path}"`);
2735
- const resolvedComponent = isESModule(resolved) ? resolved.default : resolved;
2736
- record.mods[name] = resolved;
2737
- record.components[name] = resolvedComponent;
2738
- const guard = (resolvedComponent.__vccOpts || resolvedComponent)[guardType];
2739
- return guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)();
2740
- }));
2741
- }
2742
- }
2743
- return guards;
2744
- }
2745
- function useLink(props) {
2746
- const router = inject(routerKey);
2747
- const currentRoute = inject(routeLocationKey);
2748
- const route = computed(() => {
2749
- const to = unref(props.to);
2750
- return router.resolve(to);
2751
- });
2752
- const activeRecordIndex = computed(() => {
2753
- const { matched } = route.value;
2754
- const { length } = matched;
2755
- const routeMatched = matched[length - 1];
2756
- const currentMatched = currentRoute.matched;
2757
- if (!routeMatched || !currentMatched.length) return -1;
2758
- const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));
2759
- if (index > -1) return index;
2760
- const parentRecordPath = getOriginalPath(matched[length - 2]);
2761
- return length > 1 && getOriginalPath(routeMatched) === parentRecordPath && currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index;
2762
- });
2763
- const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));
2764
- const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));
2765
- function navigate(e = {}) {
2766
- if (guardEvent(e)) {
2767
- const p = router[unref(props.replace) ? "replace" : "push"](unref(props.to)).catch(noop);
2768
- if (props.viewTransition && typeof document !== "undefined" && "startViewTransition" in document) document.startViewTransition(() => p);
2769
- return p;
2770
- }
2771
- return Promise.resolve();
2772
- }
2773
- return {
2774
- route,
2775
- href: computed(() => route.value.href),
2776
- isActive,
2777
- isExactActive,
2778
- navigate
2779
- };
2780
- }
2781
- function preferSingleVNode(vnodes) {
2782
- return vnodes.length === 1 ? vnodes[0] : vnodes;
2783
- }
2784
- var RouterLink = /* @__PURE__ */ defineComponent({
2785
- name: "RouterLink",
2786
- compatConfig: { MODE: 3 },
2787
- props: {
2788
- to: {
2789
- type: [String, Object],
2790
- required: true
2791
- },
2792
- replace: Boolean,
2793
- activeClass: String,
2794
- exactActiveClass: String,
2795
- custom: Boolean,
2796
- ariaCurrentValue: {
2797
- type: String,
2798
- default: "page"
2799
- }
2800
- },
2801
- useLink,
2802
- setup(props, { slots }) {
2803
- const link = reactive(useLink(props));
2804
- const { options } = inject(routerKey);
2805
- const elClass = computed(() => ({
2806
- [getLinkClass(props.activeClass, options.linkActiveClass, "router-link-active")]: link.isActive,
2807
- [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, "router-link-exact-active")]: link.isExactActive
2808
- }));
2809
- return () => {
2810
- const children = slots.default && preferSingleVNode(slots.default(link));
2811
- return props.custom ? children : h("a", {
2812
- "aria-current": link.isExactActive ? props.ariaCurrentValue : null,
2813
- href: link.href,
2814
- onClick: link.navigate,
2815
- class: elClass.value
2816
- }, children);
2817
- };
2818
- }
2819
- });
2820
- function guardEvent(e) {
2821
- if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
2822
- if (e.defaultPrevented) return;
2823
- if (e.button !== void 0 && e.button !== 0) return;
2824
- if (e.currentTarget && e.currentTarget.getAttribute) {
2825
- const target = e.currentTarget.getAttribute("target");
2826
- if (/\b_blank\b/i.test(target)) return;
2827
- }
2828
- if (e.preventDefault) e.preventDefault();
2829
- return true;
2830
- }
2831
- function includesParams(outer, inner) {
2832
- for (const key in inner) {
2833
- const innerValue = inner[key];
2834
- const outerValue = outer[key];
2835
- if (typeof innerValue === "string") {
2836
- if (innerValue !== outerValue) return false;
2837
- } else if (!isArray$3(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i$1) => value !== outerValue[i$1])) return false;
2838
- }
2839
- return true;
2840
- }
2841
- function getOriginalPath(record) {
2842
- return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
2843
- }
2844
- var getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
2845
- var RouterViewImpl = /* @__PURE__ */ defineComponent({
2846
- name: "RouterView",
2847
- inheritAttrs: false,
2848
- props: {
2849
- name: {
2850
- type: String,
2851
- default: "default"
2852
- },
2853
- route: Object
2854
- },
2855
- compatConfig: { MODE: 3 },
2856
- setup(props, { attrs, slots }) {
2857
- const injectedRoute = inject(routerViewLocationKey);
2858
- const routeToDisplay = computed(() => props.route || injectedRoute.value);
2859
- const injectedDepth = inject(viewDepthKey, 0);
2860
- const depth = computed(() => {
2861
- let initialDepth = unref(injectedDepth);
2862
- const { matched } = routeToDisplay.value;
2863
- let matchedRoute;
2864
- while ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) initialDepth++;
2865
- return initialDepth;
2866
- });
2867
- const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);
2868
- provide(viewDepthKey, computed(() => depth.value + 1));
2869
- provide(matchedRouteKey, matchedRouteRef);
2870
- provide(routerViewLocationKey, routeToDisplay);
2871
- const viewRef = ref();
2872
- watch(() => [
2873
- viewRef.value,
2874
- matchedRouteRef.value,
2875
- props.name
2876
- ], ([instance, to, name], [oldInstance, from, oldName]) => {
2877
- if (to) {
2878
- to.instances[name] = instance;
2879
- if (from && from !== to && instance && instance === oldInstance) {
2880
- if (!to.leaveGuards.size) to.leaveGuards = from.leaveGuards;
2881
- if (!to.updateGuards.size) to.updateGuards = from.updateGuards;
2882
- }
2883
- }
2884
- if (instance && to && (!from || !isSameRouteRecord(to, from) || !oldInstance)) (to.enterCallbacks[name] || []).forEach((callback) => callback(instance));
2885
- }, { flush: "post" });
2886
- return () => {
2887
- const route = routeToDisplay.value;
2888
- const currentName = props.name;
2889
- const matchedRoute = matchedRouteRef.value;
2890
- const ViewComponent = matchedRoute && matchedRoute.components[currentName];
2891
- if (!ViewComponent) return normalizeSlot(slots.default, {
2892
- Component: ViewComponent,
2893
- route
2894
- });
2895
- const routePropsOption = matchedRoute.props[currentName];
2896
- const routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === "function" ? routePropsOption(route) : routePropsOption : null;
2897
- const onVnodeUnmounted = (vnode) => {
2898
- if (vnode.component.isUnmounted) matchedRoute.instances[currentName] = null;
2899
- };
2900
- const component = h(ViewComponent, assign({}, routeProps, attrs, {
2901
- onVnodeUnmounted,
2902
- ref: viewRef
2903
- }));
2904
- return normalizeSlot(slots.default, {
2905
- Component: component,
2906
- route
2907
- }) || component;
2908
- };
2909
- }
2910
- });
2911
- function normalizeSlot(slot, data) {
2912
- if (!slot) return null;
2913
- const slotContent = slot(data);
2914
- return slotContent.length === 1 ? slotContent[0] : slotContent;
2915
- }
2916
- var RouterView = RouterViewImpl;
2917
- function createRouter(options) {
2918
- const matcher = createRouterMatcher(options.routes, options);
2919
- const parseQuery$1 = options.parseQuery || parseQuery;
2920
- const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;
2921
- const routerHistory = options.history;
2922
- const beforeGuards = useCallbacks();
2923
- const beforeResolveGuards = useCallbacks();
2924
- const afterGuards = useCallbacks();
2925
- const currentRoute = shallowRef(START_LOCATION_NORMALIZED);
2926
- let pendingLocation = START_LOCATION_NORMALIZED;
2927
- if (isBrowser && options.scrollBehavior && "scrollRestoration" in history) history.scrollRestoration = "manual";
2928
- const normalizeParams = applyToParams.bind(null, (paramValue) => "" + paramValue);
2929
- const encodeParams = applyToParams.bind(null, encodeParam);
2930
- const decodeParams = applyToParams.bind(null, decode);
2931
- function addRoute(parentOrRoute, route) {
2932
- let parent;
2933
- let record;
2934
- if (isRouteName(parentOrRoute)) {
2935
- parent = matcher.getRecordMatcher(parentOrRoute);
2936
- record = route;
2937
- } else record = parentOrRoute;
2938
- return matcher.addRoute(record, parent);
2939
- }
2940
- function removeRoute(name) {
2941
- const recordMatcher = matcher.getRecordMatcher(name);
2942
- if (recordMatcher) matcher.removeRoute(recordMatcher);
2943
- }
2944
- function getRoutes() {
2945
- return matcher.getRoutes().map((routeMatcher) => routeMatcher.record);
2946
- }
2947
- function hasRoute(name) {
2948
- return !!matcher.getRecordMatcher(name);
2949
- }
2950
- function resolve(rawLocation, currentLocation) {
2951
- currentLocation = assign({}, currentLocation || currentRoute.value);
2952
- if (typeof rawLocation === "string") {
2953
- const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);
2954
- const matchedRoute$1 = matcher.resolve({ path: locationNormalized.path }, currentLocation);
2955
- const href$1 = routerHistory.createHref(locationNormalized.fullPath);
2956
- return assign(locationNormalized, matchedRoute$1, {
2957
- params: decodeParams(matchedRoute$1.params),
2958
- hash: decode(locationNormalized.hash),
2959
- redirectedFrom: void 0,
2960
- href: href$1
2961
- });
2962
- }
2963
- let matcherLocation;
2964
- if (rawLocation.path != null) matcherLocation = assign({}, rawLocation, { path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path });
2965
- else {
2966
- const targetParams = assign({}, rawLocation.params);
2967
- for (const key in targetParams) if (targetParams[key] == null) delete targetParams[key];
2968
- matcherLocation = assign({}, rawLocation, { params: encodeParams(targetParams) });
2969
- currentLocation.params = encodeParams(currentLocation.params);
2970
- }
2971
- const matchedRoute = matcher.resolve(matcherLocation, currentLocation);
2972
- const hash = rawLocation.hash || "";
2973
- matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));
2974
- const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {
2975
- hash: encodeHash(hash),
2976
- path: matchedRoute.path
2977
- }));
2978
- const href = routerHistory.createHref(fullPath);
2979
- return assign({
2980
- fullPath,
2981
- hash,
2982
- query: stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}
2983
- }, matchedRoute, {
2984
- redirectedFrom: void 0,
2985
- href
2986
- });
2987
- }
2988
- function locationAsObject(to) {
2989
- return typeof to === "string" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to);
2990
- }
2991
- function checkCanceledNavigation(to, from) {
2992
- if (pendingLocation !== to) return createRouterError(8, {
2993
- from,
2994
- to
2995
- });
2996
- }
2997
- function push(to) {
2998
- return pushWithRedirect(to);
2999
- }
3000
- function replace(to) {
3001
- return push(assign(locationAsObject(to), { replace: true }));
3002
- }
3003
- function handleRedirectRecord(to) {
3004
- const lastMatched = to.matched[to.matched.length - 1];
3005
- if (lastMatched && lastMatched.redirect) {
3006
- const { redirect } = lastMatched;
3007
- let newTargetLocation = typeof redirect === "function" ? redirect(to) : redirect;
3008
- if (typeof newTargetLocation === "string") {
3009
- newTargetLocation = newTargetLocation.includes("?") || newTargetLocation.includes("#") ? newTargetLocation = locationAsObject(newTargetLocation) : { path: newTargetLocation };
3010
- newTargetLocation.params = {};
3011
- }
3012
- return assign({
3013
- query: to.query,
3014
- hash: to.hash,
3015
- params: newTargetLocation.path != null ? {} : to.params
3016
- }, newTargetLocation);
3017
- }
3018
- }
3019
- function pushWithRedirect(to, redirectedFrom) {
3020
- const targetLocation = pendingLocation = resolve(to);
3021
- const from = currentRoute.value;
3022
- const data = to.state;
3023
- const force = to.force;
3024
- const replace$1 = to.replace === true;
3025
- const shouldRedirect = handleRedirectRecord(targetLocation);
3026
- if (shouldRedirect) return pushWithRedirect(assign(locationAsObject(shouldRedirect), {
3027
- state: typeof shouldRedirect === "object" ? assign({}, data, shouldRedirect.state) : data,
3028
- force,
3029
- replace: replace$1
3030
- }), redirectedFrom || targetLocation);
3031
- const toLocation = targetLocation;
3032
- toLocation.redirectedFrom = redirectedFrom;
3033
- let failure;
3034
- if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {
3035
- failure = createRouterError(16, {
3036
- to: toLocation,
3037
- from
3038
- });
3039
- handleScroll(from, from, true, false);
3040
- }
3041
- return (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? isNavigationFailure(error, 2) ? error : markAsReady(error) : triggerError(error, toLocation, from)).then((failure$1) => {
3042
- if (failure$1) {
3043
- if (isNavigationFailure(failure$1, 2)) return pushWithRedirect(assign({ replace: replace$1 }, locationAsObject(failure$1.to), {
3044
- state: typeof failure$1.to === "object" ? assign({}, data, failure$1.to.state) : data,
3045
- force
3046
- }), redirectedFrom || toLocation);
3047
- } else failure$1 = finalizeNavigation(toLocation, from, true, replace$1, data);
3048
- triggerAfterEach(toLocation, from, failure$1);
3049
- return failure$1;
3050
- });
3051
- }
3052
- function checkCanceledNavigationAndReject(to, from) {
3053
- const error = checkCanceledNavigation(to, from);
3054
- return error ? Promise.reject(error) : Promise.resolve();
3055
- }
3056
- function runWithContext(fn) {
3057
- const app = installedApps.values().next().value;
3058
- return app && typeof app.runWithContext === "function" ? app.runWithContext(fn) : fn();
3059
- }
3060
- function navigate(to, from) {
3061
- let guards;
3062
- const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);
3063
- guards = extractComponentsGuards(leavingRecords.reverse(), "beforeRouteLeave", to, from);
3064
- for (const record of leavingRecords) record.leaveGuards.forEach((guard) => {
3065
- guards.push(guardToPromiseFn(guard, to, from));
3066
- });
3067
- const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);
3068
- guards.push(canceledNavigationCheck);
3069
- return runGuardQueue(guards).then(() => {
3070
- guards = [];
3071
- for (const guard of beforeGuards.list()) guards.push(guardToPromiseFn(guard, to, from));
3072
- guards.push(canceledNavigationCheck);
3073
- return runGuardQueue(guards);
3074
- }).then(() => {
3075
- guards = extractComponentsGuards(updatingRecords, "beforeRouteUpdate", to, from);
3076
- for (const record of updatingRecords) record.updateGuards.forEach((guard) => {
3077
- guards.push(guardToPromiseFn(guard, to, from));
3078
- });
3079
- guards.push(canceledNavigationCheck);
3080
- return runGuardQueue(guards);
3081
- }).then(() => {
3082
- guards = [];
3083
- for (const record of enteringRecords) if (record.beforeEnter) if (isArray$3(record.beforeEnter)) for (const beforeEnter of record.beforeEnter) guards.push(guardToPromiseFn(beforeEnter, to, from));
3084
- else guards.push(guardToPromiseFn(record.beforeEnter, to, from));
3085
- guards.push(canceledNavigationCheck);
3086
- return runGuardQueue(guards);
3087
- }).then(() => {
3088
- to.matched.forEach((record) => record.enterCallbacks = {});
3089
- guards = extractComponentsGuards(enteringRecords, "beforeRouteEnter", to, from, runWithContext);
3090
- guards.push(canceledNavigationCheck);
3091
- return runGuardQueue(guards);
3092
- }).then(() => {
3093
- guards = [];
3094
- for (const guard of beforeResolveGuards.list()) guards.push(guardToPromiseFn(guard, to, from));
3095
- guards.push(canceledNavigationCheck);
3096
- return runGuardQueue(guards);
3097
- }).catch((err) => isNavigationFailure(err, 8) ? err : Promise.reject(err));
3098
- }
3099
- function triggerAfterEach(to, from, failure) {
3100
- afterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure)));
3101
- }
3102
- function finalizeNavigation(toLocation, from, isPush, replace$1, data) {
3103
- const error = checkCanceledNavigation(toLocation, from);
3104
- if (error) return error;
3105
- const isFirstNavigation = from === START_LOCATION_NORMALIZED;
3106
- const state = !isBrowser ? {} : history.state;
3107
- if (isPush) if (replace$1 || isFirstNavigation) routerHistory.replace(toLocation.fullPath, assign({ scroll: isFirstNavigation && state && state.scroll }, data));
3108
- else routerHistory.push(toLocation.fullPath, data);
3109
- currentRoute.value = toLocation;
3110
- handleScroll(toLocation, from, isPush, isFirstNavigation);
3111
- markAsReady();
3112
- }
3113
- let removeHistoryListener;
3114
- function setupListeners() {
3115
- if (removeHistoryListener) return;
3116
- removeHistoryListener = routerHistory.listen((to, _from, info) => {
3117
- if (!router.listening) return;
3118
- const toLocation = resolve(to);
3119
- const shouldRedirect = handleRedirectRecord(toLocation);
3120
- if (shouldRedirect) {
3121
- pushWithRedirect(assign(shouldRedirect, {
3122
- replace: true,
3123
- force: true
3124
- }), toLocation).catch(noop);
3125
- return;
3126
- }
3127
- pendingLocation = toLocation;
3128
- const from = currentRoute.value;
3129
- if (isBrowser) saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());
3130
- navigate(toLocation, from).catch((error) => {
3131
- if (isNavigationFailure(error, 12)) return error;
3132
- if (isNavigationFailure(error, 2)) {
3133
- pushWithRedirect(assign(locationAsObject(error.to), { force: true }), toLocation).then((failure) => {
3134
- if (isNavigationFailure(failure, 20) && !info.delta && info.type === NavigationType.pop) routerHistory.go(-1, false);
3135
- }).catch(noop);
3136
- return Promise.reject();
3137
- }
3138
- if (info.delta) routerHistory.go(-info.delta, false);
3139
- return triggerError(error, toLocation, from);
3140
- }).then((failure) => {
3141
- failure = failure || finalizeNavigation(toLocation, from, false);
3142
- if (failure) {
3143
- if (info.delta && !isNavigationFailure(failure, 8)) routerHistory.go(-info.delta, false);
3144
- else if (info.type === NavigationType.pop && isNavigationFailure(failure, 20)) routerHistory.go(-1, false);
3145
- }
3146
- triggerAfterEach(toLocation, from, failure);
3147
- }).catch(noop);
3148
- });
3149
- }
3150
- let readyHandlers = useCallbacks();
3151
- let errorListeners = useCallbacks();
3152
- let ready;
3153
- function triggerError(error, to, from) {
3154
- markAsReady(error);
3155
- const list = errorListeners.list();
3156
- if (list.length) list.forEach((handler) => handler(error, to, from));
3157
- else console.error(error);
3158
- return Promise.reject(error);
3159
- }
3160
- function isReady() {
3161
- if (ready && currentRoute.value !== START_LOCATION_NORMALIZED) return Promise.resolve();
3162
- return new Promise((resolve$1, reject) => {
3163
- readyHandlers.add([resolve$1, reject]);
3164
- });
3165
- }
3166
- function markAsReady(err) {
3167
- if (!ready) {
3168
- ready = !err;
3169
- setupListeners();
3170
- readyHandlers.list().forEach(([resolve$1, reject]) => err ? reject(err) : resolve$1());
3171
- readyHandlers.reset();
3172
- }
3173
- return err;
3174
- }
3175
- function handleScroll(to, from, isPush, isFirstNavigation) {
3176
- const { scrollBehavior } = options;
3177
- if (!isBrowser || !scrollBehavior) return Promise.resolve();
3178
- const scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;
3179
- return nextTick().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => position && scrollToPosition(position)).catch((err) => triggerError(err, to, from));
3180
- }
3181
- const go = (delta) => routerHistory.go(delta);
3182
- let started;
3183
- const installedApps = /* @__PURE__ */ new Set();
3184
- const router = {
3185
- currentRoute,
3186
- listening: true,
3187
- addRoute,
3188
- removeRoute,
3189
- clearRoutes: matcher.clearRoutes,
3190
- hasRoute,
3191
- getRoutes,
3192
- resolve,
3193
- options,
3194
- push,
3195
- replace,
3196
- go,
3197
- back: () => go(-1),
3198
- forward: () => go(1),
3199
- beforeEach: beforeGuards.add,
3200
- beforeResolve: beforeResolveGuards.add,
3201
- afterEach: afterGuards.add,
3202
- onError: errorListeners.add,
3203
- isReady,
3204
- install(app) {
3205
- const router$1 = this;
3206
- app.component("RouterLink", RouterLink);
3207
- app.component("RouterView", RouterView);
3208
- app.config.globalProperties.$router = router$1;
3209
- Object.defineProperty(app.config.globalProperties, "$route", {
3210
- enumerable: true,
3211
- get: () => unref(currentRoute)
3212
- });
3213
- if (isBrowser && !started && currentRoute.value === START_LOCATION_NORMALIZED) {
3214
- started = true;
3215
- push(routerHistory.location).catch((err) => {});
3216
- }
3217
- const reactiveRoute = {};
3218
- for (const key in START_LOCATION_NORMALIZED) Object.defineProperty(reactiveRoute, key, {
3219
- get: () => currentRoute.value[key],
3220
- enumerable: true
3221
- });
3222
- app.provide(routerKey, router$1);
3223
- app.provide(routeLocationKey, shallowReactive(reactiveRoute));
3224
- app.provide(routerViewLocationKey, currentRoute);
3225
- const unmountApp = app.unmount;
3226
- installedApps.add(app);
3227
- app.unmount = function() {
3228
- installedApps.delete(app);
3229
- if (installedApps.size < 1) {
3230
- pendingLocation = START_LOCATION_NORMALIZED;
3231
- removeHistoryListener && removeHistoryListener();
3232
- removeHistoryListener = null;
3233
- currentRoute.value = START_LOCATION_NORMALIZED;
3234
- started = false;
3235
- ready = false;
3236
- }
3237
- unmountApp();
3238
- };
3239
- }
3240
- };
3241
- function runGuardQueue(guards) {
3242
- return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());
3243
- }
3244
- return router;
3245
- }
3246
- function extractChangingRecords(to, from) {
3247
- const leavingRecords = [];
3248
- const updatingRecords = [];
3249
- const enteringRecords = [];
3250
- const len = Math.max(from.matched.length, to.matched.length);
3251
- for (let i$1 = 0; i$1 < len; i$1++) {
3252
- const recordFrom = from.matched[i$1];
3253
- if (recordFrom) if (to.matched.find((record) => isSameRouteRecord(record, recordFrom))) updatingRecords.push(recordFrom);
3254
- else leavingRecords.push(recordFrom);
3255
- const recordTo = to.matched[i$1];
3256
- if (recordTo) {
3257
- if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) enteringRecords.push(recordTo);
3258
- }
3259
- }
3260
- return [
3261
- leavingRecords,
3262
- updatingRecords,
3263
- enteringRecords
3264
- ];
3265
- }
3266
- function useRouter() {
3267
- return inject(routerKey);
3268
- }
3269
- function useRoute(_name) {
3270
- return inject(routeLocationKey);
3271
- }
3272
1801
  var require_default$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
3273
1802
  function getDefaultWhiteList$1() {
3274
1803
  var whiteList = {};
@@ -3609,798 +2138,2269 @@ var require_default$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
3609
2138
  whiteList["z-index"] = false;
3610
2139
  return whiteList;
3611
2140
  }
3612
- function onAttr(name, value, options) {}
3613
- function onIgnoreAttr(name, value, options) {}
3614
- var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/gim;
3615
- function safeAttrValue$1(name, value) {
3616
- if (REGEXP_URL_JAVASCRIPT.test(value)) return "";
3617
- return value;
2141
+ function onAttr(name, value, options) {}
2142
+ function onIgnoreAttr(name, value, options) {}
2143
+ var REGEXP_URL_JAVASCRIPT = /javascript\s*\:/gim;
2144
+ function safeAttrValue$1(name, value) {
2145
+ if (REGEXP_URL_JAVASCRIPT.test(value)) return "";
2146
+ return value;
2147
+ }
2148
+ exports.whiteList = getDefaultWhiteList$1();
2149
+ exports.getDefaultWhiteList = getDefaultWhiteList$1;
2150
+ exports.onAttr = onAttr;
2151
+ exports.onIgnoreAttr = onIgnoreAttr;
2152
+ exports.safeAttrValue = safeAttrValue$1;
2153
+ }));
2154
+ var require_util$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2155
+ module.exports = {
2156
+ indexOf: function(arr, item) {
2157
+ var i$1, j;
2158
+ if (Array.prototype.indexOf) return arr.indexOf(item);
2159
+ for (i$1 = 0, j = arr.length; i$1 < j; i$1++) if (arr[i$1] === item) return i$1;
2160
+ return -1;
2161
+ },
2162
+ forEach: function(arr, fn, scope) {
2163
+ var i$1, j;
2164
+ if (Array.prototype.forEach) return arr.forEach(fn, scope);
2165
+ for (i$1 = 0, j = arr.length; i$1 < j; i$1++) fn.call(scope, arr[i$1], i$1, arr);
2166
+ },
2167
+ trim: function(str) {
2168
+ if (String.prototype.trim) return str.trim();
2169
+ return str.replace(/(^\s*)|(\s*$)/g, "");
2170
+ },
2171
+ trimRight: function(str) {
2172
+ if (String.prototype.trimRight) return str.trimRight();
2173
+ return str.replace(/(\s*$)/g, "");
2174
+ }
2175
+ };
2176
+ }));
2177
+ var require_parser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2178
+ var _$3 = require_util$1();
2179
+ function parseStyle$1(css, onAttr$1) {
2180
+ css = _$3.trimRight(css);
2181
+ if (css[css.length - 1] !== ";") css += ";";
2182
+ var cssLength = css.length;
2183
+ var isParenthesisOpen = false;
2184
+ var lastPos = 0;
2185
+ var i$1 = 0;
2186
+ var retCSS = "";
2187
+ function addNewAttr() {
2188
+ if (!isParenthesisOpen) {
2189
+ var source = _$3.trim(css.slice(lastPos, i$1));
2190
+ var j$1 = source.indexOf(":");
2191
+ if (j$1 !== -1) {
2192
+ var name = _$3.trim(source.slice(0, j$1));
2193
+ var value = _$3.trim(source.slice(j$1 + 1));
2194
+ if (name) {
2195
+ var ret = onAttr$1(lastPos, retCSS.length, name, value, source);
2196
+ if (ret) retCSS += ret + "; ";
2197
+ }
2198
+ }
2199
+ }
2200
+ lastPos = i$1 + 1;
2201
+ }
2202
+ for (; i$1 < cssLength; i$1++) {
2203
+ var c = css[i$1];
2204
+ if (c === "/" && css[i$1 + 1] === "*") {
2205
+ var j = css.indexOf("*/", i$1 + 2);
2206
+ if (j === -1) break;
2207
+ i$1 = j + 1;
2208
+ lastPos = i$1 + 1;
2209
+ isParenthesisOpen = false;
2210
+ } else if (c === "(") isParenthesisOpen = true;
2211
+ else if (c === ")") isParenthesisOpen = false;
2212
+ else if (c === ";") if (isParenthesisOpen) {} else addNewAttr();
2213
+ else if (c === "\n") addNewAttr();
2214
+ }
2215
+ return _$3.trim(retCSS);
2216
+ }
2217
+ module.exports = parseStyle$1;
2218
+ }));
2219
+ var require_css = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2220
+ var DEFAULT$3 = require_default$1();
2221
+ var parseStyle = require_parser$1();
2222
+ require_util$1();
2223
+ function isNull$1(obj) {
2224
+ return obj === void 0 || obj === null;
2225
+ }
2226
+ function shallowCopyObject$1(obj) {
2227
+ var ret = {};
2228
+ for (var i$1 in obj) ret[i$1] = obj[i$1];
2229
+ return ret;
2230
+ }
2231
+ function FilterCSS$3(options) {
2232
+ options = shallowCopyObject$1(options || {});
2233
+ options.whiteList = options.whiteList || DEFAULT$3.whiteList;
2234
+ options.onAttr = options.onAttr || DEFAULT$3.onAttr;
2235
+ options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT$3.onIgnoreAttr;
2236
+ options.safeAttrValue = options.safeAttrValue || DEFAULT$3.safeAttrValue;
2237
+ this.options = options;
2238
+ }
2239
+ FilterCSS$3.prototype.process = function(css) {
2240
+ css = css || "";
2241
+ css = css.toString();
2242
+ if (!css) return "";
2243
+ var options = this.options;
2244
+ var whiteList = options.whiteList;
2245
+ var onAttr$1 = options.onAttr;
2246
+ var onIgnoreAttr$1 = options.onIgnoreAttr;
2247
+ var safeAttrValue$2 = options.safeAttrValue;
2248
+ return parseStyle(css, function(sourcePosition, position, name, value, source) {
2249
+ var check = whiteList[name];
2250
+ var isWhite = false;
2251
+ if (check === true) isWhite = check;
2252
+ else if (typeof check === "function") isWhite = check(value);
2253
+ else if (check instanceof RegExp) isWhite = check.test(value);
2254
+ if (isWhite !== true) isWhite = false;
2255
+ value = safeAttrValue$2(name, value);
2256
+ if (!value) return;
2257
+ var opts = {
2258
+ position,
2259
+ sourcePosition,
2260
+ source,
2261
+ isWhite
2262
+ };
2263
+ if (isWhite) {
2264
+ var ret = onAttr$1(name, value, opts);
2265
+ if (isNull$1(ret)) return name + ":" + value;
2266
+ else return ret;
2267
+ } else {
2268
+ var ret = onIgnoreAttr$1(name, value, opts);
2269
+ if (!isNull$1(ret)) return ret;
2270
+ }
2271
+ });
2272
+ };
2273
+ module.exports = FilterCSS$3;
2274
+ }));
2275
+ var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2276
+ var DEFAULT$2 = require_default$1();
2277
+ var FilterCSS$2 = require_css();
2278
+ function filterCSS(html, options) {
2279
+ return new FilterCSS$2(options).process(html);
2280
+ }
2281
+ exports = module.exports = filterCSS;
2282
+ exports.FilterCSS = FilterCSS$2;
2283
+ for (var i in DEFAULT$2) exports[i] = DEFAULT$2[i];
2284
+ if (typeof window !== "undefined") window.filterCSS = module.exports;
2285
+ }));
2286
+ var require_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2287
+ module.exports = {
2288
+ indexOf: function(arr, item) {
2289
+ var i$1, j;
2290
+ if (Array.prototype.indexOf) return arr.indexOf(item);
2291
+ for (i$1 = 0, j = arr.length; i$1 < j; i$1++) if (arr[i$1] === item) return i$1;
2292
+ return -1;
2293
+ },
2294
+ forEach: function(arr, fn, scope) {
2295
+ var i$1, j;
2296
+ if (Array.prototype.forEach) return arr.forEach(fn, scope);
2297
+ for (i$1 = 0, j = arr.length; i$1 < j; i$1++) fn.call(scope, arr[i$1], i$1, arr);
2298
+ },
2299
+ trim: function(str) {
2300
+ if (String.prototype.trim) return str.trim();
2301
+ return str.replace(/(^\s*)|(\s*$)/g, "");
2302
+ },
2303
+ spaceIndex: function(str) {
2304
+ var match = /\s|\n|\t/.exec(str);
2305
+ return match ? match.index : -1;
2306
+ }
2307
+ };
2308
+ }));
2309
+ var require_default = /* @__PURE__ */ __commonJSMin(((exports) => {
2310
+ var FilterCSS$1 = require_lib$1().FilterCSS;
2311
+ var getDefaultCSSWhiteList = require_lib$1().getDefaultWhiteList;
2312
+ var _$2 = require_util();
2313
+ function getDefaultWhiteList() {
2314
+ return {
2315
+ a: [
2316
+ "target",
2317
+ "href",
2318
+ "title"
2319
+ ],
2320
+ abbr: ["title"],
2321
+ address: [],
2322
+ area: [
2323
+ "shape",
2324
+ "coords",
2325
+ "href",
2326
+ "alt"
2327
+ ],
2328
+ article: [],
2329
+ aside: [],
2330
+ audio: [
2331
+ "autoplay",
2332
+ "controls",
2333
+ "crossorigin",
2334
+ "loop",
2335
+ "muted",
2336
+ "preload",
2337
+ "src"
2338
+ ],
2339
+ b: [],
2340
+ bdi: ["dir"],
2341
+ bdo: ["dir"],
2342
+ big: [],
2343
+ blockquote: ["cite"],
2344
+ br: [],
2345
+ caption: [],
2346
+ center: [],
2347
+ cite: [],
2348
+ code: [],
2349
+ col: [
2350
+ "align",
2351
+ "valign",
2352
+ "span",
2353
+ "width"
2354
+ ],
2355
+ colgroup: [
2356
+ "align",
2357
+ "valign",
2358
+ "span",
2359
+ "width"
2360
+ ],
2361
+ dd: [],
2362
+ del: ["datetime"],
2363
+ details: ["open"],
2364
+ div: [],
2365
+ dl: [],
2366
+ dt: [],
2367
+ em: [],
2368
+ figcaption: [],
2369
+ figure: [],
2370
+ font: [
2371
+ "color",
2372
+ "size",
2373
+ "face"
2374
+ ],
2375
+ footer: [],
2376
+ h1: [],
2377
+ h2: [],
2378
+ h3: [],
2379
+ h4: [],
2380
+ h5: [],
2381
+ h6: [],
2382
+ header: [],
2383
+ hr: [],
2384
+ i: [],
2385
+ img: [
2386
+ "src",
2387
+ "alt",
2388
+ "title",
2389
+ "width",
2390
+ "height",
2391
+ "loading"
2392
+ ],
2393
+ ins: ["datetime"],
2394
+ kbd: [],
2395
+ li: [],
2396
+ mark: [],
2397
+ nav: [],
2398
+ ol: [],
2399
+ p: [],
2400
+ pre: [],
2401
+ s: [],
2402
+ section: [],
2403
+ small: [],
2404
+ span: [],
2405
+ sub: [],
2406
+ summary: [],
2407
+ sup: [],
2408
+ strong: [],
2409
+ strike: [],
2410
+ table: [
2411
+ "width",
2412
+ "border",
2413
+ "align",
2414
+ "valign"
2415
+ ],
2416
+ tbody: ["align", "valign"],
2417
+ td: [
2418
+ "width",
2419
+ "rowspan",
2420
+ "colspan",
2421
+ "align",
2422
+ "valign"
2423
+ ],
2424
+ tfoot: ["align", "valign"],
2425
+ th: [
2426
+ "width",
2427
+ "rowspan",
2428
+ "colspan",
2429
+ "align",
2430
+ "valign"
2431
+ ],
2432
+ thead: ["align", "valign"],
2433
+ tr: [
2434
+ "rowspan",
2435
+ "align",
2436
+ "valign"
2437
+ ],
2438
+ tt: [],
2439
+ u: [],
2440
+ ul: [],
2441
+ video: [
2442
+ "autoplay",
2443
+ "controls",
2444
+ "crossorigin",
2445
+ "loop",
2446
+ "muted",
2447
+ "playsinline",
2448
+ "poster",
2449
+ "preload",
2450
+ "src",
2451
+ "height",
2452
+ "width"
2453
+ ]
2454
+ };
2455
+ }
2456
+ var defaultCSSFilter = new FilterCSS$1();
2457
+ function onTag(tag, html, options) {}
2458
+ function onIgnoreTag(tag, html, options) {}
2459
+ function onTagAttr(tag, name, value) {}
2460
+ function onIgnoreTagAttr(tag, name, value) {}
2461
+ function escapeHtml(html) {
2462
+ return html.replace(REGEXP_LT, "&lt;").replace(REGEXP_GT, "&gt;");
2463
+ }
2464
+ function safeAttrValue(tag, name, value, cssFilter) {
2465
+ value = friendlyAttrValue(value);
2466
+ if (name === "href" || name === "src") {
2467
+ value = _$2.trim(value);
2468
+ if (value === "#") return "#";
2469
+ if (!(value.substr(0, 7) === "http://" || value.substr(0, 8) === "https://" || value.substr(0, 7) === "mailto:" || value.substr(0, 4) === "tel:" || value.substr(0, 11) === "data:image/" || value.substr(0, 6) === "ftp://" || value.substr(0, 2) === "./" || value.substr(0, 3) === "../" || value[0] === "#" || value[0] === "/")) return "";
2470
+ } else if (name === "background") {
2471
+ REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
2472
+ if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) return "";
2473
+ } else if (name === "style") {
2474
+ REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;
2475
+ if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) return "";
2476
+ REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;
2477
+ if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {
2478
+ REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
2479
+ if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) return "";
2480
+ }
2481
+ if (cssFilter !== false) {
2482
+ cssFilter = cssFilter || defaultCSSFilter;
2483
+ value = cssFilter.process(value);
2484
+ }
2485
+ }
2486
+ value = escapeAttrValue(value);
2487
+ return value;
2488
+ }
2489
+ var REGEXP_LT = /</g;
2490
+ var REGEXP_GT = />/g;
2491
+ var REGEXP_QUOTE = /"/g;
2492
+ var REGEXP_QUOTE_2 = /&quot;/g;
2493
+ var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;
2494
+ var REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;
2495
+ var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;
2496
+ var REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;
2497
+ var REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;
2498
+ var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi;
2499
+ function escapeQuote(str) {
2500
+ return str.replace(REGEXP_QUOTE, "&quot;");
2501
+ }
2502
+ function unescapeQuote(str) {
2503
+ return str.replace(REGEXP_QUOTE_2, "\"");
2504
+ }
2505
+ function escapeHtmlEntities(str) {
2506
+ return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str$1, code) {
2507
+ return code[0] === "x" || code[0] === "X" ? String.fromCharCode(parseInt(code.substr(1), 16)) : String.fromCharCode(parseInt(code, 10));
2508
+ });
2509
+ }
2510
+ function escapeDangerHtml5Entities(str) {
2511
+ return str.replace(REGEXP_ATTR_VALUE_COLON, ":").replace(REGEXP_ATTR_VALUE_NEWLINE, " ");
2512
+ }
2513
+ function clearNonPrintableCharacter(str) {
2514
+ var str2 = "";
2515
+ for (var i$1 = 0, len = str.length; i$1 < len; i$1++) str2 += str.charCodeAt(i$1) < 32 ? " " : str.charAt(i$1);
2516
+ return _$2.trim(str2);
2517
+ }
2518
+ function friendlyAttrValue(str) {
2519
+ str = unescapeQuote(str);
2520
+ str = escapeHtmlEntities(str);
2521
+ str = escapeDangerHtml5Entities(str);
2522
+ str = clearNonPrintableCharacter(str);
2523
+ return str;
2524
+ }
2525
+ function escapeAttrValue(str) {
2526
+ str = escapeQuote(str);
2527
+ str = escapeHtml(str);
2528
+ return str;
2529
+ }
2530
+ function onIgnoreTagStripAll() {
2531
+ return "";
2532
+ }
2533
+ function StripTagBody(tags, next) {
2534
+ if (typeof next !== "function") next = function() {};
2535
+ var isRemoveAllTag = !Array.isArray(tags);
2536
+ function isRemoveTag(tag) {
2537
+ if (isRemoveAllTag) return true;
2538
+ return _$2.indexOf(tags, tag) !== -1;
2539
+ }
2540
+ var removeList = [];
2541
+ var posStart = false;
2542
+ return {
2543
+ onIgnoreTag: function(tag, html, options) {
2544
+ if (isRemoveTag(tag)) if (options.isClosing) {
2545
+ var ret = "[/removed]";
2546
+ var end = options.position + ret.length;
2547
+ removeList.push([posStart !== false ? posStart : options.position, end]);
2548
+ posStart = false;
2549
+ return ret;
2550
+ } else {
2551
+ if (!posStart) posStart = options.position;
2552
+ return "[removed]";
2553
+ }
2554
+ else return next(tag, html, options);
2555
+ },
2556
+ remove: function(html) {
2557
+ var rethtml = "";
2558
+ var lastPos = 0;
2559
+ _$2.forEach(removeList, function(pos) {
2560
+ rethtml += html.slice(lastPos, pos[0]);
2561
+ lastPos = pos[1];
2562
+ });
2563
+ rethtml += html.slice(lastPos);
2564
+ return rethtml;
2565
+ }
2566
+ };
2567
+ }
2568
+ function stripCommentTag(html) {
2569
+ var retHtml = "";
2570
+ var lastPos = 0;
2571
+ while (lastPos < html.length) {
2572
+ var i$1 = html.indexOf("<!--", lastPos);
2573
+ if (i$1 === -1) {
2574
+ retHtml += html.slice(lastPos);
2575
+ break;
2576
+ }
2577
+ retHtml += html.slice(lastPos, i$1);
2578
+ var j = html.indexOf("-->", i$1);
2579
+ if (j === -1) break;
2580
+ lastPos = j + 3;
2581
+ }
2582
+ return retHtml;
2583
+ }
2584
+ function stripBlankChar(html) {
2585
+ var chars = html.split("");
2586
+ chars = chars.filter(function(char) {
2587
+ var c = char.charCodeAt(0);
2588
+ if (c === 127) return false;
2589
+ if (c <= 31) {
2590
+ if (c === 10 || c === 13) return true;
2591
+ return false;
2592
+ }
2593
+ return true;
2594
+ });
2595
+ return chars.join("");
2596
+ }
2597
+ exports.whiteList = getDefaultWhiteList();
2598
+ exports.getDefaultWhiteList = getDefaultWhiteList;
2599
+ exports.onTag = onTag;
2600
+ exports.onIgnoreTag = onIgnoreTag;
2601
+ exports.onTagAttr = onTagAttr;
2602
+ exports.onIgnoreTagAttr = onIgnoreTagAttr;
2603
+ exports.safeAttrValue = safeAttrValue;
2604
+ exports.escapeHtml = escapeHtml;
2605
+ exports.escapeQuote = escapeQuote;
2606
+ exports.unescapeQuote = unescapeQuote;
2607
+ exports.escapeHtmlEntities = escapeHtmlEntities;
2608
+ exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;
2609
+ exports.clearNonPrintableCharacter = clearNonPrintableCharacter;
2610
+ exports.friendlyAttrValue = friendlyAttrValue;
2611
+ exports.escapeAttrValue = escapeAttrValue;
2612
+ exports.onIgnoreTagStripAll = onIgnoreTagStripAll;
2613
+ exports.StripTagBody = StripTagBody;
2614
+ exports.stripCommentTag = stripCommentTag;
2615
+ exports.stripBlankChar = stripBlankChar;
2616
+ exports.attributeWrapSign = "\"";
2617
+ exports.cssFilter = defaultCSSFilter;
2618
+ exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;
2619
+ }));
2620
+ var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
2621
+ var _$1 = require_util();
2622
+ function getTagName(html) {
2623
+ var i$1 = _$1.spaceIndex(html);
2624
+ var tagName;
2625
+ if (i$1 === -1) tagName = html.slice(1, -1);
2626
+ else tagName = html.slice(1, i$1 + 1);
2627
+ tagName = _$1.trim(tagName).toLowerCase();
2628
+ if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);
2629
+ if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);
2630
+ return tagName;
2631
+ }
2632
+ function isClosing(html) {
2633
+ return html.slice(0, 2) === "</";
2634
+ }
2635
+ function parseTag$1(html, onTag$1, escapeHtml$1) {
2636
+ var rethtml = "";
2637
+ var lastPos = 0;
2638
+ var tagStart = false;
2639
+ var quoteStart = false;
2640
+ var currentPos = 0;
2641
+ var len = html.length;
2642
+ var currentTagName = "";
2643
+ var currentHtml = "";
2644
+ chariterator: for (currentPos = 0; currentPos < len; currentPos++) {
2645
+ var c = html.charAt(currentPos);
2646
+ if (tagStart === false) {
2647
+ if (c === "<") {
2648
+ tagStart = currentPos;
2649
+ continue;
2650
+ }
2651
+ } else if (quoteStart === false) {
2652
+ if (c === "<") {
2653
+ rethtml += escapeHtml$1(html.slice(lastPos, currentPos));
2654
+ tagStart = currentPos;
2655
+ lastPos = currentPos;
2656
+ continue;
2657
+ }
2658
+ if (c === ">" || currentPos === len - 1) {
2659
+ rethtml += escapeHtml$1(html.slice(lastPos, tagStart));
2660
+ currentHtml = html.slice(tagStart, currentPos + 1);
2661
+ currentTagName = getTagName(currentHtml);
2662
+ rethtml += onTag$1(tagStart, rethtml.length, currentTagName, currentHtml, isClosing(currentHtml));
2663
+ lastPos = currentPos + 1;
2664
+ tagStart = false;
2665
+ continue;
2666
+ }
2667
+ if (c === "\"" || c === "'") {
2668
+ var i$1 = 1;
2669
+ var ic = html.charAt(currentPos - i$1);
2670
+ while (ic.trim() === "" || ic === "=") {
2671
+ if (ic === "=") {
2672
+ quoteStart = c;
2673
+ continue chariterator;
2674
+ }
2675
+ ic = html.charAt(currentPos - ++i$1);
2676
+ }
2677
+ }
2678
+ } else if (c === quoteStart) {
2679
+ quoteStart = false;
2680
+ continue;
2681
+ }
2682
+ }
2683
+ if (lastPos < len) rethtml += escapeHtml$1(html.substr(lastPos));
2684
+ return rethtml;
2685
+ }
2686
+ var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim;
2687
+ function parseAttr$1(html, onAttr$1) {
2688
+ var lastPos = 0;
2689
+ var lastMarkPos = 0;
2690
+ var retAttrs = [];
2691
+ var tmpName = false;
2692
+ var len = html.length;
2693
+ function addAttr(name, value) {
2694
+ name = _$1.trim(name);
2695
+ name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();
2696
+ if (name.length < 1) return;
2697
+ var ret = onAttr$1(name, value || "");
2698
+ if (ret) retAttrs.push(ret);
2699
+ }
2700
+ for (var i$1 = 0; i$1 < len; i$1++) {
2701
+ var c = html.charAt(i$1);
2702
+ var v, j;
2703
+ if (tmpName === false && c === "=") {
2704
+ tmpName = html.slice(lastPos, i$1);
2705
+ lastPos = i$1 + 1;
2706
+ lastMarkPos = html.charAt(lastPos) === "\"" || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i$1 + 1);
2707
+ continue;
2708
+ }
2709
+ if (tmpName !== false) {
2710
+ if (i$1 === lastMarkPos) {
2711
+ j = html.indexOf(c, i$1 + 1);
2712
+ if (j === -1) break;
2713
+ else {
2714
+ v = _$1.trim(html.slice(lastMarkPos + 1, j));
2715
+ addAttr(tmpName, v);
2716
+ tmpName = false;
2717
+ i$1 = j;
2718
+ lastPos = i$1 + 1;
2719
+ continue;
2720
+ }
2721
+ }
2722
+ }
2723
+ if (/\s|\n|\t/.test(c)) {
2724
+ html = html.replace(/\s|\n|\t/g, " ");
2725
+ if (tmpName === false) {
2726
+ j = findNextEqual(html, i$1);
2727
+ if (j === -1) {
2728
+ v = _$1.trim(html.slice(lastPos, i$1));
2729
+ addAttr(v);
2730
+ tmpName = false;
2731
+ lastPos = i$1 + 1;
2732
+ continue;
2733
+ } else {
2734
+ i$1 = j - 1;
2735
+ continue;
2736
+ }
2737
+ } else {
2738
+ j = findBeforeEqual(html, i$1 - 1);
2739
+ if (j === -1) {
2740
+ v = _$1.trim(html.slice(lastPos, i$1));
2741
+ v = stripQuoteWrap(v);
2742
+ addAttr(tmpName, v);
2743
+ tmpName = false;
2744
+ lastPos = i$1 + 1;
2745
+ continue;
2746
+ } else continue;
2747
+ }
2748
+ }
2749
+ }
2750
+ if (lastPos < html.length) if (tmpName === false) addAttr(html.slice(lastPos));
2751
+ else addAttr(tmpName, stripQuoteWrap(_$1.trim(html.slice(lastPos))));
2752
+ return _$1.trim(retAttrs.join(" "));
2753
+ }
2754
+ function findNextEqual(str, i$1) {
2755
+ for (; i$1 < str.length; i$1++) {
2756
+ var c = str[i$1];
2757
+ if (c === " ") continue;
2758
+ if (c === "=") return i$1;
2759
+ return -1;
2760
+ }
2761
+ }
2762
+ function findNextQuotationMark(str, i$1) {
2763
+ for (; i$1 < str.length; i$1++) {
2764
+ var c = str[i$1];
2765
+ if (c === " ") continue;
2766
+ if (c === "'" || c === "\"") return i$1;
2767
+ return -1;
2768
+ }
2769
+ }
2770
+ function findBeforeEqual(str, i$1) {
2771
+ for (; i$1 > 0; i$1--) {
2772
+ var c = str[i$1];
2773
+ if (c === " ") continue;
2774
+ if (c === "=") return i$1;
2775
+ return -1;
2776
+ }
2777
+ }
2778
+ function isQuoteWrapString(text) {
2779
+ if (text[0] === "\"" && text[text.length - 1] === "\"" || text[0] === "'" && text[text.length - 1] === "'") return true;
2780
+ else return false;
2781
+ }
2782
+ function stripQuoteWrap(text) {
2783
+ if (isQuoteWrapString(text)) return text.substr(1, text.length - 2);
2784
+ else return text;
2785
+ }
2786
+ exports.parseTag = parseTag$1;
2787
+ exports.parseAttr = parseAttr$1;
2788
+ }));
2789
+ var require_xss = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2790
+ var FilterCSS = require_lib$1().FilterCSS;
2791
+ var DEFAULT$1 = require_default();
2792
+ var parser$1 = require_parser();
2793
+ var parseTag = parser$1.parseTag;
2794
+ var parseAttr = parser$1.parseAttr;
2795
+ var _ = require_util();
2796
+ function isNull(obj) {
2797
+ return obj === void 0 || obj === null;
2798
+ }
2799
+ function getAttrs(html) {
2800
+ var i$1 = _.spaceIndex(html);
2801
+ if (i$1 === -1) return {
2802
+ html: "",
2803
+ closing: html[html.length - 2] === "/"
2804
+ };
2805
+ html = _.trim(html.slice(i$1 + 1, -1));
2806
+ var isClosing$1 = html[html.length - 1] === "/";
2807
+ if (isClosing$1) html = _.trim(html.slice(0, -1));
2808
+ return {
2809
+ html,
2810
+ closing: isClosing$1
2811
+ };
2812
+ }
2813
+ function shallowCopyObject(obj) {
2814
+ var ret = {};
2815
+ for (var i$1 in obj) ret[i$1] = obj[i$1];
2816
+ return ret;
2817
+ }
2818
+ function keysToLowerCase(obj) {
2819
+ var ret = {};
2820
+ for (var i$1 in obj) if (Array.isArray(obj[i$1])) ret[i$1.toLowerCase()] = obj[i$1].map(function(item) {
2821
+ return item.toLowerCase();
2822
+ });
2823
+ else ret[i$1.toLowerCase()] = obj[i$1];
2824
+ return ret;
2825
+ }
2826
+ function FilterXSS$1(options) {
2827
+ options = shallowCopyObject(options || {});
2828
+ if (options.stripIgnoreTag) {
2829
+ if (options.onIgnoreTag) console.error("Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time");
2830
+ options.onIgnoreTag = DEFAULT$1.onIgnoreTagStripAll;
2831
+ }
2832
+ if (options.whiteList || options.allowList) options.whiteList = keysToLowerCase(options.whiteList || options.allowList);
2833
+ else options.whiteList = DEFAULT$1.whiteList;
2834
+ this.attributeWrapSign = options.singleQuotedAttributeValue === true ? "'" : DEFAULT$1.attributeWrapSign;
2835
+ options.onTag = options.onTag || DEFAULT$1.onTag;
2836
+ options.onTagAttr = options.onTagAttr || DEFAULT$1.onTagAttr;
2837
+ options.onIgnoreTag = options.onIgnoreTag || DEFAULT$1.onIgnoreTag;
2838
+ options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT$1.onIgnoreTagAttr;
2839
+ options.safeAttrValue = options.safeAttrValue || DEFAULT$1.safeAttrValue;
2840
+ options.escapeHtml = options.escapeHtml || DEFAULT$1.escapeHtml;
2841
+ this.options = options;
2842
+ if (options.css === false) this.cssFilter = false;
2843
+ else {
2844
+ options.css = options.css || {};
2845
+ this.cssFilter = new FilterCSS(options.css);
2846
+ }
2847
+ }
2848
+ FilterXSS$1.prototype.process = function(html) {
2849
+ html = html || "";
2850
+ html = html.toString();
2851
+ if (!html) return "";
2852
+ var me = this;
2853
+ var options = me.options;
2854
+ var whiteList = options.whiteList;
2855
+ var onTag$1 = options.onTag;
2856
+ var onIgnoreTag$1 = options.onIgnoreTag;
2857
+ var onTagAttr$1 = options.onTagAttr;
2858
+ var onIgnoreTagAttr$1 = options.onIgnoreTagAttr;
2859
+ var safeAttrValue$2 = options.safeAttrValue;
2860
+ var escapeHtml$1 = options.escapeHtml;
2861
+ var attributeWrapSign = me.attributeWrapSign;
2862
+ var cssFilter = me.cssFilter;
2863
+ if (options.stripBlankChar) html = DEFAULT$1.stripBlankChar(html);
2864
+ if (!options.allowCommentTag) html = DEFAULT$1.stripCommentTag(html);
2865
+ var stripIgnoreTagBody = false;
2866
+ if (options.stripIgnoreTagBody) {
2867
+ stripIgnoreTagBody = DEFAULT$1.StripTagBody(options.stripIgnoreTagBody, onIgnoreTag$1);
2868
+ onIgnoreTag$1 = stripIgnoreTagBody.onIgnoreTag;
2869
+ }
2870
+ var retHtml = parseTag(html, function(sourcePosition, position, tag, html$1, isClosing$1) {
2871
+ var info = {
2872
+ sourcePosition,
2873
+ position,
2874
+ isClosing: isClosing$1,
2875
+ isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag)
2876
+ };
2877
+ var ret = onTag$1(tag, html$1, info);
2878
+ if (!isNull(ret)) return ret;
2879
+ if (info.isWhite) {
2880
+ if (info.isClosing) return "</" + tag + ">";
2881
+ var attrs = getAttrs(html$1);
2882
+ var whiteAttrList = whiteList[tag];
2883
+ var attrsHtml = parseAttr(attrs.html, function(name, value) {
2884
+ var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;
2885
+ var ret$1 = onTagAttr$1(tag, name, value, isWhiteAttr);
2886
+ if (!isNull(ret$1)) return ret$1;
2887
+ if (isWhiteAttr) {
2888
+ value = safeAttrValue$2(tag, name, value, cssFilter);
2889
+ if (value) return name + "=" + attributeWrapSign + value + attributeWrapSign;
2890
+ else return name;
2891
+ } else {
2892
+ ret$1 = onIgnoreTagAttr$1(tag, name, value, isWhiteAttr);
2893
+ if (!isNull(ret$1)) return ret$1;
2894
+ return;
2895
+ }
2896
+ });
2897
+ html$1 = "<" + tag;
2898
+ if (attrsHtml) html$1 += " " + attrsHtml;
2899
+ if (attrs.closing) html$1 += " /";
2900
+ html$1 += ">";
2901
+ return html$1;
2902
+ } else {
2903
+ ret = onIgnoreTag$1(tag, html$1, info);
2904
+ if (!isNull(ret)) return ret;
2905
+ return escapeHtml$1(html$1);
2906
+ }
2907
+ }, escapeHtml$1);
2908
+ if (stripIgnoreTagBody) retHtml = stripIgnoreTagBody.remove(retHtml);
2909
+ return retHtml;
2910
+ };
2911
+ module.exports = FilterXSS$1;
2912
+ }));
2913
+ var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2914
+ var DEFAULT = require_default();
2915
+ var parser = require_parser();
2916
+ var FilterXSS = require_xss();
2917
+ function filterXSS(html, options) {
2918
+ return new FilterXSS(options).process(html);
2919
+ }
2920
+ exports = module.exports = filterXSS;
2921
+ exports.filterXSS = filterXSS;
2922
+ exports.FilterXSS = FilterXSS;
2923
+ (function() {
2924
+ for (var i$1 in DEFAULT) exports[i$1] = DEFAULT[i$1];
2925
+ for (var j in parser) exports[j] = parser[j];
2926
+ })();
2927
+ if (typeof window !== "undefined") window.filterXSS = module.exports;
2928
+ function isWorkerEnv() {
2929
+ return typeof self !== "undefined" && typeof DedicatedWorkerGlobalScope !== "undefined" && self instanceof DedicatedWorkerGlobalScope;
2930
+ }
2931
+ if (isWorkerEnv()) self.filterXSS = module.exports;
2932
+ }));
2933
+ function isTaskAbortedMessage(msg) {
2934
+ return msg.type === "text" && "aborted" in msg && msg.aborted;
2935
+ }
2936
+ function isWorkflowUpdatedMessage(msg) {
2937
+ return msg.type === "workflow-updated";
2938
+ }
2939
+ function isToolMessage(msg) {
2940
+ return msg.type === "tool";
2941
+ }
2942
+ function isThinkingGroupMessage(msg) {
2943
+ return msg.type === "thinking-group";
2944
+ }
2945
+ var isBrowser = typeof document !== "undefined";
2946
+ function isRouteComponent(component) {
2947
+ return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
2948
+ }
2949
+ function isESModule(obj) {
2950
+ return obj.__esModule || obj[Symbol.toStringTag] === "Module" || obj.default && isRouteComponent(obj.default);
2951
+ }
2952
+ var assign = Object.assign;
2953
+ function applyToParams(fn, params) {
2954
+ const newParams = {};
2955
+ for (const key in params) {
2956
+ const value = params[key];
2957
+ newParams[key] = isArray$3(value) ? value.map(fn) : fn(value);
2958
+ }
2959
+ return newParams;
2960
+ }
2961
+ var noop = () => {};
2962
+ var isArray$3 = Array.isArray;
2963
+ var HASH_RE = /#/g;
2964
+ var AMPERSAND_RE = /&/g;
2965
+ var SLASH_RE = /\//g;
2966
+ var EQUAL_RE = /=/g;
2967
+ var IM_RE = /\?/g;
2968
+ var PLUS_RE = /\+/g;
2969
+ var ENC_BRACKET_OPEN_RE = /%5B/g;
2970
+ var ENC_BRACKET_CLOSE_RE = /%5D/g;
2971
+ var ENC_CARET_RE = /%5E/g;
2972
+ var ENC_BACKTICK_RE = /%60/g;
2973
+ var ENC_CURLY_OPEN_RE = /%7B/g;
2974
+ var ENC_PIPE_RE = /%7C/g;
2975
+ var ENC_CURLY_CLOSE_RE = /%7D/g;
2976
+ var ENC_SPACE_RE = /%20/g;
2977
+ function commonEncode(text) {
2978
+ return encodeURI("" + text).replace(ENC_PIPE_RE, "|").replace(ENC_BRACKET_OPEN_RE, "[").replace(ENC_BRACKET_CLOSE_RE, "]");
2979
+ }
2980
+ function encodeHash(text) {
2981
+ return commonEncode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
2982
+ }
2983
+ function encodeQueryValue(text) {
2984
+ return commonEncode(text).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^");
2985
+ }
2986
+ function encodeQueryKey(text) {
2987
+ return encodeQueryValue(text).replace(EQUAL_RE, "%3D");
2988
+ }
2989
+ function encodePath(text) {
2990
+ return commonEncode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F");
2991
+ }
2992
+ function encodeParam(text) {
2993
+ return text == null ? "" : encodePath(text).replace(SLASH_RE, "%2F");
2994
+ }
2995
+ function decode(text) {
2996
+ try {
2997
+ return decodeURIComponent("" + text);
2998
+ } catch (err) {}
2999
+ return "" + text;
3000
+ }
3001
+ var TRAILING_SLASH_RE = /\/$/;
3002
+ var removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, "");
3003
+ function parseURL(parseQuery$1, location$1, currentLocation = "/") {
3004
+ let path, query = {}, searchString = "", hash = "";
3005
+ const hashPos = location$1.indexOf("#");
3006
+ let searchPos = location$1.indexOf("?");
3007
+ if (hashPos < searchPos && hashPos >= 0) searchPos = -1;
3008
+ if (searchPos > -1) {
3009
+ path = location$1.slice(0, searchPos);
3010
+ searchString = location$1.slice(searchPos + 1, hashPos > -1 ? hashPos : location$1.length);
3011
+ query = parseQuery$1(searchString);
3012
+ }
3013
+ if (hashPos > -1) {
3014
+ path = path || location$1.slice(0, hashPos);
3015
+ hash = location$1.slice(hashPos, location$1.length);
3016
+ }
3017
+ path = resolveRelativePath(path != null ? path : location$1, currentLocation);
3018
+ return {
3019
+ fullPath: path + (searchString && "?") + searchString + hash,
3020
+ path,
3021
+ query,
3022
+ hash: decode(hash)
3023
+ };
3024
+ }
3025
+ function stringifyURL(stringifyQuery$1, location$1) {
3026
+ const query = location$1.query ? stringifyQuery$1(location$1.query) : "";
3027
+ return location$1.path + (query && "?") + query + (location$1.hash || "");
3028
+ }
3029
+ function stripBase(pathname, base) {
3030
+ if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) return pathname;
3031
+ return pathname.slice(base.length) || "/";
3032
+ }
3033
+ function isSameRouteLocation(stringifyQuery$1, a, b) {
3034
+ const aLastIndex = a.matched.length - 1;
3035
+ const bLastIndex = b.matched.length - 1;
3036
+ return aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery$1(a.query) === stringifyQuery$1(b.query) && a.hash === b.hash;
3037
+ }
3038
+ function isSameRouteRecord(a, b) {
3039
+ return (a.aliasOf || a) === (b.aliasOf || b);
3040
+ }
3041
+ function isSameRouteLocationParams(a, b) {
3042
+ if (Object.keys(a).length !== Object.keys(b).length) return false;
3043
+ for (const key in a) if (!isSameRouteLocationParamsValue(a[key], b[key])) return false;
3044
+ return true;
3045
+ }
3046
+ function isSameRouteLocationParamsValue(a, b) {
3047
+ return isArray$3(a) ? isEquivalentArray(a, b) : isArray$3(b) ? isEquivalentArray(b, a) : a === b;
3048
+ }
3049
+ function isEquivalentArray(a, b) {
3050
+ return isArray$3(b) ? a.length === b.length && a.every((value, i$1) => value === b[i$1]) : a.length === 1 && a[0] === b;
3051
+ }
3052
+ function resolveRelativePath(to, from) {
3053
+ if (to.startsWith("/")) return to;
3054
+ if (!to) return from;
3055
+ const fromSegments = from.split("/");
3056
+ const toSegments = to.split("/");
3057
+ const lastToSegment = toSegments[toSegments.length - 1];
3058
+ if (lastToSegment === ".." || lastToSegment === ".") toSegments.push("");
3059
+ let position = fromSegments.length - 1;
3060
+ let toPosition;
3061
+ let segment;
3062
+ for (toPosition = 0; toPosition < toSegments.length; toPosition++) {
3063
+ segment = toSegments[toPosition];
3064
+ if (segment === ".") continue;
3065
+ if (segment === "..") {
3066
+ if (position > 1) position--;
3067
+ } else break;
3068
+ }
3069
+ return fromSegments.slice(0, position).join("/") + "/" + toSegments.slice(toPosition).join("/");
3070
+ }
3071
+ var START_LOCATION_NORMALIZED = {
3072
+ path: "/",
3073
+ name: void 0,
3074
+ params: {},
3075
+ query: {},
3076
+ hash: "",
3077
+ fullPath: "/",
3078
+ matched: [],
3079
+ meta: {},
3080
+ redirectedFrom: void 0
3081
+ };
3082
+ var NavigationType;
3083
+ (function(NavigationType$1) {
3084
+ NavigationType$1["pop"] = "pop";
3085
+ NavigationType$1["push"] = "push";
3086
+ })(NavigationType || (NavigationType = {}));
3087
+ var NavigationDirection;
3088
+ (function(NavigationDirection$1) {
3089
+ NavigationDirection$1["back"] = "back";
3090
+ NavigationDirection$1["forward"] = "forward";
3091
+ NavigationDirection$1["unknown"] = "";
3092
+ })(NavigationDirection || (NavigationDirection = {}));
3093
+ function normalizeBase(base) {
3094
+ if (!base) if (isBrowser) {
3095
+ const baseEl = document.querySelector("base");
3096
+ base = baseEl && baseEl.getAttribute("href") || "/";
3097
+ base = base.replace(/^\w+:\/\/[^\/]+/, "");
3098
+ } else base = "/";
3099
+ if (base[0] !== "/" && base[0] !== "#") base = "/" + base;
3100
+ return removeTrailingSlash(base);
3101
+ }
3102
+ var BEFORE_HASH_RE = /^[^#]+#/;
3103
+ function createHref(base, location$1) {
3104
+ return base.replace(BEFORE_HASH_RE, "#") + location$1;
3105
+ }
3106
+ function getElementPosition(el, offset) {
3107
+ const docRect = document.documentElement.getBoundingClientRect();
3108
+ const elRect = el.getBoundingClientRect();
3109
+ return {
3110
+ behavior: offset.behavior,
3111
+ left: elRect.left - docRect.left - (offset.left || 0),
3112
+ top: elRect.top - docRect.top - (offset.top || 0)
3113
+ };
3114
+ }
3115
+ var computeScrollPosition = () => ({
3116
+ left: window.scrollX,
3117
+ top: window.scrollY
3118
+ });
3119
+ function scrollToPosition(position) {
3120
+ let scrollToOptions;
3121
+ if ("el" in position) {
3122
+ const positionEl = position.el;
3123
+ const isIdSelector = typeof positionEl === "string" && positionEl.startsWith("#");
3124
+ const el = typeof positionEl === "string" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;
3125
+ if (!el) return;
3126
+ scrollToOptions = getElementPosition(el, position);
3127
+ } else scrollToOptions = position;
3128
+ if ("scrollBehavior" in document.documentElement.style) window.scrollTo(scrollToOptions);
3129
+ else window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);
3130
+ }
3131
+ function getScrollKey(path, delta) {
3132
+ return (history.state ? history.state.position - delta : -1) + path;
3133
+ }
3134
+ var scrollPositions = /* @__PURE__ */ new Map();
3135
+ function saveScrollPosition(key, scrollPosition) {
3136
+ scrollPositions.set(key, scrollPosition);
3137
+ }
3138
+ function getSavedScrollPosition(key) {
3139
+ const scroll = scrollPositions.get(key);
3140
+ scrollPositions.delete(key);
3141
+ return scroll;
3142
+ }
3143
+ var createBaseLocation = () => location.protocol + "//" + location.host;
3144
+ function createCurrentLocation(base, location$1) {
3145
+ const { pathname, search, hash } = location$1;
3146
+ const hashPos = base.indexOf("#");
3147
+ if (hashPos > -1) {
3148
+ let slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;
3149
+ let pathFromHash = hash.slice(slicePos);
3150
+ if (pathFromHash[0] !== "/") pathFromHash = "/" + pathFromHash;
3151
+ return stripBase(pathFromHash, "");
3618
3152
  }
3619
- exports.whiteList = getDefaultWhiteList$1();
3620
- exports.getDefaultWhiteList = getDefaultWhiteList$1;
3621
- exports.onAttr = onAttr;
3622
- exports.onIgnoreAttr = onIgnoreAttr;
3623
- exports.safeAttrValue = safeAttrValue$1;
3624
- }));
3625
- var require_util$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3626
- module.exports = {
3627
- indexOf: function(arr, item) {
3628
- var i$1, j;
3629
- if (Array.prototype.indexOf) return arr.indexOf(item);
3630
- for (i$1 = 0, j = arr.length; i$1 < j; i$1++) if (arr[i$1] === item) return i$1;
3631
- return -1;
3632
- },
3633
- forEach: function(arr, fn, scope) {
3634
- var i$1, j;
3635
- if (Array.prototype.forEach) return arr.forEach(fn, scope);
3636
- for (i$1 = 0, j = arr.length; i$1 < j; i$1++) fn.call(scope, arr[i$1], i$1, arr);
3637
- },
3638
- trim: function(str) {
3639
- if (String.prototype.trim) return str.trim();
3640
- return str.replace(/(^\s*)|(\s*$)/g, "");
3641
- },
3642
- trimRight: function(str) {
3643
- if (String.prototype.trimRight) return str.trimRight();
3644
- return str.replace(/(\s*$)/g, "");
3153
+ return stripBase(pathname, base) + search + hash;
3154
+ }
3155
+ function useHistoryListeners(base, historyState, currentLocation, replace) {
3156
+ let listeners = [];
3157
+ let teardowns = [];
3158
+ let pauseState = null;
3159
+ const popStateHandler = ({ state }) => {
3160
+ const to = createCurrentLocation(base, location);
3161
+ const from = currentLocation.value;
3162
+ const fromState = historyState.value;
3163
+ let delta = 0;
3164
+ if (state) {
3165
+ currentLocation.value = to;
3166
+ historyState.value = state;
3167
+ if (pauseState && pauseState === from) {
3168
+ pauseState = null;
3169
+ return;
3170
+ }
3171
+ delta = fromState ? state.position - fromState.position : 0;
3172
+ } else replace(to);
3173
+ listeners.forEach((listener) => {
3174
+ listener(currentLocation.value, from, {
3175
+ delta,
3176
+ type: NavigationType.pop,
3177
+ direction: delta ? delta > 0 ? NavigationDirection.forward : NavigationDirection.back : NavigationDirection.unknown
3178
+ });
3179
+ });
3180
+ };
3181
+ function pauseListeners() {
3182
+ pauseState = currentLocation.value;
3183
+ }
3184
+ function listen(callback) {
3185
+ listeners.push(callback);
3186
+ const teardown = () => {
3187
+ const index = listeners.indexOf(callback);
3188
+ if (index > -1) listeners.splice(index, 1);
3189
+ };
3190
+ teardowns.push(teardown);
3191
+ return teardown;
3192
+ }
3193
+ function beforeUnloadListener() {
3194
+ const { history: history$1 } = window;
3195
+ if (!history$1.state) return;
3196
+ history$1.replaceState(assign({}, history$1.state, { scroll: computeScrollPosition() }), "");
3197
+ }
3198
+ function destroy() {
3199
+ for (const teardown of teardowns) teardown();
3200
+ teardowns = [];
3201
+ window.removeEventListener("popstate", popStateHandler);
3202
+ window.removeEventListener("beforeunload", beforeUnloadListener);
3203
+ }
3204
+ window.addEventListener("popstate", popStateHandler);
3205
+ window.addEventListener("beforeunload", beforeUnloadListener, { passive: true });
3206
+ return {
3207
+ pauseListeners,
3208
+ listen,
3209
+ destroy
3210
+ };
3211
+ }
3212
+ function buildState(back, current, forward, replaced = false, computeScroll = false) {
3213
+ return {
3214
+ back,
3215
+ current,
3216
+ forward,
3217
+ replaced,
3218
+ position: window.history.length,
3219
+ scroll: computeScroll ? computeScrollPosition() : null
3220
+ };
3221
+ }
3222
+ function useHistoryStateNavigation(base) {
3223
+ const { history: history$1, location: location$1 } = window;
3224
+ const currentLocation = { value: createCurrentLocation(base, location$1) };
3225
+ const historyState = { value: history$1.state };
3226
+ if (!historyState.value) changeLocation(currentLocation.value, {
3227
+ back: null,
3228
+ current: currentLocation.value,
3229
+ forward: null,
3230
+ position: history$1.length - 1,
3231
+ replaced: true,
3232
+ scroll: null
3233
+ }, true);
3234
+ function changeLocation(to, state, replace$1) {
3235
+ const hashIndex = base.indexOf("#");
3236
+ const url = hashIndex > -1 ? (location$1.host && document.querySelector("base") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to;
3237
+ try {
3238
+ history$1[replace$1 ? "replaceState" : "pushState"](state, "", url);
3239
+ historyState.value = state;
3240
+ } catch (err) {
3241
+ console.error(err);
3242
+ location$1[replace$1 ? "replace" : "assign"](url);
3645
3243
  }
3244
+ }
3245
+ function replace(to, data) {
3246
+ changeLocation(to, assign({}, history$1.state, buildState(historyState.value.back, to, historyState.value.forward, true), data, { position: historyState.value.position }), true);
3247
+ currentLocation.value = to;
3248
+ }
3249
+ function push(to, data) {
3250
+ const currentState = assign({}, historyState.value, history$1.state, {
3251
+ forward: to,
3252
+ scroll: computeScrollPosition()
3253
+ });
3254
+ changeLocation(currentState.current, currentState, true);
3255
+ changeLocation(to, assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data), false);
3256
+ currentLocation.value = to;
3257
+ }
3258
+ return {
3259
+ location: currentLocation,
3260
+ state: historyState,
3261
+ push,
3262
+ replace
3646
3263
  };
3647
- }));
3648
- var require_parser$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3649
- var _$3 = require_util$1();
3650
- function parseStyle$1(css, onAttr$1) {
3651
- css = _$3.trimRight(css);
3652
- if (css[css.length - 1] !== ";") css += ";";
3653
- var cssLength = css.length;
3654
- var isParenthesisOpen = false;
3655
- var lastPos = 0;
3656
- var i$1 = 0;
3657
- var retCSS = "";
3658
- function addNewAttr() {
3659
- if (!isParenthesisOpen) {
3660
- var source = _$3.trim(css.slice(lastPos, i$1));
3661
- var j$1 = source.indexOf(":");
3662
- if (j$1 !== -1) {
3663
- var name = _$3.trim(source.slice(0, j$1));
3664
- var value = _$3.trim(source.slice(j$1 + 1));
3665
- if (name) {
3666
- var ret = onAttr$1(lastPos, retCSS.length, name, value, source);
3667
- if (ret) retCSS += ret + "; ";
3264
+ }
3265
+ function createWebHistory(base) {
3266
+ base = normalizeBase(base);
3267
+ const historyNavigation = useHistoryStateNavigation(base);
3268
+ const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);
3269
+ function go(delta, triggerListeners = true) {
3270
+ if (!triggerListeners) historyListeners.pauseListeners();
3271
+ history.go(delta);
3272
+ }
3273
+ const routerHistory = assign({
3274
+ location: "",
3275
+ base,
3276
+ go,
3277
+ createHref: createHref.bind(null, base)
3278
+ }, historyNavigation, historyListeners);
3279
+ Object.defineProperty(routerHistory, "location", {
3280
+ enumerable: true,
3281
+ get: () => historyNavigation.location.value
3282
+ });
3283
+ Object.defineProperty(routerHistory, "state", {
3284
+ enumerable: true,
3285
+ get: () => historyNavigation.state.value
3286
+ });
3287
+ return routerHistory;
3288
+ }
3289
+ function isRouteLocation(route) {
3290
+ return typeof route === "string" || route && typeof route === "object";
3291
+ }
3292
+ function isRouteName(name) {
3293
+ return typeof name === "string" || typeof name === "symbol";
3294
+ }
3295
+ var NavigationFailureSymbol = Symbol("");
3296
+ var NavigationFailureType;
3297
+ (function(NavigationFailureType$1) {
3298
+ NavigationFailureType$1[NavigationFailureType$1["aborted"] = 4] = "aborted";
3299
+ NavigationFailureType$1[NavigationFailureType$1["cancelled"] = 8] = "cancelled";
3300
+ NavigationFailureType$1[NavigationFailureType$1["duplicated"] = 16] = "duplicated";
3301
+ })(NavigationFailureType || (NavigationFailureType = {}));
3302
+ function createRouterError(type, params) {
3303
+ return assign(/* @__PURE__ */ new Error(), {
3304
+ type,
3305
+ [NavigationFailureSymbol]: true
3306
+ }, params);
3307
+ }
3308
+ function isNavigationFailure(error, type) {
3309
+ return error instanceof Error && NavigationFailureSymbol in error && (type == null || !!(error.type & type));
3310
+ }
3311
+ var BASE_PARAM_PATTERN = "[^/]+?";
3312
+ var BASE_PATH_PARSER_OPTIONS = {
3313
+ sensitive: false,
3314
+ strict: false,
3315
+ start: true,
3316
+ end: true
3317
+ };
3318
+ var REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g;
3319
+ function tokensToParser(segments, extraOptions) {
3320
+ const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);
3321
+ const score = [];
3322
+ let pattern = options.start ? "^" : "";
3323
+ const keys = [];
3324
+ for (const segment of segments) {
3325
+ const segmentScores = segment.length ? [] : [90];
3326
+ if (options.strict && !segment.length) pattern += "/";
3327
+ for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {
3328
+ const token = segment[tokenIndex];
3329
+ let subSegmentScore = 40 + (options.sensitive ? .25 : 0);
3330
+ if (token.type === 0) {
3331
+ if (!tokenIndex) pattern += "/";
3332
+ pattern += token.value.replace(REGEX_CHARS_RE, "\\$&");
3333
+ subSegmentScore += 40;
3334
+ } else if (token.type === 1) {
3335
+ const { value, repeatable, optional, regexp } = token;
3336
+ keys.push({
3337
+ name: value,
3338
+ repeatable,
3339
+ optional
3340
+ });
3341
+ const re$1 = regexp ? regexp : BASE_PARAM_PATTERN;
3342
+ if (re$1 !== BASE_PARAM_PATTERN) {
3343
+ subSegmentScore += 10;
3344
+ try {
3345
+ `${re$1}`;
3346
+ } catch (err) {
3347
+ throw new Error(`Invalid custom RegExp for param "${value}" (${re$1}): ` + err.message);
3668
3348
  }
3669
3349
  }
3350
+ let subPattern = repeatable ? `((?:${re$1})(?:/(?:${re$1}))*)` : `(${re$1})`;
3351
+ if (!tokenIndex) subPattern = optional && segment.length < 2 ? `(?:/${subPattern})` : "/" + subPattern;
3352
+ if (optional) subPattern += "?";
3353
+ pattern += subPattern;
3354
+ subSegmentScore += 20;
3355
+ if (optional) subSegmentScore += -8;
3356
+ if (repeatable) subSegmentScore += -20;
3357
+ if (re$1 === ".*") subSegmentScore += -50;
3670
3358
  }
3671
- lastPos = i$1 + 1;
3359
+ segmentScores.push(subSegmentScore);
3672
3360
  }
3673
- for (; i$1 < cssLength; i$1++) {
3674
- var c = css[i$1];
3675
- if (c === "/" && css[i$1 + 1] === "*") {
3676
- var j = css.indexOf("*/", i$1 + 2);
3677
- if (j === -1) break;
3678
- i$1 = j + 1;
3679
- lastPos = i$1 + 1;
3680
- isParenthesisOpen = false;
3681
- } else if (c === "(") isParenthesisOpen = true;
3682
- else if (c === ")") isParenthesisOpen = false;
3683
- else if (c === ";") if (isParenthesisOpen) {} else addNewAttr();
3684
- else if (c === "\n") addNewAttr();
3361
+ score.push(segmentScores);
3362
+ }
3363
+ if (options.strict && options.end) {
3364
+ const i$1 = score.length - 1;
3365
+ score[i$1][score[i$1].length - 1] += .7000000000000001;
3366
+ }
3367
+ if (!options.strict) pattern += "/?";
3368
+ if (options.end) pattern += "$";
3369
+ else if (options.strict && !pattern.endsWith("/")) pattern += "(?:/|$)";
3370
+ const re = new RegExp(pattern, options.sensitive ? "" : "i");
3371
+ function parse(path) {
3372
+ const match = path.match(re);
3373
+ const params = {};
3374
+ if (!match) return null;
3375
+ for (let i$1 = 1; i$1 < match.length; i$1++) {
3376
+ const value = match[i$1] || "";
3377
+ const key = keys[i$1 - 1];
3378
+ params[key.name] = value && key.repeatable ? value.split("/") : value;
3685
3379
  }
3686
- return _$3.trim(retCSS);
3380
+ return params;
3687
3381
  }
3688
- module.exports = parseStyle$1;
3689
- }));
3690
- var require_css = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3691
- var DEFAULT$3 = require_default$1();
3692
- var parseStyle = require_parser$1();
3693
- require_util$1();
3694
- function isNull$1(obj) {
3695
- return obj === void 0 || obj === null;
3382
+ function stringify(params) {
3383
+ let path = "";
3384
+ let avoidDuplicatedSlash = false;
3385
+ for (const segment of segments) {
3386
+ if (!avoidDuplicatedSlash || !path.endsWith("/")) path += "/";
3387
+ avoidDuplicatedSlash = false;
3388
+ for (const token of segment) if (token.type === 0) path += token.value;
3389
+ else if (token.type === 1) {
3390
+ const { value, repeatable, optional } = token;
3391
+ const param = value in params ? params[value] : "";
3392
+ if (isArray$3(param) && !repeatable) throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`);
3393
+ const text = isArray$3(param) ? param.join("/") : param;
3394
+ if (!text) if (optional) {
3395
+ if (segment.length < 2) if (path.endsWith("/")) path = path.slice(0, -1);
3396
+ else avoidDuplicatedSlash = true;
3397
+ } else throw new Error(`Missing required param "${value}"`);
3398
+ path += text;
3399
+ }
3400
+ }
3401
+ return path || "/";
3696
3402
  }
3697
- function shallowCopyObject$1(obj) {
3698
- var ret = {};
3699
- for (var i$1 in obj) ret[i$1] = obj[i$1];
3700
- return ret;
3403
+ return {
3404
+ re,
3405
+ score,
3406
+ keys,
3407
+ parse,
3408
+ stringify
3409
+ };
3410
+ }
3411
+ function compareScoreArray(a, b) {
3412
+ let i$1 = 0;
3413
+ while (i$1 < a.length && i$1 < b.length) {
3414
+ const diff = b[i$1] - a[i$1];
3415
+ if (diff) return diff;
3416
+ i$1++;
3701
3417
  }
3702
- function FilterCSS$3(options) {
3703
- options = shallowCopyObject$1(options || {});
3704
- options.whiteList = options.whiteList || DEFAULT$3.whiteList;
3705
- options.onAttr = options.onAttr || DEFAULT$3.onAttr;
3706
- options.onIgnoreAttr = options.onIgnoreAttr || DEFAULT$3.onIgnoreAttr;
3707
- options.safeAttrValue = options.safeAttrValue || DEFAULT$3.safeAttrValue;
3708
- this.options = options;
3418
+ if (a.length < b.length) return a.length === 1 && a[0] === 80 ? -1 : 1;
3419
+ else if (a.length > b.length) return b.length === 1 && b[0] === 80 ? 1 : -1;
3420
+ return 0;
3421
+ }
3422
+ function comparePathParserScore(a, b) {
3423
+ let i$1 = 0;
3424
+ const aScore = a.score;
3425
+ const bScore = b.score;
3426
+ while (i$1 < aScore.length && i$1 < bScore.length) {
3427
+ const comp = compareScoreArray(aScore[i$1], bScore[i$1]);
3428
+ if (comp) return comp;
3429
+ i$1++;
3709
3430
  }
3710
- FilterCSS$3.prototype.process = function(css) {
3711
- css = css || "";
3712
- css = css.toString();
3713
- if (!css) return "";
3714
- var options = this.options;
3715
- var whiteList = options.whiteList;
3716
- var onAttr$1 = options.onAttr;
3717
- var onIgnoreAttr$1 = options.onIgnoreAttr;
3718
- var safeAttrValue$2 = options.safeAttrValue;
3719
- return parseStyle(css, function(sourcePosition, position, name, value, source) {
3720
- var check = whiteList[name];
3721
- var isWhite = false;
3722
- if (check === true) isWhite = check;
3723
- else if (typeof check === "function") isWhite = check(value);
3724
- else if (check instanceof RegExp) isWhite = check.test(value);
3725
- if (isWhite !== true) isWhite = false;
3726
- value = safeAttrValue$2(name, value);
3727
- if (!value) return;
3728
- var opts = {
3729
- position,
3730
- sourcePosition,
3731
- source,
3732
- isWhite
3733
- };
3734
- if (isWhite) {
3735
- var ret = onAttr$1(name, value, opts);
3736
- if (isNull$1(ret)) return name + ":" + value;
3737
- else return ret;
3738
- } else {
3739
- var ret = onIgnoreAttr$1(name, value, opts);
3740
- if (!isNull$1(ret)) return ret;
3741
- }
3431
+ if (Math.abs(bScore.length - aScore.length) === 1) {
3432
+ if (isLastScoreNegative(aScore)) return 1;
3433
+ if (isLastScoreNegative(bScore)) return -1;
3434
+ }
3435
+ return bScore.length - aScore.length;
3436
+ }
3437
+ function isLastScoreNegative(score) {
3438
+ const last = score[score.length - 1];
3439
+ return score.length > 0 && last[last.length - 1] < 0;
3440
+ }
3441
+ var ROOT_TOKEN = {
3442
+ type: 0,
3443
+ value: ""
3444
+ };
3445
+ var VALID_PARAM_RE = /[a-zA-Z0-9_]/;
3446
+ function tokenizePath(path) {
3447
+ if (!path) return [[]];
3448
+ if (path === "/") return [[ROOT_TOKEN]];
3449
+ if (!path.startsWith("/")) throw new Error(`Invalid path "${path}"`);
3450
+ function crash(message) {
3451
+ throw new Error(`ERR (${state})/"${buffer}": ${message}`);
3452
+ }
3453
+ let state = 0;
3454
+ let previousState = state;
3455
+ const tokens = [];
3456
+ let segment;
3457
+ function finalizeSegment() {
3458
+ if (segment) tokens.push(segment);
3459
+ segment = [];
3460
+ }
3461
+ let i$1 = 0;
3462
+ let char;
3463
+ let buffer = "";
3464
+ let customRe = "";
3465
+ function consumeBuffer() {
3466
+ if (!buffer) return;
3467
+ if (state === 0) segment.push({
3468
+ type: 0,
3469
+ value: buffer
3742
3470
  });
3743
- };
3744
- module.exports = FilterCSS$3;
3745
- }));
3746
- var require_lib$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3747
- var DEFAULT$2 = require_default$1();
3748
- var FilterCSS$2 = require_css();
3749
- function filterCSS(html, options) {
3750
- return new FilterCSS$2(options).process(html);
3471
+ else if (state === 1 || state === 2 || state === 3) {
3472
+ if (segment.length > 1 && (char === "*" || char === "+")) crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);
3473
+ segment.push({
3474
+ type: 1,
3475
+ value: buffer,
3476
+ regexp: customRe,
3477
+ repeatable: char === "*" || char === "+",
3478
+ optional: char === "*" || char === "?"
3479
+ });
3480
+ } else crash("Invalid state to consume buffer");
3481
+ buffer = "";
3751
3482
  }
3752
- exports = module.exports = filterCSS;
3753
- exports.FilterCSS = FilterCSS$2;
3754
- for (var i in DEFAULT$2) exports[i] = DEFAULT$2[i];
3755
- if (typeof window !== "undefined") window.filterCSS = module.exports;
3756
- }));
3757
- var require_util = /* @__PURE__ */ __commonJSMin(((exports, module) => {
3758
- module.exports = {
3759
- indexOf: function(arr, item) {
3760
- var i$1, j;
3761
- if (Array.prototype.indexOf) return arr.indexOf(item);
3762
- for (i$1 = 0, j = arr.length; i$1 < j; i$1++) if (arr[i$1] === item) return i$1;
3763
- return -1;
3764
- },
3765
- forEach: function(arr, fn, scope) {
3766
- var i$1, j;
3767
- if (Array.prototype.forEach) return arr.forEach(fn, scope);
3768
- for (i$1 = 0, j = arr.length; i$1 < j; i$1++) fn.call(scope, arr[i$1], i$1, arr);
3769
- },
3770
- trim: function(str) {
3771
- if (String.prototype.trim) return str.trim();
3772
- return str.replace(/(^\s*)|(\s*$)/g, "");
3773
- },
3774
- spaceIndex: function(str) {
3775
- var match = /\s|\n|\t/.exec(str);
3776
- return match ? match.index : -1;
3483
+ function addCharToBuffer() {
3484
+ buffer += char;
3485
+ }
3486
+ while (i$1 < path.length) {
3487
+ char = path[i$1++];
3488
+ if (char === "\\" && state !== 2) {
3489
+ previousState = state;
3490
+ state = 4;
3491
+ continue;
3492
+ }
3493
+ switch (state) {
3494
+ case 0:
3495
+ if (char === "/") {
3496
+ if (buffer) consumeBuffer();
3497
+ finalizeSegment();
3498
+ } else if (char === ":") {
3499
+ consumeBuffer();
3500
+ state = 1;
3501
+ } else addCharToBuffer();
3502
+ break;
3503
+ case 4:
3504
+ addCharToBuffer();
3505
+ state = previousState;
3506
+ break;
3507
+ case 1:
3508
+ if (char === "(") state = 2;
3509
+ else if (VALID_PARAM_RE.test(char)) addCharToBuffer();
3510
+ else {
3511
+ consumeBuffer();
3512
+ state = 0;
3513
+ if (char !== "*" && char !== "?" && char !== "+") i$1--;
3514
+ }
3515
+ break;
3516
+ case 2:
3517
+ if (char === ")") if (customRe[customRe.length - 1] == "\\") customRe = customRe.slice(0, -1) + char;
3518
+ else state = 3;
3519
+ else customRe += char;
3520
+ break;
3521
+ case 3:
3522
+ consumeBuffer();
3523
+ state = 0;
3524
+ if (char !== "*" && char !== "?" && char !== "+") i$1--;
3525
+ customRe = "";
3526
+ break;
3527
+ default:
3528
+ crash("Unknown state");
3529
+ break;
3777
3530
  }
3778
- };
3779
- }));
3780
- var require_default = /* @__PURE__ */ __commonJSMin(((exports) => {
3781
- var FilterCSS$1 = require_lib$1().FilterCSS;
3782
- var getDefaultCSSWhiteList = require_lib$1().getDefaultWhiteList;
3783
- var _$2 = require_util();
3784
- function getDefaultWhiteList() {
3785
- return {
3786
- a: [
3787
- "target",
3788
- "href",
3789
- "title"
3790
- ],
3791
- abbr: ["title"],
3792
- address: [],
3793
- area: [
3794
- "shape",
3795
- "coords",
3796
- "href",
3797
- "alt"
3798
- ],
3799
- article: [],
3800
- aside: [],
3801
- audio: [
3802
- "autoplay",
3803
- "controls",
3804
- "crossorigin",
3805
- "loop",
3806
- "muted",
3807
- "preload",
3808
- "src"
3809
- ],
3810
- b: [],
3811
- bdi: ["dir"],
3812
- bdo: ["dir"],
3813
- big: [],
3814
- blockquote: ["cite"],
3815
- br: [],
3816
- caption: [],
3817
- center: [],
3818
- cite: [],
3819
- code: [],
3820
- col: [
3821
- "align",
3822
- "valign",
3823
- "span",
3824
- "width"
3825
- ],
3826
- colgroup: [
3827
- "align",
3828
- "valign",
3829
- "span",
3830
- "width"
3831
- ],
3832
- dd: [],
3833
- del: ["datetime"],
3834
- details: ["open"],
3835
- div: [],
3836
- dl: [],
3837
- dt: [],
3838
- em: [],
3839
- figcaption: [],
3840
- figure: [],
3841
- font: [
3842
- "color",
3843
- "size",
3844
- "face"
3845
- ],
3846
- footer: [],
3847
- h1: [],
3848
- h2: [],
3849
- h3: [],
3850
- h4: [],
3851
- h5: [],
3852
- h6: [],
3853
- header: [],
3854
- hr: [],
3855
- i: [],
3856
- img: [
3857
- "src",
3858
- "alt",
3859
- "title",
3860
- "width",
3861
- "height",
3862
- "loading"
3863
- ],
3864
- ins: ["datetime"],
3865
- kbd: [],
3866
- li: [],
3867
- mark: [],
3868
- nav: [],
3869
- ol: [],
3870
- p: [],
3871
- pre: [],
3872
- s: [],
3873
- section: [],
3874
- small: [],
3875
- span: [],
3876
- sub: [],
3877
- summary: [],
3878
- sup: [],
3879
- strong: [],
3880
- strike: [],
3881
- table: [
3882
- "width",
3883
- "border",
3884
- "align",
3885
- "valign"
3886
- ],
3887
- tbody: ["align", "valign"],
3888
- td: [
3889
- "width",
3890
- "rowspan",
3891
- "colspan",
3892
- "align",
3893
- "valign"
3894
- ],
3895
- tfoot: ["align", "valign"],
3896
- th: [
3897
- "width",
3898
- "rowspan",
3899
- "colspan",
3900
- "align",
3901
- "valign"
3902
- ],
3903
- thead: ["align", "valign"],
3904
- tr: [
3905
- "rowspan",
3906
- "align",
3907
- "valign"
3908
- ],
3909
- tt: [],
3910
- u: [],
3911
- ul: [],
3912
- video: [
3913
- "autoplay",
3914
- "controls",
3915
- "crossorigin",
3916
- "loop",
3917
- "muted",
3918
- "playsinline",
3919
- "poster",
3920
- "preload",
3921
- "src",
3922
- "height",
3923
- "width"
3924
- ]
3925
- };
3926
3531
  }
3927
- var defaultCSSFilter = new FilterCSS$1();
3928
- function onTag(tag, html, options) {}
3929
- function onIgnoreTag(tag, html, options) {}
3930
- function onTagAttr(tag, name, value) {}
3931
- function onIgnoreTagAttr(tag, name, value) {}
3932
- function escapeHtml(html) {
3933
- return html.replace(REGEXP_LT, "&lt;").replace(REGEXP_GT, "&gt;");
3532
+ if (state === 2) crash(`Unfinished custom RegExp for param "${buffer}"`);
3533
+ consumeBuffer();
3534
+ finalizeSegment();
3535
+ return tokens;
3536
+ }
3537
+ function createRouteRecordMatcher(record, parent, options) {
3538
+ const matcher = assign(tokensToParser(tokenizePath(record.path), options), {
3539
+ record,
3540
+ parent,
3541
+ children: [],
3542
+ alias: []
3543
+ });
3544
+ if (parent) {
3545
+ if (!matcher.record.aliasOf === !parent.record.aliasOf) parent.children.push(matcher);
3934
3546
  }
3935
- function safeAttrValue(tag, name, value, cssFilter) {
3936
- value = friendlyAttrValue(value);
3937
- if (name === "href" || name === "src") {
3938
- value = _$2.trim(value);
3939
- if (value === "#") return "#";
3940
- if (!(value.substr(0, 7) === "http://" || value.substr(0, 8) === "https://" || value.substr(0, 7) === "mailto:" || value.substr(0, 4) === "tel:" || value.substr(0, 11) === "data:image/" || value.substr(0, 6) === "ftp://" || value.substr(0, 2) === "./" || value.substr(0, 3) === "../" || value[0] === "#" || value[0] === "/")) return "";
3941
- } else if (name === "background") {
3942
- REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
3943
- if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) return "";
3944
- } else if (name === "style") {
3945
- REGEXP_DEFAULT_ON_TAG_ATTR_7.lastIndex = 0;
3946
- if (REGEXP_DEFAULT_ON_TAG_ATTR_7.test(value)) return "";
3947
- REGEXP_DEFAULT_ON_TAG_ATTR_8.lastIndex = 0;
3948
- if (REGEXP_DEFAULT_ON_TAG_ATTR_8.test(value)) {
3949
- REGEXP_DEFAULT_ON_TAG_ATTR_4.lastIndex = 0;
3950
- if (REGEXP_DEFAULT_ON_TAG_ATTR_4.test(value)) return "";
3547
+ return matcher;
3548
+ }
3549
+ function createRouterMatcher(routes, globalOptions) {
3550
+ const matchers = [];
3551
+ const matcherMap = /* @__PURE__ */ new Map();
3552
+ globalOptions = mergeOptions({
3553
+ strict: false,
3554
+ end: true,
3555
+ sensitive: false
3556
+ }, globalOptions);
3557
+ function getRecordMatcher(name) {
3558
+ return matcherMap.get(name);
3559
+ }
3560
+ function addRoute(record, parent, originalRecord) {
3561
+ const isRootAdd = !originalRecord;
3562
+ const mainNormalizedRecord = normalizeRouteRecord(record);
3563
+ mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;
3564
+ const options = mergeOptions(globalOptions, record);
3565
+ const normalizedRecords = [mainNormalizedRecord];
3566
+ if ("alias" in record) {
3567
+ const aliases = typeof record.alias === "string" ? [record.alias] : record.alias;
3568
+ for (const alias of aliases) normalizedRecords.push(normalizeRouteRecord(assign({}, mainNormalizedRecord, {
3569
+ components: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,
3570
+ path: alias,
3571
+ aliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord
3572
+ })));
3573
+ }
3574
+ let matcher;
3575
+ let originalMatcher;
3576
+ for (const normalizedRecord of normalizedRecords) {
3577
+ const { path } = normalizedRecord;
3578
+ if (parent && path[0] !== "/") {
3579
+ const parentPath = parent.record.path;
3580
+ const connectingSlash = parentPath[parentPath.length - 1] === "/" ? "" : "/";
3581
+ normalizedRecord.path = parent.record.path + (path && connectingSlash + path);
3951
3582
  }
3952
- if (cssFilter !== false) {
3953
- cssFilter = cssFilter || defaultCSSFilter;
3954
- value = cssFilter.process(value);
3583
+ matcher = createRouteRecordMatcher(normalizedRecord, parent, options);
3584
+ if (originalRecord) originalRecord.alias.push(matcher);
3585
+ else {
3586
+ originalMatcher = originalMatcher || matcher;
3587
+ if (originalMatcher !== matcher) originalMatcher.alias.push(matcher);
3588
+ if (isRootAdd && record.name && !isAliasRecord(matcher)) removeRoute(record.name);
3589
+ }
3590
+ if (isMatchable(matcher)) insertMatcher(matcher);
3591
+ if (mainNormalizedRecord.children) {
3592
+ const children = mainNormalizedRecord.children;
3593
+ for (let i$1 = 0; i$1 < children.length; i$1++) addRoute(children[i$1], matcher, originalRecord && originalRecord.children[i$1]);
3955
3594
  }
3595
+ originalRecord = originalRecord || matcher;
3956
3596
  }
3957
- value = escapeAttrValue(value);
3958
- return value;
3597
+ return originalMatcher ? () => {
3598
+ removeRoute(originalMatcher);
3599
+ } : noop;
3959
3600
  }
3960
- var REGEXP_LT = /</g;
3961
- var REGEXP_GT = />/g;
3962
- var REGEXP_QUOTE = /"/g;
3963
- var REGEXP_QUOTE_2 = /&quot;/g;
3964
- var REGEXP_ATTR_VALUE_1 = /&#([a-zA-Z0-9]*);?/gim;
3965
- var REGEXP_ATTR_VALUE_COLON = /&colon;?/gim;
3966
- var REGEXP_ATTR_VALUE_NEWLINE = /&newline;?/gim;
3967
- var REGEXP_DEFAULT_ON_TAG_ATTR_4 = /((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a):/gi;
3968
- var REGEXP_DEFAULT_ON_TAG_ATTR_7 = /e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi;
3969
- var REGEXP_DEFAULT_ON_TAG_ATTR_8 = /u\s*r\s*l\s*\(.*/gi;
3970
- function escapeQuote(str) {
3971
- return str.replace(REGEXP_QUOTE, "&quot;");
3601
+ function removeRoute(matcherRef) {
3602
+ if (isRouteName(matcherRef)) {
3603
+ const matcher = matcherMap.get(matcherRef);
3604
+ if (matcher) {
3605
+ matcherMap.delete(matcherRef);
3606
+ matchers.splice(matchers.indexOf(matcher), 1);
3607
+ matcher.children.forEach(removeRoute);
3608
+ matcher.alias.forEach(removeRoute);
3609
+ }
3610
+ } else {
3611
+ const index = matchers.indexOf(matcherRef);
3612
+ if (index > -1) {
3613
+ matchers.splice(index, 1);
3614
+ if (matcherRef.record.name) matcherMap.delete(matcherRef.record.name);
3615
+ matcherRef.children.forEach(removeRoute);
3616
+ matcherRef.alias.forEach(removeRoute);
3617
+ }
3618
+ }
3619
+ }
3620
+ function getRoutes() {
3621
+ return matchers;
3622
+ }
3623
+ function insertMatcher(matcher) {
3624
+ const index = findInsertionIndex(matcher, matchers);
3625
+ matchers.splice(index, 0, matcher);
3626
+ if (matcher.record.name && !isAliasRecord(matcher)) matcherMap.set(matcher.record.name, matcher);
3627
+ }
3628
+ function resolve(location$1, currentLocation) {
3629
+ let matcher;
3630
+ let params = {};
3631
+ let path;
3632
+ let name;
3633
+ if ("name" in location$1 && location$1.name) {
3634
+ matcher = matcherMap.get(location$1.name);
3635
+ if (!matcher) throw createRouterError(1, { location: location$1 });
3636
+ name = matcher.record.name;
3637
+ params = assign(paramsFromLocation(currentLocation.params, matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)), location$1.params && paramsFromLocation(location$1.params, matcher.keys.map((k) => k.name)));
3638
+ path = matcher.stringify(params);
3639
+ } else if (location$1.path != null) {
3640
+ path = location$1.path;
3641
+ matcher = matchers.find((m) => m.re.test(path));
3642
+ if (matcher) {
3643
+ params = matcher.parse(path);
3644
+ name = matcher.record.name;
3645
+ }
3646
+ } else {
3647
+ matcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path));
3648
+ if (!matcher) throw createRouterError(1, {
3649
+ location: location$1,
3650
+ currentLocation
3651
+ });
3652
+ name = matcher.record.name;
3653
+ params = assign({}, currentLocation.params, location$1.params);
3654
+ path = matcher.stringify(params);
3655
+ }
3656
+ const matched = [];
3657
+ let parentMatcher = matcher;
3658
+ while (parentMatcher) {
3659
+ matched.unshift(parentMatcher.record);
3660
+ parentMatcher = parentMatcher.parent;
3661
+ }
3662
+ return {
3663
+ name,
3664
+ path,
3665
+ params,
3666
+ matched,
3667
+ meta: mergeMetaFields(matched)
3668
+ };
3669
+ }
3670
+ routes.forEach((route) => addRoute(route));
3671
+ function clearRoutes() {
3672
+ matchers.length = 0;
3673
+ matcherMap.clear();
3674
+ }
3675
+ return {
3676
+ addRoute,
3677
+ resolve,
3678
+ removeRoute,
3679
+ clearRoutes,
3680
+ getRoutes,
3681
+ getRecordMatcher
3682
+ };
3683
+ }
3684
+ function paramsFromLocation(params, keys) {
3685
+ const newParams = {};
3686
+ for (const key of keys) if (key in params) newParams[key] = params[key];
3687
+ return newParams;
3688
+ }
3689
+ function normalizeRouteRecord(record) {
3690
+ const normalized = {
3691
+ path: record.path,
3692
+ redirect: record.redirect,
3693
+ name: record.name,
3694
+ meta: record.meta || {},
3695
+ aliasOf: record.aliasOf,
3696
+ beforeEnter: record.beforeEnter,
3697
+ props: normalizeRecordProps(record),
3698
+ children: record.children || [],
3699
+ instances: {},
3700
+ leaveGuards: /* @__PURE__ */ new Set(),
3701
+ updateGuards: /* @__PURE__ */ new Set(),
3702
+ enterCallbacks: {},
3703
+ components: "components" in record ? record.components || null : record.component && { default: record.component }
3704
+ };
3705
+ Object.defineProperty(normalized, "mods", { value: {} });
3706
+ return normalized;
3707
+ }
3708
+ function normalizeRecordProps(record) {
3709
+ const propsObject = {};
3710
+ const props = record.props || false;
3711
+ if ("component" in record) propsObject.default = props;
3712
+ else for (const name in record.components) propsObject[name] = typeof props === "object" ? props[name] : props;
3713
+ return propsObject;
3714
+ }
3715
+ function isAliasRecord(record) {
3716
+ while (record) {
3717
+ if (record.record.aliasOf) return true;
3718
+ record = record.parent;
3719
+ }
3720
+ return false;
3721
+ }
3722
+ function mergeMetaFields(matched) {
3723
+ return matched.reduce((meta, record) => assign(meta, record.meta), {});
3724
+ }
3725
+ function mergeOptions(defaults, partialOptions) {
3726
+ const options = {};
3727
+ for (const key in defaults) options[key] = key in partialOptions ? partialOptions[key] : defaults[key];
3728
+ return options;
3729
+ }
3730
+ function findInsertionIndex(matcher, matchers) {
3731
+ let lower = 0;
3732
+ let upper = matchers.length;
3733
+ while (lower !== upper) {
3734
+ const mid = lower + upper >> 1;
3735
+ if (comparePathParserScore(matcher, matchers[mid]) < 0) upper = mid;
3736
+ else lower = mid + 1;
3972
3737
  }
3973
- function unescapeQuote(str) {
3974
- return str.replace(REGEXP_QUOTE_2, "\"");
3738
+ const insertionAncestor = getInsertionAncestor(matcher);
3739
+ if (insertionAncestor) upper = matchers.lastIndexOf(insertionAncestor, upper - 1);
3740
+ return upper;
3741
+ }
3742
+ function getInsertionAncestor(matcher) {
3743
+ let ancestor = matcher;
3744
+ while (ancestor = ancestor.parent) if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) return ancestor;
3745
+ }
3746
+ function isMatchable({ record }) {
3747
+ return !!(record.name || record.components && Object.keys(record.components).length || record.redirect);
3748
+ }
3749
+ function parseQuery(search) {
3750
+ const query = {};
3751
+ if (search === "" || search === "?") return query;
3752
+ const searchParams = (search[0] === "?" ? search.slice(1) : search).split("&");
3753
+ for (let i$1 = 0; i$1 < searchParams.length; ++i$1) {
3754
+ const searchParam = searchParams[i$1].replace(PLUS_RE, " ");
3755
+ const eqPos = searchParam.indexOf("=");
3756
+ const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));
3757
+ const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));
3758
+ if (key in query) {
3759
+ let currentValue = query[key];
3760
+ if (!isArray$3(currentValue)) currentValue = query[key] = [currentValue];
3761
+ currentValue.push(value);
3762
+ } else query[key] = value;
3975
3763
  }
3976
- function escapeHtmlEntities(str) {
3977
- return str.replace(REGEXP_ATTR_VALUE_1, function replaceUnicode(str$1, code) {
3978
- return code[0] === "x" || code[0] === "X" ? String.fromCharCode(parseInt(code.substr(1), 16)) : String.fromCharCode(parseInt(code, 10));
3764
+ return query;
3765
+ }
3766
+ function stringifyQuery(query) {
3767
+ let search = "";
3768
+ for (let key in query) {
3769
+ const value = query[key];
3770
+ key = encodeQueryKey(key);
3771
+ if (value == null) {
3772
+ if (value !== void 0) search += (search.length ? "&" : "") + key;
3773
+ continue;
3774
+ }
3775
+ (isArray$3(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)]).forEach((value$1) => {
3776
+ if (value$1 !== void 0) {
3777
+ search += (search.length ? "&" : "") + key;
3778
+ if (value$1 != null) search += "=" + value$1;
3779
+ }
3979
3780
  });
3980
3781
  }
3981
- function escapeDangerHtml5Entities(str) {
3982
- return str.replace(REGEXP_ATTR_VALUE_COLON, ":").replace(REGEXP_ATTR_VALUE_NEWLINE, " ");
3782
+ return search;
3783
+ }
3784
+ function normalizeQuery(query) {
3785
+ const normalizedQuery = {};
3786
+ for (const key in query) {
3787
+ const value = query[key];
3788
+ if (value !== void 0) normalizedQuery[key] = isArray$3(value) ? value.map((v) => v == null ? null : "" + v) : value == null ? value : "" + value;
3983
3789
  }
3984
- function clearNonPrintableCharacter(str) {
3985
- var str2 = "";
3986
- for (var i$1 = 0, len = str.length; i$1 < len; i$1++) str2 += str.charCodeAt(i$1) < 32 ? " " : str.charAt(i$1);
3987
- return _$2.trim(str2);
3790
+ return normalizedQuery;
3791
+ }
3792
+ var matchedRouteKey = Symbol("");
3793
+ var viewDepthKey = Symbol("");
3794
+ var routerKey = Symbol("");
3795
+ var routeLocationKey = Symbol("");
3796
+ var routerViewLocationKey = Symbol("");
3797
+ function useCallbacks() {
3798
+ let handlers$1 = [];
3799
+ function add(handler) {
3800
+ handlers$1.push(handler);
3801
+ return () => {
3802
+ const i$1 = handlers$1.indexOf(handler);
3803
+ if (i$1 > -1) handlers$1.splice(i$1, 1);
3804
+ };
3988
3805
  }
3989
- function friendlyAttrValue(str) {
3990
- str = unescapeQuote(str);
3991
- str = escapeHtmlEntities(str);
3992
- str = escapeDangerHtml5Entities(str);
3993
- str = clearNonPrintableCharacter(str);
3994
- return str;
3806
+ function reset() {
3807
+ handlers$1 = [];
3995
3808
  }
3996
- function escapeAttrValue(str) {
3997
- str = escapeQuote(str);
3998
- str = escapeHtml(str);
3999
- return str;
3809
+ return {
3810
+ add,
3811
+ list: () => handlers$1.slice(),
3812
+ reset
3813
+ };
3814
+ }
3815
+ function registerGuard(record, name, guard) {
3816
+ const removeFromList = () => {
3817
+ record[name].delete(guard);
3818
+ };
3819
+ onUnmounted(removeFromList);
3820
+ onDeactivated(removeFromList);
3821
+ onActivated(() => {
3822
+ record[name].add(guard);
3823
+ });
3824
+ record[name].add(guard);
3825
+ }
3826
+ function onBeforeRouteLeave(leaveGuard) {
3827
+ const activeRecord = inject(matchedRouteKey, {}).value;
3828
+ if (!activeRecord) return;
3829
+ registerGuard(activeRecord, "leaveGuards", leaveGuard);
3830
+ }
3831
+ function guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) {
3832
+ const enterCallbackArray = record && (record.enterCallbacks[name] = record.enterCallbacks[name] || []);
3833
+ return () => new Promise((resolve, reject) => {
3834
+ const next = (valid) => {
3835
+ if (valid === false) reject(createRouterError(4, {
3836
+ from,
3837
+ to
3838
+ }));
3839
+ else if (valid instanceof Error) reject(valid);
3840
+ else if (isRouteLocation(valid)) reject(createRouterError(2, {
3841
+ from: to,
3842
+ to: valid
3843
+ }));
3844
+ else {
3845
+ if (enterCallbackArray && record.enterCallbacks[name] === enterCallbackArray && typeof valid === "function") enterCallbackArray.push(valid);
3846
+ resolve();
3847
+ }
3848
+ };
3849
+ const guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, next));
3850
+ let guardCall = Promise.resolve(guardReturn);
3851
+ if (guard.length < 3) guardCall = guardCall.then(next);
3852
+ guardCall.catch((err) => reject(err));
3853
+ });
3854
+ }
3855
+ function extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) {
3856
+ const guards = [];
3857
+ for (const record of matched) for (const name in record.components) {
3858
+ let rawComponent = record.components[name];
3859
+ if (guardType !== "beforeRouteEnter" && !record.instances[name]) continue;
3860
+ if (isRouteComponent(rawComponent)) {
3861
+ const guard = (rawComponent.__vccOpts || rawComponent)[guardType];
3862
+ guard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));
3863
+ } else {
3864
+ let componentPromise = rawComponent();
3865
+ guards.push(() => componentPromise.then((resolved) => {
3866
+ if (!resolved) throw new Error(`Couldn't resolve component "${name}" at "${record.path}"`);
3867
+ const resolvedComponent = isESModule(resolved) ? resolved.default : resolved;
3868
+ record.mods[name] = resolved;
3869
+ record.components[name] = resolvedComponent;
3870
+ const guard = (resolvedComponent.__vccOpts || resolvedComponent)[guardType];
3871
+ return guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)();
3872
+ }));
3873
+ }
4000
3874
  }
4001
- function onIgnoreTagStripAll() {
4002
- return "";
3875
+ return guards;
3876
+ }
3877
+ function useLink(props) {
3878
+ const router = inject(routerKey);
3879
+ const currentRoute = inject(routeLocationKey);
3880
+ const route = computed(() => {
3881
+ const to = unref(props.to);
3882
+ return router.resolve(to);
3883
+ });
3884
+ const activeRecordIndex = computed(() => {
3885
+ const { matched } = route.value;
3886
+ const { length } = matched;
3887
+ const routeMatched = matched[length - 1];
3888
+ const currentMatched = currentRoute.matched;
3889
+ if (!routeMatched || !currentMatched.length) return -1;
3890
+ const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));
3891
+ if (index > -1) return index;
3892
+ const parentRecordPath = getOriginalPath(matched[length - 2]);
3893
+ return length > 1 && getOriginalPath(routeMatched) === parentRecordPath && currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index;
3894
+ });
3895
+ const isActive = computed(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));
3896
+ const isExactActive = computed(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));
3897
+ function navigate(e = {}) {
3898
+ if (guardEvent(e)) {
3899
+ const p = router[unref(props.replace) ? "replace" : "push"](unref(props.to)).catch(noop);
3900
+ if (props.viewTransition && typeof document !== "undefined" && "startViewTransition" in document) document.startViewTransition(() => p);
3901
+ return p;
3902
+ }
3903
+ return Promise.resolve();
4003
3904
  }
4004
- function StripTagBody(tags, next) {
4005
- if (typeof next !== "function") next = function() {};
4006
- var isRemoveAllTag = !Array.isArray(tags);
4007
- function isRemoveTag(tag) {
4008
- if (isRemoveAllTag) return true;
4009
- return _$2.indexOf(tags, tag) !== -1;
3905
+ return {
3906
+ route,
3907
+ href: computed(() => route.value.href),
3908
+ isActive,
3909
+ isExactActive,
3910
+ navigate
3911
+ };
3912
+ }
3913
+ function preferSingleVNode(vnodes) {
3914
+ return vnodes.length === 1 ? vnodes[0] : vnodes;
3915
+ }
3916
+ var RouterLink = /* @__PURE__ */ defineComponent({
3917
+ name: "RouterLink",
3918
+ compatConfig: { MODE: 3 },
3919
+ props: {
3920
+ to: {
3921
+ type: [String, Object],
3922
+ required: true
3923
+ },
3924
+ replace: Boolean,
3925
+ activeClass: String,
3926
+ exactActiveClass: String,
3927
+ custom: Boolean,
3928
+ ariaCurrentValue: {
3929
+ type: String,
3930
+ default: "page"
4010
3931
  }
4011
- var removeList = [];
4012
- var posStart = false;
4013
- return {
4014
- onIgnoreTag: function(tag, html, options) {
4015
- if (isRemoveTag(tag)) if (options.isClosing) {
4016
- var ret = "[/removed]";
4017
- var end = options.position + ret.length;
4018
- removeList.push([posStart !== false ? posStart : options.position, end]);
4019
- posStart = false;
4020
- return ret;
4021
- } else {
4022
- if (!posStart) posStart = options.position;
4023
- return "[removed]";
3932
+ },
3933
+ useLink,
3934
+ setup(props, { slots }) {
3935
+ const link = reactive(useLink(props));
3936
+ const { options } = inject(routerKey);
3937
+ const elClass = computed(() => ({
3938
+ [getLinkClass(props.activeClass, options.linkActiveClass, "router-link-active")]: link.isActive,
3939
+ [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, "router-link-exact-active")]: link.isExactActive
3940
+ }));
3941
+ return () => {
3942
+ const children = slots.default && preferSingleVNode(slots.default(link));
3943
+ return props.custom ? children : h("a", {
3944
+ "aria-current": link.isExactActive ? props.ariaCurrentValue : null,
3945
+ href: link.href,
3946
+ onClick: link.navigate,
3947
+ class: elClass.value
3948
+ }, children);
3949
+ };
3950
+ }
3951
+ });
3952
+ function guardEvent(e) {
3953
+ if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
3954
+ if (e.defaultPrevented) return;
3955
+ if (e.button !== void 0 && e.button !== 0) return;
3956
+ if (e.currentTarget && e.currentTarget.getAttribute) {
3957
+ const target = e.currentTarget.getAttribute("target");
3958
+ if (/\b_blank\b/i.test(target)) return;
3959
+ }
3960
+ if (e.preventDefault) e.preventDefault();
3961
+ return true;
3962
+ }
3963
+ function includesParams(outer, inner) {
3964
+ for (const key in inner) {
3965
+ const innerValue = inner[key];
3966
+ const outerValue = outer[key];
3967
+ if (typeof innerValue === "string") {
3968
+ if (innerValue !== outerValue) return false;
3969
+ } else if (!isArray$3(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i$1) => value !== outerValue[i$1])) return false;
3970
+ }
3971
+ return true;
3972
+ }
3973
+ function getOriginalPath(record) {
3974
+ return record ? record.aliasOf ? record.aliasOf.path : record.path : "";
3975
+ }
3976
+ var getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;
3977
+ var RouterViewImpl = /* @__PURE__ */ defineComponent({
3978
+ name: "RouterView",
3979
+ inheritAttrs: false,
3980
+ props: {
3981
+ name: {
3982
+ type: String,
3983
+ default: "default"
3984
+ },
3985
+ route: Object
3986
+ },
3987
+ compatConfig: { MODE: 3 },
3988
+ setup(props, { attrs, slots }) {
3989
+ const injectedRoute = inject(routerViewLocationKey);
3990
+ const routeToDisplay = computed(() => props.route || injectedRoute.value);
3991
+ const injectedDepth = inject(viewDepthKey, 0);
3992
+ const depth = computed(() => {
3993
+ let initialDepth = unref(injectedDepth);
3994
+ const { matched } = routeToDisplay.value;
3995
+ let matchedRoute;
3996
+ while ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) initialDepth++;
3997
+ return initialDepth;
3998
+ });
3999
+ const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);
4000
+ provide(viewDepthKey, computed(() => depth.value + 1));
4001
+ provide(matchedRouteKey, matchedRouteRef);
4002
+ provide(routerViewLocationKey, routeToDisplay);
4003
+ const viewRef = ref();
4004
+ watch(() => [
4005
+ viewRef.value,
4006
+ matchedRouteRef.value,
4007
+ props.name
4008
+ ], ([instance, to, name], [oldInstance, from, oldName]) => {
4009
+ if (to) {
4010
+ to.instances[name] = instance;
4011
+ if (from && from !== to && instance && instance === oldInstance) {
4012
+ if (!to.leaveGuards.size) to.leaveGuards = from.leaveGuards;
4013
+ if (!to.updateGuards.size) to.updateGuards = from.updateGuards;
4024
4014
  }
4025
- else return next(tag, html, options);
4026
- },
4027
- remove: function(html) {
4028
- var rethtml = "";
4029
- var lastPos = 0;
4030
- _$2.forEach(removeList, function(pos) {
4031
- rethtml += html.slice(lastPos, pos[0]);
4032
- lastPos = pos[1];
4033
- });
4034
- rethtml += html.slice(lastPos);
4035
- return rethtml;
4036
4015
  }
4016
+ if (instance && to && (!from || !isSameRouteRecord(to, from) || !oldInstance)) (to.enterCallbacks[name] || []).forEach((callback) => callback(instance));
4017
+ }, { flush: "post" });
4018
+ return () => {
4019
+ const route = routeToDisplay.value;
4020
+ const currentName = props.name;
4021
+ const matchedRoute = matchedRouteRef.value;
4022
+ const ViewComponent = matchedRoute && matchedRoute.components[currentName];
4023
+ if (!ViewComponent) return normalizeSlot(slots.default, {
4024
+ Component: ViewComponent,
4025
+ route
4026
+ });
4027
+ const routePropsOption = matchedRoute.props[currentName];
4028
+ const routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === "function" ? routePropsOption(route) : routePropsOption : null;
4029
+ const onVnodeUnmounted = (vnode) => {
4030
+ if (vnode.component.isUnmounted) matchedRoute.instances[currentName] = null;
4031
+ };
4032
+ const component = h(ViewComponent, assign({}, routeProps, attrs, {
4033
+ onVnodeUnmounted,
4034
+ ref: viewRef
4035
+ }));
4036
+ return normalizeSlot(slots.default, {
4037
+ Component: component,
4038
+ route
4039
+ }) || component;
4037
4040
  };
4038
4041
  }
4039
- function stripCommentTag(html) {
4040
- var retHtml = "";
4041
- var lastPos = 0;
4042
- while (lastPos < html.length) {
4043
- var i$1 = html.indexOf("<!--", lastPos);
4044
- if (i$1 === -1) {
4045
- retHtml += html.slice(lastPos);
4046
- break;
4047
- }
4048
- retHtml += html.slice(lastPos, i$1);
4049
- var j = html.indexOf("-->", i$1);
4050
- if (j === -1) break;
4051
- lastPos = j + 3;
4052
- }
4053
- return retHtml;
4042
+ });
4043
+ function normalizeSlot(slot, data) {
4044
+ if (!slot) return null;
4045
+ const slotContent = slot(data);
4046
+ return slotContent.length === 1 ? slotContent[0] : slotContent;
4047
+ }
4048
+ var RouterView = RouterViewImpl;
4049
+ function createRouter(options) {
4050
+ const matcher = createRouterMatcher(options.routes, options);
4051
+ const parseQuery$1 = options.parseQuery || parseQuery;
4052
+ const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;
4053
+ const routerHistory = options.history;
4054
+ const beforeGuards = useCallbacks();
4055
+ const beforeResolveGuards = useCallbacks();
4056
+ const afterGuards = useCallbacks();
4057
+ const currentRoute = shallowRef(START_LOCATION_NORMALIZED);
4058
+ let pendingLocation = START_LOCATION_NORMALIZED;
4059
+ if (isBrowser && options.scrollBehavior && "scrollRestoration" in history) history.scrollRestoration = "manual";
4060
+ const normalizeParams = applyToParams.bind(null, (paramValue) => "" + paramValue);
4061
+ const encodeParams = applyToParams.bind(null, encodeParam);
4062
+ const decodeParams = applyToParams.bind(null, decode);
4063
+ function addRoute(parentOrRoute, route) {
4064
+ let parent;
4065
+ let record;
4066
+ if (isRouteName(parentOrRoute)) {
4067
+ parent = matcher.getRecordMatcher(parentOrRoute);
4068
+ record = route;
4069
+ } else record = parentOrRoute;
4070
+ return matcher.addRoute(record, parent);
4054
4071
  }
4055
- function stripBlankChar(html) {
4056
- var chars = html.split("");
4057
- chars = chars.filter(function(char) {
4058
- var c = char.charCodeAt(0);
4059
- if (c === 127) return false;
4060
- if (c <= 31) {
4061
- if (c === 10 || c === 13) return true;
4062
- return false;
4063
- }
4064
- return true;
4065
- });
4066
- return chars.join("");
4072
+ function removeRoute(name) {
4073
+ const recordMatcher = matcher.getRecordMatcher(name);
4074
+ if (recordMatcher) matcher.removeRoute(recordMatcher);
4067
4075
  }
4068
- exports.whiteList = getDefaultWhiteList();
4069
- exports.getDefaultWhiteList = getDefaultWhiteList;
4070
- exports.onTag = onTag;
4071
- exports.onIgnoreTag = onIgnoreTag;
4072
- exports.onTagAttr = onTagAttr;
4073
- exports.onIgnoreTagAttr = onIgnoreTagAttr;
4074
- exports.safeAttrValue = safeAttrValue;
4075
- exports.escapeHtml = escapeHtml;
4076
- exports.escapeQuote = escapeQuote;
4077
- exports.unescapeQuote = unescapeQuote;
4078
- exports.escapeHtmlEntities = escapeHtmlEntities;
4079
- exports.escapeDangerHtml5Entities = escapeDangerHtml5Entities;
4080
- exports.clearNonPrintableCharacter = clearNonPrintableCharacter;
4081
- exports.friendlyAttrValue = friendlyAttrValue;
4082
- exports.escapeAttrValue = escapeAttrValue;
4083
- exports.onIgnoreTagStripAll = onIgnoreTagStripAll;
4084
- exports.StripTagBody = StripTagBody;
4085
- exports.stripCommentTag = stripCommentTag;
4086
- exports.stripBlankChar = stripBlankChar;
4087
- exports.attributeWrapSign = "\"";
4088
- exports.cssFilter = defaultCSSFilter;
4089
- exports.getDefaultCSSWhiteList = getDefaultCSSWhiteList;
4090
- }));
4091
- var require_parser = /* @__PURE__ */ __commonJSMin(((exports) => {
4092
- var _$1 = require_util();
4093
- function getTagName(html) {
4094
- var i$1 = _$1.spaceIndex(html);
4095
- var tagName;
4096
- if (i$1 === -1) tagName = html.slice(1, -1);
4097
- else tagName = html.slice(1, i$1 + 1);
4098
- tagName = _$1.trim(tagName).toLowerCase();
4099
- if (tagName.slice(0, 1) === "/") tagName = tagName.slice(1);
4100
- if (tagName.slice(-1) === "/") tagName = tagName.slice(0, -1);
4101
- return tagName;
4076
+ function getRoutes() {
4077
+ return matcher.getRoutes().map((routeMatcher) => routeMatcher.record);
4102
4078
  }
4103
- function isClosing(html) {
4104
- return html.slice(0, 2) === "</";
4079
+ function hasRoute(name) {
4080
+ return !!matcher.getRecordMatcher(name);
4105
4081
  }
4106
- function parseTag$1(html, onTag$1, escapeHtml$1) {
4107
- var rethtml = "";
4108
- var lastPos = 0;
4109
- var tagStart = false;
4110
- var quoteStart = false;
4111
- var currentPos = 0;
4112
- var len = html.length;
4113
- var currentTagName = "";
4114
- var currentHtml = "";
4115
- chariterator: for (currentPos = 0; currentPos < len; currentPos++) {
4116
- var c = html.charAt(currentPos);
4117
- if (tagStart === false) {
4118
- if (c === "<") {
4119
- tagStart = currentPos;
4120
- continue;
4121
- }
4122
- } else if (quoteStart === false) {
4123
- if (c === "<") {
4124
- rethtml += escapeHtml$1(html.slice(lastPos, currentPos));
4125
- tagStart = currentPos;
4126
- lastPos = currentPos;
4127
- continue;
4128
- }
4129
- if (c === ">" || currentPos === len - 1) {
4130
- rethtml += escapeHtml$1(html.slice(lastPos, tagStart));
4131
- currentHtml = html.slice(tagStart, currentPos + 1);
4132
- currentTagName = getTagName(currentHtml);
4133
- rethtml += onTag$1(tagStart, rethtml.length, currentTagName, currentHtml, isClosing(currentHtml));
4134
- lastPos = currentPos + 1;
4135
- tagStart = false;
4136
- continue;
4137
- }
4138
- if (c === "\"" || c === "'") {
4139
- var i$1 = 1;
4140
- var ic = html.charAt(currentPos - i$1);
4141
- while (ic.trim() === "" || ic === "=") {
4142
- if (ic === "=") {
4143
- quoteStart = c;
4144
- continue chariterator;
4145
- }
4146
- ic = html.charAt(currentPos - ++i$1);
4147
- }
4148
- }
4149
- } else if (c === quoteStart) {
4150
- quoteStart = false;
4151
- continue;
4152
- }
4082
+ function resolve(rawLocation, currentLocation) {
4083
+ currentLocation = assign({}, currentLocation || currentRoute.value);
4084
+ if (typeof rawLocation === "string") {
4085
+ const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);
4086
+ const matchedRoute$1 = matcher.resolve({ path: locationNormalized.path }, currentLocation);
4087
+ const href$1 = routerHistory.createHref(locationNormalized.fullPath);
4088
+ return assign(locationNormalized, matchedRoute$1, {
4089
+ params: decodeParams(matchedRoute$1.params),
4090
+ hash: decode(locationNormalized.hash),
4091
+ redirectedFrom: void 0,
4092
+ href: href$1
4093
+ });
4094
+ }
4095
+ let matcherLocation;
4096
+ if (rawLocation.path != null) matcherLocation = assign({}, rawLocation, { path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path });
4097
+ else {
4098
+ const targetParams = assign({}, rawLocation.params);
4099
+ for (const key in targetParams) if (targetParams[key] == null) delete targetParams[key];
4100
+ matcherLocation = assign({}, rawLocation, { params: encodeParams(targetParams) });
4101
+ currentLocation.params = encodeParams(currentLocation.params);
4153
4102
  }
4154
- if (lastPos < len) rethtml += escapeHtml$1(html.substr(lastPos));
4155
- return rethtml;
4103
+ const matchedRoute = matcher.resolve(matcherLocation, currentLocation);
4104
+ const hash = rawLocation.hash || "";
4105
+ matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));
4106
+ const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {
4107
+ hash: encodeHash(hash),
4108
+ path: matchedRoute.path
4109
+ }));
4110
+ const href = routerHistory.createHref(fullPath);
4111
+ return assign({
4112
+ fullPath,
4113
+ hash,
4114
+ query: stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}
4115
+ }, matchedRoute, {
4116
+ redirectedFrom: void 0,
4117
+ href
4118
+ });
4156
4119
  }
4157
- var REGEXP_ILLEGAL_ATTR_NAME = /[^a-zA-Z0-9\\_:.-]/gim;
4158
- function parseAttr$1(html, onAttr$1) {
4159
- var lastPos = 0;
4160
- var lastMarkPos = 0;
4161
- var retAttrs = [];
4162
- var tmpName = false;
4163
- var len = html.length;
4164
- function addAttr(name, value) {
4165
- name = _$1.trim(name);
4166
- name = name.replace(REGEXP_ILLEGAL_ATTR_NAME, "").toLowerCase();
4167
- if (name.length < 1) return;
4168
- var ret = onAttr$1(name, value || "");
4169
- if (ret) retAttrs.push(ret);
4170
- }
4171
- for (var i$1 = 0; i$1 < len; i$1++) {
4172
- var c = html.charAt(i$1);
4173
- var v, j;
4174
- if (tmpName === false && c === "=") {
4175
- tmpName = html.slice(lastPos, i$1);
4176
- lastPos = i$1 + 1;
4177
- lastMarkPos = html.charAt(lastPos) === "\"" || html.charAt(lastPos) === "'" ? lastPos : findNextQuotationMark(html, i$1 + 1);
4178
- continue;
4179
- }
4180
- if (tmpName !== false) {
4181
- if (i$1 === lastMarkPos) {
4182
- j = html.indexOf(c, i$1 + 1);
4183
- if (j === -1) break;
4184
- else {
4185
- v = _$1.trim(html.slice(lastMarkPos + 1, j));
4186
- addAttr(tmpName, v);
4187
- tmpName = false;
4188
- i$1 = j;
4189
- lastPos = i$1 + 1;
4190
- continue;
4191
- }
4192
- }
4193
- }
4194
- if (/\s|\n|\t/.test(c)) {
4195
- html = html.replace(/\s|\n|\t/g, " ");
4196
- if (tmpName === false) {
4197
- j = findNextEqual(html, i$1);
4198
- if (j === -1) {
4199
- v = _$1.trim(html.slice(lastPos, i$1));
4200
- addAttr(v);
4201
- tmpName = false;
4202
- lastPos = i$1 + 1;
4203
- continue;
4204
- } else {
4205
- i$1 = j - 1;
4206
- continue;
4207
- }
4208
- } else {
4209
- j = findBeforeEqual(html, i$1 - 1);
4210
- if (j === -1) {
4211
- v = _$1.trim(html.slice(lastPos, i$1));
4212
- v = stripQuoteWrap(v);
4213
- addAttr(tmpName, v);
4214
- tmpName = false;
4215
- lastPos = i$1 + 1;
4216
- continue;
4217
- } else continue;
4218
- }
4120
+ function locationAsObject(to) {
4121
+ return typeof to === "string" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to);
4122
+ }
4123
+ function checkCanceledNavigation(to, from) {
4124
+ if (pendingLocation !== to) return createRouterError(8, {
4125
+ from,
4126
+ to
4127
+ });
4128
+ }
4129
+ function push(to) {
4130
+ return pushWithRedirect(to);
4131
+ }
4132
+ function replace(to) {
4133
+ return push(assign(locationAsObject(to), { replace: true }));
4134
+ }
4135
+ function handleRedirectRecord(to) {
4136
+ const lastMatched = to.matched[to.matched.length - 1];
4137
+ if (lastMatched && lastMatched.redirect) {
4138
+ const { redirect } = lastMatched;
4139
+ let newTargetLocation = typeof redirect === "function" ? redirect(to) : redirect;
4140
+ if (typeof newTargetLocation === "string") {
4141
+ newTargetLocation = newTargetLocation.includes("?") || newTargetLocation.includes("#") ? newTargetLocation = locationAsObject(newTargetLocation) : { path: newTargetLocation };
4142
+ newTargetLocation.params = {};
4219
4143
  }
4144
+ return assign({
4145
+ query: to.query,
4146
+ hash: to.hash,
4147
+ params: newTargetLocation.path != null ? {} : to.params
4148
+ }, newTargetLocation);
4220
4149
  }
4221
- if (lastPos < html.length) if (tmpName === false) addAttr(html.slice(lastPos));
4222
- else addAttr(tmpName, stripQuoteWrap(_$1.trim(html.slice(lastPos))));
4223
- return _$1.trim(retAttrs.join(" "));
4224
4150
  }
4225
- function findNextEqual(str, i$1) {
4226
- for (; i$1 < str.length; i$1++) {
4227
- var c = str[i$1];
4228
- if (c === " ") continue;
4229
- if (c === "=") return i$1;
4230
- return -1;
4151
+ function pushWithRedirect(to, redirectedFrom) {
4152
+ const targetLocation = pendingLocation = resolve(to);
4153
+ const from = currentRoute.value;
4154
+ const data = to.state;
4155
+ const force = to.force;
4156
+ const replace$1 = to.replace === true;
4157
+ const shouldRedirect = handleRedirectRecord(targetLocation);
4158
+ if (shouldRedirect) return pushWithRedirect(assign(locationAsObject(shouldRedirect), {
4159
+ state: typeof shouldRedirect === "object" ? assign({}, data, shouldRedirect.state) : data,
4160
+ force,
4161
+ replace: replace$1
4162
+ }), redirectedFrom || targetLocation);
4163
+ const toLocation = targetLocation;
4164
+ toLocation.redirectedFrom = redirectedFrom;
4165
+ let failure;
4166
+ if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {
4167
+ failure = createRouterError(16, {
4168
+ to: toLocation,
4169
+ from
4170
+ });
4171
+ handleScroll(from, from, true, false);
4231
4172
  }
4173
+ return (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? isNavigationFailure(error, 2) ? error : markAsReady(error) : triggerError(error, toLocation, from)).then((failure$1) => {
4174
+ if (failure$1) {
4175
+ if (isNavigationFailure(failure$1, 2)) return pushWithRedirect(assign({ replace: replace$1 }, locationAsObject(failure$1.to), {
4176
+ state: typeof failure$1.to === "object" ? assign({}, data, failure$1.to.state) : data,
4177
+ force
4178
+ }), redirectedFrom || toLocation);
4179
+ } else failure$1 = finalizeNavigation(toLocation, from, true, replace$1, data);
4180
+ triggerAfterEach(toLocation, from, failure$1);
4181
+ return failure$1;
4182
+ });
4232
4183
  }
4233
- function findNextQuotationMark(str, i$1) {
4234
- for (; i$1 < str.length; i$1++) {
4235
- var c = str[i$1];
4236
- if (c === " ") continue;
4237
- if (c === "'" || c === "\"") return i$1;
4238
- return -1;
4239
- }
4184
+ function checkCanceledNavigationAndReject(to, from) {
4185
+ const error = checkCanceledNavigation(to, from);
4186
+ return error ? Promise.reject(error) : Promise.resolve();
4240
4187
  }
4241
- function findBeforeEqual(str, i$1) {
4242
- for (; i$1 > 0; i$1--) {
4243
- var c = str[i$1];
4244
- if (c === " ") continue;
4245
- if (c === "=") return i$1;
4246
- return -1;
4247
- }
4188
+ function runWithContext(fn) {
4189
+ const app = installedApps.values().next().value;
4190
+ return app && typeof app.runWithContext === "function" ? app.runWithContext(fn) : fn();
4248
4191
  }
4249
- function isQuoteWrapString(text) {
4250
- if (text[0] === "\"" && text[text.length - 1] === "\"" || text[0] === "'" && text[text.length - 1] === "'") return true;
4251
- else return false;
4192
+ function navigate(to, from) {
4193
+ let guards;
4194
+ const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);
4195
+ guards = extractComponentsGuards(leavingRecords.reverse(), "beforeRouteLeave", to, from);
4196
+ for (const record of leavingRecords) record.leaveGuards.forEach((guard) => {
4197
+ guards.push(guardToPromiseFn(guard, to, from));
4198
+ });
4199
+ const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);
4200
+ guards.push(canceledNavigationCheck);
4201
+ return runGuardQueue(guards).then(() => {
4202
+ guards = [];
4203
+ for (const guard of beforeGuards.list()) guards.push(guardToPromiseFn(guard, to, from));
4204
+ guards.push(canceledNavigationCheck);
4205
+ return runGuardQueue(guards);
4206
+ }).then(() => {
4207
+ guards = extractComponentsGuards(updatingRecords, "beforeRouteUpdate", to, from);
4208
+ for (const record of updatingRecords) record.updateGuards.forEach((guard) => {
4209
+ guards.push(guardToPromiseFn(guard, to, from));
4210
+ });
4211
+ guards.push(canceledNavigationCheck);
4212
+ return runGuardQueue(guards);
4213
+ }).then(() => {
4214
+ guards = [];
4215
+ for (const record of enteringRecords) if (record.beforeEnter) if (isArray$3(record.beforeEnter)) for (const beforeEnter of record.beforeEnter) guards.push(guardToPromiseFn(beforeEnter, to, from));
4216
+ else guards.push(guardToPromiseFn(record.beforeEnter, to, from));
4217
+ guards.push(canceledNavigationCheck);
4218
+ return runGuardQueue(guards);
4219
+ }).then(() => {
4220
+ to.matched.forEach((record) => record.enterCallbacks = {});
4221
+ guards = extractComponentsGuards(enteringRecords, "beforeRouteEnter", to, from, runWithContext);
4222
+ guards.push(canceledNavigationCheck);
4223
+ return runGuardQueue(guards);
4224
+ }).then(() => {
4225
+ guards = [];
4226
+ for (const guard of beforeResolveGuards.list()) guards.push(guardToPromiseFn(guard, to, from));
4227
+ guards.push(canceledNavigationCheck);
4228
+ return runGuardQueue(guards);
4229
+ }).catch((err) => isNavigationFailure(err, 8) ? err : Promise.reject(err));
4252
4230
  }
4253
- function stripQuoteWrap(text) {
4254
- if (isQuoteWrapString(text)) return text.substr(1, text.length - 2);
4255
- else return text;
4231
+ function triggerAfterEach(to, from, failure) {
4232
+ afterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure)));
4256
4233
  }
4257
- exports.parseTag = parseTag$1;
4258
- exports.parseAttr = parseAttr$1;
4259
- }));
4260
- var require_xss = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4261
- var FilterCSS = require_lib$1().FilterCSS;
4262
- var DEFAULT$1 = require_default();
4263
- var parser$1 = require_parser();
4264
- var parseTag = parser$1.parseTag;
4265
- var parseAttr = parser$1.parseAttr;
4266
- var _ = require_util();
4267
- function isNull(obj) {
4268
- return obj === void 0 || obj === null;
4234
+ function finalizeNavigation(toLocation, from, isPush, replace$1, data) {
4235
+ const error = checkCanceledNavigation(toLocation, from);
4236
+ if (error) return error;
4237
+ const isFirstNavigation = from === START_LOCATION_NORMALIZED;
4238
+ const state = !isBrowser ? {} : history.state;
4239
+ if (isPush) if (replace$1 || isFirstNavigation) routerHistory.replace(toLocation.fullPath, assign({ scroll: isFirstNavigation && state && state.scroll }, data));
4240
+ else routerHistory.push(toLocation.fullPath, data);
4241
+ currentRoute.value = toLocation;
4242
+ handleScroll(toLocation, from, isPush, isFirstNavigation);
4243
+ markAsReady();
4269
4244
  }
4270
- function getAttrs(html) {
4271
- var i$1 = _.spaceIndex(html);
4272
- if (i$1 === -1) return {
4273
- html: "",
4274
- closing: html[html.length - 2] === "/"
4275
- };
4276
- html = _.trim(html.slice(i$1 + 1, -1));
4277
- var isClosing$1 = html[html.length - 1] === "/";
4278
- if (isClosing$1) html = _.trim(html.slice(0, -1));
4279
- return {
4280
- html,
4281
- closing: isClosing$1
4282
- };
4245
+ let removeHistoryListener;
4246
+ function setupListeners() {
4247
+ if (removeHistoryListener) return;
4248
+ removeHistoryListener = routerHistory.listen((to, _from, info) => {
4249
+ if (!router.listening) return;
4250
+ const toLocation = resolve(to);
4251
+ const shouldRedirect = handleRedirectRecord(toLocation);
4252
+ if (shouldRedirect) {
4253
+ pushWithRedirect(assign(shouldRedirect, {
4254
+ replace: true,
4255
+ force: true
4256
+ }), toLocation).catch(noop);
4257
+ return;
4258
+ }
4259
+ pendingLocation = toLocation;
4260
+ const from = currentRoute.value;
4261
+ if (isBrowser) saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());
4262
+ navigate(toLocation, from).catch((error) => {
4263
+ if (isNavigationFailure(error, 12)) return error;
4264
+ if (isNavigationFailure(error, 2)) {
4265
+ pushWithRedirect(assign(locationAsObject(error.to), { force: true }), toLocation).then((failure) => {
4266
+ if (isNavigationFailure(failure, 20) && !info.delta && info.type === NavigationType.pop) routerHistory.go(-1, false);
4267
+ }).catch(noop);
4268
+ return Promise.reject();
4269
+ }
4270
+ if (info.delta) routerHistory.go(-info.delta, false);
4271
+ return triggerError(error, toLocation, from);
4272
+ }).then((failure) => {
4273
+ failure = failure || finalizeNavigation(toLocation, from, false);
4274
+ if (failure) {
4275
+ if (info.delta && !isNavigationFailure(failure, 8)) routerHistory.go(-info.delta, false);
4276
+ else if (info.type === NavigationType.pop && isNavigationFailure(failure, 20)) routerHistory.go(-1, false);
4277
+ }
4278
+ triggerAfterEach(toLocation, from, failure);
4279
+ }).catch(noop);
4280
+ });
4283
4281
  }
4284
- function shallowCopyObject(obj) {
4285
- var ret = {};
4286
- for (var i$1 in obj) ret[i$1] = obj[i$1];
4287
- return ret;
4282
+ let readyHandlers = useCallbacks();
4283
+ let errorListeners = useCallbacks();
4284
+ let ready;
4285
+ function triggerError(error, to, from) {
4286
+ markAsReady(error);
4287
+ const list = errorListeners.list();
4288
+ if (list.length) list.forEach((handler) => handler(error, to, from));
4289
+ else console.error(error);
4290
+ return Promise.reject(error);
4288
4291
  }
4289
- function keysToLowerCase(obj) {
4290
- var ret = {};
4291
- for (var i$1 in obj) if (Array.isArray(obj[i$1])) ret[i$1.toLowerCase()] = obj[i$1].map(function(item) {
4292
- return item.toLowerCase();
4292
+ function isReady() {
4293
+ if (ready && currentRoute.value !== START_LOCATION_NORMALIZED) return Promise.resolve();
4294
+ return new Promise((resolve$1, reject) => {
4295
+ readyHandlers.add([resolve$1, reject]);
4293
4296
  });
4294
- else ret[i$1.toLowerCase()] = obj[i$1];
4295
- return ret;
4296
4297
  }
4297
- function FilterXSS$1(options) {
4298
- options = shallowCopyObject(options || {});
4299
- if (options.stripIgnoreTag) {
4300
- if (options.onIgnoreTag) console.error("Notes: cannot use these two options \"stripIgnoreTag\" and \"onIgnoreTag\" at the same time");
4301
- options.onIgnoreTag = DEFAULT$1.onIgnoreTagStripAll;
4302
- }
4303
- if (options.whiteList || options.allowList) options.whiteList = keysToLowerCase(options.whiteList || options.allowList);
4304
- else options.whiteList = DEFAULT$1.whiteList;
4305
- this.attributeWrapSign = options.singleQuotedAttributeValue === true ? "'" : DEFAULT$1.attributeWrapSign;
4306
- options.onTag = options.onTag || DEFAULT$1.onTag;
4307
- options.onTagAttr = options.onTagAttr || DEFAULT$1.onTagAttr;
4308
- options.onIgnoreTag = options.onIgnoreTag || DEFAULT$1.onIgnoreTag;
4309
- options.onIgnoreTagAttr = options.onIgnoreTagAttr || DEFAULT$1.onIgnoreTagAttr;
4310
- options.safeAttrValue = options.safeAttrValue || DEFAULT$1.safeAttrValue;
4311
- options.escapeHtml = options.escapeHtml || DEFAULT$1.escapeHtml;
4312
- this.options = options;
4313
- if (options.css === false) this.cssFilter = false;
4314
- else {
4315
- options.css = options.css || {};
4316
- this.cssFilter = new FilterCSS(options.css);
4298
+ function markAsReady(err) {
4299
+ if (!ready) {
4300
+ ready = !err;
4301
+ setupListeners();
4302
+ readyHandlers.list().forEach(([resolve$1, reject]) => err ? reject(err) : resolve$1());
4303
+ readyHandlers.reset();
4317
4304
  }
4305
+ return err;
4318
4306
  }
4319
- FilterXSS$1.prototype.process = function(html) {
4320
- html = html || "";
4321
- html = html.toString();
4322
- if (!html) return "";
4323
- var me = this;
4324
- var options = me.options;
4325
- var whiteList = options.whiteList;
4326
- var onTag$1 = options.onTag;
4327
- var onIgnoreTag$1 = options.onIgnoreTag;
4328
- var onTagAttr$1 = options.onTagAttr;
4329
- var onIgnoreTagAttr$1 = options.onIgnoreTagAttr;
4330
- var safeAttrValue$2 = options.safeAttrValue;
4331
- var escapeHtml$1 = options.escapeHtml;
4332
- var attributeWrapSign = me.attributeWrapSign;
4333
- var cssFilter = me.cssFilter;
4334
- if (options.stripBlankChar) html = DEFAULT$1.stripBlankChar(html);
4335
- if (!options.allowCommentTag) html = DEFAULT$1.stripCommentTag(html);
4336
- var stripIgnoreTagBody = false;
4337
- if (options.stripIgnoreTagBody) {
4338
- stripIgnoreTagBody = DEFAULT$1.StripTagBody(options.stripIgnoreTagBody, onIgnoreTag$1);
4339
- onIgnoreTag$1 = stripIgnoreTagBody.onIgnoreTag;
4340
- }
4341
- var retHtml = parseTag(html, function(sourcePosition, position, tag, html$1, isClosing$1) {
4342
- var info = {
4343
- sourcePosition,
4344
- position,
4345
- isClosing: isClosing$1,
4346
- isWhite: Object.prototype.hasOwnProperty.call(whiteList, tag)
4347
- };
4348
- var ret = onTag$1(tag, html$1, info);
4349
- if (!isNull(ret)) return ret;
4350
- if (info.isWhite) {
4351
- if (info.isClosing) return "</" + tag + ">";
4352
- var attrs = getAttrs(html$1);
4353
- var whiteAttrList = whiteList[tag];
4354
- var attrsHtml = parseAttr(attrs.html, function(name, value) {
4355
- var isWhiteAttr = _.indexOf(whiteAttrList, name) !== -1;
4356
- var ret$1 = onTagAttr$1(tag, name, value, isWhiteAttr);
4357
- if (!isNull(ret$1)) return ret$1;
4358
- if (isWhiteAttr) {
4359
- value = safeAttrValue$2(tag, name, value, cssFilter);
4360
- if (value) return name + "=" + attributeWrapSign + value + attributeWrapSign;
4361
- else return name;
4362
- } else {
4363
- ret$1 = onIgnoreTagAttr$1(tag, name, value, isWhiteAttr);
4364
- if (!isNull(ret$1)) return ret$1;
4365
- return;
4366
- }
4367
- });
4368
- html$1 = "<" + tag;
4369
- if (attrsHtml) html$1 += " " + attrsHtml;
4370
- if (attrs.closing) html$1 += " /";
4371
- html$1 += ">";
4372
- return html$1;
4373
- } else {
4374
- ret = onIgnoreTag$1(tag, html$1, info);
4375
- if (!isNull(ret)) return ret;
4376
- return escapeHtml$1(html$1);
4307
+ function handleScroll(to, from, isPush, isFirstNavigation) {
4308
+ const { scrollBehavior } = options;
4309
+ if (!isBrowser || !scrollBehavior) return Promise.resolve();
4310
+ const scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;
4311
+ return nextTick().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => position && scrollToPosition(position)).catch((err) => triggerError(err, to, from));
4312
+ }
4313
+ const go = (delta) => routerHistory.go(delta);
4314
+ let started;
4315
+ const installedApps = /* @__PURE__ */ new Set();
4316
+ const router = {
4317
+ currentRoute,
4318
+ listening: true,
4319
+ addRoute,
4320
+ removeRoute,
4321
+ clearRoutes: matcher.clearRoutes,
4322
+ hasRoute,
4323
+ getRoutes,
4324
+ resolve,
4325
+ options,
4326
+ push,
4327
+ replace,
4328
+ go,
4329
+ back: () => go(-1),
4330
+ forward: () => go(1),
4331
+ beforeEach: beforeGuards.add,
4332
+ beforeResolve: beforeResolveGuards.add,
4333
+ afterEach: afterGuards.add,
4334
+ onError: errorListeners.add,
4335
+ isReady,
4336
+ install(app) {
4337
+ const router$1 = this;
4338
+ app.component("RouterLink", RouterLink);
4339
+ app.component("RouterView", RouterView);
4340
+ app.config.globalProperties.$router = router$1;
4341
+ Object.defineProperty(app.config.globalProperties, "$route", {
4342
+ enumerable: true,
4343
+ get: () => unref(currentRoute)
4344
+ });
4345
+ if (isBrowser && !started && currentRoute.value === START_LOCATION_NORMALIZED) {
4346
+ started = true;
4347
+ push(routerHistory.location).catch((err) => {});
4377
4348
  }
4378
- }, escapeHtml$1);
4379
- if (stripIgnoreTagBody) retHtml = stripIgnoreTagBody.remove(retHtml);
4380
- return retHtml;
4349
+ const reactiveRoute = {};
4350
+ for (const key in START_LOCATION_NORMALIZED) Object.defineProperty(reactiveRoute, key, {
4351
+ get: () => currentRoute.value[key],
4352
+ enumerable: true
4353
+ });
4354
+ app.provide(routerKey, router$1);
4355
+ app.provide(routeLocationKey, shallowReactive(reactiveRoute));
4356
+ app.provide(routerViewLocationKey, currentRoute);
4357
+ const unmountApp = app.unmount;
4358
+ installedApps.add(app);
4359
+ app.unmount = function() {
4360
+ installedApps.delete(app);
4361
+ if (installedApps.size < 1) {
4362
+ pendingLocation = START_LOCATION_NORMALIZED;
4363
+ removeHistoryListener && removeHistoryListener();
4364
+ removeHistoryListener = null;
4365
+ currentRoute.value = START_LOCATION_NORMALIZED;
4366
+ started = false;
4367
+ ready = false;
4368
+ }
4369
+ unmountApp();
4370
+ };
4371
+ }
4381
4372
  };
4382
- module.exports = FilterXSS$1;
4383
- }));
4384
- var require_lib = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4385
- var DEFAULT = require_default();
4386
- var parser = require_parser();
4387
- var FilterXSS = require_xss();
4388
- function filterXSS(html, options) {
4389
- return new FilterXSS(options).process(html);
4373
+ function runGuardQueue(guards) {
4374
+ return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());
4390
4375
  }
4391
- exports = module.exports = filterXSS;
4392
- exports.filterXSS = filterXSS;
4393
- exports.FilterXSS = FilterXSS;
4394
- (function() {
4395
- for (var i$1 in DEFAULT) exports[i$1] = DEFAULT[i$1];
4396
- for (var j in parser) exports[j] = parser[j];
4397
- })();
4398
- if (typeof window !== "undefined") window.filterXSS = module.exports;
4399
- function isWorkerEnv() {
4400
- return typeof self !== "undefined" && typeof DedicatedWorkerGlobalScope !== "undefined" && self instanceof DedicatedWorkerGlobalScope;
4376
+ return router;
4377
+ }
4378
+ function extractChangingRecords(to, from) {
4379
+ const leavingRecords = [];
4380
+ const updatingRecords = [];
4381
+ const enteringRecords = [];
4382
+ const len = Math.max(from.matched.length, to.matched.length);
4383
+ for (let i$1 = 0; i$1 < len; i$1++) {
4384
+ const recordFrom = from.matched[i$1];
4385
+ if (recordFrom) if (to.matched.find((record) => isSameRouteRecord(record, recordFrom))) updatingRecords.push(recordFrom);
4386
+ else leavingRecords.push(recordFrom);
4387
+ const recordTo = to.matched[i$1];
4388
+ if (recordTo) {
4389
+ if (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) enteringRecords.push(recordTo);
4390
+ }
4401
4391
  }
4402
- if (isWorkerEnv()) self.filterXSS = module.exports;
4403
- }));
4392
+ return [
4393
+ leavingRecords,
4394
+ updatingRecords,
4395
+ enteringRecords
4396
+ ];
4397
+ }
4398
+ function useRouter() {
4399
+ return inject(routerKey);
4400
+ }
4401
+ function useRoute(_name) {
4402
+ return inject(routeLocationKey);
4403
+ }
4404
4404
  var require_isSymbol = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4405
4405
  var baseGetTag = require__baseGetTag(), isObjectLike = require_isObjectLike();
4406
4406
  var symbolTag = "[object Symbol]";
@@ -4547,4 +4547,4 @@ function truncateBeforeLast(text, maxLength, lastCharsLength = 5) {
4547
4547
  if (lastCharsLength < 1) return chars.slice(0, maxLength).join("") + ellipsis;
4548
4548
  return chars.slice(0, maxLength - lastCharsLength - ellipsisLength).join("") + ellipsis + chars.slice(-lastCharsLength).join("");
4549
4549
  }
4550
- export { arrow_left_default as $, _getNative_default as $t, useGlobalSize as A, getProp as At, withInstall as B, get_default as Bt, isToolMessage as C, useTimeoutFn as Cn, addUnit as Ct, _export_sfc as D, debugWarn as Dt, ElIcon as E, removeClass as Et, useNamespace as F, isEmpty as Ft, TypeComponents as G, _Map_default as Gt, withInstallFunction as H, _toKey_default as Ht, useLocale as I, isNumber as It, iconPropType as J, _assignValue_default as Jt, TypeComponentsMap as K, _ListCache_default as Kt, componentSizeMap as L, isUndefined as Lt, useZIndex as M, escapeStringRegexp as Mt, defaultNamespace as N, isBoolean as Nt, useGlobalComponentSettings as O, throwError as Ot, useGetDerivedNamespace as P, isElement as Pt, arrow_down_default as Q, _defineProperty_default as Qt, componentSizes as R, _baseSet_default as Rt, isThinkingGroupMessage as S, tryOnScopeDispose as Sn, addClass as St, createEventBus as T, hasClass as Tt, withNoopInstall as U, _castPath_default as Ut, withInstallDirective as V, _baseGet_default as Vt, CloseComponents as W, _MapCache_default as Wt, buildProps as X, _baseAssignValue_default as Xt, buildProp as Y, eq_default as Yt, definePropType as Z, _isIndex_default as Zt, isNavigationFailure as _, useVModel as _n, picture_filled_default as _t, require__toKey as a, isSymbol_default as an, circle_close_default as at, useRouter as b, isClient as bn, warning_filled_default as bt, require__arrayMap as c, _Symbol_default as cn, d_arrow_left_default as ct, require_isSymbol as d, isFirefox as dn, document_default as dt, _toSource_default as en, arrow_right_default as et, require_lib as f, onClickOutside as fn, hide_default as ft, createWebHistory as g, useResizeObserver as gn, more_filled_default as gt, createRouter as h, useEventListener as hn, more_default as ht, require__baseGet as i, _arrayMap_default as in, circle_check_default as it, useSizeProp as j, capitalize$1 as jt, useGlobalConfig as k, entriesOf as kt, require_memoize as l, _root_default as ln, d_arrow_right_default as lt, RouterView as m, useDocumentVisibility as mn, minus_default as mt, truncateBeforeLast as n, isObject_default as nn, calendar_default as nt, require__castPath as o, isObjectLike_default as on, clock_default as ot, RouterLink as p, unrefElement as pn, loading_default as pt, ValidateComponentsMap as q, _isKey_default as qt, require_get as r, isArray_default as rn, check_default as rt, require_toString as s, _baseGetTag_default as sn, close_default as st, truncate as t, isFunction_default as tn, arrow_up_default as tt, require__isKey as u, _freeGlobal_default as un, delete_default as ut, onBeforeRouteLeave as v, useWindowFocus as vn, plus_default as vt, isWorkflowUpdatedMessage as w, getStyle as wt, isTaskAbortedMessage as x, isIOS as xn, zoom_in_default as xt, useRoute as y, computedEager as yn, view_default as yt, EVENT_CODE as z, fromPairs_default as zt };
4550
+ export { arrow_left_default as $, _getNative_default as $t, useGlobalSize as A, getProp as At, withInstall as B, get_default as Bt, isWorkflowUpdatedMessage as C, useTimeoutFn as Cn, addUnit as Ct, _export_sfc as D, debugWarn as Dt, ElIcon as E, removeClass as Et, useNamespace as F, isEmpty as Ft, TypeComponents as G, _Map_default as Gt, withInstallFunction as H, _toKey_default as Ht, useLocale as I, isNumber as It, iconPropType as J, _assignValue_default as Jt, TypeComponentsMap as K, _ListCache_default as Kt, componentSizeMap as L, isUndefined as Lt, useZIndex as M, escapeStringRegexp as Mt, defaultNamespace as N, isBoolean as Nt, useGlobalComponentSettings as O, throwError as Ot, useGetDerivedNamespace as P, isElement as Pt, arrow_down_default as Q, _defineProperty_default as Qt, componentSizes as R, _baseSet_default as Rt, isToolMessage as S, tryOnScopeDispose as Sn, addClass as St, createEventBus as T, hasClass as Tt, withNoopInstall as U, _castPath_default as Ut, withInstallDirective as V, _baseGet_default as Vt, CloseComponents as W, _MapCache_default as Wt, buildProps as X, _baseAssignValue_default as Xt, buildProp as Y, eq_default as Yt, definePropType as Z, _isIndex_default as Zt, onBeforeRouteLeave as _, useVModel as _n, picture_filled_default as _t, require__toKey as a, isSymbol_default as an, circle_close_default as at, isTaskAbortedMessage as b, isClient as bn, warning_filled_default as bt, require__arrayMap as c, _Symbol_default as cn, d_arrow_left_default as ct, require_isSymbol as d, isFirefox as dn, document_default as dt, _toSource_default as en, arrow_right_default as et, RouterLink as f, onClickOutside as fn, hide_default as ft, isNavigationFailure as g, useResizeObserver as gn, more_filled_default as gt, createWebHistory as h, useEventListener as hn, more_default as ht, require__baseGet as i, _arrayMap_default as in, circle_check_default as it, useSizeProp as j, capitalize$1 as jt, useGlobalConfig as k, entriesOf as kt, require_memoize as l, _root_default as ln, d_arrow_right_default as lt, createRouter as m, useDocumentVisibility as mn, minus_default as mt, truncateBeforeLast as n, isObject_default as nn, calendar_default as nt, require__castPath as o, isObjectLike_default as on, clock_default as ot, RouterView as p, unrefElement as pn, loading_default as pt, ValidateComponentsMap as q, _isKey_default as qt, require_get as r, isArray_default as rn, check_default as rt, require_toString as s, _baseGetTag_default as sn, close_default as st, truncate as t, isFunction_default as tn, arrow_up_default as tt, require__isKey as u, _freeGlobal_default as un, delete_default as ut, useRoute as v, useWindowFocus as vn, plus_default as vt, require_lib as w, getStyle as wt, isThinkingGroupMessage as x, isIOS as xn, zoom_in_default as xt, useRouter as y, computedEager as yn, view_default as yt, EVENT_CODE as z, fromPairs_default as zt };