diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e4edfd72..c3c42bc4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -10,40 +10,74 @@ on: - main jobs: - build_and_deploy_job: + build_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - runs-on: ubuntu-latest - name: Build and Deploy Job + runs-on: windows-latest + name: Build Documentation steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: submodules: true - - name: Generate redirects - run: | - chmod +x gen_redirects.py - ./gen_redirects.py - - name: Build Documentation - uses: nunit/docfx-action@v4.1.0 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Set up .NET + uses: actions/setup-dotnet@v4 with: - args: docfx.json --warningsAsErrors - - name: Replace Shared Xref in API HTML + dotnet-version: '8.0.x' + - name: Cache DocFX + uses: actions/cache@v4 + with: + path: ~/.dotnet/tools + key: docfx-${{ runner.os }} + - name: Install DocFX + run: dotnet tool install -g docfx --ignore-failed-sources + - name: Generate configs + run: | + python build_scripts/gen_redirects.py + python build_scripts/gen_languages.py + - name: Generate API metadata + run: docfx metadata localizedContent/en/docfx.json + - name: Verify API files generated run: | - sudo chmod -R u+w _site/api - sudo find _site/api -type f -name "*.html" -exec sed -i 's|Shared|Shared|g' {} + - shell: bash - - name: Build And Deploy + if (!(Test-Path "content/api/toc.yml")) { + Write-Error "API metadata generation failed - toc.yml not found" + exit 1 + } + Write-Host "API files generated: $((Get-ChildItem content/api/*.yml).Count) YAML files" + shell: pwsh + - name: Build all documentation + run: python build-docs.py --all --skip-gen + - name: Upload build artifact + uses: actions/upload-artifact@v4 + with: + name: site + path: _site + retention-days: 7 + + deploy_job: + if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') + needs: build_job + runs-on: ubuntu-latest + name: Deploy to Azure + steps: + - name: Download build artifact + uses: actions/download-artifact@v4 + with: + name: site + path: _site + - name: Deploy to Azure Static Web Apps id: builddeploy uses: Azure/static-web-apps-deploy@v1 with: azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_DELIGHTFUL_MUD_081AFFE03 }} - repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) + repo_token: ${{ secrets.GITHUB_TOKEN }} action: "upload" - ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### - # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: "/_site" # App source code path - api_location: "" # Api source code path - optional - output_location: "/_site" # Built app content directory - optional - ###### End of Repository/Build Configurations ###### + app_location: "_site" + api_location: "" + output_location: "" + skip_app_build: true close_pull_request_job: if: github.event_name == 'pull_request' && github.event.action == 'closed' diff --git a/.gitignore b/.gitignore index 4acf97de..da3d4147 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -/docfx.json +/metadata/languages.json + ############### # folder # @@ -17,8 +18,13 @@ .NuGet/ artifacts/ target/ -/_site/* -!/_site/staticwebapp.config.json +/_site/ + +# Localized content +/localizedContent/en/ +/localizedContent/*/docfx.json +!/localizedContent/*/.translation-status.json + .vscode/ .vs/ diff --git a/README.md b/README.md index 28e43402..f45849c0 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,140 @@ # TabularEditorDocs + This is the GitHub repository for the Tabular Editor documentation site, https://docs.tabulareditor.com. The repository contains documentation articles for both the open-source Tabular Editor 2.x as well as the commercial Tabular Editor 3, including articles for common features and C# scripting documentation. # Technical details -The site uses [DocFX](https://dotnet.github.io/docfx/) and GitHub flavoured markdown for all articles. + +The site uses [DocFX](https://dotnet.github.io/docfx/) and GitHub flavoured markdown for all articles. Multi-language support is provided through the `localizedContent/` directory. # How to contribute + All contributions are welcome. We will review all pull requests submitted. To test your changes locally: -- Make sure [DocFX](https://dotnet.github.io/docfx/) is installed. -- Run `gen_redirects.py` in the root of the project. -- Run `docfx --serve` in the root of the project. +- Make sure [DocFX](https://dotnet.github.io/docfx/) and Python 3.11+ are installed. +- Run `python build-docs.py --serve` in the root of the project. + +# Build Script Usage + +The `build-docs.py` script handles all documentation building tasks including multi-language support. + +## Quick Start + +```bash +# Build and serve locally (English only, for development) +python build-docs.py --serve + +# Or build all languages and serve with Azure Static Web Apps CLI +python build-docs.py --all +swa start _site +``` + +## Commands + +| Command | Description | +|---------|-------------| +| `python build-docs.py` | Build all languages (default) | +| `python build-docs.py --all` | Build all languages | +| `python build-docs.py --lang en` | Build English only | +| `python build-docs.py --lang es zh` | Build specific languages | +| `python build-docs.py --list` | List available languages | +| `python build-docs.py --serve` | Build English and serve locally | + +## Options + +| Option | Description | +|--------|-------------| +| `--all` | Build all available languages | +| `--lang LANGS` | Build specific language(s), space-separated | +| `--list` | List available languages and exit | +| `--serve` | Build and serve locally (English only, for development) | +| `--skip-gen` | Skip running gen_redirects.py (use existing configs) | +| `--no-api-copy` | Skip copying API docs to localized sites | + +## What the Build Script Does + +1. **Generates DocFX configurations** - Runs `gen_redirects.py` to create `docfx.json` for each language +2. **Generates language manifest** - Creates `metadata/languages.json` for runtime language switching +3. **Syncs content** - Copies English source content; uses English as fallback for missing translations. Readds the english file if the file is modified in content or deleted in translation. +4. **Builds documentation** - Runs DocFX for each requested language +5. **Fixes API docs** - Patches xref links in generated API documentation +6. **Copies API docs** - Shares English API docs with localized sites +7. **Injects SEO tags** - Adds hreflang and canonical tags to HTML files +8. **Generates SWA config** - Creates `staticwebapp.config.json` for Azure Static Web Apps routing + +# Project Structure + +``` +TEDoc/ +├── build-docs.py # Main build script +├── build_scripts/ # Helper scripts +│ ├── gen_redirects.py # Generates docfx.json configs +│ ├── gen_languages.py # Generates language manifest +│ ├── gen_staticwebapp_config.py +│ ├── inject_seo_tags.py +│ └── sync-localized-content.py +├── content/ # English source content (tracked in git) +│ └── _ui-strings.json # English UI strings (header, footer, banners) +├── localizedContent/ # Build directories for all languages +│ ├── en/ # English build (generated, gitignored) +│ └── {lang}/ # Translated content +│ ├── content/ # Translated markdown and UI strings (tracked) +│ │ └── _ui-strings.json # Translated UI strings for this language +│ └── docfx.json # Generated config (gitignored) +├── metadata/ +│ ├── languages.json # Language manifest (generated) +│ ├── language-metadata.json # Language display names and RTL flags +│ └── redirects.json # URL redirects (server 301s and client meta-refresh) +├── docfx-template.json # Base DocFX configuration template +├── templates/ # DocFX templates +└── _site/ # Generated output + ├── en/ + ├── es/ + └── ... +``` + +# Adding a New Language + +1. Create `localizedContent/{lang}/content/` folder (e.g., `fr/content/`) +2. Add the language entry to `metadata/language-metadata.json` with name and nativeName +3. Add translated `.md` files to the content subdirectory +4. Add a translated `_ui-strings.json` to the content subdirectory (see [Translating UI Strings](#translating-ui-strings) below). If no translation is provided, an automatic fallback will be generated. +5. Run `python build-docs.py --all` to generate configs and build. Language will be added dynamically to language picker. + +> **Note:** English content from `content/` is automatically copied to `localizedContent/en/content/` during build. For other languages, English content is used as fallback for missing translations. This includes `_ui-strings.json` — if no translated version exists, English UI strings are used. + +# Translating UI Strings + +The `_ui-strings.json` file controls the text of site-wide UI elements that are not part of the documentation content itself: the header navigation, header buttons, footer text, and the AI translation warning banner. These strings are applied at runtime by the JavaScript bundle for non-English pages. + +The English source is at `content/_ui-strings.json`. To provide translations for a language, create `localizedContent/{lang}/content/_ui-strings.json` with the same keys and translated values. + +If a key is missing from a language's file, or no `_ui-strings.json` exists at all, the English value is used as fallback. + +## Available Keys + +| Key | English value | Element | +|-----|--------------|---------| +| `aiTranslationWarning` | `This content has been translated by AI...` | Warning banner shown on translated pages | +| `header.nav.pricing` | `Pricing` | Header nav link | +| `header.nav.download` | `Download` | Header nav link | +| `header.nav.learn` | `Learn` | Header nav link | +| `header.nav.resources` | `Resources` | Header nav dropdown toggle | +| `header.nav.blog` | `Blog` | Resources dropdown item | +| `header.nav.newsletter` | `Newsletter` | Resources dropdown item | +| `header.nav.publications` | `Publications` | Resources dropdown item | +| `header.nav.documentation` | `Documentation` | Resources dropdown item | +| `header.nav.supportCommunity` | `Support community` | Resources dropdown item | +| `header.nav.contactUs` | `Contact Us` | Header nav link | +| `header.button1` | `Free trial` | Primary header CTA button | +| `header.button2` | `Main page` | Secondary header button | +| `footer.heading` | `Ready to get started?` | Footer section heading | +| `footer.button1` | `Try Tabular Editor 3 for free` | Footer CTA button | +| `footer.button2` | `Buy Tabular Editor 3` | Footer CTA button | +| `footer.aboutUs` | `About us` | Footer left link | +| `footer.contactUs` | `Contact us` | Footer left link | +| `footer.technicalSupport` | `Technical Support` | Footer left link | +| `footer.privacyPolicy` | `Privacy & Cookie policy` | Footer bottom link | +| `footer.termsConditions` | `Terms & Conditions` | Footer bottom link | +| `footer.licenseTerms` | `License terms` | Footer bottom link | + diff --git a/_site/staticwebapp.config.json b/_site/staticwebapp.config.json index b296322c..5d15b248 100644 --- a/_site/staticwebapp.config.json +++ b/_site/staticwebapp.config.json @@ -1,148 +1 @@ -{ - "routes": [ - { - "route": "/references/release-notes", - "redirect": "/references/release-notes/3_25_5.html", - "statusCode": 302 - }, { - "route": "/te3/other/release-notes", - "redirect": "/references/release-notes/3_25_5.html", - "statusCode": 302 - }, - { - "route": "/privacy-policy.html", - "redirect": "/security/privacy-policy.html", - "statusCode": 301 - }, - { - "route": "/Advanced-Scripting.html", - "redirect": "/how-tos/Advanced-Scripting.html", - "statusCode": 301 - }, - { - "route": "/Best-Practice-Analyzer.html", - "redirect": "/features/Best-Practice-Analyzer.html", - "statusCode": 301 - }, - { - "route": "/Importing-Tables.html", - "redirect": "/how-tos/Importing-Tables.html", - "statusCode": 301 - }, - { - "route": "/tmdl", - "redirect": "/features/tmdl.html", - "statusCode": 301 - }, - { - "route": "/roslyn", - "redirect": "/how-tos/Advanced-Scripting.html#compiling-with-roslyn", - "statusCode": 301 - }, - { - "route": "/eula", - "redirect": "/security/te3-eula.html", - "statusCode": 301 - }, - { - "route": "/tmuo", - "redirect": "/references/user-options.html", - "statusCode": 301 - }, - { - "route": "/user-options.html", - "redirect": "/references/user-options.html", - "statusCode": 301 - }, - { - "route": "/workspace", - "redirect": "/tutorials/workspace-mode.html", - "statusCode": 301 - }, - { - "route": "/Workspace-Database.html", - "redirect": "/tutorials/workspace-mode.html", - "statusCode": 301 - }, - { - "route": "/common/Datasets/direct-lake-dataset.html", - "redirect": "/features/Semantic-Model/direct-lake-sql-model.html", - "statusCode": 301 - }, - { - "route": "/projects/te3/en/latest/editions.html", - "redirect": "/getting-started/editions.html", - "statusCode": 301 - }, - { - "route": "/projects/te3/en/latest/security-privacy.html", - "redirect": "/security/security-privacy.html", - "statusCode": 301 - }, - { - "route": "/projects/te3/en/latest/downloads.html", - "redirect": "/references/downloads.html", - "statusCode": 301 - }, - { - "route": "/other/downloads.html", - "redirect": "/references/downloads.html", - "statusCode": 301 - }, - { - "route": "/te3/downloads.html", - "redirect": "/references/downloads.html", - "statusCode": 301 - }, - { - "route": "/Useful-script-snippets.html", - "redirect": "/features/Useful-script-snippets.html", - "statusCode": 301 - }, - { - "route": "/Command-line-Options.html", - "redirect": "/features/Command-line-Options.html", - "statusCode": 301 - }, - { - "route": "/Power-BI-Desktop-Integration.html", - "redirect": "/getting-started/Power-BI-Desktop-Integration.html", - "statusCode": 301 - }, - { - "route": "/projects/te3/en/latest", - "redirect": "/te3", - "statusCode": 301 - }, - { - "route": "/projects/te3", - "redirect": "/te3", - "statusCode": 301 - }, - { - "route": "/projects/te3/en/latest/getting-started.html", - "redirect": "/getting-started/getting-started.html", - "statusCode": 301 - }, - { - "route": "/Custom-Actions.html", - "redirect": "/tutorials/creating-macros.html", - "statusCode": 301 - }, - { - "route": "/FormatDax.html", - "redirect": "/references/FormatDax.html", - "statusCode": 301 - }, - { - "route": "/te3/logo.svg", - "redirect": "/logo.svg", - "statusCode": 301 - } - ], - "responseOverrides": { - "404": { - "rewrite": "/404.html" - } - } -} +{"routes":[{"route":"/","redirect":"/en/","statusCode":301},{"route":"/index.html","redirect":"/en/","statusCode":301},{"route":"/en/references/release-notes","redirect":"/en/references/release-notes/3_25_5.html","statusCode":302},{"route":"/en/te3/other/release-notes","redirect":"/en/references/release-notes/3_25_5.html","statusCode":302},{"route":"/es/references/release-notes","redirect":"/es/references/release-notes/3_25_5.html","statusCode":302},{"route":"/es/te3/other/release-notes","redirect":"/es/references/release-notes/3_25_5.html","statusCode":302},{"route":"/zh/references/release-notes","redirect":"/zh/references/release-notes/3_25_5.html","statusCode":302},{"route":"/zh/te3/other/release-notes","redirect":"/zh/references/release-notes/3_25_5.html","statusCode":302},{"route":"/references/release-notes","redirect":"/en/references/release-notes/3_25_5.html","statusCode":302},{"route":"/Advanced-Scripting.html","redirect":"/en/how-tos/Advanced-Scripting.html","statusCode":301},{"route":"/Best-Practice-Analyzer.html","redirect":"/en/features/Best-Practice-Analyzer.html","statusCode":301},{"route":"/Command-line-Options.html","redirect":"/en/features/Command-line-Options.html","statusCode":301},{"route":"/Custom-Actions.html","redirect":"/en/tutorials/creating-macros.html","statusCode":301},{"route":"/FormatDax.html","redirect":"/en/references/FormatDax.html","statusCode":301},{"route":"/Importing-Tables.html","redirect":"/en/how-tos/Importing-Tables.html","statusCode":301},{"route":"/Power-BI-Desktop-Integration.html","redirect":"/en/getting-started/Power-BI-Desktop-Integration.html","statusCode":301},{"route":"/Useful-script-snippets.html","redirect":"/en/features/Useful-script-snippets.html","statusCode":301},{"route":"/Workspace-Database.html","redirect":"/en/tutorials/workspace-mode.html","statusCode":301},{"route":"/common/Datasets/direct-lake-dataset.html","redirect":"/en/features/Semantic-Model/direct-lake-sql-model.html","statusCode":301},{"route":"/eula","redirect":"/en/security/te3-eula.html","statusCode":301},{"route":"/onboarding/general-introduction.html","redirect":"/en/getting-started/general-introduction.html","statusCode":301},{"route":"/onboarding/index.html","redirect":"/en/getting-started/index.html","statusCode":301},{"route":"/onboarding/installation.html","redirect":"/en/getting-started/installation.html","statusCode":301},{"route":"/other/downloads.html","redirect":"/en/references/downloads.html","statusCode":301},{"route":"/privacy-policy.html","redirect":"/en/security/privacy-policy.html","statusCode":301},{"route":"/projects/te3","redirect":"/en/","statusCode":301},{"route":"/projects/te3/en/latest","redirect":"/en/","statusCode":301},{"route":"/projects/te3/en/latest/downloads.html","redirect":"/en/references/downloads.html","statusCode":301},{"route":"/projects/te3/en/latest/editions.html","redirect":"/en/getting-started/editions.html","statusCode":301},{"route":"/projects/te3/en/latest/getting-started.html","redirect":"/en/getting-started/getting-started.html","statusCode":301},{"route":"/projects/te3/en/latest/security-privacy.html","redirect":"/en/security/security-privacy.html","statusCode":301},{"route":"/roslyn","redirect":"/en/how-tos/Advanced-Scripting.html#compiling-with-roslyn","statusCode":301},{"route":"/te2/Advanced-Scripting.html","redirect":"/en/how-tos/Advanced-Scripting.html","statusCode":301},{"route":"/te2/Best-Practice-Analyzer.html","redirect":"/en/features/Best-Practice-Analyzer.html","statusCode":301},{"route":"/te2/Getting-Started.html","redirect":"/en/getting-started/Getting-Started-te2.html","statusCode":301},{"route":"/te2/Importing-Tables.html","redirect":"/en/how-tos/Importing-Tables.html","statusCode":301},{"route":"/te2/Power-BI-Desktop-Integration.html","redirect":"/en/getting-started/Power-BI-Desktop-Integration.html","statusCode":301},{"route":"/te2/Useful-script-snippets.html","redirect":"/en/features/Useful-script-snippets.html","statusCode":301},{"route":"/te3/downloads.html","redirect":"/en/references/downloads.html","statusCode":301},{"route":"/te3/editions.html","redirect":"/en/getting-started/editions.html","statusCode":301},{"route":"/te3/features/csharp-scripts.html","redirect":"/en/features/csharp-scripts.html","statusCode":301},{"route":"/te3/features/dax-debugger.html","redirect":"/en/features/dax-debugger.html","statusCode":301},{"route":"/te3/features/dax-editor.html","redirect":"/en/features/dax-editor.html","statusCode":301},{"route":"/te3/features/dax-scripts.html","redirect":"/en/features/dax-scripts.html","statusCode":301},{"route":"/te3/features/tmdl.html","redirect":"/en/features/tmdl.html","statusCode":301},{"route":"/te3/getting-started.html","redirect":"/en/getting-started/getting-started.html","statusCode":301},{"route":"/te3/index.html","redirect":"/en/troubleshooting/licensing-activation.html","statusCode":301},{"route":"/te3/logo.svg","redirect":"/en/logo.svg","statusCode":301},{"route":"/te3/other/downloads.html","redirect":"/en/references/downloads.html","statusCode":301},{"route":"/te3/other/release-history.html","redirect":"/en/references/release-history.html","statusCode":301},{"route":"/te3/tutorials/workspace-mode.html","redirect":"/en/tutorials/workspace-mode.html","statusCode":301},{"route":"/tmdl","redirect":"/en/features/tmdl.html","statusCode":301},{"route":"/tmuo","redirect":"/en/references/user-options.html","statusCode":301},{"route":"/user-options.html","redirect":"/en/references/user-options.html","statusCode":301},{"route":"/workspace","redirect":"/en/tutorials/workspace-mode.html","statusCode":301}],"responseOverrides":{"404":{"rewrite":"/404.html"}}} \ No newline at end of file diff --git a/build-docs.py b/build-docs.py new file mode 100644 index 00000000..6335efdd --- /dev/null +++ b/build-docs.py @@ -0,0 +1,341 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Unified documentation build script for multi-language support. + +Usage: + python build-docs.py # Build all languages (default) + python build-docs.py --all # Build all languages + python build-docs.py --lang en # Build English only + python build-docs.py --lang es zh # Build specific languages + python build-docs.py --list # List available languages + python build-docs.py --serve # Build English and serve locally + +Options: + --all Build all available languages + --lang LANGS Build specific language(s) (space-separated) + --list List available languages and exit + --serve Build and serve locally (English only, for development) + --skip-gen Skip running gen_redirects.py (use existing configs) + --no-api-copy Skip copying API docs to localized sites +""" + +import argparse +import json +import os +import shutil +import subprocess +import sys +from pathlib import Path + + +def run_command(cmd: list[str], description: str, check: bool = True) -> int: + """Run a command and return exit code.""" + print(f"\n{'='*60}") + print(f" {description}") + print(f"{'='*60}") + print(f"Running: {' '.join(cmd)}\n") + + result = subprocess.run(cmd, shell=(os.name == 'nt')) + + if check and result.returncode != 0: + print(f"Error: Command failed with exit code {result.returncode}") + return result.returncode + + return result.returncode + + +def get_available_languages() -> list[str]: + """Get list of available languages from metadata/languages.json or scan localizedContent/.""" + manifest_path = Path("metadata/languages.json") + + if manifest_path.exists(): + with open(manifest_path) as f: + data = json.load(f) + # Handle both simple array and rich metadata formats + languages = data.get("languages", []) + if languages and isinstance(languages[0], dict): + return [lang["code"] for lang in languages] + return languages + + # Fallback: scan localizedContent/ directly + localized_dir = Path("localizedContent") + if not localized_dir.exists(): + return [] + + return sorted([ + d.name for d in localized_dir.iterdir() + if d.is_dir() and len(d.name) <= 5 + ]) + + +def prepare_localized_content(lang: str) -> int: + """Run sync-localized-content.py for a language. + + For English: copies all source content + For other languages: syncs with translation tracking, + falls back to English for outdated/missing files + """ + if lang == "en": + description = "Syncing English content from source" + else: + description = f"Syncing {lang} content (fallback to English for outdated)" + + return run_command( + [sys.executable, "build_scripts/sync-localized-content.py", "--sync", lang], + description + ) + + +def build_language(lang: str) -> int: + """Build documentation for a specific language.""" + config_path = f"localizedContent/{lang}/docfx.json" + + if not os.path.exists(config_path): + print(f"Error: Config file not found: {config_path}") + print("Run 'python gen_redirects.py' first to generate configs.") + return 1 + + # Prepare content (copy from source for en, or fallbacks for other langs) + result = prepare_localized_content(lang) + if result != 0: + return result + + # Build the documentation + return run_command( + ["docfx", config_path], + f"Building {lang} documentation" + ) + + +def copy_languages_manifest() -> int: + """Copy languages.json to _site/ root for runtime access.""" + manifest_src = Path("metadata/languages.json") + manifest_dest = Path("_site/languages.json") + + if not manifest_src.exists(): + print("Warning: languages.json not found, skipping copy") + return 0 + + # Ensure _site directory exists + manifest_dest.parent.mkdir(parents=True, exist_ok=True) + + shutil.copy(manifest_src, manifest_dest) + print(f"Copied languages.json to _site/") + return 0 + + +def copy_404_to_root() -> int: + """Copy 404.html from English site to _site/ root for SWA fallback.""" + src_404 = Path("_site/en/404.html") + dest_404 = Path("_site/404.html") + + if not src_404.exists(): + print("Warning: _site/en/404.html not found, skipping 404 copy") + return 0 + + shutil.copy(src_404, dest_404) + print(f"Copied 404.html to _site/ root") + return 0 + + +def copy_index_to_root() -> int: + """Copy index.html redirect from content to _site/ root for SWA validation.""" + src_index = Path("content/index.html") + dest_index = Path("_site/index.html") + + if not src_index.exists(): + print("Warning: content/index.html not found, skipping index copy") + return 0 + + shutil.copy(src_index, dest_index) + print(f"Copied index.html to _site/ root") + return 0 + + +def copy_api_docs(languages: list[str]) -> int: + """Copy API docs from English to localized sites.""" + en_api = Path("_site/en/api") + + if not en_api.exists(): + print("Warning: English API docs not found, skipping API copy") + return 0 + + print(f"\n{'='*60}") + print(" Copying API docs to localized sites") + print(f"{'='*60}") + + for lang in languages: + dest = Path(f"_site/{lang}/api") + if dest.exists(): + shutil.rmtree(dest) + shutil.copytree(en_api, dest) + print(f" Copied API docs to _site/{lang}/api") + + return 0 + + +def fix_xref_in_api() -> int: + """Fix shared xref links in API HTML files.""" + api_dir = Path("_site/en/api") + + if not api_dir.exists(): + return 0 + + print(f"\n{'='*60}") + print(" Fixing xref links in API docs") + print(f"{'='*60}") + + count = 0 + for html_file in api_dir.rglob("*.html"): + content = html_file.read_text(encoding="utf-8") + if 'Shared' in content: + content = content.replace( + 'Shared', + 'Shared' + ) + html_file.write_text(content, encoding="utf-8") + count += 1 + + print(f" Fixed {count} file(s)") + return 0 + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Build documentation for one or more languages", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=__doc__ + ) + parser.add_argument("--all", action="store_true", help="Build all languages") + parser.add_argument("--lang", nargs="+", help="Build specific language(s)") + parser.add_argument("--list", action="store_true", help="List available languages") + parser.add_argument("--serve", action="store_true", help="Build English and serve locally") + parser.add_argument("--skip-gen", action="store_true", help="Skip gen_redirects.py") + parser.add_argument("--no-api-copy", action="store_true", help="Skip copying API docs") + + args = parser.parse_args() + + # List available languages + if args.list: + langs = get_available_languages() + print("Available languages:") + for lang in langs: + suffix = " (default)" if lang == "en" else "" + print(f" {lang}{suffix}") + return 0 + + # Run gen_redirects.py first (unless skipped) + if not args.skip_gen: + result = run_command( + [sys.executable, "build_scripts/gen_redirects.py"], + "Generating docfx configurations" + ) + if result != 0: + return result + + # Generate languages manifest + result = run_command( + [sys.executable, "build_scripts/gen_languages.py"], + "Generating languages manifest" + ) + if result != 0: + return result + + # Determine which languages to build + available_langs = get_available_languages() + + if args.serve: + # Build English only and serve + result = build_language("en") + if result != 0: + return result + + fix_xref_in_api() + copy_languages_manifest() + + # Also copy to _site/en/ for local serving (docfx serve serves from en/) + manifest_src = Path("metadata/languages.json") + manifest_dest = Path("_site/en/languages.json") + if manifest_src.exists(): + shutil.copy(manifest_src, manifest_dest) + print("Copied languages.json to _site/en/") + + return run_command( + ["docfx", "serve", "_site/en"], + "Serving documentation locally" + ) + + if args.lang: + # Build specific languages + build_langs = args.lang + + # Validate languages + for lang in build_langs: + if lang not in available_langs: + print(f"Error: Language '{lang}' not found") + print(f"Available: {', '.join(available_langs)}") + return 1 + else: + # Build all languages (default behavior) + build_langs = available_langs + + # Ensure English is built first (needed for API docs) + if "en" in build_langs: + build_langs = ["en"] + [l for l in build_langs if l != "en"] + + # Build all requested languages + for lang in build_langs: + result = build_language(lang) + if result != 0: + return result + + if lang == "en": + fix_xref_in_api() + + # Copy API docs to localized sites (non-English) + non_en_langs = [l for l in build_langs if l != "en"] + if non_en_langs and not args.no_api_copy and "en" in build_langs: + copy_api_docs(non_en_langs) + + # Copy languages manifest to _site root + copy_languages_manifest() + + # Copy 404.html to site root for SWA fallback + copy_404_to_root() + + # Copy index.html to site root for SWA validation + copy_index_to_root() + + # Inject SEO tags (hreflang, canonical) into HTML files for built languages + for lang in build_langs: + run_command( + [sys.executable, "build_scripts/inject_seo_tags.py", "--lang", lang], + f"Injecting SEO tags for {lang}" + ) + + # Generate staticwebapp.config.json for Azure SWA routing + run_command( + [sys.executable, "build_scripts/gen_staticwebapp_config.py"], + "Generating staticwebapp.config.json" + ) + + print(f"\n{'='*60}") + print(" Build complete!") + print(f"{'='*60}") + print(f"Output: _site/") + for lang in build_langs: + print(f" - {lang}/") + + return 0 + + +if __name__ == "__main__": + try: + sys.exit(main()) + except KeyboardInterrupt: + print("\nBuild interrupted.") + sys.exit(1) + except Exception as e: + print(f"Error: {e}") + sys.exit(1) diff --git a/build_scripts/config_loader.py b/build_scripts/config_loader.py new file mode 100644 index 00000000..ec69f3da --- /dev/null +++ b/build_scripts/config_loader.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Shared configuration loader for build scripts. + +Loads build-config.json, redirects.json, and language-metadata.json from metadata/. +Provides consistent access to directories, files, and settings across all scripts. +""" + +import hashlib +import json +from pathlib import Path +from typing import Any + + +# Default paths (relative to project root) +BUILD_CONFIG_PATH = "metadata/build-config.json" +REDIRECTS_CONFIG_PATH = "metadata/redirects.json" +LANGUAGE_METADATA_PATH = "metadata/language-metadata.json" + +# Cached configs +_build_config: dict | None = None +_redirects_config: dict | None = None + + +def load_build_config(config_path: Path | str | None = None) -> dict[str, Any]: + """Load the build configuration from JSON file. + + Returns the full config dict with the following keys: + - contentDirectories: directories with translatable content + - sharedDirectories: assets/api that aren't translated + - rootFiles: root-level files (index.md, toc.yml, etc.) + """ + global _build_config + + if _build_config is not None and config_path is None: + return _build_config + + if config_path is None: + config_path = Path(BUILD_CONFIG_PATH) + else: + config_path = Path(config_path) + + if not config_path.exists(): + raise FileNotFoundError(f"Build config not found: {config_path}") + + with open(config_path, encoding="utf-8") as f: + config = json.load(f) + + if config_path == Path(BUILD_CONFIG_PATH): + _build_config = config + + return config + + +def load_redirects_config(config_path: Path | str | None = None) -> dict[str, Any]: + """Load the redirects configuration from JSON file. + + Returns the full config dict with the following keys: + - serverRedirects: 301 redirects handled by Azure SWA + - clientRedirects: meta-refresh HTML redirects + """ + global _redirects_config + + if _redirects_config is not None and config_path is None: + return _redirects_config + + if config_path is None: + config_path = Path(REDIRECTS_CONFIG_PATH) + else: + config_path = Path(config_path) + + if not config_path.exists(): + raise FileNotFoundError(f"Redirects config not found: {config_path}") + + with open(config_path, encoding="utf-8") as f: + config = json.load(f) + + if config_path == Path(REDIRECTS_CONFIG_PATH): + _redirects_config = config + + return config + + +def get_content_directories(config: dict | None = None) -> list[str]: + """Get list of content directories that should be localized.""" + if config is None: + config = load_build_config() + return config.get("contentDirectories", {}).get("directories", []) + + +def get_shared_directories(config: dict | None = None) -> list[str]: + """Get list of shared directories (assets, api) that aren't translated.""" + if config is None: + config = load_build_config() + return config.get("sharedDirectories", {}).get("directories", []) + + +def get_root_files(config: dict | None = None) -> list[str]: + """Get list of root-level files to copy/localize.""" + if config is None: + config = load_build_config() + return config.get("rootFiles", {}).get("files", []) + + +def get_legacy_shortcuts(config: dict | None = None) -> dict[str, str]: + """Get legacy shortcut redirects (old URL → new URL). + + These are server-side 301 redirects for high-priority/vanity URLs. + Filters out keys starting with '_' which are used for comments. + """ + if config is None: + config = load_redirects_config() + redirects = config.get("serverRedirects", {}).get("redirects", {}) + # Filter out comment keys + return {k: v for k, v in redirects.items() if not k.startswith("_")} + + +def get_client_redirects(config: dict | None = None) -> dict[str, str]: + """Get client-side redirects for legacy content URLs. + + These are meta-refresh HTML redirects for content migration. + Keys are paths like '/te2/Getting-Started.html', values are target paths. + Filters out keys starting with '_' which are used for comments. + """ + if config is None: + config = load_redirects_config() + redirects = config.get("clientRedirects", {}).get("redirects", {}) + # Filter out comment keys + return {k: v for k, v in redirects.items() if not k.startswith("_")} + + +def get_all_redirects(config: dict | None = None) -> dict[str, str]: + """Get all redirects (both server and client) merged together. + + Returns a combined dict of all redirects. Server redirects take precedence + if there are any duplicates (though there shouldn't be). + """ + if config is None: + config = load_redirects_config() + + all_redirects = {} + all_redirects.update(get_client_redirects(config)) + all_redirects.update(get_legacy_shortcuts(config)) + return all_redirects + + +def get_default_language(config: dict | None = None) -> str: + """Get the default language code.""" + if config is None: + config = load_build_config() + return config.get("defaultLanguage", "en") + + +def compute_file_hash(file_path: Path | str) -> str: + """Compute SHA256 hash of a file's contents. + + Returns a hex string prefixed with 'sha256:' for clarity. + Returns empty string if file doesn't exist. + """ + file_path = Path(file_path) + + if not file_path.exists(): + return "" + + sha256_hash = hashlib.sha256() + with open(file_path, "rb") as f: + # Read in chunks for large files + for chunk in iter(lambda: f.read(8192), b""): + sha256_hash.update(chunk) + + return f"sha256:{sha256_hash.hexdigest()}" + + +def get_all_content_files(content_dir: Path | str) -> list[Path]: + """Get all content files (markdown, yaml) from a content directory. + + Returns list of paths relative to the content directory. + """ + content_dir = Path(content_dir) + + if not content_dir.exists(): + return [] + + files = [] + for pattern in ["**/*.md", "**/*.yml", "**/*.yaml"]: + files.extend(content_dir.glob(pattern)) + + return sorted(files) diff --git a/build_scripts/gen_languages.py b/build_scripts/gen_languages.py new file mode 100644 index 00000000..a39433fc --- /dev/null +++ b/build_scripts/gen_languages.py @@ -0,0 +1,212 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Language manifest generator for multi-language documentation. + +Scans localizedContent/ directory and generates languages.json manifest +with rich metadata for each available language. + +Language metadata is loaded from metadata/language-metadata.json. +Unknown languages fall back to using the code as the display name. + +Usage: + python gen_languages.py # Generate to metadata/ + python gen_languages.py --output . # Generate to current directory +""" + +import argparse +import json +import re +from datetime import datetime, timezone +from pathlib import Path + +from config_loader import get_default_language, get_content_directories, get_shared_directories + + +# Default paths +METADATA_FILE = "metadata/language-metadata.json" +DEFAULT_LANGUAGE = get_default_language() + +# Cached metadata (loaded on first use) +_language_metadata: dict | None = None +_default_language: str | None = None + + +def load_language_metadata(metadata_path: Path | None = None) -> tuple[dict, str]: + """Load language metadata from JSON file. + + Returns tuple of (metadata_dict, default_language). + """ + global _language_metadata, _default_language + + if _language_metadata is not None: + return _language_metadata, _default_language or DEFAULT_LANGUAGE + + # Find metadata file + if metadata_path is None: + metadata_path = Path(METADATA_FILE) + + if not metadata_path.exists(): + print(f"Warning: {metadata_path} not found, using built-in defaults") + _language_metadata = { + "en": {"name": "English", "nativeName": "English"} + } + _default_language = DEFAULT_LANGUAGE + return _language_metadata, _default_language + + with open(metadata_path, encoding="utf-8") as f: + data = json.load(f) + + _language_metadata = data.get("languages", {}) + _default_language = data.get("defaultLanguage", DEFAULT_LANGUAGE) + + return _language_metadata, _default_language + + +def get_language_metadata(code: str, metadata: dict | None = None) -> dict: + """Get metadata for a language code, with fallback for unknown languages.""" + code_lower = code.lower() + + if metadata is None: + metadata, _ = load_language_metadata() + + if code_lower in metadata: + result = metadata[code_lower].copy() + else: + # Fallback for unknown languages - use code as name + result = { + "name": code.upper(), + "nativeName": code.upper() + } + + result["code"] = code_lower + return result + + +def scan_localized_content(localized_dir: Path) -> list[str]: + """Scan localizedContent directory for available languages.""" + if not localized_dir.exists(): + return [] + + languages = [] + for item in localized_dir.iterdir(): + if item.is_dir(): + # Check if it looks like a language code (2-5 chars) + name = item.name.lower() + if 2 <= len(name) <= 5 and name.replace("-", "").isalpha(): + # Verify it has content (docfx.json or content folder) + if (item / "docfx.json").exists() or (item / "content").exists(): + languages.append(name) + + return sorted(languages) + + +_LANG_FORMAT_RE = re.compile(r'^[a-z-]+$', re.IGNORECASE) + + +def get_legacy_content_prefixes() -> list[str]: + """Get directory names that match language-code format (2-5 alpha chars). + + Short directory names like 'api' and 'kb' can be confused with language + codes in URLs. The 404 page uses this list to redirect legacy content URLs + (e.g. /api/index.html → /en/api/index.html) instead of treating them as + unsupported language codes. + """ + all_dirs = get_content_directories() + get_shared_directories() + return sorted(d for d in all_dirs if 2 <= len(d) <= 5 and _LANG_FORMAT_RE.match(d)) + + +def generate_manifest(languages: list[str], metadata: dict, default_lang: str) -> dict: + """Generate the languages manifest with rich metadata.""" + lang_list = [] + + for code in languages: + lang_meta = get_language_metadata(code, metadata) + if code == default_lang: + lang_meta["default"] = True + lang_list.append(lang_meta) + + # Ensure default language is first in the list + lang_list.sort(key=lambda x: (not x.get("default", False), x["code"])) + + return { + "languages": lang_list, + "defaultLanguage": default_lang, + "legacyPrefixes": get_legacy_content_prefixes(), + "generated": datetime.now(timezone.utc).isoformat() + } + + +def main(): + parser = argparse.ArgumentParser( + description="Generate languages.json manifest from localizedContent/" + ) + parser.add_argument( + "--output", "-o", + default="metadata", + help="Output directory for languages.json (default: metadata)" + ) + parser.add_argument( + "--localized-dir", "-l", + default="localizedContent", + help="Directory containing localized content (default: localizedContent)" + ) + parser.add_argument( + "--metadata", "-m", + default=METADATA_FILE, + help=f"Path to language metadata JSON (default: {METADATA_FILE})" + ) + parser.add_argument( + "--default", "-d", + help="Override default language code (default: from metadata file)" + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print manifest without writing to file" + ) + + args = parser.parse_args() + + # Load language metadata + metadata, default_from_file = load_language_metadata(Path(args.metadata)) + default_lang = args.default or default_from_file + + print(f"Loaded metadata from: {args.metadata}") + print(f"Default language: {default_lang}") + + # Scan for languages + localized_dir = Path(args.localized_dir) + languages = scan_localized_content(localized_dir) + + if not languages: + print(f"Warning: No languages found in {localized_dir}") + print("Creating manifest with default language only.") + languages = [default_lang] + + print(f"Found languages: {', '.join(languages)}") + + # Generate manifest + manifest = generate_manifest(languages, metadata, default_lang) + + if args.dry_run: + print("\nGenerated manifest (dry run):") + print(json.dumps(manifest, indent=2, ensure_ascii=False)) + return 0 + + # Write manifest + output_dir = Path(args.output) + output_dir.mkdir(parents=True, exist_ok=True) + + output_file = output_dir / "languages.json" + with open(output_file, "w", encoding="utf-8") as f: + json.dump(manifest, f, indent=2, ensure_ascii=False) + + print(f"\nGenerated: {output_file}") + print(f"Languages: {len(manifest['languages'])}") + + return 0 + + +if __name__ == "__main__": + exit(main()) diff --git a/build_scripts/gen_redirects.py b/build_scripts/gen_redirects.py new file mode 100644 index 00000000..16d44dbd --- /dev/null +++ b/build_scripts/gen_redirects.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Generate docfx configuration files and redirects. + +This script: +1. Generates localizedContent/en/docfx.json for English with redirects +2. Scans localizedContent/ for language folders +3. Generates localizedContent/{lang}/docfx.json for each language + +Note: languages.json manifest is generated by gen_languages.py (not this script). + +Usage: python gen_redirects.py +""" + +import copy +import json +import os +import posixpath +import shutil +import sys +import traceback +from typing import Any + +from config_loader import get_client_redirects + + +def get_available_languages() -> list[str]: + """Scan localizedContent/ folder and return list of language codes (excluding 'en').""" + localized_dir = "localizedContent" + if not os.path.exists(localized_dir): + return [] + + languages = [] + for item in os.listdir(localized_dir): + item_path = os.path.join(localized_dir, item) + # Exclude 'en' since it's generated, not stored + if os.path.isdir(item_path) and len(item) <= 5 and item != "en": + languages.append(item) + + return sorted(languages) + + +def generate_localized_config(template: dict, lang: str) -> dict: + """Generate a docfx config for a specific language based on the template. + + Note: Config files are placed in localizedContent/{lang}/docfx.json alongside + a content/ subdirectory. This allows ~/content/... paths in markdown to resolve + correctly (~ = config location = localizedContent/{lang}/). + + Structure: + localizedContent/{lang}/ + docfx.json <- generated config + content/ + features/ <- localized/fallback content + assets/images/ <- shared resources + ... + """ + config = copy.deepcopy(template) + + # Remove metadata section (API generation) - localized sites use copied API docs + if "metadata" in config: + del config["metadata"] + + build = config["build"] + + # Since docfx.json is in localizedContent/{lang}/ and content is in + # localizedContent/{lang}/content/, paths stay the same as the English template + # No path modifications needed for content entries! + + # Resource paths: keep local content/ paths, but for any fallback to main + # content folder, we'd use ../../content/ (but we copy everything locally now) + + # Set output destination to language subfolder (relative to project root) + # From localizedContent/{lang}/, we go up twice to reach project root + build["dest"] = f"../../_site/{lang}" + + # Update template paths - need to go up two levels to reach project root + if "template" in build: + new_templates = [] + for t in build["template"]: + if t == "default": + new_templates.append(t) + else: + # templates/tabulareditor -> ../../templates/tabulareditor + new_templates.append(f"../../{t}") + build["template"] = new_templates + + return config + + +def generate_redirects_config(template: dict, redirects_data: dict[str, str], en_content_dir: str) -> dict: + """Generate English docfx.json with redirects added. + + Args: + template: Base docfx config template + redirects_data: Dict of redirect paths to target URLs + en_content_dir: Directory for English content (localizedContent/en/content/) + """ + config = copy.deepcopy(template) + + # Fix metadata paths (API generation) - need to go up two levels to reach project root + # DocFX doesn't support ../ in file globs, so we use src to set the base directory + if "metadata" in config: + for meta in config["metadata"]: + # Fix src paths - move ../ to src, keep files as relative globs + if "src" in meta: + new_src = [] + for src in meta["src"]: + if "files" in src: + # Transform files like "content/_apiSource/*.dll" to use src + new_files = [] + for f in src["files"]: + # Extract directory and file pattern + # e.g., "content/_apiSource/*.dll" -> src="../..", files="content/_apiSource/*.dll" + new_files.append(f) + new_src.append({ + "src": "../..", + "files": new_files + }) + else: + new_src.append(src) + meta["src"] = new_src + # Fix dest path + if "dest" in meta: + meta["dest"] = f"../../{meta['dest']}" + # Fix filter path + if "filter" in meta: + meta["filter"] = f"../../{meta['filter']}" + + dirs = dict[str, list[str]]() + + for key, value in redirects_data.items(): + # Redirect paths are relative to content/, convert to en_content_dir + # e.g., content/old-page.md -> localizedContent/en/content/old-page.md + dest_path = key.replace("content/", f"{en_content_dir}/", 1) + dir_path = posixpath.dirname(dest_path) + ext = posixpath.splitext(key)[1] + + if dir_path in dirs: + dirs[dir_path].append(dest_path) + else: + dirs[dir_path] = [dest_path] + + os.makedirs(dir_path, exist_ok=True) + + if ext == ".md": + content_list: list[Any] = config["build"]["content"] + content_list.append({"files": posixpath.relpath(key, "content"), "src": "content"}) + with open(dest_path, mode="w", encoding="utf-8") as f: + f.write(f"""--- +redirect_url: {value} +--- +""") + elif ext == ".html": + resource: list[Any] = config["build"]["resource"] + resource.append({"files": posixpath.relpath(key, "content"), "src": "content"}) + with open(dest_path, mode="w", encoding="utf-8") as f: + f.write(f""" + +
+ + + + + +""") + else: + print("Unknown file type:", key, file=sys.stderr) + + # Set English output destination (relative to localizedContent/en/) + config["build"]["dest"] = "../../_site/en" + + # Update template paths - need to go up two levels to reach project root + if "template" in config["build"]: + new_templates = [] + for t in config["build"]["template"]: + if t == "default": + new_templates.append(t) + else: + new_templates.append(f"../../{t}") + config["build"]["template"] = new_templates + + return config + + +def main(args: list[str]) -> int: + config_input_path = "docfx-template.json" + localized_content_dir = "localizedContent" + + # Load template + with open(config_input_path) as f: + template = json.load(f) + + # Load redirects from metadata/redirects.json + # Keys are in format '/path.html', need to convert to 'content/path.html' + client_redirects = get_client_redirects() + redirects_data: dict[str, str] = {} + for src, target in client_redirects.items(): + # Convert '/path.html' to 'content/path.html' + content_key = 'content' + src if src.startswith('/') else 'content/' + src + redirects_data[content_key] = target + + print(f"Loaded {len(redirects_data)} client redirects from metadata/redirects.json") + + # Create English directory + en_dir = os.path.join(localized_content_dir, "en") + en_content_dir = os.path.join(en_dir, "content") + os.makedirs(en_content_dir, exist_ok=True) + + # Generate English config with redirects in localizedContent/en/ + en_config_path = os.path.join(en_dir, "docfx.json") + print(f"Generating {en_config_path} (English)...") + english_config = generate_redirects_config(template, redirects_data, en_content_dir) + with open(en_config_path, "w") as f: + json.dump(english_config, f, indent=4) + + # Get available languages from localizedContent/ (excludes 'en') + languages = get_available_languages() + all_languages = ["en"] + languages + print(f"Found {len(all_languages)} language(s): {', '.join(all_languages)}") + + # Generate config for each non-English language + for lang in languages: + lang_dir = os.path.join(localized_content_dir, lang) + os.makedirs(lang_dir, exist_ok=True) + + config_path = os.path.join(lang_dir, "docfx.json") + print(f"Generating {config_path}...") + + localized_config = generate_localized_config(template, lang) + with open(config_path, "w") as f: + json.dump(localized_config, f, indent=4) + + # Note: languages.json manifest is generated by gen_languages.py + # which provides rich metadata (display names, native names, rtl, etc.) + + print("Done!") + return 0 + + +if __name__ == "__main__": + try: + sys.exit(main(sys.argv[1:])) + except Exception as ex: + traceback.print_exception(ex, file=sys.stderr) + sys.exit(1) diff --git a/build_scripts/gen_staticwebapp_config.py b/build_scripts/gen_staticwebapp_config.py new file mode 100644 index 00000000..ab3367d3 --- /dev/null +++ b/build_scripts/gen_staticwebapp_config.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Generate staticwebapp.config.json for Azure Static Web Apps. + +This script creates server-side redirects for: +1. Root URLs (/, /index.html) → /en/ (301) +2. Release notes aliases → /en/references/release-notes/{latest}.html (302, auto-detected) +3. Legacy shortcut URLs (/tmdl, /roslyn, etc.) → /en/... (301) + +Note: Legacy directory wildcards (/features/*, etc.) are NOT handled here. +They fall through to 404.html which performs client-side meta-refresh redirects. + +Usage: + python gen_staticwebapp_config.py # Generate config + python gen_staticwebapp_config.py --dry-run # Preview without writing + python gen_staticwebapp_config.py --output custom/ # Custom output path +""" + +import argparse +import json +import re +from pathlib import Path +from typing import Any + +from config_loader import get_legacy_shortcuts, get_default_language + + +# Load from centralized config +LEGACY_SHORTCUTS = get_legacy_shortcuts() +DEFAULT_LANGUAGE = get_default_language() + + +def find_latest_release_notes(site_dir: str = "_site", default_lang: str = "en") -> str | None: + """Find the filename of the latest versioned release notes in the built site. + + Scans {site_dir}/{default_lang}/references/release-notes/ for files matching + the pattern {major}_{minor}_{patch}.html, sorts them by semantic version, + and returns the filename of the newest one (e.g. '3_25_5.html'). + Returns None if the directory doesn't exist or contains no versioned files. + """ + release_notes_dir = Path(site_dir) / default_lang / "references" / "release-notes" + + if not release_notes_dir.exists(): + return None + + version_pattern = re.compile(r"^(\d+)_(\d+)_(\d+)\.html$") + versioned: list[tuple[tuple[int, int, int], str]] = [] + + for html_file in release_notes_dir.glob("*.html"): + m = version_pattern.match(html_file.name) + if m: + version = (int(m.group(1)), int(m.group(2)), int(m.group(3))) + versioned.append((version, html_file.name)) + + if not versioned: + return None + + versioned.sort(key=lambda x: x[0], reverse=True) + return versioned[0][1] + + +def generate_config(languages: list[str], default_lang: str | None = None, site_dir: str = "_site") -> dict[str, Any]: + """Generate the staticwebapp.config.json content.""" + if default_lang is None: + default_lang = DEFAULT_LANGUAGE + routes: list[dict[str, Any]] = [] + + # Resolve the latest release notes file, fall back to release-history.html + latest_rn = find_latest_release_notes(site_dir, default_lang) + if latest_rn: + rn_rel_path = f"references/release-notes/{latest_rn}" + else: + rn_rel_path = "references/release-history.html" + + # 1. Root redirects (301 for SEO) + routes.append({ + "route": "/", + "redirect": f"/{default_lang}/", + "statusCode": 301 + }) + routes.append({ + "route": "/index.html", + "redirect": f"/{default_lang}/", + "statusCode": 301 + }) + + # 2. Release notes special handling (302 - dynamic target) + # These point to the latest release notes which changes over time + # Generate explicit routes per language since Azure SWA doesn't support segment capture + for lang in languages: + routes.append({ + "route": f"/{lang}/references/release-notes", + "redirect": f"/{lang}/{rn_rel_path}", + "statusCode": 302 + }) + routes.append({ + "route": f"/{lang}/te3/other/release-notes", + "redirect": f"/{lang}/{rn_rel_path}", + "statusCode": 302 + }) + # Also handle non-prefixed paths + routes.append({ + "route": "/references/release-notes", + "redirect": f"/{default_lang}/{rn_rel_path}", + "statusCode": 302 + }) + + # 3. Legacy shortcut redirects (301) + for old_path, new_path in sorted(LEGACY_SHORTCUTS.items()): + routes.append({ + "route": old_path, + "redirect": new_path, + "statusCode": 301 + }) + + # 4. Directory wildcard migration (fallback to 404.html) + # Note: Azure SWA doesn't support wildcard capture in redirect targets. + # Non-prefixed URLs like /features/x.html will fall through to 404.html, + # which uses redirects.json to perform meta-refresh redirects. + # This is SEO-acceptable as a 302 + client redirect for legacy URLs. + # + # For high-traffic legacy pages, add explicit routes to legacyShortcuts + # in build-config.json for proper 301 server-side redirects. + + # Build final config + # Note: 404.html is copied to site root during build for language-aware fallback + config = { + "routes": routes, + "responseOverrides": { + "404": { + "rewrite": "/404.html" + } + } + } + + return config + + +def load_languages() -> list[str]: + """Load supported languages from languages.json manifest.""" + manifest_paths = [ + Path("metadata/languages.json"), + Path("_site/languages.json"), + ] + + for path in manifest_paths: + if path.exists(): + with open(path) as f: + data = json.load(f) + languages = data.get("languages", []) + # Handle both simple array and rich metadata formats + if languages and isinstance(languages[0], dict): + return [lang["code"] for lang in languages] + return languages + + # Fallback + print("Warning: languages.json not found, using default [en]") + return ["en"] + + +def main(): + parser = argparse.ArgumentParser( + description="Generate staticwebapp.config.json for Azure Static Web Apps" + ) + parser.add_argument( + "--output", "-o", + default="_site", + help="Output directory (default: _site)" + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Print config without writing to file" + ) + parser.add_argument( + "--default-lang", "-d", + default=DEFAULT_LANGUAGE, + help=f"Default language for fallback (default: {DEFAULT_LANGUAGE})" + ) + + args = parser.parse_args() + + # Load languages + languages = load_languages() + print(f"Languages: {', '.join(languages)}") + print(f"Default: {args.default_lang}") + + # Generate config + config = generate_config(languages, args.default_lang, args.output) + + latest_rn = find_latest_release_notes(args.output, args.default_lang) + rn_target = f"references/release-notes/{latest_rn}" if latest_rn else "references/release-history.html (fallback)" + release_notes_count = len(languages) * 2 + 1 + print(f"\nGenerated {len(config['routes'])} routes:") + print(f" - Root redirects: 2") + print(f" - Release notes: {release_notes_count} -> {rn_target}") + print(f" - Legacy shortcuts: {len(LEGACY_SHORTCUTS)}") + + if args.dry_run: + print("\n--- DRY RUN: Config preview ---") + print(json.dumps(config, indent=2)) + return 0 + + # Write config + output_dir = Path(args.output) + output_dir.mkdir(parents=True, exist_ok=True) + + output_file = output_dir / "staticwebapp.config.json" + with open(output_file, "w", encoding="utf-8") as f: + json.dump(config, f, separators=(",", ":")) + + print(f"\nGenerated: {output_file}") + return 0 + + +if __name__ == "__main__": + exit(main()) diff --git a/build_scripts/inject_seo_tags.py b/build_scripts/inject_seo_tags.py new file mode 100644 index 00000000..335c6379 --- /dev/null +++ b/build_scripts/inject_seo_tags.py @@ -0,0 +1,261 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Inject SEO tags (hreflang, canonical) into built HTML files. + +This script runs after docfx build to add: +1. Canonical URLs - prevents duplicate content penalties +2. hreflang tags - tells search engines about language alternatives +3. x-default hreflang - indicates the default language version + +Usage: + python inject_seo_tags.py # Process _site/ + python inject_seo_tags.py --base-url https://... # Custom base URL + python inject_seo_tags.py --dry-run # Preview without changes +""" + +import argparse +import json +import re +from pathlib import Path + +from config_loader import get_default_language + + +# Default base URL for the documentation site +DEFAULT_BASE_URL = "https://docs.tabulareditor.com" + +# Default language (used for x-default hreflang) - loaded from config +DEFAULT_LANGUAGE = get_default_language() + + +def load_languages(site_dir: Path) -> list[dict]: + """Load languages from the manifest file.""" + manifest_path = site_dir / "languages.json" + + if not manifest_path.exists(): + # Fallback: try metadata/languages.json (generated before docfx build) + manifest_path = Path("metadata/languages.json") + + if not manifest_path.exists(): + print(f"Warning: languages.json not found in {site_dir} or metadata/, using default [en]") + return [{"code": "en", "name": "English", "nativeName": "English", "default": True}] + + with open(manifest_path, encoding="utf-8") as f: + data = json.load(f) + + languages = data.get("languages", []) + + # Handle both simple array and rich metadata formats + result = [] + for lang in languages: + if isinstance(lang, str): + result.append({"code": lang}) + else: + result.append(lang) + + return result + + +def get_page_path(html_file: Path, site_dir: Path, lang: str) -> str: + """Get the page path relative to the language folder. + + Example: _site/en/features/overview.html -> features/overview.html + """ + rel_path = html_file.relative_to(site_dir / lang) + return str(rel_path).replace("\\", "/") + + +def generate_seo_tags( + page_path: str, + current_lang: str, + languages: list[dict], + base_url: str, + default_lang: str = DEFAULT_LANGUAGE +) -> str: + """Generate canonical and hreflang link tags.""" + lines = [] + + # Canonical URL - always points to the current page + canonical_url = f"{base_url}/{current_lang}/{page_path}" + lines.append(f' ') + + # hreflang tags for each language + for lang in languages: + code = lang.get("code", lang) if isinstance(lang, dict) else lang + lang_url = f"{base_url}/{code}/{page_path}" + lines.append(f' ') + + # x-default points to the default language version + default_url = f"{base_url}/{default_lang}/{page_path}" + lines.append(f' ') + + return "\n".join(lines) + + +def inject_tags_into_html(html_content: str, seo_tags: str) -> str: + """Inject SEO tags into HTML content after the opening tag.""" + # Check if tags already exist (avoid duplicate injection) + if 'rel="canonical"' in html_content: + return html_content + + # Find the tag and insert after it + # Match or + head_pattern = re.compile(r'(]*>)', re.IGNORECASE) + match = head_pattern.search(html_content) + + if match: + insert_pos = match.end() + return html_content[:insert_pos] + "\n" + seo_tags + html_content[insert_pos:] + + # Fallback: if no found, return unchanged + print("Warning: No tag found") + return html_content + + +def process_html_file( + html_file: Path, + site_dir: Path, + lang: str, + languages: list[dict], + base_url: str, + default_lang: str, + dry_run: bool = False +) -> bool: + """Process a single HTML file, injecting SEO tags. + + Returns True if file was modified, False otherwise. + """ + try: + page_path = get_page_path(html_file, site_dir, lang) + seo_tags = generate_seo_tags(page_path, lang, languages, base_url, default_lang) + + with open(html_file, encoding="utf-8") as f: + content = f.read() + + # Skip if already has canonical (avoid duplicate processing) + if 'rel="canonical"' in content: + return False + + # Skip HTML fragments without tag (e.g., partial templates) + if ' int: + """Process all HTML files in a language folder. + + Returns count of files modified. + """ + lang_dir = site_dir / lang + + if not lang_dir.exists(): + print(f"Warning: Language folder {lang_dir} does not exist") + return 0 + + modified_count = 0 + + for html_file in lang_dir.rglob("*.html"): + # Skip toc.html files - they're navigation fragments, not full pages + if html_file.name == "toc.html": + continue + if process_html_file(html_file, site_dir, lang, languages, base_url, default_lang, dry_run): + modified_count += 1 + + return modified_count + + +def main(): + parser = argparse.ArgumentParser( + description="Inject SEO tags (hreflang, canonical) into HTML files" + ) + parser.add_argument( + "--site-dir", "-s", + default="_site", + help="Site output directory (default: _site)" + ) + parser.add_argument( + "--base-url", "-b", + default=DEFAULT_BASE_URL, + help=f"Base URL for the site (default: {DEFAULT_BASE_URL})" + ) + parser.add_argument( + "--default-lang", "-d", + default=DEFAULT_LANGUAGE, + help=f"Default language for x-default (default: {DEFAULT_LANGUAGE})" + ) + parser.add_argument( + "--lang", "-l", + help="Process only this language (default: all)" + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Preview changes without modifying files" + ) + + args = parser.parse_args() + + site_dir = Path(args.site_dir) + + if not site_dir.exists(): + print(f"Error: Site directory {site_dir} does not exist") + return 1 + + # Load languages + languages = load_languages(site_dir) + lang_codes = [l.get("code", l) if isinstance(l, dict) else l for l in languages] + + print(f"Base URL: {args.base_url}") + print(f"Languages: {', '.join(lang_codes)}") + print(f"Default: {args.default_lang}") + + if args.dry_run: + print("\n--- DRY RUN MODE ---\n") + + total_modified = 0 + + # Process specified language or all languages + langs_to_process = [args.lang] if args.lang else lang_codes + + for lang in langs_to_process: + print(f"\nProcessing {lang}/...") + count = process_language_folder( + site_dir, + lang, + languages, + args.base_url, + args.default_lang, + args.dry_run + ) + print(f" Modified: {count} files") + total_modified += count + + print(f"\nTotal: {total_modified} files {'would be ' if args.dry_run else ''}modified") + return 0 + + +if __name__ == "__main__": + exit(main()) diff --git a/build_scripts/sync-localized-content.py b/build_scripts/sync-localized-content.py new file mode 100644 index 00000000..1436513c --- /dev/null +++ b/build_scripts/sync-localized-content.py @@ -0,0 +1,534 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Sync localized content with translation status tracking. + +This script manages the synchronization between source content (English) +and localized content, tracking which translations are current vs outdated. + +Features: +- Tracks source file hashes to detect changes +- Falls back to English for outdated/missing translations +- Provides status reports on translation coverage + +Usage: + python sync-localized-content.py --status # Show all languages + python sync-localized-content.py --status es # Show Spanish details + python sync-localized-content.py --sync es # Sync Spanish content + python sync-localized-content.py --init es # Initialize tracking + python sync-localized-content.py --mark-translated es # Mark all as translated + python sync-localized-content.py --json # JSON output for CI +""" + +import argparse +import json +import os +import shutil +import sys +from datetime import datetime, timezone +from pathlib import Path +from typing import Any + +from config_loader import ( + compute_file_hash, + get_content_directories, + get_shared_directories, + get_root_files, + get_default_language, +) + + +# Status values +STATUS_TRANSLATED = "translated" +STATUS_OUTDATED = "outdated" +STATUS_UNTRANSLATED = "untranslated" + +# Paths +CONTENT_DIR = Path("content") +LOCALIZED_DIR = Path("localizedContent") +STATUS_FILENAME = ".translation-status.json" + + +def load_translation_status(lang: str) -> dict[str, Any]: + """Load the translation status file for a language.""" + status_path = LOCALIZED_DIR / lang / STATUS_FILENAME + + if not status_path.exists(): + return { + "language": lang, + "lastSync": None, + "sourceBaseline": str(CONTENT_DIR), + "files": {}, + "summary": { + "translated": 0, + "outdated": 0, + "untranslated": 0, + "total": 0, + "completionPercent": 0 + } + } + + with open(status_path, encoding="utf-8") as f: + return json.load(f) + + +def save_translation_status(lang: str, status: dict[str, Any]) -> None: + """Save the translation status file for a language.""" + status_path = LOCALIZED_DIR / lang / STATUS_FILENAME + status_path.parent.mkdir(parents=True, exist_ok=True) + + # Update timestamp + status["lastSync"] = datetime.now(timezone.utc).isoformat() + + # Recalculate summary + files = status.get("files", {}) + translated = sum(1 for f in files.values() if f.get("status") == STATUS_TRANSLATED) + outdated = sum(1 for f in files.values() if f.get("status") == STATUS_OUTDATED) + untranslated = sum(1 for f in files.values() if f.get("status") == STATUS_UNTRANSLATED) + total = len(files) + + status["summary"] = { + "translated": translated, + "outdated": outdated, + "untranslated": untranslated, + "total": total, + "completionPercent": round(translated / total * 100, 1) if total > 0 else 0 + } + + with open(status_path, "w", encoding="utf-8") as f: + json.dump(status, f, indent=2, ensure_ascii=False) + + +def get_source_files() -> dict[str, str]: + """Get all source content files with their hashes. + + Returns dict mapping relative path to hash. + """ + files = {} + + # Content directories + for dir_name in get_content_directories(): + dir_path = CONTENT_DIR / dir_name + if dir_path.exists(): + for file_path in dir_path.rglob("*"): + if file_path.is_file() and file_path.suffix in [".md", ".yml", ".yaml", ".json", ".html"]: + rel_path = str(file_path.relative_to(CONTENT_DIR)).replace("\\", "/") + files[rel_path] = compute_file_hash(file_path) + + # Root files + for file_name in get_root_files(): + file_path = CONTENT_DIR / file_name + if file_path.exists(): + files[file_name] = compute_file_hash(file_path) + + return files + + +def get_available_languages() -> list[str]: + """Get list of available language codes from localizedContent/.""" + if not LOCALIZED_DIR.exists(): + return [] + + languages = [] + for item in LOCALIZED_DIR.iterdir(): + if item.is_dir() and len(item.name) <= 5 and item.name != "en": + languages.append(item.name) + + return sorted(languages) + + +def check_translation_status(lang: str, source_files: dict[str, str]) -> dict[str, Any]: + """Check translation status for a language against source files. + + Returns updated status dict with current state of each file. + """ + status = load_translation_status(lang) + localized_content_dir = LOCALIZED_DIR / lang / "content" + + new_files = {} + + for rel_path, source_hash in source_files.items(): + localized_file = localized_content_dir / rel_path + file_info = status.get("files", {}).get(rel_path, {}) + + if not localized_file.exists(): + # No translation exists + new_files[rel_path] = { + "sourceHash": source_hash, + "status": STATUS_UNTRANSLATED, + "lastChecked": datetime.now(timezone.utc).isoformat() + } + else: + stored_hash = file_info.get("sourceHash", "") + + if stored_hash == source_hash: + # Source hasn't changed, translation is current + new_files[rel_path] = { + "sourceHash": source_hash, + "status": STATUS_TRANSLATED, + "lastChecked": datetime.now(timezone.utc).isoformat(), + "translatedAt": file_info.get("translatedAt", datetime.now(timezone.utc).isoformat()) + } + else: + # Source changed since translation was made + new_files[rel_path] = { + "sourceHash": source_hash, + "status": STATUS_OUTDATED, + "previousHash": stored_hash, + "lastChecked": datetime.now(timezone.utc).isoformat(), + "translatedAt": file_info.get("translatedAt") + } + + status["files"] = new_files + return status + + +def sync_language(lang: str, source_files: dict[str, str], dry_run: bool = False) -> dict[str, int]: + """Sync content for a language, falling back to English for outdated/missing. + + Returns dict with counts of actions taken. + """ + status = check_translation_status(lang, source_files) + localized_content_dir = LOCALIZED_DIR / lang / "content" + + counts = {"copied": 0, "replaced": 0, "kept": 0} + + for rel_path, file_info in status["files"].items(): + source_file = CONTENT_DIR / rel_path + dest_file = localized_content_dir / rel_path + file_status = file_info.get("status") + + if file_status == STATUS_TRANSLATED: + # Keep existing translation + counts["kept"] += 1 + elif file_status == STATUS_OUTDATED: + # Replace with English (fallback) + if not dry_run: + dest_file.parent.mkdir(parents=True, exist_ok=True) + shutil.copy2(source_file, dest_file) + # Update status to untranslated (since we replaced with English) + file_info["status"] = STATUS_UNTRANSLATED + file_info["replacedAt"] = datetime.now(timezone.utc).isoformat() + counts["replaced"] += 1 + print(f" Replaced (outdated): {rel_path}") + elif file_status == STATUS_UNTRANSLATED: + # Copy English as fallback + if not dry_run: + dest_file.parent.mkdir(parents=True, exist_ok=True) + if not dest_file.exists(): + shutil.copy2(source_file, dest_file) + counts["copied"] += 1 + print(f" Copied (new): {rel_path}") + else: + counts["kept"] += 1 + else: + if not dest_file.exists(): + counts["copied"] += 1 + else: + counts["kept"] += 1 + + # Copy shared directories (assets, api) - always overwrite + for dir_name in get_shared_directories(): + src = CONTENT_DIR / dir_name + dest = localized_content_dir / dir_name + if src.exists() and not dry_run: + if dest.exists(): + shutil.rmtree(dest) + shutil.copytree(src, dest) + print(f" Synced shared: {dir_name}/") + + if not dry_run: + save_translation_status(lang, status) + + return counts + + +def sync_english(dry_run: bool = False) -> dict[str, int]: + """Sync English content (copy all from source). + + Note: This preserves any existing files in the destination that don't exist + in the source (e.g., redirect stub files generated by gen_redirects.py). + """ + en_content_dir = LOCALIZED_DIR / "en" / "content" + counts = {"copied": 0, "updated": 0} + + if not dry_run: + en_content_dir.mkdir(parents=True, exist_ok=True) + + # Copy content directories (overwrite existing, preserve unrelated) + for dir_name in get_content_directories(): + src = CONTENT_DIR / dir_name + dest = en_content_dir / dir_name + if src.exists(): + if not dry_run: + # Remove destination dir if exists (to get clean copy of this dir) + if dest.exists(): + shutil.rmtree(dest) + shutil.copytree(src, dest) + file_count = sum(1 for _ in src.rglob("*") if _.is_file()) + counts["copied"] += file_count + + # Copy shared directories (overwrite) + for dir_name in get_shared_directories(): + src = CONTENT_DIR / dir_name + dest = en_content_dir / dir_name + if src.exists() and not dry_run: + if dest.exists(): + shutil.rmtree(dest) + shutil.copytree(src, dest) + print(f" Synced shared: {dir_name}/") + + # Copy root files (overwrite) + for file_name in get_root_files(): + src = CONTENT_DIR / file_name + if src.exists(): + if not dry_run: + shutil.copy2(src, en_content_dir / file_name) + counts["copied"] += 1 + + return counts + + +def init_language(lang: str, source_files: dict[str, str]) -> None: + """Initialize translation tracking for an existing language. + + Marks all existing translations as 'translated' with current source hash. + """ + localized_content_dir = LOCALIZED_DIR / lang / "content" + + if not localized_content_dir.exists(): + print(f"Error: No content found for '{lang}' at {localized_content_dir}") + return + + status = { + "language": lang, + "lastSync": datetime.now(timezone.utc).isoformat(), + "sourceBaseline": str(CONTENT_DIR), + "files": {} + } + + for rel_path, source_hash in source_files.items(): + localized_file = localized_content_dir / rel_path + + if localized_file.exists(): + # File exists - mark as translated with current hash + status["files"][rel_path] = { + "sourceHash": source_hash, + "status": STATUS_TRANSLATED, + "lastChecked": datetime.now(timezone.utc).isoformat(), + "translatedAt": datetime.now(timezone.utc).isoformat() + } + else: + # File missing - mark as untranslated + status["files"][rel_path] = { + "sourceHash": source_hash, + "status": STATUS_UNTRANSLATED, + "lastChecked": datetime.now(timezone.utc).isoformat() + } + + save_translation_status(lang, status) + + summary = status["summary"] + print(f"Initialized tracking for '{lang}':") + print(f" Translated: {summary['translated']}") + print(f" Untranslated: {summary['untranslated']}") + + +def mark_translated(lang: str, file_paths: list[str] | None, source_files: dict[str, str]) -> None: + """Mark files as translated with current source hash. + + If file_paths is None, marks all files in the language. + """ + status = load_translation_status(lang) + now = datetime.now(timezone.utc).isoformat() + + if file_paths is None: + # Mark all files + file_paths = list(source_files.keys()) + + updated = 0 + for rel_path in file_paths: + if rel_path in source_files: + status["files"][rel_path] = { + "sourceHash": source_files[rel_path], + "status": STATUS_TRANSLATED, + "lastChecked": now, + "translatedAt": now + } + updated += 1 + + save_translation_status(lang, status) + print(f"Marked {updated} file(s) as translated for '{lang}'") + + +def print_status_summary(json_output: bool = False) -> None: + """Print status summary for all languages.""" + languages = get_available_languages() + source_files = get_source_files() + + results = [] + + for lang in languages: + status = check_translation_status(lang, source_files) + summary = status.get("summary", {}) + results.append({ + "language": lang, + "translated": summary.get("translated", 0), + "outdated": summary.get("outdated", 0), + "untranslated": summary.get("untranslated", 0), + "total": summary.get("total", 0), + "completionPercent": summary.get("completionPercent", 0) + }) + + if json_output: + print(json.dumps({"languages": results}, indent=2)) + return + + if not results: + print("No languages found in localizedContent/") + return + + print("\nTranslation Status Report") + print("=" * 60) + print() + print(f"{'Language':<10} {'Translated':<12} {'Outdated':<10} {'Untranslated':<14} {'Completion':<10}") + print("-" * 60) + + for r in results: + print(f"{r['language']:<10} {r['translated']:<12} {r['outdated']:<10} {r['untranslated']:<14} {r['completionPercent']:.1f}%") + + print() + print("Run with --statusThe page you are looking for could not be found.
-The page you are looking for could not be found.
+Redirecting to English documentation...
+ + diff --git a/content/toc.yml b/content/toc.yml index 8b3cef92..b6b79185 100644 --- a/content/toc.yml +++ b/content/toc.yml @@ -14,7 +14,7 @@ homepage: tutorials/index.md - name: References href: references/ - homepage: references/index.md + homepage: references/index.md - name: Troubleshooting href: troubleshooting/ homepage: troubleshooting/index.md @@ -23,4 +23,5 @@ homepage: security/index.md - name: API href: api/ - homepage: api/index.md \ No newline at end of file + homepage: api/index.md + \ No newline at end of file diff --git a/crowdin.yml b/crowdin.yml index 7fbcd494..9683dbb3 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,7 +1,7 @@ "files": [ { "source": "/content/**/*.md", - "translation": "/localizedContent/%two_letters_code%/%original_path%/%original_file_name%", + "translation": "/localizedContent/%two_letters_code%/content/%original_path%/%original_file_name%", "ignore": [ "/**/TOC.md" ], @@ -11,10 +11,14 @@ }, { "source": "/content/404.html", - "translation": "/localizedContent/%two_letters_code%/404.html" + "translation": "/localizedContent/%two_letters_code%/content/404.html" }, { "source": "/content/toc.yml", - "translation": "/localizedContent/%two_letters_code%/toc.yml" + "translation": "/localizedContent/%two_letters_code%/content/toc.yml" + }, + { + "source": "/content/_ui-strings.json", + "translation": "/localizedContent/%two_letters_code%/content/_ui-strings.json" } ] diff --git a/docfx-template.json b/docfx-template.json index 40305956..7158659a 100644 --- a/docfx-template.json +++ b/docfx-template.json @@ -37,10 +37,12 @@ "resource": [ { "files": "**", "src": "content/assets/images", "dest": "images" }, { "files": "**", "src": "content/whats-new", "dest": "whats-new" }, - { "files": "*.html", "src": "content" } + { "files": "*.html", "src": "content" }, + { "files": "_ui-strings.json", "src": "content" } ], "globalMetadata": { "_appTitle": "Tabular Editor Documentation", + "_baseUrl": "https://docs.tabulareditor.com", "_enableSearch": true, "_enableNewTab": true, "_disableNavbar": true, diff --git a/gen_redirects.py b/gen_redirects.py deleted file mode 100644 index 8aa16dc6..00000000 --- a/gen_redirects.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import json -import os -import posixpath -import sys -import traceback - -def main(args: list[str]) -> int: - config_input_path = "docfx-template.json" - config_output_path = "docfx.json" - redirects_path = "redirects.json" - - with open(config_input_path) as f: - config = json.load(f) - - with open(redirects_path) as f: - data : dict[str, str] = json.load(f) - - dirs = dict[str, list[str]]() - for key, value in data.items(): - dir = posixpath.dirname(key) - ext = posixpath.splitext(key)[1] - if dir in dirs: - dirs[dir].append(key) - else: - dirs[dir] = [key] - os.makedirs(dir, exist_ok=True) - if ext == ".md": - content: list[Any] = config["build"]["content"] - content.append({"files": posixpath.relpath(key, "content"), "src": "content"}) - with open(key, mode="w", encoding="utf-8") as f: - f.write(f"""--- -redirect_url: {value} ---- -""") - elif ext == ".html": - resource: list[Any] = config["build"]["resource"] - resource.append({"files": posixpath.relpath(key, "content"), "src": "content"}) - with open(key, mode="w", encoding="utf-8") as f: - f.write(f""" - - - - - - - -""") - else: - print("Unknown file type:", key, file=sys.stderr) - - for dir, files in dirs.items(): - with open(posixpath.join(dir, ".gitignore"), "a") as f: - f.write("\n") - f.writelines("/" + posixpath.basename(file) + "\n" for file in files) - f.write("/.gitignore\n") - - with open(config_output_path, "w") as f: - json.dump(config, f, indent=4) - - return 0 - - -if __name__ == "__main__": - import sys - try: - sys.exit(main(sys.argv[1:])) - except Exception as ex: - traceback.print_exception(ex, file=sys.stderr) - sys.exit(1) diff --git a/localizedContent/es/toc.yml b/localizedContent/es/content/toc.yml similarity index 100% rename from localizedContent/es/toc.yml rename to localizedContent/es/content/toc.yml diff --git a/localizedContent/zh/toc.yml b/localizedContent/zh/content/toc.yml similarity index 100% rename from localizedContent/zh/toc.yml rename to localizedContent/zh/content/toc.yml diff --git a/metadata/build-config.json b/metadata/build-config.json new file mode 100644 index 00000000..aea98afd --- /dev/null +++ b/metadata/build-config.json @@ -0,0 +1,34 @@ +{ + "_comment": "Shared build configuration for all build scripts. Edit this file to add/remove content directories.", + "defaultLanguage": "en", + "contentDirectories": { + "_comment": "Directories that contain translatable content (markdown and HTML files)", + "directories": [ + "features", + "getting-started", + "how-tos", + "references", + "kb", + "security", + "troubleshooting", + "tutorials", + "whats-new" + ] + }, + "sharedDirectories": { + "_comment": "Directories that are shared across languages (assets, API docs). Not translated.", + "directories": [ + "assets", + "api" + ] + }, + "rootFiles": { + "_comment": "Root-level files that should be copied/localized", + "files": [ + "index.md", + "toc.yml", + "404.html", + "_ui-strings.json" + ] + } +} \ No newline at end of file diff --git a/metadata/language-metadata.json b/metadata/language-metadata.json new file mode 100644 index 00000000..51821cb0 --- /dev/null +++ b/metadata/language-metadata.json @@ -0,0 +1,33 @@ +{ + "_comment": "Language display names and metadata. Add entries here for new languages.", + "defaultLanguage": "en", + "languages": { + "en": { "name": "English", "nativeName": "English" }, + "es": { "name": "Spanish", "nativeName": "Español" }, + "zh": { "name": "Chinese (Simplified)", "nativeName": "简体中文" }, + "zh-tw": { "name": "Chinese (Traditional)", "nativeName": "繁體中文" }, + "ja": { "name": "Japanese", "nativeName": "日本語" }, + "ko": { "name": "Korean", "nativeName": "한국어" }, + "de": { "name": "German", "nativeName": "Deutsch" }, + "fr": { "name": "French", "nativeName": "Français" }, + "it": { "name": "Italian", "nativeName": "Italiano" }, + "pt": { "name": "Portuguese", "nativeName": "Português" }, + "pt-br": { "name": "Portuguese (Brazil)", "nativeName": "Português (Brasil)" }, + "ru": { "name": "Russian", "nativeName": "Русский" }, + "ar": { "name": "Arabic", "nativeName": "العربية", "rtl": true }, + "he": { "name": "Hebrew", "nativeName": "עברית", "rtl": true }, + "nl": { "name": "Dutch", "nativeName": "Nederlands" }, + "pl": { "name": "Polish", "nativeName": "Polski" }, + "sv": { "name": "Swedish", "nativeName": "Svenska" }, + "da": { "name": "Danish", "nativeName": "Dansk" }, + "no": { "name": "Norwegian", "nativeName": "Norsk" }, + "fi": { "name": "Finnish", "nativeName": "Suomi" }, + "cs": { "name": "Czech", "nativeName": "Čeština" }, + "tr": { "name": "Turkish", "nativeName": "Türkçe" }, + "th": { "name": "Thai", "nativeName": "ไทย" }, + "vi": { "name": "Vietnamese", "nativeName": "Tiếng Việt" }, + "id": { "name": "Indonesian", "nativeName": "Bahasa Indonesia" }, + "ms": { "name": "Malay", "nativeName": "Bahasa Melayu" }, + "hi": { "name": "Hindi", "nativeName": "हिन्दी" } + } +} diff --git a/metadata/redirects.json b/metadata/redirects.json new file mode 100644 index 00000000..b129e7cb --- /dev/null +++ b/metadata/redirects.json @@ -0,0 +1,265 @@ +{ + "_comment": "All URL redirects. serverRedirects are 301s via Azure SWA. clientRedirects generate meta-refresh HTML files.", + "serverRedirects": { + "_comment": "Short URLs that redirect to full paths. Add new shortcuts here.", + "redirects": { + "/tmdl": "/en/features/tmdl.html", + "/roslyn": "/en/how-tos/Advanced-Scripting.html#compiling-with-roslyn", + "/eula": "/en/security/te3-eula.html", + "/tmuo": "/en/references/user-options.html", + "/workspace": "/en/tutorials/workspace-mode.html", + "/privacy-policy.html": "/en/security/privacy-policy.html", + "/user-options.html": "/en/references/user-options.html", + "/Advanced-Scripting.html": "/en/how-tos/Advanced-Scripting.html", + "/Best-Practice-Analyzer.html": "/en/features/Best-Practice-Analyzer.html", + "/Importing-Tables.html": "/en/how-tos/Importing-Tables.html", + "/Workspace-Database.html": "/en/tutorials/workspace-mode.html", + "/Useful-script-snippets.html": "/en/features/Useful-script-snippets.html", + "/Command-line-Options.html": "/en/features/Command-line-Options.html", + "/Power-BI-Desktop-Integration.html": "/en/getting-started/Power-BI-Desktop-Integration.html", + "/Custom-Actions.html": "/en/tutorials/creating-macros.html", + "/FormatDax.html": "/en/references/FormatDax.html", + "/common/Datasets/direct-lake-dataset.html": "/en/features/Semantic-Model/direct-lake-sql-model.html", + "/other/downloads.html": "/en/references/downloads.html", + "/te3/downloads.html": "/en/references/downloads.html", + "/te3/logo.svg": "/en/logo.svg", + "/projects/te3/en/latest": "/en/", + "/projects/te3": "/en/", + "/projects/te3/en/latest/editions.html": "/en/getting-started/editions.html", + "/projects/te3/en/latest/security-privacy.html": "/en/security/security-privacy.html", + "/projects/te3/en/latest/downloads.html": "/en/references/downloads.html", + "/projects/te3/en/latest/getting-started.html": "/en/getting-started/getting-started.html", + "_comment_high_traffic": "High-traffic legacy pages (direct 301 for best SEO)", + "/te2/Getting-Started.html": "/en/getting-started/Getting-Started-te2.html", + "/te2/Advanced-Scripting.html": "/en/how-tos/Advanced-Scripting.html", + "/te2/Best-Practice-Analyzer.html": "/en/features/Best-Practice-Analyzer.html", + "/te2/Power-BI-Desktop-Integration.html": "/en/getting-started/Power-BI-Desktop-Integration.html", + "/te2/Importing-Tables.html": "/en/how-tos/Importing-Tables.html", + "/te2/Useful-script-snippets.html": "/en/features/Useful-script-snippets.html", + "/te3/getting-started.html": "/en/getting-started/getting-started.html", + "/te3/editions.html": "/en/getting-started/editions.html", + "/te3/index.html": "/en/troubleshooting/licensing-activation.html", + "/te3/features/dax-editor.html": "/en/features/dax-editor.html", + "/te3/features/dax-scripts.html": "/en/features/dax-scripts.html", + "/te3/features/dax-debugger.html": "/en/features/dax-debugger.html", + "/te3/features/csharp-scripts.html": "/en/features/csharp-scripts.html", + "/te3/features/tmdl.html": "/en/features/tmdl.html", + "/te3/other/downloads.html": "/en/references/downloads.html", + "/te3/other/release-history.html": "/en/references/release-history.html", + "/te3/tutorials/workspace-mode.html": "/en/tutorials/workspace-mode.html", + "/onboarding/index.html": "/en/getting-started/index.html", + "/onboarding/installation.html": "/en/getting-started/installation.html", + "/onboarding/general-introduction.html": "/en/getting-started/general-introduction.html" + } + }, + "clientRedirects": { + "_comment": "Legacy content URLs that need meta-refresh HTML redirects. Keys are old paths (without content/ prefix), values are new paths. These are handled by gen_redirects.py to create redirect HTML files.", + "redirects": { + "/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.html": "/en/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.html", + "/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.html": "/en/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.html", + "/common/CSharpScripts/Advanced/script-convert-import-to-dlol.html": "/en/features/CSharpScripts/Advanced/script-convert-import-to-dlol.html", + "/common/CSharpScripts/Advanced/script-count-things.html": "/en/features/CSharpScripts/Advanced/script-count-things.html", + "/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.html": "/en/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.html", + "/common/CSharpScripts/Advanced/script-create-databricks-relationships.html": "/en/features/CSharpScripts/Advanced/script-create-databricks-relationships.html", + "/common/CSharpScripts/Advanced/script-create-date-table.html": "/en/features/CSharpScripts/Advanced/script-create-date-table.html", + "/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.html": "/en/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.html", + "/common/CSharpScripts/Advanced/script-find-replace-selected-measures.html": "/en/features/CSharpScripts/Advanced/script-find-replace-selected-measures.html", + "/common/CSharpScripts/Advanced/script-format-power-query.html": "/en/features/CSharpScripts/Advanced/script-format-power-query.html", + "/common/CSharpScripts/Advanced/script-implement-incremental-refresh.html": "/en/features/CSharpScripts/Advanced/script-implement-incremental-refresh.html", + "/common/CSharpScripts/Advanced/script-output-things.html": "/en/features/CSharpScripts/Advanced/script-output-things.html", + "/common/CSharpScripts/Advanced/script-remove-measures-with-error.html": "/en/features/CSharpScripts/Advanced/script-remove-measures-with-error.html", + "/common/CSharpScripts/Beginner/script-count-rows.html": "/en/features/CSharpScripts/Beginner/script-count-rows.html", + "/common/CSharpScripts/Beginner/script-create-field-parameter.html": "/en/features/CSharpScripts/Beginner/script-create-field-parameter.html", + "/common/CSharpScripts/Beginner/script-create-m-parameter.html": "/en/features/CSharpScripts/Beginner/script-create-m-parameter.html", + "/common/CSharpScripts/Beginner/script-create-measure-table.html": "/en/features/CSharpScripts/Beginner/script-create-measure-table.html", + "/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.html": "/en/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.html", + "/common/CSharpScripts/Beginner/script-create-table-groups.html": "/en/features/CSharpScripts/Beginner/script-create-table-groups.html", + "/common/CSharpScripts/Beginner/script-display-unique-column-values.html": "/en/features/CSharpScripts/Beginner/script-display-unique-column-values.html", + "/common/CSharpScripts/Beginner/script-edit-hidden-partitions.html": "/en/features/CSharpScripts/Beginner/script-edit-hidden-partitions.html", + "/common/CSharpScripts/Beginner/script-format-numeric-measures.html": "/en/features/CSharpScripts/Beginner/script-format-numeric-measures.html", + "/common/CSharpScripts/Beginner/script-show-data-source-dependencies.html": "/en/features/CSharpScripts/Beginner/script-show-data-source-dependencies.html", + "/common/CSharpScripts/Template/csharp-script-Template.html": "/en/features/CSharpScripts/Template/csharp-script-Template.html", + "/common/CSharpScripts/csharp-script-library-advanced.html": "/en/features/CSharpScripts/csharp-script-library-advanced.html", + "/common/CSharpScripts/csharp-script-library-beginner.html": "/en/features/CSharpScripts/csharp-script-library-beginner.html", + "/common/CSharpScripts/csharp-script-library.html": "/en/features/CSharpScripts/csharp-script-library.html", + "/common/Semantic Model/direct-lake-sql-model.html": "/en/features/Semantic-Model/direct-lake-sql-model.html", + "/common/Semantic Model/direct-query-over-as.html": "/en/features/Semantic-Model/direct-query-over-as.html", + "/common/Semantic Model/semantic-model-types.html": "/en/features/Semantic-Model/semantic-model-types.html", + "/common/common-features.html": "/en/getting-started/Getting-Started-te2.html", + "/common/desktop-limitations.html": "/en/getting-started/desktop-limitations.html", + "/common/policies.html": "/en/references/policies.html", + "/common/save-to-folder.html": "/en/features/save-to-folder.html", + "/common/script-helper-methods.html": "/en/features/script-helper-methods.html", + "/common/tmdl-common.html": "/en/features/tmdl.html", + "/common/toc.html": "/en/index.html", + "/common/using-bpa-sample-rules-expressions.html": "/en/features/using-bpa-sample-rules-expressions.html", + "/common/using-bpa.html": "/en/features/using-bpa.html", + "/common/xmla-as-connectivity.html": "/en/how-tos/xmla-as-connectivity.html", + "/onboarding/as-cicd.html": "/en/getting-started/as-cicd.html", + "/onboarding/boosting-productivity-te3.html": "/en/getting-started/boosting-productivity-te3.html", + "/onboarding/bpa.html": "/en/getting-started/bpa.html", + "/onboarding/creating-and-testing-dax.html": "/en/getting-started/creating-and-testing-dax.html", + "/onboarding/cs-scripts-and-macros.html": "/en/getting-started/cs-scripts-and-macros.html", + "/onboarding/dax-script-introduction.html": "/en/getting-started/dax-script-introduction.html", + "/onboarding/importing-tables-data-modeling.html": "/en/getting-started/importing-tables-data-modeling.html", + "/onboarding/migrate-from-desktop.html": "/en/getting-started/migrate-from-desktop.html", + "/onboarding/migrate-from-te2.html": "/en/getting-started/migrate-from-te2.html", + "/onboarding/migrate-from-vs.html": "/en/getting-started/migrate-from-vs.html", + "/onboarding/optimizing-workflow-workspace-mode.html": "/en/getting-started/optimizing-workflow-workspace-mode.html", + "/onboarding/parallel-development.html": "/en/getting-started/parallel-development.html", + "/onboarding/personalizing-te3.html": "/en/getting-started/personalizing-te3.html", + "/onboarding/powerbi-cicd.html": "/en/getting-started/powerbi-cicd.html", + "/onboarding/refresh-preview-query.html": "/en/getting-started/refresh-preview-query.html", + "/onboarding/toc.html": "/en/getting-started/toc.html", + "/te2/Advanced-Filtering-of-the-Explorer-Tree.html": "/en/how-tos/Advanced-Filtering-of-the-Explorer-Tree.html", + "/te2/Advanced-features.html": "/en/getting-started/Getting-Started-te2.html", + "/te2/Best-Practice-Analyzer-Improvements.html": "/en/features/Best-Practice-Analyzer.html", + "/te2/Command-line-Options.html": "/en/features/Command-line-Options.html", + "/te2/Custom-Actions.html": "/en/features/Custom-Actions-hidden.html", + "/te2/FAQ.html": "/en/references/FAQ.html", + "/te2/Features-at-a-glance.html": "/en/getting-started/Getting-Started-te2.html", + "/te2/FormatDax.html": "/en/references/FormatDax.html", + "/te2/Keyboard-Shortcuts.html": "/en/references/Keyboard-Shortcuts2.html", + "/te2/Master-model-pattern.html": "/en/how-tos/Master-model-pattern.html", + "/te2/Roadmap.html": "/en/references/Roadmap2-h.html", + "/te2/SQL-Server-2017-support.html": "/en/references/SQL-Server-2017-support-h.html", + "/te2/TabularEditor.TOMWrapper.html": "/en/references/TabularEditor.TOMWrapper-h.html", + "/te2/Training-Webinar-for-Tabular-Editor.html": "/en/getting-started/Training-Webinar-for-Tabular-Editor.html", + "/te2/Workspace-Database.html": "/en/features/Workspace-Database.html", + "/te2/gdpr-delete.html": "/en/security/gdpr-delete.html", + "/te2/importing-tables-from-excel.html": "/en/how-tos/importing-tables-from-excel.html", + "/te2/incremental-refresh.html": "/en/how-tos/incremental-refresh2-h.html", + "/te2/privacy-policy.html": "/en/security/privacy-policy.html", + "/te2/toc.html": "/en/getting-started/Getting-Started-te2.html", + "/te3/azure-marketplace.html": "/en/getting-started/azure-marketplace.html", + "/te3/desktop-limitations.html": "/en/getting-started/desktop-limitations.html", + "/te3/features/code-actions.html": "/en/features/code-actions.html", + "/te3/features/dax-optimizer-integration.html": "/en/features/dax-optimizer-integration.html", + "/te3/features/dax-package-manager.html": "/en/features/dax-package-manager.html", + "/te3/features/dax-query.html": "/en/features/dax-query.html", + "/te3/features/deployment.html": "/en/features/deployment.html", + "/te3/features/diagram-view.html": "/en/features/views/diagram-view.html", + "/te3/features/metadata-translation-editor.html": "/en/features/metadata-translation-editor.html", + "/te3/features/perspective-editor.html": "/en/features/perspective-editor.html", + "/te3/features/pivot-grid.html": "/en/features/pivot-grid.html", + "/te3/features/preferences.html": "/en/references/preferences.html", + "/te3/features/security-privacy.html": "/en/security/security-privacy.html", + "/te3/features/shortcuts.html": "/en/references/shortcuts3.html", + "/te3/features/supported-files.html": "/en/references/supported-files.html", + "/te3/features/table-groups.html": "/en/features/table-groups.html", + "/te3/features/user-options.html": "/en/references/user-options.html", + "/te3/import-tables.partial.html": "/en/features/import-tables.partial.html", + "/te3/other/privacy-policy.html": "/en/security/privacy-policy.html", + "/te3/other/release-notes/3_0_1.html": "/en/references/release-notes/3_0_1.html", + "/te3/other/release-notes/3_0_10.html": "/en/references/release-notes/3_0_10.html", + "/te3/other/release-notes/3_0_2.html": "/en/references/release-notes/3_0_2.html", + "/te3/other/release-notes/3_0_3.html": "/en/references/release-notes/3_0_3.html", + "/te3/other/release-notes/3_0_4.html": "/en/references/release-notes/3_0_4.html", + "/te3/other/release-notes/3_0_5.html": "/en/references/release-notes/3_0_5.html", + "/te3/other/release-notes/3_0_6.html": "/en/references/release-notes/3_0_6.html", + "/te3/other/release-notes/3_0_7.html": "/en/references/release-notes/3_0_7.html", + "/te3/other/release-notes/3_0_8.html": "/en/references/release-notes/3_0_8.html", + "/te3/other/release-notes/3_0_9.html": "/en/references/release-notes/3_0_9.html", + "/te3/other/release-notes/3_10_0.html": "/en/references/release-notes/3_10_0.html", + "/te3/other/release-notes/3_10_1.html": "/en/references/release-notes/3_10_1.html", + "/te3/other/release-notes/3_11_0.html": "/en/references/release-notes/3_11_0.html", + "/te3/other/release-notes/3_12_0.html": "/en/references/release-notes/3_12_0.html", + "/te3/other/release-notes/3_12_1.html": "/en/references/release-notes/3_12_1.html", + "/te3/other/release-notes/3_13_0.html": "/en/references/release-notes/3_13_0.html", + "/te3/other/release-notes/3_14_0.html": "/en/references/release-notes/3_14_0.html", + "/te3/other/release-notes/3_15_0.html": "/en/references/release-notes/3_15_0.html", + "/te3/other/release-notes/3_16_0.html": "/en/references/release-notes/3_16_0.html", + "/te3/other/release-notes/3_16_1.html": "/en/references/release-notes/3_16_1.html", + "/te3/other/release-notes/3_16_2.html": "/en/references/release-notes/3_16_2.html", + "/te3/other/release-notes/3_17_0.html": "/en/references/release-notes/3_17_0.html", + "/te3/other/release-notes/3_17_1.html": "/en/references/release-notes/3_17_1.html", + "/te3/other/release-notes/3_18_0.html": "/en/references/release-notes/3_18_0.html", + "/te3/other/release-notes/3_18_1.html": "/en/references/release-notes/3_18_1.html", + "/te3/other/release-notes/3_18_2.html": "/en/references/release-notes/3_18_2.html", + "/te3/other/release-notes/3_19_0.html": "/en/references/release-notes/3_19_0.html", + "/te3/other/release-notes/3_1_0.html": "/en/references/release-notes/3_1_0.html", + "/te3/other/release-notes/3_1_1.html": "/en/references/release-notes/3_1_1.html", + "/te3/other/release-notes/3_1_2.html": "/en/references/release-notes/3_1_2.html", + "/te3/other/release-notes/3_1_3.html": "/en/references/release-notes/3_1_3.html", + "/te3/other/release-notes/3_1_4.html": "/en/references/release-notes/3_1_4.html", + "/te3/other/release-notes/3_1_5.html": "/en/references/release-notes/3_1_5.html", + "/te3/other/release-notes/3_1_6.html": "/en/references/release-notes/3_1_6.html", + "/te3/other/release-notes/3_1_7.html": "/en/references/release-notes/3_1_7.html", + "/te3/other/release-notes/3_20_0.html": "/en/references/release-notes/3_20_0.html", + "/te3/other/release-notes/3_20_1.html": "/en/references/release-notes/3_20_1.html", + "/te3/other/release-notes/3_21_0.html": "/en/references/release-notes/3_21_0.html", + "/te3/other/release-notes/3_22_0.html": "/en/references/release-notes/3_22_0.html", + "/te3/other/release-notes/3_22_1.html": "/en/references/release-notes/3_22_1.html", + "/te3/other/release-notes/3_23_0.html": "/en/references/release-notes/3_23_0.html", + "/te3/other/release-notes/3_23_1.html": "/en/references/release-notes/3_23_1.html", + "/te3/other/release-notes/3_24_0.html": "/en/references/release-notes/3_24_0.html", + "/te3/other/release-notes/3_24_1.html": "/en/references/release-notes/3_24_1.html", + "/te3/other/release-notes/3_24_2.html": "/en/references/release-notes/3_24_2.html", + "/te3/other/release-notes/3_2_0.html": "/en/references/release-notes/3_2_0.html", + "/te3/other/release-notes/3_2_1.html": "/en/references/release-notes/3_2_1.html", + "/te3/other/release-notes/3_2_2.html": "/en/references/release-notes/3_2_2.html", + "/te3/other/release-notes/3_2_3.html": "/en/references/release-notes/3_2_3.html", + "/te3/other/release-notes/3_3_0.html": "/en/references/release-notes/3_3_0.html", + "/te3/other/release-notes/3_3_1.html": "/en/references/release-notes/3_3_1.html", + "/te3/other/release-notes/3_3_2.html": "/en/references/release-notes/3_3_2.html", + "/te3/other/release-notes/3_3_3.html": "/en/references/release-notes/3_3_3.html", + "/te3/other/release-notes/3_3_4.html": "/en/references/release-notes/3_3_4.html", + "/te3/other/release-notes/3_3_5.html": "/en/references/release-notes/3_3_5.html", + "/te3/other/release-notes/3_3_6.html": "/en/references/release-notes/3_3_6.html", + "/te3/other/release-notes/3_4_0.html": "/en/references/release-notes/3_4_0.html", + "/te3/other/release-notes/3_4_1.html": "/en/references/release-notes/3_4_1.html", + "/te3/other/release-notes/3_4_2.html": "/en/references/release-notes/3_4_2.html", + "/te3/other/release-notes/3_5_0.html": "/en/references/release-notes/3_5_0.html", + "/te3/other/release-notes/3_5_1.html": "/en/references/release-notes/3_5_1.html", + "/te3/other/release-notes/3_6_0.html": "/en/references/release-notes/3_6_0.html", + "/te3/other/release-notes/3_7_0.html": "/en/references/release-notes/3_7_0.html", + "/te3/other/release-notes/3_7_1.html": "/en/references/release-notes/3_7_1.html", + "/te3/other/release-notes/3_8_0.html": "/en/references/release-notes/3_8_0.html", + "/te3/other/release-notes/3_9_0.html": "/en/references/release-notes/3_9_0.html", + "/te3/other/release-notes/beta-16_6.html": "/en/references/release-notes/beta-16_6.html", + "/te3/other/release-notes/beta-17_4.html": "/en/references/release-notes/beta-17_4.html", + "/te3/other/release-notes/beta-18_1.html": "/en/references/release-notes/beta-18_1.html", + "/te3/other/release-notes/beta-18_2.html": "/en/references/release-notes/beta-18_2.html", + "/te3/other/release-notes/beta-18_3.html": "/en/references/release-notes/beta-18_3.html", + "/te3/other/release-notes/beta-18_4.html": "/en/references/release-notes/beta-18_4.html", + "/te3/other/release-notes/beta-18_5.html": "/en/references/release-notes/beta-18_5.html", + "/te3/other/roadmap.html": "/en/references/roadmap.html", + "/te3/other/te3-eula.html": "/en/security/te3-eula.html", + "/te3/other/third-party-notices.html": "/en/security/third-party-notices.html", + "/te3/powerbi-xmla-pbix-workaround.html": "/en/how-tos/powerbi-xmla-pbix-workaround.html", + "/te3/powerbi-xmla.html": "/en/tutorials/powerbi-xmla.html", + "/te3/proxy-settings.html": "/en/troubleshooting/proxy-settings.html", + "/te3/toc.html": "/en/index.html", + "/te3/troubleshooting/calendar-blank-value.html": "/en/troubleshooting/calendar-blank-value.html", + "/te3/troubleshooting/direct-lake-entity-updates-reverting.html": "/en/troubleshooting/direct-lake-entity-updates-reverting.html", + "/te3/troubleshooting/locale-not-supported.html": "/en/troubleshooting/locale-not-supported.html", + "/te3/tutorials/calendars.html": "/en/tutorials/calendars.html", + "/te3/tutorials/connecting-to-azure-databricks.html": "/en/tutorials/connecting-to-azure-databricks.html", + "/te3/tutorials/creating-macros.html": "/en/features/creating-macros.html", + "/te3/tutorials/data-security/data-security-about.html": "/en/tutorials/data-security/data-security-about.html", + "/te3/tutorials/data-security/data-security-setup-ols.html": "/en/tutorials/data-security/data-security-setup-ols.html", + "/te3/tutorials/data-security/data-security-setup-rls.html": "/en/tutorials/data-security/data-security-setup-rls.html", + "/te3/tutorials/data-security/data-security-testing.html": "/en/tutorials/data-security/data-security-testing.html", + "/te3/tutorials/direct-lake-guidance.html": "/en/tutorials/direct-lake-guidance.html", + "/te3/tutorials/importing-tables.html": "/en/tutorials/importing-tables.html", + "/te3/tutorials/incremental-refresh/incremental-refresh-about.html": "/en/tutorials/incremental-refresh/incremental-refresh-about.html", + "/te3/tutorials/incremental-refresh/incremental-refresh-modify.html": "/en/tutorials/incremental-refresh/incremental-refresh-modify.html", + "/te3/tutorials/incremental-refresh/incremental-refresh-schema.html": "/en/tutorials/incremental-refresh/incremental-refresh-schema.html", + "/te3/tutorials/incremental-refresh/incremental-refresh-setup.html": "/en/tutorials/incremental-refresh/incremental-refresh-setup.html", + "/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.html": "/en/tutorials/incremental-refresh/incremental-refresh-workspace-mode.html", + "/te3/tutorials/new-as-model.html": "/en/tutorials/new-as-model.html", + "/te3/tutorials/new-pbi-model.html": "/en/tutorials/new-pbi-model.html", + "/te3/tutorials/udfs.html": "/en/tutorials/udfs.html", + "/te3/views/bpa-view.html": "/en/features/views/bpa-view.html", + "/te3/views/data-refresh-view.html": "/en/features/views/data-refresh-view.html", + "/te3/views/find-replace.html": "/en/features/views/find-replace.html", + "/te3/views/macros-view.html": "/en/features/views/macros-view.html", + "/te3/views/messages-view.html": "/en/features/views/messages-view.html", + "/te3/views/properties-view.html": "/en/features/views/properties-view.html", + "/te3/views/tom-explorer-view.html": "/en/features/views/tom-explorer-view.html", + "/te3/views/user-interface.html": "/en/features/views/user-interface.html", + "/te3/whats-new.html": "/en/references/whats-new.html", + "/te3/workspace-mode.partial.html": "/en/features/workspace-mode.partial.html" + } + } +} \ No newline at end of file diff --git a/redirects.json b/redirects.json deleted file mode 100644 index 85f43077..00000000 --- a/redirects.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "content/common/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.html": "/features/CSharpScripts/Advanced/script-add-databricks-metadata-descriptions.html", - "content/common/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.html": "/features/CSharpScripts/Advanced/script-convert-dlsql-to-dlol.html", - "content/common/CSharpScripts/Advanced/script-convert-import-to-dlol.html": "/features/CSharpScripts/Advanced/script-convert-import-to-dlol.html", - "content/common/CSharpScripts/Advanced/script-count-things.html": "/features/CSharpScripts/Advanced/script-count-things.html", - "content/common/CSharpScripts/Advanced/script-create-and-replace-M-parameter.html": "/features/CSharpScripts/Advanced/script-create-and-replace-M-parameter.html", - "content/common/CSharpScripts/Advanced/script-create-databricks-relationships.html": "/features/CSharpScripts/Advanced/script-create-databricks-relationships.html", - "content/common/CSharpScripts/Advanced/script-create-date-table.html": "/features/CSharpScripts/Advanced/script-create-date-table.html", - "content/common/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.html": "/features/CSharpScripts/Advanced/script-databricks-semantic-model-set-up.html", - "content/common/CSharpScripts/Advanced/script-find-replace-selected-measures.html": "/features/CSharpScripts/Advanced/script-find-replace-selected-measures.html", - "content/common/CSharpScripts/Advanced/script-format-power-query.html": "/features/CSharpScripts/Advanced/script-format-power-query.html", - "content/common/CSharpScripts/Advanced/script-implement-incremental-refresh.html": "/features/CSharpScripts/Advanced/script-implement-incremental-refresh.html", - "content/common/CSharpScripts/Advanced/script-output-things.html": "/features/CSharpScripts/Advanced/script-output-things.html", - "content/common/CSharpScripts/Advanced/script-remove-measures-with-error.html": "/features/CSharpScripts/Advanced/script-remove-measures-with-error.html", - "content/common/CSharpScripts/Beginner/script-count-rows.html": "/features/CSharpScripts/Beginner/script-count-rows.html", - "content/common/CSharpScripts/Beginner/script-create-field-parameter.html": "/features/CSharpScripts/Beginner/script-create-field-parameter.html", - "content/common/CSharpScripts/Beginner/script-create-m-parameter.html": "/features/CSharpScripts/Beginner/script-create-m-parameter.html", - "content/common/CSharpScripts/Beginner/script-create-measure-table.html": "/features/CSharpScripts/Beginner/script-create-measure-table.html", - "content/common/CSharpScripts/Beginner/script-create-sum-measures-from-columns.html": "/features/CSharpScripts/Beginner/script-create-sum-measures-from-columns.html", - "content/common/CSharpScripts/Beginner/script-create-table-groups.html": "/features/CSharpScripts/Beginner/script-create-table-groups.html", - "content/common/CSharpScripts/Beginner/script-display-unique-column-values.html": "/features/CSharpScripts/Beginner/script-display-unique-column-values.html", - "content/common/CSharpScripts/Beginner/script-edit-hidden-partitions.html": "/features/CSharpScripts/Beginner/script-edit-hidden-partitions.html", - "content/common/CSharpScripts/Beginner/script-format-numeric-measures.html": "/features/CSharpScripts/Beginner/script-format-numeric-measures.html", - "content/common/CSharpScripts/Beginner/script-show-data-source-dependencies.html": "/features/CSharpScripts/Beginner/script-show-data-source-dependencies.html", - "content/common/CSharpScripts/Template/csharp-script-Template.html": "/features/CSharpScripts/Template/csharp-script-Template.html", - "content/common/CSharpScripts/csharp-script-library-advanced.html": "/features/CSharpScripts/csharp-script-library-advanced.html", - "content/common/CSharpScripts/csharp-script-library-beginner.html": "/features/CSharpScripts/csharp-script-library-beginner.html", - "content/common/CSharpScripts/csharp-script-library.html": "/features/CSharpScripts/csharp-script-library.html", - "content/common/Semantic Model/direct-lake-sql-model.html": "/features/Semantic-Model/direct-lake-sql-model.html", - "content/common/Semantic Model/direct-query-over-as.html": "/features/Semantic-Model/direct-query-over-as.html", - "content/common/Semantic Model/semantic-model-types.html": "/features/Semantic-Model/semantic-model-types.html", - "content/common/common-features.html": "/getting-started/Getting-Started-te2.html", - "content/common/desktop-limitations.html": "/getting-started/desktop-limitations.html", - "content/common/policies.html": "/references/policies.html", - "content/common/save-to-folder.html": "/features/save-to-folder.html", - "content/common/script-helper-methods.html": "/features/script-helper-methods.html", - "content/common/tmdl-common.html": "/features/tmdl.html", - "content/common/toc.html": "/index.html", - "content/common/using-bpa-sample-rules-expressions.html": "/features/using-bpa-sample-rules-expressions.html", - "content/common/using-bpa.html": "/features/using-bpa.html", - "content/common/xmla-as-connectivity.html": "/how-tos/xmla-as-connectivity.html", - "content/onboarding/as-cicd.html": "/getting-started/as-cicd.html", - "content/onboarding/boosting-productivity-te3.html": "/getting-started/boosting-productivity-te3.html", - "content/onboarding/bpa.html": "/getting-started/bpa.html", - "content/onboarding/creating-and-testing-dax.html": "/getting-started/creating-and-testing-dax.html", - "content/onboarding/cs-scripts-and-macros.html": "/getting-started/cs-scripts-and-macros.html", - "content/onboarding/dax-script-introduction.html": "/getting-started/dax-script-introduction.html", - "content/onboarding/general-introduction.html": "/getting-started/general-introduction.html", - "content/onboarding/importing-tables-data-modeling.html": "/getting-started/importing-tables-data-modeling.html", - "content/onboarding/index.html": "/getting-started/index.html", - "content/onboarding/installation.html": "/getting-started/installation.html", - "content/onboarding/migrate-from-desktop.html": "/getting-started/migrate-from-desktop.html", - "content/onboarding/migrate-from-te2.html": "/getting-started/migrate-from-te2.html", - "content/onboarding/migrate-from-vs.html": "/getting-started/migrate-from-vs.html", - "content/onboarding/optimizing-workflow-workspace-mode.html": "/getting-started/optimizing-workflow-workspace-mode.html", - "content/onboarding/parallel-development.html": "/getting-started/parallel-development.html", - "content/onboarding/personalizing-te3.html": "/getting-started/personalizing-te3.html", - "content/onboarding/powerbi-cicd.html": "/getting-started/powerbi-cicd.html", - "content/onboarding/refresh-preview-query.html": "/getting-started/refresh-preview-query.html", - "content/onboarding/toc.html": "/getting-started/toc.html", - "content/te2/Advanced-Filtering-of-the-Explorer-Tree.html": "/how-tos/Advanced-Filtering-of-the-Explorer-Tree.html", - "content/te2/Advanced-Scripting.html": "/how-tos/Advanced-Scripting.html", - "content/te2/Advanced-features.html": "/getting-started/Getting-Started-te2.html", - "content/te2/Best-Practice-Analyzer-Improvements.html": "/features/Best-Practice-Analyzer.html", - "content/te2/Best-Practice-Analyzer.html": "/features/Best-Practice-Analyzer.html", - "content/te2/Command-line-Options.html": "/features/Command-line-Options.html", - "content/te2/Custom-Actions.html": "/features/Custom-Actions-hidden.html", - "content/te2/FAQ.html": "/references/FAQ.html", - "content/te2/Features-at-a-glance.html": "/getting-started/Getting-Started-te2.html", - "content/te2/FormatDax.html": "/references/FormatDax.html", - "content/te2/Getting-Started.html": "/getting-started/Getting-Started-te2.html", - "content/te2/Importing-Tables.html": "/how-tos/Importing-Tables.html", - "content/te2/Keyboard-Shortcuts.html": "/references/Keyboard-Shortcuts2.html", - "content/te2/Master-model-pattern.html": "/how-tos/Master-model-pattern.html", - "content/te2/Power-BI-Desktop-Integration.html": "/getting-started/Power-BI-Desktop-Integration.html", - "content/te2/Roadmap.html": "/references/Roadmap2-h.html", - "content/te2/SQL-Server-2017-support.html": "/references/SQL-Server-2017-support-h.html", - "content/te2/TabularEditor.TOMWrapper.html": "/references/TabularEditor.TOMWrapper-h.html", - "content/te2/Training-Webinar-for-Tabular-Editor.html": "/getting-started/Training-Webinar-for-Tabular-Editor.html", - "content/te2/Useful-script-snippets.html": "/features/Useful-script-snippets.html", - "content/te2/Workspace-Database.html": "/features/Workspace-Database.html", - "content/te2/gdpr-delete.html": "/security/gdpr-delete.html", - "content/te2/importing-tables-from-excel.html": "/how-tos/importing-tables-from-excel.html", - "content/te2/incremental-refresh.html": "/how-tos/incremental-refresh2-h.html", - "content/te2/privacy-policy.html": "/security/privacy-policy.html", - "content/te2/toc.html": "/getting-started/Getting-Started-te2.html", - "content/te3/azure-marketplace.html": "/getting-started/azure-marketplace.html", - "content/te3/desktop-limitations.html": "/getting-started/desktop-limitations.html", - "content/te3/editions.html": "/getting-started/editions.html", - "content/te3/features/code-actions.html": "/features/code-actions.html", - "content/te3/features/csharp-scripts.html": "/features/csharp-scripts.html", - "content/te3/features/dax-debugger.html": "/features/dax-debugger.html", - "content/te3/features/dax-editor.html": "/features/dax-editor.html", - "content/te3/features/dax-optimizer-integration.html": "/features/dax-optimizer-integration.html", - "content/te3/features/dax-package-manager.html": "/features/dax-package-manager.html", - "content/te3/features/dax-query.html": "/features/dax-query.html", - "content/te3/features/dax-scripts.html": "/features/dax-scripts.html", - "content/te3/features/deployment.html": "/features/deployment.html", - "content/te3/features/diagram-view.html": "/features/views/diagram-view.html", - "content/te3/features/metadata-translation-editor.html": "/features/metadata-translation-editor.html", - "content/te3/features/perspective-editor.html": "/features/perspective-editor.html", - "content/te3/features/pivot-grid.html": "/features/pivot-grid.html", - "content/te3/features/preferences.html": "/references/preferences.html", - "content/te3/features/security-privacy.html": "/security/security-privacy.html", - "content/te3/features/shortcuts.html": "/references/shortcuts3.html", - "content/te3/features/supported-files.html": "/references/supported-files.html", - "content/te3/features/table-groups.html": "/features/table-groups.html", - "content/te3/features/tmdl.html": "/features/tmdl.html", - "content/te3/features/user-options.html": "/references/user-options.html", - "content/te3/getting-started.html": "/getting-started/getting-started.html", - "content/te3/import-tables.partial.html": "/features/import-tables.partial.html", - "content/te3/index.html": "/troubleshooting/licensing-activation.html", - "content/te3/other/downloads.html": "/references/downloads.html", - "content/te3/other/privacy-policy.html": "/security/privacy-policy.html", - "content/te3/other/release-history.html": "/references/release-history.html", - "content/te3/other/release-notes/3_0_1.html": "/references/release-notes/3_0_1.html", - "content/te3/other/release-notes/3_0_10.html": "/references/release-notes/3_0_10.html", - "content/te3/other/release-notes/3_0_2.html": "/references/release-notes/3_0_2.html", - "content/te3/other/release-notes/3_0_3.html": "/references/release-notes/3_0_3.html", - "content/te3/other/release-notes/3_0_4.html": "/references/release-notes/3_0_4.html", - "content/te3/other/release-notes/3_0_5.html": "/references/release-notes/3_0_5.html", - "content/te3/other/release-notes/3_0_6.html": "/references/release-notes/3_0_6.html", - "content/te3/other/release-notes/3_0_7.html": "/references/release-notes/3_0_7.html", - "content/te3/other/release-notes/3_0_8.html": "/references/release-notes/3_0_8.html", - "content/te3/other/release-notes/3_0_9.html": "/references/release-notes/3_0_9.html", - "content/te3/other/release-notes/3_10_0.html": "/references/release-notes/3_10_0.html", - "content/te3/other/release-notes/3_10_1.html": "/references/release-notes/3_10_1.html", - "content/te3/other/release-notes/3_11_0.html": "/references/release-notes/3_11_0.html", - "content/te3/other/release-notes/3_12_0.html": "/references/release-notes/3_12_0.html", - "content/te3/other/release-notes/3_12_1.html": "/references/release-notes/3_12_1.html", - "content/te3/other/release-notes/3_13_0.html": "/references/release-notes/3_13_0.html", - "content/te3/other/release-notes/3_14_0.html": "/references/release-notes/3_14_0.html", - "content/te3/other/release-notes/3_15_0.html": "/references/release-notes/3_15_0.html", - "content/te3/other/release-notes/3_16_0.html": "/references/release-notes/3_16_0.html", - "content/te3/other/release-notes/3_16_1.html": "/references/release-notes/3_16_1.html", - "content/te3/other/release-notes/3_16_2.html": "/references/release-notes/3_16_2.html", - "content/te3/other/release-notes/3_17_0.html": "/references/release-notes/3_17_0.html", - "content/te3/other/release-notes/3_17_1.html": "/references/release-notes/3_17_1.html", - "content/te3/other/release-notes/3_18_0.html": "/references/release-notes/3_18_0.html", - "content/te3/other/release-notes/3_18_1.html": "/references/release-notes/3_18_1.html", - "content/te3/other/release-notes/3_18_2.html": "/references/release-notes/3_18_2.html", - "content/te3/other/release-notes/3_19_0.html": "/references/release-notes/3_19_0.html", - "content/te3/other/release-notes/3_1_0.html": "/references/release-notes/3_1_0.html", - "content/te3/other/release-notes/3_1_1.html": "/references/release-notes/3_1_1.html", - "content/te3/other/release-notes/3_1_2.html": "/references/release-notes/3_1_2.html", - "content/te3/other/release-notes/3_1_3.html": "/references/release-notes/3_1_3.html", - "content/te3/other/release-notes/3_1_4.html": "/references/release-notes/3_1_4.html", - "content/te3/other/release-notes/3_1_5.html": "/references/release-notes/3_1_5.html", - "content/te3/other/release-notes/3_1_6.html": "/references/release-notes/3_1_6.html", - "content/te3/other/release-notes/3_1_7.html": "/references/release-notes/3_1_7.html", - "content/te3/other/release-notes/3_20_0.html": "/references/release-notes/3_20_0.html", - "content/te3/other/release-notes/3_20_1.html": "/references/release-notes/3_20_1.html", - "content/te3/other/release-notes/3_21_0.html": "/references/release-notes/3_21_0.html", - "content/te3/other/release-notes/3_22_0.html": "/references/release-notes/3_22_0.html", - "content/te3/other/release-notes/3_22_1.html": "/references/release-notes/3_22_1.html", - "content/te3/other/release-notes/3_23_0.html": "/references/release-notes/3_23_0.html", - "content/te3/other/release-notes/3_23_1.html": "/references/release-notes/3_23_1.html", - "content/te3/other/release-notes/3_24_0.html": "/references/release-notes/3_24_0.html", - "content/te3/other/release-notes/3_24_1.html": "/references/release-notes/3_24_1.html", - "content/te3/other/release-notes/3_24_2.html": "/references/release-notes/3_24_2.html", - "content/te3/other/release-notes/3_2_0.html": "/references/release-notes/3_2_0.html", - "content/te3/other/release-notes/3_2_1.html": "/references/release-notes/3_2_1.html", - "content/te3/other/release-notes/3_2_2.html": "/references/release-notes/3_2_2.html", - "content/te3/other/release-notes/3_2_3.html": "/references/release-notes/3_2_3.html", - "content/te3/other/release-notes/3_3_0.html": "/references/release-notes/3_3_0.html", - "content/te3/other/release-notes/3_3_1.html": "/references/release-notes/3_3_1.html", - "content/te3/other/release-notes/3_3_2.html": "/references/release-notes/3_3_2.html", - "content/te3/other/release-notes/3_3_3.html": "/references/release-notes/3_3_3.html", - "content/te3/other/release-notes/3_3_4.html": "/references/release-notes/3_3_4.html", - "content/te3/other/release-notes/3_3_5.html": "/references/release-notes/3_3_5.html", - "content/te3/other/release-notes/3_3_6.html": "/references/release-notes/3_3_6.html", - "content/te3/other/release-notes/3_4_0.html": "/references/release-notes/3_4_0.html", - "content/te3/other/release-notes/3_4_1.html": "/references/release-notes/3_4_1.html", - "content/te3/other/release-notes/3_4_2.html": "/references/release-notes/3_4_2.html", - "content/te3/other/release-notes/3_5_0.html": "/references/release-notes/3_5_0.html", - "content/te3/other/release-notes/3_5_1.html": "/references/release-notes/3_5_1.html", - "content/te3/other/release-notes/3_6_0.html": "/references/release-notes/3_6_0.html", - "content/te3/other/release-notes/3_7_0.html": "/references/release-notes/3_7_0.html", - "content/te3/other/release-notes/3_7_1.html": "/references/release-notes/3_7_1.html", - "content/te3/other/release-notes/3_8_0.html": "/references/release-notes/3_8_0.html", - "content/te3/other/release-notes/3_9_0.html": "/references/release-notes/3_9_0.html", - "content/te3/other/release-notes/beta-16_6.html": "/references/release-notes/beta-16_6.html", - "content/te3/other/release-notes/beta-17_4.html": "/references/release-notes/beta-17_4.html", - "content/te3/other/release-notes/beta-18_1.html": "/references/release-notes/beta-18_1.html", - "content/te3/other/release-notes/beta-18_2.html": "/references/release-notes/beta-18_2.html", - "content/te3/other/release-notes/beta-18_3.html": "/references/release-notes/beta-18_3.html", - "content/te3/other/release-notes/beta-18_4.html": "/references/release-notes/beta-18_4.html", - "content/te3/other/release-notes/beta-18_5.html": "/references/release-notes/beta-18_5.html", - "content/te3/other/roadmap.html": "/references/roadmap.html", - "content/te3/other/te3-eula.html": "/security/te3-eula.html", - "content/te3/other/third-party-notices.html": "/security/third-party-notices.html", - "content/te3/powerbi-xmla-pbix-workaround.html": "/how-tos/powerbi-xmla-pbix-workaround.html", - "content/te3/powerbi-xmla.html": "/tutorials/powerbi-xmla.html", - "content/te3/proxy-settings.html": "/troubleshooting/proxy-settings.html", - "content/te3/toc.html": "/index.html", - "content/te3/troubleshooting/calendar-blank-value.html": "/troubleshooting/calendar-blank-value.html", - "content/te3/troubleshooting/direct-lake-entity-updates-reverting.html": "/troubleshooting/direct-lake-entity-updates-reverting.html", - "content/te3/troubleshooting/locale-not-supported.html": "/troubleshooting/locale-not-supported.html", - "content/te3/tutorials/calendars.html": "/tutorials/calendars.html", - "content/te3/tutorials/connecting-to-azure-databricks.html": "/tutorials/connecting-to-azure-databricks.html", - "content/te3/tutorials/creating-macros.html": "/features/creating-macros.html", - "content/te3/tutorials/data-security/data-security-about.html": "/tutorials/data-security/data-security-about.html", - "content/te3/tutorials/data-security/data-security-setup-ols.html": "/tutorials/data-security/data-security-setup-ols.html", - "content/te3/tutorials/data-security/data-security-setup-rls.html": "/tutorials/data-security/data-security-setup-rls.html", - "content/te3/tutorials/data-security/data-security-testing.html": "/tutorials/data-security/data-security-testing.html", - "content/te3/tutorials/direct-lake-guidance.html": "/tutorials/direct-lake-guidance.html", - "content/te3/tutorials/importing-tables.html": "/tutorials/importing-tables.html", - "content/te3/tutorials/incremental-refresh/incremental-refresh-about.html": "/tutorials/incremental-refresh/incremental-refresh-about.html", - "content/te3/tutorials/incremental-refresh/incremental-refresh-modify.html": "/tutorials/incremental-refresh/incremental-refresh-modify.html", - "content/te3/tutorials/incremental-refresh/incremental-refresh-schema.html": "/tutorials/incremental-refresh/incremental-refresh-schema.html", - "content/te3/tutorials/incremental-refresh/incremental-refresh-setup.html": "/tutorials/incremental-refresh/incremental-refresh-setup.html", - "content/te3/tutorials/incremental-refresh/incremental-refresh-workspace-mode.html": "/tutorials/incremental-refresh/incremental-refresh-workspace-mode.html", - "content/te3/tutorials/new-as-model.html": "/tutorials/new-as-model.html", - "content/te3/tutorials/new-pbi-model.html": "/tutorials/new-pbi-model.html", - "content/te3/tutorials/udfs.html": "/tutorials/udfs.html", - "content/te3/tutorials/workspace-mode.html": "/tutorials/workspace-mode.html", - "content/te3/views/bpa-view.html": "/features/views/bpa-view.html", - "content/te3/views/data-refresh-view.html": "/features/views/data-refresh-view.html", - "content/te3/views/find-replace.html": "/features/views/find-replace.html", - "content/te3/views/macros-view.html": "/features/views/macros-view.html", - "content/te3/views/messages-view.html": "/features/views/messages-view.html", - "content/te3/views/properties-view.html": "/features/views/properties-view.html", - "content/te3/views/tom-explorer-view.html": "/features/views/tom-explorer-view.html", - "content/te3/views/user-interface.html": "/features/views/user-interface.html", - "content/te3/whats-new.html": "/references/whats-new.html", - "content/te3/workspace-mode.partial.html": "/features/workspace-mode.partial.html", - "content/te3/tutorials/workspace-mode.html": "/features/workspace-mode.partial.html" -} diff --git a/templates/tabulareditor/ManagedReference.extension.js b/templates/tabulareditor/ManagedReference.extension.js index 3f2e1ebc..e39d2ecd 100644 --- a/templates/tabulareditor/ManagedReference.extension.js +++ b/templates/tabulareditor/ManagedReference.extension.js @@ -6,56 +6,68 @@ exports.preTransform = function (model) { mainMenu: [ { text: "Pricing", - url: "https://tabulareditor.com/pricing" + url: "https://tabulareditor.com/pricing", + uiStringKey: "header.nav.pricing" }, { text: "Download", - url: "https://tabulareditor.com/downloads" + url: "https://tabulareditor.com/downloads", + uiStringKey: "header.nav.download" }, { text: "Learn", - url: "https://tabulareditor.com/learn" + url: "https://tabulareditor.com/learn", + uiStringKey: "header.nav.learn" }, { text: "Resources" , url: "/", + uiStringKey: "header.nav.resources", subMenu: { items: [ { text: "Blog", - url: "https://tabulareditor.com/blog" + url: "https://tabulareditor.com/blog", + uiStringKey: "header.nav.blog" }, { text: "Newsletter", - url: "https://tabulareditor.com/newsletter" + url: "https://tabulareditor.com/newsletter", + uiStringKey: "header.nav.newsletter" }, { text: "Publications", - url: "https://tabulareditor.com/publications" + url: "https://tabulareditor.com/publications", + uiStringKey: "header.nav.publications" }, { text: "Documentation", - url: "https://docs.tabulareditor.com/?tabs=TE3" + url: "https://docs.tabulareditor.com/?tabs=TE3", + uiStringKey: "header.nav.documentation" }, { text: "Support community", - url: "https://github.com/TabularEditor/TabularEditor3" + url: "https://github.com/TabularEditor/TabularEditor3", + uiStringKey: "header.nav.supportCommunity" } ] } }, { text: "Contact Us", - url: "https://tabulareditor.com/contact" + url: "https://tabulareditor.com/contact", + uiStringKey: "header.nav.contactUs" } ], button1: { text: "Free trial", - url: "https://www.tabulareditor.com/downloads" + url: "https://www.tabulareditor.com/downloads", + uiStringKey: "header.button1" }, button2: { text: "Sign in", - url: "https://www.tabulareditor.com" + url: "https://www.tabulareditor.com", + uiStringKey: "header.button2" }, } @@ -63,27 +75,32 @@ exports.preTransform = function (model) { buttons: [ { text: "Try Tabular Editor 3 for free", - url: "https://www.tabulareditor.com/downloads" + url: "https://www.tabulareditor.com/downloads", + uiStringKey: "footer.button1" }, { text: "Buy Tabular Editor 3", - url: "https://www.tabulareditor.com/pricing" + url: "https://www.tabulareditor.com/pricing", + uiStringKey: "footer.button2" } ], leftLinks: [ { text: "About us", - url: "https://tabulareditor.com/about-us" + url: "https://tabulareditor.com/about-us", + uiStringKey: "footer.aboutUs" }, { text: "Contact us", - url: "https://tabulareditor.com/contact" + url: "https://tabulareditor.com/contact", + uiStringKey: "footer.contactUs" }, { text: "Technical Support", url: "mailto:support@tabulareditor.com", rel: "noopener noreferrer", - target: "_blank" + target: "_blank", + uiStringKey: "footer.technicalSupport" } ], rightLinks: [ @@ -101,17 +118,20 @@ exports.preTransform = function (model) { bottomLinks: [ { text: "Privacy & Cookie policy", - url: "https://tabulareditor.com/privacy-policy" + url: "https://tabulareditor.com/privacy-policy", + uiStringKey: "footer.privacyPolicy" }, { text: "Terms & Conditions", - url: "https://tabulareditor.com/terms" + url: "https://tabulareditor.com/terms", + uiStringKey: "footer.termsConditions" }, { text: "License terms", - url: "https://tabulareditor.com/license-terms" + url: "https://tabulareditor.com/license-terms", + uiStringKey: "footer.licenseTerms" } ] } return model; -} \ No newline at end of file +} diff --git a/templates/tabulareditor/README.md b/templates/tabulareditor/README.md index da1eda4f..c88993de 100644 --- a/templates/tabulareditor/README.md +++ b/templates/tabulareditor/README.md @@ -113,6 +113,14 @@ And temporary for the forked repository. rsync -av --exclude='src' --exclude='tools' ./templates/tabulareditor ../TabularEditorDocsFork/templates/ ``` +For windows + +```bash +npm run build + +robocopy "C&&(l=C),N =this.nodes.length){var et=0;N.forEach(function(I){I.owner==c&&et++}),et==this.nodes.length&&(this.isConnected=!0)}},m.exports=r},function(m,w,L){"use strict";var u,o=L(1);function n(t){u=L(6),this.layout=t,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var t=this.layout.newGraph(),a=this.layout.newNode(null),f=this.add(t,a);return this.setRootGraph(f),this.rootGraph},n.prototype.add=function(t,a,f,e,v){if(f==null&&e==null&&v==null){if(t==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),t.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return t.parent=a,a.child=t,t}else{v=f,e=a,f=t;var i=e.getOwner(),r=v.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(r!=null&&r.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==r)return f.isInterGraph=!1,i.add(f,e,v);if(f.isInterGraph=!0,f.source=e,f.target=v,this.edges.indexOf(f)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(f),!(f.source!=null&&f.target!=null))throw"Edge source and/or target is null!";if(!(f.source.edges.indexOf(f)==-1&&f.target.edges.indexOf(f)==-1))throw"Edge already in source and/or target incidency list!";return f.source.edges.push(f),f.target.edges.push(f),f}},n.prototype.remove=function(t){if(t instanceof u){var a=t;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var f=[];f=f.concat(a.getEdges());for(var e,v=f.length,i=0;i e}}]),a}();m.exports=t},function(m,w,L){"use strict";function u(){}u.svd=function(o){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=o.length,this.n=o[0].length;var n=Math.min(this.m,this.n);this.s=function(xt){for(var Lt=[];xt-- >0;)Lt.push(0);return Lt}(Math.min(this.m+1,this.n)),this.U=function(xt){var Lt=function kt(St){if(St.length==0)return 0;for(var Wt=[],$t=0;$t {var f=a(548),e=a(140).CoSELayout,v=a(140).CoSENode,i=a(140).layoutBase.PointD,r=a(140).layoutBase.DimensionD,h=a(140).layoutBase.LayoutConstants,c=a(140).layoutBase.FDLayoutConstants,l=a(140).CoSEConstants,N=function(y,C){var F=y.cy,M=y.eles,P=M.nodes(),V=M.edges(),Y=void 0,et=void 0,I=void 0,k={};y.randomize&&(Y=C.nodeIndexes,et=C.xCoords,I=C.yCoords);var s=function(x){return typeof x=="function"},E=function(x,Z){return s(x)?x(Z):x},g=f.calcParentsWithoutChildren(F,M),T=function R(x,Z,_,S){for(var j=Z.length,z=0;z C&&(l=C),N =this.nodes.length){var et=0;N.forEach(function(I){I.owner==c&&et++}),et==this.nodes.length&&(this.isConnected=!0)}},m.exports=r},function(m,w,L){"use strict";var u,o=L(1);function n(t){u=L(6),this.layout=t,this.graphs=[],this.edges=[]}n.prototype.addRoot=function(){var t=this.layout.newGraph(),a=this.layout.newNode(null),f=this.add(t,a);return this.setRootGraph(f),this.rootGraph},n.prototype.add=function(t,a,f,e,v){if(f==null&&e==null&&v==null){if(t==null)throw"Graph is null!";if(a==null)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),t.parent!=null)throw"Already has a parent!";if(a.child!=null)throw"Already has a child!";return t.parent=a,a.child=t,t}else{v=f,e=a,f=t;var i=e.getOwner(),r=v.getOwner();if(!(i!=null&&i.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(r!=null&&r.getGraphManager()==this))throw"Target not in this graph mgr!";if(i==r)return f.isInterGraph=!1,i.add(f,e,v);if(f.isInterGraph=!0,f.source=e,f.target=v,this.edges.indexOf(f)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(f),!(f.source!=null&&f.target!=null))throw"Edge source and/or target is null!";if(!(f.source.edges.indexOf(f)==-1&&f.target.edges.indexOf(f)==-1))throw"Edge already in source and/or target incidency list!";return f.source.edges.push(f),f.target.edges.push(f),f}},n.prototype.remove=function(t){if(t instanceof u){var a=t;if(a.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(a==this.rootGraph||a.parent!=null&&a.parent.graphManager==this))throw"Invalid parent node!";var f=[];f=f.concat(a.getEdges());for(var e,v=f.length,i=0;i e}}]),a}();m.exports=t},function(m,w,L){"use strict";function u(){}u.svd=function(o){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=o.length,this.n=o[0].length;var n=Math.min(this.m,this.n);this.s=function(xt){for(var Lt=[];xt-- >0;)Lt.push(0);return Lt}(Math.min(this.m+1,this.n)),this.U=function(xt){var Lt=function kt(St){if(St.length==0)return 0;for(var Wt=[],$t=0;$t {var f=a(548),e=a(140).CoSELayout,v=a(140).CoSENode,i=a(140).layoutBase.PointD,r=a(140).layoutBase.DimensionD,h=a(140).layoutBase.LayoutConstants,c=a(140).layoutBase.FDLayoutConstants,l=a(140).CoSEConstants,N=function(y,C){var F=y.cy,M=y.eles,P=M.nodes(),V=M.edges(),Y=void 0,et=void 0,I=void 0,k={};y.randomize&&(Y=C.nodeIndexes,et=C.xCoords,I=C.yCoords);var s=function(x){return typeof x=="function"},E=function(x,Z){return s(x)?x(Z):x},g=f.calcParentsWithoutChildren(F,M),T=function R(x,Z,_,S){for(var j=Z.length,z=0;z ${this.parser.parseInline(e)} An error occurred: ${n.tokens?.map(s).join("")} ${this.parser.parseInline(tokens)} An error occurred: ${node.tokens?.map(output).join(\"\")}
"),k.debug("vertexText"+i);let r={isNode:n,label:Ht(nt(i)),labelStyle:t.replace("fill:","color:")};return ce(r)}else{let r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",t.replace("color:","fill:"));let a=[];typeof i=="string"?a=i.split(/\\n|\n|
/gi):Array.isArray(i)?a=i:a=[];for(let l of a){let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),s?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),r.appendChild(c)}return r}},"createLabel"),K=ir,nr=d((e,t,s,n,i)=>{t.arrowTypeStart&&Gt(e,"start",t.arrowTypeStart,s,n,i),t.arrowTypeEnd&&Gt(e,"end",t.arrowTypeEnd,s,n,i)},"addEdgeMarkers"),lr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Gt=d((e,t,s,n,i,r)=>{let a=lr[s];if(!a){k.warn(`Unknown arrow type: ${s}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${r}-${a}${l})`)},"addEdgeMarker"),St={},M={},cr=d((e,t)=>{let s=I(),n=X(s.flowchart.htmlLabels),i=t.labelType==="markdown"?mt(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:!0},s):K(t.label,t.labelStyle),r=e.insert("g").attr("class","edgeLabel"),a=r.insert("g").attr("class","label");a.node().appendChild(i);let l=i.getBBox();if(n){let u=i.children[0],h=N(i);l=u.getBoundingClientRect(),h.attr("width",l.width),h.attr("height",l.height)}a.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),St[t.id]=r,t.width=l.width,t.height=l.height;let c;if(t.startLabelLeft){let u=K(t.startLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startLeft=h,et(c,t.startLabelLeft)}if(t.startLabelRight){let u=K(t.startLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=h.node().appendChild(u),b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startRight=h,et(c,t.startLabelRight)}if(t.endLabelLeft){let u=K(t.endLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endLeft=h,et(c,t.endLabelLeft)}if(t.endLabelRight){let u=K(t.endLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endRight=h,et(c,t.endLabelRight)}return i},"insertEdgeLabel");function et(e,t){I().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(et,"setTerminalWidth");var or=d((e,t)=>{k.debug("Moving label abc88 ",e.id,e.label,St[e.id],t);let s=t.updatedPath?t.updatedPath:t.originalPath,n=I(),{subGraphTitleTotalMargin:i}=Ft(n);if(e.label){let r=St[e.id],a=e.x,l=e.y;if(s){let c=tt.calcLabelPosition(s);k.debug("Moving label "+e.label+" from (",a,",",l,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(a=c.x,l=c.y)}r.attr("transform",`translate(${a}, ${l+i/2})`)}if(e.startLabelLeft){let r=M[e.id].startLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.startLabelRight){let r=M[e.id].startRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelLeft){let r=M[e.id].endLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelRight){let r=M[e.id].endRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}},"positionEdgeLabel"),hr=d((e,t)=>{let s=e.x,n=e.y,i=Math.abs(t.x-s),r=Math.abs(t.y-n),a=e.width/2,l=e.height/2;return i>=a||r>=l},"outsideNode"),dr=d((e,t,s)=>{k.debug(`intersection calc abc89:
- outsidePoint: ${JSON.stringify(t)}
- insidePoint : ${JSON.stringify(s)}
- node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,r=Math.abs(n-s.x),a=e.width/2,l=s.x]*>/g,"").trim()==="";await Promise.all([...S].map(_=>new Promise(D=>{function x(){if(_.style.display="flex",_.style.flexDirection="column",C){let g=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,w=parseInt(g,10)*5+"px";_.style.minWidth=w,_.style.maxWidth=w}else _.style.width="100%";D(_)}d(x,"setupImage"),setTimeout(()=>{_.complete&&x()}),_.addEventListener("error",x),_.addEventListener("load",x)})))}m=L.getBoundingClientRect(),E.attr("width",m.width),E.attr("height",m.height)}return a?c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"):c.attr("transform","translate(0, "+-m.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:l,bbox:m,halfPadding:y,label:c}},"labelHelper"),B=d((e,t)=>{let s=t.node().getBBox();e.width=s.width,e.height=s.height},"updateNodeBounds");function j(e,t,s,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+s/2+")")}d(j,"insertPolygonShape");var kr=d(async(e,t)=>{t.useHtmlLabels||I().flowchart.htmlLabels||(t.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:r}=await A(e,t,"node "+t.classes,!0);k.info("Classes = ",t.classes);let a=n.insert("rect",":first-child");return a.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-r).attr("y",-i.height/2-r).attr("width",i.width+t.padding).attr("height",i.height+t.padding),B(t,a),t.intersect=function(l){return T.rect(t,l)},n},"note"),Lr=kr,Jt=d(e=>e?" "+e:"","formatClass"),Y=d((e,t)=>`${t||"node default"}${Jt(e.classes)} ${Jt(e.class)}`,"getClassesFromNode"),Qt=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=i+r,l=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];k.info("Question main (Circle)");let c=j(s,a,a,l);return c.attr("style",t.style),B(t,c),t.intersect=function(u){return k.warn("Intersect called"),T.polygon(t,l,u)},s},"question"),Sr=d((e,t)=>{let s=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return s.insert("polygon",":first-child").attr("points",i.map(function(a){return a.x+","+a.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(a){return T.circle(t,14,a)},s},"choice"),vr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=4,r=n.height+t.padding,a=r/i,l=n.width+2*a+t.padding,c=[{x:a,y:0},{x:l-a,y:0},{x:l,y:-r/2},{x:l-a,y:-r},{x:a,y:-r},{x:0,y:-r/2}],u=j(s,l,r,c);return u.attr("style",t.style),B(t,u),t.intersect=function(h){return T.polygon(t,c,h)},s},"hexagon"),Er=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,void 0,!0),i=2,r=n.height+2*t.padding,a=r/i,l=n.width+2*a+t.padding,c=pr(t.directions,n,t),u=j(s,l,r,c);return u.attr("style",t.style),B(t,u),t.intersect=function(h){return T.polygon(t,c,h)},s},"block_arrow"),_r=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-r/2,y:0},{x:i,y:0},{x:i,y:-r},{x:-r/2,y:-r},{x:0,y:-r/2}];return j(s,i,r,a).attr("style",t.style),t.width=i+r,t.height=r,t.intersect=function(c){return T.polygon(t,a,c)},s},"rect_left_inv_arrow"),Dr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-2*r/6,y:0},{x:i-r/6,y:0},{x:i+2*r/6,y:-r},{x:r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"lean_right"),Nr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:2*r/6,y:0},{x:i+r/6,y:0},{x:i-2*r/6,y:-r},{x:-r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"lean_left"),Tr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-2*r/6,y:0},{x:i+2*r/6,y:0},{x:i-r/6,y:-r},{x:r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"trapezoid"),Br=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:r/6,y:0},{x:i-r/6,y:0},{x:i+2*r/6,y:-r},{x:-2*r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"inv_trapezoid"),Cr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:0,y:0},{x:i+r/2,y:0},{x:i,y:-r/2},{x:i+r/2,y:-r},{x:0,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"rect_right_inv_arrow"),Ir=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=i/2,a=r/(2.5+i/50),l=n.height+a+t.padding,c="M 0,"+a+" a "+r+","+a+" 0,0,0 "+i+" 0 a "+r+","+a+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+r+","+a+" 0,0,0 "+i+" 0 l 0,"+-l,u=s.attr("label-offset-y",a).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-i/2+","+-(l/2+a)+")");return B(t,u),t.intersect=function(h){let b=T.rect(t,h),m=b.x-t.x;if(r!=0&&(Math.abs(m)
"):b,t.labelStyle,!0,!0));if(X(I().flowchart.htmlLabels)){let E=y.children[0],S=N(y);h=E.getBoundingClientRect(),S.attr("width",h.width),S.attr("height",h.height)}let L=t.padding/2;return N(y).attr("transform","translate( "+(h.width>m.width?0:(m.width-h.width)/2)+", "+(m.height+L+5)+")"),N(u).attr("transform","translate( "+(h.width
\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: replaceIconSubstring(decodeEntities(vertexText)),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select as select2 } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name((elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = evaluate(config2.flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n },\n config2\n ) : createLabel_default(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select2(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel_default(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel_default(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel_default(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel_default(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getConfig2().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select4 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select3 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config2.flowchart.htmlLabels);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = textNode.appendChild(\n createLabel_default(sanitizeText(decodeEntities(labelText), config2), node.labelStyle, false, isNode)\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config2.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config2.fontSize ? config2.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig2().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name((parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select4(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel_default(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name((parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select4(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig2().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel_default(classTitleString, node.labelStyle, true, true));\n select4(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select4(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig2().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/
"),k.debug("vertexText"+i);let r={isNode:n,label:Ht(nt(i)),labelStyle:t.replace("fill:","color:")};return ce(r)}else{let r=document.createElementNS("http://www.w3.org/2000/svg","text");r.setAttribute("style",t.replace("color:","fill:"));let a=[];typeof i=="string"?a=i.split(/\\n|\n|
/gi):Array.isArray(i)?a=i:a=[];for(let l of a){let c=document.createElementNS("http://www.w3.org/2000/svg","tspan");c.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),c.setAttribute("dy","1em"),c.setAttribute("x","0"),s?c.setAttribute("class","title-row"):c.setAttribute("class","row"),c.textContent=l.trim(),r.appendChild(c)}return r}},"createLabel"),K=ir,nr=d((e,t,s,n,i)=>{t.arrowTypeStart&&Gt(e,"start",t.arrowTypeStart,s,n,i),t.arrowTypeEnd&&Gt(e,"end",t.arrowTypeEnd,s,n,i)},"addEdgeMarkers"),lr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Gt=d((e,t,s,n,i,r)=>{let a=lr[s];if(!a){k.warn(`Unknown arrow type: ${s}`);return}let l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${r}-${a}${l})`)},"addEdgeMarker"),St={},M={},cr=d((e,t)=>{let s=I(),n=X(s.flowchart.htmlLabels),i=t.labelType==="markdown"?mt(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:!0},s):K(t.label,t.labelStyle),r=e.insert("g").attr("class","edgeLabel"),a=r.insert("g").attr("class","label");a.node().appendChild(i);let l=i.getBBox();if(n){let u=i.children[0],h=N(i);l=u.getBoundingClientRect(),h.attr("width",l.width),h.attr("height",l.height)}a.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),St[t.id]=r,t.width=l.width,t.height=l.height;let c;if(t.startLabelLeft){let u=K(t.startLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startLeft=h,et(c,t.startLabelLeft)}if(t.startLabelRight){let u=K(t.startLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=h.node().appendChild(u),b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),M[t.id]||(M[t.id]={}),M[t.id].startRight=h,et(c,t.startLabelRight)}if(t.endLabelLeft){let u=K(t.endLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endLeft=h,et(c,t.endLabelLeft)}if(t.endLabelRight){let u=K(t.endLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),b=h.insert("g").attr("class","inner");c=b.node().appendChild(u);let m=u.getBBox();b.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),h.node().appendChild(u),M[t.id]||(M[t.id]={}),M[t.id].endRight=h,et(c,t.endLabelRight)}return i},"insertEdgeLabel");function et(e,t){I().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(et,"setTerminalWidth");var or=d((e,t)=>{k.debug("Moving label abc88 ",e.id,e.label,St[e.id],t);let s=t.updatedPath?t.updatedPath:t.originalPath,n=I(),{subGraphTitleTotalMargin:i}=Ft(n);if(e.label){let r=St[e.id],a=e.x,l=e.y;if(s){let c=tt.calcLabelPosition(s);k.debug("Moving label "+e.label+" from (",a,",",l,") to (",c.x,",",c.y,") abc88"),t.updatedPath&&(a=c.x,l=c.y)}r.attr("transform",`translate(${a}, ${l+i/2})`)}if(e.startLabelLeft){let r=M[e.id].startLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.startLabelRight){let r=M[e.id].startRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelLeft){let r=M[e.id].endLeft,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}if(e.endLabelRight){let r=M[e.id].endRight,a=e.x,l=e.y;if(s){let c=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",s);a=c.x,l=c.y}r.attr("transform",`translate(${a}, ${l})`)}},"positionEdgeLabel"),hr=d((e,t)=>{let s=e.x,n=e.y,i=Math.abs(t.x-s),r=Math.abs(t.y-n),a=e.width/2,l=e.height/2;return i>=a||r>=l},"outsideNode"),dr=d((e,t,s)=>{k.debug(`intersection calc abc89:
- outsidePoint: ${JSON.stringify(t)}
- insidePoint : ${JSON.stringify(s)}
- node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);let n=e.x,i=e.y,r=Math.abs(n-s.x),a=e.width/2,l=s.x]*>/g,"").trim()==="";await Promise.all([...S].map(_=>new Promise(D=>{function x(){if(_.style.display="flex",_.style.flexDirection="column",C){let g=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,w=parseInt(g,10)*5+"px";_.style.minWidth=w,_.style.maxWidth=w}else _.style.width="100%";D(_)}d(x,"setupImage"),setTimeout(()=>{_.complete&&x()}),_.addEventListener("error",x),_.addEventListener("load",x)})))}m=L.getBoundingClientRect(),E.attr("width",m.width),E.attr("height",m.height)}return a?c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"):c.attr("transform","translate(0, "+-m.height/2+")"),t.centerLabel&&c.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),c.insert("rect",":first-child"),{shapeSvg:l,bbox:m,halfPadding:y,label:c}},"labelHelper"),B=d((e,t)=>{let s=t.node().getBBox();e.width=s.width,e.height=s.height},"updateNodeBounds");function j(e,t,s,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+s/2+")")}d(j,"insertPolygonShape");var kr=d(async(e,t)=>{t.useHtmlLabels||I().flowchart.htmlLabels||(t.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:r}=await A(e,t,"node "+t.classes,!0);k.info("Classes = ",t.classes);let a=n.insert("rect",":first-child");return a.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-r).attr("y",-i.height/2-r).attr("width",i.width+t.padding).attr("height",i.height+t.padding),B(t,a),t.intersect=function(l){return T.rect(t,l)},n},"note"),Lr=kr,Jt=d(e=>e?" "+e:"","formatClass"),Y=d((e,t)=>`${t||"node default"}${Jt(e.classes)} ${Jt(e.class)}`,"getClassesFromNode"),Qt=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=i+r,l=[{x:a/2,y:0},{x:a,y:-a/2},{x:a/2,y:-a},{x:0,y:-a/2}];k.info("Question main (Circle)");let c=j(s,a,a,l);return c.attr("style",t.style),B(t,c),t.intersect=function(u){return k.warn("Intersect called"),T.polygon(t,l,u)},s},"question"),Sr=d((e,t)=>{let s=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return s.insert("polygon",":first-child").attr("points",i.map(function(a){return a.x+","+a.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(a){return T.circle(t,14,a)},s},"choice"),vr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=4,r=n.height+t.padding,a=r/i,l=n.width+2*a+t.padding,c=[{x:a,y:0},{x:l-a,y:0},{x:l,y:-r/2},{x:l-a,y:-r},{x:a,y:-r},{x:0,y:-r/2}],u=j(s,l,r,c);return u.attr("style",t.style),B(t,u),t.intersect=function(h){return T.polygon(t,c,h)},s},"hexagon"),Er=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,void 0,!0),i=2,r=n.height+2*t.padding,a=r/i,l=n.width+2*a+t.padding,c=pr(t.directions,n,t),u=j(s,l,r,c);return u.attr("style",t.style),B(t,u),t.intersect=function(h){return T.polygon(t,c,h)},s},"block_arrow"),_r=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-r/2,y:0},{x:i,y:0},{x:i,y:-r},{x:-r/2,y:-r},{x:0,y:-r/2}];return j(s,i,r,a).attr("style",t.style),t.width=i+r,t.height=r,t.intersect=function(c){return T.polygon(t,a,c)},s},"rect_left_inv_arrow"),Dr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-2*r/6,y:0},{x:i-r/6,y:0},{x:i+2*r/6,y:-r},{x:r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"lean_right"),Nr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:2*r/6,y:0},{x:i+r/6,y:0},{x:i-2*r/6,y:-r},{x:-r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"lean_left"),Tr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:-2*r/6,y:0},{x:i+2*r/6,y:0},{x:i-r/6,y:-r},{x:r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"trapezoid"),Br=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:r/6,y:0},{x:i-r/6,y:0},{x:i+2*r/6,y:-r},{x:-2*r/6,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"inv_trapezoid"),Cr=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=n.height+t.padding,a=[{x:0,y:0},{x:i+r/2,y:0},{x:i,y:-r/2},{x:i+r/2,y:-r},{x:0,y:-r}],l=j(s,i,r,a);return l.attr("style",t.style),B(t,l),t.intersect=function(c){return T.polygon(t,a,c)},s},"rect_right_inv_arrow"),Ir=d(async(e,t)=>{let{shapeSvg:s,bbox:n}=await A(e,t,Y(t,void 0),!0),i=n.width+t.padding,r=i/2,a=r/(2.5+i/50),l=n.height+a+t.padding,c="M 0,"+a+" a "+r+","+a+" 0,0,0 "+i+" 0 a "+r+","+a+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+r+","+a+" 0,0,0 "+i+" 0 l 0,"+-l,u=s.attr("label-offset-y",a).insert("path",":first-child").attr("style",t.style).attr("d",c).attr("transform","translate("+-i/2+","+-(l/2+a)+")");return B(t,u),t.intersect=function(h){let b=T.rect(t,h),m=b.x-t.x;if(r!=0&&(Math.abs(m)
"):b,t.labelStyle,!0,!0));if(X(I().flowchart.htmlLabels)){let E=y.children[0],S=N(y);h=E.getBoundingClientRect(),S.attr("width",h.width),S.attr("height",h.height)}let L=t.padding/2;return N(y).attr("transform","translate( "+(h.width>m.width?0:(m.width-h.width)/2)+", "+(m.height+L+5)+")"),N(u).attr("transform","translate( "+(h.width
\");\n log.debug(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: replaceIconSubstring(decodeEntities(vertexText)),\n labelStyle: style.replace(\"fill:\", \"color:\")\n };\n let vertexNode = addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/dagre-wrapper/edges.js\nimport { line, curveBasis, select as select2 } from \"d3\";\n\n// src/dagre-wrapper/edgeMarker.ts\nvar addEdgeMarkers = /* @__PURE__ */ __name((svgPath, edge, url, id, diagramType) => {\n if (edge.arrowTypeStart) {\n addEdgeMarker(svgPath, \"start\", edge.arrowTypeStart, url, id, diagramType);\n }\n if (edge.arrowTypeEnd) {\n addEdgeMarker(svgPath, \"end\", edge.arrowTypeEnd, url, id, diagramType);\n }\n}, \"addEdgeMarkers\");\nvar arrowTypesMap = {\n arrow_cross: \"cross\",\n arrow_point: \"point\",\n arrow_barb: \"barb\",\n arrow_circle: \"circle\",\n aggregation: \"aggregation\",\n extension: \"extension\",\n composition: \"composition\",\n dependency: \"dependency\",\n lollipop: \"lollipop\"\n};\nvar addEdgeMarker = /* @__PURE__ */ __name((svgPath, position, arrowType, url, id, diagramType) => {\n const endMarkerType = arrowTypesMap[arrowType];\n if (!endMarkerType) {\n log.warn(`Unknown arrow type: ${arrowType}`);\n return;\n }\n const suffix = position === \"start\" ? \"Start\" : \"End\";\n svgPath.attr(`marker-${position}`, `url(${url}#${id}_${diagramType}-${endMarkerType}${suffix})`);\n}, \"addEdgeMarker\");\n\n// src/dagre-wrapper/edges.js\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar insertEdgeLabel = /* @__PURE__ */ __name((elem, edge) => {\n const config2 = getConfig2();\n const useHtmlLabels = evaluate(config2.flowchart.htmlLabels);\n const labelElement = edge.labelType === \"markdown\" ? createText(\n elem,\n edge.label,\n {\n style: edge.labelStyle,\n useHtmlLabels,\n addSvgBackground: true\n },\n config2\n ) : createLabel_default(edge.label, edge.labelStyle);\n const edgeLabel = elem.insert(\"g\").attr(\"class\", \"edgeLabel\");\n const label = edgeLabel.insert(\"g\").attr(\"class\", \"label\");\n label.node().appendChild(labelElement);\n let bbox = labelElement.getBBox();\n if (useHtmlLabels) {\n const div = labelElement.children[0];\n const dv = select2(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n edgeLabels[edge.id] = edgeLabel;\n edge.width = bbox.width;\n edge.height = bbox.height;\n let fo;\n if (edge.startLabelLeft) {\n const startLabelElement = createLabel_default(edge.startLabelLeft, edge.labelStyle);\n const startEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n setTerminalWidth(fo, edge.startLabelLeft);\n }\n if (edge.startLabelRight) {\n const startLabelElement = createLabel_default(edge.startLabelRight, edge.labelStyle);\n const startEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = startEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = startEdgeLabelRight.node().appendChild(startLabelElement);\n inner.node().appendChild(startLabelElement);\n const slBox = startLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n setTerminalWidth(fo, edge.startLabelRight);\n }\n if (edge.endLabelLeft) {\n const endLabelElement = createLabel_default(edge.endLabelLeft, edge.labelStyle);\n const endEdgeLabelLeft = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelLeft.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n setTerminalWidth(fo, edge.endLabelLeft);\n }\n if (edge.endLabelRight) {\n const endLabelElement = createLabel_default(edge.endLabelRight, edge.labelStyle);\n const endEdgeLabelRight = elem.insert(\"g\").attr(\"class\", \"edgeTerminals\");\n const inner = endEdgeLabelRight.insert(\"g\").attr(\"class\", \"inner\");\n fo = inner.node().appendChild(endLabelElement);\n const slBox = endLabelElement.getBBox();\n inner.attr(\"transform\", \"translate(\" + -slBox.width / 2 + \", \" + -slBox.height / 2 + \")\");\n endEdgeLabelRight.node().appendChild(endLabelElement);\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n setTerminalWidth(fo, edge.endLabelRight);\n }\n return labelElement;\n}, \"insertEdgeLabel\");\nfunction setTerminalWidth(fo, value) {\n if (getConfig2().flowchart.htmlLabels && fo) {\n fo.style.width = value.length * 9 + \"px\";\n fo.style.height = \"12px\";\n }\n}\n__name(setTerminalWidth, \"setTerminalWidth\");\nvar positionEdgeLabel = /* @__PURE__ */ __name((edge, paths) => {\n log.debug(\"Moving label abc88 \", edge.id, edge.label, edgeLabels[edge.id], paths);\n let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n const siteConfig = getConfig2();\n const { subGraphTitleTotalMargin } = getSubGraphTitleMargins(siteConfig);\n if (edge.label) {\n const el = edgeLabels[edge.id];\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcLabelPosition(path);\n log.debug(\n \"Moving label \" + edge.label + \" from (\",\n x,\n \",\",\n y,\n \") to (\",\n pos.x,\n \",\",\n pos.y,\n \") abc88\"\n );\n if (paths.updatedPath) {\n x = pos.x;\n y = pos.y;\n }\n }\n el.attr(\"transform\", `translate(${x}, ${y + subGraphTitleTotalMargin / 2})`);\n }\n if (edge.startLabelLeft) {\n const el = terminalLabels[edge.id].startLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeStart ? 10 : 0, \"start_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.startLabelRight) {\n const el = terminalLabels[edge.id].startRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(\n edge.arrowTypeStart ? 10 : 0,\n \"start_right\",\n path\n );\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelLeft) {\n const el = terminalLabels[edge.id].endLeft;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_left\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n if (edge.endLabelRight) {\n const el = terminalLabels[edge.id].endRight;\n let x = edge.x;\n let y = edge.y;\n if (path) {\n const pos = utils_default.calcTerminalLabelPosition(edge.arrowTypeEnd ? 10 : 0, \"end_right\", path);\n x = pos.x;\n y = pos.y;\n }\n el.attr(\"transform\", `translate(${x}, ${y})`);\n }\n}, \"positionEdgeLabel\");\nvar outsideNode = /* @__PURE__ */ __name((node, point2) => {\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(point2.x - x);\n const dy = Math.abs(point2.y - y);\n const w = node.width / 2;\n const h = node.height / 2;\n if (dx >= w || dy >= h) {\n return true;\n }\n return false;\n}, \"outsideNode\");\nvar intersection = /* @__PURE__ */ __name((node, outsidePoint, insidePoint) => {\n log.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(outsidePoint)}\n insidePoint : ${JSON.stringify(insidePoint)}\n node : x:${node.x} y:${node.y} w:${node.width} h:${node.height}`);\n const x = node.x;\n const y = node.y;\n const dx = Math.abs(x - insidePoint.x);\n const w = node.width / 2;\n let r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n const h = node.height / 2;\n const Q = Math.abs(outsidePoint.y - insidePoint.y);\n const R = Math.abs(outsidePoint.x - insidePoint.x);\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n const res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + r : insidePoint.x - R + r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - Q + q\n };\n if (r === 0) {\n res.x = outsidePoint.x;\n res.y = outsidePoint.y;\n }\n if (R === 0) {\n res.x = outsidePoint.x;\n }\n if (Q === 0) {\n res.y = outsidePoint.y;\n }\n log.debug(`abc89 topp/bott calc, Q ${Q}, q ${q}, R ${R}, r ${r}`, res);\n return res;\n } else {\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n r = x - w - outsidePoint.x;\n }\n let q = Q * r / R;\n let _x = insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - R + r;\n let _y = insidePoint.y < outsidePoint.y ? insidePoint.y + q : insidePoint.y - q;\n log.debug(`sides calc abc89, Q ${Q}, q ${q}, R ${R}, r ${r}`, { _x, _y });\n if (r === 0) {\n _x = outsidePoint.x;\n _y = outsidePoint.y;\n }\n if (R === 0) {\n _x = outsidePoint.x;\n }\n if (Q === 0) {\n _y = outsidePoint.y;\n }\n return { x: _x, y: _y };\n }\n}, \"intersection\");\nvar cutPathAtIntersect = /* @__PURE__ */ __name((_points, boundaryNode) => {\n log.debug(\"abc88 cutPathAtIntersect\", _points, boundaryNode);\n let points = [];\n let lastPointOutside = _points[0];\n let isInside = false;\n _points.forEach((point2) => {\n if (!outsideNode(boundaryNode, point2) && !isInside) {\n const inter = intersection(boundaryNode, lastPointOutside, point2);\n let pointPresent = false;\n points.forEach((p) => {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n });\n if (!points.some((e) => e.x === inter.x && e.y === inter.y)) {\n points.push(inter);\n }\n isInside = true;\n } else {\n lastPointOutside = point2;\n if (!isInside) {\n points.push(point2);\n }\n }\n });\n return points;\n}, \"cutPathAtIntersect\");\nvar insertEdge = /* @__PURE__ */ __name(function(elem, e, edge, clusterDb, diagramType, graph, id) {\n let points = edge.points;\n log.debug(\"abc88 InsertEdge: edge=\", edge, \"e=\", e);\n let pointsHasChanged = false;\n const tail = graph.node(e.v);\n var head = graph.node(e.w);\n if (head?.intersect && tail?.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n points.push(head.intersect(points[points.length - 1]));\n }\n if (edge.toCluster) {\n log.debug(\"to cluster abc88\", clusterDb[edge.toCluster]);\n points = cutPathAtIntersect(edge.points, clusterDb[edge.toCluster].node);\n pointsHasChanged = true;\n }\n if (edge.fromCluster) {\n log.debug(\"from cluster abc88\", clusterDb[edge.fromCluster]);\n points = cutPathAtIntersect(points.reverse(), clusterDb[edge.fromCluster].node).reverse();\n pointsHasChanged = true;\n }\n const lineData = points.filter((p) => !Number.isNaN(p.y));\n let curve = curveBasis;\n if (edge.curve && (diagramType === \"graph\" || diagramType === \"flowchart\")) {\n curve = edge.curve;\n }\n const { x, y } = getLineFunctionsWithOffset(edge);\n const lineFunction = line().x(x).y(y).curve(curve);\n let strokeClasses;\n switch (edge.thickness) {\n case \"normal\":\n strokeClasses = \"edge-thickness-normal\";\n break;\n case \"thick\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n case \"invisible\":\n strokeClasses = \"edge-thickness-thick\";\n break;\n default:\n strokeClasses = \"\";\n }\n switch (edge.pattern) {\n case \"solid\":\n strokeClasses += \" edge-pattern-solid\";\n break;\n case \"dotted\":\n strokeClasses += \" edge-pattern-dotted\";\n break;\n case \"dashed\":\n strokeClasses += \" edge-pattern-dashed\";\n break;\n }\n const svgPath = elem.append(\"path\").attr(\"d\", lineFunction(lineData)).attr(\"id\", edge.id).attr(\"class\", \" \" + strokeClasses + (edge.classes ? \" \" + edge.classes : \"\")).attr(\"style\", edge.style);\n let url = \"\";\n if (getConfig2().flowchart.arrowMarkerAbsolute || getConfig2().state.arrowMarkerAbsolute) {\n url = window.location.protocol + \"//\" + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, \"\\\\(\");\n url = url.replace(/\\)/g, \"\\\\)\");\n }\n addEdgeMarkers(svgPath, edge, url, id, diagramType);\n let paths = {};\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n paths.originalPath = edge.points;\n return paths;\n}, \"insertEdge\");\n\n// src/dagre-wrapper/nodes.js\nimport { select as select4 } from \"d3\";\n\n// src/dagre-wrapper/blockArrowHelper.ts\nvar expandAndDeduplicateDirections = /* @__PURE__ */ __name((directions) => {\n const uniqueDirections = /* @__PURE__ */ new Set();\n for (const direction of directions) {\n switch (direction) {\n case \"x\":\n uniqueDirections.add(\"right\");\n uniqueDirections.add(\"left\");\n break;\n case \"y\":\n uniqueDirections.add(\"up\");\n uniqueDirections.add(\"down\");\n break;\n default:\n uniqueDirections.add(direction);\n break;\n }\n }\n return uniqueDirections;\n}, \"expandAndDeduplicateDirections\");\nvar getArrowPoints = /* @__PURE__ */ __name((duplicatedDirections, bbox, node) => {\n const directions = expandAndDeduplicateDirections(duplicatedDirections);\n const f = 2;\n const height = bbox.height + 2 * node.padding;\n const midpoint = height / f;\n const width = bbox.width + 2 * midpoint + node.padding;\n const padding2 = node.padding / 2;\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom\n { x: 0, y: 0 },\n { x: midpoint, y: 0 },\n { x: width / 2, y: 2 * padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: 0 },\n // Right\n { x: width, y: -height / 3 },\n { x: width + 2 * padding2, y: -height / 2 },\n { x: width, y: -2 * height / 3 },\n { x: width, y: -height },\n // Top\n { x: width - midpoint, y: -height },\n { x: width / 2, y: -height - 2 * padding2 },\n { x: midpoint, y: -height },\n // Left\n { x: 0, y: -height },\n { x: 0, y: -2 * height / 3 },\n { x: -2 * padding2, y: -height / 2 },\n { x: 0, y: -height / 3 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: midpoint, y: 0 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: midpoint, y: -height },\n { x: width - midpoint, y: -height },\n { x: width, y: 0 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: width, y: -height + midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: 0, y: -height + midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\") && directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"up\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: -midpoint },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"right\") && directions.has(\"down\")) {\n return [\n { x: 0, y: 0 },\n { x: width, y: 0 },\n { x: 0, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"up\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: -midpoint },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"left\") && directions.has(\"down\")) {\n return [\n { x: width, y: 0 },\n { x: 0, y: 0 },\n { x: width, y: -height }\n ];\n }\n if (directions.has(\"right\")) {\n return [\n { x: midpoint, y: -padding2 },\n { x: midpoint, y: -padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: 0 },\n { x: width, y: -height / 2 },\n { x: width - midpoint, y: -height },\n { x: width - midpoint, y: -height + padding2 },\n // top left corner of arrow\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 }\n ];\n }\n if (directions.has(\"left\")) {\n return [\n { x: midpoint, y: 0 },\n { x: midpoint, y: -padding2 },\n // Two points, the right corners\n { x: width - midpoint, y: -padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: midpoint, y: -height + padding2 },\n { x: midpoint, y: -height },\n { x: 0, y: -height / 2 }\n ];\n }\n if (directions.has(\"up\")) {\n return [\n // Bottom center\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: 0, y: -height + padding2 },\n // Top of arrow\n { x: width / 2, y: -height },\n { x: width, y: -height + padding2 },\n // Top of right vertical bar\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 }\n ];\n }\n if (directions.has(\"down\")) {\n return [\n // Bottom center\n { x: width / 2, y: 0 },\n // Left pont of bottom arrow\n { x: 0, y: -padding2 },\n { x: midpoint, y: -padding2 },\n // Left top over vertical section\n { x: midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -height + padding2 },\n { x: width - midpoint, y: -padding2 },\n { x: width, y: -padding2 }\n ];\n }\n return [{ x: 0, y: 0 }];\n}, \"getArrowPoints\");\n\n// src/dagre-wrapper/intersect/intersect-node.js\nfunction intersectNode(node, point2) {\n return node.intersect(point2);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/dagre-wrapper/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point2) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point2.x;\n var py = cy - point2.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point2.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point2.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/dagre-wrapper/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point2) {\n return intersect_ellipse_default(node, rx, rx, point2);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/dagre-wrapper/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/dagre-wrapper/intersect/intersect-polygon.js\nvar intersect_polygon_default = intersectPolygon;\nfunction intersectPolygon(node, polyPoints, point2) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersect_line_default(\n node,\n point2,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n var pdx = p.x - point2.x;\n var pdy = p.y - point2.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point2.x;\n var qdy = q.y - point2.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\n\n// src/dagre-wrapper/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point2) => {\n var x = node.x;\n var y = node.y;\n var dx = point2.x - x;\n var dy = point2.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/dagre-wrapper/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/dagre-wrapper/shapes/util.js\nimport { select as select3 } from \"d3\";\nvar labelHelper = /* @__PURE__ */ __name(async (parent, node, _classes, isNode) => {\n const config2 = getConfig2();\n let classes2;\n const useHtmlLabels = node.useHtmlLabels || evaluate(config2.flowchart.htmlLabels);\n if (!_classes) {\n classes2 = \"node default\";\n } else {\n classes2 = _classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", node.labelStyle);\n let labelText;\n if (node.labelText === void 0) {\n labelText = \"\";\n } else {\n labelText = typeof node.labelText === \"string\" ? node.labelText : node.labelText[0];\n }\n const textNode = label.node();\n let text;\n if (node.labelType === \"markdown\") {\n text = createText(\n label,\n sanitizeText(decodeEntities(labelText), config2),\n {\n useHtmlLabels,\n width: node.width || config2.flowchart.wrappingWidth,\n classes: \"markdown-node-label\"\n },\n config2\n );\n } else {\n text = textNode.appendChild(\n createLabel_default(sanitizeText(decodeEntities(labelText), config2), node.labelStyle, false, isNode)\n );\n }\n let bbox = text.getBBox();\n const halfPadding = node.padding / 2;\n if (evaluate(config2.flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select3(text);\n const images = div.getElementsByTagName(\"img\");\n if (images) {\n const noImgText = labelText.replace(/]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config2.fontSize ? config2.fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n label.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n label.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n label.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label };\n}, \"labelHelper\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/dagre-wrapper/shapes/note.js\nvar note = /* @__PURE__ */ __name(async (parent, node) => {\n const useHtmlLabels = node.useHtmlLabels || getConfig2().flowchart.htmlLabels;\n if (!useHtmlLabels) {\n node.centerLabel = true;\n }\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n log.info(\"Classes = \", node.classes);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"note\");\nvar note_default = note;\n\n// src/dagre-wrapper/nodes.js\nvar formatClass = /* @__PURE__ */ __name((str) => {\n if (str) {\n return \" \" + str;\n }\n return \"\";\n}, \"formatClass\");\nvar getClassesFromNode = /* @__PURE__ */ __name((node, otherClasses) => {\n return `${otherClasses ? otherClasses : \"node default\"}${formatClass(node.classes)} ${formatClass(\n node.class\n )}`;\n}, \"getClassesFromNode\");\nvar question = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const s = w + h;\n const points = [\n { x: s / 2, y: 0 },\n { x: s, y: -s / 2 },\n { x: s / 2, y: -s },\n { x: 0, y: -s / 2 }\n ];\n log.info(\"Question main (Circle)\");\n const questionElem = insertPolygonShape(shapeSvg, s, s, points);\n questionElem.attr(\"style\", node.style);\n updateNodeBounds(node, questionElem);\n node.intersect = function(point2) {\n log.warn(\"Intersect called\");\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"question\");\nvar choice = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const s = 28;\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const choice2 = shapeSvg.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n );\n choice2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 28).attr(\"height\", 28);\n node.width = 28;\n node.height = 28;\n node.intersect = function(point2) {\n return intersect_default.circle(node, 14, point2);\n };\n return shapeSvg;\n}, \"choice\");\nvar hexagon = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const hex = insertPolygonShape(shapeSvg, w, h, points);\n hex.attr(\"style\", node.style);\n updateNodeBounds(node, hex);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"hexagon\");\nvar block_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, void 0, true);\n const f = 2;\n const h = bbox.height + 2 * node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = getArrowPoints(node.directions, bbox, node);\n const blockArrow = insertPolygonShape(shapeSvg, w, h, points);\n blockArrow.attr(\"style\", node.style);\n updateNodeBounds(node, blockArrow);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"block_arrow\");\nvar rect_left_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -h / 2, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: -h / 2, y: -h },\n { x: 0, y: -h / 2 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n node.width = w + h;\n node.height = h;\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_left_inv_arrow\");\nvar lean_right = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(parent, node, getClassesFromNode(node), true);\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_right\");\nvar lean_left = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 2 * h / 6, y: 0 },\n { x: w + h / 6, y: 0 },\n { x: w - 2 * h / 6, y: -h },\n { x: -h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"lean_left\");\nvar trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -2 * h / 6, y: 0 },\n { x: w + 2 * h / 6, y: 0 },\n { x: w - h / 6, y: -h },\n { x: h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"trapezoid\");\nvar inv_trapezoid = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: h / 6, y: 0 },\n { x: w - h / 6, y: 0 },\n { x: w + 2 * h / 6, y: -h },\n { x: -2 * h / 6, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"inv_trapezoid\");\nvar rect_right_inv_arrow = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w + h / 2, y: 0 },\n { x: w, y: -h / 2 },\n { x: w + h / 2, y: -h },\n { x: 0, y: -h }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"rect_right_inv_arrow\");\nvar cylinder = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = bbox.height + ry + node.padding;\n const shape = \"M 0,\" + ry + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 a \" + rx + \",\" + ry + \" 0,0,0 \" + -w + \" 0 l 0,\" + h + \" a \" + rx + \",\" + ry + \" 0,0,0 \" + w + \" 0 l 0,\" + -h;\n const el = shapeSvg.attr(\"label-offset-y\", ry).insert(\"path\", \":first-child\").attr(\"style\", node.style).attr(\"d\", shape).attr(\"transform\", \"translate(\" + -w / 2 + \",\" + -(h / 2 + ry) + \")\");\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n const pos = intersect_default.rect(node, point2);\n const x = pos.x - node.x;\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point2.y - node.y > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}, \"cylinder\");\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes + \" \" + node.class,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rect\");\nvar composite = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n \"node \" + node.classes,\n true\n );\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = node.positioned ? node.width : bbox.width + node.padding;\n const totalHeight = node.positioned ? node.height : bbox.height + node.padding;\n const x = node.positioned ? -totalWidth / 2 : -bbox.width / 2 - halfPadding;\n const y = node.positioned ? -totalHeight / 2 : -bbox.height / 2 - halfPadding;\n rect2.attr(\"class\", \"basic cluster composite label-container\").attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"composite\");\nvar labelRect = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg } = await labelHelper(parent, node, \"label\", true);\n log.trace(\"Classes = \", node.class);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const totalWidth = 0;\n const totalHeight = 0;\n rect2.attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n shapeSvg.attr(\"class\", \"label edgeLabel\");\n if (node.props) {\n const propKeys = new Set(Object.keys(node.props));\n if (node.props.borders) {\n applyNodePropertyBorders(rect2, node.props.borders, totalWidth, totalHeight);\n propKeys.delete(\"borders\");\n }\n propKeys.forEach((propKey) => {\n log.warn(`Unknown node property ${propKey}`);\n });\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"labelRect\");\nfunction applyNodePropertyBorders(rect2, borders, totalWidth, totalHeight) {\n const strokeDashArray = [];\n const addBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(length, 0);\n }, \"addBorder\");\n const skipBorder = /* @__PURE__ */ __name((length) => {\n strokeDashArray.push(0, length);\n }, \"skipBorder\");\n if (borders.includes(\"t\")) {\n log.debug(\"add top border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"r\")) {\n log.debug(\"add right border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n if (borders.includes(\"b\")) {\n log.debug(\"add bottom border\");\n addBorder(totalWidth);\n } else {\n skipBorder(totalWidth);\n }\n if (borders.includes(\"l\")) {\n log.debug(\"add left border\");\n addBorder(totalHeight);\n } else {\n skipBorder(totalHeight);\n }\n rect2.attr(\"stroke-dasharray\", strokeDashArray.join(\" \"));\n}\n__name(applyNodePropertyBorders, \"applyNodePropertyBorders\");\nvar rectWithTitle = /* @__PURE__ */ __name((parent, node) => {\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const innerLine = shapeSvg.insert(\"line\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n const text2 = node.labelText.flat ? node.labelText.flat() : node.labelText;\n let title = \"\";\n if (typeof text2 === \"object\") {\n title = text2[0];\n } else {\n title = text2;\n }\n log.info(\"Label text abc79\", title, text2, typeof text2 === \"object\");\n const text = label.node().appendChild(createLabel_default(title, node.labelStyle, true, true));\n let bbox = { width: 0, height: 0 };\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = text.children[0];\n const dv = select4(text);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n log.info(\"Text 2\", text2);\n const textRows = text2.slice(1, text2.length);\n let titleBox = text.getBBox();\n const descr = label.node().appendChild(\n createLabel_default(textRows.join ? textRows.join(\"
\") : textRows, node.labelStyle, true, true)\n );\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const halfPadding = node.padding / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text).attr(\n \"transform\",\n \"translate( \" + // (titleBox.width - bbox.width) / 2 +\n (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n rect2.attr(\"class\", \"outer title-state\").attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"rectWithTitle\");\nvar stadium = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\").attr(\"style\", node.style).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n updateNodeBounds(node, rect2);\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"stadium\");\nvar circle2 = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"Circle main\");\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n log.info(\"Circle intersect\", node, bbox.width / 2 + halfPadding, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding, point2);\n };\n return shapeSvg;\n}, \"circle\");\nvar doublecircle = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox, halfPadding } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const gap = 5;\n const circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", node.class);\n outerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding + gap).attr(\"width\", bbox.width + node.padding + gap * 2).attr(\"height\", bbox.height + node.padding + gap * 2);\n innerCircle.attr(\"style\", node.style).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"r\", bbox.width / 2 + halfPadding).attr(\"width\", bbox.width + node.padding).attr(\"height\", bbox.height + node.padding);\n log.info(\"DoubleCircle main\");\n updateNodeBounds(node, outerCircle);\n node.intersect = function(point2) {\n log.info(\"DoubleCircle intersect\", node, bbox.width / 2 + halfPadding + gap, point2);\n return intersect_default.circle(node, bbox.width / 2 + halfPadding + gap, point2);\n };\n return shapeSvg;\n}, \"doublecircle\");\nvar subroutine = /* @__PURE__ */ __name(async (parent, node) => {\n const { shapeSvg, bbox } = await labelHelper(\n parent,\n node,\n getClassesFromNode(node, void 0),\n true\n );\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n const el = insertPolygonShape(shapeSvg, w, h, points);\n el.attr(\"style\", node.style);\n updateNodeBounds(node, el);\n node.intersect = function(point2) {\n return intersect_default.polygon(node, points, point2);\n };\n return shapeSvg;\n}, \"subroutine\");\nvar start = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"start\");\nvar forkJoin = /* @__PURE__ */ __name((parent, node, dir) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let width = 70;\n let height = 10;\n if (dir === \"LR\") {\n width = 10;\n height = 70;\n }\n const shape = shapeSvg.append(\"rect\").attr(\"x\", -1 * width / 2).attr(\"y\", -1 * height / 2).attr(\"width\", width).attr(\"height\", height).attr(\"class\", \"fork-join\");\n updateNodeBounds(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n node.intersect = function(point2) {\n return intersect_default.rect(node, point2);\n };\n return shapeSvg;\n}, \"forkJoin\");\nvar end = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const innerCircle = shapeSvg.insert(\"circle\", \":first-child\");\n const circle3 = shapeSvg.insert(\"circle\", \":first-child\");\n circle3.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n innerCircle.attr(\"class\", \"state-end\").attr(\"r\", 5).attr(\"width\", 10).attr(\"height\", 10);\n updateNodeBounds(node, circle3);\n node.intersect = function(point2) {\n return intersect_default.circle(node, 7, point2);\n };\n return shapeSvg;\n}, \"end\");\nvar class_box = /* @__PURE__ */ __name((parent, node) => {\n const halfPadding = node.padding / 2;\n const rowPadding = 4;\n const lineHeight = 8;\n let classes2;\n if (!node.classes) {\n classes2 = \"node default\";\n } else {\n classes2 = \"node \" + node.classes;\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", classes2).attr(\"id\", node.domId || node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const topLine = shapeSvg.insert(\"line\");\n const bottomLine = shapeSvg.insert(\"line\");\n let maxWidth = 0;\n let maxHeight = rowPadding;\n const labelContainer = shapeSvg.insert(\"g\").attr(\"class\", \"label\");\n let verticalPos = 0;\n const hasInterface = node.classData.annotations?.[0];\n const interfaceLabelText = node.classData.annotations[0] ? \"\\xAB\" + node.classData.annotations[0] + \"\\xBB\" : \"\";\n const interfaceLabel = labelContainer.node().appendChild(createLabel_default(interfaceLabelText, node.labelStyle, true, true));\n let interfaceBBox = interfaceLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = interfaceLabel.children[0];\n const dv = select4(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr(\"width\", interfaceBBox.width);\n dv.attr(\"height\", interfaceBBox.height);\n }\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n let classTitleString = node.classData.label;\n if (node.classData.type !== void 0 && node.classData.type !== \"\") {\n if (getConfig2().flowchart.htmlLabels) {\n classTitleString += \"<\" + node.classData.type + \">\";\n } else {\n classTitleString += \"<\" + node.classData.type + \">\";\n }\n }\n const classTitleLabel = labelContainer.node().appendChild(createLabel_default(classTitleString, node.labelStyle, true, true));\n select4(classTitleLabel).attr(\"class\", \"classTitle\");\n let classTitleBBox = classTitleLabel.getBBox();\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n const div = classTitleLabel.children[0];\n const dv = select4(classTitleLabel);\n classTitleBBox = div.getBoundingClientRect();\n dv.attr(\"width\", classTitleBBox.width);\n dv.attr(\"height\", classTitleBBox.height);\n }\n maxHeight += classTitleBBox.height + rowPadding;\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n const classAttributes = [];\n node.classData.members.forEach((member) => {\n const parsedInfo = member.getDisplayDetails();\n let parsedText = parsedInfo.displayText;\n if (getConfig2().flowchart.htmlLabels) {\n parsedText = parsedText.replace(/
"},r),$.lineBreakRegex.test(e)))return e;let n=e.split(" ").filter(Boolean),i=[],o="";return n.forEach((a,l)=>{let c=v(`${a} `,r),u=v(o,r);if(c>t){let{hyphenatedStrings:g,remainingWord:h}=Ct(a,t,"-",r);i.push(o,...g),o=h}else u+c>=t?(i.push(o),o=a):o=[o,a].filter(Boolean).join(" ");l+1===n.length&&i.push(o)}),i.filter(a=>a!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Ct=w((e,t,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...e],o=[],a="";return i.forEach((l,c)=>{let u=`${a}${l}`;if(v(u,n)>=t){let x=c+1,g=i.length===x,h=`${u}${r}`;o.push(g?u:h),a=""}else a=u}),{hyphenatedStrings:o,remainingWord:a}},(e,t,r="-",n)=>`${e}${t}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);function ht(e,t){return W(e,t).height}s(ht,"calculateTextHeight");function v(e,t){return W(e,t).width}s(v,"calculateTextWidth");var W=w((e,t)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=t;if(!e)return{width:0,height:0};let[,o]=T(r),a=["sans-serif",n],l=e.split($.lineBreakRegex),c=[],u=L("body");if(!u.remove)return{width:0,height:0,lineHeight:0};let y=u.append("svg");for(let g of a){let h=0,d={width:0,height:0,lineHeight:0};for(let ft of l){let C=St();C.text=ft||vt;let P=Wt(y,C).style("font-size",o).style("font-weight",i).style("font-family",g),p=(P._groups||P)[0][0].getBBox();if(p.width===0&&p.height===0)throw new Error("svg element not in render tree");d.width=Math.round(Math.max(d.width,p.width)),h=Math.round(p.height),d.height+=h,d.lineHeight=Math.round(Math.max(d.lineHeight,h))}c.push(d)}y.remove();let x=isNaN(c[1].height)||isNaN(c[1].width)||isNaN(c[1].lineHeight)||c[0].height>c[1].height&&c[0].width>c[1].width&&c[0].lineHeight>c[1].lineHeight?0:1;return c[x]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),Pt=class{constructor(e=!1,t){this.count=0,this.count=t?t.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{s(this,"InitIDGenerator")}},M,Et=s(function(e){return M=M||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),M.innerHTML=e,unescape(M.textContent)},"entityDecode");function It(e){return"str"in e}s(It,"isDetailedError");var Lt=s((e,t,r,n)=>{if(!n)return;let i=e.node()?.getBBox();i&&e.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",t)},"insertTitle"),T=s(e=>{if(typeof e=="number")return[e,e+"px"];let t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");function dt(e,t){return V({},e,t)}s(dt,"cleanAndMerge");var Dt={assignWithDepth:b,wrapLabel:Tt,calculateTextHeight:ht,calculateTextWidth:v,calculateTextDimensions:W,cleanAndMerge:dt,detectInit:pt,detectDirective:rt,isSubstringInArray:$t,interpolateToCurve:it,calcLabelPosition:st,calcCardinalityPosition:Mt,calcTerminalLabelPosition:ct,formatUrl:ot,getStylesFromArray:lt,generateId:bt,random:Bt,runFunc:wt,entityDecode:Et,insertTitle:Lt,parseFontSize:T,InitIDGenerator:Pt},Ot=s(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),t},"encodeEntities"),jt=s(function(e){return e.replace(/fl°°/g,"").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),zt=s((e,t,{counter:r=0,prefix:n,suffix:i})=>`${n?`${n}_`:""}${e}_${t}_${r}${i?`_${i}`:""}`,"getEdgeId");function Ft(e){return e??null}s(Ft,"handleUndefinedAttr");export{vt as a,Ht as b,it as c,lt as d,bt as e,Bt as f,Tt as g,ht as h,v as i,It as j,T as k,dt as l,Dt as m,Ot as n,jt as o,zt as p,Ft as q};
-//# sourceMappingURL=chunk-5JBUDD4A.min.js.map
diff --git a/templates/tabulareditor/public/chunk-5JBUDD4A.min.js.map b/templates/tabulareditor/public/chunk-5JBUDD4A.min.js.map
deleted file mode 100644
index 9eba1948..00000000
--- a/templates/tabulareditor/public/chunk-5JBUDD4A.min.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-7DKRZKHE.mjs"],
- "sourcesContent": ["import {\n __name,\n assignWithDepth_default,\n common_default,\n detectType,\n directiveRegex,\n log,\n sanitizeDirective\n} from \"./chunk-6DBFFHIP.mjs\";\n\n// src/utils.ts\nimport { sanitizeUrl } from \"@braintree/sanitize-url\";\nimport {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore,\n select\n} from \"d3\";\nimport memoize from \"lodash-es/memoize.js\";\nimport merge from \"lodash-es/merge.js\";\nvar ZERO_WIDTH_SPACE = \"\\u200B\";\nvar d3CurveTypes = {\n curveBasis,\n curveBasisClosed,\n curveBasisOpen,\n curveBumpX,\n curveBumpY,\n curveBundle,\n curveCardinalClosed,\n curveCardinalOpen,\n curveCardinal,\n curveCatmullRomClosed,\n curveCatmullRomOpen,\n curveCatmullRom,\n curveLinear,\n curveLinearClosed,\n curveMonotoneX,\n curveMonotoneY,\n curveNatural,\n curveStep,\n curveStepAfter,\n curveStepBefore\n};\nvar directiveWithoutOpen = /\\s*(?:(\\w+)(?=:):|(\\w+))\\s*(?:(\\w+)|((?:(?!}%{2}).|\\r?\\n)*))?\\s*(?:}%{2})?/gi;\nvar detectInit = /* @__PURE__ */ __name(function(text, config) {\n const inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n let results = {};\n if (Array.isArray(inits)) {\n const args = inits.map((init) => init.args);\n sanitizeDirective(args);\n results = assignWithDepth_default(results, [...args]);\n } else {\n results = inits.args;\n }\n if (!results) {\n return;\n }\n let type = detectType(text, config);\n const prop = \"config\";\n if (results[prop] !== void 0) {\n if (type === \"flowchart-v2\") {\n type = \"flowchart\";\n }\n results[type] = results[prop];\n delete results[prop];\n }\n return results;\n}, \"detectInit\");\nvar detectDirective = /* @__PURE__ */ __name(function(text, type = null) {\n try {\n const commentWithoutDirectives = new RegExp(\n `[%]{2}(?![{]${directiveWithoutOpen.source})(?=[}][%]{2}).*\n`,\n \"ig\"\n );\n text = text.trim().replace(commentWithoutDirectives, \"\").replace(/'/gm, '\"');\n log.debug(\n `Detecting diagram directive${type !== null ? \" type:\" + type : \"\"} based on the text:${text}`\n );\n let match;\n const result = [];\n while ((match = directiveRegex.exec(text)) !== null) {\n if (match.index === directiveRegex.lastIndex) {\n directiveRegex.lastIndex++;\n }\n if (match && !type || type && match[1]?.match(type) || type && match[2]?.match(type)) {\n const type2 = match[1] ? match[1] : match[2];\n const args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({ type: type2, args });\n }\n }\n if (result.length === 0) {\n return { type: text, args: null };\n }\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n log.error(\n `ERROR: ${error.message} - Unable to parse directive type: '${type}' based on the text: '${text}'`\n );\n return { type: void 0, args: null };\n }\n}, \"detectDirective\");\nvar removeDirectives = /* @__PURE__ */ __name(function(text) {\n return text.replace(directiveRegex, \"\");\n}, \"removeDirectives\");\nvar isSubstringInArray = /* @__PURE__ */ __name(function(str, arr) {\n for (const [i, element] of arr.entries()) {\n if (element.match(str)) {\n return i;\n }\n }\n return -1;\n}, \"isSubstringInArray\");\nfunction interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n const curveName = `curve${interpolate.charAt(0).toUpperCase() + interpolate.slice(1)}`;\n return d3CurveTypes[curveName] ?? defaultCurve;\n}\n__name(interpolateToCurve, \"interpolateToCurve\");\nfunction formatUrl(linkStr, config) {\n const url = linkStr.trim();\n if (!url) {\n return void 0;\n }\n if (config.securityLevel !== \"loose\") {\n return sanitizeUrl(url);\n }\n return url;\n}\n__name(formatUrl, \"formatUrl\");\nvar runFunc = /* @__PURE__ */ __name((functionName, ...params) => {\n const arrPaths = functionName.split(\".\");\n const len = arrPaths.length - 1;\n const fnName = arrPaths[len];\n let obj = window;\n for (let i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) {\n log.error(`Function name: ${functionName} not found in window`);\n return;\n }\n }\n obj[fnName](...params);\n}, \"runFunc\");\nfunction distance(p1, p2) {\n if (!p1 || !p2) {\n return 0;\n }\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n__name(distance, \"distance\");\nfunction traverseEdge(points) {\n let prevPoint;\n let totalDistance = 0;\n points.forEach((point) => {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n });\n const remainingDistance = totalDistance / 2;\n return calculatePoint(points, remainingDistance);\n}\n__name(traverseEdge, \"traverseEdge\");\nfunction calcLabelPosition(points) {\n if (points.length === 1) {\n return points[0];\n }\n return traverseEdge(points);\n}\n__name(calcLabelPosition, \"calcLabelPosition\");\nvar roundNumber = /* @__PURE__ */ __name((num, precision = 2) => {\n const factor = Math.pow(10, precision);\n return Math.round(num * factor) / factor;\n}, \"roundNumber\");\nvar calculatePoint = /* @__PURE__ */ __name((points, distanceToTraverse) => {\n let prevPoint = void 0;\n let remainingDistance = distanceToTraverse;\n for (const point of points) {\n if (prevPoint) {\n const vectorDistance = distance(point, prevPoint);\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n const distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) {\n return prevPoint;\n }\n if (distanceRatio >= 1) {\n return { x: point.x, y: point.y };\n }\n if (distanceRatio > 0 && distanceRatio < 1) {\n return {\n x: roundNumber((1 - distanceRatio) * prevPoint.x + distanceRatio * point.x, 5),\n y: roundNumber((1 - distanceRatio) * prevPoint.y + distanceRatio * point.y, 5)\n };\n }\n }\n }\n prevPoint = point;\n }\n throw new Error(\"Could not find a suitable point for the given distance\");\n}, \"calculatePoint\");\nvar calcCardinalityPosition = /* @__PURE__ */ __name((isRelationTypePresent, points, initialPosition) => {\n log.info(`our points ${JSON.stringify(points)}`);\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n const distanceToCardinalityPoint = 25;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = isRelationTypePresent ? 10 : 5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n}, \"calcCardinalityPosition\");\nfunction calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n const points = structuredClone(_points);\n log.info(\"our points\", points);\n if (position !== \"start_left\" && position !== \"start_right\") {\n points.reverse();\n }\n const distanceToCardinalityPoint = 25 + terminalMarkerSize;\n const center = calculatePoint(points, distanceToCardinalityPoint);\n const d = 10 + terminalMarkerSize * 0.5;\n const angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n const cardinalityPosition = { x: 0, y: 0 };\n if (position === \"start_left\") {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n } else if (position === \"end_right\") {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n } else if (position === \"end_left\") {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n } else {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n }\n return cardinalityPosition;\n}\n__name(calcTerminalLabelPosition, \"calcTerminalLabelPosition\");\nfunction getStylesFromArray(arr) {\n let style = \"\";\n let labelStyle = \"\";\n for (const element of arr) {\n if (element !== void 0) {\n if (element.startsWith(\"color:\") || element.startsWith(\"text-align:\")) {\n labelStyle = labelStyle + element + \";\";\n } else {\n style = style + element + \";\";\n }\n }\n }\n return { style, labelStyle };\n}\n__name(getStylesFromArray, \"getStylesFromArray\");\nvar cnt = 0;\nvar generateId = /* @__PURE__ */ __name(() => {\n cnt++;\n return \"id-\" + Math.random().toString(36).substr(2, 12) + \"-\" + cnt;\n}, \"generateId\");\nfunction makeRandomHex(length) {\n let result = \"\";\n const characters = \"0123456789abcdef\";\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n__name(makeRandomHex, \"makeRandomHex\");\nvar random = /* @__PURE__ */ __name((options) => {\n return makeRandomHex(options.length);\n}, \"random\");\nvar getTextObj = /* @__PURE__ */ __name(function() {\n return {\n x: 0,\n y: 0,\n fill: void 0,\n anchor: \"start\",\n style: \"#666\",\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: void 0,\n text: \"\"\n };\n}, \"getTextObj\");\nvar drawSimpleText = /* @__PURE__ */ __name(function(elem, textData) {\n const nText = textData.text.replace(common_default.lineBreakRegex, \" \");\n const [, _fontSizePx] = parseFontSize(textData.fontSize);\n const textElem = elem.append(\"text\");\n textElem.attr(\"x\", textData.x);\n textElem.attr(\"y\", textData.y);\n textElem.style(\"text-anchor\", textData.anchor);\n textElem.style(\"font-family\", textData.fontFamily);\n textElem.style(\"font-size\", _fontSizePx);\n textElem.style(\"font-weight\", textData.fontWeight);\n textElem.attr(\"fill\", textData.fill);\n if (textData.class !== void 0) {\n textElem.attr(\"class\", textData.class);\n }\n const span = textElem.append(\"tspan\");\n span.attr(\"x\", textData.x + textData.textMargin * 2);\n span.attr(\"fill\", textData.fill);\n span.text(nText);\n return textElem;\n}, \"drawSimpleText\");\nvar wrapLabel = memoize(\n (label, maxWidth, config) => {\n if (!label) {\n return label;\n }\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", joinWith: \"
\" },\n config\n );\n if (common_default.lineBreakRegex.test(label)) {\n return label;\n }\n const words = label.split(\" \").filter(Boolean);\n const completedLines = [];\n let nextLine = \"\";\n words.forEach((word, index) => {\n const wordLength = calculateTextWidth(`${word} `, config);\n const nextLineLength = calculateTextWidth(nextLine, config);\n if (wordLength > maxWidth) {\n const { hyphenatedStrings, remainingWord } = breakString(word, maxWidth, \"-\", config);\n completedLines.push(nextLine, ...hyphenatedStrings);\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(\" \");\n }\n const currentWord = index + 1;\n const isLastWord = currentWord === words.length;\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter((line) => line !== \"\").join(config.joinWith);\n },\n (label, maxWidth, config) => `${label}${maxWidth}${config.fontSize}${config.fontWeight}${config.fontFamily}${config.joinWith}`\n);\nvar breakString = memoize(\n (word, maxWidth, hyphenCharacter = \"-\", config) => {\n config = Object.assign(\n { fontSize: 12, fontWeight: 400, fontFamily: \"Arial\", margin: 0 },\n config\n );\n const characters = [...word];\n const lines = [];\n let currentLine = \"\";\n characters.forEach((character, index) => {\n const nextLine = `${currentLine}${character}`;\n const lineWidth = calculateTextWidth(nextLine, config);\n if (lineWidth >= maxWidth) {\n const currentCharacter = index + 1;\n const isLastLine = characters.length === currentCharacter;\n const hyphenatedNextLine = `${nextLine}${hyphenCharacter}`;\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = \"\";\n } else {\n currentLine = nextLine;\n }\n });\n return { hyphenatedStrings: lines, remainingWord: currentLine };\n },\n (word, maxWidth, hyphenCharacter = \"-\", config) => `${word}${maxWidth}${hyphenCharacter}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nfunction calculateTextHeight(text, config) {\n return calculateTextDimensions(text, config).height;\n}\n__name(calculateTextHeight, \"calculateTextHeight\");\nfunction calculateTextWidth(text, config) {\n return calculateTextDimensions(text, config).width;\n}\n__name(calculateTextWidth, \"calculateTextWidth\");\nvar calculateTextDimensions = memoize(\n (text, config) => {\n const { fontSize = 12, fontFamily = \"Arial\", fontWeight = 400 } = config;\n if (!text) {\n return { width: 0, height: 0 };\n }\n const [, _fontSizePx] = parseFontSize(fontSize);\n const fontFamilies = [\"sans-serif\", fontFamily];\n const lines = text.split(common_default.lineBreakRegex);\n const dims = [];\n const body = select(\"body\");\n if (!body.remove) {\n return { width: 0, height: 0, lineHeight: 0 };\n }\n const g = body.append(\"svg\");\n for (const fontFamily2 of fontFamilies) {\n let cHeight = 0;\n const dim = { width: 0, height: 0, lineHeight: 0 };\n for (const line of lines) {\n const textObj = getTextObj();\n textObj.text = line || ZERO_WIDTH_SPACE;\n const textElem = drawSimpleText(g, textObj).style(\"font-size\", _fontSizePx).style(\"font-weight\", fontWeight).style(\"font-family\", fontFamily2);\n const bBox = (textElem._groups || textElem)[0][0].getBBox();\n if (bBox.width === 0 && bBox.height === 0) {\n throw new Error(\"svg element not in render tree\");\n }\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cHeight = Math.round(bBox.height);\n dim.height += cHeight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cHeight));\n }\n dims.push(dim);\n }\n g.remove();\n const index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n },\n (text, config) => `${text}${config.fontSize}${config.fontWeight}${config.fontFamily}`\n);\nvar InitIDGenerator = class {\n constructor(deterministic = false, seed) {\n this.count = 0;\n this.count = seed ? seed.length : 0;\n this.next = deterministic ? () => this.count++ : () => Date.now();\n }\n static {\n __name(this, \"InitIDGenerator\");\n }\n};\nvar decoder;\nvar entityDecode = /* @__PURE__ */ __name(function(html) {\n decoder = decoder || document.createElement(\"div\");\n html = escape(html).replace(/%26/g, \"&\").replace(/%23/g, \"#\").replace(/%3B/g, \";\");\n decoder.innerHTML = html;\n return unescape(decoder.textContent);\n}, \"entityDecode\");\nfunction isDetailedError(error) {\n return \"str\" in error;\n}\n__name(isDetailedError, \"isDetailedError\");\nvar insertTitle = /* @__PURE__ */ __name((parent, cssClass, titleTopMargin, title) => {\n if (!title) {\n return;\n }\n const bounds = parent.node()?.getBBox();\n if (!bounds) {\n return;\n }\n parent.append(\"text\").text(title).attr(\"text-anchor\", \"middle\").attr(\"x\", bounds.x + bounds.width / 2).attr(\"y\", -titleTopMargin).attr(\"class\", cssClass);\n}, \"insertTitle\");\nvar parseFontSize = /* @__PURE__ */ __name((fontSize) => {\n if (typeof fontSize === \"number\") {\n return [fontSize, fontSize + \"px\"];\n }\n const fontSizeNumber = parseInt(fontSize ?? \"\", 10);\n if (Number.isNaN(fontSizeNumber)) {\n return [void 0, void 0];\n } else if (fontSize === String(fontSizeNumber)) {\n return [fontSizeNumber, fontSize + \"px\"];\n } else {\n return [fontSizeNumber, fontSize];\n }\n}, \"parseFontSize\");\nfunction cleanAndMerge(defaultData, data) {\n return merge({}, defaultData, data);\n}\n__name(cleanAndMerge, \"cleanAndMerge\");\nvar utils_default = {\n assignWithDepth: assignWithDepth_default,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n calculateTextDimensions,\n cleanAndMerge,\n detectInit,\n detectDirective,\n isSubstringInArray,\n interpolateToCurve,\n calcLabelPosition,\n calcCardinalityPosition,\n calcTerminalLabelPosition,\n formatUrl,\n getStylesFromArray,\n generateId,\n random,\n runFunc,\n entityDecode,\n insertTitle,\n parseFontSize,\n InitIDGenerator\n};\nvar encodeEntities = /* @__PURE__ */ __name(function(text) {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function(s) {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, function(s) {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return \"\\uFB02\\xB0\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n } else {\n return \"\\uFB02\\xB0\" + innerTxt + \"\\xB6\\xDF\";\n }\n });\n return txt;\n}, \"encodeEntities\");\nvar decodeEntities = /* @__PURE__ */ __name(function(text) {\n return text.replace(/\uFB02\u00B0\u00B0/g, \"\").replace(/\uFB02\u00B0/g, \"&\").replace(/\u00B6\u00DF/g, \";\");\n}, \"decodeEntities\");\nvar getEdgeId = /* @__PURE__ */ __name((from, to, {\n counter = 0,\n prefix,\n suffix\n}) => {\n return `${prefix ? `${prefix}_` : \"\"}${from}_${to}_${counter}${suffix ? `_${suffix}` : \"\"}`;\n}, \"getEdgeId\");\nfunction handleUndefinedAttr(attrValue) {\n return attrValue ?? null;\n}\n__name(handleUndefinedAttr, \"handleUndefinedAttr\");\n\nexport {\n ZERO_WIDTH_SPACE,\n removeDirectives,\n interpolateToCurve,\n getStylesFromArray,\n generateId,\n random,\n wrapLabel,\n calculateTextHeight,\n calculateTextWidth,\n isDetailedError,\n parseFontSize,\n cleanAndMerge,\n utils_default,\n encodeEntities,\n decodeEntities,\n getEdgeId,\n handleUndefinedAttr\n};\n"],
- "mappings": "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",
- "names": ["import_sanitize_url", "ZERO_WIDTH_SPACE", "d3CurveTypes", "basis_default", "basisClosed_default", "basisOpen_default", "bumpX", "bumpY", "bundle_default", "cardinalClosed_default", "cardinalOpen_default", "cardinal_default", "catmullRomClosed_default", "catmullRomOpen_default", "catmullRom_default", "linear_default", "linearClosed_default", "monotoneX", "monotoneY", "natural_default", "step_default", "stepAfter", "stepBefore", "directiveWithoutOpen", "detectInit", "__name", "text", "config", "inits", "detectDirective", "results", "args", "init", "sanitizeDirective", "assignWithDepth_default", "type", "detectType", "prop", "commentWithoutDirectives", "log", "match", "result", "directiveRegex", "type2", "error", "removeDirectives", "isSubstringInArray", "str", "arr", "i", "element", "interpolateToCurve", "interpolate", "defaultCurve", "curveName", "formatUrl", "linkStr", "url", "runFunc", "functionName", "params", "arrPaths", "len", "fnName", "obj", "distance", "p1", "p2", "traverseEdge", "points", "prevPoint", "totalDistance", "point", "remainingDistance", "calculatePoint", "calcLabelPosition", "roundNumber", "num", "precision", "factor", "distanceToTraverse", "vectorDistance", "distanceRatio", "calcCardinalityPosition", "isRelationTypePresent", "initialPosition", "center", "d", "angle", "cardinalityPosition", "calcTerminalLabelPosition", "terminalMarkerSize", "position", "_points", "distanceToCardinalityPoint", "getStylesFromArray", "style", "labelStyle", "cnt", "generateId", "makeRandomHex", "length", "characters", "charactersLength", "random", "options", "getTextObj", "drawSimpleText", "elem", "textData", "nText", "common_default", "_fontSizePx", "parseFontSize", "textElem", "span", "wrapLabel", "memoize_default", "label", "maxWidth", "words", "completedLines", "nextLine", "word", "index", "wordLength", "calculateTextWidth", "nextLineLength", "hyphenatedStrings", "remainingWord", "breakString", "line", "hyphenCharacter", "lines", "currentLine", "character", "currentCharacter", "isLastLine", "hyphenatedNextLine", "calculateTextHeight", "calculateTextDimensions", "fontSize", "fontFamily", "fontWeight", "fontFamilies", "dims", "body", "select_default", "g", "fontFamily2", "cHeight", "dim", "textObj", "bBox", "InitIDGenerator", "deterministic", "seed", "decoder", "entityDecode", "html", "isDetailedError", "insertTitle", "parent", "cssClass", "titleTopMargin", "title", "bounds", "fontSizeNumber", "cleanAndMerge", "defaultData", "data", "merge_default", "utils_default", "encodeEntities", "txt", "s", "innerTxt", "decodeEntities", "getEdgeId", "from", "to", "counter", "prefix", "suffix", "handleUndefinedAttr", "attrValue"]
-}
diff --git a/templates/tabulareditor/public/chunk-5KKNARB2.min.js b/templates/tabulareditor/public/chunk-5KKNARB2.min.js
deleted file mode 100644
index cea4423a..00000000
--- a/templates/tabulareditor/public/chunk-5KKNARB2.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{a as i,b as o,c as t,d as n,e as c,f as e,g as u,l as d,n as l,o as s}from"./chunk-TERFBH2B.min.js";var p=class extends s{static{e(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},h={parser:{TokenBuilder:e(()=>new p,"TokenBuilder"),ValueConverter:e(()=>new l,"ValueConverter")}};function m(G=n){let r=t(o(G),u),a=t(i({shared:r}),d,h);return r.ServiceRegistry.register(a),{shared:r,GitGraph:a}}e(m,"createGitGraphServices");export{h as a,m as b};
-//# sourceMappingURL=chunk-5KKNARB2.min.js.map
diff --git a/templates/tabulareditor/public/chunk-5KKNARB2.min.js.map b/templates/tabulareditor/public/chunk-5KKNARB2.min.js.map
deleted file mode 100644
index 54bf9e1d..00000000
--- a/templates/tabulareditor/public/chunk-5KKNARB2.min.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../node_modules/@mermaid-js/parser/dist/chunks/mermaid-parser.core/chunk-NCMFTTUW.mjs"],
- "sourcesContent": ["import {\n AbstractMermaidTokenBuilder,\n CommonValueConverter,\n GitGraphGeneratedModule,\n MermaidGeneratedSharedModule,\n __name\n} from \"./chunk-Y27MQZ3U.mjs\";\n\n// src/language/gitGraph/module.ts\nimport {\n inject,\n createDefaultCoreModule,\n createDefaultSharedCoreModule,\n EmptyFileSystem\n} from \"langium\";\n\n// src/language/gitGraph/tokenBuilder.ts\nvar GitGraphTokenBuilder = class extends AbstractMermaidTokenBuilder {\n static {\n __name(this, \"GitGraphTokenBuilder\");\n }\n constructor() {\n super([\"gitGraph\"]);\n }\n};\n\n// src/language/gitGraph/module.ts\nvar GitGraphModule = {\n parser: {\n TokenBuilder: /* @__PURE__ */ __name(() => new GitGraphTokenBuilder(), \"TokenBuilder\"),\n ValueConverter: /* @__PURE__ */ __name(() => new CommonValueConverter(), \"ValueConverter\")\n }\n};\nfunction createGitGraphServices(context = EmptyFileSystem) {\n const shared = inject(\n createDefaultSharedCoreModule(context),\n MermaidGeneratedSharedModule\n );\n const GitGraph = inject(\n createDefaultCoreModule({ shared }),\n GitGraphGeneratedModule,\n GitGraphModule\n );\n shared.ServiceRegistry.register(GitGraph);\n return { shared, GitGraph };\n}\n__name(createGitGraphServices, \"createGitGraphServices\");\n\nexport {\n GitGraphModule,\n createGitGraphServices\n};\n"],
- "mappings": "2GAiBA,IAAIA,EAAuB,cAAcC,CAA4B,CACnE,MAAO,CACLC,EAAO,KAAM,sBAAsB,CACrC,CACA,aAAc,CACZ,MAAM,CAAC,UAAU,CAAC,CACpB,CACF,EAGIC,EAAiB,CACnB,OAAQ,CACN,aAA8BD,EAAO,IAAM,IAAIF,EAAwB,cAAc,EACrF,eAAgCE,EAAO,IAAM,IAAIE,EAAwB,gBAAgB,CAC3F,CACF,EACA,SAASC,EAAuBC,EAAUC,EAAiB,CACzD,IAAMC,EAASC,EACbC,EAA8BJ,CAAO,EACrCK,CACF,EACMC,EAAWH,EACfI,EAAwB,CAAE,OAAAL,CAAO,CAAC,EAClCM,EACAX,CACF,EACA,OAAAK,EAAO,gBAAgB,SAASI,CAAQ,EACjC,CAAE,OAAAJ,EAAQ,SAAAI,CAAS,CAC5B,CACAV,EAAOG,EAAwB,wBAAwB",
- "names": ["GitGraphTokenBuilder", "AbstractMermaidTokenBuilder", "__name", "GitGraphModule", "CommonValueConverter", "createGitGraphServices", "context", "EmptyFileSystem", "shared", "inject", "createDefaultSharedCoreModule", "MermaidGeneratedSharedModule", "GitGraph", "createDefaultCoreModule", "GitGraphGeneratedModule"]
-}
diff --git a/templates/tabulareditor/public/chunk-7FSZ6LZK.min.js b/templates/tabulareditor/public/chunk-7FSZ6LZK.min.js
deleted file mode 100644
index a670dc4b..00000000
--- a/templates/tabulareditor/public/chunk-7FSZ6LZK.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import{a as O}from"./chunk-4PPOYW3K.min.js";import{a as U,d as w}from"./chunk-TDQFLYH7.min.js";import{a as H}from"./chunk-6FLBKFBW.min.js";import{d as Y}from"./chunk-O7HQDJ4J.min.js";import{m as u}from"./chunk-5JBUDD4A.min.js";import{Fa as R,I as W,Ja as X,Z as y,h as d,ia as T,j as f}from"./chunk-F7ONS4BM.min.js";var G=d((r,t,a,i,o)=>{t.arrowTypeStart&&A(r,"start",t.arrowTypeStart,a,i,o),t.arrowTypeEnd&&A(r,"end",t.arrowTypeEnd,a,i,o)},"addEdgeMarkers"),P={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},A=d((r,t,a,i,o,l)=>{let s=P[a];if(!s){f.warn(`Unknown arrow type: ${a}`);return}let n=t==="start"?"Start":"End";r.attr(`marker-${t}`,`url(${i}#${o}_${l}-${s}${n})`)},"addEdgeMarker"),_=new Map,k=new Map,gt=d(()=>{_.clear(),k.clear()},"clear"),M=d(r=>r?r.reduce((a,i)=>a+";"+i,""):"","getLabelStyles"),ut=d(async(r,t)=>{let a=W(y().flowchart.htmlLabels),i=await Y(r,t.label,{style:M(t.labelStyle),useHtmlLabels:a,addSvgBackground:!0,isNode:!1});f.info("abc82",t,t.labelType);let o=r.insert("g").attr("class","edgeLabel"),l=o.insert("g").attr("class","label");l.node().appendChild(i);let s=i.getBBox();if(a){let e=i.children[0],h=T(i);s=e.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}l.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),_.set(t.id,o),t.width=s.width,t.height=s.height;let n;if(t.startLabelLeft){let e=await w(t.startLabelLeft,M(t.labelStyle)),h=r.insert("g").attr("class","edgeTerminals"),p=h.insert("g").attr("class","inner");n=p.node().appendChild(e);let c=e.getBBox();p.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),k.get(t.id)||k.set(t.id,{}),k.get(t.id).startLeft=h,v(n,t.startLabelLeft)}if(t.startLabelRight){let e=await w(t.startLabelRight,M(t.labelStyle)),h=r.insert("g").attr("class","edgeTerminals"),p=h.insert("g").attr("class","inner");n=h.node().appendChild(e),p.node().appendChild(e);let c=e.getBBox();p.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),k.get(t.id)||k.set(t.id,{}),k.get(t.id).startRight=h,v(n,t.startLabelRight)}if(t.endLabelLeft){let e=await w(t.endLabelLeft,M(t.labelStyle)),h=r.insert("g").attr("class","edgeTerminals"),p=h.insert("g").attr("class","inner");n=p.node().appendChild(e);let c=e.getBBox();p.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),h.node().appendChild(e),k.get(t.id)||k.set(t.id,{}),k.get(t.id).endLeft=h,v(n,t.endLabelLeft)}if(t.endLabelRight){let e=await w(t.endLabelRight,M(t.labelStyle)),h=r.insert("g").attr("class","edgeTerminals"),p=h.insert("g").attr("class","inner");n=p.node().appendChild(e);let c=e.getBBox();p.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),h.node().appendChild(e),k.get(t.id)||k.set(t.id,{}),k.get(t.id).endRight=h,v(n,t.endLabelRight)}return i},"insertEdgeLabel");function v(r,t){y().flowchart.htmlLabels&&r&&(r.style.width=t.length*9+"px",r.style.height="12px")}d(v,"setTerminalWidth");var Lt=d((r,t)=>{f.debug("Moving label abc88 ",r.id,r.label,_.get(r.id),t);let a=t.updatedPath?t.updatedPath:t.originalPath,i=y(),{subGraphTitleTotalMargin:o}=H(i);if(r.label){let l=_.get(r.id),s=r.x,n=r.y;if(a){let e=u.calcLabelPosition(a);f.debug("Moving label "+r.label+" from (",s,",",n,") to (",e.x,",",e.y,") abc88"),t.updatedPath&&(s=e.x,n=e.y)}l.attr("transform",`translate(${s}, ${n+o/2})`)}if(r.startLabelLeft){let l=k.get(r.id).startLeft,s=r.x,n=r.y;if(a){let e=u.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_left",a);s=e.x,n=e.y}l.attr("transform",`translate(${s}, ${n})`)}if(r.startLabelRight){let l=k.get(r.id).startRight,s=r.x,n=r.y;if(a){let e=u.calcTerminalLabelPosition(r.arrowTypeStart?10:0,"start_right",a);s=e.x,n=e.y}l.attr("transform",`translate(${s}, ${n})`)}if(r.endLabelLeft){let l=k.get(r.id).endLeft,s=r.x,n=r.y;if(a){let e=u.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_left",a);s=e.x,n=e.y}l.attr("transform",`translate(${s}, ${n})`)}if(r.endLabelRight){let l=k.get(r.id).endRight,s=r.x,n=r.y;if(a){let e=u.calcTerminalLabelPosition(r.arrowTypeEnd?10:0,"end_right",a);s=e.x,n=e.y}l.attr("transform",`translate(${s}, ${n})`)}},"positionEdgeLabel"),V=d((r,t)=>{let a=r.x,i=r.y,o=Math.abs(t.x-a),l=Math.abs(t.y-i),s=r.width/2,n=r.height/2;return o>=s||l>=n},"outsideNode"),D=d((r,t,a)=>{f.debug(`intersection calc abc89:
- outsidePoint: ${JSON.stringify(t)}
- insidePoint : ${JSON.stringify(a)}
- node : x:${r.x} y:${r.y} w:${r.width} h:${r.height}`);let i=r.x,o=r.y,l=Math.abs(i-a.x),s=r.width/2,n=a.x
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n}, \"setupToolTips\");\nfunctions.push(setupToolTips);\nvar direction = \"TB\";\nvar getDirection = /* @__PURE__ */ __name(() => direction, \"getDirection\");\nvar setDirection = /* @__PURE__ */ __name((dir) => {\n direction = dir;\n}, \"setDirection\");\nvar addNamespace = /* @__PURE__ */ __name(function(id) {\n if (namespaces.has(id)) {\n return;\n }\n namespaces.set(id, {\n id,\n classes: /* @__PURE__ */ new Map(),\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n });\n namespaceCounter++;\n}, \"addNamespace\");\nvar getNamespace = /* @__PURE__ */ __name(function(name) {\n return namespaces.get(name);\n}, \"getNamespace\");\nvar getNamespaces = /* @__PURE__ */ __name(function() {\n return namespaces;\n}, \"getNamespaces\");\nvar addClassesToNamespace = /* @__PURE__ */ __name(function(id, classNames) {\n if (!namespaces.has(id)) {\n return;\n }\n for (const name of classNames) {\n const { className } = splitClassNameAndType(name);\n classes.get(className).parent = id;\n namespaces.get(id).classes.set(className, classes.get(className));\n }\n}, \"addClassesToNamespace\");\nvar setCssStyle = /* @__PURE__ */ __name(function(id, styles) {\n const thisClass = classes.get(id);\n if (!styles || !thisClass) {\n return;\n }\n for (const s of styles) {\n if (s.includes(\",\")) {\n thisClass.styles.push(...s.split(\",\"));\n } else {\n thisClass.styles.push(s);\n }\n }\n}, \"setCssStyle\");\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\n__name(getArrowMarker, \"getArrowMarker\");\nvar getData = /* @__PURE__ */ __name(() => {\n const nodes = [];\n const edges = [];\n const config = getConfig();\n for (const namespaceKey of namespaces.keys()) {\n const namespace = namespaces.get(namespaceKey);\n if (namespace) {\n const node = {\n id: namespace.id,\n label: namespace.id,\n isGroup: true,\n padding: config.class.padding ?? 16,\n // parent node must be one of [rect, roundedWithTitle, noteGroup, divider]\n shape: \"rect\",\n cssStyles: [\"fill: none\", \"stroke: black\"],\n look: config.look\n };\n nodes.push(node);\n }\n }\n for (const classKey of classes.keys()) {\n const classNode = classes.get(classKey);\n if (classNode) {\n const node = classNode;\n node.parentId = classNode.parent;\n node.look = config.look;\n nodes.push(node);\n }\n }\n let cnt = 0;\n for (const note of notes) {\n cnt++;\n const noteNode = {\n id: note.id,\n label: note.text,\n isGroup: false,\n shape: \"note\",\n padding: config.class.padding ?? 6,\n cssStyles: [\n \"text-align: left\",\n \"white-space: nowrap\",\n `fill: ${config.themeVariables.noteBkgColor}`,\n `stroke: ${config.themeVariables.noteBorderColor}`\n ],\n look: config.look\n };\n nodes.push(noteNode);\n const noteClassId = classes.get(note.class)?.id ?? \"\";\n if (noteClassId) {\n const edge = {\n id: `edgeNote${cnt}`,\n start: note.id,\n end: noteClassId,\n type: \"normal\",\n thickness: \"normal\",\n classes: \"relation\",\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n arrowheadStyle: \"\",\n labelStyle: [\"\"],\n style: [\"fill: none\"],\n pattern: \"dotted\",\n look: config.look\n };\n edges.push(edge);\n }\n }\n for (const _interface of interfaces) {\n const interfaceNode = {\n id: _interface.id,\n label: _interface.label,\n isGroup: false,\n shape: \"rect\",\n cssStyles: [\"opacity: 0;\"],\n look: config.look\n };\n nodes.push(interfaceNode);\n }\n cnt = 0;\n for (const classRelation of relations) {\n cnt++;\n const edge = {\n id: getEdgeId(classRelation.id1, classRelation.id2, {\n prefix: \"id\",\n counter: cnt\n }),\n start: classRelation.id1,\n end: classRelation.id2,\n type: \"normal\",\n label: classRelation.title,\n labelpos: \"c\",\n thickness: \"normal\",\n classes: \"relation\",\n arrowTypeStart: getArrowMarker(classRelation.relation.type1),\n arrowTypeEnd: getArrowMarker(classRelation.relation.type2),\n startLabelRight: classRelation.relationTitle1 === \"none\" ? \"\" : classRelation.relationTitle1,\n endLabelLeft: classRelation.relationTitle2 === \"none\" ? \"\" : classRelation.relationTitle2,\n arrowheadStyle: \"\",\n labelStyle: [\"display: inline-block\"],\n style: classRelation.style || \"\",\n pattern: classRelation.relation.lineType == 1 ? \"dashed\" : \"solid\",\n look: config.look\n };\n edges.push(edge);\n }\n return { nodes, edges, other: {}, config, direction: getDirection() };\n}, \"getData\");\nvar classDb_default = {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: /* @__PURE__ */ __name(() => getConfig().class, \"getConfig\"),\n addClass,\n bindFunctions,\n clear: clear2,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n defineClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle,\n getDiagramTitle,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces,\n setCssStyle,\n getData\n};\n\n// src/diagrams/class/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n\n.labelBkg {\n background: ${options.mainBkg};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/class/classRenderer-v3-unified.ts\nvar getDir = /* @__PURE__ */ __name((parsedItem, defaultDir = \"TB\") => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n let dir = defaultDir;\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n return dir;\n}, \"getDir\");\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagramObj) {\n return diagramObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diag) {\n log.info(\"REF0:\");\n log.info(\"Drawing class diagram (v3)\", id);\n const { securityLevel, state: conf, layout } = getConfig();\n const data4Layout = diag.db.getData();\n const svg = getDiagramElement(id, securityLevel);\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils_default.insertTitle(\n svg,\n \"classDiagramTitleText\",\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, \"classDiagram\", conf?.useMaxWidth ?? true);\n}, \"draw\");\nvar classRenderer_v3_unified_default = {\n getClasses: getClasses2,\n draw,\n getDir\n};\n\nexport {\n classDiagram_default,\n classDb_default,\n styles_default,\n classRenderer_v3_unified_default\n};\n"],
- "mappings": "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,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG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,IACH,KAAK,SAAS,EACd,KAAK,MAAM,eAAe,EAC1B,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,MAET,IAAK,IACH,KAAK,MAAM,QAAQ,EACnB,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,EACP,MACF,IAAK,IACH,MACF,IAAK,IACH,YAAK,MAAM,gBAAgB,EACpB,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,MAAO,gBAET,IAAK,IACH,MAAO,GAET,IAAK,IACH,MACF,IAAK,IACH,MAAO,aAET,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,EACP,MACF,IAAK,IACH,MACF,IAAK,IACH,YAAK,SAAS,EACd,KAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,YAAK,MAAM,YAAY,EAChB,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,MAAO,gBAET,IAAK,IACH,MAAO,aAET,IAAK,IACH,MAAO,iBAET,IAAK,IACH,MACF,IAAK,IACH,MAAO,SAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,cAET,IAAK,IACH,KAAK,MAAM,SAAS,EACpB,MACF,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,aAET,IAAK,IACH,KAAK,MAAM,UAAU,EACrB,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IAC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",
- "names": ["parser", "o", "__name", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "classDiagram_default", "visibilityValues", "ClassMember", "memberType", "sanitizedInput", "sanitizeText", "getConfig2", "displayText", "parseGenericTypes", "cssStyle", "potentialClassifier", "detectedVisibility", "lastChar", "length", "firstChar", "combinedText", "MERMAID_DOM_ID_PREFIX", "relations", "classes", "styleClasses", "notes", "interfaces", "classCounter", "namespaces", "namespaceCounter", "functions", "sanitizeText2", "txt", "common_default", "splitClassNameAndType", "_id", "id", "genericType", "className", "split", "setClassLabel", "label", "addClass", "type", "name", "addInterface", "classId", "classInterface", "lookUpDomId", "clear2", "setupToolTips", "direction", "clear", "getClass", "getClasses", "getRelations", "getNotes", "addRelation", "classRelation", "log", "invalidTypes", "relationType", "addAnnotation", "annotation", "validatedClassName", "addMember", "member", "theClass", "memberString", "addMembers", "members", "addNote", "text", "note", "cleanupLabel", "setCssClass", "ids", "classNode", "defineClass", "style", "styleClass", "s", "newStyle", "value", "setTooltip", "tooltip", "getTooltip", "namespace", "setLink", "linkStr", "target", "config", "utils_default", "setClickEvent", "functionName", "functionArgs", "setClickFunc", "_domId", "domId", "elemId", "argList", "item", "elem", "bindFunctions", "element", "fun", "lineType", "tooltipElem", "select_default", "el", "rect", "getDirection", "setDirection", "dir", "addNamespace", "getNamespace", "getNamespaces", "addClassesToNamespace", "classNames", "setCssStyle", "styles", "thisClass", "getArrowMarker", "marker", "getData", "nodes", "edges", "namespaceKey", "node", "classKey", "cnt", "noteNode", "noteClassId", "edge", "_interface", "interfaceNode", "getEdgeId", "classDb_default", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "getStyles", "options", "styles_default", "getDir", "parsedItem", "defaultDir", "parsedItemDoc", "getClasses2", "diagramObj", "draw", "_version", "diag", "securityLevel", "conf", "layout", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "setupViewPortForSVG", "classRenderer_v3_unified_default"]
-}
diff --git a/templates/tabulareditor/public/chunk-CXRPJJJE.min.js b/templates/tabulareditor/public/chunk-CXRPJJJE.min.js
deleted file mode 100644
index e4866a05..00000000
--- a/templates/tabulareditor/public/chunk-CXRPJJJE.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-var Pr=typeof global=="object"&&global&&global.Object===Object&&global,U=Pr;var Sr=typeof self=="object"&&self&&self.Object===Object&&self,Ir=U||Sr||Function("return this")(),c=Ir;var Mr=c.Symbol,_=Mr;var nt=Object.prototype,Er=nt.hasOwnProperty,Fr=nt.toString,E=_?_.toStringTag:void 0;function Lr(t){var r=Er.call(t,E),e=t[E];try{t[E]=void 0;var o=!0}catch{}var a=Fr.call(t);return o&&(r?t[E]=e:delete t[E]),a}var it=Lr;var Dr=Object.prototype,Gr=Dr.toString;function Nr(t){return Gr.call(t)}var ft=Nr;var zr="[object Null]",Ur="[object Undefined]",pt=_?_.toStringTag:void 0;function Rr(t){return t==null?t===void 0?Ur:zr:pt&&pt in Object(t)?it(t):ft(t)}var g=Rr;function Hr(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var s=Hr;var Br="[object AsyncFunction]",Vr="[object Function]",Kr="[object GeneratorFunction]",qr="[object Proxy]";function $r(t){if(!s(t))return!1;var r=g(t);return r==Vr||r==Kr||r==Br||r==qr}var O=$r;var Xr=c["__core-js_shared__"],R=Xr;var ut=function(){var t=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Jr(t){return!!ut&&ut in t}var st=Jr;var Wr=Function.prototype,Yr=Wr.toString;function Zr(t){if(t!=null){try{return Yr.call(t)}catch{}try{return t+""}catch{}}return""}var mt=Zr;var Qr=/[\\^$.*+?()[\]{}|]/g,kr=/^\[object .+?Constructor\]$/,te=Function.prototype,re=Object.prototype,ee=te.toString,oe=re.hasOwnProperty,ae=RegExp("^"+ee.call(oe).replace(Qr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ne(t){if(!s(t)||st(t))return!1;var r=O(t)?ae:kr;return r.test(mt(t))}var lt=ne;function ie(t,r){return t?.[r]}var ct=ie;function fe(t,r){var e=ct(t,r);return lt(e)?e:void 0}var T=fe;var pe=T(Object,"create"),h=pe;function ue(){this.__data__=h?h(null):{},this.size=0}var dt=ue;function se(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r}var ht=se;var me="__lodash_hash_undefined__",le=Object.prototype,ce=le.hasOwnProperty;function de(t){var r=this.__data__;if(h){var e=r[t];return e===me?void 0:e}return ce.call(r,t)?r[t]:void 0}var gt=de;var he=Object.prototype,ge=he.hasOwnProperty;function ye(t){var r=this.__data__;return h?r[t]!==void 0:ge.call(r,t)}var yt=ye;var be="__lodash_hash_undefined__";function xe(t,r){var e=this.__data__;return this.size+=this.has(t)?0:1,e[t]=h&&r===void 0?be:r,this}var bt=xe;function j(t){var r=-1,e=t==null?0:t.length;for(this.clear();++r
-`:"'+(s?r:m(r,!0))+`
-`}blockquote({tokens:e}){return`"+(s?r:m(r,!0))+`
-${this.parser.parse(e)}
-`}html({text:e}){return e}heading({tokens:e,depth:t}){return`
-`}list(e){let t=e.ordered,s=e.start,n="";for(let l=0;l
-
-`+t+`
-`+n+`
-`}tablerow({text:e}){return`
-${e}
-`}tablecell(e){let t=this.parser.parseInline(e.tokens),s=e.header?"th":"td";return(e.align?`<${s} align="${e.align}">`:`<${s}>`)+t+`${s}>
-`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
"}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:s}){let n=this.parser.parseInline(s),r=pe(e);if(r===null)return n;e=r;let i='"+n+"",i}image({href:e,title:t,text:s}){let n=pe(e);if(n===null)return s;e=n;let r=`",r}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):e.text}},E=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},T=class a{options;renderer;textRenderer;constructor(e){this.options=e||R,this.options.renderer=this.options.renderer||new _,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new E}static parse(e,t){return new a(t).parse(e)}static parseInline(e,t){return new a(t).parseInline(e)}parse(e,t=!0){let s="";for(let n=0;n
"+m(s.message+"",!0)+"
";return t?Promise.resolve(n):n}if(t)return Promise.reject(s);throw s}}},$=new H;function d(a,e){return $.parse(a,e)}d.options=d.setOptions=function(a){return $.setOptions(a),d.defaults=$.defaults,ge(d.defaults),d};d.getDefaults=N;d.defaults=R;d.use=function(...a){return $.use(...a),d.defaults=$.defaults,ge(d.defaults),d};d.walkTokens=function(a,e){return $.walkTokens(a,e)};d.parseInline=$.parseInline;d.Parser=T;d.parser=T.parse;d.Renderer=_;d.TextRenderer=E;d.Lexer=y;d.lexer=y.lex;d.Tokenizer=S;d.Hooks=z;d.parse=d;var kt=d.options,xt=d.setOptions,mt=d.use,bt=d.walkTokens,wt=d.parseInline;var yt=T.parse,Tt=y.lex;function Re(a,{markdownAutoWrap:e}){let s=a.replace(/
/g,`
-`).replace(/\n{2,}/g,`
-`),n=ae(s);return e===!1?n.replace(/ /g," "):n}x(Re,"preprocessMarkdown");function ze(a,e={}){let t=Re(a,e),s=d.lexer(t),n=[[]],r=0;function i(l,o="normal"){l.type==="text"?l.text.split(`
-`).forEach((c,h)=>{h!==0&&(r++,n.push([])),c.split(" ").forEach(u=>{u=u.replace(/'/g,"'"),u&&n[r].push({content:u,type:o})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(p=>{i(p,l.type)}):l.type==="html"&&n[r].push({content:l.text,type:"normal"})}return x(i,"processNode"),s.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(o=>{i(o)}):l.type==="html"&&n[r].push({content:l.text,type:"normal"})}),n}x(ze,"markdownToLines");function Se(a,{markdownAutoWrap:e}={}){let t=d.lexer(a);function s(n){return n.type==="text"?e===!1?n.text.replace(/\n */g,"
").replace(/ /g," "):n.text.replace(/\n */g,"
"):n.type==="strong"?`${n.tokens?.map(s).join("")}`:n.type==="em"?`${n.tokens?.map(s).join("")}`:n.type==="paragraph"?`
/g,"
"),h=ze(c.replace("
","
"),p),u=ve(l,a,h,e?o:!1);if(i){/stroke:/.exec(t)&&(t=t.replace("stroke:","lineColor:"));let f=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");B(u).attr("style",f)}else{let f=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");B(u).select("rect").attr("style",f.replace(/background:/g,"fill:"));let g=t.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");B(u).select("text").attr("style",g)}return u}},"createText");export{ae as a,gt as b,Ce as c,At as d};
-//# sourceMappingURL=chunk-O7HQDJ4J.min.js.map
diff --git a/templates/tabulareditor/public/chunk-O7HQDJ4J.min.js.map b/templates/tabulareditor/public/chunk-O7HQDJ4J.min.js.map
deleted file mode 100644
index b140ee5a..00000000
--- a/templates/tabulareditor/public/chunk-O7HQDJ4J.min.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../node_modules/ts-dedent/src/index.ts", "../../node_modules/marked/src/defaults.ts", "../../node_modules/marked/src/helpers.ts", "../../node_modules/marked/src/Tokenizer.ts", "../../node_modules/marked/src/rules.ts", "../../node_modules/marked/src/Lexer.ts", "../../node_modules/marked/src/Renderer.ts", "../../node_modules/marked/src/TextRenderer.ts", "../../node_modules/marked/src/Parser.ts", "../../node_modules/marked/src/Hooks.ts", "../../node_modules/marked/src/Instance.ts", "../../node_modules/marked/src/marked.ts", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-6JOS74DS.mjs"],
- "sourcesContent": ["export function dedent(\n templ: TemplateStringsArray | string,\n ...values: unknown[]\n): string {\n let strings = Array.from(typeof templ === 'string' ? [templ] : templ);\n\n // 1. Remove trailing whitespace.\n strings[strings.length - 1] = strings[strings.length - 1].replace(\n /\\r?\\n([\\t ]*)$/,\n '',\n );\n\n // 2. Find all line breaks to determine the highest common indentation level.\n const indentLengths = strings.reduce((arr, str) => {\n const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n if (matches) {\n return arr.concat(\n matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0),\n );\n }\n return arr;\n },
\\n';\n }\n return ''\n + (escaped ? code : escape(code, true))\n + '
\\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `'\n + (escaped ? code : escape(code, true))\n + '\\n${body}
\\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `
\\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '' + type + '>\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
\\n';\n }\n tablerow({ text }) {\n return `\\n${text} \\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n em({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n codespan({ text }) {\n return `${text}`;\n }\n br(token) {\n return '
';\n }\n del({ tokens }) {\n return `${this.parser.parseInline(tokens)}`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '' + text + '';\n return out;\n }\n image({ href, title, text }) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `';\n return out;\n }\n text(token) {\n return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : token.text;\n }\n}\n", "/**\n * TextRenderer\n * returns only the textual part of the token\n */\nexport class _TextRenderer {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return '' + text;\n }\n image({ text }) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n", "import { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _defaults } from './defaults.ts';\n/**\n * Parsing & Compiling\n */\nexport class _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n continue;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token);\n continue;\n }\n case 'table': {\n out += this.renderer.table(token);\n continue;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n continue;\n }\n case 'list': {\n out += this.renderer.list(token);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: 'paragraph',\n raw: body,\n text: body,\n tokens: [{ type: 'text', raw: body, text: body }],\n });\n }\n else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n", "import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape, unescape, } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n let rendererFunc = pack.renderer[rendererProp];\n if (!pack.useNewRenderer) {\n // TODO: Remove this in next major version\n rendererFunc = this.#convertRendererFunction(rendererFunc, rendererProp, renderer);\n }\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n // TODO: Remove this in next major release\n #convertRendererFunction(func, prop, renderer) {\n switch (prop) {\n case 'heading':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));\n };\n case 'code':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text, token.lang, !!token.escaped);\n };\n case 'table':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell({\n text: token.header[j].text,\n tokens: token.header[j].tokens,\n header: true,\n align: token.align[j],\n });\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell({\n text: row[k].text,\n tokens: row[k].tokens,\n header: false,\n align: token.align[k],\n });\n }\n body += this.tablerow({ text: cell });\n }\n return func.call(this, header, body);\n };\n case 'blockquote':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n const body = this.parser.parse(token.tokens);\n return func.call(this, body);\n };\n case 'list':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n const ordered = token.ordered;\n const start = token.start;\n const loose = token.loose;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!checked });\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' ',\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, loose);\n body += this.listitem({\n type: 'list_item',\n raw: itemBody,\n text: itemBody,\n task,\n checked: !!checked,\n loose,\n tokens: item.tokens,\n });\n }\n return func.call(this, body, ordered, start);\n };\n case 'html':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text, token.block);\n };\n case 'paragraph':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'escape':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n case 'link':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));\n };\n case 'image':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.href, token.title, token.text);\n };\n case 'strong':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'em':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'codespan':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n case 'del':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, this.parser.parseInline(token.tokens));\n };\n case 'text':\n return function (token) {\n if (!token.type || token.type !== prop) {\n // @ts-ignore\n // eslint-disable-next-line prefer-rest-params\n return func.apply(this, arguments);\n }\n return func.call(this, token.text);\n };\n default:\n // do nothing\n }\n return func;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '
'\n + escape(e.message + '', true)\n + '
';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults, } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n", "import {\n decodeEntities\n} from \"./chunk-7DKRZKHE.mjs\";\nimport {\n __name,\n common_default,\n getConfig2 as getConfig,\n hasKatex,\n log,\n renderKatex\n} from \"./chunk-6DBFFHIP.mjs\";\n\n// src/rendering-util/createText.ts\nimport { select } from \"d3\";\n\n// src/rendering-util/handle-markdown-text.ts\nimport { marked } from \"marked\";\nimport { dedent } from \"ts-dedent\";\nfunction preprocessMarkdown(markdown, { markdownAutoWrap }) {\n const withoutBR = markdown.replace(/
/g, \"\\n\");\n const withoutMultipleNewlines = withoutBR.replace(/\\n{2,}/g, \"\\n\");\n const withoutExtraSpaces = dedent(withoutMultipleNewlines);\n if (markdownAutoWrap === false) {\n return withoutExtraSpaces.replace(/ /g, \" \");\n }\n return withoutExtraSpaces;\n}\n__name(preprocessMarkdown, \"preprocessMarkdown\");\nfunction markdownToLines(markdown, config = {}) {\n const preprocessedMarkdown = preprocessMarkdown(markdown, config);\n const nodes = marked.lexer(preprocessedMarkdown);\n const lines = [[]];\n let currentLine = 0;\n function processNode(node, parentType = \"normal\") {\n if (node.type === \"text\") {\n const textLines = node.text.split(\"\\n\");\n textLines.forEach((textLine, index) => {\n if (index !== 0) {\n currentLine++;\n lines.push([]);\n }\n textLine.split(\" \").forEach((word) => {\n word = word.replace(/'/g, `'`);\n if (word) {\n lines[currentLine].push({ content: word, type: parentType });\n }\n });\n });\n } else if (node.type === \"strong\" || node.type === \"em\") {\n node.tokens.forEach((contentNode) => {\n processNode(contentNode, node.type);\n });\n } else if (node.type === \"html\") {\n lines[currentLine].push({ content: node.text, type: \"normal\" });\n }\n }\n __name(processNode, \"processNode\");\n nodes.forEach((treeNode) => {\n if (treeNode.type === \"paragraph\") {\n treeNode.tokens?.forEach((contentNode) => {\n processNode(contentNode);\n });\n } else if (treeNode.type === \"html\") {\n lines[currentLine].push({ content: treeNode.text, type: \"normal\" });\n }\n });\n return lines;\n}\n__name(markdownToLines, \"markdownToLines\");\nfunction markdownToHTML(markdown, { markdownAutoWrap } = {}) {\n const nodes = marked.lexer(markdown);\n function output(node) {\n if (node.type === \"text\") {\n if (markdownAutoWrap === false) {\n return node.text.replace(/\\n */g, \"
\").replace(/ /g, \" \");\n }\n return node.text.replace(/\\n */g, \"
\");\n } else if (node.type === \"strong\") {\n return `${node.tokens?.map(output).join(\"\")}`;\n } else if (node.type === \"em\") {\n return `${node.tokens?.map(output).join(\"\")}`;\n } else if (node.type === \"paragraph\") {\n return `
/g, \"
\");\n const structuredText = markdownToLines(sanitizeBR.replace(\"
\", \"
\"), config);\n const svgLabel = createFormattedText(\n width,\n el,\n structuredText,\n text ? addSvgBackground : false\n );\n if (isNode) {\n if (/stroke:/.exec(style)) {\n style = style.replace(\"stroke:\", \"lineColor:\");\n }\n const nodeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n select(svgLabel).attr(\"style\", nodeLabelTextStyle);\n } else {\n const edgeLabelRectStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/background:/g, \"fill:\");\n select(svgLabel).select(\"rect\").attr(\"style\", edgeLabelRectStyle.replace(/background:/g, \"fill:\"));\n const edgeLabelTextStyle = style.replace(/stroke:[^;]+;?/g, \"\").replace(/stroke-width:[^;]+;?/g, \"\").replace(/fill:[^;]+;?/g, \"\").replace(/color:/g, \"fill:\");\n select(svgLabel).select(\"text\").attr(\"style\", edgeLabelTextStyle);\n }\n return svgLabel;\n }\n}, \"createText\");\n\nexport {\n computeDimensionOfText,\n replaceIconSubstring,\n createText\n};\n"],
- "mappings": "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",
- "names": ["dedent", "templ", "values", "_i", "strings", "indentLengths", "arr", "str", "matches", "match", "_a", "_b", "pattern_1", "string", "value", "i", "endentations", "endentation", "indentedValue", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "escapeTest", "escapeReplace", "escapeTestNoEncode", "escapeReplaceNoEncode", "escapeReplacements", "getEscapeReplacement", "ch", "escape", "html", "encode", "unescapeTest", "unescape", "_", "n", "caret", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "cleanUrl", "href", "noopTest", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "link", "raw", "lexer", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "src", "trimmed", "lines", "tokens", "inBlockquote", "currentLines", "currentRaw", "currentText", "top", "lastToken", "oldToken", "newText", "newToken", "bull", "isordered", "list", "itemRegex", "endsWithBlankLine", "endEarly", "itemContents", "line", "t", "nextLine", "blankLine", "indent", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "rawLine", "istask", "ischecked", "spacers", "hasMultipleLineBreaks", "tag", "headers", "aligns", "rows", "item", "align", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheading", "_paragraph", "blockText", "_blockLabel", "def", "_tag", "_comment", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "blockPedantic", "inlineCode", "br", "inlineText", "_punctuation", "punctuation", "blockSkip", "emStrongLDelim", "emStrongRDelimAst", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "_inlineLabel", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "_Lexer", "__Lexer", "rules", "next", "lastParagraphClipped", "leading", "tabs", "cutSrc", "extTokenizer", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "lang", "langString", "code", "depth", "ordered", "start", "body", "j", "type", "startAttr", "itemBody", "checkbox", "checked", "header", "k", "content", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "anyToken", "genericToken", "ret", "textToken", "renderer", "_Hooks", "markdown", "Marked", "#parseMarkdown", "args", "callback", "values", "tableToken", "listToken", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "#convertRendererFunction", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "func", "loose", "task", "parser", "origOpt", "throwError", "#onError", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "preprocessMarkdown", "markdown", "markdownAutoWrap", "withoutMultipleNewlines", "withoutExtraSpaces", "dedent", "__name", "markdownToLines", "config", "preprocessedMarkdown", "nodes", "marked", "lines", "currentLine", "processNode", "node", "parentType", "textLine", "index", "word", "contentNode", "treeNode", "markdownToHTML", "output", "splitTextToChars", "text", "s", "splitWordToFitWidth", "checkFit", "characters", "splitWordToFitWidthRecursion", "usedChars", "remainingChars", "type", "nextChar", "rest", "newWord", "splitLineToFitWidth", "line", "content", "splitLineToFitWidthRecursion", "words", "newLine", "joiner", "nextWord", "lineWithNextWord", "applyStyle", "dom", "styleFn", "addHtmlSpan", "element", "width", "classes", "addBackground", "fo", "div", "label", "hasKatex", "renderKatex", "common_default", "getConfig2", "labelClass", "span", "bbox", "createTspan", "textElement", "lineIndex", "lineHeight", "computeWidthOfText", "parentNode", "testElement", "testSpan", "updateTextContentAndStyles", "textLength", "computeDimensionOfText", "textDimension", "createFormattedText", "g", "structuredText", "labelGroup", "bkg", "checkWidth", "line2", "linesUnderWidth", "preparedLine", "tspan", "padding", "wrappedLine", "innerTspan", "replaceIconSubstring", "createText", "el", "style", "isTitle", "useHtmlLabels", "isNode", "addSvgBackground", "log", "htmlText", "decodedReplacedText", "decodeEntities", "inputForKatex", "sanitizeBR", "svgLabel", "nodeLabelTextStyle", "select_default", "edgeLabelRectStyle", "edgeLabelTextStyle"]
-}
diff --git a/templates/tabulareditor/public/chunk-OA2NZNE3.min.js b/templates/tabulareditor/public/chunk-OA2NZNE3.min.js
deleted file mode 100644
index 422a5cae..00000000
--- a/templates/tabulareditor/public/chunk-OA2NZNE3.min.js
+++ /dev/null
@@ -1,165 +0,0 @@
-import{a as kt,b as bt}from"./chunk-N6UCIKO7.min.js";import{b as ft,c as At}from"./chunk-PVWKA5UF.min.js";import{m as me,p as dt}from"./chunk-5JBUDD4A.min.js";import{H as at,J as R,N as x,S as nt,T as ut,U as lt,V as ot,W as ct,X as ht,Y as pt,Z as T,h as n,ia as K,j as ge}from"./chunk-F7ONS4BM.min.js";var Ye=function(){var e=n(function(O,o,c,d){for(c=c||{},d=O.length;d--;c[O[d]]=o);return c},"o"),r=[1,18],u=[1,19],l=[1,20],i=[1,41],p=[1,42],f=[1,26],b=[1,24],F=[1,25],S=[1,32],ye=[1,33],Te=[1,34],g=[1,45],Fe=[1,35],De=[1,36],_e=[1,37],Be=[1,38],Se=[1,27],ve=[1,28],Ne=[1,29],Le=[1,30],xe=[1,31],m=[1,44],C=[1,46],E=[1,43],D=[1,47],Ie=[1,9],h=[1,8,9],ae=[1,58],ne=[1,59],ue=[1,60],le=[1,61],oe=[1,62],Oe=[1,63],we=[1,64],ce=[1,8,9,41],He=[1,76],U=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],he=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],pe=[13,58,84,99,101,102],W=[13,58,71,72,84,99,101,102],qe=[13,58,66,67,68,69,70,84,99,101,102],Ve=[1,98],j=[1,115],X=[1,107],H=[1,113],q=[1,108],J=[1,109],Z=[1,110],$=[1,111],ee=[1,112],te=[1,114],Je=[22,58,59,80,84,85,86,87,88,89],Pe=[1,8,9,39,41,44],de=[1,8,9,22],Ze=[1,143],$e=[1,8,9,59],N=[1,8,9,22,58,59,80,84,85,86,87,88,89],Re={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:n(function(o,c,d,a,A,t,se){var s=t.length-1;switch(A){case 8:this.$=t[s-1];break;case 9:case 12:case 14:this.$=t[s];break;case 10:case 13:this.$=t[s-2]+"."+t[s];break;case 11:case 15:this.$=t[s-1]+t[s];break;case 16:case 17:this.$=t[s-1]+"~"+t[s]+"~";break;case 18:a.addRelation(t[s]);break;case 19:t[s-1].title=a.cleanupLabel(t[s]),a.addRelation(t[s-1]);break;case 30:this.$=t[s].trim(),a.setAccTitle(this.$);break;case 31:case 32:this.$=t[s].trim(),a.setAccDescription(this.$);break;case 33:a.addClassesToNamespace(t[s-3],t[s-1]);break;case 34:a.addClassesToNamespace(t[s-4],t[s-1]);break;case 35:this.$=t[s],a.addNamespace(t[s]);break;case 36:this.$=[t[s]];break;case 37:this.$=[t[s-1]];break;case 38:t[s].unshift(t[s-2]),this.$=t[s];break;case 40:a.setCssClass(t[s-2],t[s]);break;case 41:a.addMembers(t[s-3],t[s-1]);break;case 42:a.setCssClass(t[s-5],t[s-3]),a.addMembers(t[s-5],t[s-1]);break;case 43:this.$=t[s],a.addClass(t[s]);break;case 44:this.$=t[s-1],a.addClass(t[s-1]),a.setClassLabel(t[s-1],t[s]);break;case 45:a.addAnnotation(t[s],t[s-2]);break;case 46:case 59:this.$=[t[s]];break;case 47:t[s].push(t[s-1]),this.$=t[s];break;case 48:break;case 49:a.addMember(t[s-1],a.cleanupLabel(t[s]));break;case 50:break;case 51:break;case 52:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 54:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 55:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 56:a.addNote(t[s],t[s-1]);break;case 57:a.addNote(t[s]);break;case 58:this.$=t[s-2],a.defineClass(t[s-1],t[s]);break;case 60:this.$=t[s-2].concat([t[s]]);break;case 61:a.setDirection("TB");break;case 62:a.setDirection("BT");break;case 63:a.setDirection("RL");break;case 64:a.setDirection("LR");break;case 65:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 66:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 67:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 68:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 69:this.$=a.relationType.AGGREGATION;break;case 70:this.$=a.relationType.EXTENSION;break;case 71:this.$=a.relationType.COMPOSITION;break;case 72:this.$=a.relationType.DEPENDENCY;break;case 73:this.$=a.relationType.LOLLIPOP;break;case 74:this.$=a.lineType.LINE;break;case 75:this.$=a.lineType.DOTTED_LINE;break;case 76:case 82:this.$=t[s-2],a.setClickEvent(t[s-1],t[s]);break;case 77:case 83:this.$=t[s-3],a.setClickEvent(t[s-2],t[s-1]),a.setTooltip(t[s-2],t[s]);break;case 78:this.$=t[s-2],a.setLink(t[s-1],t[s]);break;case 79:this.$=t[s-3],a.setLink(t[s-2],t[s-1],t[s]);break;case 80:this.$=t[s-3],a.setLink(t[s-2],t[s-1]),a.setTooltip(t[s-2],t[s]);break;case 81:this.$=t[s-4],a.setLink(t[s-3],t[s-2],t[s]),a.setTooltip(t[s-3],t[s-1]);break;case 84:this.$=t[s-3],a.setClickEvent(t[s-2],t[s-1],t[s]);break;case 85:this.$=t[s-4],a.setClickEvent(t[s-3],t[s-2],t[s-1]),a.setTooltip(t[s-3],t[s]);break;case 86:this.$=t[s-3],a.setLink(t[s-2],t[s]);break;case 87:this.$=t[s-4],a.setLink(t[s-3],t[s-1],t[s]);break;case 88:this.$=t[s-4],a.setLink(t[s-3],t[s-1]),a.setTooltip(t[s-3],t[s]);break;case 89:this.$=t[s-5],a.setLink(t[s-4],t[s-2],t[s]),a.setTooltip(t[s-4],t[s-1]);break;case 90:this.$=t[s-2],a.setCssStyle(t[s-1],t[s]);break;case 91:a.setCssClass(t[s-1],t[s]);break;case 92:this.$=[t[s]];break;case 93:t[s-2].push(t[s]),this.$=t[s-2];break;case 95:this.$=t[s-1]+t[s];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:r,35:u,37:l,38:22,42:i,43:23,46:p,47:f,49:b,50:F,52:S,54:ye,55:Te,58:g,60:Fe,61:De,62:_e,63:Be,73:Se,74:ve,76:Ne,80:Le,81:xe,84:m,99:C,101:E,102:D},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(Ie,[2,5],{8:[1,48]}),{8:[1,49]},e(h,[2,18],{22:[1,50]}),e(h,[2,20]),e(h,[2,21]),e(h,[2,22]),e(h,[2,23]),e(h,[2,24]),e(h,[2,25]),e(h,[2,26]),e(h,[2,27]),e(h,[2,28]),e(h,[2,29]),{34:[1,51]},{36:[1,52]},e(h,[2,32]),e(h,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:ae,67:ne,68:ue,69:le,70:oe,71:Oe,72:we}),{39:[1,65]},e(ce,[2,39],{39:[1,67],44:[1,66]}),e(h,[2,50]),e(h,[2,51]),{16:68,58:g,84:m,99:C,101:E},{16:39,18:69,19:40,58:g,84:m,99:C,101:E,102:D},{16:39,18:70,19:40,58:g,84:m,99:C,101:E,102:D},{16:39,18:71,19:40,58:g,84:m,99:C,101:E,102:D},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:g,84:m,99:C,101:E,102:D},{13:He,53:75},{56:77,58:[1,78]},e(h,[2,61]),e(h,[2,62]),e(h,[2,63]),e(h,[2,64]),e(U,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:g,84:m,99:C,101:E,102:D}),e(U,[2,14],{20:[1,82]}),{15:83,16:84,58:g,84:m,99:C,101:E},{16:39,18:85,19:40,58:g,84:m,99:C,101:E,102:D},e(he,[2,118]),e(he,[2,119]),e(he,[2,120]),e(he,[2,121]),e([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),e(Ie,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:r,35:u,37:l,42:i,46:p,47:f,49:b,50:F,52:S,54:ye,55:Te,58:g,60:Fe,61:De,62:_e,63:Be,73:Se,74:ve,76:Ne,80:Le,81:xe,84:m,99:C,101:E,102:D}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:r,35:u,37:l,38:22,42:i,43:23,46:p,47:f,49:b,50:F,52:S,54:ye,55:Te,58:g,60:Fe,61:De,62:_e,63:Be,73:Se,74:ve,76:Ne,80:Le,81:xe,84:m,99:C,101:E,102:D},e(h,[2,19]),e(h,[2,30]),e(h,[2,31]),{13:[1,89],16:39,18:88,19:40,58:g,84:m,99:C,101:E,102:D},{51:90,64:56,65:57,66:ae,67:ne,68:ue,69:le,70:oe,71:Oe,72:we},e(h,[2,49]),{65:91,71:Oe,72:we},e(pe,[2,68],{64:92,66:ae,67:ne,68:ue,69:le,70:oe}),e(W,[2,69]),e(W,[2,70]),e(W,[2,71]),e(W,[2,72]),e(W,[2,73]),e(qe,[2,74]),e(qe,[2,75]),{8:[1,94],24:95,40:93,43:23,46:p},{16:96,58:g,84:m,99:C,101:E},{45:97,49:Ve},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:j,57:104,58:X,80:H,82:105,83:106,84:q,85:J,86:Z,87:$,88:ee,89:te},{58:[1,116]},{13:He,53:117},e(h,[2,57]),e(h,[2,123]),{22:j,57:118,58:X,59:[1,119],80:H,82:105,83:106,84:q,85:J,86:Z,87:$,88:ee,89:te},e(Je,[2,59]),{16:39,18:120,19:40,58:g,84:m,99:C,101:E,102:D},e(U,[2,15]),e(U,[2,16]),e(U,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:g,84:m,99:C,101:E},e(Pe,[2,43],{11:123,12:[1,124]}),e(Ie,[2,7]),{9:[1,125]},e(de,[2,52]),{16:39,18:126,19:40,58:g,84:m,99:C,101:E,102:D},{13:[1,128],16:39,18:127,19:40,58:g,84:m,99:C,101:E,102:D},e(pe,[2,67],{64:129,66:ae,67:ne,68:ue,69:le,70:oe}),e(pe,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:p},{8:[1,132],41:[2,36]},e(ce,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:Ve},{16:39,18:136,19:40,58:g,84:m,99:C,101:E,102:D},e(h,[2,76],{13:[1,137]}),e(h,[2,78],{13:[1,139],75:[1,138]}),e(h,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},e(h,[2,90],{59:Ze}),e($e,[2,92],{83:144,22:j,58:X,80:H,84:q,85:J,86:Z,87:$,88:ee,89:te}),e(N,[2,94]),e(N,[2,96]),e(N,[2,97]),e(N,[2,98]),e(N,[2,99]),e(N,[2,100]),e(N,[2,101]),e(N,[2,102]),e(N,[2,103]),e(N,[2,104]),e(h,[2,91]),e(h,[2,56]),e(h,[2,58],{59:Ze}),{58:[1,145]},e(U,[2,13]),{15:146,16:84,58:g,84:m,99:C,101:E},{39:[2,11]},e(Pe,[2,44]),{13:[1,147]},{1:[2,4]},e(de,[2,54]),e(de,[2,53]),{16:39,18:148,19:40,58:g,84:m,99:C,101:E,102:D},e(pe,[2,65]),e(h,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:p},{45:151,49:Ve},e(ce,[2,41]),{41:[2,47]},e(h,[2,45]),e(h,[2,77]),e(h,[2,79]),e(h,[2,80],{75:[1,152]}),e(h,[2,83]),e(h,[2,84],{13:[1,153]}),e(h,[2,86],{13:[1,155],75:[1,154]}),{22:j,58:X,80:H,82:156,83:106,84:q,85:J,86:Z,87:$,88:ee,89:te},e(N,[2,95]),e(Je,[2,60]),{39:[2,10]},{14:[1,157]},e(de,[2,55]),e(h,[2,34]),{41:[2,38]},{41:[1,158]},e(h,[2,81]),e(h,[2,85]),e(h,[2,87]),e(h,[2,88],{75:[1,159]}),e($e,[2,93],{83:144,22:j,58:X,80:H,84:q,85:J,86:Z,87:$,88:ee,89:te}),e(Pe,[2,8]),e(ce,[2,42]),e(h,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:n(function(o,c){if(c.recoverable)this.trace(o);else{var d=new Error(o);throw d.hash=c,d}},"parseError"),parse:n(function(o){var c=this,d=[0],a=[],A=[null],t=[],se=this.table,s="",Ae=0,et=0,tt=0,St=2,st=1,vt=t.slice.call(arguments,1),y=Object.create(this.lexer),V={yy:{}};for(var Me in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Me)&&(V.yy[Me]=this.yy[Me]);y.setInput(o,V.yy),V.yy.lexer=y,V.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var Ge=y.yylloc;t.push(Ge);var Nt=y.options&&y.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Lt(B){d.length=d.length-2*B,A.length=A.length-B,t.length=t.length-B}n(Lt,"popStack");function rt(){var B;return B=a.pop()||y.lex()||st,typeof B!="number"&&(B instanceof Array&&(a=B,B=a.pop()),B=c.symbols_[B]||B),B}n(rt,"lex");for(var _,Ue,P,v,ls,ze,z={},ke,I,it,be;;){if(P=d[d.length-1],this.defaultActions[P]?v=this.defaultActions[P]:((_===null||typeof _>"u")&&(_=rt()),v=se[P]&&se[P][_]),typeof v>"u"||!v.length||!v[0]){var Ke="";be=[];for(ke in se[P])this.terminals_[ke]&&ke>St&&be.push("'"+this.terminals_[ke]+"'");y.showPosition?Ke="Parse error on line "+(Ae+1)+`:
-`+y.showPosition()+`
-Expecting `+be.join(", ")+", got '"+(this.terminals_[_]||_)+"'":Ke="Parse error on line "+(Ae+1)+": Unexpected "+(_==st?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(Ke,{text:y.match,token:this.terminals_[_]||_,line:y.yylineno,loc:Ge,expected:be})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+_);switch(v[0]){case 1:d.push(_),A.push(y.yytext),t.push(y.yylloc),d.push(v[1]),_=null,Ue?(_=Ue,Ue=null):(et=y.yyleng,s=y.yytext,Ae=y.yylineno,Ge=y.yylloc,tt>0&&tt--);break;case 2:if(I=this.productions_[v[1]][1],z.$=A[A.length-I],z._$={first_line:t[t.length-(I||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(I||1)].first_column,last_column:t[t.length-1].last_column},Nt&&(z._$.range=[t[t.length-(I||1)].range[0],t[t.length-1].range[1]]),ze=this.performAction.apply(z,[s,et,Ae,V.yy,v[1],A,t].concat(vt)),typeof ze<"u")return ze;I&&(d=d.slice(0,-1*I*2),A=A.slice(0,-1*I),t=t.slice(0,-1*I)),d.push(this.productions_[v[1]][0]),A.push(z.$),t.push(z._$),it=se[d[d.length-2]][d[d.length-1]],d.push(it);break;case 3:return!0}}return!0},"parse")},Bt=function(){var O={EOF:1,parseError:n(function(c,d){if(this.yy.parser)this.yy.parser.parseError(c,d);else throw new Error(c)},"parseError"),setInput:n(function(o,c){return this.yy=c||this.yy||{},this._input=o,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var c=o.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:n(function(o){var c=o.length,d=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),d.length-1&&(this.yylineno-=d.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:d?(d.length===a.length?this.yylloc.first_column:0)+a[a.length-d.length].length-d[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
-`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(o){this.unput(this.match.slice(o))},"less"),pastInput:n(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var o=this.pastInput(),c=new Array(o.length+1).join("-");return o+this.upcomingInput()+`
-`+c+"^"},"showPosition"),test_match:n(function(o,c){var d,a,A;if(this.options.backtrack_lexer&&(A={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(A.yylloc.range=this.yylloc.range.slice(0))),a=o[0].match(/(?:\r\n?|\n).*/g),a&&(this.yylineno+=a.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:a?a[a.length-1].length-a[a.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(o[0].length),this.matched+=o[0],d=this.performAction.call(this,this.yy,this,c,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var t in A)this[t]=A[t];return!1}return!1},"test_match"),next:n(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,c,d,a;this._more||(this.yytext="",this.match="");for(var A=this._currentRules(),t=0;t
\"));\n el.classed(\"hover\", true);\n }).on(\"mouseout\", function() {\n tooltipElem.transition().duration(500).style(\"opacity\", 0);\n const el = select(this);\n el.classed(\"hover\", false);\n });\n}, \"setupToolTips\");\nfunctions.push(setupToolTips);\nvar direction = \"TB\";\nvar getDirection = /* @__PURE__ */ __name(() => direction, \"getDirection\");\nvar setDirection = /* @__PURE__ */ __name((dir) => {\n direction = dir;\n}, \"setDirection\");\nvar addNamespace = /* @__PURE__ */ __name(function(id) {\n if (namespaces.has(id)) {\n return;\n }\n namespaces.set(id, {\n id,\n classes: /* @__PURE__ */ new Map(),\n children: {},\n domId: MERMAID_DOM_ID_PREFIX + id + \"-\" + namespaceCounter\n });\n namespaceCounter++;\n}, \"addNamespace\");\nvar getNamespace = /* @__PURE__ */ __name(function(name) {\n return namespaces.get(name);\n}, \"getNamespace\");\nvar getNamespaces = /* @__PURE__ */ __name(function() {\n return namespaces;\n}, \"getNamespaces\");\nvar addClassesToNamespace = /* @__PURE__ */ __name(function(id, classNames) {\n if (!namespaces.has(id)) {\n return;\n }\n for (const name of classNames) {\n const { className } = splitClassNameAndType(name);\n classes.get(className).parent = id;\n namespaces.get(id).classes.set(className, classes.get(className));\n }\n}, \"addClassesToNamespace\");\nvar setCssStyle = /* @__PURE__ */ __name(function(id, styles) {\n const thisClass = classes.get(id);\n if (!styles || !thisClass) {\n return;\n }\n for (const s of styles) {\n if (s.includes(\",\")) {\n thisClass.styles.push(...s.split(\",\"));\n } else {\n thisClass.styles.push(s);\n }\n }\n}, \"setCssStyle\");\nfunction getArrowMarker(type) {\n let marker;\n switch (type) {\n case 0:\n marker = \"aggregation\";\n break;\n case 1:\n marker = \"extension\";\n break;\n case 2:\n marker = \"composition\";\n break;\n case 3:\n marker = \"dependency\";\n break;\n case 4:\n marker = \"lollipop\";\n break;\n default:\n marker = \"none\";\n }\n return marker;\n}\n__name(getArrowMarker, \"getArrowMarker\");\nvar getData = /* @__PURE__ */ __name(() => {\n const nodes = [];\n const edges = [];\n const config = getConfig();\n for (const namespaceKey of namespaces.keys()) {\n const namespace = namespaces.get(namespaceKey);\n if (namespace) {\n const node = {\n id: namespace.id,\n label: namespace.id,\n isGroup: true,\n padding: config.class.padding ?? 16,\n // parent node must be one of [rect, roundedWithTitle, noteGroup, divider]\n shape: \"rect\",\n cssStyles: [\"fill: none\", \"stroke: black\"],\n look: config.look\n };\n nodes.push(node);\n }\n }\n for (const classKey of classes.keys()) {\n const classNode = classes.get(classKey);\n if (classNode) {\n const node = classNode;\n node.parentId = classNode.parent;\n node.look = config.look;\n nodes.push(node);\n }\n }\n let cnt = 0;\n for (const note of notes) {\n cnt++;\n const noteNode = {\n id: note.id,\n label: note.text,\n isGroup: false,\n shape: \"note\",\n padding: config.class.padding ?? 6,\n cssStyles: [\n \"text-align: left\",\n \"white-space: nowrap\",\n `fill: ${config.themeVariables.noteBkgColor}`,\n `stroke: ${config.themeVariables.noteBorderColor}`\n ],\n look: config.look\n };\n nodes.push(noteNode);\n const noteClassId = classes.get(note.class)?.id ?? \"\";\n if (noteClassId) {\n const edge = {\n id: `edgeNote${cnt}`,\n start: note.id,\n end: noteClassId,\n type: \"normal\",\n thickness: \"normal\",\n classes: \"relation\",\n arrowTypeStart: \"none\",\n arrowTypeEnd: \"none\",\n arrowheadStyle: \"\",\n labelStyle: [\"\"],\n style: [\"fill: none\"],\n pattern: \"dotted\",\n look: config.look\n };\n edges.push(edge);\n }\n }\n for (const _interface of interfaces) {\n const interfaceNode = {\n id: _interface.id,\n label: _interface.label,\n isGroup: false,\n shape: \"rect\",\n cssStyles: [\"opacity: 0;\"],\n look: config.look\n };\n nodes.push(interfaceNode);\n }\n cnt = 0;\n for (const classRelation of relations) {\n cnt++;\n const edge = {\n id: getEdgeId(classRelation.id1, classRelation.id2, {\n prefix: \"id\",\n counter: cnt\n }),\n start: classRelation.id1,\n end: classRelation.id2,\n type: \"normal\",\n label: classRelation.title,\n labelpos: \"c\",\n thickness: \"normal\",\n classes: \"relation\",\n arrowTypeStart: getArrowMarker(classRelation.relation.type1),\n arrowTypeEnd: getArrowMarker(classRelation.relation.type2),\n startLabelRight: classRelation.relationTitle1 === \"none\" ? \"\" : classRelation.relationTitle1,\n endLabelLeft: classRelation.relationTitle2 === \"none\" ? \"\" : classRelation.relationTitle2,\n arrowheadStyle: \"\",\n labelStyle: [\"display: inline-block\"],\n style: classRelation.style || \"\",\n pattern: classRelation.relation.lineType == 1 ? \"dashed\" : \"solid\",\n look: config.look\n };\n edges.push(edge);\n }\n return { nodes, edges, other: {}, config, direction: getDirection() };\n}, \"getData\");\nvar classDb_default = {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n getConfig: /* @__PURE__ */ __name(() => getConfig().class, \"getConfig\"),\n addClass,\n bindFunctions,\n clear: clear2,\n getClass,\n getClasses,\n getNotes,\n addAnnotation,\n addNote,\n getRelations,\n addRelation,\n getDirection,\n setDirection,\n addMember,\n addMembers,\n cleanupLabel,\n lineType,\n relationType,\n setClickEvent,\n setCssClass,\n defineClass,\n setLink,\n getTooltip,\n setTooltip,\n lookUpDomId,\n setDiagramTitle,\n getDiagramTitle,\n setClassLabel,\n addNamespace,\n addClassesToNamespace,\n getNamespace,\n getNamespaces,\n setCssStyle,\n getData\n};\n\n// src/diagrams/class/styles.js\nvar getStyles = /* @__PURE__ */ __name((options) => `g.classGroup text {\n fill: ${options.nodeBorder || options.classText};\n stroke: none;\n font-family: ${options.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${options.classText};\n}\n.edgeLabel .label rect {\n fill: ${options.mainBkg};\n}\n.label text {\n fill: ${options.classText};\n}\n\n.labelBkg {\n background: ${options.mainBkg};\n}\n.edgeLabel .label span {\n background: ${options.mainBkg};\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${options.mainBkg};\n stroke: ${options.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${options.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${options.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${options.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${options.lineColor};\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n.dotted-line{\n stroke-dasharray: 1 2;\n}\n\n#compositionStart, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${options.lineColor} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${options.mainBkg} !important;\n stroke: ${options.lineColor} !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n line-height: initial;\n}\n\n.classTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor};\n}\n`, \"getStyles\");\nvar styles_default = getStyles;\n\n// src/diagrams/class/classRenderer-v3-unified.ts\nvar getDir = /* @__PURE__ */ __name((parsedItem, defaultDir = \"TB\") => {\n if (!parsedItem.doc) {\n return defaultDir;\n }\n let dir = defaultDir;\n for (const parsedItemDoc of parsedItem.doc) {\n if (parsedItemDoc.stmt === \"dir\") {\n dir = parsedItemDoc.value;\n }\n }\n return dir;\n}, \"getDir\");\nvar getClasses2 = /* @__PURE__ */ __name(function(text, diagramObj) {\n return diagramObj.db.getClasses();\n}, \"getClasses\");\nvar draw = /* @__PURE__ */ __name(async function(text, id, _version, diag) {\n log.info(\"REF0:\");\n log.info(\"Drawing class diagram (v3)\", id);\n const { securityLevel, state: conf, layout } = getConfig();\n const data4Layout = diag.db.getData();\n const svg = getDiagramElement(id, securityLevel);\n data4Layout.type = diag.type;\n data4Layout.layoutAlgorithm = getRegisteredLayoutAlgorithm(layout);\n data4Layout.nodeSpacing = conf?.nodeSpacing || 50;\n data4Layout.rankSpacing = conf?.rankSpacing || 50;\n data4Layout.markers = [\"aggregation\", \"extension\", \"composition\", \"dependency\", \"lollipop\"];\n data4Layout.diagramId = id;\n await render(data4Layout, svg);\n const padding = 8;\n utils_default.insertTitle(\n svg,\n \"classDiagramTitleText\",\n conf?.titleTopMargin ?? 25,\n diag.db.getDiagramTitle()\n );\n setupViewPortForSVG(svg, padding, \"classDiagram\", conf?.useMaxWidth ?? true);\n}, \"draw\");\nvar classRenderer_v3_unified_default = {\n getClasses: getClasses2,\n draw,\n getDir\n};\n\nexport {\n classDiagram_default,\n classDb_default,\n styles_default,\n classRenderer_v3_unified_default\n};\n"],
- "mappings": "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,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG,CAAC,GAAI,CAAC,EAAG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,IACH,KAAK,SAAS,EACd,KAAK,MAAM,eAAe,EAC1B,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,MAET,IAAK,IACH,KAAK,MAAM,QAAQ,EACnB,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,YAAK,MAAM,WAAW,EACf,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,EACP,MACF,IAAK,IACH,MACF,IAAK,IACH,YAAK,MAAM,gBAAgB,EACpB,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,MAAO,gBAET,IAAK,IACH,MAAO,GAET,IAAK,IACH,MACF,IAAK,IACH,MAAO,aAET,IAAK,IACH,YAAK,MAAM,OAAO,EACX,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,EACP,MACF,IAAK,IACH,MACF,IAAK,IACH,YAAK,SAAS,EACd,KAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,YAAK,MAAM,YAAY,EAChB,GACP,MACF,IAAK,IACH,YAAK,SAAS,EACP,GACP,MACF,IAAK,IACH,MAAO,gBAET,IAAK,IACH,MAAO,aAET,IAAK,IACH,MAAO,iBAET,IAAK,IACH,MACF,IAAK,IACH,MAAO,SAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,cAET,IAAK,IACH,KAAK,MAAM,SAAS,EACpB,MACF,IAAK,IACH,KAAK,SAAS,EACd,MACF,IAAK,IACH,MAAO,aAET,IAAK,IACH,KAAK,MAAM,UAAU,EACrB,MACF,IAAK,IACH,MAAO,IAET,IAAK,IACH,MAAO,IAET,IAAK,IAC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",
- "names": ["parser", "o", "__name", "k", "v", "o2", "l", "$V0", "$V1", "$V2", "$V3", "$V4", "$V5", "$V6", "$V7", "$V8", "$V9", "$Va", "$Vb", "$Vc", "$Vd", "$Ve", "$Vf", "$Vg", "$Vh", "$Vi", "$Vj", "$Vk", "$Vl", "$Vm", "$Vn", "$Vo", "$Vp", "$Vq", "$Vr", "$Vs", "$Vt", "$Vu", "$Vv", "$Vw", "$Vx", "$Vy", "$Vz", "$VA", "$VB", "$VC", "$VD", "$VE", "$VF", "$VG", "$VH", "$VI", "$VJ", "$VK", "$VL", "$VM", "$VN", "$VO", "$VP", "$VQ", "$VR", "$VS", "$VT", "$VU", "parser2", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "str", "hash", "error", "input", "self", "stack", "tstack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "args", "lexer2", "sharedState", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "match", "indexed_rule", "backup", "tempMatch", "index", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "YYSTATE", "Parser", "classDiagram_default", "visibilityValues", "ClassMember", "memberType", "sanitizedInput", "sanitizeText", "getConfig2", "displayText", "parseGenericTypes", "cssStyle", "potentialClassifier", "detectedVisibility", "lastChar", "length", "firstChar", "combinedText", "MERMAID_DOM_ID_PREFIX", "relations", "classes", "styleClasses", "notes", "interfaces", "classCounter", "namespaces", "namespaceCounter", "functions", "sanitizeText2", "txt", "common_default", "splitClassNameAndType", "_id", "id", "genericType", "className", "split", "setClassLabel", "label", "addClass", "type", "name", "addInterface", "classId", "classInterface", "lookUpDomId", "clear2", "setupToolTips", "direction", "clear", "getClass", "getClasses", "getRelations", "getNotes", "addRelation", "classRelation", "log", "invalidTypes", "relationType", "addAnnotation", "annotation", "validatedClassName", "addMember", "member", "theClass", "memberString", "addMembers", "members", "addNote", "text", "note", "cleanupLabel", "setCssClass", "ids", "classNode", "defineClass", "style", "styleClass", "s", "newStyle", "value", "setTooltip", "tooltip", "getTooltip", "namespace", "setLink", "linkStr", "target", "config", "utils_default", "setClickEvent", "functionName", "functionArgs", "setClickFunc", "_domId", "domId", "elemId", "argList", "item", "elem", "bindFunctions", "element", "fun", "lineType", "tooltipElem", "select_default", "el", "rect", "getDirection", "setDirection", "dir", "addNamespace", "getNamespace", "getNamespaces", "addClassesToNamespace", "classNames", "setCssStyle", "styles", "thisClass", "getArrowMarker", "marker", "getData", "nodes", "edges", "namespaceKey", "node", "classKey", "cnt", "noteNode", "noteClassId", "edge", "_interface", "interfaceNode", "getEdgeId", "classDb_default", "setAccTitle", "getAccTitle", "getAccDescription", "setAccDescription", "setDiagramTitle", "getDiagramTitle", "getStyles", "options", "styles_default", "getDir", "parsedItem", "defaultDir", "parsedItemDoc", "getClasses2", "diagramObj", "draw", "_version", "diag", "securityLevel", "conf", "layout", "data4Layout", "svg", "getDiagramElement", "getRegisteredLayoutAlgorithm", "render", "padding", "setupViewPortForSVG", "classRenderer_v3_unified_default"]
-}
diff --git a/templates/tabulareditor/public/chunk-PVWKA5UF.min.js b/templates/tabulareditor/public/chunk-PVWKA5UF.min.js
deleted file mode 100644
index c3919790..00000000
--- a/templates/tabulareditor/public/chunk-PVWKA5UF.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import{b as u,c as y,d as f,e as h}from"./chunk-7FSZ6LZK.min.js";import{b as g,e as m,h as d}from"./chunk-TDQFLYH7.min.js";import{c as l}from"./chunk-5JBUDD4A.min.js";import{D as n,N as s,h as o,j as a}from"./chunk-F7ONS4BM.min.js";var p={common:s,getConfig:n,insertCluster:m,insertEdge:f,insertEdgeLabel:u,insertMarkers:h,insertNode:d,interpolateToCurve:l,labelHelper:g,log:a,positionEdgeLabel:y},t={},L=o(r=>{for(let e of r)t[e.name]=e},"registerLayoutLoaders"),w=o(()=>{L([{name:"dagre",loader:o(async()=>await import("./dagre-4EVJKHTY-RSGQH5VF.min.js"),"loader")}])},"registerDefaultLayoutLoaders");w();var R=o(async(r,e)=>{if(!(r.layoutAlgorithm in t))throw new Error(`Unknown layout algorithm: ${r.layoutAlgorithm}`);let i=t[r.layoutAlgorithm];return(await i.loader()).render(r,e,p,{algorithm:i.algorithm})},"render"),_=o((r="",{fallback:e="dagre"}={})=>{if(r in t)return r;if(e in t)return a.warn(`Layout algorithm ${r} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${r} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm");export{L as a,R as b,_ as c};
-//# sourceMappingURL=chunk-PVWKA5UF.min.js.map
diff --git a/templates/tabulareditor/public/chunk-PVWKA5UF.min.js.map b/templates/tabulareditor/public/chunk-PVWKA5UF.min.js.map
deleted file mode 100644
index b5fd72ff..00000000
--- a/templates/tabulareditor/public/chunk-PVWKA5UF.min.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-BO7VGL7K.mjs"],
- "sourcesContent": ["import {\n insertEdge,\n insertEdgeLabel,\n markers_default,\n positionEdgeLabel\n} from \"./chunk-66SQ7PYY.mjs\";\nimport {\n insertCluster,\n insertNode,\n labelHelper\n} from \"./chunk-7NZE2EM7.mjs\";\nimport {\n interpolateToCurve\n} from \"./chunk-7DKRZKHE.mjs\";\nimport {\n __name,\n common_default,\n getConfig,\n log\n} from \"./chunk-6DBFFHIP.mjs\";\n\n// src/internals.ts\nvar internalHelpers = {\n common: common_default,\n getConfig,\n insertCluster,\n insertEdge,\n insertEdgeLabel,\n insertMarkers: markers_default,\n insertNode,\n interpolateToCurve,\n labelHelper,\n log,\n positionEdgeLabel\n};\n\n// src/rendering-util/render.ts\nvar layoutAlgorithms = {};\nvar registerLayoutLoaders = /* @__PURE__ */ __name((loaders) => {\n for (const loader of loaders) {\n layoutAlgorithms[loader.name] = loader;\n }\n}, \"registerLayoutLoaders\");\nvar registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {\n registerLayoutLoaders([\n {\n name: \"dagre\",\n loader: /* @__PURE__ */ __name(async () => await import(\"./dagre-4EVJKHTY.mjs\"), \"loader\")\n }\n ]);\n}, \"registerDefaultLayoutLoaders\");\nregisterDefaultLayoutLoaders();\nvar render = /* @__PURE__ */ __name(async (data4Layout, svg) => {\n if (!(data4Layout.layoutAlgorithm in layoutAlgorithms)) {\n throw new Error(`Unknown layout algorithm: ${data4Layout.layoutAlgorithm}`);\n }\n const layoutDefinition = layoutAlgorithms[data4Layout.layoutAlgorithm];\n const layoutRenderer = await layoutDefinition.loader();\n return layoutRenderer.render(data4Layout, svg, internalHelpers, {\n algorithm: layoutDefinition.algorithm\n });\n}, \"render\");\nvar getRegisteredLayoutAlgorithm = /* @__PURE__ */ __name((algorithm = \"\", { fallback = \"dagre\" } = {}) => {\n if (algorithm in layoutAlgorithms) {\n return algorithm;\n }\n if (fallback in layoutAlgorithms) {\n log.warn(`Layout algorithm ${algorithm} is not registered. Using ${fallback} as fallback.`);\n return fallback;\n }\n throw new Error(`Both layout algorithms ${algorithm} and ${fallback} are not registered.`);\n}, \"getRegisteredLayoutAlgorithm\");\n\nexport {\n registerLayoutLoaders,\n render,\n getRegisteredLayoutAlgorithm\n};\n"],
- "mappings": "wOAsBA,IAAIA,EAAkB,CACpB,OAAQC,EACR,UAAAC,EACA,cAAAC,EACA,WAAAC,EACA,gBAAAC,EACA,cAAeC,EACf,WAAAC,EACA,mBAAAC,EACA,YAAAC,EACA,IAAAC,EACA,kBAAAC,CACF,EAGIC,EAAmB,CAAC,EACpBC,EAAwCC,EAAQC,GAAY,CAC9D,QAAWC,KAAUD,EACnBH,EAAiBI,EAAO,IAAI,EAAIA,CAEpC,EAAG,uBAAuB,EACtBC,EAA+CH,EAAO,IAAM,CAC9DD,EAAsB,CACpB,CACE,KAAM,QACN,OAAwBC,EAAO,SAAY,KAAM,QAAO,kCAAsB,EAAG,QAAQ,CAC3F,CACF,CAAC,CACH,EAAG,8BAA8B,EACjCG,EAA6B,EAC7B,IAAIC,EAAyBJ,EAAO,MAAOK,EAAaC,IAAQ,CAC9D,GAAI,EAAED,EAAY,mBAAmBP,GACnC,MAAM,IAAI,MAAM,6BAA6BO,EAAY,eAAe,EAAE,EAE5E,IAAME,EAAmBT,EAAiBO,EAAY,eAAe,EAErE,OADuB,MAAME,EAAiB,OAAO,GAC/B,OAAOF,EAAaC,EAAKpB,EAAiB,CAC9D,UAAWqB,EAAiB,SAC9B,CAAC,CACH,EAAG,QAAQ,EACPC,EAA+CR,EAAO,CAACS,EAAY,GAAI,CAAE,SAAAC,EAAW,OAAQ,EAAI,CAAC,IAAM,CACzG,GAAID,KAAaX,EACf,OAAOW,EAET,GAAIC,KAAYZ,EACd,OAAAF,EAAI,KAAK,oBAAoBa,CAAS,6BAA6BC,CAAQ,eAAe,EACnFA,EAET,MAAM,IAAI,MAAM,0BAA0BD,CAAS,QAAQC,CAAQ,sBAAsB,CAC3F,EAAG,8BAA8B",
- "names": ["internalHelpers", "common_default", "getConfig", "insertCluster", "insertEdge", "insertEdgeLabel", "markers_default", "insertNode", "interpolateToCurve", "labelHelper", "log", "positionEdgeLabel", "layoutAlgorithms", "registerLayoutLoaders", "__name", "loaders", "loader", "registerDefaultLayoutLoaders", "render", "data4Layout", "svg", "layoutDefinition", "getRegisteredLayoutAlgorithm", "algorithm", "fallback"]
-}
diff --git a/templates/tabulareditor/public/chunk-TDQFLYH7.min.js b/templates/tabulareditor/public/chunk-TDQFLYH7.min.js
deleted file mode 100644
index 800db003..00000000
--- a/templates/tabulareditor/public/chunk-TDQFLYH7.min.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import{a as Tt}from"./chunk-6FLBKFBW.min.js";import{c as ft}from"./chunk-725X2GDB.min.js";import{d as ct}from"./chunk-O7HQDJ4J.min.js";import{i as ls,k as cs,o as ut,q as J}from"./chunk-5JBUDD4A.min.js";import{D as Rt,H as Lt,I as Q,K as At,M as rs,N as is,Z as X,aa as ns,h as S,ia as Y,j as q,v as as}from"./chunk-F7ONS4BM.min.js";function Wt(l,t,r){if(l&&l.length){let[a,e]=t,i=Math.PI/180*r,o=Math.cos(i),s=Math.sin(i);for(let h of l){let[n,c]=h;h[0]=(n-a)*o-(c-e)*s+a,h[1]=(n-a)*s+(c-e)*o+e}}}function _e(l,t){return l[0]===t[0]&&l[1]===t[1]}function ze(l,t,r,a=1){let e=r,i=Math.max(t,.1),o=l[0]&&l[0][0]&&typeof l[0][0]=="number"?[l]:l,s=[0,0];if(e)for(let n of o)Wt(n,s,e);let h=function(n,c,g){let f=[];for(let x of n){let b=[...x];_e(b[0],b[b.length-1])||b.push([b[0][0],b[0][1]]),b.length>2&&f.push(b)}let p=[];c=Math.max(c,.1);let u=[];for(let x of f)for(let b=0;bc%2?n+r:n+t);i.push({key:"C",data:h}),t=h[4],r=h[5];break}case"Q":i.push({key:"Q",data:[...s]}),t=s[2],r=s[3];break;case"q":{let h=s.map((n,c)=>c%2?n+r:n+t);i.push({key:"Q",data:h}),t=h[2],r=h[3];break}case"A":i.push({key:"A",data:[...s]}),t=s[5],r=s[6];break;case"a":t+=s[5],r+=s[6],i.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,r]});break;case"H":i.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],i.push({key:"H",data:[t]});break;case"V":i.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],i.push({key:"V",data:[r]});break;case"S":i.push({key:"S",data:[...s]}),t=s[2],r=s[3];break;case"s":{let h=s.map((n,c)=>c%2?n+r:n+t);i.push({key:"S",data:h}),t=h[2],r=h[3];break}case"T":i.push({key:"T",data:[...s]}),t=s[0],r=s[1];break;case"t":t+=s[0],r+=s[1],i.push({key:"T",data:[t,r]});break;case"Z":case"z":i.push({key:"Z",data:[]}),t=a,r=e}return i}function xs(l){let t=[],r="",a=0,e=0,i=0,o=0,s=0,h=0;for(let{key:n,data:c}of l){switch(n){case"M":t.push({key:"M",data:[...c]}),[a,e]=c,[i,o]=c;break;case"C":t.push({key:"C",data:[...c]}),a=c[4],e=c[5],s=c[2],h=c[3];break;case"L":t.push({key:"L",data:[...c]}),[a,e]=c;break;case"H":a=c[0],t.push({key:"L",data:[a,e]});break;case"V":e=c[0],t.push({key:"L",data:[a,e]});break;case"S":{let g=0,f=0;r==="C"||r==="S"?(g=a+(a-s),f=e+(e-h)):(g=a,f=e),t.push({key:"C",data:[g,f,...c]}),s=c[0],h=c[1],a=c[2],e=c[3];break}case"T":{let[g,f]=c,p=0,u=0;r==="Q"||r==="T"?(p=a+(a-s),u=e+(e-h)):(p=a,u=e);let y=a+2*(p-a)/3,m=e+2*(u-e)/3,d=g+2*(p-g)/3,x=f+2*(u-f)/3;t.push({key:"C",data:[y,m,d,x,g,f]}),s=p,h=u,a=g,e=f;break}case"Q":{let[g,f,p,u]=c,y=a+2*(g-a)/3,m=e+2*(f-e)/3,d=p+2*(g-p)/3,x=u+2*(f-u)/3;t.push({key:"C",data:[y,m,d,x,p,u]}),s=g,h=f,a=p,e=u;break}case"A":{let g=Math.abs(c[0]),f=Math.abs(c[1]),p=c[2],u=c[3],y=c[4],m=c[5],d=c[6];g===0||f===0?(t.push({key:"C",data:[a,e,m,d,m,d]}),a=m,e=d):(a!==m||e!==d)&&(bs(a,e,m,d,g,f,p,u,y).forEach(function(x){t.push({key:"C",data:x})}),a=m,e=d);break}case"Z":t.push({key:"Z",data:[]}),a=i,e=o}r=n}return t}function yt(l,t,r){return[l*Math.cos(r)-t*Math.sin(r),l*Math.sin(r)+t*Math.cos(r)]}function bs(l,t,r,a,e,i,o,s,h,n){let c=(g=o,Math.PI*g/180);var g;let f=[],p=0,u=0,y=0,m=0;if(n)[p,u,y,m]=n;else{[l,t]=yt(l,t,-c),[r,a]=yt(r,a,-c);let P=(l-r)/2,A=(t-a)/2,W=P*P/(e*e)+A*A/(i*i);W>1&&(W=Math.sqrt(W),e*=W,i*=W);let B=e*e,O=i*i,z=B*O-B*A*A-O*P*P,Z=B*A*A+O*P*P,tt=(s===h?-1:1)*Math.sqrt(Math.abs(z/Z));y=tt*e*A/i+(l+r)/2,m=tt*-i*P/e+(t+a)/2,p=Math.asin(parseFloat(((t-m)/i).toFixed(9))),u=Math.asin(parseFloat(((a-m)/i).toFixed(9))),l]*>/g,"").trim()==="";await Promise.all([...p].map(y=>new Promise(m=>{function d(){if(y.style.display="flex",y.style.flexDirection="column",u){let x=X().fontSize?X().fontSize:window.getComputedStyle(document.body).fontSize,b=5,[k=as.fontSize]=cs(x),w=k*b+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";m(y)}S(d,"setupImage"),setTimeout(()=>{y.complete&&d()}),y.addEventListener("error",d),y.addEventListener("load",d)})))}n=g.getBoundingClientRect(),f.attr("width",n.width),f.attr("height",n.height)}return e?o.attr("transform","translate("+-n.width/2+", "+-n.height/2+")"):o.attr("transform","translate(0, "+-n.height/2+")"),t.centerLabel&&o.attr("transform","translate("+-n.width/2+", "+-n.height/2+")"),o.insert("rect",":first-child"),{shapeSvg:i,bbox:n,halfPadding:c,label:o}},"labelHelper"),Ut=S(async(l,t,r)=>{let a=r.useHtmlLabels||Q(X()?.flowchart?.htmlLabels),e=l.insert("g").attr("class","label").attr("style",r.labelStyle||""),i=await ct(e,Lt(ut(t),X()),{useHtmlLabels:a,width:r.width||X()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),o=i.getBBox(),s=r.padding/2;if(Q(X()?.flowchart?.htmlLabels)){let h=i.children[0],n=Y(i);o=h.getBoundingClientRect(),n.attr("width",o.width),n.attr("height",o.height)}return a?e.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"):e.attr("transform","translate(0, "+-o.height/2+")"),r.centerLabel&&e.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),e.insert("rect",":first-child"),{shapeSvg:l,bbox:o,halfPadding:s,label:e}},"insertLabel"),H=S((l,t)=>{let r=t.node().getBBox();l.width=r.width,l.height=r.height},"updateNodeBounds"),j=S((l,t)=>(l.look==="handDrawn"?"rough-node":"node")+" "+l.cssClasses+" "+(t||""),"getNodeClasses");function F(l){let t=l.map((r,a)=>`${a===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}S(F,"createPathFromPoints");function nt(l,t,r,a,e,i){let o=[],h=r-l,n=a-t,c=h/i,g=2*Math.PI/c,f=t+n/2;for(let p=0;p<=50;p++){let u=p/50,y=l+u*h,m=f+e*Math.sin(g*(y-l));o.push({x:y,y:m})}return o}S(nt,"generateFullSineWavePoints");function es(l,t,r,a,e,i){let o=[],s=e*Math.PI/180,c=(i*Math.PI/180-s)/(a-1);for(let g=0;g{var r=l.x,a=l.y,e=t.x-r,i=t.y-a,o=l.width/2,s=l.height/2,h,n;return Math.abs(i)*o>Math.abs(e)*s?(i<0&&(s=-s),h=i===0?0:s*e/i,n=s):(e<0&&(o=-o),h=o,n=e===0?0:o*i/e),{x:r+h,y:a+n}},"intersectRect"),gt=Ve;function ks(l,t){t&&l.attr("style",t)}S(ks,"applyStyle");async function vs(l){let t=Y(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),a=l.label;l.label&&At(l.label)&&(a=await rs(l.label.replace(is.lineBreakRegex,`
-`),X()));let e=l.isNode?"nodeLabel":"edgeLabel";return r.html('"+a+""),ks(r,l.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}S(vs,"addHtmlLabel");var Ze=S(async(l,t,r,a)=>{let e=l||"";if(typeof e=="object"&&(e=e[0]),Q(X().flowchart.htmlLabels)){e=e.replace(/\\n|\n/g,"
"),q.info("vertexText"+e);let i={isNode:a,label:ut(e).replace(/fa[blrs]?:fa-[\w-]+/g,s=>``),labelStyle:t&&t.replace("fill:","color:")};return await vs(i)}else{let i=document.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("style",t.replace("color:","fill:"));let o=[];typeof e=="string"?o=e.split(/\\n|\n|
/gi):Array.isArray(e)?o=e:o=[];for(let s of o){let h=document.createElementNS("http://www.w3.org/2000/svg","tspan");h.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),h.setAttribute("dy","1em"),h.setAttribute("x","0"),r?h.setAttribute("class","title-row"):h.setAttribute("class","row"),h.textContent=s.trim(),i.appendChild(h)}return i}},"createLabel"),Kt=Ze,at=S((l,t,r,a,e)=>["M",l+e,t,"H",l+r-e,"A",e,e,0,0,1,l+r,t+e,"V",t+a-e,"A",e,e,0,0,1,l+r-e,t+a,"H",l+e,"A",e,e,0,0,1,l,t+a-e,"V",t+e,"A",e,e,0,0,1,l+e,t,"Z"].join(" "),"createRoundedRectPathD"),Qe=S(l=>{let{handDrawnSeed:t}=X();return{fill:l,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:l,seed:t}},"solidStateFill"),pt=S(l=>{let t=Je([...l.cssCompiledStyles||[],...l.cssStyles||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),Je=S(l=>{let t=new Map;return l.forEach(r=>{let[a,e]=r.split(":");t.set(a.trim(),e?.trim())}),t},"styles2Map"),I=S(l=>{let{stylesArray:t}=pt(l),r=[],a=[],e=[],i=[];return t.forEach(o=>{let s=o[0];s==="color"||s==="font-size"||s==="font-family"||s==="font-weight"||s==="font-style"||s==="text-decoration"||s==="text-align"||s==="text-transform"||s==="line-height"||s==="letter-spacing"||s==="word-spacing"||s==="text-shadow"||s==="text-overflow"||s==="white-space"||s==="word-wrap"||s==="word-break"||s==="overflow-wrap"||s==="hyphens"?r.push(o.join(":")+" !important"):(a.push(o.join(":")+" !important"),s.includes("stroke")&&e.push(o.join(":")+" !important"),s==="fill"&&i.push(o.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:a.join(";"),stylesArray:t,borderStyles:e,backgroundStyles:i}},"styles2String"),T=S((l,t)=>{let{themeVariables:r,handDrawnSeed:a}=X(),{nodeBorder:e,mainBkg:i}=r,{stylesMap:o}=pt(l);return Object.assign({roughness:.7,fill:o.get("fill")||i,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:o.get("stroke")||e,seed:a,strokeWidth:o.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},t)},"userNodeOverrides"),$s=S(async(l,t)=>{q.info("Creating subgraph rect for ",t.id,t);let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{clusterBkg:i,clusterBorder:o}=a,{labelStyles:s,nodeStyles:h,borderStyles:n,backgroundStyles:c}=I(t),g=l.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Q(r.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ct(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0}),y=u.getBBox();if(Q(r.flowchart.htmlLabels)){let $=u.children[0],D=Y(u);y=$.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;q.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let $=M.svg(g),D=T(t,{roughness:.7,fill:i,stroke:o,fillWeight:3,seed:e}),C=$.path(at(x,b,m,d,0),D);k=g.insert(()=>(q.debug("Rough node insert CXC",C),C),":first-child"),k.select("path:nth-child(2)").attr("style",n.join(";")),k.select("path").attr("style",c.join(";").replace("fill","stroke"))}else k=g.insert("rect",":first-child"),k.attr("style",h).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Tt(r);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let $=p.select("span");$&&$.attr("style",s)}let v=k.node().getBBox();return t.offsetX=0,t.width=v.width,t.height=v.height,t.offsetY=y.height-t.padding/2,t.intersect=function($){return gt(t,$)},{cluster:g,labelBBox:y}},"rect"),Ue=S((l,t)=>{let r=l.insert("g").attr("class","note-cluster").attr("id",t.id),a=r.insert("rect",":first-child"),e=0*t.padding,i=e/2;a.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-i).attr("y",t.y-t.height/2-i).attr("width",t.width+e).attr("height",t.height+e).attr("fill","none");let o=a.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(s){return gt(t,s)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),Ke=S(async(l,t)=>{let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{altBackground:i,compositeBackground:o,compositeTitleBackground:s,nodeBorder:h}=a,n=l.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-id",t.id).attr("data-look",t.look),c=n.insert("g",":first-child"),g=n.insert("g").attr("class","cluster-label"),f=n.append("rect"),p=g.node().appendChild(await Kt(t.label,t.labelStyle,void 0,!0)),u=p.getBBox();if(Q(r.flowchart.htmlLabels)){let C=p.children[0],R=Y(p);u=C.getBoundingClientRect(),R.attr("width",u.width),R.attr("height",u.height)}let y=0*t.padding,m=y/2,d=(t.width<=u.width+t.padding?u.width+t.padding:t.width)+y;t.width<=u.width+t.padding?t.diff=(d-t.width)/2-t.padding:t.diff=-t.padding;let x=t.height+y,b=t.height+y-u.height-6,k=t.x-d/2,w=t.y-x/2;t.width=d;let v=t.y-t.height/2-m+u.height+2,$;if(t.look==="handDrawn"){let C=t.cssClasses.includes("statediagram-cluster-alt"),R=M.svg(n),L=t.rx||t.ry?R.path(at(k,w,d,x,10),{roughness:.7,fill:s,fillStyle:"solid",stroke:h,seed:e}):R.rectangle(k,w,d,x,{seed:e});$=n.insert(()=>L,":first-child");let E=R.rectangle(k,v,d,b,{fill:C?i:o,fillStyle:C?"hachure":"solid",stroke:h,seed:e});$=n.insert(()=>L,":first-child"),f=n.insert(()=>E)}else $=c.insert("rect",":first-child"),$.attr("class","outer").attr("x",k).attr("y",w).attr("width",d).attr("height",x).attr("data-look",t.look),f.attr("class","inner").attr("x",k).attr("y",v).attr("width",d).attr("height",b);g.attr("transform",`translate(${t.x-u.width/2}, ${w+1-(Q(r.flowchart.htmlLabels)?0:3)})`);let D=$.node().getBBox();return t.height=D.height,t.offsetX=0,t.offsetY=u.height-t.padding/2,t.labelBBox=u,t.intersect=function(C){return gt(t,C)},{cluster:n,labelBBox:u}},"roundedWithTitle"),ta=S(async(l,t)=>{q.info("Creating subgraph rect for ",t.id,t);let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{clusterBkg:i,clusterBorder:o}=a,{labelStyles:s,nodeStyles:h,borderStyles:n,backgroundStyles:c}=I(t),g=l.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Q(r.flowchart.htmlLabels),p=g.insert("g").attr("class","cluster-label "),u=await ct(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0,width:t.width}),y=u.getBBox();if(Q(r.flowchart.htmlLabels)){let $=u.children[0],D=Y(u);y=$.getBoundingClientRect(),D.attr("width",y.width),D.attr("height",y.height)}let m=t.width<=y.width+t.padding?y.width+t.padding:t.width;t.width<=y.width+t.padding?t.diff=(m-t.width)/2-t.padding:t.diff=-t.padding;let d=t.height,x=t.x-m/2,b=t.y-d/2;q.trace("Data ",t,JSON.stringify(t));let k;if(t.look==="handDrawn"){let $=M.svg(g),D=T(t,{roughness:.7,fill:i,stroke:o,fillWeight:4,seed:e}),C=$.path(at(x,b,m,d,t.rx),D);k=g.insert(()=>(q.debug("Rough node insert CXC",C),C),":first-child"),k.select("path:nth-child(2)").attr("style",n.join(";")),k.select("path").attr("style",c.join(";").replace("fill","stroke"))}else k=g.insert("rect",":first-child"),k.attr("style",h).attr("rx",t.rx).attr("ry",t.ry).attr("x",x).attr("y",b).attr("width",m).attr("height",d);let{subGraphTitleTopMargin:w}=Tt(r);if(p.attr("transform",`translate(${t.x-y.width/2}, ${t.y-t.height/2+w})`),s){let $=p.select("span");$&&$.attr("style",s)}let v=k.node().getBBox();return t.offsetX=0,t.width=v.width,t.height=v.height,t.offsetY=y.height-t.padding/2,t.intersect=function($){return gt(t,$)},{cluster:g,labelBBox:y}},"kanbanSection"),sa=S((l,t)=>{let r=X(),{themeVariables:a,handDrawnSeed:e}=r,{nodeBorder:i}=a,o=l.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-look",t.look),s=o.insert("g",":first-child"),h=0*t.padding,n=t.width+h;t.diff=-t.padding;let c=t.height+h,g=t.x-n/2,f=t.y-c/2;t.width=n;let p;if(t.look==="handDrawn"){let m=M.svg(o).rectangle(g,f,n,c,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:i,seed:e});p=o.insert(()=>m,":first-child")}else p=s.insert("rect",":first-child"),p.attr("class","divider").attr("x",g).attr("y",f).attr("width",n).attr("height",c).attr("data-look",t.look);let u=p.node().getBBox();return t.height=u.height,t.offsetX=0,t.offsetY=0,t.intersect=function(y){return gt(t,y)},{cluster:o,labelBBox:{}}},"divider"),ea=$s,aa={rect:$s,squareRect:ea,roundedWithTitle:Ke,noteGroup:Ue,divider:sa,kanbanSection:ta},Ds=new Map,Ta=S(async(l,t)=>{let r=t.shape||"rect",a=await aa[r](l,t);return Ds.set(t.id,a),a},"insertCluster"),Wa=S(()=>{Ds=new Map},"clear");function Ps(l,t){return l.intersect(t)}S(Ps,"intersectNode");var ra=Ps;function Cs(l,t,r,a){var e=l.x,i=l.y,o=e-a.x,s=i-a.y,h=Math.sqrt(t*t*s*s+r*r*o*o),n=Math.abs(t*r*o/h);a.x
"):f,t.labelStyle,!0,!0)),y=u.children[0],m=Y(u);g=y.getBoundingClientRect(),m.attr("width",g.width),m.attr("height",g.height);let d=(t.padding||0)/2;Y(u).attr("transform","translate( "+(g.width>p.width?0:(p.width-g.width)/2)+", "+(p.height+d+5)+")"),Y(c).attr("transform","translate( "+(g.width
").length,g.innerHTML.includes("")&&(c+=g.innerHTML.split("]*>/g,"").trim()==="";await Promise.all([...p].map(y=>new Promise(m=>{function d(){if(y.style.display="flex",y.style.flexDirection="column",u){let x=i.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,k=parseInt(x,10)*5+"px";y.style.minWidth=k,y.style.maxWidth=k}else y.style.width="100%";m(y)}S(d,"setupImage"),setTimeout(()=>{y.complete&&d()}),y.addEventListener("error",d),y.addEventListener("load",d)})))}n=g.getBoundingClientRect(),f.attr("width",n.width),f.attr("height",n.height)}else{a.includes("font-weight: bolder")&&Y(h).selectAll("tspan").attr("font-weight",""),c=h.children.length;let g=h.children[0];(h.textContent===""||h.textContent.includes(">"))&&(g.textContent=s[0]+s.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),s[1]===" "&&(g.textContent=g.textContent[0]+" "+g.textContent.substring(1))),g.textContent==="undefined"&&(g.textContent=""),n=h.getBBox()}return e.attr("transform","translate(0,"+(-n.height/(2*c)+r)+")"),n.height}S(bt,"addText");async function Ie(l,t){let r=X(),a=r.class.padding??12,e=a,i=t.useHtmlLabels??Q(r.htmlLabels)??!0,o=t;o.annotations=o.annotations??[],o.members=o.members??[],o.methods=o.methods??[];let{shapeSvg:s,bbox:h}=await He(l,t,r,i,e),{labelStyles:n,nodeStyles:c}=I(t);t.labelStyle=n,t.cssStyles=o.styles||"";let g=o.styles?.join(";")||c||"";t.cssStyles||(t.cssStyles=g.replaceAll("!important","").split(";"));let f=o.members.length===0&&o.methods.length===0&&!r.class?.hideEmptyMembersBox,p=M.svg(s),u=T(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let y=h.width,m=h.height;o.members.length===0&&o.methods.length===0?m+=e:o.members.length>0&&o.methods.length===0&&(m+=e*2);let d=-y/2,x=-m/2,b=p.rectangle(d-a,x-a-(f?a:o.members.length===0&&o.methods.length===0?-a/2:0),y+2*a,m+2*a+(f?a*2:o.members.length===0&&o.methods.length===0?-a:0),u),k=s.insert(()=>b,":first-child");k.attr("class","basic label-container");let w=k.node().getBBox();s.selectAll(".text").each((C,R,L)=>{let E=Y(L[R]),P=E.attr("transform"),A=0;if(P){let z=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(P);z&&(A=parseFloat(z[2]))}let W=A+x+a-(f?a:o.members.length===0&&o.methods.length===0?-a/2:0);i||(W-=4);let B=d;(E.attr("class").includes("label-group")||E.attr("class").includes("annotation-group"))&&(B=-E.node()?.getBBox().width/2||0,s.selectAll("text").each(function(O,z,Z){window.getComputedStyle(Z[z]).textAnchor==="middle"&&(B=0)})),E.attr("transform",`translate(${B}, ${W})`)});let v=s.select(".annotation-group").node().getBBox().height-(f?a/2:0)||0,$=s.select(".label-group").node().getBBox().height-(f?a/2:0)||0,D=s.select(".members-group").node().getBBox().height-(f?a/2:0)||0;if(o.members.length>0||o.methods.length>0||f){let C=p.line(w.x,v+$+x+a,w.x+w.width,v+$+x+a,u);s.insert(()=>C).attr("class","divider").attr("style",g)}if(f||o.members.length>0||o.methods.length>0){let C=p.line(w.x,v+$+D+x+e*2+a,w.x+w.width,v+$+D+x+a+e*2,u);s.insert(()=>C).attr("class","divider").attr("style",g)}if(o.look!=="handDrawn"&&s.selectAll("path").attr("style",g),k.select(":nth-child(2)").attr("style",g),s.selectAll(".divider").select("path").attr("style",g),t.labelStyle?s.selectAll("span").attr("style",t.labelStyle):s.selectAll("span").attr("style",g),!i){let C=RegExp(/color\s*:\s*([^;]*)/),R=C.exec(g);if(R){let L=R[0].replace("color","fill");s.selectAll("tspan").attr("style",L)}else if(n){let L=C.exec(n);if(L){let E=L[0].replace("color","fill");s.selectAll("tspan").attr("style",E)}}}return H(t,k),t.intersect=function(C){return N.rect(t,C)},s}S(Ie,"classBox");var ba=S(l=>{switch(l){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");async function Ee(l,t,{config:r}){let{labelStyles:a,nodeStyles:e}=I(t);t.labelStyle=a||"";let i=10,o=t.width;t.width=(t.width??200)-10;let{shapeSvg:s,bbox:h,label:n}=await G(l,t,j(t)),c=t.padding||10,g="",f;"ticket"in t&&t.ticket&&r?.kanban?.ticketBaseUrl&&(g=r?.kanban?.ticketBaseUrl.replace("#TICKET#",t.ticket),f=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",g).attr("target","_blank"));let p={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1},u,y;f?{label:u,bbox:y}=await Ut(f,"ticket"in t&&t.ticket||"",p):{label:u,bbox:y}=await Ut(s,"ticket"in t&&t.ticket||"",p);let{label:m,bbox:d}=await Ut(s,"assigned"in t&&t.assigned||"",p);t.width=o;let x=10,b=t?.width||0,k=Math.max(y.height,d.height)/2,w=Math.max(h.height+x*2,t?.height||0)+k,v=-b/2,$=-w/2;n.attr("transform","translate("+(c-b/2)+", "+(-k-h.height/2)+")"),u.attr("transform","translate("+(c-b/2)+", "+(-k+h.height/2)+")"),m.attr("transform","translate("+(c+b/2-d.width-2*i)+", "+(-k+h.height/2)+")");let D,{rx:C,ry:R}=t,{cssStyles:L}=t;if(t.look==="handDrawn"){let E=M.svg(s),P=T(t,{}),A=C||R?E.path(at(v,$,b,w,C||0),P):E.rectangle(v,$,b,w,P);D=s.insert(()=>A,":first-child"),D.attr("class","basic label-container").attr("style",L||null)}else{D=s.insert("rect",":first-child"),D.attr("class","basic label-container __APA__").attr("style",e).attr("rx",C??5).attr("ry",R??5).attr("x",v).attr("y",$).attr("width",b).attr("height",w);let E="priority"in t&&t.priority;if(E){let P=s.append("line"),A=v+2,W=$+Math.floor((C??0)/2),B=$+w-Math.floor((C??0)/2);P.attr("x1",A).attr("y1",W).attr("x2",A).attr("y2",B).attr("stroke-width","4").attr("stroke",ba(E))}}return H(t,D),t.height=w,t.intersect=function(E){return N.rect(t,E)},s}S(Ee,"kanbanItem");var wa=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:we},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:me},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Se},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:$e},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Fs},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Is},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:ue},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:Js},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:le},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:ne},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:Ne},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:re},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Xs},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Ce},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Ws},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:xe},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:ve},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:ke},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:Zs},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Us},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:_s},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:zs},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:js},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:ce},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:Ae},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Qs},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:Be},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:oe},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:Gs},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:qs},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:Le},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:We},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Ys},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:Re},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:Vs},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:be},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:pe},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:ge},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:Ts},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:Os},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Pe},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:De},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:Te},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:ye},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:he}],Sa=S(()=>{let t=[...Object.entries({state:Me,choice:Hs,note:fe,rectWithTitle:de,labelRect:ie,iconSquare:ee,iconCircle:te,icon:Ks,iconRounded:se,imageSquare:ae,anchor:As,kanbanItem:Ee,classBox:Ie}),...wa.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(e=>[e,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),Oe=Sa();function Ma(l){return l in Oe}S(Ma,"isValidShape");var Nt=new Map;async function ka(l,t,r){let a,e;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");let i=t.shape?Oe[t.shape]:void 0;if(!i)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let o;r.config.securityLevel==="sandbox"?o="_top":t.linkTarget&&(o=t.linkTarget||"_blank"),a=l.insert("svg:a").attr("xlink:href",t.link).attr("target",o??null),e=await i(a,t,r)}else e=await i(l,t,r),a=e;return t.tooltip&&e.attr("title",t.tooltip),Nt.set(t.id,a),t.haveCallback&&a.attr("class",a.attr("class")+" clickable"),a}S(ka,"insertNode");var Or=S((l,t)=>{Nt.set(t.id,l)},"setNodeElem"),_r=S(()=>{Nt.clear()},"clear"),zr=S(l=>{let t=Nt.get(l.id);q.trace("Transforming node",l.diff,l,"translate("+(l.x-l.width/2-5)+", "+l.width/2+")");let r=8,a=l.diff||0;return l.clusterNode?t.attr("transform","translate("+(l.x+a-l.width/2)+", "+(l.y-l.height/2-r)+")"):t.attr("transform","translate("+l.x+", "+l.y+")"),a},"positionNode");export{M as a,G as b,H as c,Kt as d,Ta as e,Wa as f,Ma as g,ka as h,Or as i,_r as j,zr as k};
-//# sourceMappingURL=chunk-TDQFLYH7.min.js.map
diff --git a/templates/tabulareditor/public/chunk-TDQFLYH7.min.js.map b/templates/tabulareditor/public/chunk-TDQFLYH7.min.js.map
deleted file mode 100644
index 7813e201..00000000
--- a/templates/tabulareditor/public/chunk-TDQFLYH7.min.js.map
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "version": 3,
- "sources": ["../../node_modules/roughjs/bundled/rough.esm.js", "../../node_modules/mermaid/dist/chunks/mermaid.core/chunk-7NZE2EM7.mjs"],
- "sourcesContent": ["function t(t,e,s){if(t&&t.length){const[n,o]=e,a=Math.PI/180*s,h=Math.cos(a),r=Math.sin(a);for(const e of t){const[t,s]=e;e[0]=(t-n)*h-(s-o)*r+n,e[1]=(t-n)*r+(s-o)*h+o}}}function e(t,e){return t[0]===e[0]&&t[1]===e[1]}function s(s,n,o,a=1){const h=o,r=Math.max(n,.1),i=s[0]&&s[0][0]&&\"number\"==typeof s[0][0]?[s]:s,c=[0,0];if(h)for(const e of i)t(e,c,h);const l=function(t,s,n){const o=[];for(const s of t){const t=[...s];e(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&o.push(t)}const a=[];s=Math.max(s,.1);const h=[];for(const t of o)for(let e=0;e
]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = getConfig2().fontSize ? getConfig2().fontSize : window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const [parsedBodyFontSize = defaultConfig_default.fontSize] = parseFontSize(bodyFontSize);\n const width = parsedBodyFontSize * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (node.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg, bbox, halfPadding, label: labelEl };\n}, \"labelHelper\");\nvar insertLabel = /* @__PURE__ */ __name(async (parent, label, options) => {\n const useHtmlLabels = options.useHtmlLabels || evaluate(getConfig2()?.flowchart?.htmlLabels);\n const labelEl = parent.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", options.labelStyle || \"\");\n const text2 = await createText(labelEl, sanitizeText(decodeEntities(label), getConfig2()), {\n useHtmlLabels,\n width: options.width || getConfig2()?.flowchart?.wrappingWidth,\n style: options.labelStyle,\n addSvgBackground: !!options.icon || !!options.img\n });\n let bbox = text2.getBBox();\n const halfPadding = options.padding / 2;\n if (evaluate(getConfig2()?.flowchart?.htmlLabels)) {\n const div = text2.children[0];\n const dv = select(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n if (useHtmlLabels) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n } else {\n labelEl.attr(\"transform\", \"translate(0, \" + -bbox.height / 2 + \")\");\n }\n if (options.centerLabel) {\n labelEl.attr(\"transform\", \"translate(\" + -bbox.width / 2 + \", \" + -bbox.height / 2 + \")\");\n }\n labelEl.insert(\"rect\", \":first-child\");\n return { shapeSvg: parent, bbox, halfPadding, label: labelEl };\n}, \"insertLabel\");\nvar updateNodeBounds = /* @__PURE__ */ __name((node, element) => {\n const bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n}, \"updateNodeBounds\");\nvar getNodeClasses = /* @__PURE__ */ __name((node, extra) => (node.look === \"handDrawn\" ? \"rough-node\" : \"node\") + \" \" + node.cssClasses + \" \" + (extra || \"\"), \"getNodeClasses\");\nfunction createPathFromPoints(points) {\n const pointStrings = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"}${p.x},${p.y}`);\n pointStrings.push(\"Z\");\n return pointStrings.join(\" \");\n}\n__name(createPathFromPoints, \"createPathFromPoints\");\nfunction generateFullSineWavePoints(x1, y1, x2, y2, amplitude, numCycles) {\n const points = [];\n const steps = 50;\n const deltaX = x2 - x1;\n const deltaY = y2 - y1;\n const cycleLength = deltaX / numCycles;\n const frequency = 2 * Math.PI / cycleLength;\n const midY = y1 + deltaY / 2;\n for (let i = 0; i <= steps; i++) {\n const t = i / steps;\n const x = x1 + t * deltaX;\n const y = midY + amplitude * Math.sin(frequency * (x - x1));\n points.push({ x, y });\n }\n return points;\n}\n__name(generateFullSineWavePoints, \"generateFullSineWavePoints\");\nfunction generateCirclePoints(centerX, centerY, radius, numPoints, startAngle, endAngle) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints, \"generateCirclePoints\");\n\n// src/rendering-util/rendering-elements/clusters.js\nimport { select as select3 } from \"d3\";\nimport rough from \"roughjs\";\n\n// src/rendering-util/rendering-elements/intersect/intersect-rect.js\nvar intersectRect = /* @__PURE__ */ __name((node, point) => {\n var x = node.x;\n var y = node.y;\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n return { x: x + sx, y: y + sy };\n}, \"intersectRect\");\nvar intersect_rect_default = intersectRect;\n\n// src/rendering-util/rendering-elements/createLabel.js\nimport { select as select2 } from \"d3\";\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n__name(applyStyle, \"applyStyle\");\nasync function addHtmlLabel(node) {\n const fo = select2(document.createElementNS(\"http://www.w3.org/2000/svg\", \"foreignObject\"));\n const div = fo.append(\"xhtml:div\");\n let label = node.label;\n if (node.label && hasKatex(node.label)) {\n label = await renderKatex(node.label.replace(common_default.lineBreakRegex, \"\\n\"), getConfig2());\n }\n const labelClass = node.isNode ? \"nodeLabel\" : \"edgeLabel\";\n div.html(\n '\" + label + \"\"\n );\n applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n div.style(\"padding-right\", \"1px\");\n div.style(\"white-space\", \"nowrap\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n return fo.node();\n}\n__name(addHtmlLabel, \"addHtmlLabel\");\nvar createLabel = /* @__PURE__ */ __name(async (_vertexText, style, isTitle, isNode) => {\n let vertexText = _vertexText || \"\";\n if (typeof vertexText === \"object\") {\n vertexText = vertexText[0];\n }\n if (evaluate(getConfig2().flowchart.htmlLabels)) {\n vertexText = vertexText.replace(/\\\\n|\\n/g, \"
\");\n log.info(\"vertexText\" + vertexText);\n const node = {\n isNode,\n label: decodeEntities(vertexText).replace(\n /fa[blrs]?:fa-[\\w-]+/g,\n (s) => ``\n ),\n labelStyle: style ? style.replace(\"fill:\", \"color:\") : style\n };\n let vertexNode = await addHtmlLabel(node);\n return vertexNode;\n } else {\n const svgLabel = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n svgLabel.setAttribute(\"style\", style.replace(\"color:\", \"fill:\"));\n let rows = [];\n if (typeof vertexText === \"string\") {\n rows = vertexText.split(/\\\\n|\\n|
/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n for (const row of rows) {\n const tspan = document.createElementNS(\"http://www.w3.org/2000/svg\", \"tspan\");\n tspan.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n tspan.setAttribute(\"dy\", \"1em\");\n tspan.setAttribute(\"x\", \"0\");\n if (isTitle) {\n tspan.setAttribute(\"class\", \"title-row\");\n } else {\n tspan.setAttribute(\"class\", \"row\");\n }\n tspan.textContent = row.trim();\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n }\n}, \"createLabel\");\nvar createLabel_default = createLabel;\n\n// src/rendering-util/rendering-elements/shapes/roundedRectPath.ts\nvar createRoundedRectPathD = /* @__PURE__ */ __name((x, y, totalWidth, totalHeight, radius) => [\n \"M\",\n x + radius,\n y,\n // Move to the first point\n \"H\",\n x + totalWidth - radius,\n // Draw horizontal line to the beginning of the right corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth,\n y + radius,\n // Draw arc to the right top corner\n \"V\",\n y + totalHeight - radius,\n // Draw vertical line down to the beginning of the right bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + totalWidth - radius,\n y + totalHeight,\n // Draw arc to the right bottom corner\n \"H\",\n x + radius,\n // Draw horizontal line to the beginning of the left bottom corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x,\n y + totalHeight - radius,\n // Draw arc to the left bottom corner\n \"V\",\n y + radius,\n // Draw vertical line up to the beginning of the left top corner\n \"A\",\n radius,\n radius,\n 0,\n 0,\n 1,\n x + radius,\n y,\n // Draw arc to the left top corner\n \"Z\"\n // Close the path\n].join(\" \"), \"createRoundedRectPathD\");\n\n// src/rendering-util/rendering-elements/shapes/handDrawnShapeStyles.ts\nvar solidStateFill = /* @__PURE__ */ __name((color) => {\n const { handDrawnSeed } = getConfig2();\n return {\n fill: color,\n hachureAngle: 120,\n // angle of hachure,\n hachureGap: 4,\n fillWeight: 2,\n roughness: 0.7,\n stroke: color,\n seed: handDrawnSeed\n };\n}, \"solidStateFill\");\nvar compileStyles = /* @__PURE__ */ __name((node) => {\n const stylesMap = styles2Map([...node.cssCompiledStyles || [], ...node.cssStyles || []]);\n return { stylesMap, stylesArray: [...stylesMap] };\n}, \"compileStyles\");\nvar styles2Map = /* @__PURE__ */ __name((styles) => {\n const styleMap = /* @__PURE__ */ new Map();\n styles.forEach((style) => {\n const [key, value] = style.split(\":\");\n styleMap.set(key.trim(), value?.trim());\n });\n return styleMap;\n}, \"styles2Map\");\nvar styles2String = /* @__PURE__ */ __name((node) => {\n const { stylesArray } = compileStyles(node);\n const labelStyles = [];\n const nodeStyles = [];\n const borderStyles = [];\n const backgroundStyles = [];\n stylesArray.forEach((style) => {\n const key = style[0];\n if (key === \"color\" || key === \"font-size\" || key === \"font-family\" || key === \"font-weight\" || key === \"font-style\" || key === \"text-decoration\" || key === \"text-align\" || key === \"text-transform\" || key === \"line-height\" || key === \"letter-spacing\" || key === \"word-spacing\" || key === \"text-shadow\" || key === \"text-overflow\" || key === \"white-space\" || key === \"word-wrap\" || key === \"word-break\" || key === \"overflow-wrap\" || key === \"hyphens\") {\n labelStyles.push(style.join(\":\") + \" !important\");\n } else {\n nodeStyles.push(style.join(\":\") + \" !important\");\n if (key.includes(\"stroke\")) {\n borderStyles.push(style.join(\":\") + \" !important\");\n }\n if (key === \"fill\") {\n backgroundStyles.push(style.join(\":\") + \" !important\");\n }\n }\n });\n return {\n labelStyles: labelStyles.join(\";\"),\n nodeStyles: nodeStyles.join(\";\"),\n stylesArray,\n borderStyles,\n backgroundStyles\n };\n}, \"styles2String\");\nvar userNodeOverrides = /* @__PURE__ */ __name((node, options) => {\n const { themeVariables, handDrawnSeed } = getConfig2();\n const { nodeBorder, mainBkg } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const result = Object.assign(\n {\n roughness: 0.7,\n fill: stylesMap.get(\"fill\") || mainBkg,\n fillStyle: \"hachure\",\n // solid fill\n fillWeight: 4,\n hachureGap: 5.2,\n stroke: stylesMap.get(\"stroke\") || nodeBorder,\n seed: handDrawnSeed,\n strokeWidth: stylesMap.get(\"stroke-width\")?.replace(\"px\", \"\") || 1.3,\n fillLineDash: [0, 0]\n },\n options\n );\n return result;\n}, \"userNodeOverrides\");\n\n// src/rendering-util/rendering-elements/clusters.js\nvar rect = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 3,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, 0), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"rect\");\nvar noteGroup = /* @__PURE__ */ __name((parent, node) => {\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"note-cluster\").attr(\"id\", node.id);\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n rect2.attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", node.x - node.width / 2 - halfPadding).attr(\"y\", node.y - node.height / 2 - halfPadding).attr(\"width\", node.width + padding).attr(\"height\", node.height + padding).attr(\"fill\", \"none\");\n const rectBox = rect2.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: { width: 0, height: 0 } };\n}, \"noteGroup\");\nvar roundedWithTitle = /* @__PURE__ */ __name(async (parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { altBackground, compositeBackground, compositeTitleBackground, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const label = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label\");\n let innerRect = shapeSvg.append(\"rect\");\n const text2 = label.node().appendChild(await createLabel_default(node.label, node.labelStyle, void 0, true));\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const padding = 0 * node.padding;\n const halfPadding = padding / 2;\n const width = (node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width) + padding;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height + padding;\n const innerHeight = node.height + padding - bbox.height - 6;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n const innerY = node.y - node.height / 2 - halfPadding + bbox.height + 2;\n let rect2;\n if (node.look === \"handDrawn\") {\n const isAlt = node.cssClasses.includes(\"statediagram-cluster-alt\");\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = node.rx || node.ry ? rc.path(createRoundedRectPathD(x, y, width, height, 10), {\n roughness: 0.7,\n fill: compositeTitleBackground,\n fillStyle: \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n }) : rc.rectangle(x, y, width, height, { seed: handDrawnSeed });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n const roughInnerNode = rc.rectangle(x, innerY, width, innerHeight, {\n fill: isAlt ? altBackground : compositeBackground,\n fillStyle: isAlt ? \"hachure\" : \"solid\",\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n innerRect = shapeSvg.insert(() => roughInnerNode);\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"outer\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n innerRect.attr(\"class\", \"inner\").attr(\"x\", x).attr(\"y\", innerY).attr(\"width\", width).attr(\"height\", innerHeight);\n }\n label.attr(\n \"transform\",\n `translate(${node.x - bbox.width / 2}, ${y + 1 - (evaluate(siteConfig.flowchart.htmlLabels) ? 0 : 3)})`\n );\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = bbox.height - node.padding / 2;\n node.labelBBox = bbox;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"roundedWithTitle\");\nvar kanbanSection = /* @__PURE__ */ __name(async (parent, node) => {\n log.info(\"Creating subgraph rect for \", node.id, node);\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { clusterBkg, clusterBorder } = themeVariables;\n const { labelStyles, nodeStyles, borderStyles, backgroundStyles } = styles2String(node);\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"cluster \" + node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const useHtmlLabels = evaluate(siteConfig.flowchart.htmlLabels);\n const labelEl = shapeSvg.insert(\"g\").attr(\"class\", \"cluster-label \");\n const text2 = await createText(labelEl, node.label, {\n style: node.labelStyle,\n useHtmlLabels,\n isNode: true,\n width: node.width\n });\n let bbox = text2.getBBox();\n if (evaluate(siteConfig.flowchart.htmlLabels)) {\n const div = text2.children[0];\n const dv = select3(text2);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n const width = node.width <= bbox.width + node.padding ? bbox.width + node.padding : node.width;\n if (node.width <= bbox.width + node.padding) {\n node.diff = (width - node.width) / 2 - node.padding;\n } else {\n node.diff = -node.padding;\n }\n const height = node.height;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n log.trace(\"Data \", node, JSON.stringify(node));\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n roughness: 0.7,\n fill: clusterBkg,\n // fill: 'red',\n stroke: clusterBorder,\n fillWeight: 4,\n seed: handDrawnSeed\n });\n const roughNode = rc.path(createRoundedRectPathD(x, y, width, height, node.rx), options);\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n rect2.select(\"path:nth-child(2)\").attr(\"style\", borderStyles.join(\";\"));\n rect2.select(\"path\").attr(\"style\", backgroundStyles.join(\";\").replace(\"fill\", \"stroke\"));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"style\", nodeStyles).attr(\"rx\", node.rx).attr(\"ry\", node.ry).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height);\n }\n const { subGraphTitleTopMargin } = getSubGraphTitleMargins(siteConfig);\n labelEl.attr(\n \"transform\",\n // This puts the label on top of the box instead of inside it\n `translate(${node.x - bbox.width / 2}, ${node.y - node.height / 2 + subGraphTitleTopMargin})`\n );\n if (labelStyles) {\n const span = labelEl.select(\"span\");\n if (span) {\n span.attr(\"style\", labelStyles);\n }\n }\n const rectBox = rect2.node().getBBox();\n node.offsetX = 0;\n node.width = rectBox.width;\n node.height = rectBox.height;\n node.offsetY = bbox.height - node.padding / 2;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: bbox };\n}, \"kanbanSection\");\nvar divider = /* @__PURE__ */ __name((parent, node) => {\n const siteConfig = getConfig2();\n const { themeVariables, handDrawnSeed } = siteConfig;\n const { nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", node.cssClasses).attr(\"id\", node.id).attr(\"data-look\", node.look);\n const outerRectG = shapeSvg.insert(\"g\", \":first-child\");\n const padding = 0 * node.padding;\n const width = node.width + padding;\n node.diff = -node.padding;\n const height = node.height + padding;\n const x = node.x - width / 2;\n const y = node.y - height / 2;\n node.width = width;\n let rect2;\n if (node.look === \"handDrawn\") {\n const rc = rough.svg(shapeSvg);\n const roughOuterNode = rc.rectangle(x, y, width, height, {\n fill: \"lightgrey\",\n roughness: 0.5,\n strokeLineDash: [5],\n stroke: nodeBorder,\n seed: handDrawnSeed\n });\n rect2 = shapeSvg.insert(() => roughOuterNode, \":first-child\");\n } else {\n rect2 = outerRectG.insert(\"rect\", \":first-child\");\n const outerRectClass = \"divider\";\n rect2.attr(\"class\", outerRectClass).attr(\"x\", x).attr(\"y\", y).attr(\"width\", width).attr(\"height\", height).attr(\"data-look\", node.look);\n }\n const rectBox = rect2.node().getBBox();\n node.height = rectBox.height;\n node.offsetX = 0;\n node.offsetY = 0;\n node.intersect = function(point) {\n return intersect_rect_default(node, point);\n };\n return { cluster: shapeSvg, labelBBox: {} };\n}, \"divider\");\nvar squareRect = rect;\nvar shapes = {\n rect,\n squareRect,\n roundedWithTitle,\n noteGroup,\n divider,\n kanbanSection\n};\nvar clusterElems = /* @__PURE__ */ new Map();\nvar insertCluster = /* @__PURE__ */ __name(async (elem, node) => {\n const shape = node.shape || \"rect\";\n const cluster = await shapes[shape](elem, node);\n clusterElems.set(node.id, cluster);\n return cluster;\n}, \"insertCluster\");\nvar clear = /* @__PURE__ */ __name(() => {\n clusterElems = /* @__PURE__ */ new Map();\n}, \"clear\");\n\n// src/rendering-util/rendering-elements/intersect/intersect-node.js\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n__name(intersectNode, \"intersectNode\");\nvar intersect_node_default = intersectNode;\n\n// src/rendering-util/rendering-elements/intersect/intersect-ellipse.js\nfunction intersectEllipse(node, rx, ry, point) {\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n return { x: cx + dx, y: cy + dy };\n}\n__name(intersectEllipse, \"intersectEllipse\");\nvar intersect_ellipse_default = intersectEllipse;\n\n// src/rendering-util/rendering-elements/intersect/intersect-circle.js\nfunction intersectCircle(node, rx, point) {\n return intersect_ellipse_default(node, rx, rx, point);\n}\n__name(intersectCircle, \"intersectCircle\");\nvar intersect_circle_default = intersectCircle;\n\n// src/rendering-util/rendering-elements/intersect/intersect-line.js\nfunction intersectLine(p1, p2, q1, q2) {\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y;\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y;\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1;\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n }\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y;\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2;\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n }\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return;\n }\n offset = Math.abs(denom / 2);\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return { x, y };\n}\n__name(intersectLine, \"intersectLine\");\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n__name(sameSign, \"sameSign\");\nvar intersect_line_default = intersectLine;\n\n// src/rendering-util/rendering-elements/intersect/intersect-polygon.js\nfunction intersectPolygon(node, polyPoints, point) {\n let x1 = node.x;\n let y1 = node.y;\n let intersections = [];\n let minX = Number.POSITIVE_INFINITY;\n let minY = Number.POSITIVE_INFINITY;\n if (typeof polyPoints.forEach === \"function\") {\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n let left = x1 - node.width / 2 - minX;\n let top = y1 - node.height / 2 - minY;\n for (let i = 0; i < polyPoints.length; i++) {\n let p1 = polyPoints[i];\n let p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n let intersect = intersect_line_default(\n node,\n point,\n { x: left + p1.x, y: top + p1.y },\n { x: left + p2.x, y: top + p2.y }\n );\n if (intersect) {\n intersections.push(intersect);\n }\n }\n if (!intersections.length) {\n return node;\n }\n if (intersections.length > 1) {\n intersections.sort(function(p, q) {\n let pdx = p.x - point.x;\n let pdy = p.y - point.y;\n let distp = Math.sqrt(pdx * pdx + pdy * pdy);\n let qdx = q.x - point.x;\n let qdy = q.y - point.y;\n let distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n return intersections[0];\n}\n__name(intersectPolygon, \"intersectPolygon\");\nvar intersect_polygon_default = intersectPolygon;\n\n// src/rendering-util/rendering-elements/intersect/index.js\nvar intersect_default = {\n node: intersect_node_default,\n circle: intersect_circle_default,\n ellipse: intersect_ellipse_default,\n polygon: intersect_polygon_default,\n rect: intersect_rect_default\n};\n\n// src/rendering-util/rendering-elements/shapes/anchor.ts\nimport rough2 from \"roughjs\";\nfunction anchor(parent, node) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const classes = getNodeClasses(node);\n let cssClasses = classes;\n if (!classes) {\n cssClasses = \"anchor\";\n }\n const shapeSvg = parent.insert(\"g\").attr(\"class\", cssClasses).attr(\"id\", node.domId || node.id);\n const radius = 1;\n const { cssStyles } = node;\n const rc = rough2.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"black\", stroke: \"none\", fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const roughNode = rc.circle(0, 0, radius * 2, options);\n const circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"anchor\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(anchor, \"anchor\");\n\n// src/rendering-util/rendering-elements/shapes/bowTieRect.ts\nimport rough3 from \"roughjs\";\nfunction generateArcPoints(x1, y1, x2, y2, rx, ry, clockwise) {\n const numPoints = 20;\n const midX = (x1 + x2) / 2;\n const midY = (y1 + y2) / 2;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n const dx = (x2 - x1) / 2;\n const dy = (y2 - y1) / 2;\n const transformedX = dx / rx;\n const transformedY = dy / ry;\n const distance = Math.sqrt(transformedX ** 2 + transformedY ** 2);\n if (distance > 1) {\n throw new Error(\"The given radii are too small to create an arc between the points.\");\n }\n const scaledCenterDistance = Math.sqrt(1 - distance ** 2);\n const centerX = midX + scaledCenterDistance * ry * Math.sin(angle) * (clockwise ? -1 : 1);\n const centerY = midY - scaledCenterDistance * rx * Math.cos(angle) * (clockwise ? -1 : 1);\n const startAngle = Math.atan2((y1 - centerY) / ry, (x1 - centerX) / rx);\n const endAngle = Math.atan2((y2 - centerY) / ry, (x2 - centerX) / rx);\n let angleRange = endAngle - startAngle;\n if (clockwise && angleRange < 0) {\n angleRange += 2 * Math.PI;\n }\n if (!clockwise && angleRange > 0) {\n angleRange -= 2 * Math.PI;\n }\n const points = [];\n for (let i = 0; i < numPoints; i++) {\n const t = i / (numPoints - 1);\n const angle2 = startAngle + t * angleRange;\n const x = centerX + rx * Math.cos(angle2);\n const y = centerY + ry * Math.sin(angle2);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateArcPoints, \"generateArcPoints\");\nasync function bowTieRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding + 20;\n const h = bbox.height + node.padding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const { cssStyles } = node;\n const points = [\n { x: w / 2, y: -h / 2 },\n { x: -w / 2, y: -h / 2 },\n ...generateArcPoints(-w / 2, -h / 2, -w / 2, h / 2, rx, ry, false),\n { x: w / 2, y: h / 2 },\n ...generateArcPoints(w / 2, h / 2, w / 2, -h / 2, rx, ry, true)\n ];\n const rc = rough3.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const bowTieRectPath = createPathFromPoints(points);\n const bowTieRectShapePath = rc.path(bowTieRectPath, options);\n const bowTieRectShape = shapeSvg.insert(() => bowTieRectShapePath, \":first-child\");\n bowTieRectShape.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n bowTieRectShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n bowTieRectShape.attr(\"transform\", `translate(${rx / 2}, 0)`);\n updateNodeBounds(node, bowTieRectShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(bowTieRect, \"bowTieRect\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nimport rough4 from \"roughjs\";\n\n// src/rendering-util/rendering-elements/shapes/insertPolygonShape.ts\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert(\"polygon\", \":first-child\").attr(\n \"points\",\n points.map(function(d) {\n return d.x + \",\" + d.y;\n }).join(\" \")\n ).attr(\"class\", \"label-container\").attr(\"transform\", \"translate(\" + -w / 2 + \",\" + h / 2 + \")\");\n}\n__name(insertPolygonShape, \"insertPolygonShape\");\n\n// src/rendering-util/rendering-elements/shapes/card.ts\nasync function card(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const padding = 12;\n const w = bbox.width + node.padding + padding;\n const left = 0;\n const right = w;\n const top = -h;\n const bottom = 0;\n const points = [\n { x: left + padding, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom },\n { x: left, y: top + padding },\n { x: left + padding, y: top }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough4.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(card, \"card\");\n\n// src/rendering-util/rendering-elements/shapes/choice.ts\nimport rough5 from \"roughjs\";\nfunction choice(parent, node) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n const s = Math.max(28, node.width ?? 0);\n const points = [\n { x: 0, y: s / 2 },\n { x: s / 2, y: 0 },\n { x: 0, y: -s / 2 },\n { x: -s / 2, y: 0 }\n ];\n const rc = rough5.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const choicePath = createPathFromPoints(points);\n const roughNode = rc.path(choicePath, options);\n const choiceShape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n choiceShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = 28;\n node.height = 28;\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(choice, \"choice\");\n\n// src/rendering-util/rendering-elements/shapes/circle.ts\nimport rough6 from \"roughjs\";\nasync function circle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const radius = bbox.width / 2 + halfPadding;\n let circleElem;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough6.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.circle(0, 0, radius * 2, options);\n circleElem = shapeSvg.insert(() => roughNode, \":first-child\");\n circleElem.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n circleElem = shapeSvg.insert(\"circle\", \":first-child\").attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"r\", radius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleElem);\n node.intersect = function(point) {\n log.info(\"Circle intersect\", node, radius, point);\n return intersect_default.circle(node, radius, point);\n };\n return shapeSvg;\n}\n__name(circle, \"circle\");\n\n// src/rendering-util/rendering-elements/shapes/crossedCircle.ts\nimport rough7 from \"roughjs\";\nfunction createLine(r) {\n const xAxis45 = Math.cos(Math.PI / 4);\n const yAxis45 = Math.sin(Math.PI / 4);\n const lineLength = r * 2;\n const pointQ1 = { x: lineLength / 2 * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ2 = { x: -(lineLength / 2) * xAxis45, y: lineLength / 2 * yAxis45 };\n const pointQ3 = { x: -(lineLength / 2) * xAxis45, y: -(lineLength / 2) * yAxis45 };\n const pointQ4 = { x: lineLength / 2 * xAxis45, y: -(lineLength / 2) * yAxis45 };\n return `M ${pointQ2.x},${pointQ2.y} L ${pointQ4.x},${pointQ4.y}\n M ${pointQ1.x},${pointQ1.y} L ${pointQ3.x},${pointQ3.y}`;\n}\n__name(createLine, \"createLine\");\nfunction crossedCircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = Math.max(30, node?.width ?? 0);\n const { cssStyles } = node;\n const rc = rough7.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const linePath = createLine(radius);\n const lineNode = rc.path(linePath, options);\n const crossedCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n crossedCircle2.insert(() => lineNode);\n if (cssStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n crossedCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, crossedCircle2);\n node.intersect = function(point) {\n log.info(\"crossedCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(crossedCircle, \"crossedCircle\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceLeft.ts\nimport rough8 from \"roughjs\";\nfunction generateCirclePoints2(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints2, \"generateCirclePoints\");\nasync function curlyBraceLeft(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints2(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints2(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints2(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints2(w / 2 + w * 0.1, -radius, radius, 20, -180, -270),\n ...generateCirclePoints2(w / 2 + w * 0.1, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints2(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2, y: h / 2 + radius }\n ];\n const rc = rough8.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceLeftPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceLeftPath.replace(\"Z\", \"\");\n const curlyBraceLeftNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceLeftShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceLeftShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceLeftShape.insert(() => curlyBraceLeftNode, \":first-child\");\n curlyBraceLeftShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceLeftShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceLeftShape.attr(\"transform\", `translate(${radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + radius - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceLeftShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceLeft, \"curlyBraceLeft\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraceRight.ts\nimport rough9 from \"roughjs\";\nfunction generateCirclePoints3(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x, y });\n }\n return points;\n}\n__name(generateCirclePoints3, \"generateCirclePoints\");\nasync function curlyBraceRight(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const points = [\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rectPoints = [\n { x: -w / 2, y: -h / 2 - radius },\n { x: w / 2, y: -h / 2 - radius },\n ...generateCirclePoints3(w / 2, -h / 2, radius, 20, -90, 0),\n { x: w / 2 + radius, y: -radius },\n ...generateCirclePoints3(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints3(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: w / 2 + radius, y: h / 2 },\n ...generateCirclePoints3(w / 2, h / 2, radius, 20, 0, 90),\n { x: w / 2, y: h / 2 + radius },\n { x: -w / 2, y: h / 2 + radius }\n ];\n const rc = rough9.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const curlyBraceRightPath = createPathFromPoints(points);\n const newCurlyBracePath = curlyBraceRightPath.replace(\"Z\", \"\");\n const curlyBraceRightNode = rc.path(newCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBraceRightShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBraceRightShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBraceRightShape.insert(() => curlyBraceRightNode, \":first-child\");\n curlyBraceRightShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBraceRightShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBraceRightShape.attr(\"transform\", `translate(${-radius}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBraceRightShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraceRight, \"curlyBraceRight\");\n\n// src/rendering-util/rendering-elements/shapes/curlyBraces.ts\nimport rough10 from \"roughjs\";\nfunction generateCirclePoints4(centerX, centerY, radius, numPoints = 100, startAngle = 0, endAngle = 180) {\n const points = [];\n const startAngleRad = startAngle * Math.PI / 180;\n const endAngleRad = endAngle * Math.PI / 180;\n const angleRange = endAngleRad - startAngleRad;\n const angleStep = angleRange / (numPoints - 1);\n for (let i = 0; i < numPoints; i++) {\n const angle = startAngleRad + i * angleStep;\n const x = centerX + radius * Math.cos(angle);\n const y = centerY + radius * Math.sin(angle);\n points.push({ x: -x, y: -y });\n }\n return points;\n}\n__name(generateCirclePoints4, \"generateCirclePoints\");\nasync function curlyBraces(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = bbox.height + (node.padding ?? 0);\n const radius = Math.max(5, h * 0.1);\n const { cssStyles } = node;\n const leftCurlyBracePoints = [\n ...generateCirclePoints4(w / 2, -h / 2, radius, 30, -90, 0),\n { x: -w / 2 - radius, y: radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90)\n ];\n const rightCurlyBracePoints = [\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rectPoints = [\n { x: w / 2, y: -h / 2 - radius },\n { x: -w / 2, y: -h / 2 - radius },\n ...generateCirclePoints4(w / 2, -h / 2, radius, 20, -90, 0),\n { x: -w / 2 - radius, y: -radius },\n ...generateCirclePoints4(w / 2 + radius * 2, -radius, radius, 20, -180, -270),\n ...generateCirclePoints4(w / 2 + radius * 2, radius, radius, 20, -90, -180),\n { x: -w / 2 - radius, y: h / 2 },\n ...generateCirclePoints4(w / 2, h / 2, radius, 20, 0, 90),\n { x: -w / 2, y: h / 2 + radius },\n { x: w / 2 - radius - radius / 2, y: h / 2 + radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, -h / 2, radius, 20, -90, -180),\n { x: w / 2 - radius / 2, y: radius },\n ...generateCirclePoints4(-w / 2 - radius / 2, -radius, radius, 20, 0, 90),\n ...generateCirclePoints4(-w / 2 - radius / 2, radius, radius, 20, -90, 0),\n { x: w / 2 - radius / 2, y: -radius },\n ...generateCirclePoints4(-w / 2 + radius + radius / 2, h / 2, radius, 30, -180, -270)\n ];\n const rc = rough10.svg(shapeSvg);\n const options = userNodeOverrides(node, { fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const leftCurlyBracePath = createPathFromPoints(leftCurlyBracePoints);\n const newLeftCurlyBracePath = leftCurlyBracePath.replace(\"Z\", \"\");\n const leftCurlyBraceNode = rc.path(newLeftCurlyBracePath, options);\n const rightCurlyBracePath = createPathFromPoints(rightCurlyBracePoints);\n const newRightCurlyBracePath = rightCurlyBracePath.replace(\"Z\", \"\");\n const rightCurlyBraceNode = rc.path(newRightCurlyBracePath, options);\n const rectPath = createPathFromPoints(rectPoints);\n const rectShape = rc.path(rectPath, { ...options });\n const curlyBracesShape = shapeSvg.insert(\"g\", \":first-child\");\n curlyBracesShape.insert(() => rectShape, \":first-child\").attr(\"stroke-opacity\", 0);\n curlyBracesShape.insert(() => leftCurlyBraceNode, \":first-child\");\n curlyBracesShape.insert(() => rightCurlyBraceNode, \":first-child\");\n curlyBracesShape.attr(\"class\", \"text\");\n if (cssStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n curlyBracesShape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n curlyBracesShape.attr(\"transform\", `translate(${radius - radius / 4}, 0)`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, curlyBracesShape);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curlyBraces, \"curlyBraces\");\n\n// src/rendering-util/rendering-elements/shapes/curvedTrapezoid.ts\nimport rough11 from \"roughjs\";\nasync function curvedTrapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 80, minHeight = 20;\n const w = Math.max(minWidth, (bbox.width + (node.padding ?? 0) * 2) * 1.25, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough11.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const totalWidth = w, totalHeight = h;\n const rw = totalWidth - radius;\n const tw = totalHeight / 4;\n const points = [\n { x: rw, y: 0 },\n { x: tw, y: 0 },\n { x: 0, y: totalHeight / 2 },\n { x: tw, y: totalHeight },\n { x: rw, y: totalHeight },\n ...generateCirclePoints(-rw, -totalHeight / 2, radius, 50, 270, 90)\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(curvedTrapezoid, \"curvedTrapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/cylinder.ts\nimport rough12 from \"roughjs\";\nvar createCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y + ry}`,\n `M${x + width},${y + ry}`,\n `a${rx},${ry} 0,0,0 ${-width},0`,\n `l0,${height}`,\n `a${rx},${ry} 0,0,0 ${width},0`,\n `l0,${-height}`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x - width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 ${width},0`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function cylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + node.padding, node.width ?? 0);\n const rx = w / 2;\n const ry = rx / (2.5 + w / 50);\n const h = Math.max(bbox.height + ry + node.padding, node.height ?? 0);\n let cylinder2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough12.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD(0, ry, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n }\n cylinder2.attr(\"label-offset-y\", ry);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${-(h / 2 + ry)})`);\n updateNodeBounds(node, cylinder2);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + (node.padding ?? 0) / 1.5 - (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const x = pos.x - (node.x ?? 0);\n if (rx != 0 && (Math.abs(x) < (node.width ?? 0) / 2 || Math.abs(x) == (node.width ?? 0) / 2 && Math.abs(pos.y - (node.y ?? 0)) > (node.height ?? 0) / 2 - ry)) {\n let y = ry * ry * (1 - x * x / (rx * rx));\n if (y > 0) {\n y = Math.sqrt(y);\n }\n y = ry - y;\n if (point.y - (node.y ?? 0) > 0) {\n y = -y;\n }\n pos.y += y;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(cylinder, \"cylinder\");\n\n// src/rendering-util/rendering-elements/shapes/dividedRect.ts\nimport rough13 from \"roughjs\";\nasync function dividedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const rectOffset = h * 0.2;\n const x = -w / 2;\n const y = -h / 2 - rectOffset / 2;\n const { cssStyles } = node;\n const rc = rough13.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pts = [\n { x, y: y + rectOffset },\n { x: -x, y: y + rectOffset },\n { x: -x, y: -y },\n { x, y: -y },\n { x, y },\n { x: -x, y },\n { x: -x, y: y + rectOffset }\n ];\n const poly = rc.polygon(\n pts.map((p) => [p.x, p.y]),\n options\n );\n const polygon = shapeSvg.insert(() => poly, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${x + (node.padding ?? 0) / 2 - (bbox.x - (bbox.left ?? 0))}, ${y + rectOffset + (node.padding ?? 0) / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(dividedRectangle, \"dividedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/doubleCircle.ts\nimport rough14 from \"roughjs\";\nasync function doublecircle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, halfPadding } = await labelHelper(parent, node, getNodeClasses(node));\n const gap = 5;\n const outerRadius = bbox.width / 2 + halfPadding + gap;\n const innerRadius = bbox.width / 2 + halfPadding;\n let circleGroup;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough14.svg(shapeSvg);\n const outerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 2.5 });\n const innerOptions = userNodeOverrides(node, { roughness: 0.2, strokeWidth: 1.5 });\n const outerRoughNode = rc.circle(0, 0, outerRadius * 2, outerOptions);\n const innerRoughNode = rc.circle(0, 0, innerRadius * 2, innerOptions);\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n circleGroup.attr(\"class\", handleUndefinedAttr(node.cssClasses)).attr(\"style\", handleUndefinedAttr(cssStyles));\n circleGroup.node()?.appendChild(outerRoughNode);\n circleGroup.node()?.appendChild(innerRoughNode);\n } else {\n circleGroup = shapeSvg.insert(\"g\", \":first-child\");\n const outerCircle = circleGroup.insert(\"circle\", \":first-child\");\n const innerCircle = circleGroup.insert(\"circle\");\n circleGroup.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles);\n outerCircle.attr(\"class\", \"outer-circle\").attr(\"style\", nodeStyles).attr(\"r\", outerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n innerCircle.attr(\"class\", \"inner-circle\").attr(\"style\", nodeStyles).attr(\"r\", innerRadius).attr(\"cx\", 0).attr(\"cy\", 0);\n }\n updateNodeBounds(node, circleGroup);\n node.intersect = function(point) {\n log.info(\"DoubleCircle intersect\", node, outerRadius, point);\n return intersect_default.circle(node, outerRadius, point);\n };\n return shapeSvg;\n}\n__name(doublecircle, \"doublecircle\");\n\n// src/rendering-util/rendering-elements/shapes/filledCircle.ts\nimport rough15 from \"roughjs\";\nfunction filledCircle(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const radius = 7;\n const { cssStyles } = node;\n const rc = rough15.svg(shapeSvg);\n const { nodeBorder } = themeVariables;\n const options = userNodeOverrides(node, { fillStyle: \"solid\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n }\n const circleNode = rc.circle(0, 0, radius * 2, options);\n const filledCircle2 = shapeSvg.insert(() => circleNode, \":first-child\");\n filledCircle2.selectAll(\"path\").attr(\"style\", `fill: ${nodeBorder} !important;`);\n if (cssStyles && cssStyles.length > 0 && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n filledCircle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, filledCircle2);\n node.intersect = function(point) {\n log.info(\"filledCircle intersect\", node, { radius, point });\n const pos = intersect_default.circle(node, radius, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(filledCircle, \"filledCircle\");\n\n// src/rendering-util/rendering-elements/shapes/flippedTriangle.ts\nimport rough16 from \"roughjs\";\nasync function flippedTriangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: -h },\n { x: tw, y: -h },\n { x: tw / 2, y: 0 }\n ];\n const { cssStyles } = node;\n const rc = rough16.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const flippedTriangle2 = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n flippedTriangle2.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, flippedTriangle2);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${-h / 2 + (node.padding ?? 0) / 2 + (bbox.y - (bbox.top ?? 0))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(flippedTriangle, \"flippedTriangle\");\n\n// src/rendering-util/rendering-elements/shapes/forkJoin.ts\nimport rough17 from \"roughjs\";\nfunction forkJoin(parent, node, { dir, config: { state: state2, themeVariables } }) {\n const { nodeStyles } = styles2String(node);\n node.label = \"\";\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId ?? node.id);\n const { cssStyles } = node;\n let width = Math.max(70, node?.width ?? 0);\n let height = Math.max(10, node?.height ?? 0);\n if (dir === \"LR\") {\n width = Math.max(10, node?.width ?? 0);\n height = Math.max(70, node?.height ?? 0);\n }\n const x = -1 * width / 2;\n const y = -1 * height / 2;\n const rc = rough17.svg(shapeSvg);\n const options = userNodeOverrides(node, {\n stroke: themeVariables.lineColor,\n fill: themeVariables.lineColor\n });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.rectangle(x, y, width, height, options);\n const shape = shapeSvg.insert(() => roughNode, \":first-child\");\n if (cssStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n shape.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, shape);\n const padding = state2?.padding ?? 0;\n if (node.width && node.height) {\n node.width += padding / 2 || 0;\n node.height += padding / 2 || 0;\n }\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(forkJoin, \"forkJoin\");\n\n// src/rendering-util/rendering-elements/shapes/halfRoundedRectangle.ts\nimport rough18 from \"roughjs\";\nasync function halfRoundedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const minWidth = 80, minHeight = 50;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const radius = h / 2;\n const { cssStyles } = node;\n const rc = rough18.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: -h / 2 },\n { x: w / 2 - radius, y: -h / 2 },\n ...generateCirclePoints(-w / 2 + radius, 0, radius, 50, 90, 270),\n { x: w / 2 - radius, y: h / 2 },\n { x: -w / 2, y: h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { radius, point });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(halfRoundedRectangle, \"halfRoundedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/hexagon.ts\nimport rough19 from \"roughjs\";\nvar createHexagonPathD = /* @__PURE__ */ __name((x, y, width, height, m) => {\n return [\n `M${x + m},${y}`,\n `L${x + width - m},${y}`,\n `L${x + width},${y - height / 2}`,\n `L${x + width - m},${y - height}`,\n `L${x + m},${y - height}`,\n `L${x},${y - height / 2}`,\n \"Z\"\n ].join(\" \");\n}, \"createHexagonPathD\");\nasync function hexagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const f = 4;\n const h = bbox.height + node.padding;\n const m = h / f;\n const w = bbox.width + 2 * m + node.padding;\n const points = [\n { x: m, y: 0 },\n { x: w - m, y: 0 },\n { x: w, y: -h / 2 },\n { x: w - m, y: -h },\n { x: m, y: -h },\n { x: 0, y: -h / 2 }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough19.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createHexagonPathD(0, 0, w, h, m);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(hexagon, \"hexagon\");\n\n// src/rendering-util/rendering-elements/shapes/hourglass.ts\nimport rough20 from \"roughjs\";\nasync function hourglass(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.label = \"\";\n node.labelStyle = labelStyles;\n const { shapeSvg } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(30, node?.width ?? 0);\n const h = Math.max(30, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough20.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: 0, y: h },\n { x: w, y: h }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(${-w / 2}, ${-h / 2})`);\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n log.info(\"Pill intersect\", node, { points });\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(hourglass, \"hourglass\");\n\n// src/rendering-util/rendering-elements/shapes/icon.ts\nimport rough21 from \"roughjs\";\nasync function icon(parent, node, { config: { themeVariables, flowchart } }) {\n const { labelStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const assetHeight = node.assetHeight ?? 48;\n const assetWidth = node.assetWidth ?? 48;\n const iconSize = Math.max(assetHeight, assetWidth);\n const defaultWidth = flowchart?.wrappingWidth;\n node.width = Math.max(iconSize, defaultWidth ?? 0);\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, \"icon-shape default\");\n const topLabel = node.pos === \"t\";\n const height = iconSize;\n const width = iconSize;\n const { nodeBorder } = themeVariables;\n const { stylesMap } = compileStyles(node);\n const x = -width / 2;\n const y = -height / 2;\n const labelPadding = node.label ? 8 : 0;\n const rc = rough21.svg(shapeSvg);\n const options = userNodeOverrides(node, { stroke: \"none\", fill: \"none\" });\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const iconNode = rc.rectangle(x, y, width, height, options);\n const outerWidth = Math.max(width, bbox.width);\n const outerHeight = height + bbox.height + labelPadding;\n const outerNode = rc.rectangle(-outerWidth / 2, -outerHeight / 2, outerWidth, outerHeight, {\n ...options,\n fill: \"transparent\",\n stroke: \"none\"\n });\n const iconShape = shapeSvg.insert(() => iconNode, \":first-child\");\n const outerShape = shapeSvg.insert(() => outerNode);\n if (node.icon) {\n const iconElem = shapeSvg.append(\"g\");\n iconElem.html(\n `
\") : textRows,\n node.labelStyle,\n true,\n true\n )\n );\n const div = descr.children[0];\n const dv = select4(descr);\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n const halfPadding = (node.padding || 0) / 2;\n select4(descr).attr(\n \"transform\",\n \"translate( \" + (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + \", \" + (titleBox.height + halfPadding + 5) + \")\"\n );\n select4(text2).attr(\n \"transform\",\n \"translate( \" + (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + \", 0)\"\n );\n bbox = label.node().getBBox();\n label.attr(\n \"transform\",\n \"translate(\" + -bbox.width / 2 + \", \" + (-bbox.height / 2 - halfPadding + 3) + \")\"\n );\n const totalWidth = bbox.width + (node.padding || 0);\n const totalHeight = bbox.height + (node.padding || 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n let rect2;\n let innerLine;\n if (node.look === \"handDrawn\") {\n const rc = rough38.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.path(\n createRoundedRectPathD(x, y, totalWidth, totalHeight, node.rx || 0),\n options\n );\n const roughLine = rc.line(\n -bbox.width / 2 - halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n bbox.width / 2 + halfPadding,\n -bbox.height / 2 - halfPadding + titleBox.height + halfPadding,\n options\n );\n innerLine = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughLine;\n }, \":first-child\");\n rect2 = shapeSvg.insert(() => {\n log.debug(\"Rough node insert CXC\", roughNode);\n return roughNode;\n }, \":first-child\");\n } else {\n rect2 = g.insert(\"rect\", \":first-child\");\n innerLine = g.insert(\"line\");\n rect2.attr(\"class\", \"outer title-state\").attr(\"style\", nodeStyles).attr(\"x\", -bbox.width / 2 - halfPadding).attr(\"y\", -bbox.height / 2 - halfPadding).attr(\"width\", bbox.width + (node.padding || 0)).attr(\"height\", bbox.height + (node.padding || 0));\n innerLine.attr(\"class\", \"divider\").attr(\"x1\", -bbox.width / 2 - halfPadding).attr(\"x2\", bbox.width / 2 + halfPadding).attr(\"y1\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr(\"y2\", -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(rectWithTitle, \"rectWithTitle\");\n\n// src/rendering-util/rendering-elements/shapes/roundedRect.ts\nasync function roundedRect(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"\",\n labelPaddingX: (node?.padding || 0) * 1,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(roundedRect, \"roundedRect\");\n\n// src/rendering-util/rendering-elements/shapes/shadedProcess.ts\nimport rough39 from \"roughjs\";\nasync function shadedProcess(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = node?.padding ?? 0;\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const { cssStyles } = node;\n const rc = rough39.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x: x + w + 8, y },\n { x: x + w + 8, y: y + h },\n { x: x - 8, y: y + h },\n { x: x - 8, y },\n { x, y },\n { x, y: y + h }\n ];\n const roughNode = rc.polygon(\n points.map((p) => [p.x, p.y]),\n options\n );\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n if (nodeStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n if (cssStyles && node.look !== \"handDrawn\") {\n rect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-w / 2 + 4 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(shadedProcess, \"shadedProcess\");\n\n// src/rendering-util/rendering-elements/shapes/slopedRect.ts\nimport rough40 from \"roughjs\";\nasync function slopedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough40.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x, y },\n { x, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - h / 2 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n polygon.attr(\"transform\", `translate(0, ${h / 4})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))}, ${-h / 4 + (node.padding ?? 0) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(slopedRect, \"slopedRect\");\n\n// src/rendering-util/rendering-elements/shapes/squareRect.ts\nasync function squareRect2(parent, node) {\n const options = {\n rx: 0,\n ry: 0,\n classes: \"\",\n labelPaddingX: (node?.padding || 0) * 2,\n labelPaddingY: (node?.padding || 0) * 1\n };\n return drawRect(parent, node, options);\n}\n__name(squareRect2, \"squareRect\");\n\n// src/rendering-util/rendering-elements/shapes/stadium.ts\nimport rough41 from \"roughjs\";\nasync function stadium(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const h = bbox.height + node.padding;\n const w = bbox.width + h / 4 + node.padding;\n let rect2;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough41.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createRoundedRectPathD(-w / 2, -h / 2, w, h, h / 2);\n const roughNode = rc.path(pathData, options);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", nodeStyles).attr(\"rx\", h / 2).attr(\"ry\", h / 2).attr(\"x\", -w / 2).attr(\"y\", -h / 2).attr(\"width\", w).attr(\"height\", h);\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(stadium, \"stadium\");\n\n// src/rendering-util/rendering-elements/shapes/state.ts\nasync function state(parent, node) {\n const options = {\n rx: 5,\n ry: 5,\n classes: \"flowchart-node\"\n };\n return drawRect(parent, node, options);\n}\n__name(state, \"state\");\n\n// src/rendering-util/rendering-elements/shapes/stateEnd.ts\nimport rough42 from \"roughjs\";\nfunction stateEnd(parent, node, { config: { themeVariables } }) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { cssStyles } = node;\n const { lineColor, stateBorder, nodeBorder } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n const rc = rough42.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const roughNode = rc.circle(0, 0, 14, {\n ...options,\n stroke: lineColor,\n strokeWidth: 2\n });\n const innerFill = stateBorder ?? nodeBorder;\n const roughInnerNode = rc.circle(0, 0, 5, {\n ...options,\n fill: innerFill,\n stroke: innerFill,\n strokeWidth: 2,\n fillStyle: \"solid\"\n });\n const circle2 = shapeSvg.insert(() => roughNode, \":first-child\");\n circle2.insert(() => roughInnerNode);\n if (cssStyles) {\n circle2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n circle2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateEnd, \"stateEnd\");\n\n// src/rendering-util/rendering-elements/shapes/stateStart.ts\nimport rough43 from \"roughjs\";\nfunction stateStart(parent, node, { config: { themeVariables } }) {\n const { lineColor } = themeVariables;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", \"node default\").attr(\"id\", node.domId || node.id);\n let circle2;\n if (node.look === \"handDrawn\") {\n const rc = rough43.svg(shapeSvg);\n const roughNode = rc.circle(0, 0, 14, solidStateFill(lineColor));\n circle2 = shapeSvg.insert(() => roughNode);\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n } else {\n circle2 = shapeSvg.insert(\"circle\", \":first-child\");\n circle2.attr(\"class\", \"state-start\").attr(\"r\", 7).attr(\"width\", 14).attr(\"height\", 14);\n }\n updateNodeBounds(node, circle2);\n node.intersect = function(point) {\n return intersect_default.circle(node, 7, point);\n };\n return shapeSvg;\n}\n__name(stateStart, \"stateStart\");\n\n// src/rendering-util/rendering-elements/shapes/subroutine.ts\nimport rough44 from \"roughjs\";\nasync function subroutine(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const halfPadding = (node?.padding || 0) / 2;\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const x = -bbox.width / 2 - halfPadding;\n const y = -bbox.height / 2 - halfPadding;\n const points = [\n { x: 0, y: 0 },\n { x: w, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h },\n { x: 0, y: 0 },\n { x: -8, y: 0 },\n { x: w + 8, y: 0 },\n { x: w + 8, y: -h },\n { x: -8, y: -h },\n { x: -8, y: 0 }\n ];\n if (node.look === \"handDrawn\") {\n const rc = rough44.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const roughNode = rc.rectangle(x - 8, y, w + 16, h, options);\n const l1 = rc.line(x, y, x, y + h, options);\n const l2 = rc.line(x + w, y, x + w, y + h, options);\n shapeSvg.insert(() => l1, \":first-child\");\n shapeSvg.insert(() => l2, \":first-child\");\n const rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n const { cssStyles } = node;\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles));\n updateNodeBounds(node, rect2);\n } else {\n const el = insertPolygonShape(shapeSvg, w, h, points);\n if (nodeStyles) {\n el.attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, el);\n }\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(subroutine, \"subroutine\");\n\n// src/rendering-util/rendering-elements/shapes/taggedRect.ts\nimport rough45 from \"roughjs\";\nasync function taggedRect(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const x = -w / 2;\n const y = -h / 2;\n const tagWidth = 0.2 * h;\n const tagHeight = 0.2 * h;\n const { cssStyles } = node;\n const rc = rough45.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const rectPoints = [\n { x: x - tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x - tagWidth / 2, y: y + h }\n ];\n const tagPoints = [\n { x: x + w - tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h },\n { x: x + w + tagWidth / 2, y: y + h - tagHeight }\n ];\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const rectPath = createPathFromPoints(rectPoints);\n const rectNode = rc.path(rectPath, options);\n const tagPath = createPathFromPoints(tagPoints);\n const tagNode = rc.path(tagPath, { ...options, fillStyle: \"solid\" });\n const taggedRect2 = shapeSvg.insert(() => tagNode, \":first-child\");\n taggedRect2.insert(() => rectNode, \":first-child\");\n taggedRect2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n taggedRect2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, taggedRect2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, rectPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedRect, \"taggedRect\");\n\n// src/rendering-util/rendering-elements/shapes/taggedWaveEdgedRectangle.ts\nimport rough46 from \"roughjs\";\nasync function taggedWaveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 4;\n const tagWidth = 0.2 * w;\n const tagHeight = 0.2 * h;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const rc = rough46.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - w / 2 * 0.1, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - w / 2 * 0.1,\n finalH / 2,\n w / 2 + w / 2 * 0.1,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + w / 2 * 0.1, y: -finalH / 2 },\n { x: -w / 2 - w / 2 * 0.1, y: -finalH / 2 }\n ];\n const x = -w / 2 + w / 2 * 0.1;\n const y = -finalH / 2 - tagHeight * 0.4;\n const tagPoints = [\n { x: x + w - tagWidth, y: (y + h) * 1.4 },\n { x: x + w, y: y + h - tagHeight },\n { x: x + w, y: (y + h) * 0.9 },\n ...generateFullSineWavePoints(\n x + w,\n (y + h) * 1.3,\n x + w - tagWidth,\n (y + h) * 1.5,\n -h * 0.03,\n 0.5\n )\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const taggedWaveEdgeRectPath = createPathFromPoints(tagPoints);\n const taggedWaveEdgeRectNode = rc.path(taggedWaveEdgeRectPath, {\n ...options,\n fillStyle: \"solid\"\n });\n const waveEdgeRect = shapeSvg.insert(() => taggedWaveEdgeRectNode, \":first-child\");\n waveEdgeRect.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(taggedWaveEdgedRectangle, \"taggedWaveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/text.ts\nasync function text(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const totalWidth = Math.max(bbox.width + node.padding, node?.width || 0);\n const totalHeight = Math.max(bbox.height + node.padding, node?.height || 0);\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n const rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"text\").attr(\"style\", nodeStyles).attr(\"rx\", 0).attr(\"ry\", 0).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(text, \"text\");\n\n// src/rendering-util/rendering-elements/shapes/tiltedCylinder.ts\nimport rough47 from \"roughjs\";\nvar createCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return `M${x},${y}\n a${rx},${ry} 0,0,1 ${0},${-height}\n l${width},${0}\n a${rx},${ry} 0,0,1 ${0},${height}\n M${width},${-height}\n a${rx},${ry} 0,0,0 ${0},${height}\n l${-width},${0}`;\n}, \"createCylinderPathD\");\nvar createOuterCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [\n `M${x},${y}`,\n `M${x + width},${y}`,\n `a${rx},${ry} 0,0,0 ${0},${-height}`,\n `l${-width},0`,\n `a${rx},${ry} 0,0,0 ${0},${height}`,\n `l${width},0`\n ].join(\" \");\n}, \"createOuterCylinderPathD\");\nvar createInnerCylinderPathD3 = /* @__PURE__ */ __name((x, y, width, height, rx, ry) => {\n return [`M${x + width / 2},${-height / 2}`, `a${rx},${ry} 0,0,0 0,${height}`].join(\" \");\n}, \"createInnerCylinderPathD\");\nasync function tiltedCylinder(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label, halfPadding } = await labelHelper(\n parent,\n node,\n getNodeClasses(node)\n );\n const labelPadding = node.look === \"neo\" ? halfPadding * 2 : halfPadding;\n const h = bbox.height + labelPadding;\n const ry = h / 2;\n const rx = ry / (2.5 + h / 50);\n const w = bbox.width + rx + labelPadding;\n const { cssStyles } = node;\n let cylinder2;\n if (node.look === \"handDrawn\") {\n const rc = rough47.svg(shapeSvg);\n const outerPathData = createOuterCylinderPathD3(0, 0, w, h, rx, ry);\n const innerPathData = createInnerCylinderPathD3(0, 0, w, h, rx, ry);\n const outerNode = rc.path(outerPathData, userNodeOverrides(node, {}));\n const innerLine = rc.path(innerPathData, userNodeOverrides(node, { fill: \"none\" }));\n cylinder2 = shapeSvg.insert(() => innerLine, \":first-child\");\n cylinder2 = shapeSvg.insert(() => outerNode, \":first-child\");\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.attr(\"style\", cssStyles);\n }\n } else {\n const pathData = createCylinderPathD3(0, 0, w, h, rx, ry);\n cylinder2 = shapeSvg.insert(\"path\", \":first-child\").attr(\"d\", pathData).attr(\"class\", \"basic label-container\").attr(\"style\", handleUndefinedAttr(cssStyles)).attr(\"style\", nodeStyles);\n cylinder2.attr(\"class\", \"basic label-container\");\n if (cssStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles) {\n cylinder2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n }\n cylinder2.attr(\"label-offset-x\", rx);\n cylinder2.attr(\"transform\", `translate(${-w / 2}, ${h / 2} )`);\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) - rx - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, cylinder2);\n node.intersect = function(point) {\n const pos = intersect_default.rect(node, point);\n const y = pos.y - (node.y ?? 0);\n if (ry != 0 && (Math.abs(y) < (node.height ?? 0) / 2 || Math.abs(y) == (node.height ?? 0) / 2 && Math.abs(pos.x - (node.x ?? 0)) > (node.width ?? 0) / 2 - rx)) {\n let x = rx * rx * (1 - y * y / (ry * ry));\n if (x != 0) {\n x = Math.sqrt(Math.abs(x));\n }\n x = rx - x;\n if (point.x - (node.x ?? 0) > 0) {\n x = -x;\n }\n pos.x += x;\n }\n return pos;\n };\n return shapeSvg;\n}\n__name(tiltedCylinder, \"tiltedCylinder\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoid.ts\nimport rough48 from \"roughjs\";\nasync function trapezoid(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const w = bbox.width + node.padding;\n const h = bbox.height + node.padding;\n const points = [\n { x: -3 * h / 6, y: 0 },\n { x: w + 3 * h / 6, y: 0 },\n { x: w, y: -h },\n { x: 0, y: -h }\n ];\n let polygon;\n const { cssStyles } = node;\n if (node.look === \"handDrawn\") {\n const rc = rough48.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-w / 2}, ${h / 2})`);\n if (cssStyles) {\n polygon.attr(\"style\", cssStyles);\n }\n } else {\n polygon = insertPolygonShape(shapeSvg, w, h, points);\n }\n if (nodeStyles) {\n polygon.attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(trapezoid, \"trapezoid\");\n\n// src/rendering-util/rendering-elements/shapes/trapezoidalPentagon.ts\nimport rough49 from \"roughjs\";\nasync function trapezoidalPentagon(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 60, minHeight = 20;\n const w = Math.max(minWidth, bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(minHeight, bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const { cssStyles } = node;\n const rc = rough49.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 * 0.8, y: -h / 2 },\n { x: w / 2 * 0.8, y: -h / 2 },\n { x: w / 2, y: -h / 2 * 0.6 },\n { x: w / 2, y: h / 2 },\n { x: -w / 2, y: h / 2 },\n { x: -w / 2, y: -h / 2 * 0.6 }\n ];\n const pathData = createPathFromPoints(points);\n const shapeNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => shapeNode, \":first-child\");\n polygon.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, polygon);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(trapezoidalPentagon, \"trapezoidalPentagon\");\n\n// src/rendering-util/rendering-elements/shapes/triangle.ts\nimport rough50 from \"roughjs\";\nasync function triangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const useHtmlLabels = evaluate(getConfig2().flowchart?.htmlLabels);\n const w = bbox.width + (node.padding ?? 0);\n const h = w + bbox.height;\n const tw = w + bbox.height;\n const points = [\n { x: 0, y: 0 },\n { x: tw, y: 0 },\n { x: tw / 2, y: -h }\n ];\n const { cssStyles } = node;\n const rc = rough50.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const pathData = createPathFromPoints(points);\n const roughNode = rc.path(pathData, options);\n const polygon = shapeSvg.insert(() => roughNode, \":first-child\").attr(\"transform\", `translate(${-h / 2}, ${h / 2})`);\n if (cssStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n polygon.selectChildren(\"path\").attr(\"style\", nodeStyles);\n }\n node.width = w;\n node.height = h;\n updateNodeBounds(node, polygon);\n label.attr(\n \"transform\",\n `translate(${-bbox.width / 2 - (bbox.x - (bbox.left ?? 0))}, ${h / 2 - (bbox.height + (node.padding ?? 0) / (useHtmlLabels ? 2 : 1) - (bbox.y - (bbox.top ?? 0)))})`\n );\n node.intersect = function(point) {\n log.info(\"Triangle intersect\", node, points, point);\n return intersect_default.polygon(node, points, point);\n };\n return shapeSvg;\n}\n__name(triangle, \"triangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveEdgedRectangle.ts\nimport rough51 from \"roughjs\";\nasync function waveEdgedRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const waveAmplitude = h / 8;\n const finalH = h + waveAmplitude;\n const { cssStyles } = node;\n const minWidth = 70;\n const widthDif = minWidth - w;\n const extraW = widthDif > 0 ? widthDif / 2 : 0;\n const rc = rough51.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2 - extraW, y: finalH / 2 },\n ...generateFullSineWavePoints(\n -w / 2 - extraW,\n finalH / 2,\n w / 2 + extraW,\n finalH / 2,\n waveAmplitude,\n 0.8\n ),\n { x: w / 2 + extraW, y: -finalH / 2 },\n { x: -w / 2 - extraW, y: -finalH / 2 }\n ];\n const waveEdgeRectPath = createPathFromPoints(points);\n const waveEdgeRectNode = rc.path(waveEdgeRectPath, options);\n const waveEdgeRect = shapeSvg.insert(() => waveEdgeRectNode, \":first-child\");\n waveEdgeRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveEdgeRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n waveEdgeRect.attr(\"transform\", `translate(0,${-waveAmplitude / 2})`);\n label.attr(\n \"transform\",\n `translate(${-w / 2 + (node.padding ?? 0) - (bbox.x - (bbox.left ?? 0))},${-h / 2 + (node.padding ?? 0) - waveAmplitude - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, waveEdgeRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveEdgedRectangle, \"waveEdgedRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/waveRectangle.ts\nimport rough52 from \"roughjs\";\nasync function waveRectangle(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox } = await labelHelper(parent, node, getNodeClasses(node));\n const minWidth = 100;\n const minHeight = 50;\n const baseWidth = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const baseHeight = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const aspectRatio = baseWidth / baseHeight;\n let w = baseWidth;\n let h = baseHeight;\n if (w > h * aspectRatio) {\n h = w / aspectRatio;\n } else {\n w = h * aspectRatio;\n }\n w = Math.max(w, minWidth);\n h = Math.max(h, minHeight);\n const waveAmplitude = Math.min(h * 0.2, h / 4);\n const finalH = h + waveAmplitude * 2;\n const { cssStyles } = node;\n const rc = rough52.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const points = [\n { x: -w / 2, y: finalH / 2 },\n ...generateFullSineWavePoints(-w / 2, finalH / 2, w / 2, finalH / 2, waveAmplitude, 1),\n { x: w / 2, y: -finalH / 2 },\n ...generateFullSineWavePoints(w / 2, -finalH / 2, -w / 2, -finalH / 2, waveAmplitude, -1)\n ];\n const waveRectPath = createPathFromPoints(points);\n const waveRectNode = rc.path(waveRectPath, options);\n const waveRect = shapeSvg.insert(() => waveRectNode, \":first-child\");\n waveRect.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n waveRect.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n updateNodeBounds(node, waveRect);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, points, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(waveRectangle, \"waveRectangle\");\n\n// src/rendering-util/rendering-elements/shapes/windowPane.ts\nimport rough53 from \"roughjs\";\nasync function windowPane(parent, node) {\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n const { shapeSvg, bbox, label } = await labelHelper(parent, node, getNodeClasses(node));\n const w = Math.max(bbox.width + (node.padding ?? 0) * 2, node?.width ?? 0);\n const h = Math.max(bbox.height + (node.padding ?? 0) * 2, node?.height ?? 0);\n const rectOffset = 5;\n const x = -w / 2;\n const y = -h / 2;\n const { cssStyles } = node;\n const rc = rough53.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n const outerPathPoints = [\n { x: x - rectOffset, y: y - rectOffset },\n { x: x - rectOffset, y: y + h },\n { x: x + w, y: y + h },\n { x: x + w, y: y - rectOffset }\n ];\n const path = `M${x - rectOffset},${y - rectOffset} L${x + w},${y - rectOffset} L${x + w},${y + h} L${x - rectOffset},${y + h} L${x - rectOffset},${y - rectOffset}\n M${x - rectOffset},${y} L${x + w},${y}\n M${x},${y - rectOffset} L${x},${y + h}`;\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const no = rc.path(path, options);\n const windowPane2 = shapeSvg.insert(() => no, \":first-child\");\n windowPane2.attr(\"transform\", `translate(${rectOffset / 2}, ${rectOffset / 2})`);\n windowPane2.attr(\"class\", \"basic label-container\");\n if (cssStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", cssStyles);\n }\n if (nodeStyles && node.look !== \"handDrawn\") {\n windowPane2.selectAll(\"path\").attr(\"style\", nodeStyles);\n }\n label.attr(\n \"transform\",\n `translate(${-(bbox.width / 2) + rectOffset / 2 - (bbox.x - (bbox.left ?? 0))}, ${-(bbox.height / 2) + rectOffset / 2 - (bbox.y - (bbox.top ?? 0))})`\n );\n updateNodeBounds(node, windowPane2);\n node.intersect = function(point) {\n const pos = intersect_default.polygon(node, outerPathPoints, point);\n return pos;\n };\n return shapeSvg;\n}\n__name(windowPane, \"windowPane\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nimport { select as select6 } from \"d3\";\nimport rough54 from \"roughjs\";\n\n// src/diagrams/class/shapeUtil.ts\nimport { select as select5 } from \"d3\";\nasync function textHelper(parent, node, config, useHtmlLabels, GAP = config.class.padding ?? 12) {\n const TEXT_PADDING = !useHtmlLabels ? 3 : 0;\n const shapeSvg = parent.insert(\"g\").attr(\"class\", getNodeClasses(node)).attr(\"id\", node.domId || node.id);\n let annotationGroup = null;\n let labelGroup = null;\n let membersGroup = null;\n let methodsGroup = null;\n let annotationGroupHeight = 0;\n let labelGroupHeight = 0;\n let membersGroupHeight = 0;\n annotationGroup = shapeSvg.insert(\"g\").attr(\"class\", \"annotation-group text\");\n if (node.annotations.length > 0) {\n const annotation = node.annotations[0];\n await addText(annotationGroup, { text: `\\xAB${annotation}\\xBB` }, 0);\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroupHeight = annotationGroupBBox.height;\n }\n labelGroup = shapeSvg.insert(\"g\").attr(\"class\", \"label-group text\");\n await addText(labelGroup, node, 0, [\"font-weight: bolder\"]);\n const labelGroupBBox = labelGroup.node().getBBox();\n labelGroupHeight = labelGroupBBox.height;\n membersGroup = shapeSvg.insert(\"g\").attr(\"class\", \"members-group text\");\n let yOffset = 0;\n for (const member of node.members) {\n const height = await addText(membersGroup, member, yOffset, [member.parseClassifier()]);\n yOffset += height + TEXT_PADDING;\n }\n membersGroupHeight = membersGroup.node().getBBox().height;\n if (membersGroupHeight <= 0) {\n membersGroupHeight = GAP / 2;\n }\n methodsGroup = shapeSvg.insert(\"g\").attr(\"class\", \"methods-group text\");\n let methodsYOffset = 0;\n for (const method of node.methods) {\n const height = await addText(methodsGroup, method, methodsYOffset, [method.parseClassifier()]);\n methodsYOffset += height + TEXT_PADDING;\n }\n let bbox = shapeSvg.node().getBBox();\n if (annotationGroup !== null) {\n const annotationGroupBBox = annotationGroup.node().getBBox();\n annotationGroup.attr(\"transform\", `translate(${-annotationGroupBBox.width / 2})`);\n }\n labelGroup.attr(\"transform\", `translate(${-labelGroupBBox.width / 2}, ${annotationGroupHeight})`);\n bbox = shapeSvg.node().getBBox();\n membersGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + GAP * 2})`\n );\n bbox = shapeSvg.node().getBBox();\n methodsGroup.attr(\n \"transform\",\n `translate(${0}, ${annotationGroupHeight + labelGroupHeight + (membersGroupHeight ? membersGroupHeight + GAP * 4 : GAP * 2)})`\n );\n bbox = shapeSvg.node().getBBox();\n return { shapeSvg, bbox };\n}\n__name(textHelper, \"textHelper\");\nasync function addText(parentGroup, node, yOffset, styles = []) {\n const textEl = parentGroup.insert(\"g\").attr(\"class\", \"label\").attr(\"style\", styles.join(\"; \"));\n const config = getConfig();\n let useHtmlLabels = \"useHtmlLabels\" in node ? node.useHtmlLabels : evaluate(config.htmlLabels) ?? true;\n let textContent = \"\";\n if (\"text\" in node) {\n textContent = node.text;\n } else {\n textContent = node.label;\n }\n if (!useHtmlLabels && textContent.startsWith(\"\\\\\")) {\n textContent = textContent.substring(1);\n }\n if (hasKatex(textContent)) {\n useHtmlLabels = true;\n }\n const text2 = await createText(\n textEl,\n sanitizeText2(decodeEntities(textContent)),\n {\n width: calculateTextWidth(textContent, config) + 50,\n // Add room for error when splitting text into multiple lines\n classes: \"markdown-node-label\",\n useHtmlLabels\n },\n config\n );\n let bbox;\n let numberOfLines = 1;\n if (!useHtmlLabels) {\n if (styles.includes(\"font-weight: bolder\")) {\n select5(text2).selectAll(\"tspan\").attr(\"font-weight\", \"\");\n }\n numberOfLines = text2.children.length;\n const textChild = text2.children[0];\n if (text2.textContent === \"\" || text2.textContent.includes(\">\")) {\n textChild.textContent = textContent[0] + textContent.substring(1).replaceAll(\">\", \">\").replaceAll(\"<\", \"<\").trim();\n const preserveSpace = textContent[1] === \" \";\n if (preserveSpace) {\n textChild.textContent = textChild.textContent[0] + \" \" + textChild.textContent.substring(1);\n }\n }\n if (textChild.textContent === \"undefined\") {\n textChild.textContent = \"\";\n }\n bbox = text2.getBBox();\n } else {\n const div = text2.children[0];\n const dv = select5(text2);\n numberOfLines = div.innerHTML.split(\"
\").length;\n if (div.innerHTML.includes(\"\")) {\n numberOfLines += div.innerHTML.split(\"]*>/g, \"\").trim() === \"\";\n await Promise.all(\n [...images].map(\n (img) => new Promise((res) => {\n function setupImage() {\n img.style.display = \"flex\";\n img.style.flexDirection = \"column\";\n if (noImgText) {\n const bodyFontSize = config.fontSize?.toString() ?? window.getComputedStyle(document.body).fontSize;\n const enlargingFactor = 5;\n const width = parseInt(bodyFontSize, 10) * enlargingFactor + \"px\";\n img.style.minWidth = width;\n img.style.maxWidth = width;\n } else {\n img.style.width = \"100%\";\n }\n res(img);\n }\n __name(setupImage, \"setupImage\");\n setTimeout(() => {\n if (img.complete) {\n setupImage();\n }\n });\n img.addEventListener(\"error\", setupImage);\n img.addEventListener(\"load\", setupImage);\n })\n )\n );\n }\n bbox = div.getBoundingClientRect();\n dv.attr(\"width\", bbox.width);\n dv.attr(\"height\", bbox.height);\n }\n textEl.attr(\"transform\", \"translate(0,\" + (-bbox.height / (2 * numberOfLines) + yOffset) + \")\");\n return bbox.height;\n}\n__name(addText, \"addText\");\n\n// src/rendering-util/rendering-elements/shapes/classBox.ts\nasync function classBox(parent, node) {\n const config = getConfig2();\n const PADDING = config.class.padding ?? 12;\n const GAP = PADDING;\n const useHtmlLabels = node.useHtmlLabels ?? evaluate(config.htmlLabels) ?? true;\n const classNode = node;\n classNode.annotations = classNode.annotations ?? [];\n classNode.members = classNode.members ?? [];\n classNode.methods = classNode.methods ?? [];\n const { shapeSvg, bbox } = await textHelper(parent, node, config, useHtmlLabels, GAP);\n const { labelStyles, nodeStyles } = styles2String(node);\n node.labelStyle = labelStyles;\n node.cssStyles = classNode.styles || \"\";\n const styles = classNode.styles?.join(\";\") || nodeStyles || \"\";\n if (!node.cssStyles) {\n node.cssStyles = styles.replaceAll(\"!important\", \"\").split(\";\");\n }\n const renderExtraBox = classNode.members.length === 0 && classNode.methods.length === 0 && !config.class?.hideEmptyMembersBox;\n const rc = rough54.svg(shapeSvg);\n const options = userNodeOverrides(node, {});\n if (node.look !== \"handDrawn\") {\n options.roughness = 0;\n options.fillStyle = \"solid\";\n }\n const w = bbox.width;\n let h = bbox.height;\n if (classNode.members.length === 0 && classNode.methods.length === 0) {\n h += GAP;\n } else if (classNode.members.length > 0 && classNode.methods.length === 0) {\n h += GAP * 2;\n }\n const x = -w / 2;\n const y = -h / 2;\n const roughRect = rc.rectangle(\n x - PADDING,\n y - PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0),\n w + 2 * PADDING,\n h + 2 * PADDING + (renderExtraBox ? PADDING * 2 : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING : 0),\n options\n );\n const rect2 = shapeSvg.insert(() => roughRect, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\");\n const rectBBox = rect2.node().getBBox();\n shapeSvg.selectAll(\".text\").each((_, i, nodes) => {\n const text2 = select6(nodes[i]);\n const transform = text2.attr(\"transform\");\n let translateY = 0;\n if (transform) {\n const regex = RegExp(/translate\\(([^,]+),([^)]+)\\)/);\n const translate = regex.exec(transform);\n if (translate) {\n translateY = parseFloat(translate[2]);\n }\n }\n let newTranslateY = translateY + y + PADDING - (renderExtraBox ? PADDING : classNode.members.length === 0 && classNode.methods.length === 0 ? -PADDING / 2 : 0);\n if (!useHtmlLabels) {\n newTranslateY -= 4;\n }\n let newTranslateX = x;\n if (text2.attr(\"class\").includes(\"label-group\") || text2.attr(\"class\").includes(\"annotation-group\")) {\n newTranslateX = -text2.node()?.getBBox().width / 2 || 0;\n shapeSvg.selectAll(\"text\").each(function(_2, i2, nodes2) {\n if (window.getComputedStyle(nodes2[i2]).textAnchor === \"middle\") {\n newTranslateX = 0;\n }\n });\n }\n text2.attr(\"transform\", `translate(${newTranslateX}, ${newTranslateY})`);\n });\n const annotationGroupHeight = shapeSvg.select(\".annotation-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const labelGroupHeight = shapeSvg.select(\".label-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n const membersGroupHeight = shapeSvg.select(\".members-group\").node().getBBox().height - (renderExtraBox ? PADDING / 2 : 0) || 0;\n if (classNode.members.length > 0 || classNode.methods.length > 0 || renderExtraBox) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + y + PADDING,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (renderExtraBox || classNode.members.length > 0 || classNode.methods.length > 0) {\n const roughLine = rc.line(\n rectBBox.x,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + GAP * 2 + PADDING,\n rectBBox.x + rectBBox.width,\n annotationGroupHeight + labelGroupHeight + membersGroupHeight + y + PADDING + GAP * 2,\n options\n );\n const line = shapeSvg.insert(() => roughLine);\n line.attr(\"class\", \"divider\").attr(\"style\", styles);\n }\n if (classNode.look !== \"handDrawn\") {\n shapeSvg.selectAll(\"path\").attr(\"style\", styles);\n }\n rect2.select(\":nth-child(2)\").attr(\"style\", styles);\n shapeSvg.selectAll(\".divider\").select(\"path\").attr(\"style\", styles);\n if (node.labelStyle) {\n shapeSvg.selectAll(\"span\").attr(\"style\", node.labelStyle);\n } else {\n shapeSvg.selectAll(\"span\").attr(\"style\", styles);\n }\n if (!useHtmlLabels) {\n const colorRegex = RegExp(/color\\s*:\\s*([^;]*)/);\n const match = colorRegex.exec(styles);\n if (match) {\n const colorStyle = match[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n } else if (labelStyles) {\n const match2 = colorRegex.exec(labelStyles);\n if (match2) {\n const colorStyle = match2[0].replace(\"color\", \"fill\");\n shapeSvg.selectAll(\"tspan\").attr(\"style\", colorStyle);\n }\n }\n }\n updateNodeBounds(node, rect2);\n node.intersect = function(point) {\n return intersect_default.rect(node, point);\n };\n return shapeSvg;\n}\n__name(classBox, \"classBox\");\n\n// src/rendering-util/rendering-elements/shapes/kanbanItem.ts\nimport rough55 from \"roughjs\";\nvar colorFromPriority = /* @__PURE__ */ __name((priority) => {\n switch (priority) {\n case \"Very High\":\n return \"red\";\n case \"High\":\n return \"orange\";\n case \"Medium\":\n return null;\n case \"Low\":\n return \"blue\";\n case \"Very Low\":\n return \"lightblue\";\n }\n}, \"colorFromPriority\");\nasync function kanbanItem(parent, kanbanNode, { config }) {\n const { labelStyles, nodeStyles } = styles2String(kanbanNode);\n kanbanNode.labelStyle = labelStyles || \"\";\n const labelPaddingX = 10;\n const orgWidth = kanbanNode.width;\n kanbanNode.width = (kanbanNode.width ?? 200) - 10;\n const {\n shapeSvg,\n bbox,\n label: labelElTitle\n } = await labelHelper(parent, kanbanNode, getNodeClasses(kanbanNode));\n const padding = kanbanNode.padding || 10;\n let ticketUrl = \"\";\n let link;\n if (\"ticket\" in kanbanNode && kanbanNode.ticket && config?.kanban?.ticketBaseUrl) {\n ticketUrl = config?.kanban?.ticketBaseUrl.replace(\"#TICKET#\", kanbanNode.ticket);\n link = shapeSvg.insert(\"svg:a\", \":first-child\").attr(\"class\", \"kanban-ticket-link\").attr(\"xlink:href\", ticketUrl).attr(\"target\", \"_blank\");\n }\n const options = {\n useHtmlLabels: kanbanNode.useHtmlLabels,\n labelStyle: kanbanNode.labelStyle || \"\",\n width: kanbanNode.width,\n img: kanbanNode.img,\n padding: kanbanNode.padding || 8,\n centerLabel: false\n };\n let labelEl, bbox2;\n if (link) {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n link,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n } else {\n ({ label: labelEl, bbox: bbox2 } = await insertLabel(\n shapeSvg,\n \"ticket\" in kanbanNode && kanbanNode.ticket || \"\",\n options\n ));\n }\n const { label: labelElAssigned, bbox: bboxAssigned } = await insertLabel(\n shapeSvg,\n \"assigned\" in kanbanNode && kanbanNode.assigned || \"\",\n options\n );\n kanbanNode.width = orgWidth;\n const labelPaddingY = 10;\n const totalWidth = kanbanNode?.width || 0;\n const heightAdj = Math.max(bbox2.height, bboxAssigned.height) / 2;\n const totalHeight = Math.max(bbox.height + labelPaddingY * 2, kanbanNode?.height || 0) + heightAdj;\n const x = -totalWidth / 2;\n const y = -totalHeight / 2;\n labelElTitle.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj - bbox.height / 2) + \")\"\n );\n labelEl.attr(\n \"transform\",\n \"translate(\" + (padding - totalWidth / 2) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n labelElAssigned.attr(\n \"transform\",\n \"translate(\" + (padding + totalWidth / 2 - bboxAssigned.width - 2 * labelPaddingX) + \", \" + (-heightAdj + bbox.height / 2) + \")\"\n );\n let rect2;\n const { rx, ry } = kanbanNode;\n const { cssStyles } = kanbanNode;\n if (kanbanNode.look === \"handDrawn\") {\n const rc = rough55.svg(shapeSvg);\n const options2 = userNodeOverrides(kanbanNode, {});\n const roughNode = rx || ry ? rc.path(createRoundedRectPathD(x, y, totalWidth, totalHeight, rx || 0), options2) : rc.rectangle(x, y, totalWidth, totalHeight, options2);\n rect2 = shapeSvg.insert(() => roughNode, \":first-child\");\n rect2.attr(\"class\", \"basic label-container\").attr(\"style\", cssStyles ? cssStyles : null);\n } else {\n rect2 = shapeSvg.insert(\"rect\", \":first-child\");\n rect2.attr(\"class\", \"basic label-container __APA__\").attr(\"style\", nodeStyles).attr(\"rx\", rx ?? 5).attr(\"ry\", ry ?? 5).attr(\"x\", x).attr(\"y\", y).attr(\"width\", totalWidth).attr(\"height\", totalHeight);\n const priority = \"priority\" in kanbanNode && kanbanNode.priority;\n if (priority) {\n const line = shapeSvg.append(\"line\");\n const lineX = x + 2;\n const y1 = y + Math.floor((rx ?? 0) / 2);\n const y2 = y + totalHeight - Math.floor((rx ?? 0) / 2);\n line.attr(\"x1\", lineX).attr(\"y1\", y1).attr(\"x2\", lineX).attr(\"y2\", y2).attr(\"stroke-width\", \"4\").attr(\"stroke\", colorFromPriority(priority));\n }\n }\n updateNodeBounds(kanbanNode, rect2);\n kanbanNode.height = totalHeight;\n kanbanNode.intersect = function(point) {\n return intersect_default.rect(kanbanNode, point);\n };\n return shapeSvg;\n}\n__name(kanbanItem, \"kanbanItem\");\n\n// src/rendering-util/rendering-elements/shapes.ts\nvar shapesDefs = [\n {\n semanticName: \"Process\",\n name: \"Rectangle\",\n shortName: \"rect\",\n description: \"Standard process shape\",\n aliases: [\"proc\", \"process\", \"rectangle\"],\n internalAliases: [\"squareRect\"],\n handler: squareRect2\n },\n {\n semanticName: \"Event\",\n name: \"Rounded Rectangle\",\n shortName: \"rounded\",\n description: \"Represents an event\",\n aliases: [\"event\"],\n internalAliases: [\"roundedRect\"],\n handler: roundedRect\n },\n {\n semanticName: \"Terminal Point\",\n name: \"Stadium\",\n shortName: \"stadium\",\n description: \"Terminal point\",\n aliases: [\"terminal\", \"pill\"],\n handler: stadium\n },\n {\n semanticName: \"Subprocess\",\n name: \"Framed Rectangle\",\n shortName: \"fr-rect\",\n description: \"Subprocess\",\n aliases: [\"subprocess\", \"subproc\", \"framed-rectangle\", \"subroutine\"],\n handler: subroutine\n },\n {\n semanticName: \"Database\",\n name: \"Cylinder\",\n shortName: \"cyl\",\n description: \"Database storage\",\n aliases: [\"db\", \"database\", \"cylinder\"],\n handler: cylinder\n },\n {\n semanticName: \"Start\",\n name: \"Circle\",\n shortName: \"circle\",\n description: \"Starting point\",\n aliases: [\"circ\"],\n handler: circle\n },\n {\n semanticName: \"Decision\",\n name: \"Diamond\",\n shortName: \"diam\",\n description: \"Decision-making step\",\n aliases: [\"decision\", \"diamond\", \"question\"],\n handler: question\n },\n {\n semanticName: \"Prepare Conditional\",\n name: \"Hexagon\",\n shortName: \"hex\",\n description: \"Preparation or condition step\",\n aliases: [\"hexagon\", \"prepare\"],\n handler: hexagon\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Right\",\n shortName: \"lean-r\",\n description: \"Represents input or output\",\n aliases: [\"lean-right\", \"in-out\"],\n internalAliases: [\"lean_right\"],\n handler: lean_right\n },\n {\n semanticName: \"Data Input/Output\",\n name: \"Lean Left\",\n shortName: \"lean-l\",\n description: \"Represents output or input\",\n aliases: [\"lean-left\", \"out-in\"],\n internalAliases: [\"lean_left\"],\n handler: lean_left\n },\n {\n semanticName: \"Priority Action\",\n name: \"Trapezoid Base Bottom\",\n shortName: \"trap-b\",\n description: \"Priority action\",\n aliases: [\"priority\", \"trapezoid-bottom\", \"trapezoid\"],\n handler: trapezoid\n },\n {\n semanticName: \"Manual Operation\",\n name: \"Trapezoid Base Top\",\n shortName: \"trap-t\",\n description: \"Represents a manual task\",\n aliases: [\"manual\", \"trapezoid-top\", \"inv-trapezoid\"],\n internalAliases: [\"inv_trapezoid\"],\n handler: inv_trapezoid\n },\n {\n semanticName: \"Stop\",\n name: \"Double Circle\",\n shortName: \"dbl-circ\",\n description: \"Represents a stop point\",\n aliases: [\"double-circle\"],\n internalAliases: [\"doublecircle\"],\n handler: doublecircle\n },\n {\n semanticName: \"Text Block\",\n name: \"Text Block\",\n shortName: \"text\",\n description: \"Text block\",\n handler: text\n },\n {\n semanticName: \"Card\",\n name: \"Notched Rectangle\",\n shortName: \"notch-rect\",\n description: \"Represents a card\",\n aliases: [\"card\", \"notched-rectangle\"],\n handler: card\n },\n {\n semanticName: \"Lined/Shaded Process\",\n name: \"Lined Rectangle\",\n shortName: \"lin-rect\",\n description: \"Lined process shape\",\n aliases: [\"lined-rectangle\", \"lined-process\", \"lin-proc\", \"shaded-process\"],\n handler: shadedProcess\n },\n {\n semanticName: \"Start\",\n name: \"Small Circle\",\n shortName: \"sm-circ\",\n description: \"Small starting point\",\n aliases: [\"start\", \"small-circle\"],\n internalAliases: [\"stateStart\"],\n handler: stateStart\n },\n {\n semanticName: \"Stop\",\n name: \"Framed Circle\",\n shortName: \"fr-circ\",\n description: \"Stop point\",\n aliases: [\"stop\", \"framed-circle\"],\n internalAliases: [\"stateEnd\"],\n handler: stateEnd\n },\n {\n semanticName: \"Fork/Join\",\n name: \"Filled Rectangle\",\n shortName: \"fork\",\n description: \"Fork or join in process flow\",\n aliases: [\"join\"],\n internalAliases: [\"forkJoin\"],\n handler: forkJoin\n },\n {\n semanticName: \"Collate\",\n name: \"Hourglass\",\n shortName: \"hourglass\",\n description: \"Represents a collate operation\",\n aliases: [\"hourglass\", \"collate\"],\n handler: hourglass\n },\n {\n semanticName: \"Comment\",\n name: \"Curly Brace\",\n shortName: \"brace\",\n description: \"Adds a comment\",\n aliases: [\"comment\", \"brace-l\"],\n handler: curlyBraceLeft\n },\n {\n semanticName: \"Comment Right\",\n name: \"Curly Brace\",\n shortName: \"brace-r\",\n description: \"Adds a comment\",\n handler: curlyBraceRight\n },\n {\n semanticName: \"Comment with braces on both sides\",\n name: \"Curly Braces\",\n shortName: \"braces\",\n description: \"Adds a comment\",\n handler: curlyBraces\n },\n {\n semanticName: \"Com Link\",\n name: \"Lightning Bolt\",\n shortName: \"bolt\",\n description: \"Communication link\",\n aliases: [\"com-link\", \"lightning-bolt\"],\n handler: lightningBolt\n },\n {\n semanticName: \"Document\",\n name: \"Document\",\n shortName: \"doc\",\n description: \"Represents a document\",\n aliases: [\"doc\", \"document\"],\n handler: waveEdgedRectangle\n },\n {\n semanticName: \"Delay\",\n name: \"Half-Rounded Rectangle\",\n shortName: \"delay\",\n description: \"Represents a delay\",\n aliases: [\"half-rounded-rectangle\"],\n handler: halfRoundedRectangle\n },\n {\n semanticName: \"Direct Access Storage\",\n name: \"Horizontal Cylinder\",\n shortName: \"h-cyl\",\n description: \"Direct access storage\",\n aliases: [\"das\", \"horizontal-cylinder\"],\n handler: tiltedCylinder\n },\n {\n semanticName: \"Disk Storage\",\n name: \"Lined Cylinder\",\n shortName: \"lin-cyl\",\n description: \"Disk storage\",\n aliases: [\"disk\", \"lined-cylinder\"],\n handler: linedCylinder\n },\n {\n semanticName: \"Display\",\n name: \"Curved Trapezoid\",\n shortName: \"curv-trap\",\n description: \"Represents a display\",\n aliases: [\"curved-trapezoid\", \"display\"],\n handler: curvedTrapezoid\n },\n {\n semanticName: \"Divided Process\",\n name: \"Divided Rectangle\",\n shortName: \"div-rect\",\n description: \"Divided process shape\",\n aliases: [\"div-proc\", \"divided-rectangle\", \"divided-process\"],\n handler: dividedRectangle\n },\n {\n semanticName: \"Extract\",\n name: \"Triangle\",\n shortName: \"tri\",\n description: \"Extraction process\",\n aliases: [\"extract\", \"triangle\"],\n handler: triangle\n },\n {\n semanticName: \"Internal Storage\",\n name: \"Window Pane\",\n shortName: \"win-pane\",\n description: \"Internal storage\",\n aliases: [\"internal-storage\", \"window-pane\"],\n handler: windowPane\n },\n {\n semanticName: \"Junction\",\n name: \"Filled Circle\",\n shortName: \"f-circ\",\n description: \"Junction point\",\n aliases: [\"junction\", \"filled-circle\"],\n handler: filledCircle\n },\n {\n semanticName: \"Loop Limit\",\n name: \"Trapezoidal Pentagon\",\n shortName: \"notch-pent\",\n description: \"Loop limit step\",\n aliases: [\"loop-limit\", \"notched-pentagon\"],\n handler: trapezoidalPentagon\n },\n {\n semanticName: \"Manual File\",\n name: \"Flipped Triangle\",\n shortName: \"flip-tri\",\n description: \"Manual file operation\",\n aliases: [\"manual-file\", \"flipped-triangle\"],\n handler: flippedTriangle\n },\n {\n semanticName: \"Manual Input\",\n name: \"Sloped Rectangle\",\n shortName: \"sl-rect\",\n description: \"Manual input step\",\n aliases: [\"manual-input\", \"sloped-rectangle\"],\n handler: slopedRect\n },\n {\n semanticName: \"Multi-Document\",\n name: \"Stacked Document\",\n shortName: \"docs\",\n description: \"Multiple documents\",\n aliases: [\"documents\", \"st-doc\", \"stacked-document\"],\n handler: multiWaveEdgedRectangle\n },\n {\n semanticName: \"Multi-Process\",\n name: \"Stacked Rectangle\",\n shortName: \"st-rect\",\n description: \"Multiple processes\",\n aliases: [\"procs\", \"processes\", \"stacked-rectangle\"],\n handler: multiRect\n },\n {\n semanticName: \"Stored Data\",\n name: \"Bow Tie Rectangle\",\n shortName: \"bow-rect\",\n description: \"Stored data\",\n aliases: [\"stored-data\", \"bow-tie-rectangle\"],\n handler: bowTieRect\n },\n {\n semanticName: \"Summary\",\n name: \"Crossed Circle\",\n shortName: \"cross-circ\",\n description: \"Summary\",\n aliases: [\"summary\", \"crossed-circle\"],\n handler: crossedCircle\n },\n {\n semanticName: \"Tagged Document\",\n name: \"Tagged Document\",\n shortName: \"tag-doc\",\n description: \"Tagged document\",\n aliases: [\"tag-doc\", \"tagged-document\"],\n handler: taggedWaveEdgedRectangle\n },\n {\n semanticName: \"Tagged Process\",\n name: \"Tagged Rectangle\",\n shortName: \"tag-rect\",\n description: \"Tagged process\",\n aliases: [\"tagged-rectangle\", \"tag-proc\", \"tagged-process\"],\n handler: taggedRect\n },\n {\n semanticName: \"Paper Tape\",\n name: \"Flag\",\n shortName: \"flag\",\n description: \"Paper tape\",\n aliases: [\"paper-tape\"],\n handler: waveRectangle\n },\n {\n semanticName: \"Odd\",\n name: \"Odd\",\n shortName: \"odd\",\n description: \"Odd shape\",\n internalAliases: [\"rect_left_inv_arrow\"],\n handler: rect_left_inv_arrow\n },\n {\n semanticName: \"Lined Document\",\n name: \"Lined Document\",\n shortName: \"lin-doc\",\n description: \"Lined document\",\n aliases: [\"lined-document\"],\n handler: linedWaveEdgedRect\n }\n];\nvar generateShapeMap = /* @__PURE__ */ __name(() => {\n const undocumentedShapes = {\n // States\n state,\n choice,\n note,\n // Rectangles\n rectWithTitle,\n labelRect,\n // Icons\n iconSquare,\n iconCircle,\n icon,\n iconRounded,\n imageSquare,\n anchor,\n // Kanban diagram\n kanbanItem,\n // class diagram\n classBox\n };\n const entries = [\n ...Object.entries(undocumentedShapes),\n ...shapesDefs.flatMap((shape) => {\n const aliases = [\n shape.shortName,\n ...\"aliases\" in shape ? shape.aliases : [],\n ...\"internalAliases\" in shape ? shape.internalAliases : []\n ];\n return aliases.map((alias) => [alias, shape.handler]);\n })\n ];\n return Object.fromEntries(entries);\n}, \"generateShapeMap\");\nvar shapes2 = generateShapeMap();\nfunction isValidShape(shape) {\n return shape in shapes2;\n}\n__name(isValidShape, \"isValidShape\");\n\n// src/rendering-util/rendering-elements/nodes.ts\nvar nodeElems = /* @__PURE__ */ new Map();\nasync function insertNode(elem, node, renderOptions) {\n let newEl;\n let el;\n if (node.shape === \"rect\") {\n if (node.rx && node.ry) {\n node.shape = \"roundedRect\";\n } else {\n node.shape = \"squareRect\";\n }\n }\n const shapeHandler = node.shape ? shapes2[node.shape] : void 0;\n if (!shapeHandler) {\n throw new Error(`No such shape: ${node.shape}. Please check your syntax.`);\n }\n if (node.link) {\n let target;\n if (renderOptions.config.securityLevel === \"sandbox\") {\n target = \"_top\";\n } else if (node.linkTarget) {\n target = node.linkTarget || \"_blank\";\n }\n newEl = elem.insert(\"svg:a\").attr(\"xlink:href\", node.link).attr(\"target\", target ?? null);\n el = await shapeHandler(newEl, node, renderOptions);\n } else {\n el = await shapeHandler(elem, node, renderOptions);\n newEl = el;\n }\n if (node.tooltip) {\n el.attr(\"title\", node.tooltip);\n }\n nodeElems.set(node.id, newEl);\n if (node.haveCallback) {\n newEl.attr(\"class\", newEl.attr(\"class\") + \" clickable\");\n }\n return newEl;\n}\n__name(insertNode, \"insertNode\");\nvar setNodeElem = /* @__PURE__ */ __name((elem, node) => {\n nodeElems.set(node.id, elem);\n}, \"setNodeElem\");\nvar clear2 = /* @__PURE__ */ __name(() => {\n nodeElems.clear();\n}, \"clear\");\nvar positionNode = /* @__PURE__ */ __name((node) => {\n const el = nodeElems.get(node.id);\n log.trace(\n \"Transforming node\",\n node.diff,\n node,\n \"translate(\" + (node.x - node.width / 2 - 5) + \", \" + node.width / 2 + \")\"\n );\n const padding = 8;\n const diff = node.diff || 0;\n if (node.clusterNode) {\n el.attr(\n \"transform\",\n \"translate(\" + (node.x + diff - node.width / 2) + \", \" + (node.y - node.height / 2 - padding) + \")\"\n );\n } else {\n el.attr(\"transform\", \"translate(\" + node.x + \", \" + node.y + \")\");\n }\n return diff;\n}, \"positionNode\");\n\nexport {\n labelHelper,\n updateNodeBounds,\n createLabel_default,\n isValidShape,\n insertCluster,\n clear,\n insertNode,\n setNodeElem,\n clear2,\n positionNode\n};\n"],
- "mappings": "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",
- "names": ["t", "e", "s", "n", "o", "a", "h", "r", "i", "c", "l", "u", "p", "f", "d", "g", "M", "k", "b", "y", "m", "x", "w", "P", "S", "O", "L", "T", "D", "A", "G", "E", "$", "v", "j", "z", "F", "q", "V", "_", "Z", "I", "C", "W", "R", "Q", "H", "N", "B", "J", "K", "U", "X", "Y", "tt", "et", "st", "nt", "ot", "at", "labelHelper", "__name", "parent", "node", "_classes", "cssClasses", "useHtmlLabels", "evaluate", "getConfig2", "shapeSvg", "labelEl", "handleUndefinedAttr", "label", "text2", "createText", "sanitizeText", "decodeEntities", "bbox", "halfPadding", "div", "dv", "select_default", "images", "noImgText", "img", "res", "setupImage", "bodyFontSize", "enlargingFactor", "parsedBodyFontSize", "defaultConfig_default", "parseFontSize", "width", "insertLabel", "options", "updateNodeBounds", "element", "getNodeClasses", "extra", "createPathFromPoints", "points", "pointStrings", "p", "i", "generateFullSineWavePoints", "x1", "y1", "x2", "y2", "amplitude", "numCycles", "deltaX", "deltaY", "cycleLength", "frequency", "midY", "t", "x", "y", "generateCirclePoints", "centerX", "centerY", "radius", "numPoints", "startAngle", "endAngle", "startAngleRad", "angleStep", "angle", "intersectRect", "point", "dx", "dy", "w", "h", "sx", "sy", "intersect_rect_default", "applyStyle", "dom", "styleFn", "addHtmlLabel", "fo", "hasKatex", "renderKatex", "common_default", "labelClass", "createLabel", "_vertexText", "style", "isTitle", "isNode", "vertexText", "log", "svgLabel", "rows", "row", "tspan", "createLabel_default", "createRoundedRectPathD", "totalWidth", "totalHeight", "solidStateFill", "color", "handDrawnSeed", "compileStyles", "stylesMap", "styles2Map", "styles", "styleMap", "key", "value", "styles2String", "stylesArray", "labelStyles", "nodeStyles", "borderStyles", "backgroundStyles", "userNodeOverrides", "themeVariables", "nodeBorder", "mainBkg", "rect", "siteConfig", "clusterBkg", "clusterBorder", "height", "rect2", "rc", "at", "roughNode", "subGraphTitleTopMargin", "getSubGraphTitleMargins", "span", "rectBox", "noteGroup", "padding", "roundedWithTitle", "altBackground", "compositeBackground", "compositeTitleBackground", "outerRectG", "innerRect", "innerHeight", "innerY", "isAlt", "roughOuterNode", "roughInnerNode", "kanbanSection", "divider", "squareRect", "shapes", "clusterElems", "insertCluster", "elem", "shape", "cluster", "clear", "intersectNode", "intersect_node_default", "intersectEllipse", "rx", "ry", "cx", "cy", "px", "py", "det", "intersect_ellipse_default", "intersectCircle", "intersect_circle_default", "intersectLine", "p1", "p2", "q1", "q2", "a1", "a2", "b1", "b2", "c1", "c2", "r1", "r2", "r3", "r4", "denom", "offset", "num", "sameSign", "intersect_line_default", "intersectPolygon", "polyPoints", "intersections", "minX", "minY", "entry", "left", "top", "intersect", "q", "pdx", "pdy", "distp", "qdx", "qdy", "distq", "intersect_polygon_default", "intersect_default", "anchor", "classes", "cssStyles", "circleElem", "generateArcPoints", "clockwise", "midX", "transformedX", "transformedY", "distance", "scaledCenterDistance", "angleRange", "angle2", "bowTieRect", "bowTieRectPath", "bowTieRectShapePath", "bowTieRectShape", "insertPolygonShape", "d", "card", "right", "bottom", "polygon", "pathData", "choice", "s", "choicePath", "choiceShape", "circle", "createLine", "r", "xAxis45", "yAxis45", "lineLength", "pointQ1", "pointQ2", "pointQ3", "pointQ4", "crossedCircle", "circleNode", "linePath", "lineNode", "crossedCircle2", "generateCirclePoints2", "curlyBraceLeft", "rectPoints", "newCurlyBracePath", "curlyBraceLeftNode", "rectPath", "rectShape", "curlyBraceLeftShape", "generateCirclePoints3", "curlyBraceRight", "curlyBraceRightNode", "curlyBraceRightShape", "generateCirclePoints4", "curlyBraces", "leftCurlyBracePoints", "rightCurlyBracePoints", "newLeftCurlyBracePath", "leftCurlyBraceNode", "newRightCurlyBracePath", "rightCurlyBraceNode", "curlyBracesShape", "curvedTrapezoid", "minWidth", "minHeight", "rw", "tw", "shapeNode", "createCylinderPathD", "createOuterCylinderPathD", "createInnerCylinderPathD", "cylinder", "cylinder2", "outerPathData", "innerPathData", "outerNode", "innerLine", "pos", "dividedRectangle", "rectOffset", "pts", "poly", "doublecircle", "outerRadius", "innerRadius", "circleGroup", "outerOptions", "innerOptions", "outerRoughNode", "innerRoughNode", "outerCircle", "innerCircle", "filledCircle", "filledCircle2", "flippedTriangle", "flippedTriangle2", "forkJoin", "dir", "state2", "halfRoundedRectangle", "createHexagonPathD", "m", "hexagon", "f", "hourglass", "icon", "flowchart", "assetHeight", "assetWidth", "iconSize", "defaultWidth", "topLabel", "labelPadding", "iconNode", "outerWidth", "outerHeight", "iconShape", "outerShape", "iconElem", "getIconSVG", "iconBBox", "iconWidth", "iconHeight", "iconX", "iconY", "nodeHeight", "iconCircle", "fill", "diameter", "iconRounded", "iconSquare", "imageSquare", "imageNaturalWidth", "imageNaturalHeight", "imageRawWidth", "imageWidth", "imageHeight", "imageNode", "image", "inv_trapezoid", "drawRect", "options2", "labelRect", "lean_left", "lean_right", "lightningBolt", "gap", "lightningBolt2", "createCylinderPathD2", "outerOffset", "createOuterCylinderPathD2", "createInnerCylinderPathD2", "linedCylinder", "linedWaveEdgedRect", "waveAmplitude", "finalH", "waveEdgeRect", "multiRect", "outerPathPoints", "innerPathPoints", "outerPath", "innerPath", "innerNode", "multiRect2", "multiWaveEdgedRectangle", "wavePoints", "lastWavePoint", "note", "getConfig", "noteShapeNode", "createDecisionBoxPathD", "size", "question", "rect_left_inv_arrow", "notch", "rectWithTitle", "g", "description", "title", "div2", "dv2", "textRows", "titleBox", "descr", "roughLine", "roundedRect", "shadedProcess", "slopedRect", "squareRect2", "stadium", "state", "stateEnd", "lineColor", "stateBorder", "innerFill", "circle2", "stateStart", "subroutine", "l1", "l2", "el", "taggedRect", "tagWidth", "tagHeight", "tagPoints", "rectNode", "tagPath", "tagNode", "taggedRect2", "taggedWaveEdgedRectangle", "waveEdgeRectPath", "waveEdgeRectNode", "taggedWaveEdgeRectPath", "taggedWaveEdgeRectNode", "text", "createCylinderPathD3", "createOuterCylinderPathD3", "createInnerCylinderPathD3", "tiltedCylinder", "trapezoid", "trapezoidalPentagon", "triangle", "waveEdgedRectangle", "widthDif", "extraW", "waveRectangle", "baseWidth", "baseHeight", "aspectRatio", "waveRectPath", "waveRectNode", "waveRect", "windowPane", "path", "no", "windowPane2", "textHelper", "config", "GAP", "TEXT_PADDING", "annotationGroup", "labelGroup", "membersGroup", "methodsGroup", "annotationGroupHeight", "labelGroupHeight", "membersGroupHeight", "annotation", "addText", "labelGroupBBox", "yOffset", "member", "methodsYOffset", "method", "annotationGroupBBox", "parentGroup", "textEl", "textContent", "sanitizeText3", "calculateTextWidth", "numberOfLines", "textChild", "classBox", "PADDING", "classNode", "renderExtraBox", "roughRect", "rectBBox", "_", "nodes", "transform", "translateY", "translate", "newTranslateY", "newTranslateX", "_2", "i2", "nodes2", "colorRegex", "match", "colorStyle", "match2", "colorFromPriority", "priority", "kanbanItem", "kanbanNode", "labelPaddingX", "orgWidth", "labelElTitle", "ticketUrl", "link", "bbox2", "labelElAssigned", "bboxAssigned", "labelPaddingY", "heightAdj", "line", "lineX", "shapesDefs", "generateShapeMap", "entries", "alias", "shapes2", "isValidShape", "nodeElems", "insertNode", "renderOptions", "newEl", "shapeHandler", "target", "setNodeElem", "clear2", "positionNode", "diff"]
-}
diff --git a/templates/tabulareditor/public/chunk-TERFBH2B.min.js b/templates/tabulareditor/public/chunk-TERFBH2B.min.js
deleted file mode 100644
index 2b259047..00000000
--- a/templates/tabulareditor/public/chunk-TERFBH2B.min.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import{A as ie,B as Ys,C as Ze,D as $e,G as sc,I as je,L as ae,M as Kt,O as vi,R as an,S as ac,a as ce,b as mt,c as ke,d as ue,e as ee,g as gt,i as sn,j as Vt,k as yt,l as fe,m as Ot,n as k,o as Oe,p as Re,q as Tt,r as Ie,s as R,t as Ne,w as ic,x as I,y as Se,z as te}from"./chunk-U4DUTLYF.min.js";import{d as b}from"./chunk-IQQ46AC6.min.js";import{M as Xs,d as nc,e as it,z as pe}from"./chunk-CXRPJJJE.min.js";import{a as Ai,b as jt,c as U,d as rc}from"./chunk-OSRY5VT3.min.js";var _l=Ai(Cl=>{"use strict";Object.defineProperty(Cl,"__esModule",{value:!0});var Nl;function Sl(){if(Nl===void 0)throw new Error("No runtime abstraction layer installed");return Nl}(function(r){function e(t){if(t===void 0)throw new Error("No runtime abstraction layer provided");Nl=t}r.install=e})(Sl||(Sl={}));Cl.default=Sl});var ad=Ai(_e=>{"use strict";Object.defineProperty(_e,"__esModule",{value:!0});_e.stringArray=_e.array=_e.func=_e.error=_e.number=_e.string=_e.boolean=void 0;function ym(r){return r===!0||r===!1}_e.boolean=ym;function id(r){return typeof r=="string"||r instanceof String}_e.string=id;function Tm(r){return typeof r=="number"||r instanceof Number}_e.number=Tm;function xm(r){return r instanceof Error}_e.error=xm;function Rm(r){return typeof r=="function"}_e.func=Rm;function sd(r){return Array.isArray(r)}_e.array=sd;function Em(r){return sd(r)&&r.every(e=>id(e))}_e.stringArray=Em});var Ll=Ai(Yr=>{"use strict";Object.defineProperty(Yr,"__esModule",{value:!0});Yr.Emitter=Yr.Event=void 0;var Am=_l(),od;(function(r){let e={dispose(){}};r.None=function(){return e}})(od||(Yr.Event=od={}));var wl=class{add(e,t=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let n=!1;for(let i=0,s=this._callbacks.length;i
{this._callbacks||(this._callbacks=new wl),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=r._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};Yr.Emitter=Ms;Ms._noop=function(){}});var ld=Ai(Jr=>{"use strict";Object.defineProperty(Jr,"__esModule",{value:!0});Jr.CancellationTokenSource=Jr.CancellationToken=void 0;var vm=_l(),km=ad(),Ol=Ll(),Ds;(function(r){r.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:Ol.Event.None}),r.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:Ol.Event.None});function e(t){let n=t;return n&&(n===r.None||n===r.Cancelled||km.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}r.is=e})(Ds||(Jr.CancellationToken=Ds={}));var Im=Object.freeze(function(r,e){let t=(0,vm.default)().timer.setTimeout(r.bind(e),0);return{dispose(){t.dispose()}}}),Fs=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?Im:(this._emitter||(this._emitter=new Ol.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},$l=class{get token(){return this._token||(this._token=new Fs),this._token}cancel(){this._token?this._token.cancel():this._token=Ds.Cancelled}dispose(){this._token?this._token instanceof Fs&&this._token.dispose():this._token=Ds.None}};Jr.CancellationTokenSource=$l});var he={};jt(he,{AbstractAstReflection:()=>Ht,AbstractCstNode:()=>Vn,AbstractLangiumParser:()=>Kn,AbstractParserErrorMessageProvider:()=>$s,AbstractThreadedAsyncParser:()=>Kl,AstUtils:()=>Di,BiMap:()=>gr,Cancellation:()=>_,CompositeCstNodeImpl:()=>dr,ContextCache:()=>yr,CstNodeBuilder:()=>jn,CstUtils:()=>Ni,DONE_RESULT:()=>Pe,DatatypeSymbol:()=>Os,DefaultAstNodeDescriptionProvider:()=>oi,DefaultAstNodeLocator:()=>ci,DefaultAsyncParser:()=>xi,DefaultCommentProvider:()=>Ti,DefaultConfigurationProvider:()=>ui,DefaultDocumentBuilder:()=>fi,DefaultDocumentValidator:()=>ai,DefaultHydrator:()=>Ei,DefaultIndexManager:()=>di,DefaultJsonSerializer:()=>ni,DefaultLangiumDocumentFactory:()=>qn,DefaultLangiumDocuments:()=>Xn,DefaultLexer:()=>pi,DefaultLinker:()=>Yn,DefaultNameProvider:()=>Jn,DefaultReferenceDescriptionProvider:()=>li,DefaultReferences:()=>Qn,DefaultScopeComputation:()=>Zn,DefaultScopeProvider:()=>ri,DefaultServiceRegistry:()=>ii,DefaultTokenBuilder:()=>pr,DefaultValueConverter:()=>mr,DefaultWorkspaceLock:()=>Ri,DefaultWorkspaceManager:()=>hi,Deferred:()=>Fe,Disposable:()=>Tr,DisposableCache:()=>tn,DocumentCache:()=>Gs,DocumentState:()=>X,DocumentValidator:()=>_t,EMPTY_SCOPE:()=>Sm,EMPTY_STREAM:()=>ln,EmptyFileSystem:()=>Jl,EmptyFileSystemProvider:()=>zs,ErrorWithLocation:()=>Yt,GrammarAST:()=>hn,GrammarUtils:()=>ji,JSDocDocumentationProvider:()=>yi,LangiumCompletionParser:()=>zn,LangiumParser:()=>Hn,LangiumParserErrorMessageProvider:()=>Xr,LeafCstNodeImpl:()=>fr,MapScope:()=>ei,Module:()=>Xl,MultiMap:()=>ft,OperationCancelled:()=>ut,ParserWorker:()=>Hl,Reduction:()=>Er,RegExpUtils:()=>Bi,RootCstNodeImpl:()=>qr,SimpleCache:()=>ti,StreamImpl:()=>Ke,StreamScope:()=>en,TextDocument:()=>Qr,TreeStreamImpl:()=>st,URI:()=>Be,UriUtils:()=>Ue,ValidationCategory:()=>nn,ValidationRegistry:()=>si,ValueConverter:()=>ct,WorkspaceCache:()=>rn,assertUnreachable:()=>Pt,createCompletionParser:()=>kl,createDefaultCoreModule:()=>zl,createDefaultSharedCoreModule:()=>ql,createGrammarConfig:()=>No,createLangiumParser:()=>Il,delayNextTick:()=>bl,diagnosticData:()=>Bs,eagerLoad:()=>Cd,getDiagnosticRange:()=>Td,inject:()=>Hs,interruptAndCheck:()=>ye,isAstNode:()=>se,isAstNodeDescription:()=>Js,isAstNodeWithComment:()=>Dl,isCompositeCstNode:()=>Ve,isIMultiModeLexerDefinition:()=>Ul,isJSDoc:()=>jl,isLeafCstNode:()=>$t,isLinkingError:()=>zt,isNamed:()=>gd,isOperationCancelled:()=>Ut,isReference:()=>Ee,isRootCstNode:()=>on,isTokenTypeArray:()=>xd,isTokenTypeDictionary:()=>Fl,loadGrammarFromJson:()=>Gt,parseJSDoc:()=>Wl,prepareLangiumParser:()=>nd,setInterruptionPeriod:()=>fd,startCancelableOperation:()=>ud,stream:()=>V,toDiagnosticSeverity:()=>Ws});var Ni={};jt(Ni,{DefaultNameRegexp:()=>Ii,RangeComparison:()=>xt,compareRange:()=>lc,findCommentNode:()=>ta,findDeclarationNodeAtOffset:()=>jd,findLeafNodeAtOffset:()=>ra,findLeafNodeBeforeOffset:()=>cc,flattenCst:()=>Wd,getInteriorNodes:()=>Hd,getNextNode:()=>Vd,getPreviousNode:()=>fc,getStartlineNode:()=>Kd,inRange:()=>ea,isChildNode:()=>Zs,isCommentNode:()=>Qs,streamCst:()=>qt,toDocumentSegment:()=>Xt,tokenToRange:()=>Ar});function se(r){return typeof r=="object"&&r!==null&&typeof r.$type=="string"}function Ee(r){return typeof r=="object"&&r!==null&&typeof r.$refText=="string"}function Js(r){return typeof r=="object"&&r!==null&&typeof r.name=="string"&&typeof r.type=="string"&&typeof r.path=="string"}function zt(r){return typeof r=="object"&&r!==null&&se(r.container)&&Ee(r.reference)&&typeof r.message=="string"}var Ht=class{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return se(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[t];if(i!==void 0)return i;{let s=this.computeIsSubtype(e,t);return n[t]=s,s}}getAllSubTypes(e){let t=this.allSubtypes[e];if(t)return t;{let n=this.getAllTypes(),i=[];for(let s of n)this.isSubtype(s,e)&&i.push(s);return this.allSubtypes[e]=i,i}}};function Ve(r){return typeof r=="object"&&r!==null&&Array.isArray(r.content)}function $t(r){return typeof r=="object"&&r!==null&&typeof r.tokenType=="object"}function on(r){return Ve(r)&&typeof r.fullText=="string"}var Ke=class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){let e=[],t=this.iterator(),n;do n=t.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){let n=this.map(i=>[e?e(i):i,t?t(i):i]);return new Map(n)}toString(){return this.join()}concat(e){let t=e[Symbol.iterator]();return new r(()=>({first:this.startFn(),firstDone:!1}),n=>{let i;if(!n.firstDone){do if(i=this.nextFn(n.first),!i.done)return i;while(!i.done);n.firstDone=!0}do if(i=t.next(),!i.done)return i;while(!i.done);return Pe})}join(e=","){let t=this.iterator(),n="",i,s=!1;do i=t.next(),i.done||(s&&(n+=e),n+=Bd(i.value)),s=!0;while(!i.done);return n}indexOf(e,t=0){let n=this.iterator(),i=0,s=n.next();for(;!s.done;){if(i>=t&&s.value===e)return i;s=n.next(),i++}return-1}every(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){let t=this.iterator(),n=0,i=t.next();for(;!i.done;)e(i.value,n),i=t.next(),n++}map(e){return new r(this.startFn,t=>{let{done:n,value:i}=this.nextFn(t);return n?Pe:{done:!1,value:e(i)}})}filter(e){return new r(this.startFn,t=>{let n;do if(n=this.nextFn(t),!n.done&&e(n.value))return n;while(!n.done);return Pe})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){let n=this.iterator(),i=t,s=n.next();for(;!s.done;)i===void 0?i=s.value:i=e(i,s.value),s=n.next();return i}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){let i=e.next();if(i.done)return n;let s=this.recursiveReduce(e,t,n);return s===void 0?i.value:t(s,i.value)}find(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){let t=this.iterator(),n=0,i=t.next();for(;!i.done;){if(e(i.value))return n;i=t.next(),n++}return-1}includes(e){let t=this.iterator(),n=t.next();for(;!n.done;){if(n.value===e)return!0;n=t.next()}return!1}flatMap(e){return new r(()=>({this:this.startFn()}),t=>{do{if(t.iterator){let s=t.iterator.next();if(s.done)t.iterator=void 0;else return s}let{done:n,value:i}=this.nextFn(t.this);if(!n){let s=e(i);if(ki(s))t.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(t.iterator);return Pe})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let t=e>1?this.flat(e-1):this;return new r(()=>({this:t.startFn()}),n=>{do{if(n.iterator){let a=n.iterator.next();if(a.done)n.iterator=void 0;else return a}let{done:i,value:s}=t.nextFn(n.this);if(!i)if(ki(s))n.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(n.iterator);return Pe})}head(){let t=this.iterator().next();if(!t.done)return t.value}tail(e=1){return new r(()=>{let t=this.startFn();for(let n=0;n