ea 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -0
  3. data/TODO.complete/01-t-xref-parsing.md +91 -0
  4. data/TODO.complete/02-per-label-geometry.md +50 -0
  5. data/TODO.complete/03-object-properties-constraints.md +57 -0
  6. data/TODO.complete/04-operation-params.md +37 -0
  7. data/TODO.complete/05-pdata-flag-matrix.md +52 -0
  8. data/TODO.complete/06-emf-image-rendering.md +34 -0
  9. data/TODO.complete/07-auxiliary-tables.md +47 -0
  10. data/TODO.complete/10-mdg-stereotype-registry.md +40 -0
  11. data/TODO.complete/11-gml-xsd-generation.md +42 -0
  12. data/TODO.complete/13-shapescript-interpreter.md +28 -0
  13. data/TODO.complete/20-cli-diff.md +46 -0
  14. data/TODO.complete/21-cli-render.md +26 -0
  15. data/TODO.complete/22-cli-export.md +29 -0
  16. data/TODO.complete/23-cli-mdg.md +23 -0
  17. data/TODO.complete/30-headerlines-ocp-refactor.md +72 -0
  18. data/TODO.complete/31-public-send-cleanup.md +61 -0
  19. data/TODO.complete/32-spec-coverage.md +33 -0
  20. data/TODO.complete/33-blocked-parity-gaps.md +41 -0
  21. data/TODO.complete/36-stereotype-icon-wiring.md +32 -0
  22. data/TODO.complete/37-cli-lint.md +32 -0
  23. data/TODO.complete/38-cli-query.md +26 -0
  24. data/TODO.complete/39-cli-info.md +23 -0
  25. data/TODO.complete/40-ocl-evaluator.md +31 -0
  26. data/TODO.complete/41-round-trip-spec.md +18 -0
  27. data/TODO.complete/42-html-diff-report.md +18 -0
  28. data/TODO.complete/43-json-schema-export.md +20 -0
  29. data/TODO.complete/44-remaining-qea-tables.md +40 -0
  30. data/TODO.complete/45-shapescript-extensions.md +25 -0
  31. data/TODO.complete/46-xsd-consolidation.md +20 -0
  32. data/TODO.complete/47-headerlines-legacy-removal.md +20 -0
  33. data/TODO.complete/STATUS.md +109 -0
  34. data/TODO.diagrams/01-svg-measurement-harness.md +31 -0
  35. data/TODO.diagrams/02-polygon-over-rendering.md +29 -0
  36. data/TODO.diagrams/03-text-over-rendering.md +30 -0
  37. data/TODO.diagrams/04-rect-under-rendering.md +33 -0
  38. data/TODO.diagrams/05-canvas-dimension-parity.md +51 -0
  39. data/TODO.diagrams/06-group-layering-parity.md +39 -0
  40. data/TODO.diagrams/07-text-content-fidelity.md +65 -0
  41. data/TODO.diagrams/08-qea-direct-pipeline.md +46 -0
  42. data/TODO.diagrams/12-connector-labels.md +40 -0
  43. data/TODO.diagrams/12-per-entity-svg-layer-ordering.md +24 -0
  44. data/TODO.diagrams/13-marker-polygon-vs-path-dispatch.md +20 -0
  45. data/TODO.diagrams/13-per-text-type-font-sizes.md +33 -0
  46. data/TODO.diagrams/14-center-header-text.md +33 -0
  47. data/TODO.diagrams/14-filter-diagram-frame-elements.md +18 -0
  48. data/TODO.diagrams/15-deep-dead-code-audit.md +47 -0
  49. data/TODO.diagrams/15-per-element-font-from-style.md +24 -0
  50. data/TODO.diagrams/16-canvas-marker-extent.md +30 -0
  51. data/TODO.diagrams/16-document-remaining-parity-gaps.md +91 -0
  52. data/TODO.diagrams/17-italic-abstract-classes.md +28 -0
  53. data/TODO.diagrams/17-remaining-parity-gaps.md +90 -0
  54. data/TODO.diagrams/18-canvas-from-image-bounds.md +20 -0
  55. data/TODO.diagrams/18-property-lookup-index.md +42 -0
  56. data/TODO.diagrams/19-connector-sx-sy-routing.md +27 -0
  57. data/TODO.diagrams/19-replace-respond-to-with-is-a.md +31 -0
  58. data/TODO.diagrams/20-split-labels-emitter.md +56 -0
  59. data/TODO.diagrams/20-visibility-glyph-font-encoding.md +27 -0
  60. data/TODO.diagrams/21-aggregation-navigability-arrow.md +21 -0
  61. data/TODO.diagrams/21-auto-generated-legend-block.md +65 -0
  62. data/TODO.diagrams/22-ghost-element-discriminator.md +57 -0
  63. data/TODO.diagrams/22-style-based-path-grouping.md +28 -0
  64. data/TODO.diagrams/23-marker-polygon-deduplication.md +47 -0
  65. data/TODO.diagrams/23-multiplicity-label-positioning.md +29 -0
  66. data/TODO.diagrams/24-marker-anchor-structural.md +35 -0
  67. data/TODO.diagrams/24-track-marker-anchors-structurally.md +66 -0
  68. data/TODO.diagrams/24-truncate-properties-to-fit-box.md +24 -0
  69. data/TODO.diagrams/26-phantom-general-parent-rendering.md +59 -0
  70. data/TODO.diagrams/27-path-grouping-mode-detection.md +43 -0
  71. data/TODO.diagrams/28-architecture-cleanup-batch.md +47 -0
  72. data/TODO.diagrams/30-decompose-elements-groups-for.md +52 -0
  73. data/TODO.diagrams/32-examples-coverage-batch.md +78 -0
  74. data/TODO.diagrams/36-instance-specification-model.md +42 -0
  75. data/TODO.diagrams/37-element-icon-decorations.md +41 -0
  76. data/TODO.diagrams/38-html-note-and-receptions.md +32 -0
  77. data/TODO.diagrams/39-property-stereotype-discriminator.md +40 -0
  78. data/TODO.diagrams/40-standalone-1-discriminator.md +38 -0
  79. data/TODO.diagrams/41-xmi-to-svg-pipeline.md +113 -0
  80. data/TODO.diagrams/42-close-all-parity-deltas.md +69 -0
  81. data/TODO.diagrams/43-marker-deduplication-strategy.md +54 -0
  82. data/TODO.diagrams/44-element-icon-decorations.md +34 -0
  83. data/TODO.diagrams/45-phantom-parent-class-boxes.md +40 -0
  84. data/TODO.diagrams/46-user-drawn-legend-swatches.md +44 -0
  85. data/TODO.diagrams/47-attribute-line-fidelity.md +72 -0
  86. data/TODO.diagrams/48-spec-coverage-critical-emitter-components.md +45 -0
  87. data/TODO.diagrams/49-spec-coverage-orchestrators.md +25 -0
  88. data/TODO.diagrams/50-examples-parity.md +85 -0
  89. data/TODO.diagrams/51-property-oy-gap-and-remaining-gaps.md +48 -0
  90. data/TODO.diagrams/52-marker-registration-architecture.md +89 -0
  91. data/TODO.diagrams/53-remaining-example-gaps.md +86 -0
  92. data/TODO.diagrams/54-display-name-nested-classes.md +40 -0
  93. data/TODO.diagrams/55-visibility-icon-discriminator.md +58 -0
  94. data/TODO.diagrams/56-package-contents-rendering.md +148 -0
  95. data/TODO.diagrams/57-instance-specification-model.md +100 -0
  96. data/TODO.diagrams/58-domain-model-note-text.md +67 -0
  97. data/TODO.diagrams/59-classes-arrow-discriminator.md +57 -0
  98. data/TODO.diagrams/60-testschema-association-marker.md +40 -0
  99. data/TODO.diagrams/61-legend-block-rendering.md +55 -0
  100. data/TODO.diagrams/61-plateau-parity-gaps.md +59 -0
  101. data/TODO.diagrams/62-ghost-element-rendering.md +56 -0
  102. data/TODO.diagrams/63-qualified-name-wrap.md +36 -0
  103. data/TODO.diagrams/64-property-stereotype-labels.md +22 -0
  104. data/TODO.diagrams/65-path-coordinate-frame.md +62 -0
  105. data/TODO.diagrams/67-path-coordinate-frame.md +62 -0
  106. data/TODO.diagrams/68-inherited-attributes.md +65 -0
  107. data/TODO.diagrams/69-package-anchor-conditional.md +29 -0
  108. data/TODO.diagrams/70-mdg-technology-support.md +68 -0
  109. data/TODO.diagrams/71-off-canvas-parent-ghost.md +45 -0
  110. data/TODO.diagrams/72-basic-attr-divider-paths.md +39 -0
  111. data/TODO.diagrams/73-plateau-polygon-gap.md +69 -0
  112. data/TODO.diagrams/74-plateau-rect-gap.md +22 -0
  113. data/TODO.diagrams/75-plateau-text-gap.md +39 -0
  114. data/TODO.diagrams/76-basic-poly-path-gaps.md +41 -0
  115. data/TODO.diagrams/77-basic-text-overrender.md +40 -0
  116. data/TODO.diagrams/78-headerlines-ocp-refactor.md +65 -0
  117. data/TODO.diagrams/79-architecture-backlog.md +65 -0
  118. data/TODO.diagrams/80-basic-triangle-polygons.md +51 -0
  119. data/TODO.diagrams/81-plateau-path-overrender.md +53 -0
  120. data/TODO.diagrams/82-appearance-canvas-offset.md +54 -0
  121. data/TODO.diagrams/83-3d-diagram-subtitle.md +58 -0
  122. data/TODO.diagrams/84-canvas-offset-mismatches.md +61 -0
  123. data/TODO.diagrams/85-phantom-property-overrender.md +95 -0
  124. data/TODO.diagrams/86-foreign-package-rule.md +62 -0
  125. data/TODO.diagrams/87-internal-tech-encryption.md +80 -0
  126. data/TODO.diagrams/EXAMPLES_STATUS.md +88 -0
  127. data/TODO.diagrams/README.md +69 -0
  128. data/TODO.diagrams/STATUS.md +73 -0
  129. data/TODO.fixup/01-default-grouped-paths.md +34 -0
  130. data/TODO.fixup/02-marker-consolidation-per-connector.md +20 -0
  131. data/TODO.fixup/03-diagram-font-inference.md +28 -0
  132. data/TODO.fixup/04-extract-bounds-calculator.md +25 -0
  133. data/TODO.fixup/05-marker-registry-ocp.md +32 -0
  134. data/TODO.fixup/06-connector-path-bend-routing.md +28 -0
  135. data/TODO.fixup/07-edge-attachment-formula.md +22 -0
  136. data/TODO.fixup/08-visual-diff-harness.md +28 -0
  137. data/TODO.fixup/09-extract-element-compartments.md +34 -0
  138. data/TODO.fixup/10-canvas-width-overshoot-fix.md +20 -0
  139. data/TODO.fixup/11-layer-sequencer-extraction.md +18 -0
  140. data/TODO.fixup/12-path-style-harmony.md +23 -0
  141. data/TODO.fixup/13-datatype-stereotype-fallback.md +28 -0
  142. data/TODO.fixup/14-ea-exe-reverse-engineering-notes.md +56 -0
  143. data/TODO.fixup/15-enumeration-literal-rendering.md +30 -0
  144. data/TODO.fixup/16-operation-compartment-rendering.md +42 -0
  145. data/TODO.fixup/17-path-count-calibration.md +27 -0
  146. data/TODO.fixup/18-polygon-count-calibration.md +32 -0
  147. data/TODO.fixup/19-rect-count-undershoot-investigation.md +40 -0
  148. data/TODO.fixup/20-stereotype-color-from-classifier.md +18 -0
  149. data/TODO.fixup/21-visibility-filter-for-properties.md +24 -0
  150. data/TODO.fixup/22-multiplicity-display-rule-calibration.md +25 -0
  151. data/TODO.fixup/23-diagram-frame-title-element.md +31 -0
  152. data/TODO.fixup/24-note-element-rendering.md +23 -0
  153. data/TODO.fixup/25-ea-exe-disassembly-findings.md +177 -0
  154. data/TODO.fixup/26-svg-renderer-architecture.md +78 -0
  155. data/TODO.fixup/27-svg-element-emitters-disassembly.md +135 -0
  156. data/TODO.fixup/28-geometry-parser-identification.md +57 -0
  157. data/TODO.fixup/29-qea-svg-xmi-triple-comparison.md +185 -0
  158. data/TODO.fixup/30-theme-system-stub.md +46 -0
  159. data/TODO.fixup/31-theme-value-object-registry.md +17 -0
  160. data/TODO.fixup/32-styleex-on-diagram-model.md +22 -0
  161. data/TODO.fixup/33-text-encoding-decimals-rotation.md +29 -0
  162. data/TODO.fixup/34-per-type-fill-via-theme.md +18 -0
  163. data/TODO.fixup/35-stroke-width-per-theme.md +7 -0
  164. data/TODO.fixup/36-qea-rect-coord-normalization.md +24 -0
  165. data/TODO.fixup/37-package-shape-rendering.md +22 -0
  166. data/TODO.fixup/38-note-element-rendering.md +15 -0
  167. data/TODO.fixup/39-styleex-flag-honoring.md +25 -0
  168. data/TODO.fixup/40-connector-dashed-lines.md +15 -0
  169. data/TODO.fixup/41-diagram-frame-showborder-detection.md +23 -0
  170. data/TODO.fixup/42-textrenderer-centralization.md +10 -0
  171. data/TODO.fixup/43-colorresolver-unification.md +24 -0
  172. data/TODO.fixup/44-theme-aware-textrenderer.md +17 -0
  173. data/TODO.fixup/45-theme-aware-fontresolver.md +22 -0
  174. data/TODO.fixup/46-style-parameterized-by-theme.md +21 -0
  175. data/TODO.fixup/47-canvas-frame-inset.md +19 -0
  176. data/TODO.fixup/48-background-rect-format.md +15 -0
  177. data/TODO.fixup/49-all-samples-integration-test.md +17 -0
  178. data/TODO.fixup/50-svg-emitter-architecture-docs.md +33 -0
  179. data/TODO.fixup/51-promote-theme-to-ea-namespace.md +28 -0
  180. data/TODO.fixup/52-theme-definition-integrated-fills.md +26 -0
  181. data/TODO.fixup/53-theme-registry-yaml-loading.md +50 -0
  182. data/TODO.fixup/54-diagram-theme-api.md +50 -0
  183. data/TODO.fixup/55-update-eaemitter-to-ea-theme.md +23 -0
  184. data/TODO.fixup/56-theme-yaml-files.md +65 -0
  185. data/TODO.fixup/57-theme-specs-and-integration.md +27 -0
  186. data/TODO.fixup/58-ea-entry-point-theme-autoload.md +20 -0
  187. data/TODO.fixup/59-thread-theme-through-all-renderers.md +29 -0
  188. data/TODO.fixup/60-cli-theme-option.md +22 -0
  189. data/TODO.fixup/61-theme-validation.md +28 -0
  190. data/TODO.fixup/62-theme-builder-dsl.md +31 -0
  191. data/TODO.fixup/63-theme-integration-rendering-spec.md +24 -0
  192. data/TODO.fixup/64-theme-writeback-styleex.md +21 -0
  193. data/TODO.fixup/65-remove-dead-eaemitter-theme-files.md +30 -0
  194. data/TODO.fixup/66-styleex-writeback.md +22 -0
  195. data/TODO.fixup/67-delete-dead-code.md +28 -0
  196. data/TODO.fixup/68-figure-parity-status.md +82 -0
  197. data/TODO.fixup/69-package-polygon-rendering.md +54 -0
  198. data/TODO.fixup/70-tagged-values-compartment.md +39 -0
  199. data/TODO.fixup/71-auto-detect-theme-from-xmi.md +37 -0
  200. data/TODO.fixup/72-sample-exports-as-regression-specs.md +37 -0
  201. data/TODO.fixup/73-delete-dead-transformations.md +14 -0
  202. data/TODO.fixup/74-delete-dead-diagram-renderers.md +18 -0
  203. data/TODO.fixup/75-visibility-legend-icons.md +23 -0
  204. data/TODO.fixup/76-plateau-text-undershoot.md +27 -0
  205. data/TODO.fixup/77-canvas-frame-margins.md +28 -0
  206. data/TODO.fixup/78-note-element-rendering.md +30 -0
  207. data/TODO.fixup/79-operation-compartment-rendering.md +27 -0
  208. data/TODO.fixup/80-tagged-value-stereotype-visibility.md +37 -0
  209. data/TODO.fixup/81-figure-parity-current-state.md +63 -0
  210. data/config/qea_schema.yml +356 -0
  211. data/config/themes/119.yml +98 -0
  212. data/config/themes/default.yml +14 -0
  213. data/examples/exports/20251010_current_plateau_v5/UML_EA.DTD +6856 -0
  214. data/examples/exports/20251010_current_plateau_v5/model.xml +96709 -0
  215. data/examples/exports/ArcGISWorkspace_template/UML_EA.DTD +6856 -0
  216. data/examples/exports/ArcGISWorkspace_template/model.xml +1427 -0
  217. data/examples/exports/UmlModel_template/UML_EA.DTD +6856 -0
  218. data/examples/exports/UmlModel_template/model.xml +23 -0
  219. data/examples/exports/basic/UML_EA.DTD +6856 -0
  220. data/examples/exports/basic/model.xml +8039 -0
  221. data/examples/exports/simple/UML_EA.DTD +6856 -0
  222. data/examples/exports/simple/model.xml +585 -0
  223. data/examples/exports/simple_example/UML_EA.DTD +6856 -0
  224. data/examples/exports/simple_example/model.xml +23 -0
  225. data/examples/exports/test/UML_EA.DTD +6856 -0
  226. data/examples/exports/test/model.xml +1638 -0
  227. data/examples/qea/basic.qea +0 -0
  228. data/frontend/README.md +51 -0
  229. data/frontend/dist/app.iife.js +24 -0
  230. data/frontend/dist/style.css +1 -0
  231. data/frontend/index.html +26 -0
  232. data/frontend/package-lock.json +2359 -0
  233. data/frontend/package.json +26 -0
  234. data/frontend/src/App.vue +59 -0
  235. data/frontend/src/app.ts +8 -0
  236. data/frontend/src/components/AppHeader.vue +127 -0
  237. data/frontend/src/components/AppSidebar.vue +119 -0
  238. data/frontend/src/components/ClassDetails.vue +247 -0
  239. data/frontend/src/components/DiagramView.vue +79 -0
  240. data/frontend/src/components/PackageDetails.vue +92 -0
  241. data/frontend/src/components/PackageTreeNode.vue +64 -0
  242. data/frontend/src/components/SearchResults.vue +48 -0
  243. data/frontend/src/components/WelcomeView.vue +87 -0
  244. data/frontend/src/shims-vue.d.ts +5 -0
  245. data/frontend/src/stores/dataStore.ts +79 -0
  246. data/frontend/src/stores/uiStore.ts +167 -0
  247. data/frontend/src/styles/main.css +1566 -0
  248. data/frontend/src/types.ts +221 -0
  249. data/frontend/tests/e2e/__screenshots__/new-dark-mode.png +0 -0
  250. data/frontend/tests/e2e/__screenshots__/new-package-details.png +0 -0
  251. data/frontend/tests/e2e/__screenshots__/new-search-modal.png +0 -0
  252. data/frontend/tests/e2e/__screenshots__/new-sidebar-collapsed.png +0 -0
  253. data/frontend/tests/e2e/__screenshots__/new-welcome.png +0 -0
  254. data/frontend/tests/e2e/render.spec.ts +188 -0
  255. data/frontend/tsconfig.json +20 -0
  256. data/frontend/vite.config.ts +26 -0
  257. data/frontend/vitest.config.ts +8 -0
  258. data/lib/ea/cli/app.rb +57 -2
  259. data/lib/ea/cli/command/diagrams.rb +37 -28
  260. data/lib/ea/cli/command/diff.rb +46 -0
  261. data/lib/ea/cli/command/export.rb +80 -0
  262. data/lib/ea/cli/command/info.rb +75 -0
  263. data/lib/ea/cli/command/lint.rb +48 -0
  264. data/lib/ea/cli/command/mdg.rb +98 -0
  265. data/lib/ea/cli/command/query.rb +34 -0
  266. data/lib/ea/cli/command/render.rb +135 -0
  267. data/lib/ea/cli/command/svg.rb +8 -15
  268. data/lib/ea/cli/command.rb +7 -0
  269. data/lib/ea/diagram/display_config.rb +184 -0
  270. data/lib/ea/diagram.rb +4 -41
  271. data/lib/ea/diff/change.rb +30 -0
  272. data/lib/ea/diff/comparator.rb +82 -0
  273. data/lib/ea/diff/html_reporter.rb +91 -0
  274. data/lib/ea/diff.rb +15 -0
  275. data/lib/ea/export/json/generator.rb +42 -0
  276. data/lib/ea/export/json.rb +12 -0
  277. data/lib/ea/export/json_schema/generator.rb +77 -0
  278. data/lib/ea/export/json_schema.rb +12 -0
  279. data/lib/ea/export/plantuml/generator.rb +73 -0
  280. data/lib/ea/export/plantuml.rb +12 -0
  281. data/lib/ea/export/xmi/generator.rb +77 -0
  282. data/lib/ea/export/xmi.rb +11 -0
  283. data/lib/ea/export/xsd/class_mapping.rb +65 -0
  284. data/lib/ea/export/xsd/generator.rb +142 -0
  285. data/lib/ea/export/xsd/namespace_registry.rb +82 -0
  286. data/lib/ea/export/xsd.rb +19 -0
  287. data/lib/ea/export.rb +14 -0
  288. data/lib/ea/image/emf_renderer.rb +42 -0
  289. data/lib/ea/image.rb +12 -0
  290. data/lib/ea/lint/engine.rb +30 -0
  291. data/lib/ea/lint/lint_rule.rb +38 -0
  292. data/lib/ea/lint/offense.rb +18 -0
  293. data/lib/ea/lint/rules/cyclic_generalization.rb +62 -0
  294. data/lib/ea/lint/rules/duplicate_name.rb +28 -0
  295. data/lib/ea/lint/rules/missing_stereotype.rb +35 -0
  296. data/lib/ea/lint/rules/naming_convention.rb +44 -0
  297. data/lib/ea/lint/rules/orphan_element.rb +28 -0
  298. data/lib/ea/lint/rules.rb +14 -0
  299. data/lib/ea/lint.rb +13 -0
  300. data/lib/ea/mdg/document.rb +120 -0
  301. data/lib/ea/mdg/loader.rb +118 -0
  302. data/lib/ea/mdg/registry.rb +98 -0
  303. data/lib/ea/mdg/stereotype_alias_registry.rb +77 -0
  304. data/lib/ea/mdg/xml/applies_to.rb +18 -0
  305. data/lib/ea/mdg/xml/apply.rb +18 -0
  306. data/lib/ea/mdg/xml/content.rb +18 -0
  307. data/lib/ea/mdg/xml/documentation.rb +24 -0
  308. data/lib/ea/mdg/xml/stereotype.rb +28 -0
  309. data/lib/ea/mdg/xml/stereotypes.rb +18 -0
  310. data/lib/ea/mdg/xml/tag.rb +28 -0
  311. data/lib/ea/mdg/xml/tagged_values.rb +18 -0
  312. data/lib/ea/mdg/xml/technology.rb +28 -0
  313. data/lib/ea/mdg/xml/uml_profile.rb +22 -0
  314. data/lib/ea/mdg/xml/uml_profiles.rb +18 -0
  315. data/lib/ea/mdg/xml.rb +24 -0
  316. data/lib/ea/mdg.rb +25 -0
  317. data/lib/ea/model/classifier.rb +4 -0
  318. data/lib/ea/model/constraint.rb +24 -0
  319. data/lib/ea/model/diagram.rb +85 -0
  320. data/lib/ea/model/diagram_connector.rb +34 -0
  321. data/lib/ea/model/diagram_element.rb +16 -0
  322. data/lib/ea/model/document.rb +47 -2
  323. data/lib/ea/model/ghost_label.rb +32 -0
  324. data/lib/ea/model/instance_specification.rb +34 -0
  325. data/lib/ea/model/legend.rb +43 -0
  326. data/lib/ea/model/legend_item.rb +26 -0
  327. data/lib/ea/model/note.rb +28 -0
  328. data/lib/ea/model/operation.rb +2 -0
  329. data/lib/ea/model/property.rb +2 -0
  330. data/lib/ea/model/relationship.rb +2 -0
  331. data/lib/ea/model/signal.rb +14 -0
  332. data/lib/ea/model/slot.rb +19 -0
  333. data/lib/ea/model.rb +8 -0
  334. data/lib/ea/ocl/evaluator.rb +94 -0
  335. data/lib/ea/ocl/nodes.rb +30 -0
  336. data/lib/ea/ocl/parser.rb +133 -0
  337. data/lib/ea/ocl/unsupported_error.rb +7 -0
  338. data/lib/ea/ocl.rb +13 -0
  339. data/lib/ea/qea/factory/document_builder.rb +24 -10
  340. data/lib/ea/qea/factory/generalization_builder.rb +9 -11
  341. data/lib/ea/qea/infrastructure/table_reader.rb +9 -0
  342. data/lib/ea/qea/models/ea_author.rb +35 -0
  343. data/lib/ea/qea/models/ea_glossary.rb +34 -0
  344. data/lib/ea/qea/models/ea_image.rb +53 -0
  345. data/lib/ea/qea/models/ea_implement.rb +32 -0
  346. data/lib/ea/qea/models/ea_list.rb +42 -0
  347. data/lib/ea/qea/models/ea_object_effort.rb +34 -0
  348. data/lib/ea/qea/models/ea_object_problem.rb +37 -0
  349. data/lib/ea/qea/models/ea_object_require.rb +34 -0
  350. data/lib/ea/qea/models/ea_object_resource.rb +34 -0
  351. data/lib/ea/qea/models/ea_object_risk.rb +34 -0
  352. data/lib/ea/qea/models/ea_object_scenario.rb +34 -0
  353. data/lib/ea/qea/models/ea_object_test.rb +35 -0
  354. data/lib/ea/qea/models/ea_object_trx.rb +34 -0
  355. data/lib/ea/qea/models/ea_operation.rb +7 -0
  356. data/lib/ea/qea/models/ea_palette.rb +30 -0
  357. data/lib/ea/qea/models/ea_palette_item.rb +36 -0
  358. data/lib/ea/qea/models/ea_phase.rb +40 -0
  359. data/lib/ea/qea/models/ea_role_constraint.rb +32 -0
  360. data/lib/ea/qea/models/ea_secrypt.rb +34 -0
  361. data/lib/ea/qea/models/ea_version.rb +39 -0
  362. data/lib/ea/qea/models/ea_xref.rb +11 -1
  363. data/lib/ea/qea/models.rb +19 -0
  364. data/lib/ea/qea/services/database_loader.rb +22 -1
  365. data/lib/ea/query/builder.rb +108 -0
  366. data/lib/ea/query.rb +9 -0
  367. data/lib/ea/render/image_converter.rb +101 -0
  368. data/lib/ea/render.rb +10 -0
  369. data/lib/ea/shapescript/parser.rb +208 -0
  370. data/lib/ea/shapescript/renderer.rb +74 -0
  371. data/lib/ea/shapescript/shape.rb +34 -0
  372. data/lib/ea/shapescript.rb +24 -0
  373. data/lib/ea/sources/qea/adapter.rb +22 -5
  374. data/lib/ea/sources/qea/classifier_builder.rb +184 -7
  375. data/lib/ea/sources/qea/diagram_builder.rb +352 -24
  376. data/lib/ea/sources/qea/id_normalizer.rb +16 -1
  377. data/lib/ea/sources/qea/instance_builder.rb +113 -0
  378. data/lib/ea/sources/qea/legend_builder.rb +137 -0
  379. data/lib/ea/sources/qea/note_builder.rb +58 -0
  380. data/lib/ea/sources/qea/object_classifier_map.rb +6 -1
  381. data/lib/ea/sources/qea/operation_builder.rb +1 -0
  382. data/lib/ea/sources/qea/package_builder.rb +16 -0
  383. data/lib/ea/sources/qea/relationship_builder.rb +21 -5
  384. data/lib/ea/sources/qea/tagged_value_builder.rb +28 -9
  385. data/lib/ea/sources/qea/xref/legend_definition.rb +35 -0
  386. data/lib/ea/sources/qea/xref/parser.rb +150 -0
  387. data/lib/ea/sources/qea/xref/property_definition.rb +29 -0
  388. data/lib/ea/sources/qea/xref/record.rb +41 -0
  389. data/lib/ea/sources/qea/xref/stereotype_application.rb +37 -0
  390. data/lib/ea/sources/qea/xref.rb +27 -0
  391. data/lib/ea/sources/qea.rb +4 -0
  392. data/lib/ea/sources/xmi/adapter.rb +80 -2
  393. data/lib/ea/sources/xmi/classifier_builder.rb +10 -1
  394. data/lib/ea/sources/xmi/diagram_builder.rb +95 -18
  395. data/lib/ea/sources/xmi/extension_geometry_parser.rb +19 -2
  396. data/lib/ea/sources/xmi/extension_style_parser.rb +15 -2
  397. data/lib/ea/sources/xmi/note_builder.rb +46 -0
  398. data/lib/ea/sources/xmi/property_builder.rb +9 -0
  399. data/lib/ea/sources/xmi/stereotype_builder.rb +54 -0
  400. data/lib/ea/sources/xmi/tag_builder.rb +45 -0
  401. data/lib/ea/sources/xmi/umldi_keyword_extractor.rb +87 -0
  402. data/lib/ea/sources/xmi.rb +4 -0
  403. data/lib/ea/spa/output/sharded_multi_file_strategy.rb +18 -3
  404. data/lib/ea/spa/output/single_file_strategy.rb +8 -2
  405. data/lib/ea/spa/output/strategy.rb +34 -0
  406. data/lib/ea/svg/connector_router.rb +134 -0
  407. data/lib/ea/svg/ea_emitter/background.rb +2 -3
  408. data/lib/ea/svg/ea_emitter/bounds_calculator.rb +142 -0
  409. data/lib/ea/svg/ea_emitter/canvas.rb +56 -33
  410. data/lib/ea/svg/ea_emitter/color_resolver.rb +56 -0
  411. data/lib/ea/svg/ea_emitter/compartment/attributes.rb +28 -0
  412. data/lib/ea/svg/ea_emitter/compartment/constraints.rb +30 -0
  413. data/lib/ea/svg/ea_emitter/compartment/enum_literals.rb +86 -0
  414. data/lib/ea/svg/ea_emitter/compartment/header.rb +32 -0
  415. data/lib/ea/svg/ea_emitter/compartment/header_divider.rb +57 -0
  416. data/lib/ea/svg/ea_emitter/compartment/instance_slots.rb +96 -0
  417. data/lib/ea/svg/ea_emitter/compartment/instance_underline.rb +67 -0
  418. data/lib/ea/svg/ea_emitter/compartment/note_body.rb +52 -0
  419. data/lib/ea/svg/ea_emitter/compartment/note_text.rb +102 -0
  420. data/lib/ea/svg/ea_emitter/compartment/operations.rb +38 -0
  421. data/lib/ea/svg/ea_emitter/compartment/package_contents.rb +72 -0
  422. data/lib/ea/svg/ea_emitter/compartment/package_from_parent.rb +136 -0
  423. data/lib/ea/svg/ea_emitter/compartment/shape.rb +82 -0
  424. data/lib/ea/svg/ea_emitter/compartment/tagged_values.rb +30 -0
  425. data/lib/ea/svg/ea_emitter/compartment.rb +58 -0
  426. data/lib/ea/svg/ea_emitter/connectors.rb +46 -12
  427. data/lib/ea/svg/ea_emitter/diagram_frame.rb +143 -0
  428. data/lib/ea/svg/ea_emitter/document.rb +15 -24
  429. data/lib/ea/svg/ea_emitter/element/attribute_line_builder.rb +117 -0
  430. data/lib/ea/svg/ea_emitter/element/attribute_renderer.rb +119 -0
  431. data/lib/ea/svg/ea_emitter/element/bcol_decoder.rb +29 -0
  432. data/lib/ea/svg/ea_emitter/element/compartment_geometry.rb +113 -0
  433. data/lib/ea/svg/ea_emitter/element/constraint_renderer.rb +53 -0
  434. data/lib/ea/svg/ea_emitter/element/divider_renderer.rb +17 -0
  435. data/lib/ea/svg/ea_emitter/element/enumeration_literal_renderer.rb +34 -0
  436. data/lib/ea/svg/ea_emitter/element/filter.rb +44 -0
  437. data/lib/ea/svg/ea_emitter/element/hand_draw_shape_renderer.rb +77 -0
  438. data/lib/ea/svg/ea_emitter/element/header_line_pipeline.rb +43 -0
  439. data/lib/ea/svg/ea_emitter/element/header_line_provider/instance_spec.rb +27 -0
  440. data/lib/ea/svg/ea_emitter/element/header_line_provider/name.rb +76 -0
  441. data/lib/ea/svg/ea_emitter/element/header_line_provider/parent_ghost.rb +25 -0
  442. data/lib/ea/svg/ea_emitter/element/header_line_provider/stereotype_label.rb +68 -0
  443. data/lib/ea/svg/ea_emitter/element/header_line_provider.rb +19 -0
  444. data/lib/ea/svg/ea_emitter/element/header_lines.rb +27 -0
  445. data/lib/ea/svg/ea_emitter/element/header_renderer.rb +48 -0
  446. data/lib/ea/svg/ea_emitter/element/icon_renderer.rb +109 -0
  447. data/lib/ea/svg/ea_emitter/element/legend_renderer.rb +177 -0
  448. data/lib/ea/svg/ea_emitter/element/note_shape_renderer.rb +112 -0
  449. data/lib/ea/svg/ea_emitter/element/operation_renderer.rb +100 -0
  450. data/lib/ea/svg/ea_emitter/element/package_shape_renderer.rb +181 -0
  451. data/lib/ea/svg/ea_emitter/element/row_icon_renderer.rb +156 -0
  452. data/lib/ea/svg/ea_emitter/element/shape_renderer.rb +17 -0
  453. data/lib/ea/svg/ea_emitter/element/stereotype_icon_renderer.rb +82 -0
  454. data/lib/ea/svg/ea_emitter/element/tagged_value_renderer.rb +50 -0
  455. data/lib/ea/svg/ea_emitter/element/text_escape.rb +20 -0
  456. data/lib/ea/svg/ea_emitter/element.rb +37 -0
  457. data/lib/ea/svg/ea_emitter/elements.rb +283 -95
  458. data/lib/ea/svg/ea_emitter/font_resolver.rb +111 -0
  459. data/lib/ea/svg/ea_emitter/ghost_labels.rb +66 -0
  460. data/lib/ea/svg/ea_emitter/label/end_label.rb +266 -0
  461. data/lib/ea/svg/ea_emitter/label/midpoint_label.rb +101 -0
  462. data/lib/ea/svg/ea_emitter/label/registry.rb +50 -0
  463. data/lib/ea/svg/ea_emitter/label.rb +23 -0
  464. data/lib/ea/svg/ea_emitter/labels.rb +93 -27
  465. data/lib/ea/svg/ea_emitter/layer.rb +20 -0
  466. data/lib/ea/svg/ea_emitter/layer_sequencer.rb +93 -0
  467. data/lib/ea/svg/ea_emitter/marker/arrow_path.rb +52 -0
  468. data/lib/ea/svg/ea_emitter/marker/diamond.rb +57 -0
  469. data/lib/ea/svg/ea_emitter/marker/kind.rb +35 -0
  470. data/lib/ea/svg/ea_emitter/marker/open_triangle.rb +27 -0
  471. data/lib/ea/svg/ea_emitter/marker/package_import.rb +39 -0
  472. data/lib/ea/svg/ea_emitter/marker/plus.rb +40 -0
  473. data/lib/ea/svg/ea_emitter/marker/registry.rb +42 -0
  474. data/lib/ea/svg/ea_emitter/marker.rb +37 -0
  475. data/lib/ea/svg/ea_emitter/markers.rb +351 -64
  476. data/lib/ea/svg/ea_emitter/render_context.rb +52 -0
  477. data/lib/ea/svg/ea_emitter/style.rb +15 -0
  478. data/lib/ea/svg/ea_emitter/text_renderer.rb +92 -0
  479. data/lib/ea/svg/ea_emitter.rb +33 -11
  480. data/lib/ea/svg/parity/checker.rb +105 -0
  481. data/lib/ea/svg/parity/source.rb +59 -0
  482. data/lib/ea/svg/parity/suite.rb +113 -0
  483. data/lib/ea/svg/parity.rb +14 -0
  484. data/lib/ea/svg.rb +2 -15
  485. data/lib/ea/theme/definition.rb +176 -0
  486. data/lib/ea/theme/loader.rb +125 -0
  487. data/lib/ea/theme/registry.rb +96 -0
  488. data/lib/ea/theme.rb +37 -0
  489. data/lib/ea/transformations.rb +5 -88
  490. data/lib/ea/version.rb +4 -1
  491. data/lib/ea.rb +14 -4
  492. data/lib/tasks/svg_bench.rake +87 -0
  493. data/lutaml-uml-0.5.1.gem +0 -0
  494. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-1-themes-list.png +0 -0
  495. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-1-themes.png +0 -0
  496. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-2-gradients.png +0 -0
  497. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-3-colors.png +0 -0
  498. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-4-appearance-fonts.png +0 -0
  499. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-4-appearance.png +0 -0
  500. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-5-behavior.png +0 -0
  501. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram-6-sequence.png +0 -0
  502. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-1-diagram.png +0 -0
  503. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-2-objects.png +0 -0
  504. data/reference-docs/enterprise-architect-appearance-dialogs/appearance-3-links.png +0 -0
  505. metadata +449 -26
  506. data/lib/ea/diagram/configuration.rb +0 -379
  507. data/lib/ea/diagram/element_renderers/base_renderer.rb +0 -77
  508. data/lib/ea/diagram/element_renderers/class_renderer.rb +0 -323
  509. data/lib/ea/diagram/element_renderers/connector_renderer.rb +0 -41
  510. data/lib/ea/diagram/element_renderers/package_renderer.rb +0 -61
  511. data/lib/ea/diagram/element_renderers.rb +0 -43
  512. data/lib/ea/diagram/extractor.rb +0 -566
  513. data/lib/ea/diagram/layout_engine.rb +0 -170
  514. data/lib/ea/diagram/path_builder.rb +0 -202
  515. data/lib/ea/diagram/style_parser.rb +0 -42
  516. data/lib/ea/diagram/style_resolver.rb +0 -291
  517. data/lib/ea/diagram/svg_renderer.rb +0 -274
  518. data/lib/ea/diagram/util.rb +0 -73
  519. data/lib/ea/svg/bounds_calculator.rb +0 -74
  520. data/lib/ea/svg/connector_path.rb +0 -138
  521. data/lib/ea/svg/element_box.rb +0 -256
  522. data/lib/ea/svg/renderer.rb +0 -77
  523. data/lib/ea/svg/style_resolver.rb +0 -72
  524. data/lib/ea/transformations/configuration.rb +0 -333
  525. data/lib/ea/transformations/format_registry.rb +0 -366
  526. data/lib/ea/transformations/parsers/base_parser.rb +0 -482
  527. data/lib/ea/transformations/parsers/qea_parser.rb +0 -401
  528. data/lib/ea/transformations/parsers/xmi_parser.rb +0 -243
  529. data/lib/ea/transformations/transformation_engine.rb +0 -390
Binary file
@@ -0,0 +1,51 @@
1
+ # Frontend (Vue 3 SPA)
2
+
3
+ The `ea spa` command emits a single-page application built from this
4
+ directory. The dist artifacts are committed so the gem ships
5
+ pre-built and never needs `npm` at install time.
6
+
7
+ ## Layout
8
+
9
+ ```
10
+ frontend/
11
+ ├── src/ # Vue 3 + Pinia source
12
+ ├── dist/ # Built bundle (committed) — app.iife.js + style.css
13
+ ├── tests/e2e/ # Vitest browser tests + reference screenshots
14
+ ├── package.json # npm manifest
15
+ ├── vite.config.ts # Build config (IIFE output, single chunk)
16
+ └── tsconfig.json # TypeScript config
17
+ ```
18
+
19
+ ## When to rebuild
20
+
21
+ Any change to `src/`, `package.json`, or `vite.config.ts` requires a
22
+ rebuild. CI (`.github/workflows/frontend.yml`) fails the build if
23
+ `dist/` doesn't match a fresh build, so a stale bundle can't merge.
24
+
25
+ ## Rebuild
26
+
27
+ ```bash
28
+ cd frontend
29
+ npm install
30
+ npm run build # → dist/app.iife.js, dist/style.css
31
+ ```
32
+
33
+ The output is small (~134 KB total, 38 KB gzipped) and self-contained.
34
+ Both `lib/ea/spa/output/single_file_strategy.rb` (inlines the bundle
35
+ into the HTML) and `sharded_multi_file_strategy.rb` (copies the
36
+ bundle as `app.js` / `style.css` next to `index.html`) read from
37
+ `frontend/dist/` via `Ea::Spa::Output::Strategy::FRONTEND_DIST_DIR`.
38
+
39
+ ## Data contract
40
+
41
+ The SPA expects the shell to set:
42
+
43
+ - `window.__SPA_DATA__` — single-file mode: a complete payload with
44
+ `metadata`, `packageTree`, `skeletonEntries`, `searchIndex`, `shards`
45
+ - `window.__SPA_SKELETON_URL__`, `__SPA_SEARCH_URL__`,
46
+ `__SPA_SHARD_BASE__` — sharded mode: URLs the SPA fetches lazily
47
+
48
+ The sharded loader fetches `${__SPA_SHARD_BASE__}${plural}/${id}.json`
49
+ on demand; for a class with id `c1`, the SPA fetches
50
+ `data/classes/c1.json`. Shard files have the shape
51
+ `{ "id": ..., "kind": "class"|"package"|"enumeration"|..., "payload": {...} }`.
@@ -0,0 +1,24 @@
1
+ (function(){"use strict";/**
2
+ * @vue/shared v3.5.40
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function Fs(t){const e=Object.create(null);for(const s of t.split(","))e[s]=1;return s=>s in e}const tt={},we=[],Lt=()=>{},Pn=()=>!1,ns=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&(t.charCodeAt(2)>122||t.charCodeAt(2)<97),is=t=>t.startsWith("onUpdate:"),dt=Object.assign,js=(t,e)=>{const s=t.indexOf(e);s>-1&&t.splice(s,1)},jr=Object.prototype.hasOwnProperty,Q=(t,e)=>jr.call(t,e),j=Array.isArray,ke=t=>Oe(t)==="[object Map]",En=t=>Oe(t)==="[object Set]",On=t=>Oe(t)==="[object Date]",U=t=>typeof t=="function",rt=t=>typeof t=="string",Mt=t=>typeof t=="symbol",X=t=>t!==null&&typeof t=="object",In=t=>(X(t)||U(t))&&U(t.then)&&U(t.catch),Ln=Object.prototype.toString,Oe=t=>Ln.call(t),Vr=t=>Oe(t).slice(8,-1),Rn=t=>Oe(t)==="[object Object]",rs=t=>rt(t)&&t!=="NaN"&&t[0]!=="-"&&""+parseInt(t,10)===t,Ie=Fs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),os=t=>{const e=Object.create(null);return(s=>e[s]||(e[s]=t(s)))},Hr=/-\w/g,bt=os(t=>t.replace(Hr,e=>e.slice(1).toUpperCase())),Ur=/\B([A-Z])/g,oe=os(t=>t.replace(Ur,"-$1").toLowerCase()),ls=os(t=>t.charAt(0).toUpperCase()+t.slice(1)),Vs=os(t=>t?`on${ls(t)}`:""),Rt=(t,e)=>!Object.is(t,e),as=(t,...e)=>{for(let s=0;s<t.length;s++)t[s](...e)},Dn=(t,e,s,n=!1)=>{Object.defineProperty(t,e,{configurable:!0,enumerable:!1,writable:n,value:s})},Hs=t=>{const e=parseFloat(t);return isNaN(e)?t:e};let Bn;const cs=()=>Bn||(Bn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function us(t){if(j(t)){const e={};for(let s=0;s<t.length;s++){const n=t[s],i=rt(n)?qr(n):us(n);if(i)for(const r in i)e[r]=i[r]}return e}else if(rt(t)||X(t))return t}const Kr=/;(?![^(]*\))/g,Wr=/:([^]+)/,Gr=/\/\*[^]*?\*\//g;function qr(t){const e={};return t.replace(Gr,"").split(Kr).forEach(s=>{if(s){const n=s.split(Wr);n.length>1&&(e[n[0].trim()]=n[1].trim())}}),e}function Pt(t){let e="";if(rt(t))e=t;else if(j(t))for(let s=0;s<t.length;s++){const n=Pt(t[s]);n&&(e+=n+" ")}else if(X(t))for(const s in t)t[s]&&(e+=s+" ");return e.trim()}const Jr=Fs("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Nn(t){return!!t||t===""}function zr(t,e){if(t.length!==e.length)return!1;let s=!0;for(let n=0;s&&n<t.length;n++)s=Us(t[n],e[n]);return s}function Us(t,e){if(t===e)return!0;let s=On(t),n=On(e);if(s||n)return s&&n?t.getTime()===e.getTime():!1;if(s=Mt(t),n=Mt(e),s||n)return t===e;if(s=j(t),n=j(e),s||n)return s&&n?zr(t,e):!1;if(s=X(t),n=X(e),s||n){if(!s||!n)return!1;const i=Object.keys(t).length,r=Object.keys(e).length;if(i!==r)return!1;for(const o in t){const l=t.hasOwnProperty(o),a=e.hasOwnProperty(o);if(l&&!a||!l&&a||!Us(t[o],e[o]))return!1}}return String(t)===String(e)}const Fn=t=>!!(t&&t.__v_isRef===!0),A=t=>rt(t)?t:t==null?"":j(t)||X(t)&&(t.toString===Ln||!U(t.toString))?Fn(t)?A(t.value):JSON.stringify(t,jn,2):String(t),jn=(t,e)=>Fn(e)?jn(t,e.value):ke(e)?{[`Map(${e.size})`]:[...e.entries()].reduce((s,[n,i],r)=>(s[Ks(n,r)+" =>"]=i,s),{})}:En(e)?{[`Set(${e.size})`]:[...e.values()].map(s=>Ks(s))}:Mt(e)?Ks(e):X(e)&&!j(e)&&!Rn(e)?String(e):e,Ks=(t,e="")=>{var s;return Mt(t)?`Symbol(${(s=t.description)!=null?s:e})`:t};/**
6
+ * @vue/reactivity v3.5.40
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let ut;class Vn{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&ut&&(ut.active?(this.parent=ut,this.index=(ut.scopes||(ut.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,s;if(this.scopes){const n=this.scopes.slice();for(e=0,s=n.length;e<s;e++)n[e].pause()}for(e=0,s=this.effects.length;e<s;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,s;if(this.scopes){const i=this.scopes.slice();for(e=0,s=i.length;e<s;e++)i[e].resume()}const n=this.effects.slice();for(e=0,s=n.length;e<s;e++)n[e].resume()}}run(e){if(this._active){const s=ut;try{return ut=this,e()}finally{ut=s}}}on(){++this._on===1&&(this.prevScope=ut,ut=this)}off(){if(this._on>0&&--this._on===0){if(ut===this)ut=this.prevScope;else{let e=ut;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const i=this.scopes.slice();for(s=0,n=i.length;s<n;s++)i[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function Hn(t){return new Vn(t)}function Un(){return ut}function Yr(t,e=!1){ut&&ut.cleanups.push(t)}let st;const Ws=new WeakSet;class Kn{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ut&&(ut.active?ut.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ws.has(this)&&(Ws.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Gn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Qn(this),qn(this);const e=st,s=Et;st=this,Et=!0;try{return this.fn()}finally{Jn(this),st=e,Et=s,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)zs(e);this.deps=this.depsTail=void 0,Qn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ws.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Js(this)&&this.run()}get dirty(){return Js(this)}}let Wn=0,Le,Re;function Gn(t,e=!1){if(t.flags|=8,e){t.next=Re,Re=t;return}t.next=Le,Le=t}function Gs(){Wn++}function qs(){if(--Wn>0)return;if(Re){let e=Re;for(Re=void 0;e;){const s=e.next;e.next=void 0,e.flags&=-9,e=s}}let t;for(;Le;){let e=Le;for(Le=void 0;e;){const s=e.next;if(e.next=void 0,e.flags&=-9,e.flags&1)try{e.trigger()}catch(n){t||(t=n)}e=s}}if(t)throw t}function qn(t){for(let e=t.deps;e;e=e.nextDep)e.version=-1,e.prevActiveLink=e.dep.activeLink,e.dep.activeLink=e}function Jn(t){let e,s=t.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),zs(n),Qr(n)):e=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}t.deps=e,t.depsTail=s}function Js(t){for(let e=t.deps;e;e=e.nextDep)if(e.dep.version!==e.version||e.dep.computed&&(zn(e.dep.computed)||e.dep.version!==e.version))return!0;return!!t._dirty}function zn(t){if(t.flags&4&&!(t.flags&16)||(t.flags&=-17,t.globalVersion===De)||(t.globalVersion=De,!t.isSSR&&t.flags&128&&(!t.deps&&!t._dirty||!Js(t))))return;t.flags|=2;const e=t.dep,s=st,n=Et;st=t,Et=!0;try{qn(t);const i=t.fn(t._value);(e.version===0||Rt(i,t._value))&&(t.flags|=128,t._value=i,e.version++)}catch(i){throw e.version++,i}finally{st=s,Et=n,Jn(t),t.flags&=-3}}function zs(t,e=!1){const{dep:s,prevSub:n,nextSub:i}=t;if(n&&(n.nextSub=i,t.prevSub=void 0),i&&(i.prevSub=n,t.nextSub=void 0),s.subs===t&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)zs(r,!0)}!e&&!--s.sc&&s.map&&s.map.delete(s.key)}function Qr(t){const{prevDep:e,nextDep:s}=t;e&&(e.nextDep=s,t.prevDep=void 0),s&&(s.prevDep=e,t.nextDep=void 0)}let Et=!0;const Yn=[];function Dt(){Yn.push(Et),Et=!1}function Bt(){const t=Yn.pop();Et=t===void 0?!0:t}function Qn(t){const{cleanup:e}=t;if(t.cleanup=void 0,e){const s=st;st=void 0;try{e()}finally{st=s}}}let De=0;class Xr{constructor(e,s){this.sub=e,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ys{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!st||!Et||st===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==st)s=this.activeLink=new Xr(st,this),st.deps?(s.prevDep=st.depsTail,st.depsTail.nextDep=s,st.depsTail=s):st.deps=st.depsTail=s,Xn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=st.depsTail,s.nextDep=void 0,st.depsTail.nextDep=s,st.depsTail=s,st.deps===s&&(st.deps=n)}return s}trigger(e){this.version++,De++,this.notify(e)}notify(e){Gs();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{qs()}}}function Xn(t){if(t.dep.sc++,t.sub.flags&4){const e=t.dep.computed;if(e&&!t.dep.subs){e.flags|=20;for(let n=e.deps;n;n=n.nextDep)Xn(n)}const s=t.dep.subs;s!==t&&(t.prevSub=s,s&&(s.nextSub=t)),t.dep.subs=t}}const fs=new WeakMap,de=Symbol(""),Qs=Symbol(""),Be=Symbol("");function _t(t,e,s){if(Et&&st){let n=fs.get(t);n||fs.set(t,n=new Map);let i=n.get(s);i||(n.set(s,i=new Ys),i.map=n,i.key=s),i.track()}}function qt(t,e,s,n,i,r){const o=fs.get(t);if(!o){De++;return}const l=a=>{a&&a.trigger()};if(Gs(),e==="clear")o.forEach(l);else{const a=j(t),f=a&&rs(s);if(a&&s==="length"){const h=Number(n);o.forEach((d,g)=>{(g==="length"||g===Be||!Mt(g)&&g>=h)&&l(d)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),f&&l(o.get(Be)),e){case"add":a?f&&l(o.get("length")):(l(o.get(de)),ke(t)&&l(o.get(Qs)));break;case"delete":a||(l(o.get(de)),ke(t)&&l(o.get(Qs)));break;case"set":ke(t)&&l(o.get(de));break}}qs()}function Zr(t,e){const s=fs.get(t);return s&&s.get(e)}function Ce(t){const e=J(t);return e===t?e:(_t(e,"iterate",Be),Ct(t)?e:e.map(Ot))}function ds(t){return _t(t=J(t),"iterate",Be),t}function Nt(t,e){return Yt(t)?xe(zt(t)?Ot(e):e):Ot(e)}const to={__proto__:null,[Symbol.iterator](){return Xs(this,Symbol.iterator,t=>Nt(this,t))},concat(...t){return Ce(this).concat(...t.map(e=>j(e)?Ce(e):e))},entries(){return Xs(this,"entries",t=>(t[1]=Nt(this,t[1]),t))},every(t,e){return Jt(this,"every",t,e,void 0,arguments)},filter(t,e){return Jt(this,"filter",t,e,s=>s.map(n=>Nt(this,n)),arguments)},find(t,e){return Jt(this,"find",t,e,s=>Nt(this,s),arguments)},findIndex(t,e){return Jt(this,"findIndex",t,e,void 0,arguments)},findLast(t,e){return Jt(this,"findLast",t,e,s=>Nt(this,s),arguments)},findLastIndex(t,e){return Jt(this,"findLastIndex",t,e,void 0,arguments)},forEach(t,e){return Jt(this,"forEach",t,e,void 0,arguments)},includes(...t){return Zs(this,"includes",t)},indexOf(...t){return Zs(this,"indexOf",t)},join(t){return Ce(this).join(t)},lastIndexOf(...t){return Zs(this,"lastIndexOf",t)},map(t,e){return Jt(this,"map",t,e,void 0,arguments)},pop(){return Ne(this,"pop")},push(...t){return Ne(this,"push",t)},reduce(t,...e){return Zn(this,"reduce",t,e)},reduceRight(t,...e){return Zn(this,"reduceRight",t,e)},shift(){return Ne(this,"shift")},some(t,e){return Jt(this,"some",t,e,void 0,arguments)},splice(...t){return Ne(this,"splice",t)},toReversed(){return Ce(this).toReversed()},toSorted(t){return Ce(this).toSorted(t)},toSpliced(...t){return Ce(this).toSpliced(...t)},unshift(...t){return Ne(this,"unshift",t)},values(){return Xs(this,"values",t=>Nt(this,t))}};function Xs(t,e,s){const n=ds(t),i=n[e]();return n!==t&&!Ct(t)&&(i._next=i.next,i.next=()=>{const r=i._next();return r.done||(r.value=s(r.value)),r}),i}const eo=Array.prototype;function Jt(t,e,s,n,i,r){const o=ds(t),l=o!==t&&!Ct(t),a=o[e];if(a!==eo[e]){const d=a.apply(t,r);return l?Ot(d):d}let f=s;o!==t&&(l?f=function(d,g){return s.call(this,Nt(t,d),g,t)}:s.length>2&&(f=function(d,g){return s.call(this,d,g,t)}));const h=a.call(o,f,n);return l&&i?i(h):h}function Zn(t,e,s,n){const i=ds(t),r=i!==t&&!Ct(t);let o=s,l=!1;i!==t&&(r?(l=n.length===0,o=function(f,h,d){return l&&(l=!1,f=Nt(t,f)),s.call(this,f,Nt(t,h),d,t)}):s.length>3&&(o=function(f,h,d){return s.call(this,f,h,d,t)}));const a=i[e](o,...n);return l?Nt(t,a):a}function Zs(t,e,s){const n=J(t);_t(n,"iterate",Be);const i=n[e](...s);return(i===-1||i===!1)&&bs(s[0])?(s[0]=J(s[0]),n[e](...s)):i}function Ne(t,e,s=[]){Dt(),Gs();const n=J(t)[e].apply(t,s);return qs(),Bt(),n}const so=Fs("__proto__,__v_isRef,__isVue"),ti=new Set(Object.getOwnPropertyNames(Symbol).filter(t=>t!=="arguments"&&t!=="caller").map(t=>Symbol[t]).filter(Mt));function no(t){Mt(t)||(t=String(t));const e=J(this);return _t(e,"has",t),e.hasOwnProperty(t)}class ei{constructor(e=!1,s=!1){this._isReadonly=e,this._isShallow=s}get(e,s,n){if(s==="__v_skip")return e.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?li:oi:r?ri:ii).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;const o=j(e);if(!i){let a;if(o&&(a=to[s]))return a;if(s==="hasOwnProperty")return no}const l=Reflect.get(e,s,ot(e)?e:n);if((Mt(s)?ti.has(s):so(s))||(i||_t(e,"get",s),r))return l;if(ot(l)){const a=o&&rs(s)?l:l.value;return i&&X(a)?en(a):a}return X(l)?i?en(l):_s(l):l}}class si extends ei{constructor(e=!1){super(!1,e)}set(e,s,n,i){let r=e[s];const o=j(e)&&rs(s);if(!this._isShallow){const f=Yt(r);if(!Ct(n)&&!Yt(n)&&(r=J(r),n=J(n)),!o&&ot(r)&&!ot(n))return f||(r.value=n),!0}const l=o?Number(s)<e.length:Q(e,s),a=Reflect.set(e,s,n,ot(e)?e:i);return e===J(i)&&a&&(l?Rt(n,r)&&qt(e,"set",s,n):qt(e,"add",s,n)),a}deleteProperty(e,s){const n=Q(e,s);e[s];const i=Reflect.deleteProperty(e,s);return i&&n&&qt(e,"delete",s,void 0),i}has(e,s){const n=Reflect.has(e,s);return(!Mt(s)||!ti.has(s))&&_t(e,"has",s),n}ownKeys(e){return _t(e,"iterate",j(e)?"length":de),Reflect.ownKeys(e)}}class ni extends ei{constructor(e=!1){super(!0,e)}set(e,s){return!0}deleteProperty(e,s){return!0}}const io=new si,ro=new ni,oo=new si(!0),lo=new ni(!0),tn=t=>t,hs=t=>Reflect.getPrototypeOf(t);function ao(t,e,s){return function(...n){const i=this.__v_raw,r=J(i),o=ke(r),l=t==="entries"||t===Symbol.iterator&&o,a=t==="keys"&&o,f=i[t](...n),h=s?tn:e?xe:Ot;return!e&&_t(r,"iterate",a?Qs:de),dt(Object.create(f),{next(){const{value:d,done:g}=f.next();return g?{value:d,done:g}:{value:l?[h(d[0]),h(d[1])]:h(d),done:g}}})}}function ps(t){return function(...e){return t==="delete"?!1:t==="clear"?void 0:this}}function co(t,e){const s={get(i){const r=this.__v_raw,o=J(r),l=J(i);t||(Rt(i,l)&&_t(o,"get",i),_t(o,"get",l));const{has:a}=hs(o),f=e?tn:t?xe:Ot;if(a.call(o,i))return f(r.get(i));if(a.call(o,l))return f(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!t&&_t(J(i),"iterate",de),i.size},has(i){const r=this.__v_raw,o=J(r),l=J(i);return t||(Rt(i,l)&&_t(o,"has",i),_t(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,a=J(l),f=e?tn:t?xe:Ot;return!t&&_t(a,"iterate",de),l.forEach((h,d)=>i.call(r,f(h),f(d),o))}};return dt(s,t?{add:ps("add"),set:ps("set"),delete:ps("delete"),clear:ps("clear")}:{add(i){const r=J(this),o=hs(r),l=J(i),a=!e&&!Ct(i)&&!Yt(i)?l:i;return o.has.call(r,a)||Rt(i,a)&&o.has.call(r,i)||Rt(l,a)&&o.has.call(r,l)||(r.add(a),qt(r,"add",a,a)),this},set(i,r){!e&&!Ct(r)&&!Yt(r)&&(r=J(r));const o=J(this),{has:l,get:a}=hs(o);let f=l.call(o,i);f||(i=J(i),f=l.call(o,i));const h=a.call(o,i);return o.set(i,r),f?Rt(r,h)&&qt(o,"set",i,r):qt(o,"add",i,r),this},delete(i){const r=J(this),{has:o,get:l}=hs(r);let a=o.call(r,i);a||(i=J(i),a=o.call(r,i)),l&&l.call(r,i);const f=r.delete(i);return a&&qt(r,"delete",i,void 0),f},clear(){const i=J(this),r=i.size!==0,o=i.clear();return r&&qt(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=ao(i,t,e)}),s}function gs(t,e){const s=co(t,e);return(n,i,r)=>i==="__v_isReactive"?!t:i==="__v_isReadonly"?t:i==="__v_raw"?n:Reflect.get(Q(s,i)&&i in n?s:n,i,r)}const uo={get:gs(!1,!1)},fo={get:gs(!1,!0)},ho={get:gs(!0,!1)},po={get:gs(!0,!0)},ii=new WeakMap,ri=new WeakMap,oi=new WeakMap,li=new WeakMap;function go(t){switch(t){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function _s(t){return Yt(t)?t:ms(t,!1,io,uo,ii)}function _o(t){return ms(t,!1,oo,fo,ri)}function en(t){return ms(t,!0,ro,ho,oi)}function gd(t){return ms(t,!0,lo,po,li)}function ms(t,e,s,n,i){if(!X(t)||t.__v_raw&&!(e&&t.__v_isReactive)||t.__v_skip||!Object.isExtensible(t))return t;const r=i.get(t);if(r)return r;const o=go(Vr(t));if(o===0)return t;const l=new Proxy(t,o===2?n:s);return i.set(t,l),l}function zt(t){return Yt(t)?zt(t.__v_raw):!!(t&&t.__v_isReactive)}function Yt(t){return!!(t&&t.__v_isReadonly)}function Ct(t){return!!(t&&t.__v_isShallow)}function bs(t){return t?!!t.__v_raw:!1}function J(t){const e=t&&t.__v_raw;return e?J(e):t}function sn(t){return!Q(t,"__v_skip")&&Object.isExtensible(t)&&Dn(t,"__v_skip",!0),t}const Ot=t=>X(t)?_s(t):t,xe=t=>X(t)?en(t):t;function ot(t){return t?t.__v_isRef===!0:!1}function Qt(t){return mo(t,!1)}function mo(t,e){return ot(t)?t:new bo(t,e)}class bo{constructor(e,s){this.dep=new Ys,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?e:J(e),this._value=s?e:Ot(e),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(e){const s=this._rawValue,n=this.__v_isShallow||Ct(e)||Yt(e);e=n?e:J(e),Rt(e,s)&&(this._rawValue=e,this._value=n?e:Ot(e),this.dep.trigger())}}function k(t){return ot(t)?t.value:t}const yo={get:(t,e,s)=>e==="__v_raw"?t:k(Reflect.get(t,e,s)),set:(t,e,s,n)=>{const i=t[e];return ot(i)&&!ot(s)?(i.value=s,!0):Reflect.set(t,e,s,n)}};function ai(t){return zt(t)?t:new Proxy(t,yo)}function vo(t){const e=j(t)?new Array(t.length):{};for(const s in t)e[s]=ko(t,s);return e}class wo{constructor(e,s,n){this._object=e,this._defaultValue=n,this.__v_isRef=!0,this._value=void 0,this._key=Mt(s)?s:String(s),this._raw=J(e);let i=!0,r=e;if(!j(e)||Mt(this._key)||!rs(this._key))do i=!bs(r)||Ct(r);while(i&&(r=r.__v_raw));this._shallow=i}get value(){let e=this._object[this._key];return this._shallow&&(e=k(e)),this._value=e===void 0?this._defaultValue:e}set value(e){if(this._shallow&&ot(this._raw[this._key])){const s=this._object[this._key];if(ot(s)){s.value=e;return}}this._object[this._key]=e}get dep(){return Zr(this._raw,this._key)}}function ko(t,e,s){return new wo(t,e,s)}class Co{constructor(e,s,n){this.fn=e,this.setter=s,this._value=void 0,this.dep=new Ys(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=De-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&st!==this)return Gn(this,!0),!0}get value(){const e=this.dep.track();return zn(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}}function xo(t,e,s=!1){let n,i;return U(t)?n=t:(n=t.get,i=t.set),new Co(n,i,s)}const ys={},vs=new WeakMap;let he;function So(t,e=!1,s=he){if(s){let n=vs.get(s);n||vs.set(s,n=[]),n.push(t)}}function Ao(t,e,s=tt){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:a}=s,f=O=>i?O:Ct(O)||i===!1||i===0?Xt(O,1):Xt(O);let h,d,g,y,T=!1,P=!1;if(ot(t)?(d=()=>t.value,T=Ct(t)):zt(t)?(d=()=>f(t),T=!0):j(t)?(P=!0,T=t.some(O=>zt(O)||Ct(O)),d=()=>t.map(O=>{if(ot(O))return O.value;if(zt(O))return f(O);if(U(O))return a?a(O,2):O()})):U(t)?e?d=a?()=>a(t,2):t:d=()=>{if(g){Dt();try{g()}finally{Bt()}}const O=he;he=h;try{return a?a(t,3,[y]):t(y)}finally{he=O}}:d=Lt,e&&i){const O=d,W=i===!0?1/0:i;d=()=>Xt(O(),W)}const D=Un(),H=()=>{h.stop(),D&&D.active&&js(D.effects,h)};if(r&&e){const O=e;e=(...W)=>{const ht=O(...W);return H(),ht}}let I=P?new Array(t.length).fill(ys):ys;const G=O=>{if(!(!(h.flags&1)||!h.dirty&&!O))if(e){const W=h.run();if(O||i||T||(P?W.some((ht,K)=>Rt(ht,I[K])):Rt(W,I))){g&&g();const ht=he;he=h;try{const K=[W,I===ys?void 0:P&&I[0]===ys?[]:I,y];I=W,a?a(e,3,K):e(...K)}finally{he=ht}}}else h.run()};return l&&l(G),h=new Kn(d),h.scheduler=o?()=>o(G,!1):G,y=O=>So(O,!1,h),g=h.onStop=()=>{const O=vs.get(h);if(O){if(a)a(O,4);else for(const W of O)W();vs.delete(h)}},e?n?G(!0):I=h.run():o?o(G.bind(null,!0),!0):h.run(),H.pause=h.pause.bind(h),H.resume=h.resume.bind(h),H.stop=H,H}function Xt(t,e=1/0,s){if(e<=0||!X(t)||t.__v_skip||(s=s||new Map,(s.get(t)||0)>=e))return t;if(s.set(t,e),e--,ot(t))Xt(t.value,e,s);else if(j(t))for(let n=0;n<t.length;n++)Xt(t[n],e,s);else if(En(t)||ke(t))t.forEach(n=>{Xt(n,e,s)});else if(Rn(t)){for(const n in t)Xt(t[n],e,s);for(const n of Object.getOwnPropertySymbols(t))Object.prototype.propertyIsEnumerable.call(t,n)&&Xt(t[n],e,s)}return t}/**
10
+ * @vue/runtime-core v3.5.40
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/const Fe=[];let nn=!1;function _d(t,...e){if(nn)return;nn=!0,Dt();const s=Fe.length?Fe[Fe.length-1].component:null,n=s&&s.appContext.config.warnHandler,i=$o();if(n)Se(n,s,11,[t+e.map(r=>{var o,l;return(l=(o=r.toString)==null?void 0:o.call(r))!=null?l:JSON.stringify(r)}).join(""),s&&s.proxy,i.map(({vnode:r})=>`at <${cr(s,r.type)}>`).join(`
14
+ `),i]);else{const r=[`[Vue warn]: ${t}`,...e];i.length&&r.push(`
15
+ `,...To(i)),console.warn(...r)}Bt(),nn=!1}function $o(){let t=Fe[Fe.length-1];if(!t)return[];const e=[];for(;t;){const s=e[0];s&&s.vnode===t?s.recurseCount++:e.push({vnode:t,recurseCount:0});const n=t.component&&t.component.parent;t=n&&n.vnode}return e}function To(t){const e=[];return t.forEach((s,n)=>{e.push(...n===0?[]:[`
16
+ `],...Mo(s))}),e}function Mo({vnode:t,recurseCount:e}){const s=e>0?`... (${e} recursive calls)`:"",n=t.component?t.component.parent==null:!1,i=` at <${cr(t.component,t.type,n)}`,r=">"+s;return t.props?[i,...Po(t.props),r]:[i+r]}function Po(t){const e=[],s=Object.keys(t);return s.slice(0,3).forEach(n=>{e.push(...ci(n,t[n]))}),s.length>3&&e.push(" ..."),e}function ci(t,e,s){return rt(e)?(e=JSON.stringify(e),s?e:[`${t}=${e}`]):typeof e=="number"||typeof e=="boolean"||e==null?s?e:[`${t}=${e}`]:ot(e)?(e=ci(t,J(e.value),!0),s?e:[`${t}=Ref<`,e,">"]):U(e)?[`${t}=fn${e.name?`<${e.name}>`:""}`]:(e=J(e),s?e:[`${t}=`,e])}function Se(t,e,s,n){try{return n?t(...n):t()}catch(i){ws(i,e,s)}}function It(t,e,s,n){if(U(t)){const i=Se(t,e,s,n);return i&&In(i)&&i.catch(r=>{ws(r,e,s)}),i}if(j(t)){const i=[];for(let r=0;r<t.length;r++)i.push(It(t[r],e,s,n));return i}}function ws(t,e,s,n=!0){const i=e?e.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:o}=e&&e.appContext.config||tt;if(e){let l=e.parent;const a=e.proxy,f=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const h=l.ec;if(h){for(let d=0;d<h.length;d++)if(h[d](t,a,f)===!1)return}l=l.parent}if(r){Dt(),Se(r,null,10,[t,a,f]),Bt();return}}Eo(t,s,i,n,o)}function Eo(t,e,s,n=!0,i=!1){if(i)throw t;console.error(t)}const yt=[];let Ft=-1;const Ae=[];let le=null,$e=0;const ui=Promise.resolve();let ks=null;function fi(t){const e=ks||ui;return t?e.then(this?t.bind(this):t):e}function Oo(t){let e=Ft+1,s=yt.length;for(;e<s;){const n=e+s>>>1,i=yt[n],r=je(i);r<t||r===t&&i.flags&2?e=n+1:s=n}return e}function rn(t){if(!(t.flags&1)){const e=je(t),s=yt[yt.length-1];!s||!(t.flags&2)&&e>=je(s)?yt.push(t):yt.splice(Oo(e),0,t),t.flags|=1,di()}}function di(){ks||(ks=ui.then(gi))}function Io(t){j(t)?Ae.push(...t):le&&t.id===-1?le.splice($e+1,0,t):t.flags&1||(Ae.push(t),t.flags|=1),di()}function hi(t,e,s=Ft+1){for(;s<yt.length;s++){const n=yt[s];if(n&&n.flags&2){if(t&&n.id!==t.uid)continue;yt.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function pi(t){if(Ae.length){const e=[...new Set(Ae)].sort((s,n)=>je(s)-je(n));if(Ae.length=0,le){le.push(...e);return}for(le=e,$e=0;$e<le.length;$e++){const s=le[$e];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}le=null,$e=0}}const je=t=>t.id==null?t.flags&2?-1:1/0:t.id;function gi(t){try{for(Ft=0;Ft<yt.length;Ft++){const e=yt[Ft];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),Se(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;Ft<yt.length;Ft++){const e=yt[Ft];e&&(e.flags&=-2)}Ft=-1,yt.length=0,pi(),ks=null,(yt.length||Ae.length)&&gi()}}let xt=null,_i=null;function Cs(t){const e=xt;return xt=t,_i=t&&t.type.__scopeId||null,e}function Lo(t,e=xt,s){if(!e||t._n)return t;const n=(...i)=>{n._d&&Zi(-1);const r=Cs(e),o=be.length;let l;try{l=t(...i)}finally{for(let a=be.length;a>o;a--)Xi();Cs(r),n._d&&Zi(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function Ro(t,e){if(xt===null)return t;const s=Ls(xt),n=t.dirs||(t.dirs=[]);for(let i=0;i<e.length;i++){let[r,o,l,a=tt]=e[i];r&&(U(r)&&(r={mounted:r,updated:r}),r.deep&&Xt(o),n.push({dir:r,instance:s,value:o,oldValue:void 0,arg:l,modifiers:a}))}return t}function pe(t,e,s,n){const i=t.dirs,r=e&&e.dirs;for(let o=0;o<i.length;o++){const l=i[o];r&&(l.oldValue=r[o].value);let a=l.dir[n];a&&(Dt(),It(a,s,8,[t.el,l,t,e]),Bt())}}function Do(t,e){if(mt){let s=mt.provides;const n=mt.parent&&mt.parent.provides;n===s&&(s=mt.provides=Object.create(n)),s[t]=e}}function Ve(t,e,s=!1){const n=nr();if(n||_e){let i=_e?_e._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(i&&t in i)return i[t];if(arguments.length>1)return s&&U(e)?e.call(n&&n.proxy):e}}function Bo(){return!!(nr()||_e)}const No=Symbol.for("v-scx"),Fo=()=>Ve(No);function He(t,e,s){return mi(t,e,s)}function mi(t,e,s=tt){const{immediate:n,deep:i,flush:r,once:o}=s,l=dt({},s),a=e&&n||!e&&r!=="post";let f;if(Qe){if(r==="sync"){const y=Fo();f=y.__watcherHandles||(y.__watcherHandles=[])}else if(!a){const y=()=>{};return y.stop=Lt,y.resume=Lt,y.pause=Lt,y}}const h=mt;l.call=(y,T,P)=>It(y,h,T,P);let d=!1;r==="post"?l.scheduler=y=>{wt(y,h&&h.suspense)}:r!=="sync"&&(d=!0,l.scheduler=(y,T)=>{T?y():rn(y)}),l.augmentJob=y=>{e&&(y.flags|=4),d&&(y.flags|=2,h&&(y.id=h.uid,y.i=h))};const g=Ao(t,e,l);return Qe&&(f?f.push(g):a&&g()),g}function jo(t,e,s){const n=this.proxy,i=rt(t)?t.includes(".")?bi(n,t):()=>n[t]:t.bind(n,n);let r;U(e)?r=e:(r=e.handler,s=e);const o=Ye(this),l=mi(i,r.bind(n),s);return o(),l}function bi(t,e){const s=e.split(".");return()=>{let n=t;for(let i=0;i<s.length&&n;i++)n=n[s[i]];return n}}const ae=new WeakMap,yi=Symbol("_vte"),Vo=t=>t.__isTeleport,ge=t=>t&&(t.disabled||t.disabled===""),Ho=t=>t&&(t.defer||t.defer===""),vi=t=>typeof SVGElement<"u"&&t instanceof SVGElement,wi=t=>typeof MathMLElement=="function"&&t instanceof MathMLElement,on=(t,e)=>{const s=t&&t.to;return rt(s)?e?e(s):null:s},Uo={name:"Teleport",__isTeleport:!0,process(t,e,s,n,i,r,o,l,a,f){const{mc:h,pc:d,pbc:g,o:{insert:y,querySelector:T,createText:P,createComment:D,parentNode:H}}=f,I=ge(e.props);let{dynamicChildren:G}=e;const O=(K,N,F)=>{K.shapeFlag&16&&h(K.children,N,F,i,r,o,l,a)},W=(K=e)=>{const N=ge(K.props),F=K.target=on(K.props,T),it=ln(F,K,P,y);F&&(o!=="svg"&&vi(F)?o="svg":o!=="mathml"&&wi(F)&&(o="mathml"),i&&i.isCE&&(i.ce._teleportTargets||(i.ce._teleportTargets=new Set)).add(F),N||(O(K,F,it),Ue(K,!1)))},ht=K=>{const N=()=>{if(ae.get(K)===N){if(ae.delete(K),ge(K.props)){const F=H(K.el)||s;O(K,F,K.anchor),Ue(K,!0)}W(K)}};ae.set(K,N),wt(N,r)};if(t==null){const K=e.el=P(""),N=e.anchor=P("");if(y(K,s,n),y(N,s,n),Ho(e.props)||r&&r.pendingBranch){ht(e);return}I&&(O(e,s,N),Ue(e,!0)),W()}else{e.el=t.el;const K=e.anchor=t.anchor,N=ae.get(t);if(N){N.flags|=8,ae.delete(t),ht(e);return}e.targetStart=t.targetStart;const F=e.target=t.target,it=e.targetAnchor=t.targetAnchor,pt=ge(t.props),$t=pt?s:F,Ht=pt?K:it;if(o==="svg"||vi(F)?o="svg":(o==="mathml"||wi(F))&&(o="mathml"),G?(g(t.dynamicChildren,G,$t,i,r,o,l),vn(t,e,!0)):a||d(t,e,$t,Ht,i,r,o,l,!1),I)pt?e.props&&t.props&&e.props.to!==t.props.to&&(e.props.to=t.props.to):xs(e,s,K,f,1);else if((e.props&&e.props.to)!==(t.props&&t.props.to)){const re=on(e.props,T);re&&(e.target=re,xs(e,re,null,f,0))}else pt&&xs(e,F,it,f,1);Ue(e,I)}},remove(t,e,s,{um:n,o:{remove:i}},r){const{shapeFlag:o,children:l,anchor:a,targetStart:f,targetAnchor:h,target:d,props:g}=t,y=ge(g),T=r||!y,P=ae.get(t);if(P&&(P.flags|=8,ae.delete(t)),d&&(i(f),i(h)),r&&i(a),!P&&(y||d)&&o&16)for(let D=0;D<l.length;D++){const H=l[D];n(H,e,s,T,!!H.dynamicChildren)}},move:xs,hydrate:Ko};function xs(t,e,s,{o:{insert:n},m:i},r=2){r===0&&n(t.targetAnchor,e,s);const{el:o,anchor:l,shapeFlag:a,children:f,props:h}=t,d=r===2;if(d&&n(o,e,s),!ae.has(t)&&(!d||ge(h))&&a&16)for(let g=0;g<f.length;g++)i(f[g],e,s,2);d&&n(l,e,s)}function Ko(t,e,s,n,i,r,{o:{nextSibling:o,parentNode:l,querySelector:a,insert:f,createText:h}},d){function g(D,H){let I=H;for(;I;){if(I&&I.nodeType===8){if(I.data==="teleport start anchor")e.targetStart=I;else if(I.data==="teleport anchor"){e.targetAnchor=I,D._lpa=e.targetAnchor&&o(e.targetAnchor);break}}I=o(I)}}function y(D,H){H.anchor=d(o(D),H,l(D),s,n,i,r)}const T=e.target=on(e.props,a),P=ge(e.props);if(T){const D=T._lpa||T.firstChild;e.shapeFlag&16&&(P?(y(t,e),g(T,D),e.targetAnchor||ln(T,e,h,f,l(t)===T?t:null)):(e.anchor=o(t),g(T,D),e.targetAnchor||ln(T,e,h,f),d(D&&o(D),e,T,s,n,i,r))),Ue(e,P)}else P&&e.shapeFlag&16&&(y(t,e),e.targetStart=t,e.targetAnchor=o(t));return e.anchor&&o(e.anchor)}const Wo=Uo;function Ue(t,e){const s=t.ctx;if(s&&s.ut){let n,i;for(e?(n=t.el,i=t.anchor):(n=t.targetStart,i=t.targetAnchor);n&&n!==i;)n.nodeType===1&&n.setAttribute("data-v-owner",s.uid),n=n.nextSibling;s.ut()}}function ln(t,e,s,n,i=null){const r=e.targetStart=s(""),o=e.targetAnchor=s("");return r[yi]=o,t&&(n(r,t,i),n(o,t,i)),o}const an=Symbol("_leaveCb");function cn(t,e){t.shapeFlag&6&&t.component?(t.transition=e,cn(t.component.subTree,e)):t.shapeFlag&128?(t.ssContent.transition=e.clone(t.ssContent),t.ssFallback.transition=e.clone(t.ssFallback)):t.transition=e}function Zt(t,e){return U(t)?dt({name:t.name},e,{setup:t}):t}function ki(t){t.ids=[t.ids[0]+t.ids[2]+++"-",0,0]}function Ci(t,e){let s;return!!((s=Object.getOwnPropertyDescriptor(t,e))&&!s.configurable)}const Ss=new WeakMap;function Ke(t,e,s,n,i=!1){if(j(t)){t.forEach((P,D)=>Ke(P,e&&(j(e)?e[D]:e),s,n,i));return}if(We(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Ke(t,e,s,n.component.subTree);return}const r=n.shapeFlag&4?Ls(n.component):n.el,o=i?null:r,{i:l,r:a}=t,f=e&&e.r,h=l.refs===tt?l.refs={}:l.refs,d=l.setupState,g=J(d),y=d===tt?Pn:P=>Ci(h,P)?!1:Q(g,P),T=(P,D)=>!(D&&Ci(h,D));if(f!=null&&f!==a){if(xi(e),rt(f))h[f]=null,y(f)&&(d[f]=null);else if(ot(f)){const P=e;T(f,P.k)&&(f.value=null),P.k&&(h[P.k]=null)}}if(U(a))Se(a,l,12,[o,h]);else{const P=rt(a),D=ot(a);if(P||D){const H=()=>{if(t.f){const I=P?y(a)?d[a]:h[a]:T()||!t.k?a.value:h[t.k];if(i)j(I)&&js(I,r);else if(j(I))I.includes(r)||I.push(r);else if(P)h[a]=[r],y(a)&&(d[a]=h[a]);else{const G=[r];T(a,t.k)&&(a.value=G),t.k&&(h[t.k]=G)}}else P?(h[a]=o,y(a)&&(d[a]=o)):D&&(T(a,t.k)&&(a.value=o),t.k&&(h[t.k]=o))};if(o){const I=()=>{H(),Ss.delete(t)};I.id=-1,Ss.set(t,I),wt(I,s)}else xi(t),H()}}}function xi(t){const e=Ss.get(t);e&&(e.flags|=8,Ss.delete(t))}cs().requestIdleCallback,cs().cancelIdleCallback;const We=t=>!!t.type.__asyncLoader,Si=t=>t.type.__isKeepAlive;function Go(t,e){Ai(t,"a",e)}function qo(t,e){Ai(t,"da",e)}function Ai(t,e,s=mt){const n=t.__wdc||(t.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return t()});if(As(e,n,s),s){let i=s.parent;for(;i&&i.parent;)Si(i.parent.vnode)&&Jo(n,e,s,i),i=i.parent}}function Jo(t,e,s,n){const i=As(e,t,n,!0);fn(()=>{js(n[e],i)},s)}function As(t,e,s=mt,n=!1){if(s){const i=s[t]||(s[t]=[]),r=e.__weh||(e.__weh=(...o)=>{Dt();const l=Ye(s),a=It(e,s,t,o);return l(),Bt(),a});return n?i.unshift(r):i.push(r),r}}const te=t=>(e,s=mt)=>{(!Qe||t==="sp")&&As(t,(...n)=>e(...n),s)},zo=te("bm"),un=te("m"),Yo=te("bu"),Qo=te("u"),Xo=te("bum"),fn=te("um"),Zo=te("sp"),tl=te("rtg"),el=te("rtc");function sl(t,e=mt){As("ec",t,e)}const nl="components";function il(t,e){return ol(nl,t,!0,e)||t}const rl=Symbol.for("v-ndc");function ol(t,e,s=!0,n=!1){const i=xt||mt;if(i){const r=i.type;{const l=ar(r,!1);if(l&&(l===e||l===bt(e)||l===ls(bt(e))))return r}const o=$i(i[t]||r[t],e)||$i(i.appContext[t],e);return!o&&n?r:o}}function $i(t,e){return t&&(t[e]||t[bt(e)]||t[ls(bt(e))])}function lt(t,e,s,n){let i;const r=s,o=j(t);if(o||rt(t)){const l=o&&zt(t);let a=!1,f=!1;l&&(a=!Ct(t),f=Yt(t),t=ds(t)),i=new Array(t.length);for(let h=0,d=t.length;h<d;h++)i[h]=e(a?f?xe(Ot(t[h])):Ot(t[h]):t[h],h,void 0,r)}else if(typeof t=="number"){i=new Array(t);for(let l=0;l<t;l++)i[l]=e(l+1,l,void 0,r)}else if(X(t))if(t[Symbol.iterator])i=Array.from(t,(l,a)=>e(l,a,void 0,r));else{const l=Object.keys(t);i=new Array(l.length);for(let a=0,f=l.length;a<f;a++){const h=l[a];i[a]=e(t[h],h,a,r)}}else i=[];return i}const dn=t=>t?rr(t)?Ls(t):dn(t.parent):null,Ge=dt(Object.create(null),{$:t=>t,$el:t=>t.vnode.el,$data:t=>t.data,$props:t=>t.props,$attrs:t=>t.attrs,$slots:t=>t.slots,$refs:t=>t.refs,$parent:t=>dn(t.parent),$root:t=>dn(t.root),$host:t=>t.ce,$emit:t=>t.emit,$options:t=>Ei(t),$forceUpdate:t=>t.f||(t.f=()=>{rn(t.update)}),$nextTick:t=>t.n||(t.n=fi.bind(t.proxy)),$watch:t=>jo.bind(t)}),hn=(t,e)=>t!==tt&&!t.__isScriptSetup&&Q(t,e),ll={get({_:t},e){if(e==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:a}=t;if(e[0]!=="$"){const g=o[e];if(g!==void 0)switch(g){case 1:return n[e];case 2:return i[e];case 4:return s[e];case 3:return r[e]}else{if(hn(n,e))return o[e]=1,n[e];if(i!==tt&&Q(i,e))return o[e]=2,i[e];if(Q(r,e))return o[e]=3,r[e];if(s!==tt&&Q(s,e))return o[e]=4,s[e];pn&&(o[e]=0)}}const f=Ge[e];let h,d;if(f)return e==="$attrs"&&_t(t.attrs,"get",""),f(t);if((h=l.__cssModules)&&(h=h[e]))return h;if(s!==tt&&Q(s,e))return o[e]=4,s[e];if(d=a.config.globalProperties,Q(d,e))return d[e]},set({_:t},e,s){const{data:n,setupState:i,ctx:r}=t;return hn(i,e)?(i[e]=s,!0):n!==tt&&Q(n,e)?(n[e]=s,!0):Q(t.props,e)||e[0]==="$"&&e.slice(1)in t?!1:(r[e]=s,!0)},has({_:{data:t,setupState:e,accessCache:s,ctx:n,appContext:i,props:r,type:o}},l){let a;return!!(s[l]||t!==tt&&l[0]!=="$"&&Q(t,l)||hn(e,l)||Q(r,l)||Q(n,l)||Q(Ge,l)||Q(i.config.globalProperties,l)||(a=o.__cssModules)&&a[l])},defineProperty(t,e,s){return s.get!=null?t._.accessCache[e]=0:Q(s,"value")&&this.set(t,e,s.value,null),Reflect.defineProperty(t,e,s)}};function Ti(t){return j(t)?t.reduce((e,s)=>(e[s]=null,e),{}):t}let pn=!0;function al(t){const e=Ei(t),s=t.proxy,n=t.ctx;pn=!1,e.beforeCreate&&Mi(e.beforeCreate,t,"bc");const{data:i,computed:r,methods:o,watch:l,provide:a,inject:f,created:h,beforeMount:d,mounted:g,beforeUpdate:y,updated:T,activated:P,deactivated:D,beforeDestroy:H,beforeUnmount:I,destroyed:G,unmounted:O,render:W,renderTracked:ht,renderTriggered:K,errorCaptured:N,serverPrefetch:F,expose:it,inheritAttrs:pt,components:$t,directives:Ht,filters:re}=e;if(f&&cl(f,n,null),o)for(const q in o){const nt=o[q];U(nt)&&(n[q]=nt.bind(s))}if(i){const q=i.call(s,s);X(q)&&(t.data=_s(q))}if(pn=!0,r)for(const q in r){const nt=r[q],ye=U(nt)?nt.bind(s,s):U(nt.get)?nt.get.bind(s,s):Lt,Bs=!U(nt)&&U(nt.set)?nt.set.bind(s):Lt,ve=kt({get:ye,set:Bs});Object.defineProperty(n,q,{enumerable:!0,configurable:!0,get:()=>ve.value,set:Ut=>ve.value=Ut})}if(l)for(const q in l)Pi(l[q],n,s,q);if(a){const q=U(a)?a.call(s):a;Reflect.ownKeys(q).forEach(nt=>{Do(nt,q[nt])})}h&&Mi(h,t,"c");function at(q,nt){j(nt)?nt.forEach(ye=>q(ye.bind(s))):nt&&q(nt.bind(s))}if(at(zo,d),at(un,g),at(Yo,y),at(Qo,T),at(Go,P),at(qo,D),at(sl,N),at(el,ht),at(tl,K),at(Xo,I),at(fn,O),at(Zo,F),j(it))if(it.length){const q=t.exposed||(t.exposed={});it.forEach(nt=>{Object.defineProperty(q,nt,{get:()=>s[nt],set:ye=>s[nt]=ye,enumerable:!0})})}else t.exposed||(t.exposed={});W&&t.render===Lt&&(t.render=W),pt!=null&&(t.inheritAttrs=pt),$t&&(t.components=$t),Ht&&(t.directives=Ht),F&&ki(t)}function cl(t,e,s=Lt){j(t)&&(t=gn(t));for(const n in t){const i=t[n];let r;X(i)?"default"in i?r=Ve(i.from||n,i.default,!0):r=Ve(i.from||n):r=Ve(i),ot(r)?Object.defineProperty(e,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):e[n]=r}}function Mi(t,e,s){It(j(t)?t.map(n=>n.bind(e.proxy)):t.bind(e.proxy),e,s)}function Pi(t,e,s,n){let i=n.includes(".")?bi(s,n):()=>s[n];if(rt(t)){const r=e[t];U(r)&&He(i,r)}else if(U(t))He(i,t.bind(s));else if(X(t))if(j(t))t.forEach(r=>Pi(r,e,s,n));else{const r=U(t.handler)?t.handler.bind(s):e[t.handler];U(r)&&He(i,r,t)}}function Ei(t){const e=t.type,{mixins:s,extends:n}=e,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=t.appContext,l=r.get(e);let a;return l?a=l:!i.length&&!s&&!n?a=e:(a={},i.length&&i.forEach(f=>$s(a,f,o,!0)),$s(a,e,o)),X(e)&&r.set(e,a),a}function $s(t,e,s,n=!1){const{mixins:i,extends:r}=e;r&&$s(t,r,s,!0),i&&i.forEach(o=>$s(t,o,s,!0));for(const o in e)if(!(n&&o==="expose")){const l=ul[o]||s&&s[o];t[o]=l?l(t[o],e[o]):e[o]}return t}const ul={data:Oi,props:Ii,emits:Ii,methods:qe,computed:qe,beforeCreate:vt,created:vt,beforeMount:vt,mounted:vt,beforeUpdate:vt,updated:vt,beforeDestroy:vt,beforeUnmount:vt,destroyed:vt,unmounted:vt,activated:vt,deactivated:vt,errorCaptured:vt,serverPrefetch:vt,components:qe,directives:qe,watch:dl,provide:Oi,inject:fl};function Oi(t,e){return e?t?function(){return dt(U(t)?t.call(this,this):t,U(e)?e.call(this,this):e)}:e:t}function fl(t,e){return qe(gn(t),gn(e))}function gn(t){if(j(t)){const e={};for(let s=0;s<t.length;s++)e[t[s]]=t[s];return e}return t}function vt(t,e){return t?[...new Set([].concat(t,e))]:e}function qe(t,e){return t?dt(Object.create(null),t,e):e}function Ii(t,e){return t?j(t)&&j(e)?[...new Set([...t,...e])]:dt(Object.create(null),Ti(t),Ti(e??{})):e}function dl(t,e){if(!t)return e;if(!e)return t;const s=dt(Object.create(null),t);for(const n in e)s[n]=vt(t[n],e[n]);return s}function Li(){return{app:null,config:{isNativeTag:Pn,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let hl=0;function pl(t,e){return function(n,i=null){U(n)||(n=dt({},n)),i!=null&&!X(i)&&(i=null);const r=Li(),o=new WeakSet,l=[];let a=!1;const f=r.app={_uid:hl++,_component:n,_props:i,_container:null,_context:r,_instance:null,version:ql,get config(){return r.config},set config(h){},use(h,...d){return o.has(h)||(h&&U(h.install)?(o.add(h),h.install(f,...d)):U(h)&&(o.add(h),h(f,...d))),f},mixin(h){return r.mixins.includes(h)||r.mixins.push(h),f},component(h,d){return d?(r.components[h]=d,f):r.components[h]},directive(h,d){return d?(r.directives[h]=d,f):r.directives[h]},mount(h,d,g){if(!a){const y=f._ceVNode||At(n,i);return y.appContext=r,g===!0?g="svg":g===!1&&(g=void 0),t(y,h,g),a=!0,f._container=h,h.__vue_app__=f,Ls(y.component)}},onUnmount(h){l.push(h)},unmount(){a&&(It(l,f._instance,16),t(null,f._container),delete f._container.__vue_app__)},provide(h,d){return r.provides[h]=d,f},runWithContext(h){const d=_e;_e=f;try{return h()}finally{_e=d}}};return f}}let _e=null;const gl=(t,e)=>e==="modelValue"||e==="model-value"?t.modelModifiers:t[`${e}Modifiers`]||t[`${bt(e)}Modifiers`]||t[`${oe(e)}Modifiers`];function _l(t,e,...s){if(t.isUnmounted)return;const n=t.vnode.props||tt;let i=s;const r=e.startsWith("update:"),o=r&&gl(n,e.slice(7));o&&(o.trim&&(i=s.map(h=>rt(h)?h.trim():h)),o.number&&(i=s.map(Hs)));let l,a=n[l=Vs(e)]||n[l=Vs(bt(e))];!a&&r&&(a=n[l=Vs(oe(e))]),a&&It(a,t,6,i);const f=n[l+"Once"];if(f){if(!t.emitted)t.emitted={};else if(t.emitted[l])return;t.emitted[l]=!0,It(f,t,6,i)}}const ml=new WeakMap;function Ri(t,e,s=!1){const n=s?ml:e.emitsCache,i=n.get(t);if(i!==void 0)return i;const r=t.emits;let o={},l=!1;if(!U(t)){const a=f=>{const h=Ri(f,e,!0);h&&(l=!0,dt(o,h))};!s&&e.mixins.length&&e.mixins.forEach(a),t.extends&&a(t.extends),t.mixins&&t.mixins.forEach(a)}return!r&&!l?(X(t)&&n.set(t,null),null):(j(r)?r.forEach(a=>o[a]=null):dt(o,r),X(t)&&n.set(t,o),o)}function Ts(t,e){return!t||!ns(e)?!1:(e=e.slice(2),e=e==="Once"?e:e.replace(/Once$/,""),Q(t,e[0].toLowerCase()+e.slice(1))||Q(t,oe(e))||Q(t,e))}function md(){}function Di(t){const{type:e,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:a,render:f,renderCache:h,props:d,data:g,setupState:y,ctx:T,inheritAttrs:P}=t,D=Cs(t);let H,I;try{if(s.shapeFlag&4){const O=i||n,W=O;H=jt(f.call(W,O,h,d,y,g,T)),I=l}else{const O=e;H=jt(O.length>1?O(d,{attrs:l,slots:o,emit:a}):O(d,null)),I=e.props?l:bl(l)}}catch(O){be.length=0,ws(O,t,1),H=At(ce)}let G=H;if(I&&P!==!1){const O=Object.keys(I),{shapeFlag:W}=G;O.length&&W&7&&(r&&O.some(is)&&(I=yl(I,r)),G=Te(G,I,!1,!0))}return s.dirs&&(G=Te(G,null,!1,!0),G.dirs=G.dirs?G.dirs.concat(s.dirs):s.dirs),s.transition&&cn(G,s.transition),H=G,Cs(D),H}const bl=t=>{let e;for(const s in t)(s==="class"||s==="style"||ns(s))&&((e||(e={}))[s]=t[s]);return e},yl=(t,e)=>{const s={};for(const n in t)(!is(n)||!(n.slice(9)in e))&&(s[n]=t[n]);return s};function vl(t,e,s){const{props:n,children:i,component:r}=t,{props:o,children:l,patchFlag:a}=e,f=r.emitsOptions;if(e.dirs||e.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return n?Bi(n,o,f):!!o;if(a&8){const h=e.dynamicProps;for(let d=0;d<h.length;d++){const g=h[d];if(Ni(o,n,g)&&!Ts(f,g))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?Bi(n,o,f):!0:!!o;return!1}function Bi(t,e,s){const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!0;for(let i=0;i<n.length;i++){const r=n[i];if(Ni(e,t,r)&&!Ts(s,r))return!0}return!1}function Ni(t,e,s){const n=t[s],i=e[s];return s==="style"&&X(n)&&X(i)?!Us(n,i):n!==i}function wl({vnode:t,parent:e,suspense:s},n){for(;e;){const i=e.subTree;if(i.suspense&&i.suspense.activeBranch===t&&(i.suspense.vnode.el=i.el=n,t=i),i===t)(t=e.vnode).el=n,e=e.parent;else break}s&&s.activeBranch===t&&(s.vnode.el=n)}const Fi={},ji=()=>Object.create(Fi),Vi=t=>Object.getPrototypeOf(t)===Fi;function kl(t,e,s,n=!1){const i={},r=ji();t.propsDefaults=Object.create(null),Hi(t,e,i,r);for(const o in t.propsOptions[0])o in i||(i[o]=void 0);s?t.props=n?i:_o(i):t.type.props?t.props=i:t.props=r,t.attrs=r}function Cl(t,e,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=t,l=J(i),[a]=t.propsOptions;let f=!1;if((n||o>0)&&!(o&16)){if(o&8){const h=t.vnode.dynamicProps;for(let d=0;d<h.length;d++){let g=h[d];if(Ts(t.emitsOptions,g))continue;const y=e[g];if(a)if(Q(r,g))y!==r[g]&&(r[g]=y,f=!0);else{const T=bt(g);i[T]=_n(a,l,T,y,t,!1)}else y!==r[g]&&(r[g]=y,f=!0)}}}else{Hi(t,e,i,r)&&(f=!0);let h;for(const d in l)(!e||!Q(e,d)&&((h=oe(d))===d||!Q(e,h)))&&(a?s&&(s[d]!==void 0||s[h]!==void 0)&&(i[d]=_n(a,l,d,void 0,t,!0)):delete i[d]);if(r!==l)for(const d in r)(!e||!Q(e,d))&&(delete r[d],f=!0)}f&&qt(t.attrs,"set","")}function Hi(t,e,s,n){const[i,r]=t.propsOptions;let o=!1,l;if(e)for(let a in e){if(Ie(a))continue;const f=e[a];let h;i&&Q(i,h=bt(a))?!r||!r.includes(h)?s[h]=f:(l||(l={}))[h]=f:Ts(t.emitsOptions,a)||(!(a in n)||f!==n[a])&&(n[a]=f,o=!0)}if(r){const a=J(s),f=l||tt;for(let h=0;h<r.length;h++){const d=r[h];s[d]=_n(i,a,d,f[d],t,!Q(f,d))}}return o}function _n(t,e,s,n,i,r){const o=t[s];if(o!=null){const l=Q(o,"default");if(l&&n===void 0){const a=o.default;if(o.type!==Function&&!o.skipFactory&&U(a)){const{propsDefaults:f}=i;if(s in f)n=f[s];else{const h=Ye(i);n=f[s]=a.call(null,e),h()}}else n=a;i.ce&&i.ce._setProp(s,n)}o[0]&&(r&&!l?n=!1:o[1]&&(n===""||n===oe(s))&&(n=!0))}return n}const xl=new WeakMap;function Ui(t,e,s=!1){const n=s?xl:e.propsCache,i=n.get(t);if(i)return i;const r=t.props,o={},l=[];let a=!1;if(!U(t)){const h=d=>{a=!0;const[g,y]=Ui(d,e,!0);dt(o,g),y&&l.push(...y)};!s&&e.mixins.length&&e.mixins.forEach(h),t.extends&&h(t.extends),t.mixins&&t.mixins.forEach(h)}if(!r&&!a)return X(t)&&n.set(t,we),we;if(j(r))for(let h=0;h<r.length;h++){const d=bt(r[h]);Ki(d)&&(o[d]=tt)}else if(r)for(const h in r){const d=bt(h);if(Ki(d)){const g=r[h],y=o[d]=j(g)||U(g)?{type:g}:dt({},g),T=y.type;let P=!1,D=!0;if(j(T))for(let H=0;H<T.length;++H){const I=T[H],G=U(I)&&I.name;if(G==="Boolean"){P=!0;break}else G==="String"&&(D=!1)}else P=U(T)&&T.name==="Boolean";y[0]=P,y[1]=D,(P||Q(y,"default"))&&l.push(d)}}const f=[o,l];return X(t)&&n.set(t,f),f}function Ki(t){return t[0]!=="$"&&!Ie(t)}const mn=t=>t==="_"||t==="_ctx"||t==="$stable",bn=t=>j(t)?t.map(jt):[jt(t)],Sl=(t,e,s)=>{if(e._n)return e;const n=Lo((...i)=>bn(e(...i)),s);return n._c=!1,n},Wi=(t,e,s)=>{const n=t._ctx;for(const i in t){if(mn(i))continue;const r=t[i];if(U(r))e[i]=Sl(i,r,n);else if(r!=null){const o=bn(r);e[i]=()=>o}}},Gi=(t,e)=>{const s=bn(e);t.slots.default=()=>s},qi=(t,e,s)=>{for(const n in e)(s||!mn(n))&&(t[n]=e[n])},Al=(t,e,s)=>{const n=t.slots=ji();if(t.vnode.shapeFlag&32){const i=e._;i?(qi(n,e,s),s&&Dn(n,"_",i,!0)):Wi(e,n)}else e&&Gi(t,e)},$l=(t,e,s)=>{const{vnode:n,slots:i}=t;let r=!0,o=tt;if(n.shapeFlag&32){const l=e._;l?s&&l===1?r=!1:qi(i,e,s):(r=!e.$stable,Wi(e,i)),o=e}else e&&(Gi(t,e),o={default:1});if(r)for(const l in i)!mn(l)&&o[l]==null&&delete i[l]},wt=Ol;function Tl(t){return Ml(t)}function Ml(t,e){const s=cs();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:a,setText:f,setElementText:h,parentNode:d,nextSibling:g,setScopeId:y=Lt,insertStaticContent:T}=t,P=(u,p,_,x=null,C=null,v=null,M=void 0,$=null,S=!!p.dynamicChildren)=>{if(u===p)return;u&&!ze(u,p)&&(x=Ns(u),Ut(u,C,v,!0),u=null),p.patchFlag===-2&&(S=!1,p.dynamicChildren=null);const{type:w,ref:B,shapeFlag:E}=p;switch(w){case Ms:D(u,p,_,x);break;case ce:H(u,p,_,x);break;case Ps:u==null&&I(p,_,x,M);break;case z:$t(u,p,_,x,C,v,M,$,S);break;default:E&1?W(u,p,_,x,C,v,M,$,S):E&6?Ht(u,p,_,x,C,v,M,$,S):(E&64||E&128)&&w.process(u,p,_,x,C,v,M,$,S,es)}B!=null&&C?Ke(B,u&&u.ref,v,p||u,!p):B==null&&u&&u.ref!=null&&Ke(u.ref,null,v,u,!0)},D=(u,p,_,x)=>{if(u==null)n(p.el=l(p.children),_,x);else{const C=p.el=u.el;p.children!==u.children&&f(C,p.children)}},H=(u,p,_,x)=>{u==null?n(p.el=a(p.children||""),_,x):p.el=u.el},I=(u,p,_,x)=>{[u.el,u.anchor]=T(u.children,p,_,x,u.el,u.anchor)},G=({el:u,anchor:p},_,x)=>{let C;for(;u&&u!==p;)C=g(u),n(u,_,x),u=C;n(p,_,x)},O=({el:u,anchor:p})=>{let _;for(;u&&u!==p;)_=g(u),i(u),u=_;i(p)},W=(u,p,_,x,C,v,M,$,S)=>{if(p.type==="svg"?M="svg":p.type==="math"&&(M="mathml"),u==null)ht(p,_,x,C,v,M,$,S);else{const w=u.el&&u.el._isVueCE?u.el:null;try{w&&w._beginPatch(),F(u,p,C,v,M,$,S)}finally{w&&w._endPatch()}}},ht=(u,p,_,x,C,v,M,$)=>{let S,w;const{props:B,shapeFlag:E,transition:L,dirs:V}=u;if(S=u.el=o(u.type,v,B&&B.is,B),E&8?h(S,u.children):E&16&&N(u.children,S,null,x,C,yn(u,v),M,$),V&&pe(u,null,x,"created"),K(S,u,u.scopeId,M,x),B){for(const et in B)et!=="value"&&!Ie(et)&&r(S,et,null,B[et],v,x);"value"in B&&r(S,"value",null,B.value,v),(w=B.onVnodeBeforeMount)&&Vt(w,x,u)}V&&pe(u,null,x,"beforeMount");const Y=Pl(C,L);Y&&L.beforeEnter(S),n(S,p,_),((w=B&&B.onVnodeMounted)||Y||V)&&wt(()=>{try{w&&Vt(w,x,u),Y&&L.enter(S),V&&pe(u,null,x,"mounted")}finally{}},C)},K=(u,p,_,x,C)=>{if(_&&y(u,_),x)for(let v=0;v<x.length;v++)y(u,x[v]);if(C){let v=C.subTree;if(p===v||Qi(v.type)&&(v.ssContent===p||v.ssFallback===p)){const M=C.vnode;K(u,M,M.scopeId,M.slotScopeIds,C.parent)}}},N=(u,p,_,x,C,v,M,$,S=0)=>{for(let w=S;w<u.length;w++){const B=u[w]=$?ee(u[w]):jt(u[w]);P(null,B,p,_,x,C,v,M,$)}},F=(u,p,_,x,C,v,M)=>{const $=p.el=u.el;let{patchFlag:S,dynamicChildren:w,dirs:B}=p;S|=u.patchFlag&16;const E=u.props||tt,L=p.props||tt;let V;if(_&&me(_,!1),(V=L.onVnodeBeforeUpdate)&&Vt(V,_,p,u),B&&pe(p,u,_,"beforeUpdate"),_&&me(_,!0),w&&(!u.dynamicChildren||u.dynamicChildren.length!==w.length)&&(S=0,M=!1,w=null),(E.innerHTML&&L.innerHTML==null||E.textContent&&L.textContent==null)&&h($,""),w?it(u.dynamicChildren,w,$,_,x,yn(p,C),v):M||nt(u,p,$,null,_,x,yn(p,C),v,!1),S>0){if(S&16)pt($,E,L,_,C);else if(S&2&&E.class!==L.class&&r($,"class",null,L.class,C),S&4&&r($,"style",E.style,L.style,C),S&8){const Y=p.dynamicProps;for(let et=0;et<Y.length;et++){const Z=Y[et],ct=E[Z],gt=L[Z];(gt!==ct||Z==="value")&&r($,Z,ct,gt,C,_)}}S&1&&u.children!==p.children&&h($,p.children)}else!M&&w==null&&pt($,E,L,_,C);((V=L.onVnodeUpdated)||B)&&wt(()=>{V&&Vt(V,_,p,u),B&&pe(p,u,_,"updated")},x)},it=(u,p,_,x,C,v,M)=>{for(let $=0;$<p.length;$++){const S=u[$],w=p[$],B=S.el&&(S.type===z||!ze(S,w)||S.shapeFlag&198)?d(S.el):_;P(S,w,B,null,x,C,v,M,!0)}},pt=(u,p,_,x,C)=>{if(p!==_){if(p!==tt)for(const v in p)!Ie(v)&&!(v in _)&&r(u,v,p[v],null,C,x);for(const v in _){if(Ie(v))continue;const M=_[v],$=p[v];M!==$&&v!=="value"&&r(u,v,$,M,C,x)}"value"in _&&r(u,"value",p.value,_.value,C)}},$t=(u,p,_,x,C,v,M,$,S)=>{const w=p.el=u?u.el:l(""),B=p.anchor=u?u.anchor:l("");let{patchFlag:E,dynamicChildren:L,slotScopeIds:V}=p;V&&($=$?$.concat(V):V),u==null?(n(w,_,x),n(B,_,x),N(p.children||[],_,B,C,v,M,$,S)):E>0&&E&64&&L&&u.dynamicChildren&&u.dynamicChildren.length===L.length?(it(u.dynamicChildren,L,_,C,v,M,$),(p.key!=null||C&&p===C.subTree)&&vn(u,p,!0)):nt(u,p,_,B,C,v,M,$,S)},Ht=(u,p,_,x,C,v,M,$,S)=>{p.slotScopeIds=$,u==null?p.shapeFlag&512?C.ctx.activate(p,_,x,M,S):re(p,_,x,C,v,M,S):Ds(u,p,S)},re=(u,p,_,x,C,v,M)=>{const $=u.component=Fl(u,x,C);if(Si(u)&&($.ctx.renderer=es),jl($,!1,M),$.asyncDep){if(C&&C.registerDep($,at,M),!u.el){const S=$.subTree=At(ce);H(null,S,p,_),u.placeholder=S.el}}else at($,u,p,_,C,v,M)},Ds=(u,p,_)=>{const x=p.component=u.component;if(vl(u,p,_))if(x.asyncDep&&!x.asyncResolved){q(x,p,_);return}else x.next=p,x.update();else p.el=u.el,x.vnode=p},at=(u,p,_,x,C,v,M)=>{const $=()=>{if(u.isMounted){let{next:E,bu:L,u:V,parent:Y,vnode:et}=u;{const Wt=Ji(u);if(Wt){E&&(E.el=et.el,q(u,E,M)),Wt.asyncDep.then(()=>{wt(()=>{u.isUnmounted||w()},C)});return}}let Z=E,ct;me(u,!1),E?(E.el=et.el,q(u,E,M)):E=et,L&&as(L),(ct=E.props&&E.props.onVnodeBeforeUpdate)&&Vt(ct,Y,E,et),me(u,!0);const gt=Di(u),Kt=u.subTree;u.subTree=gt,P(Kt,gt,d(Kt.el),Ns(Kt),u,C,v),E.el=gt.el,Z===null&&wl(u,gt.el),V&&wt(V,C),(ct=E.props&&E.props.onVnodeUpdated)&&wt(()=>Vt(ct,Y,E,et),C)}else{let E;const{el:L,props:V}=p,{bm:Y,m:et,parent:Z,root:ct,type:gt}=u,Kt=We(p);me(u,!1),Y&&as(Y),!Kt&&(E=V&&V.onVnodeBeforeMount)&&Vt(E,Z,p),me(u,!0);{ct.ce&&ct.ce._hasShadowRoot()&&ct.ce._injectChildStyle(gt,u.parent?u.parent.type:void 0);const Wt=u.subTree=Di(u);P(null,Wt,_,x,u,C,v),p.el=Wt.el}if(et&&wt(et,C),!Kt&&(E=V&&V.onVnodeMounted)){const Wt=p;wt(()=>Vt(E,Z,Wt),C)}(p.shapeFlag&256||Z&&We(Z.vnode)&&Z.vnode.shapeFlag&256)&&u.a&&wt(u.a,C),u.isMounted=!0,p=_=x=null}};u.scope.on();const S=u.effect=new Kn($);u.scope.off();const w=u.update=S.run.bind(S),B=u.job=S.runIfDirty.bind(S);B.i=u,B.id=u.uid,S.scheduler=()=>rn(B),me(u,!0),w()},q=(u,p,_)=>{p.component=u;const x=u.vnode.props;u.vnode=p,u.next=null,Cl(u,p.props,x,_),$l(u,p.children,_),Dt(),hi(u),Bt()},nt=(u,p,_,x,C,v,M,$,S=!1)=>{const w=u&&u.children,B=u?u.shapeFlag:0,E=p.children,{patchFlag:L,shapeFlag:V}=p;if(L>0){if(L&128){Bs(w,E,_,x,C,v,M,$,S);return}else if(L&256){ye(w,E,_,x,C,v,M,$,S);return}}V&8?(B&16&&ts(w,C,v),E!==w&&h(_,E)):B&16?V&16?Bs(w,E,_,x,C,v,M,$,S):ts(w,C,v,!0):(B&8&&h(_,""),V&16&&N(E,_,x,C,v,M,$,S))},ye=(u,p,_,x,C,v,M,$,S)=>{u=u||we,p=p||we;const w=u.length,B=p.length,E=Math.min(w,B);let L;for(L=0;L<E;L++){const V=p[L]=S?ee(p[L]):jt(p[L]);P(u[L],V,_,null,C,v,M,$,S)}w>B?ts(u,C,v,!0,!1,E):N(p,_,x,C,v,M,$,S,E)},Bs=(u,p,_,x,C,v,M,$,S)=>{let w=0;const B=p.length;let E=u.length-1,L=B-1;for(;w<=E&&w<=L;){const V=u[w],Y=p[w]=S?ee(p[w]):jt(p[w]);if(ze(V,Y))P(V,Y,_,null,C,v,M,$,S);else break;w++}for(;w<=E&&w<=L;){const V=u[E],Y=p[L]=S?ee(p[L]):jt(p[L]);if(ze(V,Y))P(V,Y,_,null,C,v,M,$,S);else break;E--,L--}if(w>E){if(w<=L){const V=L+1,Y=V<B?p[V].el:x;for(;w<=L;)P(null,p[w]=S?ee(p[w]):jt(p[w]),_,Y,C,v,M,$,S),w++}}else if(w>L)for(;w<=E;)Ut(u[w],C,v,!0),w++;else{const V=w,Y=w,et=new Map;for(w=Y;w<=L;w++){const Tt=p[w]=S?ee(p[w]):jt(p[w]);Tt.key!=null&&et.set(Tt.key,w)}let Z,ct=0;const gt=L-Y+1;let Kt=!1,Wt=0;const ss=new Array(gt);for(w=0;w<gt;w++)ss[w]=0;for(w=V;w<=E;w++){const Tt=u[w];if(ct>=gt){Ut(Tt,C,v,!0);continue}let Gt;if(Tt.key!=null)Gt=et.get(Tt.key);else for(Z=Y;Z<=L;Z++)if(ss[Z-Y]===0&&ze(Tt,p[Z])){Gt=Z;break}Gt===void 0?Ut(Tt,C,v,!0):(ss[Gt-Y]=w+1,Gt>=Wt?Wt=Gt:Kt=!0,P(Tt,p[Gt],_,null,C,v,M,$,S),ct++)}const Br=Kt?El(ss):we;for(Z=Br.length-1,w=gt-1;w>=0;w--){const Tt=Y+w,Gt=p[Tt],Nr=p[Tt+1],Fr=Tt+1<B?Nr.el||Yi(Nr):x;ss[w]===0?P(null,Gt,_,Fr,C,v,M,$,S):Kt&&(Z<0||w!==Br[Z]?ve(Gt,_,Fr,2):Z--)}}},ve=(u,p,_,x,C=null)=>{const{el:v,type:M,transition:$,children:S,shapeFlag:w}=u;if(w&6){ve(u.component.subTree,p,_,x);return}if(w&128){u.suspense.move(p,_,x);return}if(w&64){M.move(u,p,_,es);return}if(M===z){n(v,p,_);for(let E=0;E<S.length;E++)ve(S[E],p,_,x);n(u.anchor,p,_);return}if(M===Ps){G(u,p,_);return}if(x!==2&&w&1&&$)if(x===0)$.persisted&&!v[an]?n(v,p,_):($.beforeEnter(v),n(v,p,_),wt(()=>$.enter(v),C));else{const{leave:E,delayLeave:L,afterLeave:V}=$,Y=()=>{u.ctx.isUnmounted?i(v):n(v,p,_)},et=()=>{const Z=v._isLeaving||!!v[an];v._isLeaving&&v[an](!0),$.persisted&&!Z?Y():E(v,()=>{Y(),V&&V()})};L?L(v,Y,et):et()}else n(v,p,_)},Ut=(u,p,_,x=!1,C=!1)=>{const{type:v,props:M,ref:$,children:S,dynamicChildren:w,shapeFlag:B,patchFlag:E,dirs:L,cacheIndex:V,memo:Y}=u;if(E===-2&&(C=!1),$!=null&&(Dt(),Ke($,null,_,u,!0),Bt()),V!=null&&(p.renderCache[V]=void 0),B&256){p.ctx.deactivate(u);return}const et=B&1&&L,Z=!We(u);let ct;if(Z&&(ct=M&&M.onVnodeBeforeUnmount)&&Vt(ct,p,u),B&6)hd(u.component,_,x);else{if(B&128){u.suspense.unmount(_,x);return}et&&pe(u,null,p,"beforeUnmount"),B&64?u.type.remove(u,p,_,es,x):w&&!w.hasOnce&&(v!==z||E>0&&E&64)?ts(w,p,_,!1,!0):(v===z&&E&384||!C&&B&16)&&ts(S,p,_),x&&Rr(u)}const gt=Y!=null&&V==null;(Z&&(ct=M&&M.onVnodeUnmounted)||et||gt)&&wt(()=>{ct&&Vt(ct,p,u),et&&pe(u,null,p,"unmounted"),gt&&(u.el=null)},_)},Rr=u=>{const{type:p,el:_,anchor:x,transition:C}=u;if(p===z){dd(_,x);return}if(p===Ps){O(u);return}const v=()=>{i(_),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(u.shapeFlag&1&&C&&!C.persisted){const{leave:M,delayLeave:$}=C,S=()=>M(_,v);$?$(u.el,v,S):S()}else v()},dd=(u,p)=>{let _;for(;u!==p;)_=g(u),i(u),u=_;i(p)},hd=(u,p,_)=>{const{bum:x,scope:C,job:v,subTree:M,um:$,m:S,a:w}=u;zi(S),zi(w),x&&as(x),C.stop(),v&&(v.flags|=8,Ut(M,u,p,_)),$&&wt($,p),wt(()=>{u.isUnmounted=!0},p)},ts=(u,p,_,x=!1,C=!1,v=0)=>{for(let M=v;M<u.length;M++)Ut(u[M],p,_,x,C)},Ns=u=>{if(u.shapeFlag&6)return Ns(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const p=g(u.anchor||u.el),_=p&&p[yi];return _?g(_):p};let Mn=!1;const Dr=(u,p,_)=>{let x;u==null?p._vnode&&(Ut(p._vnode,null,null,!0),x=p._vnode.component):P(p._vnode||null,u,p,null,null,null,_),p._vnode=u,Mn||(Mn=!0,hi(x),pi(),Mn=!1)},es={p:P,um:Ut,m:ve,r:Rr,mt:re,mc:N,pc:nt,pbc:it,n:Ns,o:t};return{render:Dr,hydrate:void 0,createApp:pl(Dr)}}function yn({type:t,props:e},s){return s==="svg"&&t==="foreignObject"||s==="mathml"&&t==="annotation-xml"&&e&&e.encoding&&e.encoding.includes("html")?void 0:s}function me({effect:t,job:e},s){s?(t.flags|=32,e.flags|=4):(t.flags&=-33,e.flags&=-5)}function Pl(t,e){return(!t||t&&!t.pendingBranch)&&e&&!e.persisted}function vn(t,e,s=!1){const n=t.children,i=e.children;if(j(n)&&j(i))for(let r=0;r<n.length;r++){const o=n[r];let l=i[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=i[r]=ee(i[r]),l.el=o.el),!s&&l.patchFlag!==-2&&vn(o,l)),l.type===Ms&&(l.patchFlag===-1&&(l=i[r]=ee(l)),l.el=o.el),l.type===ce&&!l.el&&(l.el=o.el)}}function El(t){const e=t.slice(),s=[0];let n,i,r,o,l;const a=t.length;for(n=0;n<a;n++){const f=t[n];if(f!==0){if(i=s[s.length-1],t[i]<f){e[n]=i,s.push(n);continue}for(r=0,o=s.length-1;r<o;)l=r+o>>1,t[s[l]]<f?r=l+1:o=l;f<t[s[r]]&&(r>0&&(e[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=e[o];return s}function Ji(t){const e=t.subTree.component;if(e)return e.asyncDep&&!e.asyncResolved?e:Ji(e)}function zi(t){if(t)for(let e=0;e<t.length;e++)t[e].flags|=8}function Yi(t){if(t.placeholder)return t.placeholder;const e=t.component;return e?Yi(e.subTree):null}const Qi=t=>t.__isSuspense;function Ol(t,e){e&&e.pendingBranch?j(t)?e.effects.push(...t):e.effects.push(t):Io(t)}const z=Symbol.for("v-fgt"),Ms=Symbol.for("v-txt"),ce=Symbol.for("v-cmt"),Ps=Symbol.for("v-stc"),be=[];let St=null;function m(t=!1){be.push(St=t?null:[])}function Xi(){be.pop(),St=be[be.length-1]||null}let Je=1;function Zi(t,e=!1){Je+=t,t<0&&St&&e&&(St.hasOnce=!0)}function tr(t){return t.dynamicChildren=Je>0?St||we:null,Xi(),Je>0&&St&&St.push(t),t}function b(t,e,s,n,i,r){return tr(c(t,e,s,n,i,r,!0))}function ue(t,e,s,n,i){return tr(At(t,e,s,n,i,!0))}function er(t){return t?t.__v_isVNode===!0:!1}function ze(t,e){return t.type===e.type&&t.key===e.key}const sr=({key:t})=>t??null,Es=({ref:t,ref_key:e,ref_for:s})=>(typeof t=="number"&&(t=""+t),t!=null?rt(t)||ot(t)||U(t)?{i:xt,r:t,k:e,f:!!s}:t:null);function c(t,e=null,s=null,n=0,i=null,r=t===z?0:1,o=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:t,props:e,key:e&&sr(e),ref:e&&Es(e),scopeId:_i,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:xt};return l?(Os(a,s),r&128&&t.normalize(a)):s&&(a.shapeFlag|=rt(s)?8:16),Je>0&&!o&&St&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&St.push(a),a}const At=Il;function Il(t,e=null,s=null,n=0,i=null,r=!1){if((!t||t===rl)&&(t=ce),er(t)){const l=Te(t,e,!0);return s&&Os(l,s),Je>0&&!r&&St&&(l.shapeFlag&6?St[St.indexOf(t)]=l:St.push(l)),l.patchFlag=-2,l}if(Gl(t)&&(t=t.__vccOpts),e){e=Ll(e);let{class:l,style:a}=e;l&&!rt(l)&&(e.class=Pt(l)),X(a)&&(bs(a)&&!j(a)&&(a=dt({},a)),e.style=us(a))}const o=rt(t)?1:Qi(t)?128:Vo(t)?64:X(t)?4:U(t)?2:0;return c(t,e,s,n,i,o,r,!0)}function Ll(t){return t?bs(t)||Vi(t)?dt({},t):t:null}function Te(t,e,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:a}=t,f=e?Dl(i||{},e):i,h={__v_isVNode:!0,__v_skip:!0,type:t.type,props:f,key:f&&sr(f),ref:e&&e.ref?s&&r?j(r)?r.concat(Es(e)):[r,Es(e)]:Es(e):r,scopeId:t.scopeId,slotScopeIds:t.slotScopeIds,children:l,target:t.target,targetStart:t.targetStart,targetAnchor:t.targetAnchor,staticCount:t.staticCount,shapeFlag:t.shapeFlag,patchFlag:e&&t.type!==z?o===-1?16:o|16:o,dynamicProps:t.dynamicProps,dynamicChildren:t.dynamicChildren,appContext:t.appContext,dirs:t.dirs,transition:a,component:t.component,suspense:t.suspense,ssContent:t.ssContent&&Te(t.ssContent),ssFallback:t.ssFallback&&Te(t.ssFallback),placeholder:t.placeholder,el:t.el,anchor:t.anchor,ctx:t.ctx,ce:t.ce};return a&&n&&cn(h,a.clone(h)),h}function ft(t=" ",e=0){return At(Ms,null,t,e)}function Rl(t,e){const s=At(Ps,null,t);return s.staticCount=e,s}function R(t="",e=!1){return e?(m(),ue(ce,null,t)):At(ce,null,t)}function jt(t){return t==null||typeof t=="boolean"?At(ce):j(t)?At(z,null,t.slice()):er(t)?ee(t):At(Ms,null,String(t))}function ee(t){return t.el===null&&t.patchFlag!==-1||t.memo?t:Te(t)}function Os(t,e){let s=0;const{shapeFlag:n}=t;if(e==null)e=null;else if(j(e))s=16;else if(typeof e=="object")if(n&65){const i=e.default;i&&(i._c&&(i._d=!1),Os(t,i()),i._c&&(i._d=!0));return}else{s=32;const i=e._;!i&&!Vi(e)?e._ctx=xt:i===3&&xt&&(xt.slots._===1?e._=1:(e._=2,t.patchFlag|=1024))}else if(U(e)){if(n&65){Os(t,{default:e});return}e={default:e,_ctx:xt},s=32}else e=String(e),n&64?(s=16,e=[ft(e)]):s=8;t.children=e,t.shapeFlag|=s}function Dl(...t){const e={};for(let s=0;s<t.length;s++){const n=t[s];for(const i in n)if(i==="class")e.class!==n.class&&(e.class=Pt([e.class,n.class]));else if(i==="style")e.style=us([e.style,n.style]);else if(ns(i)){const r=e[i],o=n[i];o&&r!==o&&!(j(r)&&r.includes(o))?e[i]=r?[].concat(r,o):o:o==null&&r==null&&!is(i)&&(e[i]=o)}else i!==""&&(e[i]=n[i])}return e}function Vt(t,e,s,n=null){It(t,e,7,[s,n])}const Bl=Li();let Nl=0;function Fl(t,e,s){const n=t.type,i=(e?e.appContext:t.appContext)||Bl,r={uid:Nl++,vnode:t,type:n,parent:e,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Vn(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(i.provides),ids:e?e.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ui(n,i),emitsOptions:Ri(n,i),emit:null,emitted:null,propsDefaults:tt,inheritAttrs:n.inheritAttrs,ctx:tt,data:tt,props:tt,attrs:tt,slots:tt,refs:tt,setupState:tt,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=e?e.root:r,r.emit=_l.bind(null,r),t.ce&&t.ce(r),r}let mt=null;const nr=()=>mt||xt;let Is,wn;{const t=cs(),e=(s,n)=>{let i;return(i=t[s])||(i=t[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};Is=e("__VUE_INSTANCE_SETTERS__",s=>mt=s),wn=e("__VUE_SSR_SETTERS__",s=>Qe=s)}const Ye=t=>{const e=mt;return Is(t),t.scope.on(),()=>{t.scope.off(),Is(e)}},ir=()=>{mt&&mt.scope.off(),Is(null)};function rr(t){return t.vnode.shapeFlag&4}let Qe=!1;function jl(t,e=!1,s=!1){e&&wn(e);const{props:n,children:i}=t.vnode,r=rr(t);kl(t,n,r,e),Al(t,i,s||e);const o=r?Vl(t,e):void 0;return e&&wn(!1),o}function Vl(t,e){const s=t.type;t.accessCache=Object.create(null),t.proxy=new Proxy(t.ctx,ll);const{setup:n}=s;if(n){Dt();const i=t.setupContext=n.length>1?Ul(t):null,r=Ye(t),o=Se(n,t,0,[t.props,i]),l=In(o);if(Bt(),r(),(l||t.sp)&&!We(t)&&ki(t),l){if(o.then(ir,ir),e)return o.then(a=>{or(t,a)}).catch(a=>{ws(a,t,0)});t.asyncDep=o}else or(t,o)}else lr(t)}function or(t,e,s){U(e)?t.type.__ssrInlineRender?t.ssrRender=e:t.render=e:X(e)&&(t.setupState=ai(e)),lr(t)}function lr(t,e,s){const n=t.type;t.render||(t.render=n.render||Lt);{const i=Ye(t);Dt();try{al(t)}finally{Bt(),i()}}}const Hl={get(t,e){return _t(t,"get",""),t[e]}};function Ul(t){const e=s=>{t.exposed=s||{}};return{attrs:new Proxy(t.attrs,Hl),slots:t.slots,emit:t.emit,expose:e}}function Ls(t){return t.exposed?t.exposeProxy||(t.exposeProxy=new Proxy(ai(sn(t.exposed)),{get(e,s){if(s in e)return e[s];if(s in Ge)return Ge[s](t)},has(e,s){return s in e||s in Ge}})):t.proxy}const Kl=/(?:^|[-_])\w/g,Wl=t=>t.replace(Kl,e=>e.toUpperCase()).replace(/[-_]/g,"");function ar(t,e=!0){return U(t)?t.displayName||t.name:t.name||e&&t.__name}function cr(t,e,s=!1){let n=ar(e);if(!n&&e.__file){const i=e.__file.match(/([^/\\]+)\.\w+$/);i&&(n=i[1])}if(!n&&t){const i=r=>{for(const o in r)if(r[o]===e)return o};n=i(t.components)||t.parent&&i(t.parent.type.components)||i(t.appContext.components)}return n?Wl(n):s?"App":"Anonymous"}function Gl(t){return U(t)&&"__vccOpts"in t}const kt=(t,e)=>xo(t,e,Qe),ql="3.5.40";/**
17
+ * @vue/runtime-dom v3.5.40
18
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
19
+ * @license MIT
20
+ **/let kn;const ur=typeof window<"u"&&window.trustedTypes;if(ur)try{kn=ur.createPolicy("vue",{createHTML:t=>t})}catch{}const fr=kn?t=>kn.createHTML(t):t=>t,Jl="http://www.w3.org/2000/svg",zl="http://www.w3.org/1998/Math/MathML",se=typeof document<"u"?document:null,dr=se&&se.createElement("template"),Yl={insert:(t,e,s)=>{e.insertBefore(t,s||null)},remove:t=>{const e=t.parentNode;e&&e.removeChild(t)},createElement:(t,e,s,n)=>{const i=e==="svg"?se.createElementNS(Jl,t):e==="mathml"?se.createElementNS(zl,t):s?se.createElement(t,{is:s}):se.createElement(t);return t==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:t=>se.createTextNode(t),createComment:t=>se.createComment(t),setText:(t,e)=>{t.nodeValue=e},setElementText:(t,e)=>{t.textContent=e},parentNode:t=>t.parentNode,nextSibling:t=>t.nextSibling,querySelector:t=>se.querySelector(t),setScopeId(t,e){t.setAttribute(e,"")},insertStaticContent(t,e,s,n,i,r){const o=s?s.previousSibling:e.lastChild;if(i&&(i===r||i.nextSibling))for(;e.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{dr.innerHTML=fr(n==="svg"?`<svg>${t}</svg>`:n==="mathml"?`<math>${t}</math>`:t);const l=dr.content;if(n==="svg"||n==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}e.insertBefore(l,s)}return[o?o.nextSibling:e.firstChild,s?s.previousSibling:e.lastChild]}},Ql=Symbol("_vtc");function Xl(t,e,s){const n=t[Ql];n&&(e=(e?[e,...n]:[...n]).join(" ")),e==null?t.removeAttribute("class"):s?t.setAttribute("class",e):t.className=e}const hr=Symbol("_vod"),Zl=Symbol("_vsh"),ta=Symbol(""),ea=/(?:^|;)\s*display\s*:/;function sa(t,e,s){const n=t.style,i=rt(s);let r=!1;if(s&&!i){if(e)if(rt(e))for(const o of e.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Xe(n,l,"")}else for(const o in e)s[o]==null&&Xe(n,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?ia(t,o,!rt(e)&&e?e[o]:void 0,l)||Xe(n,o,l):Xe(n,o,"")}}else if(i){if(e!==s){const o=n[ta];o&&(s+=";"+o),n.cssText=s,r=ea.test(s)}}else e&&t.removeAttribute("style");hr in t&&(t[hr]=r?n.display:"",t[Zl]&&(n.display="none"))}const pr=/\s*!important$/;function Xe(t,e,s){if(j(s))s.forEach(n=>Xe(t,e,n));else if(s==null&&(s=""),e.startsWith("--"))t.setProperty(e,s);else{const n=na(t,e);pr.test(s)?t.setProperty(oe(n),s.replace(pr,""),"important"):t[n]=s}}const gr=["Webkit","Moz","ms"],Cn={};function na(t,e){const s=Cn[e];if(s)return s;let n=bt(e);if(n!=="filter"&&n in t)return Cn[e]=n;n=ls(n);for(let i=0;i<gr.length;i++){const r=gr[i]+n;if(r in t)return Cn[e]=r}return e}function ia(t,e,s,n){return t.tagName==="TEXTAREA"&&(e==="width"||e==="height")&&rt(n)&&s===n}const _r="http://www.w3.org/1999/xlink";function mr(t,e,s,n,i,r=Jr(e)){n&&e.startsWith("xlink:")?s==null?t.removeAttributeNS(_r,e.slice(6,e.length)):t.setAttributeNS(_r,e,s):s==null||r&&!Nn(s)?t.removeAttribute(e):t.setAttribute(e,r?"":Mt(s)?String(s):s)}function br(t,e,s,n,i){if(e==="innerHTML"||e==="textContent"){s!=null&&(t[e]=e==="innerHTML"?fr(s):s);return}const r=t.tagName;if(e==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?t.getAttribute("value")||"":t.value,a=s==null?t.type==="checkbox"?"on":"":String(s);(l!==a||!("_value"in t))&&(t.value=a),s==null&&t.removeAttribute(e),t._value=s;return}let o=!1;if(s===""||s==null){const l=typeof t[e];l==="boolean"?s=Nn(s):s==null&&l==="string"?(s="",o=!0):l==="number"&&(s=0,o=!0)}try{t[e]=s}catch{}o&&t.removeAttribute(i||e)}function Me(t,e,s,n){t.addEventListener(e,s,n)}function ra(t,e,s,n){t.removeEventListener(e,s,n)}const yr=Symbol("_vei");function oa(t,e,s,n,i=null){const r=t[yr]||(t[yr]={}),o=r[e];if(n&&o)o.value=n;else{const[l,a]=ca(e);if(n){const f=r[e]=da(n,i);Me(t,l,f,a)}else o&&(ra(t,l,o,a),r[e]=void 0)}}const la=/(Once|Passive|Capture)$/,aa=/^on:?(?:Once|Passive|Capture)$/;function ca(t){let e,s;for(;(s=t.match(la))&&!aa.test(t);)e||(e={}),t=t.slice(0,t.length-s[1].length),e[s[1].toLowerCase()]=!0;return[t[2]===":"?t.slice(3):oe(t.slice(2)),e]}let xn=0;const ua=Promise.resolve(),fa=()=>xn||(ua.then(()=>xn=0),xn=Date.now());function da(t,e){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const i=s.value;if(j(i)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const o=i.slice(),l=[n];for(let a=0;a<o.length&&!n._stopped;a++){const f=o[a];f&&It(f,e,5,l)}}else It(i,e,5,[n])};return s.value=t,s.attached=fa(),s}const vr=t=>t.charCodeAt(0)===111&&t.charCodeAt(1)===110&&t.charCodeAt(2)>96&&t.charCodeAt(2)<123,ha=(t,e,s,n,i,r)=>{const o=i==="svg";e==="class"?Xl(t,n,o):e==="style"?sa(t,s,n):ns(e)?is(e)||oa(t,e,s,n,r):(e[0]==="."?(e=e.slice(1),!0):e[0]==="^"?(e=e.slice(1),!1):pa(t,e,n,o))?(br(t,e,n),!t.tagName.includes("-")&&(e==="value"||e==="checked"||e==="selected")&&mr(t,e,n,o,r,e!=="value")):t._isVueCE&&(ga(t,e)||t._def.__asyncLoader&&(/[A-Z]/.test(e)||!rt(n)))?br(t,bt(e),n,r,e):(e==="true-value"?t._trueValue=n:e==="false-value"&&(t._falseValue=n),mr(t,e,n,o))};function pa(t,e,s,n){if(n)return!!(e==="innerHTML"||e==="textContent"||e in t&&vr(e)&&U(s));if(e==="spellcheck"||e==="draggable"||e==="translate"||e==="autocorrect"||e==="sandbox"&&t.tagName==="IFRAME"||e==="form"||e==="list"&&t.tagName==="INPUT"||e==="type"&&t.tagName==="TEXTAREA")return!1;if(e==="width"||e==="height"){const i=t.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return vr(e)&&rt(s)?!1:e in t}function ga(t,e){const s=t._def.props;if(!s)return!1;const n=bt(e);return Array.isArray(s)?s.some(i=>bt(i)===n):Object.keys(s).some(i=>bt(i)===n)}const wr=t=>{const e=t.props["onUpdate:modelValue"]||!1;return j(e)?s=>as(e,s):e};function _a(t){t.target.composing=!0}function kr(t){const e=t.target;e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}const Sn=Symbol("_assign");function Cr(t,e,s){return e&&(t=t.trim()),s&&(t=Hs(t)),t}const ma={created(t,{modifiers:{lazy:e,trim:s,number:n}},i){t[Sn]=wr(i);const r=n||i.props&&i.props.type==="number";Me(t,e?"change":"input",o=>{o.target.composing||t[Sn](Cr(t.value,s,r))}),(s||r)&&Me(t,"change",()=>{t.value=Cr(t.value,s,r)}),e||(Me(t,"compositionstart",_a),Me(t,"compositionend",kr),Me(t,"change",kr))},mounted(t,{value:e}){t.value=e??""},beforeUpdate(t,{value:e,oldValue:s,modifiers:{lazy:n,trim:i,number:r}},o){if(t[Sn]=wr(o),t.composing)return;const l=(r||t.type==="number")&&!/^0\d/.test(t.value)?Hs(t.value):t.value,a=e??"";if(l===a)return;const f=t.getRootNode();(f instanceof Document||f instanceof ShadowRoot)&&f.activeElement===t&&t.type!=="range"&&(n&&e===s||i&&t.value.trim()===a)||(t.value=a)}},ba=["ctrl","shift","alt","meta"],ya={stop:t=>t.stopPropagation(),prevent:t=>t.preventDefault(),self:t=>t.target!==t.currentTarget,ctrl:t=>!t.ctrlKey,shift:t=>!t.shiftKey,alt:t=>!t.altKey,meta:t=>!t.metaKey,left:t=>"button"in t&&t.button!==0,middle:t=>"button"in t&&t.button!==1,right:t=>"button"in t&&t.button!==2,exact:(t,e)=>ba.some(s=>t[`${s}Key`]&&!e.includes(s))},Pe=(t,e)=>{if(!t)return t;const s=t._withMods||(t._withMods={}),n=e.join(".");return s[n]||(s[n]=((i,...r)=>{for(let o=0;o<e.length;o++){const l=ya[e[o]];if(l&&l(i,e))return}return t(i,...r)}))},va={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},wa=(t,e)=>{const s=t._withKeys||(t._withKeys={}),n=e.join(".");return s[n]||(s[n]=(i=>{if(!("key"in i))return;const r=oe(i.key);if(e.some(o=>o===r||va[o]===r))return t(i)}))},ka=dt({patchProp:ha},Yl);let xr;function Ca(){return xr||(xr=Tl(ka))}const xa=((...t)=>{const e=Ca().createApp(...t),{mount:s}=e;return e.mount=n=>{const i=Aa(n);if(!i)return;const r=e._component;!U(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Sa(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},e});function Sa(t){if(t instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&t instanceof MathMLElement)return"mathml"}function Aa(t){return rt(t)?document.querySelector(t):t}/*!
21
+ * pinia v2.3.1
22
+ * (c) 2025 Eduardo San Martin Morote
23
+ * @license MIT
24
+ */let Sr;const Rs=t=>Sr=t,Ar=Symbol();function An(t){return t&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"&&typeof t.toJSON!="function"}var Ze;(function(t){t.direct="direct",t.patchObject="patch object",t.patchFunction="patch function"})(Ze||(Ze={}));function $a(){const t=Hn(!0),e=t.run(()=>Qt({}));let s=[],n=[];const i=sn({install(r){Rs(i),i._a=r,r.provide(Ar,i),r.config.globalProperties.$pinia=i,n.forEach(o=>s.push(o)),n=[]},use(r){return this._a?s.push(r):n.push(r),this},_p:s,_a:null,_e:t,_s:new Map,state:e});return i}const $r=()=>{};function Tr(t,e,s,n=$r){t.push(e);const i=()=>{const r=t.indexOf(e);r>-1&&(t.splice(r,1),n())};return!s&&Un()&&Yr(i),i}function Ee(t,...e){t.slice().forEach(s=>{s(...e)})}const Ta=t=>t(),Mr=Symbol(),$n=Symbol();function Tn(t,e){t instanceof Map&&e instanceof Map?e.forEach((s,n)=>t.set(n,s)):t instanceof Set&&e instanceof Set&&e.forEach(t.add,t);for(const s in e){if(!e.hasOwnProperty(s))continue;const n=e[s],i=t[s];An(i)&&An(n)&&t.hasOwnProperty(s)&&!ot(n)&&!zt(n)?t[s]=Tn(i,n):t[s]=n}return t}const Ma=Symbol();function Pa(t){return!An(t)||!t.hasOwnProperty(Ma)}const{assign:fe}=Object;function Ea(t){return!!(ot(t)&&t.effect)}function Oa(t,e,s,n){const{state:i,actions:r,getters:o}=e,l=s.state.value[t];let a;function f(){l||(s.state.value[t]=i?i():{});const h=vo(s.state.value[t]);return fe(h,r,Object.keys(o||{}).reduce((d,g)=>(d[g]=sn(kt(()=>{Rs(s);const y=s._s.get(t);return o[g].call(y,y)})),d),{}))}return a=Pr(t,f,e,s,n,!0),a}function Pr(t,e,s={},n,i,r){let o;const l=fe({actions:{}},s),a={deep:!0};let f,h,d=[],g=[],y;const T=n.state.value[t];!r&&!T&&(n.state.value[t]={});let P;function D(N){let F;f=h=!1,typeof N=="function"?(N(n.state.value[t]),F={type:Ze.patchFunction,storeId:t,events:y}):(Tn(n.state.value[t],N),F={type:Ze.patchObject,payload:N,storeId:t,events:y});const it=P=Symbol();fi().then(()=>{P===it&&(f=!0)}),h=!0,Ee(d,F,n.state.value[t])}const H=r?function(){const{state:F}=s,it=F?F():{};this.$patch(pt=>{fe(pt,it)})}:$r;function I(){o.stop(),d=[],g=[],n._s.delete(t)}const G=(N,F="")=>{if(Mr in N)return N[$n]=F,N;const it=function(){Rs(n);const pt=Array.from(arguments),$t=[],Ht=[];function re(q){$t.push(q)}function Ds(q){Ht.push(q)}Ee(g,{args:pt,name:it[$n],store:W,after:re,onError:Ds});let at;try{at=N.apply(this&&this.$id===t?this:W,pt)}catch(q){throw Ee(Ht,q),q}return at instanceof Promise?at.then(q=>(Ee($t,q),q)).catch(q=>(Ee(Ht,q),Promise.reject(q))):(Ee($t,at),at)};return it[Mr]=!0,it[$n]=F,it},O={_p:n,$id:t,$onAction:Tr.bind(null,g),$patch:D,$reset:H,$subscribe(N,F={}){const it=Tr(d,N,F.detached,()=>pt()),pt=o.run(()=>He(()=>n.state.value[t],$t=>{(F.flush==="sync"?h:f)&&N({storeId:t,type:Ze.direct,events:y},$t)},fe({},a,F)));return it},$dispose:I},W=_s(O);n._s.set(t,W);const K=(n._a&&n._a.runWithContext||Ta)(()=>n._e.run(()=>(o=Hn()).run(()=>e({action:G}))));for(const N in K){const F=K[N];if(ot(F)&&!Ea(F)||zt(F))r||(T&&Pa(F)&&(ot(F)?F.value=T[N]:Tn(F,T[N])),n.state.value[t][N]=F);else if(typeof F=="function"){const it=G(F,N);K[N]=it,l.actions[N]=F}}return fe(W,K),fe(J(W),K),Object.defineProperty(W,"$state",{get:()=>n.state.value[t],set:N=>{D(F=>{fe(F,N)})}}),n._p.forEach(N=>{fe(W,o.run(()=>N({store:W,app:n._a,pinia:n,options:l})))}),T&&r&&s.hydrate&&s.hydrate(W.$state,T),f=!0,h=!0,W}/*! #__NO_SIDE_EFFECTS__ */function Er(t,e,s){let n,i;const r=typeof e=="function";typeof t=="string"?(n=t,i=r?s:e):(i=t,n=t.id);function o(l,a){const f=Bo();return l=l||(f?Ve(Ar,null):null),l&&Rs(l),l=Sr,l._s.has(n)||(r?Pr(n,e,i,l):Oa(n,i,l)),l._s.get(n)}return o.$id=n,o}const ne=Er("data",{state:()=>({metadata:null,packageTree:null,packages:{},classes:{},attributes:{},associations:{},operations:{},diagrams:{},searchEntries:[],loaded:!1}),getters:{getClassById:t=>e=>t.classes[e],getPackageById:t=>e=>t.packages[e],getAttributeById:t=>e=>t.attributes[e],getAssociationById:t=>e=>t.associations[e],getOperationById:t=>e=>t.operations[e],getDiagramById:t=>e=>t.diagrams[e],classCount:t=>Object.keys(t.classes).length,packageCount:t=>Object.keys(t.packages).length,associationCount:t=>Object.keys(t.associations).length,attributeCount:t=>Object.keys(t.attributes).length},actions:{loadFromEmbedded(){const t=window;if(!t.__SPA_DATA__)throw new Error("No embedded SPA data found in window.__SPA_DATA__");this.loadData(t.__SPA_DATA__)},async loadFromUrl(t,e){const[s,n]=await Promise.all([fetch(t),fetch(e)]),i=await s.json(),r=await n.json();this.loadData({...i,searchIndex:r})},loadData(t){var e;this.metadata=t.metadata,this.packageTree=t.packageTree,this.packages=t.packages||{},this.classes=t.classes||{},this.attributes=t.attributes||{},this.associations=t.associations||{},this.operations=t.operations||{},this.diagrams=t.diagrams||{},this.searchEntries=((e=t.searchIndex)==null?void 0:e.documentStore)||[],this.loaded=!0},findClassByName(t){return Object.values(this.classes).find(e=>e.name===t)}}}),ie=Er("ui",{state:()=>({currentView:"welcome",currentPackageId:null,currentPackageLabel:null,currentClassId:null,currentClassLabel:null,currentDiagramId:null,currentDiagramLabel:null,sidebarVisible:!0,darkMode:!1,expandedNodes:new Set,breadcrumbs:[],searchQuery:""}),actions:{showWelcome(){this.currentView="welcome",this.currentPackageId=null,this.currentClassId=null,this.currentDiagramId=null,this.breadcrumbs=[],this.updateHash()},selectPackage(t,e){this.currentView="package",this.currentPackageId=t,this.currentPackageLabel=e||null,this.currentClassId=null,this.currentDiagramId=null,this.breadcrumbs=[{label:e||"Package",id:t,type:"package"}],this.expandToNode(t),this.updateHash()},selectClass(t,e){this.currentView="class",this.currentClassId=t,this.currentClassLabel=e||null,this.currentDiagramId=null,this.breadcrumbs=[...this.currentPackageId&&this.currentPackageLabel?[{label:this.currentPackageLabel,id:this.currentPackageId,type:"package"}]:[],{label:e||"Class",id:t,type:"class"}],this.updateHash()},selectDiagram(t,e){this.currentView="diagram",this.currentDiagramId=t,this.currentDiagramLabel=e||null,this.breadcrumbs=[...this.currentPackageId&&this.currentPackageLabel?[{label:this.currentPackageLabel,id:this.currentPackageId,type:"package"}]:[],{label:e||"Diagram",id:t,type:"diagram"}],this.updateHash()},showSearch(t){this.currentView="search",this.searchQuery=t,this.updateHash()},toggleNode(t){this.expandedNodes.has(t)?this.expandedNodes.delete(t):this.expandedNodes.add(t)},expandToNode(t){this.expandedNodes.add(t)},expandAll(){},collapseAll(){this.expandedNodes.clear()},toggleSidebar(){this.sidebarVisible=!this.sidebarVisible},toggleDarkMode(){this.darkMode=!this.darkMode},navigateToHash(){const t=window.location.hash.slice(1);if(!t)return;const e=ne();if(t.startsWith("/package/")){const s=t.slice(9),n=e.getPackageById(s);this.selectPackage(s,n==null?void 0:n.name)}else if(t.startsWith("/class/")){const s=t.slice(7),n=e.getClassById(s);this.selectClass(s,n==null?void 0:n.name)}else if(t.startsWith("/diagram/")){const s=t.slice(9),n=e.getDiagramById(s);this.selectDiagram(s,n==null?void 0:n.name)}},updateHash(){let t="";switch(this.currentView){case"package":t=`/package/${this.currentPackageId}`;break;case"class":t=`/class/${this.currentClassId}`;break;case"diagram":t=`/diagram/${this.currentDiagramId}`;break;case"search":t=`/search?q=${encodeURIComponent(this.searchQuery)}`;break}window.location.hash=t}}}),Ia={class:"tree-node"},La={key:1,class:"tree-toggle-placeholder"},Ra={key:0,class:"tree-stereotype"},Da={class:"tree-label"},Ba={key:2,class:"tree-count"},Na={key:0,class:"tree-children"},Fa=["onClick"],ja={class:"badge badge-class"},Va={class:"tree-item-label"},Ha=Zt({__name:"PackageTreeNode",props:{node:{}},setup(t){const e=t;ne();const s=ie(),n=kt(()=>s.expandedNodes.has(e.node.id)),i=kt(()=>s.currentView==="package"&&s.currentPackageId===e.node.id),r=kt(()=>e.node.children||[]),o=kt(()=>e.node.classes||[]);function l(){s.toggleNode(e.node.id)}function a(){s.selectPackage(e.node.id,e.node.name)}return(f,h)=>{const d=il("PackageTreeNode",!0);return m(),b("div",Ia,[c("div",{class:Pt(["tree-node-content",{selected:i.value}])},[r.value.length||o.value.length?(m(),b("button",{key:0,class:"tree-toggle",onClick:Pe(l,["stop"])},[(m(),b("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",class:Pt({expanded:n.value})},[...h[0]||(h[0]=[c("path",{d:"M4 3l3 3-3 3",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},null,-1)])],2))])):(m(),b("span",La)),c("span",{class:"tree-icon",onClick:a,style:{cursor:"pointer"}},[...h[1]||(h[1]=[c("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[c("path",{d:"M2 6L8 2L14 6V13C14 13.5 13.5 14 13 14H3C2.5 14 2 13.5 2 13V6Z",stroke:"currentColor","stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),c("span",{class:"tree-label-group",onClick:a},[t.node.stereotypes&&t.node.stereotypes.length?(m(),b("span",Ra,[(m(!0),b(z,null,lt(t.node.stereotypes,g=>(m(),b("span",{key:g},"«"+A(g)+"»",1))),128))])):R("",!0),c("span",Da,A(t.node.name),1)]),t.node.classCount?(m(),b("span",Ba,A(t.node.classCount),1)):R("",!0)],2),n.value?(m(),b("div",Na,[(m(!0),b(z,null,lt(r.value,g=>(m(),ue(d,{key:g.id,node:g},null,8,["node"]))),128)),(m(!0),b(z,null,lt(o.value,g=>(m(),b("div",{key:g.id,class:Pt(["tree-item",{selected:k(s).currentClassId===g.id}]),onClick:y=>k(s).selectClass(g.id,g.name)},[c("span",ja,A(g.stereotypes.length?g.stereotypes[0][0]:"C"),1),c("span",Va,A(g.name),1)],10,Fa))),128))])):R("",!0)])}}}),Ua={class:"sidebar-content"},Ka={class:"sidebar-branding"},Wa=["src"],Ga={class:"branding-text"},qa={class:"branding-title"},Ja={class:"sidebar-section overview-section"},za={class:"sidebar-section tree-section"},Ya={class:"section-header"},Qa={class:"tree-controls"},Xa={key:0,class:"package-tree"},Za={key:1,class:"loading"},tc={key:0,class:"sidebar-section stats-section"},ec={class:"stats-grid"},sc={class:"stat-item"},nc={class:"stat-value"},ic={class:"stat-item"},rc={class:"stat-value"},oc={class:"stat-item"},lc={class:"stat-value"},ac={class:"sidebar-footer"},cc={href:"https://www.lutaml.org",target:"_blank",rel:"noopener",class:"footer-brand",title:"LutaML"},uc=["src"],fc={class:"footer-text-group"},dc={key:0,class:"footer-text"},Or="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-icon-light.svg",Ir="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-icon-dark.svg",hc="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-full-light.svg",pc="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-full-dark.svg",gc=Zt({__name:"AppSidebar",setup(t){const e=ne(),s=ie(),n=kt(()=>{var l,a;const o=(a=(l=e.metadata)==null?void 0:l.appearance)==null?void 0:a.logos;if(o!=null&&o.square){const f=s.darkMode?o.square.dark:o.square.light;return(f==null?void 0:f.url)||(f==null?void 0:f.path)||(s.darkMode?Ir:Or)}return s.darkMode?Ir:Or}),i=kt(()=>s.darkMode?pc:hc);function r(o){if(!o)return"";try{return new Date(o).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return o}}return(o,l)=>{var a,f;return m(),b("aside",{class:Pt(["sidebar",{collapsed:!k(s).sidebarVisible}])},[c("div",Ua,[c("div",Ka,[c("img",{src:n.value,alt:"Logo",class:"branding-logo"},null,8,Wa),c("div",Ga,[c("span",qa,A(((a=k(e).metadata)==null?void 0:a.title)||"LutaML"),1),l[3]||(l[3]=c("span",{class:"branding-subtitle"},"UML Browser",-1))])]),c("div",Ja,[c("button",{class:Pt(["overview-btn",{active:k(s).currentView==="welcome"}]),onClick:l[0]||(l[0]=h=>k(s).showWelcome())},[...l[4]||(l[4]=[c("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[c("path",{d:"M2 7.5L8 2.5L14 7.5",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round"}),c("path",{d:"M3 7.5V13.5C3 13.5 3 14 4 14H12C12 14 13 14 13 13.5V7.5",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round"})],-1),c("span",null,"Overview",-1)])],2)]),c("div",za,[c("div",Ya,[l[7]||(l[7]=c("span",{class:"section-title"},"Packages",-1)),c("div",Qa,[c("button",{class:"btn btn-ghost",onClick:l[1]||(l[1]=h=>k(s).expandAll()),title:"Expand All"},[...l[5]||(l[5]=[c("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},[c("path",{d:"M2 5l5 5 5-5",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),c("button",{class:"btn btn-ghost",onClick:l[2]||(l[2]=h=>k(s).collapseAll()),title:"Collapse All"},[...l[6]||(l[6]=[c("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none"},[c("path",{d:"M2 9l5-5 5 5",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])])])]),k(e).packageTree?(m(),b("div",Xa,[At(Ha,{node:k(e).packageTree},null,8,["node"])])):(m(),b("div",Za,"Loading..."))]),k(e).metadata?(m(),b("div",tc,[c("div",ec,[c("div",sc,[c("span",nc,A(k(e).metadata.statistics.packages),1),l[8]||(l[8]=c("span",{class:"stat-label"},"Packages",-1))]),c("div",ic,[c("span",rc,A(k(e).metadata.statistics.classes),1),l[9]||(l[9]=c("span",{class:"stat-label"},"Classes",-1))]),c("div",oc,[c("span",lc,A(k(e).metadata.statistics.associations),1),l[10]||(l[10]=c("span",{class:"stat-label"},"Associations",-1))])])])):R("",!0),c("div",ac,[c("a",cc,[c("img",{src:i.value,alt:"LutaML",class:"lutaml-logo"},null,8,uc)]),c("div",fc,[(f=k(e).metadata)!=null&&f.generated?(m(),b("span",dc,[ft(" Generated "+A(r(k(e).metadata.generated))+" with ",1),l[11]||(l[11]=c("a",{href:"https://github.com/lutaml/lutaml",target:"_blank",rel:"noopener"},"LutaML",-1)),ft(" v"+A(k(e).metadata.version||"?"),1)])):R("",!0)])])])],2)}}}),_c={class:"header"},mc={class:"header-left"},bc={key:0,class:"header-breadcrumb"},yc={key:0,class:"breadcrumb-sep"},vc=["onClick"],wc={key:2},kc={class:"header-right"},Cc=["title"],xc={key:0,width:"18",height:"18",viewBox:"0 0 18 18",fill:"none"},Sc={key:1,width:"18",height:"18",viewBox:"0 0 18 18",fill:"none"},Ac={class:"search-modal"},$c={class:"search-input-wrapper"},Tc={key:0,class:"search-results"},Mc=["onClick"],Pc={class:"result-content"},Ec={class:"result-name"},Oc={class:"result-path"},Ic=Zt({__name:"AppHeader",setup(t){const e=ie(),s=Qt(null),n=Qt(!1),i=Qt(""),r=Qt([]),o=Qt(0);function l(){n.value=!0,setTimeout(()=>{var d;return(d=s.value)==null?void 0:d.focus()},50)}function a(){n.value=!1,i.value="",r.value=[]}function f(d){if((d.metaKey||d.ctrlKey)&&d.key==="k"&&(d.preventDefault(),l()),d.key==="/"&&!n.value){const g=d.target;g.tagName!=="INPUT"&&g.tagName!=="TEXTAREA"&&(d.preventDefault(),l())}}function h(d,g){g==="class"?e.selectClass(d):g==="package"&&e.selectPackage(d),a()}return un(()=>window.addEventListener("keydown",f)),fn(()=>window.removeEventListener("keydown",f)),(d,g)=>(m(),b(z,null,[c("header",_c,[c("div",mc,[c("button",{class:"btn btn-ghost sidebar-toggle",onClick:g[0]||(g[0]=y=>k(e).toggleSidebar()),title:"Toggle sidebar"},[...g[4]||(g[4]=[c("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none"},[c("path",{d:"M3 5h14M3 10h14M3 15h14",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round"})],-1)])]),c("button",{class:"btn btn-ghost home-btn",onClick:g[1]||(g[1]=y=>k(e).showWelcome()),title:"Overview"},[...g[5]||(g[5]=[c("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none"},[c("path",{d:"M3 8.5L9 3.5L15 8.5",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"}),c("path",{d:"M4 8.5V14.5C4 14.5 4 15.5 5 15.5H13C13 15.5 14 15.5 14 14.5V8.5",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])]),k(e).breadcrumbs.length?(m(),b("span",bc,[(m(!0),b(z,null,lt(k(e).breadcrumbs,(y,T)=>(m(),b(z,{key:T},[T>0?(m(),b("span",yc,"/")):R("",!0),y.id?(m(),b("a",{key:1,href:"#",onClick:Pe(P=>h(y.id,y.type||""),["prevent"])},A(y.label),9,vc)):(m(),b("span",wc,A(y.label),1))],64))),128))])):R("",!0)]),c("div",{class:"header-center"},[c("button",{class:"search-trigger",onClick:l},[...g[6]||(g[6]=[Rl('<svg width="16" height="16" viewBox="0 0 16 16" fill="none"><circle cx="7" cy="7" r="5" stroke="currentColor" stroke-width="1.5"></circle><path d="M11 11l3 3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg><span class="search-placeholder">Search classes, packages...</span><kbd class="search-kbd">/</kbd>',3)])])]),c("div",kc,[c("button",{class:"btn btn-ghost theme-btn",onClick:g[2]||(g[2]=y=>k(e).toggleDarkMode()),title:k(e).darkMode?"Light mode":"Dark mode"},[k(e).darkMode?(m(),b("svg",xc,[...g[7]||(g[7]=[c("path",{d:"M9 3V2M9 16v-1M3 9H2M16 9h-1M4.22 4.22l-.7-.7M14.48 14.48l-.7-.7M4.22 13.78l-.7.7M14.48 3.52l-.7.7",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round"},null,-1),c("circle",{cx:"9",cy:"9",r:"3.5",stroke:"currentColor","stroke-width":"1.3"},null,-1)])])):(m(),b("svg",Sc,[...g[8]||(g[8]=[c("circle",{cx:"9",cy:"9",r:"4",stroke:"currentColor","stroke-width":"1.4"},null,-1),c("path",{d:"M9 2v1.5M9 14.5V16M2 9h1.5M14.5 9H16M4.22 4.22l1.06 1.06M12.72 12.72l1.06 1.06M4.22 13.78l1.06-1.06M12.72 5.28l1.06-1.06",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round"},null,-1)])]))],8,Cc)])]),(m(),ue(Wo,{to:"body"},[n.value?(m(),b("div",{key:0,class:"search-modal-overlay",onClick:Pe(a,["self"])},[c("div",Ac,[c("div",$c,[Ro(c("input",{ref_key:"searchInput",ref:s,"onUpdate:modelValue":g[3]||(g[3]=y=>i.value=y),placeholder:"Search classes, packages, attributes...",onKeydown:wa(a,["escape"]),autofocus:""},null,544),[[ma,i.value]])]),r.value.length?(m(),b("div",Tc,[(m(!0),b(z,null,lt(r.value,(y,T)=>(m(),b("div",{key:y.id,class:Pt(["search-result",{focused:T===o.value}]),onClick:P=>h(y.entityId,y.type)},[g[9]||(g[9]=c("span",{class:"result-icon"},[c("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[c("circle",{cx:"8",cy:"8",r:"6",stroke:"currentColor","stroke-width":"1.2"})])],-1)),c("div",Pc,[c("span",Ec,A(y.name),1),c("span",Oc,A(y.entityType),1)])],10,Mc))),128))])):R("",!0),g[10]||(g[10]=c("div",{class:"search-footer"},[c("span",{class:"search-hints"},[c("span",null,[c("kbd",null,"↑↓"),ft(" navigate")]),c("span",null,[c("kbd",null,"Enter"),ft(" select")]),c("span",null,[c("kbd",null,"Esc"),ft(" close")])])],-1))])])):R("",!0)]))],64))}}),Lc={class:"view-welcome"},Rc={class:"welcome-logo"},Dc=["src","alt"],Bc={class:"welcome-title"},Nc={key:0,class:"welcome-stats"},Fc={class:"welcome-stat"},jc={class:"welcome-stat-value"},Vc={class:"welcome-stat"},Hc={class:"welcome-stat-value"},Uc={class:"welcome-stat"},Kc={class:"welcome-stat-value"},Wc={class:"welcome-stat"},Gc={class:"welcome-stat-value"},qc={key:1,class:"welcome-meta"},Jc={class:"meta-item"},zc={class:"meta-value"},Yc={key:0,class:"meta-item"},Qc={class:"meta-value"},Xc={key:1,class:"meta-item"},Zc={class:"meta-value"},tu="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-icon-light.svg",eu="https://raw.githubusercontent.com/lutaml/branding/refs/heads/main/svg/lutaml-logo_logo-icon-dark.svg",su=Zt({__name:"WelcomeView",setup(t){const e=ne(),s=ie(),n=kt(()=>{var o,l;const r=(l=(o=e.metadata)==null?void 0:o.appearance)==null?void 0:l.logos;if(r!=null&&r.square){const a=s.darkMode?r.square.dark:r.square.light;if(a!=null&&a.url)return a.url;if(a!=null&&a.path)return a.path}return s.darkMode?eu:tu});function i(r){if(!r)return"";try{return new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}catch{return r}}return(r,o)=>{var l,a;return m(),b("div",Lc,[c("div",Rc,[c("img",{src:n.value,alt:((l=k(e).metadata)==null?void 0:l.title)||"Logo",width:"48",height:"48"},null,8,Dc)]),c("h1",Bc,A(((a=k(e).metadata)==null?void 0:a.title)||"UML Model Browser"),1),o[7]||(o[7]=c("p",{class:"welcome-subtitle"},"Explore UML model packages, classes, and associations",-1)),k(e).metadata?(m(),b("div",Nc,[c("div",Fc,[c("div",jc,A(k(e).metadata.statistics.packages),1),o[0]||(o[0]=c("div",{class:"welcome-stat-label"},"Packages",-1))]),c("div",Vc,[c("div",Hc,A(k(e).metadata.statistics.classes),1),o[1]||(o[1]=c("div",{class:"welcome-stat-label"},"Classes",-1))]),c("div",Uc,[c("div",Kc,A(k(e).metadata.statistics.attributes),1),o[2]||(o[2]=c("div",{class:"welcome-stat-label"},"Attributes",-1))]),c("div",Wc,[c("div",Gc,A(k(e).metadata.statistics.associations),1),o[3]||(o[3]=c("div",{class:"welcome-stat-label"},"Associations",-1))])])):R("",!0),k(e).metadata?(m(),b("div",qc,[c("div",Jc,[o[4]||(o[4]=c("span",{class:"meta-label"},"Generator",-1)),c("span",zc,A(k(e).metadata.generator),1)]),k(e).metadata.version?(m(),b("div",Yc,[o[5]||(o[5]=c("span",{class:"meta-label"},"Version",-1)),c("span",Qc,A(k(e).metadata.version),1)])):R("",!0),k(e).metadata.generated?(m(),b("div",Xc,[o[6]||(o[6]=c("span",{class:"meta-label"},"Generated",-1)),c("span",Zc,A(i(k(e).metadata.generated)),1)])):R("",!0)])):R("",!0),o[8]||(o[8]=c("p",{class:"welcome-actions"},[ft("Select a package from the sidebar or press "),c("kbd",null,"/"),ft(" to search")],-1))])}}}),nu={key:0,class:"detail-view"},iu={class:"entity-header"},ru={class:"entity-title"},ou={class:"entity-name"},lu={key:0,class:"entity-subtitle"},au={key:0,class:"entity-metadata"},cu={class:"metadata-item"},uu={class:"metadata-value"},fu={key:1,class:"entity-definition"},du={class:"definition-content"},hu={key:2,class:"section"},pu={class:"section-title"},gu={class:"section-count"},_u={class:"item-list"},mu=["onClick"],bu={class:"list-item-name"},yu={key:3,class:"section"},vu={class:"section-title"},wu={class:"section-count"},ku={class:"item-list"},Cu=["onClick"],xu={class:"list-item-name"},Su={class:"tree-count"},Au={key:4,class:"section"},$u={class:"section-title"},Tu={class:"section-count"},Mu={class:"table-wrapper"},Pu={class:"data-table"},Eu=["onClick"],Ou={key:5,class:"empty-state"},Iu=Zt({__name:"PackageDetails",setup(t){const e=ne(),s=ie(),n=kt(()=>s.currentPackageId?e.getPackageById(s.currentPackageId):null);return(i,r)=>n.value?(m(),b("div",nu,[c("div",iu,[c("div",ru,[c("h2",ou,A(n.value.name),1),n.value.path?(m(),b("div",lu,A(n.value.path),1)):R("",!0)]),r[0]||(r[0]=c("span",{class:"entity-badge badge-package"},"Package",-1))]),n.value.stereotypes.length?(m(),b("div",au,[c("div",cu,[r[1]||(r[1]=c("span",{class:"metadata-label"},"Stereotypes",-1)),c("span",uu,[(m(!0),b(z,null,lt(n.value.stereotypes,o=>(m(),b("span",{key:o,class:"stereotype-tag"},"«"+A(o)+"»",1))),128))])])])):R("",!0),n.value.definition?(m(),b("div",fu,[c("div",du,A(n.value.definition),1)])):R("",!0),n.value.diagrams.length?(m(),b("div",hu,[c("h3",pu,[r[2]||(r[2]=ft("Diagrams ",-1)),c("span",gu,A(n.value.diagrams.length),1)]),c("div",_u,[(m(!0),b(z,null,lt(n.value.diagrams,o=>{var l;return m(),b("div",{key:o,class:"list-item clickable-row",onClick:a=>k(s).selectDiagram(o)},[r[3]||(r[3]=c("span",{class:"list-item-icon"},"📊",-1)),c("span",bu,A(((l=k(e).getDiagramById(o))==null?void 0:l.name)||o),1)],8,mu)}),128))])])):R("",!0),n.value.subPackages.length?(m(),b("div",yu,[c("h3",vu,[r[4]||(r[4]=ft("Sub-Packages ",-1)),c("span",wu,A(n.value.subPackages.length),1)]),c("div",ku,[(m(!0),b(z,null,lt(n.value.subPackages,o=>{var l,a;return m(),b("div",{key:o,class:"list-item clickable-row",onClick:f=>k(s).selectPackage(o)},[r[5]||(r[5]=c("span",{class:"list-item-icon"},"📁",-1)),c("span",xu,A(((l=k(e).getPackageById(o))==null?void 0:l.name)||o),1),c("span",Su,A(((a=k(e).getPackageById(o))==null?void 0:a.classes.length)||0),1)],8,Cu)}),128))])])):R("",!0),n.value.classes.length?(m(),b("div",Au,[c("h3",$u,[r[6]||(r[6]=ft("Classes ",-1)),c("span",Tu,A(n.value.classes.length),1)]),c("div",Mu,[c("table",Pu,[r[7]||(r[7]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Type"),c("th",null,"Stereotypes"),c("th",null,"Attrs")])],-1)),c("tbody",null,[(m(!0),b(z,null,lt(n.value.classes,o=>{var l,a,f,h,d;return m(),b("tr",{key:o,class:"clickable-row",onClick:g=>k(s).selectClass(o)},[c("td",null,A((l=k(e).getClassById(o))==null?void 0:l.name),1),c("td",null,[c("span",{class:Pt(["entity-badge","badge-"+(((a=k(e).getClassById(o))==null?void 0:a.type)||"class").toLowerCase()])},A((f=k(e).getClassById(o))==null?void 0:f.type),3)]),c("td",null,[(m(!0),b(z,null,lt(((h=k(e).getClassById(o))==null?void 0:h.stereotypes)||[],g=>(m(),b("span",{key:g,class:"stereotype-tag"},"«"+A(g)+"»",1))),128))]),c("td",null,A(((d=k(e).getClassById(o))==null?void 0:d.attributes.length)||0),1)],8,Eu)}),128))])])])])):R("",!0),!n.value.classes.length&&!n.value.subPackages.length&&!n.value.diagrams.length?(m(),b("div",Ou,[...r[8]||(r[8]=[c("p",null,"This package is empty.",-1)])])):R("",!0)])):R("",!0)}}),Lu={key:0,class:"detail-view"},Ru={class:"entity-header"},Du={class:"entity-title"},Bu={class:"entity-name"},Nu={key:0,class:"entity-subtitle"},Fu={key:0,class:"entity-badge badge-abstract"},ju={key:0,class:"entity-metadata"},Vu={class:"metadata-item"},Hu={class:"metadata-value"},Uu={key:1,class:"entity-definition"},Ku={class:"definition-content"},Wu={key:2,class:"section"},Gu={key:0,class:"inheritance-group"},qu=["onClick"],Ju={class:"list-item-name"},zu={key:1,class:"inheritance-group"},Yu=["onClick"],Qu={class:"list-item-name"},Xu={key:3,class:"section"},Zu={class:"section-title"},tf={class:"section-count"},ef={class:"table-wrapper"},sf={class:"data-table"},nf=["onClick"],rf={key:1,class:"uml-basic-type"},of={key:2,class:"type-unresolved"},lf=["data-visibility"],af={key:0,class:"modifier-badge"},cf={key:1,class:"modifier-badge"},uf={key:4,class:"section"},ff={class:"inheritance-header"},df={class:"table-wrapper"},hf={class:"data-table inherited-table"},pf={key:5,class:"section"},gf={class:"section-title"},_f={class:"section-count"},mf={class:"table-wrapper"},bf={class:"data-table"},yf={key:0},vf=["data-visibility"],wf={key:0,class:"modifier-badge"},kf={key:1,class:"modifier-badge"},Cf={key:6,class:"section"},xf={class:"section-title"},Sf={class:"section-count"},Af={class:"table-wrapper"},$f={class:"data-table"},Tf=["onClick"],Mf={key:7,class:"section"},Pf={class:"inheritance-header"},Ef={class:"list-item"},Of={class:"list-item-name"},If={class:"list-item-meta"},Lf={key:8,class:"section"},Rf={class:"section-title"},Df={class:"section-count"},Bf={class:"item-list"},Nf={class:"list-item-name"},Ff={key:0,class:"list-item-meta"},jf=Zt({__name:"ClassDetails",setup(t){const e=ne(),s=ie(),n=kt(()=>s.currentClassId?e.getClassById(s.currentClassId):null);function i(a){return a?`${a.min||"0"}..${a.max||"*"}`:""}function r(a){if(new Set(["String","Integer","Boolean","Real","UnlimitedNatural","DateTime","URI","Any","Object"]).has(a))return{isBasic:!0,classId:null};const h=e.findClassByName(a);return{isBasic:!1,classId:h?h.id:null}}function o(a){var f;return n.value?((f=a.source)==null?void 0:f.class)!==n.value.xmiId?a.source:a.target:null}function l(a){var f;return a.literals&&a.literals.length>0?"ENUMERATION":((f=a.type)==null?void 0:f.toUpperCase())||"CLASS"}return(a,f)=>{var h;return n.value?(m(),b("div",Lu,[c("div",Ru,[c("div",Du,[c("h2",Bu,A(n.value.qualifiedName),1),n.value.package?(m(),b("div",Nu,[c("a",{href:"#",class:"link-button",onClick:f[0]||(f[0]=Pe(d=>{var g;return k(s).selectPackage(n.value.package,(g=k(e).getPackageById(n.value.package))==null?void 0:g.name)},["prevent"]))},A(((h=k(e).getPackageById(n.value.package))==null?void 0:h.name)||n.value.package),1)])):R("",!0)]),c("span",{class:Pt(["entity-badge","badge-"+l(n.value)])},A(l(n.value)),3),n.value.isAbstract?(m(),b("span",Fu,"abstract")):R("",!0)]),n.value.stereotypes.length?(m(),b("div",ju,[c("div",Vu,[f[1]||(f[1]=c("span",{class:"metadata-label"},"Stereotypes",-1)),c("span",Hu,[(m(!0),b(z,null,lt(n.value.stereotypes,d=>(m(),b("span",{key:d,class:"stereotype-tag"},"«"+A(d)+"»",1))),128))])])])):R("",!0),n.value.definition?(m(),b("div",Uu,[c("div",Ku,A(n.value.definition),1)])):R("",!0),n.value.generalizations.length||n.value.specializations.length?(m(),b("div",Wu,[f[4]||(f[4]=c("h3",{class:"section-title"},"Inheritance",-1)),n.value.generalizations.length?(m(),b("div",Gu,[f[2]||(f[2]=c("div",{class:"inheritance-header"},"↑ Extends",-1)),(m(!0),b(z,null,lt(n.value.generalizations,d=>{var g;return m(),b("div",{key:d,class:"list-item clickable-row",onClick:y=>k(s).selectClass(d)},[c("span",Ju,A(((g=k(e).getClassById(d))==null?void 0:g.name)||d),1)],8,qu)}),128))])):R("",!0),n.value.specializations.length?(m(),b("div",zu,[f[3]||(f[3]=c("div",{class:"inheritance-header"},"↓ Extended by",-1)),(m(!0),b(z,null,lt(n.value.specializations,d=>{var g;return m(),b("div",{key:d,class:"list-item clickable-row",onClick:y=>k(s).selectClass(d)},[c("span",Qu,A(((g=k(e).getClassById(d))==null?void 0:g.name)||d),1)],8,Yu)}),128))])):R("",!0)])):R("",!0),n.value.attributes.length?(m(),b("div",Xu,[c("h3",Zu,[f[5]||(f[5]=ft("Attributes ",-1)),c("span",tf,A(n.value.attributes.length),1)]),c("div",ef,[c("table",sf,[f[6]||(f[6]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Type"),c("th",null,"Visibility"),c("th",null,"Cardinality"),c("th",null,"Modifiers")])],-1)),c("tbody",null,[(m(!0),b(z,null,lt(n.value.attributes,d=>{var g,y,T,P,D,H,I,G,O,W,ht;return m(),b("tr",{key:d,class:"clickable-row"},[c("td",null,A((g=k(e).getAttributeById(d))==null?void 0:g.name),1),c("td",null,[(y=k(e).getAttributeById(d))!=null&&y.type?(m(),b(z,{key:0},[r(k(e).getAttributeById(d).type).classId?(m(),b("a",{key:0,href:"#",class:"type-link",onClick:Pe(K=>k(s).selectClass(r(k(e).getAttributeById(d).type).classId),["prevent"])},A((T=k(e).getAttributeById(d))==null?void 0:T.type),9,nf)):r(k(e).getAttributeById(d).type).isBasic?(m(),b("span",rf,A((P=k(e).getAttributeById(d))==null?void 0:P.type),1)):(m(),b("span",of,A((D=k(e).getAttributeById(d))==null?void 0:D.type),1))],64)):R("",!0)]),c("td",null,[(H=k(e).getAttributeById(d))!=null&&H.visibility?(m(),b("span",{key:0,class:"visibility-badge","data-visibility":(I=k(e).getAttributeById(d))==null?void 0:I.visibility},A((G=k(e).getAttributeById(d))==null?void 0:G.visibility),9,lf)):R("",!0)]),c("td",null,A(i((O=k(e).getAttributeById(d))==null?void 0:O.cardinality)),1),c("td",null,[(W=k(e).getAttributeById(d))!=null&&W.isStatic?(m(),b("span",af,"static")):R("",!0),(ht=k(e).getAttributeById(d))!=null&&ht.isReadOnly?(m(),b("span",cf,"readonly")):R("",!0)])])}),128))])])])])):R("",!0),n.value.inheritedAttributes.length?(m(),b("div",uf,[f[8]||(f[8]=c("h3",{class:"section-title"},"Inherited Attributes",-1)),(m(!0),b(z,null,lt(n.value.inheritedAttributes,d=>(m(),b("div",{key:d.attributeId,class:"inheritance-group"},[c("div",ff,"From "+A(d.inheritedFromName),1),c("div",df,[c("table",hf,[f[7]||(f[7]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Type"),c("th",null,"Cardinality")])],-1)),c("tbody",null,[c("tr",null,[c("td",null,A(d.attribute.name),1),c("td",null,A(d.attribute.type),1),c("td",null,A(i(d.attribute.cardinality)),1)])])])])]))),128))])):R("",!0),n.value.operations.length?(m(),b("div",pf,[c("h3",gf,[f[9]||(f[9]=ft("Operations ",-1)),c("span",_f,A(n.value.operations.length),1)]),c("div",mf,[c("table",bf,[f[11]||(f[11]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Return"),c("th",null,"Visibility"),c("th",null,"Modifiers")])],-1)),c("tbody",null,[(m(!0),b(z,null,lt(n.value.operations,d=>{var g,y,T,P,D,H,I,G,O;return m(),b("tr",{key:d,class:"clickable-row"},[c("td",null,[ft(A((g=k(e).getOperationById(d))==null?void 0:g.name)+"( ",1),(y=k(e).getOperationById(d))!=null&&y.parameters.length?(m(),b("span",yf,A((T=k(e).getOperationById(d))==null?void 0:T.parameters.map(W=>`${W.name}: ${W.type||"?"}`).join(", ")),1)):R("",!0),f[10]||(f[10]=ft(" ) ",-1))]),c("td",null,A(((P=k(e).getOperationById(d))==null?void 0:P.returnType)||"void"),1),c("td",null,[(D=k(e).getOperationById(d))!=null&&D.visibility?(m(),b("span",{key:0,class:"visibility-badge","data-visibility":(H=k(e).getOperationById(d))==null?void 0:H.visibility},A((I=k(e).getOperationById(d))==null?void 0:I.visibility),9,vf)):R("",!0)]),c("td",null,[(G=k(e).getOperationById(d))!=null&&G.isStatic?(m(),b("span",wf,"static")):R("",!0),(O=k(e).getOperationById(d))!=null&&O.isAbstract?(m(),b("span",kf,"abstract")):R("",!0)])])}),128))])])])])):R("",!0),n.value.associations.length?(m(),b("div",Cf,[c("h3",xf,[f[12]||(f[12]=ft("Associations ",-1)),c("span",Sf,A(n.value.associations.length),1)]),c("div",Af,[c("table",$f,[f[13]||(f[13]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Target"),c("th",null,"Cardinality"),c("th",null,"Aggregation")])],-1)),c("tbody",null,[(m(!0),b(z,null,lt(n.value.associations,d=>{var g,y,T,P,D;return m(),b("tr",{key:d},[c("td",null,A((g=k(e).getAssociationById(d))==null?void 0:g.name),1),c("td",null,[o(k(e).getAssociationById(d))?(m(),b(z,{key:0},[(y=o(k(e).getAssociationById(d)))!=null&&y.className?(m(),b("a",{key:0,href:"#",class:"type-link",onClick:Pe(()=>{var I;const H=k(e).findClassByName(((I=o(k(e).getAssociationById(d)))==null?void 0:I.className)||"");H&&k(s).selectClass(H.id)},["prevent"])},A((T=o(k(e).getAssociationById(d)))==null?void 0:T.className),9,Tf)):R("",!0)],64)):R("",!0)]),c("td",null,A(i((P=o(k(e).getAssociationById(d)))==null?void 0:P.cardinality)),1),c("td",null,A((D=o(k(e).getAssociationById(d)))==null?void 0:D.aggregation),1)])}),128))])])])])):R("",!0),n.value.inheritedAssociations.length?(m(),b("div",Mf,[f[14]||(f[14]=c("h3",{class:"section-title"},"Inherited Associations",-1)),(m(!0),b(z,null,lt(n.value.inheritedAssociations,d=>{var g;return m(),b("div",{key:d.associationId,class:"inheritance-group"},[c("div",Pf,"From "+A(d.inheritedFromName),1),c("div",Ef,[c("span",Of,A((g=k(e).getAssociationById(d.associationId))==null?void 0:g.name),1),c("span",If,A(d.localRole),1)])])}),128))])):R("",!0),n.value.literals.length?(m(),b("div",Lf,[c("h3",Rf,[f[15]||(f[15]=ft("Literals ",-1)),c("span",Df,A(n.value.literals.length),1)]),c("div",Bf,[(m(!0),b(z,null,lt(n.value.literals,d=>(m(),b("div",{key:d.name,class:"list-item"},[c("span",Nf,A(d.name),1),d.definition?(m(),b("span",Ff,A(d.definition),1)):R("",!0)]))),128))])])):R("",!0)])):R("",!0)}}}),Vf={key:0,class:"detail-view"},Hf={class:"entity-header"},Uf={class:"entity-title"},Kf={class:"entity-name"},Wf={class:"entity-metadata"},Gf={key:0,class:"metadata-item"},qf={class:"metadata-value"},Jf={class:"metadata-item"},zf={class:"metadata-value"},Yf={class:"metadata-item"},Qf={class:"metadata-value"},Xf={key:0,class:"diagram-toolbar"},Zf=["innerHTML"],td=Zt({__name:"DiagramView",setup(t){const e=ne(),s=ie(),n=kt(()=>s.currentDiagramId?e.getDiagramById(s.currentDiagramId):null),i=Qt(1),r=Qt(0),o=Qt(0);function l(){i.value=Math.min(i.value*1.2,5)}function a(){i.value=Math.max(i.value/1.2,.1)}function f(){i.value=1,r.value=0,o.value=0}function h(y){y.preventDefault(),y.deltaY<0?l():a()}function d(){var D;if(!((D=n.value)!=null&&D.svg))return;const y=new Blob([n.value.svg],{type:"image/svg+xml"}),T=URL.createObjectURL(y),P=document.createElement("a");P.href=T,P.download=`${n.value.name||"diagram"}.svg`,P.click(),URL.revokeObjectURL(T)}const g=kt(()=>`translate(${r.value}px, ${o.value}px) scale(${i.value})`);return(y,T)=>n.value?(m(),b("div",Vf,[c("div",Hf,[c("div",Uf,[c("h2",Kf,A(n.value.name),1)]),T[0]||(T[0]=c("span",{class:"entity-badge badge-diagram"},"Diagram",-1))]),c("div",Wf,[n.value.type?(m(),b("div",Gf,[T[1]||(T[1]=c("span",{class:"metadata-label"},"Type",-1)),c("span",qf,A(n.value.type),1)])):R("",!0),c("div",Jf,[T[2]||(T[2]=c("span",{class:"metadata-label"},"Elements",-1)),c("span",zf,A(n.value.objectCount),1)]),c("div",Yf,[T[3]||(T[3]=c("span",{class:"metadata-label"},"Connectors",-1)),c("span",Qf,A(n.value.linkCount),1)])]),n.value.svg?(m(),b("div",Xf,[c("button",{class:"btn-sm",onClick:l},"Zoom In"),c("button",{class:"btn-sm",onClick:a},"Zoom Out"),c("button",{class:"btn-sm",onClick:f},"Reset"),c("button",{class:"btn-sm",onClick:d},"Download SVG")])):R("",!0),n.value.svg?(m(),b("div",{key:1,class:"diagram-svg-container",onWheel:h},[c("div",{class:"diagram-svg",style:us({transform:g.value}),innerHTML:n.value.svg},null,12,Zf)],32)):R("",!0)])):R("",!0)}}),ed={class:"detail-view"},sd={class:"section-title"},nd={class:"section-count"},id={class:"table-wrapper"},rd={class:"data-table"},od=["onClick"],ld={key:0,class:"empty-state"},ad=Zt({__name:"SearchResults",setup(t){const e=ne(),s=ie(),n=kt(()=>{const i={};for(const r of e.searchEntries){const o=r.type;(i[o]??(i[o]=[])).push(r)}return i});return(i,r)=>(m(),b("div",ed,[r[2]||(r[2]=c("div",{class:"entity-header"},[c("div",{class:"entity-title"},[c("h2",{class:"entity-name"},"Search Results")])],-1)),(m(!0),b(z,null,lt(n.value,(o,l)=>(m(),b("div",{key:l,class:"section"},[c("h3",sd,[ft(A(l)+"s ",1),c("span",nd,A(o.length),1)]),c("div",id,[c("table",rd,[r[0]||(r[0]=c("thead",null,[c("tr",null,[c("th",null,"Name"),c("th",null,"Package"),c("th",null,"Type")])],-1)),c("tbody",null,[(m(!0),b(z,null,lt(o,a=>(m(),b("tr",{key:a.id,class:"clickable-row",onClick:f=>a.type==="class"?k(s).selectClass(a.entityId):k(s).selectPackage(a.entityId)},[c("td",null,A(a.name),1),c("td",null,A(a.package),1),c("td",null,[c("span",{class:Pt(["entity-badge","badge-"+(a.entityType||"class").toLowerCase()])},A(a.entityType),3)])],8,od))),128))])])])]))),128)),k(e).searchEntries.length?R("",!0):(m(),b("div",ld,[...r[1]||(r[1]=[c("p",null,"No results found.",-1)])]))]))}}),cd=["data-theme"],ud={class:"main-content"},fd={class:"content-area"},Lr=xa(Zt({__name:"App",setup(t){const e=ne(),s=ie();return un(async()=>{const n=window;n.__SPA_DATA__?e.loadFromEmbedded():n.__SPA_DATA_URL__&&await e.loadFromUrl(n.__SPA_DATA_URL__,n.__SPA_SEARCH_URL__),s.navigateToHash(),window.addEventListener("hashchange",()=>s.navigateToHash());const i=localStorage.getItem("uml-browser-preferences");if(i)try{const r=JSON.parse(i);r.darkMode!==void 0&&(s.darkMode=r.darkMode),r.sidebarVisible!==void 0&&(s.sidebarVisible=r.sidebarVisible)}catch{}}),He(()=>[s.darkMode,s.sidebarVisible],()=>{localStorage.setItem("uml-browser-preferences",JSON.stringify({darkMode:s.darkMode,sidebarVisible:s.sidebarVisible}))}),(n,i)=>(m(),b("div",{class:"app-layout","data-theme":k(s).darkMode?"dark":"light"},[At(gc),c("div",ud,[At(Ic),c("div",fd,[k(s).currentView==="welcome"?(m(),ue(su,{key:0})):k(s).currentView==="package"?(m(),ue(Iu,{key:1})):k(s).currentView==="class"?(m(),ue(jf,{key:2})):k(s).currentView==="diagram"?(m(),ue(td,{key:3})):k(s).currentView==="search"?(m(),ue(ad,{key:4})):R("",!0)])])],8,cd))}}));Lr.use($a()),Lr.mount("#app")})();
@@ -0,0 +1 @@
1
+ :root{--color-primary: #5b9cd4;--color-primary-light: #7db5e2;--color-primary-dark: #26489e;--color-primary-alpha: rgba(91, 156, 212, .12);--color-accent: #dbab3e;--color-accent-light: #f0ca6e;--color-accent-alpha: rgba(219, 171, 62, .12);--color-teal: #60c3a7;--color-teal-alpha: rgba(96, 195, 167, .12);--color-orange: #ea5624;--color-orange-alpha: rgba(234, 86, 36, .12);--color-red: #b31f24;--color-red-alpha: rgba(179, 31, 36, .12);--color-green: #7cc242;--color-green-alpha: rgba(124, 194, 66, .12);--bg-primary: #FAFAF9;--bg-secondary: #F5F5F4;--bg-elevated: #FFFFFF;--bg-overlay: rgba(28, 25, 23, .5);--bg-hover: rgba(28, 25, 23, .04);--bg-active: rgba(28, 25, 23, .06);--text-primary: #1C1917;--text-secondary: #57534E;--text-muted: #A8A29E;--border-light: #E7E5E4;--border-medium: #D6D3D1;--border-focus: #5b9cd4;--badge-class: #26489e;--badge-class-bg: rgba(38, 72, 158, .12);--badge-enum: #dbab3e;--badge-enum-bg: rgba(219, 171, 62, .15);--badge-datatype: #60c3a7;--badge-datatype-bg: rgba(96, 195, 167, .15);--badge-interface: #5b9cd4;--badge-interface-bg: rgba(91, 156, 212, .12);--badge-package: #ea5624;--badge-package-bg: rgba(234, 86, 36, .12);--badge-diagram: #7cc242;--badge-diagram-bg: rgba(124, 194, 66, .12);--badge-abstract: #b31f24;--badge-abstract-bg: rgba(179, 31, 36, .12);--shadow-sm: 0 1px 2px rgba(28, 25, 23, .05);--shadow-md: 0 4px 6px -1px rgba(28, 25, 23, .07), 0 2px 4px -1px rgba(28, 25, 23, .04);--shadow-lg: 0 10px 15px -3px rgba(28, 25, 23, .08), 0 4px 6px -2px rgba(28, 25, 23, .04);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Monaco, "Consolas", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--transition-fast: .1s ease;--transition-normal: .15s ease;--transition-slow: .2s ease-out;--sidebar-width: 280px;--header-height: 56px;--z-sidebar: 10;--z-header: 20;--z-search-overlay: 100;--z-modal: 200}[data-theme=dark]{--bg-primary: #1a1a24;--bg-secondary: #232736;--bg-elevated: #2d3344;--bg-overlay: rgba(0, 0, 0, .7);--bg-hover: rgba(255, 255, 255, .06);--bg-active: rgba(255, 255, 255, .1);--text-primary: #e8edf4;--text-secondary: #a8b4c8;--text-muted: #6b7a8f;--border-light: #3a4256;--border-medium: #4a5572;--border-focus: #5b9cd4;--badge-class-bg: rgba(91, 156, 212, .2);--badge-class: #5b9cd4;--badge-enum-bg: rgba(219, 171, 62, .2);--badge-datatype-bg: rgba(96, 195, 167, .2);--badge-interface-bg: rgba(91, 156, 212, .2);--badge-package-bg: rgba(234, 86, 36, .2);--badge-diagram-bg: rgba(124, 194, 66, .2);--badge-abstract-bg: rgba(179, 31, 36, .2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .6), 0 4px 6px -2px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text-primary);background-color:var(--bg-primary)}ul,ol{list-style:none}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-dark);text-decoration:underline}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}table{border-collapse:collapse;border-spacing:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:var(--leading-tight);color:var(--text-primary)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-base);color:var(--text-secondary)}code,pre{font-family:var(--font-mono);font-size:.9em}code{background:var(--bg-secondary);padding:.125em .375em;border-radius:var(--radius-sm)}pre{background:var(--bg-secondary);padding:var(--space-4);border-radius:var(--radius-md);overflow-x:auto}pre code{background:none;padding:0}kbd{display:inline-block;padding:2px 5px;font-family:var(--font-mono);font-size:10px;background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:var(--radius-sm)}mark{background:var(--color-accent-alpha);color:var(--color-accent);padding:0 2px;border-radius:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);transition:all var(--transition-fast)}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-dark)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-medium)}.btn-secondary:hover{background:var(--bg-hover)}.btn-ghost{color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.input{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--color-primary-alpha)}.input::placeholder{color:var(--text-muted)}.badge{display:inline-flex;align-items:center;padding:.125rem .5rem;font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.025em}.card{background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}#app{height:100vh}.app-layout{display:flex;height:100vh;overflow:hidden}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.header{height:var(--header-height);flex-shrink:0;display:flex;align-items:center;padding:0 var(--space-4);background:var(--bg-elevated);border-bottom:1px solid var(--border-light);gap:var(--space-4);z-index:var(--z-header)}.header-left{display:flex;align-items:center;gap:var(--space-3)}.header-center{flex:1;display:flex;justify-content:center;max-width:480px;margin:0 auto}.header-right{display:flex;align-items:center;gap:var(--space-1)}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--bg-secondary);border-right:1px solid var(--border-light);display:flex;flex-direction:column;overflow:hidden;z-index:var(--z-sidebar)}.sidebar.collapsed{width:0}.sidebar-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:var(--sidebar-width)}.content-area{flex:1;overflow:auto;padding:var(--space-6);background:var(--bg-primary)}@media(max-width:1023px){.sidebar{position:absolute;top:0;left:0;bottom:0;box-shadow:var(--shadow-lg)}.sidebar.collapsed{width:0;overflow:hidden}.sidebar-toggle{display:flex!important}.header-center{max-width:none}}@media(max-width:767px){:root{--sidebar-width: 280px;--header-height: 48px}.content-area{padding:var(--space-4)}}@media(min-width:1280px){:root{--sidebar-width: 320px}}.sidebar-branding{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);height:var(--header-height);border-bottom:1px solid var(--border-light)}.branding-logo{width:28px;height:28px;flex-shrink:0}.branding-text{display:flex;flex-direction:column;line-height:1.2;min-width:0}.branding-title{font-size:var(--text-sm);font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.branding-subtitle{font-size:var(--text-xs);color:var(--text-muted);font-weight:400}.overview-btn{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.overview-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.overview-btn.active{background:var(--color-primary-alpha);color:var(--color-primary)}.sidebar-section{padding:var(--space-4);border-bottom:1px solid var(--border-light)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.section-title{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.tree-node{-webkit-user-select:none;user-select:none}.tree-node-content{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.tree-node-content:hover{background:var(--bg-hover)}.tree-node-content.selected{background:var(--color-primary-alpha);color:var(--color-primary)}.tree-toggle{width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0;color:var(--text-muted);transition:transform var(--transition-fast);flex-shrink:0}.tree-toggle svg.expanded{transform:rotate(90deg)}.tree-toggle-placeholder{width:16px;flex-shrink:0}.tree-icon{color:var(--text-muted);display:flex;align-items:center;flex-shrink:0}.tree-label-group{display:flex;flex-direction:column;flex:1;min-width:0;cursor:pointer}.tree-label{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;background:none;border:none;cursor:pointer;color:inherit;padding:0;font-family:inherit}.tree-label:hover,.tree-node-content.selected .tree-label{color:var(--color-primary)}.tree-stereotype{font-size:var(--text-xs);color:var(--text-muted);font-style:italic;line-height:1.2}.tree-count{font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-primary);padding:1px 5px;border-radius:var(--radius-sm);flex-shrink:0}.tree-children{margin-top:var(--space-1);padding-left:var(--space-4)}.tree-group{margin-bottom:var(--space-1)}.tree-group-label{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:500;color:var(--text-muted)}.tree-group-items{margin-top:var(--space-1)}.tree-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);padding-left:calc(var(--space-2) + 20px);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast)}.tree-item:hover{background:var(--bg-hover)}.tree-item.selected{background:var(--color-primary-alpha)}.tree-item-label{flex:1;font-size:var(--text-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);text-align:center}.stat-item{display:flex;flex-direction:column;gap:2px}.stat-value{font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}.stat-label{font-size:var(--text-xs);color:var(--text-muted)}.sidebar-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-light);display:flex;align-items:center;gap:var(--space-3)}.lutaml-logo{height:18px;flex-shrink:0;opacity:.7}.lutaml-logo svg{height:100%;width:auto}.footer-text{font-size:var(--text-xs);color:var(--text-muted);line-height:1.3}.footer-text a{color:var(--color-primary);text-decoration:none}.footer-text a:hover{text-decoration:underline}.sidebar-toggle{display:flex;align-items:center;justify-content:center;padding:var(--space-2)}.home-btn{width:32px;height:32px;padding:0;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md)}.home-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.header-breadcrumb{font-size:var(--text-sm);color:var(--text-secondary);font-weight:500}.search-trigger{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.search-trigger:hover{background:var(--bg-hover);border-color:var(--border-medium)}.search-placeholder{flex:1;text-align:left}.icon-btn{width:32px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);border-radius:var(--radius-md);transition:all var(--transition-fast)}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.search-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-overlay);display:flex;align-items:flex-start;justify-content:center;z-index:var(--z-search-overlay);animation:fadeIn var(--transition-fast)}.search-modal{width:100%;max-width:560px;background:var(--bg-elevated);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);overflow:hidden;animation:slideUp var(--transition-slow)}.search-input-wrapper{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--border-light)}.search-input{flex:1;border:none;background:none;font-size:var(--text-base);color:var(--text-primary);outline:none;font-family:var(--font-sans)}.search-input::placeholder{color:var(--text-muted)}.search-results{max-height:400px;overflow-y:auto}.search-loading,.search-empty{padding:var(--space-8);text-align:center;color:var(--text-muted)}.search-results-list{padding:var(--space-2)}.search-result{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast)}.search-result:hover,.search-result.focused{background:var(--bg-hover)}.result-icon{color:var(--text-muted);display:flex;align-items:center}.result-content{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.result-name{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-path{font-size:var(--text-xs);color:var(--text-muted)}.search-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-light);background:var(--bg-secondary)}.search-hints{display:flex;gap:var(--space-4);font-size:var(--text-xs);color:var(--text-muted)}.search-hints kbd{padding:2px 5px;font-family:var(--font-mono);font-size:10px;background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:var(--radius-sm);margin-right:2px}.view-welcome{max-width:640px;margin:0 auto;padding:var(--space-12) var(--space-4);text-align:center}.welcome-logo{width:48px;height:48px;margin:0 auto var(--space-4);display:flex;align-items:center;justify-content:center}.welcome-logo svg{width:100%;height:100%}.welcome-title{font-size:var(--text-3xl);font-weight:600;margin-bottom:var(--space-2)}.welcome-subtitle{font-size:var(--text-lg);color:var(--text-secondary);margin-bottom:var(--space-8)}.welcome-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-3);margin-bottom:var(--space-8)}.welcome-stat{background:var(--bg-secondary);border-radius:var(--radius-lg);padding:var(--space-5)}.welcome-stat-value{font-size:var(--text-2xl);font-weight:600;color:var(--color-primary)}.welcome-stat-label{font-size:var(--text-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--space-1)}.welcome-actions{font-size:var(--text-sm);color:var(--text-muted)}.welcome-meta{display:flex;flex-wrap:wrap;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-radius:var(--radius-md);font-size:var(--text-sm)}.welcome-meta .meta-item{display:flex;gap:var(--space-2)}.welcome-meta .meta-label{color:var(--text-muted)}.welcome-meta .meta-value{color:var(--text-primary);font-weight:500}.entity-header{display:flex;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--border-light)}.entity-title{flex:1;min-width:0}.entity-name{font-size:var(--text-2xl);font-weight:600;margin:0;line-height:var(--leading-tight)}.entity-subtitle{font-size:var(--text-sm);color:var(--text-muted);margin-top:var(--space-1)}.entity-badge{padding:.25rem .75rem;font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.025em;flex-shrink:0;margin-top:var(--space-1)}.badge-package{background:var(--badge-package-bg);color:var(--badge-package)}.badge-class{background:var(--badge-class-bg);color:var(--badge-class)}.badge-enum{background:var(--badge-enum-bg);color:var(--badge-enum)}.badge-datatype{background:var(--badge-datatype-bg);color:var(--badge-datatype)}.badge-interface{background:var(--badge-interface-bg);color:var(--badge-interface)}.badge-diagram{background:var(--badge-diagram-bg);color:var(--badge-diagram)}.badge-abstract{background:var(--badge-abstract-bg);color:var(--badge-abstract)}.entity-metadata{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-6);margin-bottom:var(--space-6);font-size:var(--text-sm)}.metadata-item{display:flex;gap:var(--space-2);align-items:baseline}.metadata-label{font-weight:500;color:var(--text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}.metadata-value{color:var(--text-secondary)}.entity-definition{margin-bottom:var(--space-8)}.definition-content{background:var(--bg-secondary);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg);border-left:3px solid var(--color-primary);line-height:var(--leading-relaxed);font-size:var(--text-sm);color:var(--text-secondary)}.section{margin-bottom:var(--space-8)}.section-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.section-count{font-size:var(--text-xs);color:var(--text-muted);background:var(--bg-secondary);padding:1px 6px;border-radius:var(--radius-sm);font-weight:500}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--border-light)}.data-table th{font-weight:500;color:var(--text-secondary);background:var(--bg-secondary);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}.data-table tr:hover td{background:var(--bg-hover)}.data-table tr.clickable-row{cursor:pointer}.table-wrapper{overflow-x:auto;border:1px solid var(--border-light);border-radius:var(--radius-lg)}.table-wrapper .data-table{margin:0}.link-button{color:var(--color-primary);background:none;border:none;cursor:pointer;padding:0;font-size:inherit;font-family:inherit;text-align:left}.link-button:hover{color:var(--color-primary-dark);text-decoration:underline}.type-link{color:var(--color-primary);background:none;border:none;cursor:pointer;padding:0;font-family:var(--font-mono);font-size:inherit}.type-link:hover{color:var(--color-primary-dark);text-decoration:underline}.uml-basic-type{color:var(--color-teal);font-weight:500}.type-unresolved{color:var(--color-orange);font-weight:500;font-family:var(--font-mono)}.item-list{display:flex;flex-direction:column;gap:var(--space-1)}.list-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-size:var(--text-sm)}.list-item:hover{background:var(--bg-hover)}.list-item-icon{color:var(--text-muted);flex-shrink:0}.list-item-name{flex:1;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item-meta{font-size:var(--text-xs);color:var(--text-muted);flex-shrink:0}.inheritance-group{margin-bottom:var(--space-6)}.inheritance-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-secondary);border-left:3px solid var(--color-primary);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-3);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.empty-state{padding:var(--space-8);text-align:center;color:var(--text-muted);font-size:var(--text-sm)}.info-message{padding:var(--space-3) var(--space-4);background:var(--color-primary-alpha);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-primary);margin-bottom:var(--space-4)}.cell-description{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-1)}.visibility-badge{display:inline-block;padding:.125rem .375rem;font-size:var(--text-xs);border-radius:var(--radius-sm)}.visibility-badge[data-visibility=public]{background:var(--color-green-alpha);color:var(--color-green)}.visibility-badge[data-visibility=private]{background:var(--color-red-alpha);color:var(--color-red)}.visibility-badge[data-visibility=protected]{background:var(--color-orange-alpha);color:var(--color-orange)}.modifier-badge{display:inline-block;padding:.1rem .4rem;font-size:var(--text-xs);background:var(--bg-secondary);border-radius:var(--radius-sm);color:var(--text-muted);margin-right:var(--space-1)}.stereotype-tag{display:inline-block;padding:.1rem .4rem;font-size:var(--text-xs);font-weight:500;background:var(--badge-interface-bg);color:var(--badge-interface);border-radius:var(--radius-sm);margin-right:var(--space-1)}.result-group{margin-bottom:var(--space-6)}.result-group-title{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:var(--space-3)}.inherited-table{font-size:var(--text-sm);opacity:.92}.inherited-table th{font-size:var(--text-xs)}.inherited-table td{padding:var(--space-2)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.font-mono{font-family:var(--font-mono)}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.diagram-toolbar{display:flex;gap:var(--space-2);padding:var(--space-3) 0;margin-bottom:var(--space-4)}.diagram-toolbar .btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);font-weight:500;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);color:var(--text-secondary)}.diagram-toolbar .btn-sm:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.diagram-svg-container{background:var(--bg-elevated);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--space-4);overflow:hidden;transition:transform .1s ease-out;min-height:400px;display:flex;align-items:center;justify-content:center}.diagram-svg-container svg{max-width:100%;display:block}.diagram-list .list-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.diagram-list .list-item:hover{background:var(--bg-hover)}.diagram-objects{font-size:var(--text-xs);color:var(--text-muted);margin-left:auto}.diagram-meta{display:flex;gap:var(--space-4);margin-top:var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.tree-section{flex:1;overflow:auto}.tree-controls{display:flex;gap:var(--space-1)}.tree-controls .btn{padding:var(--space-1)}.breadcrumb-sep{color:var(--border-medium);margin:0 var(--space-1)}.search-kbd{padding:2px 6px;font-size:var(--text-xs);font-family:var(--font-mono);background:var(--bg-elevated);border:1px solid var(--border-medium);border-radius:var(--radius-sm)}.theme-btn{width:32px;height:32px;padding:0}.detail-view{max-width:960px}.loading{padding:var(--space-4);text-align:center;color:var(--text-muted);font-size:var(--text-sm)}@media(min-width:1024px){.sidebar-toggle{display:flex}}
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>LutaML UML Browser (dev)</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script>
11
+ // Stub data for development mode
12
+ window.__SPA_DATA__ = {
13
+ metadata: { generated: "2025-01-01", generator: "Dev", version: "1.0", statistics: { packages: 1, classes: 1, associations: 0, attributes: 1, operations: 0 } },
14
+ packageTree: { id: "pkg_test", name: "TestPackage", path: "TestPackage", stereotypes: [], classCount: 1, classes: [{ id: "cls_test", name: "TestClass", stereotypes: [] }], children: [] },
15
+ packages: { "pkg_test": { id: "pkg_test", xmiId: "test", name: "TestPackage", path: "TestPackage", stereotypes: [], classes: ["cls_test"], subPackages: [], diagrams: [] } },
16
+ classes: { "cls_test": { id: "cls_test", xmiId: "test_cls", name: "TestClass", qualifiedName: "TestPackage::TestClass", type: "Class", stereotypes: [], attributes: [], operations: [], associations: [], generalizations: [], specializations: [], isAbstract: false, literals: [], inheritedAttributes: [], inheritedAssociations: [] } },
17
+ attributes: {},
18
+ associations: {},
19
+ operations: {},
20
+ diagrams: {},
21
+ searchIndex: { version: "1.0.0", fields: [], ref: "id", documentStore: [], pipeline: [] }
22
+ };
23
+ </script>
24
+ <script type="module" src="/src/app.ts"></script>
25
+ </body>
26
+ </html>